• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!

GMAppImager Tutorial - GM Games that Run on Any Modern Linux Distribution!

S

Sam (Deleted User)

Guest
GMAppImager Tutorial - GM Games that Run on Any Modern Linux Distribution!

GM Version
: GameMaker Studio 2.3.1+
Target Platform: Ubuntu 20.04 LTS to build the AppImage, (any Linux to run the converted executable).
Download: itch.io, GitHub, Google Drive
Links: N/A

Summary:
How to convert your GameMaker Studio 2 Linux games into single runtime executables that don't need installation and will run on any modern Linux distribution out of the box.
  • GMAppImager-aarch64.AppImage is the file to download for 64-bit ARM distro's, (like Manjaro).
  • GMAppImager-armhf.AppImage is the file you want for targeting 32-bit ARM, (such as RPi OS).
  • GMAppImager-x86_64.AppImage is for 64-bit-only Intel and AMD based platforms (non-ARM).
  • All *.zip files are currently the GameMaker Studio 2.3+ projects and extension C++ source code.
  • Key to Success-*.AppImage is an example game compiled for the architecture listed in its name.
  • Key to Success-*.zip is the source code to the example game so that you may convert it as well.
  • Technically works with non-GM games and software as well if you know what you are doing.
Tutorial:
 
Last edited by a moderator:
S

Sam (Deleted User)

Guest
Now supports 32-bit (armhf) and 64-bit (aarch64) ARM, so not limited to Intel or AMD architectures anymore. Also planning on adding support for GMS 1.4 so 32-bit Intel (i686) can be supported, not just ARM and 64-bit AMD (x86_64). I will also be adding command line support down the line. Stay tuned guys! :D
 
S

Sam (Deleted User)

Guest
Hey guys! Just a quick update on what's changed since I last posted:
  • Fixed a bug with all exported Linux targets complaining to console, "Unable to find game!!", if the selected path contained spaces.
  • Fixed an issue with 64-bit ARM and 32-bit ARM not actually working as advertised (I forgot to add a specific library to the blacklist).
  • itch.io link now available in case my Google Drive link ever goes down.
  • GameMaker Studio 1.4 and command line usage is currently on-hold.
  • Asset is now commercial; free Google Drive link will stay available.
 
Last edited by a moderator:

Miepee

Member
A couple of my notes here:
- Would you kindly please put the source code on some other place except just your google drive? Github / gitlab would be nice.
- Could you please include a license into your source code? Otherwise nobody has the rights to copy, distribute, or modify the code.
- I haven't been exactly keeping up, since when does GMS2 ship both aarch64 and armhf runners? Always thought they only shipped armhf runners.
- In case you're looking for GMS1.4 stuff:
* I attempted to do that as well, you can find what i did there on github on the "AM2R-Autopatcher-Linux" repository. It's *almost* working, lib32-libpulse is the only thing that's causing an issue right now for me and is what users have to install
* There's a mesa bug where on AMD cards the game will crash if the runner is not named "runner", because if that name is not there specific mesa patches won't be applied.
- not a lawyer, but since you're using AppImageTool, don't you have to include their license?
 
Last edited:
S

Sam (Deleted User)

Guest
A couple of my notes here:
- Would you kindly please put the source code on some other place except just your google drive? Github / gitlab would be nice.
- Could you please include a license into your source code? Otherwise nobody has the rights to copy, distribute, or modify the code.
- I haven't been exactly keeping up, since when does GMS2 ship both aarch64 and armhf runners? Always thought they only shipped armhf runners.
- In case you're looking for GMS1.4 stuff:
* I attempted to do that as well, you can find what i did there on github on the "AM2R-Autopatcher-Linux" repository. It's *almost* working, lib32-libpulse is the only thing that's causing an issue right now for me and is what users have to install
* There's a mesa bug where on AMD cards the game will crash if the runner is not named "runner", because if that name is not there specific mesa patches won't be applied.
- GitHub repository. doing it now. Thought about it already, haven't due to other priorities.
- License is MIT, for those who purchase it is looked as a donation. Credit not required in binary form, whether modified or as-is. Distribution allowed, free or paid.
- aarch64 is now supported as well by GMS2. They weren't as loud about it.
- does the "runner" filename bug only happen in GMS1.4 or does it apply to GMS2 as well? I haven't noticed on my end, wanted to be sure.
 
S

Sam (Deleted User)

Guest
GitHub link is now live. :)

time-killer-games/GMAppImager: Graphically Converts GameMaker Studio 2 Linux Games to AppImage Bundles. (github.com)

Note the source code includes the most up-to-date versions of my extensions. The binaries use outdated versions of my extensions however this doesn't actually break anything. If I need to make new builds for any reason the extensions will be updated in the binaries as well.

- not a lawyer, but since you're using AppImageTool, don't you have to include their license?
People have different opinions on it. I make it clear enough in the readme what I am using; I wouldn't worry about it too much.

http://llvm.org/docs/DeveloperPolicy.html#license
In addition to the UIUC license, the runtime library components of LLVM (compiler_rt, libc++, and libclc) are also licensed under the MIT License, which does not contain the binary redistribution clause. As a user of these runtime libraries, it means that you can choose to use the code under either license (and thus don’t need the binary redistribution clause), and as a contributor to the code that you agree that any contributions to these libraries be licensed under both licenses. We feel that this is important for runtime libraries, because they are implicitly linked into applications and therefore should not subject those applications to the binary redistribution clause.
Taken from: https://github.com/github/choosealicense.com/issues/257
 
Last edited by a moderator:
S

Sam (Deleted User)

Guest
Just wanted to give everyone the heads up, if you can create an AppImage with using the tutorial in and tool in the OP, you can now also convert your games's AppImage into a Raspberry Pi bootable disk image. First, choose one of the following disk images, doesn't matter which one you download:


Then write them to an micro SD card and mount that to an existing install of Linux. On the mounted micro SD card, navigate to /home/pi/ and in there you will find and executable named run. That file is the example game that came with the disk image. Replace it with your game AppImage you created, and give it the same exact filename of run, and make sure it is marked as executable under file properties. Make sure when you replace the "run" file you remove the AppImage file extension so it is named exactly the same as the original file which was in that folder. Then the rapsberry pi will boot into your game, ready for turning into an arcade cabinet!

Mirrors for the downloads available in the previous Google Drive link here:
I recommend Raspberry Pi 4 model B with 8GB RAM for this.
 
S

Sam (Deleted User)

Guest
Forgive me for such a stupid question, but how do I install it?
Download it for the architecture of your machine, right click and under properties you can mark it as executable.
 
S

Sam (Deleted User)

Guest
I made an improvement to this tool. It no longer uses zenity or kdialog, (it would choose between whichever is more likely to be installed already based on whether KWin is running). Which means it shouldn't require anything installed on your machine as long as your machine meets the requirements to run an AppImage, which most Linux distributions do. It now uses my imgui file dialog extension instead. The app only supports english characters because the Raspberry Pi version was choking on the amount of fonts needed to support full UTF-8 and it caused the merged font result to render incorrectly. Depending on how that is viewed, it may be a bit of step backwards. But kdialog and zenity had an issue where the default folder where the dialog opens would be your temp folder, which is annoying and i wanted it to default to the home folder instead, this was the only work around I could find in the short term for that.
 
Top