-
-
Notifications
You must be signed in to change notification settings - Fork 51
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). |
Seems that while starting this app via wine on my machine it takes exclusive control over the audio card and will prevent anything else from playing sounds until after the app is closed. The reverse is also true: while I have other applications open, ONBS will not play sounds. Not sure if this is the place to put this problem, but is anyone else having this issue? uname -a: |
That would be a problem with WINE, you posted in the wrong place I believe. :P |
Ah, well, thanks for responding at least. Hopefully some poor soul in the future on their second page on Google will see this post and be that much closer to solving their problem. Hello future! |
I think the person who gave me a thumbs down doesn't understand what I said is actually relevant. They shouldn't complain if they are too lazy to report bugs to the right people. We have nothing to do with WINE. Expecting us to fix Wine's bugs is like expecting Microsoft to fix Apple's version of iTunes that just so happens to run on Windows. That is not Microsoft's problem and would be blaming the wrong people 100%. My suggestion is find out what underlying C++ api is actually being used by the audio playback in the app, contact someone who knows, and once you have that information, attach that information to a WINE bug report, and give them information about your distro's setup or any other information that might be useful, which is the only way it's going to get fixed, I am trying to help and not be provoking, understand that. That said, if you can wait like others have mentioned I am one of the users looking to help give native linux support so you won't need to rely on buggy workarounds like WINE. Don't bite the hand that feeds you. |
A year later; how's progress on the cross-platform version? |
Unfortunately, there's only like 2 or 3 active developers working on this most the time as far as I can tell, I don't really count as one of those primary 2 or 3. The most I've done is fill in a few hollow spots that game maker lacked. Hopefully the other developers can give you a better idea of where we are at. |
That being said, i would like to help more proactively with this project and I will try to help more in any way I can to keep things moving in the direction you all want it to get to. :) |
That's cool thanks |
@TheoCGaming Currently @chenxi050402 is working on making the current version (3.x) compatible with Mac/Linux. However, there are big steps left until we have at least a minimally usable version for these platforms (still lacking extra features such as MIDI input support). Meanwhile, I'm working entirely on the new, rewritten cross-platform version (4.0) using the Qt framework, which will be made open-source as soon as we have a minimally usable version. This, too, is moving slowly, but steadily. We're the only two active developers in the project, besides @time-killer-games which has been really helpful in providing replacements for some of the Windows-only dependencies! But, as with every complex software project, things take time to do, especially when you don't have a large team behind it. Though, I'm hopeful that as soon as we move out of GameMaker as the main development platform, we'll be able to centralize the development efforts on the new version, and possibly also find more active contributors as well. :) |
So I figured out how to run OBNS on linux with pretty much native performance! I have tested on ZorinOS and Kubuntu, but should work for essentially any distro. Steps to reproduce:
You now have ONBS on linux! |
We want a native port, not a native-ish port. Bottles can still
introduce bugs with various drivers and is still not preferred since Bottles is a WINE front-end. (And yes, proton is also a fork of WINE.)
|
I've been a Linux user since 2000, and I'm pleased by the (slowly) increasing number of things - like this - that are making their way over, so I've been eagerly watching this particular thread since it was opened. And while I appreciate the most recent work-around provided by @santisnotboss, @TheoCGaming is right - what we really want is full native support, and that can sometimes take a lot of time. |
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 |
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: