-
-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature request: Mac/Linux support #4
Comments
I've been able to install and run the EXE through the latest version of wine on Linux Mint just fine. Edit: |
Yeah right now the best thing you can do is to use Wine, as many things have been made with Windows in mind, and won't work on Linux. |
Wow, this is suddenly looking like a forum rather than a bug tracker :) I wasn't looking for a workaround, guys; I've been using Wine too. |
Upon further inspection of the code, I think it's pretty much impossible. These files obviously won't work on Linux, and because I don't have the source code for them, making .so variants to work on Linux is... Impossible. |
I thought perhaps they came with GameMaker Studio, which I am not particularly familiar with. Do you know who the author is? Perhaps we can contact the auhor for help (either for the source or the shared object files). And, for that matter, aren't there potential licensing issues surrounding those files? |
No, as in the code they are specified as libraries. You can find a lot of them online: http://www.gmtoolbox.com/ |
Chances are they do Windows-specific things anyway judging from their names (e.g., window.dll) so it's possibly not as simple as providing .so's. Otherwise, we could have used objcopy. Could you identify where in the code these are used? If it's not a million functions being used, perhaps I could reimplement them using portable libraries. |
As far as I know the .dll files are only loaded in once, in lib_init. There they are put into global variables. If you were to make .so variants that would do exactly the same thing as the .dll ones, we could just have a check, and if the platform is linux, the .so files will be used. But is that even possible, without having the source code? :-/ Still, this is just one thing that won't work on Linux. More things might be broken. |
The main reason why it's done this way, as far as I can tell, is that GML is a dumb language which doesn't abstract away calling conventions and such. At any rate, it would be possible, because it would not rely on those libraries at all; I would implement the functionality myself from scratch --- as long as it's not too much work (I expect that while those libraries have a lot of features, not too many are used by this specific program). That said, in the mean while, I have tracked down one of the libraries. It seems to have its full source code available, and support is included Linux as well as macOS: https://marketplace.yoyogames.com/assets/575/execute-shell As far as I can tell, everything from file.dll and window.dll can easily be done using GameMaker's built-in functions. I haven't investigated further. |
Hi, here are the sources for the DLLs you need to port: https://github.com/stuffbydavid/audio-DLL window.dll and midiinput.dll use Windows features like ShowWindow and midiInGetDevCaps, so they'll need to be rewritten from scratch. audio.dll and file.dll use the FFMPEG and Boost libraries which are cross-platform and require less changes. Good luck!! |
You must be the original author :) At any rate, if anything takes too much work to port, I'll also consider looking into how ditficult it is to replace them with cross-platform alternatives. Any idea as to how tight the coupling between these and Open Minecraft Note Block Studio is? Cause if it's just a matter of changing some calls and data structures, things should progress very quickly. I haven't really looked at the APIs yet. |
I know this is kinda necrotic but this isn't a forum so I have no reason not to tell y'all that I found a way to pretty much make this run without a compatibility layer (WINE (If its not an emulator then its a compatibility layer)) but I can't legally share it so... But it is possible... |
Could you explain the method in doing so? I'm interested in doing this. |
I found the libraries and replaced them with minor coding skills (just switched the code for the libraries) |
Why not change using Qt development environment? That can support any platform! |
@ScottLiu2019 Glad you pointed that out! I'm actually working on a prototype for a new version using exactly that framework (its Python version, PyQt, to be exact). No timeframe when this is going to be available, but I can already say it will be much less restrictive than the current version. :) |
@Bentroen I just happened to be thinking about creating a new version of the program using that framework myself, I would be interested in pursuing this, is there any way I could get involved? |
@lachlandk That's great! Thanks for your interest in helping the project. I'll invite you to the repository :) |
If you would like some additional help, @Bentroen @lachlandk , I am good with linux and PyQT and interested in helping y'all out. |
I think a rewrite could possibly do wonders to the performance of this program, my computer literally runs hotter while editing in NBS than playing some 3D games :D |
@MinecraftDesktopOnPi Sorry, I seem to have missed your comment! I'm keeping the repository private until we have a minimally working version, and we've already reached the 3 contributors limit. As soon as it's made public you'll be able to contribute via pull requests :) |
@Bentroen How's the progress on the new version? Any updates, how far along you guys are? |
I already wrote a significant part of the interface in Python, but we're considering the possibility of moving to another language due to performance reasons (though it's more likely that we'll stay with Python). |
Do you plan to use other languages instead of GML? For example, Golang, Java, Rust, etc. |
If Need Compatible All Platform, Best Thing to do Is using rebuild Without GML Languages.
|
The program is being rewritten in Python!
|
That`s fine, Has Release Timeline? |
Do I need Python 3 to install the software?
|
it could work with pypy3 , or you could compile it to c using Nuitka |
For anyone interested in running OBNS on mac os, got it successfully running on macOS Ventura 13.3 using wineskin. |
can i grab the source code from you so i can help out? |
i might also add support for addonss in c#, python, JS with electron if you want no proformance and probs c++ |
i also am writiing libs for certain things that i want to use so i can also help out there |
i also have |
@Bentroen I have been using OpenNBS on macOS through CrossOver the past few days, and it's been working almost perfectly. However, there seems to be a problem with the fluent theme:
![]() After dismissing this messagebox, however, the theme works perfectly without any further issues. I'd say it looks amazing, in all honesty. ![]() |
I have made a macOS test build here for everyone to download, please test for bugs for this version |
I can't seem to increase the window scale. It's stuck at 75%, and it's hard to read. Is there a way to fix? (Also, should new issues be posted now on this build, or should they stay here?) |
You can just report them here or in the discord! |
Hi, thank you for testing out the macOS build! Some of the issues you mentioned are actually intended functionality! Again, thank you for pointing out these issues for us! |
On Linux you should be able to call on ALSA for MIDI. Generally, as long as your drivers are current and correct, the MIDI sequencer is normally accessed via At the time of writing, PuleAudio doesn't support MIDI out of the box, but there are wrappers for OSS and PulseAudio available to mediate. I haven't worked on an Apple computer since my Quadra 950 stopped getting MacOS 9 updates, but from what I understand of the Apple Developer whitepapers, Apple's Core MIDI framework provides the requisite APIs. |
Hi, accessing MIDI devices in GameMaker require a native library which doesn't exist for macOS and linux right now, to my knowledge. If we want to achieve that, we need to create one on our own. However, we don't have much people who are experienced in writing cross platform libraries for GameMaker on our team yet. |
Ah. I misunderstood. I thought it was an OS issue, not a functionality limitation of GMS. That being the case then, what about the GMS Simple MIDI project? |
Hmm, this one looks like it will work. I'll test it out when I have time. |
TestFlight open! |
@OctoFlareDev There seems to be an issue with the update checker. Upon launching the program, it tells me "Version 3.11.0 is available! Do you want to download it?" |
Also the program defaults on macOS should include:
This provides a good out-of-the-box experience for macOS users, and makes the program look optimal on MacBook retina displays. |
If anyone is experiencing a black screen not responding when try to open the testflight version, if you can, PLEASE upload the stacktrace here when you attach a debugger from xcode (or if a crash report is generated, please report it in the popup), it's needed for me to reproduce this error. |
Would it be possible to include a Linux port of Open Minecraft Note Block Studio? Perhaps in the form of a .deb package or something.
The text was updated successfully, but these errors were encountered: