Linux Run the GMS2 IDE on Ubuntu 19.04

Tthecreator

Your Creator!
GM Version: GMS2.2.2.413 (Runtime: v2.2.2.326)
Target Platform: Ubuntu 19.04 (Other Linux versions may work as well)
Download: N/A
Links:
Tested with:
Ubuntu 19.04
Ubuntu 19.10
Linux Mint 19.1
Elementary 5.1.2

Summary:
This tutorial tells you how to get GameMakerStudio2 to install, the IDE to run and get it to compile games.
This is accomplished using wine and some fiddling around with .NET.

Requirements:
64x bit install of Ubuntu 19.04
gms2 installer file: GameMakerStudio-Installer-2.2.2.413.exe (others may work as well)

Todo:
Fix GLX errors. (Wine openGL to X window manager doesn’t work correctly)
Test Android support.

OS images with all dependencies needed:
If you don't have Linux installed yet, you can use this ISO image by @Samuel Venable to get gms2 running quickly:
https://forum.yoyogames.com/index.php?threads/run-the-gms2-ide-on-ubuntu-19-04.64330/#post-405199
It is based on Ubuntu with KDE Neon. Check out his post for more details.

Tutorial:
First install the latest version of wine using these commands:
You need wine 4.10, earlier wine versions (like 4.2) will NOT work.

add wine repo key:
wget -nc https://dl.winehq.org/wine-builds/winehq.key && sudo apt-key add winehq.key​
add wine repository:
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ disco main'​
note: If you are on any other distribution, you might need use a different link.​
On Ubuntu 18.04 or Linux Mint 19.1 this is: (Thanks to @canoi)​
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'​

add repo for unmet dependency libfaudio0:
sudo add-apt-repository ppa:cybermax-dexter/sdl2-backport​
update available packages:
sudo apt update​
install wine:
sudo apt install --install-recommends winehq-devel​
If everything went correctly "wine --version" should return "wine-4.10¨

Next up, we want to install q4wine. This is a usefull tool to manage prefixes, manage running processes and load up .exe files correctly.

install q4wine:
sudo apt install q4wine​
install winetricks:
sudo apt install winetricks​


We need to setup a wine prefix in q4wine:
  • Create a new gms2 folder in your home folder.
  • Open q4wine.
  • Run trough the q4wine setup process. (you can mostly click next)
  • Create a new prefix under 'prefixes'.
  • Name the prefix 'gms2'
  • Set the prefixpath to the previously created gms2 folder.
  • Set the arch to 64 bit.
  • Save the prefix

Run the following command to initiate the prefix: (We're also going to uninstall mono)
(if you chose a different wine prefix folder, don't forget to change it in these commands)​
run uninstaller and init the prefix:
WINEPREFIX=~/gms2 WINEARCH="win64" wine64 uninstaller​
If you are asked to install wine mono click 'install'. Do the same for gecko.​
A wine GUI should open now. Select Mono and click uninstall. Both mono entries should have been deleted.​


We need to install .NET now. use the following commands:
Install .NET 4.5.2:
WINEPREFIX=~/gms2/ winetricks dotnet452​
Run trough the installers.​
If you are given a warning about the windows update server, just continue.​
You don't have to restart your computer.​

Install gms2:
Now you want to download the gms2 installer .exe file.​
Open it with q4wine (right click the file and select 'open with other application' if q4wine is not the default)​
In q4wine select the gms2 prefix.​
Install gms2.​
If you see a "Turn Windows features on or off" message click okay.​
If a .NET 3.5 installer opens, cancel the installation.​
If a .NET 2.5.4 repair window opens, close it by going into Q4Wine into the processing tab and terminating "Setup.exe"​

GMS2 IDE should now open automatically. (or it may not) If it does, close it.

If you want to start it manually execute the following command:
WINEPREFIX=~/gms2 WINEARCH="win64" wine64 "C:\Program Files\GameMaker Studio 2\GameMakerStudio.exe"​
(thanks to @tijeseffff )

In the IDE, login to your account and wait for the runtime to install.
Start a new test project, make a room, an object and add a hello world message.

Click run. Your game should now start.

Compile a native linux executable:
To compile for linux we are going to follow this guide:​
For your ip, you can fill in localhost or '127.0.0.1'​
If that doesn't work you can try:​
There will be an extensive list of packages to install. However, not all of these packages are available anymore. This can be fixed by using:​
sudo apt-get install libssl1.1​
sudo apt-get install libbz2​

and then 'hacking' libssl to look like libssl1.0.0:
sudo cp /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0​
sudo cp /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/libssl.so.1.0.0​
sudo cp /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0​
sudo cp /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.0.0​

Now follow the guide setting up your host to accept ssh connections.​
Eventually you should see a native Linux app running on your pc.​

Make a launcher shortcut
Download and build AppEditor:
sudo apt install valac libgranite-dev meson​
cd ~/​
cd appeditor​
Build AppEditor:
meson build​
cd build​
meson configure -Dprefix=/usr​
ninja​
sudo ninja install​
Create startup script:
cd ~/​
nano launchGMS2.sh​
Insert the following text:​
WINEPREFIX="/home/YOUR_USER_NAME_HERE/gms2" WINEARCH="win64" wine64 "C:\Program Files\GameMaker Studio 2\GameMakerStudio.exe"​
Press CNTRL+X to close nano. Type 'Y' to save.​
Launch AppEditor:
cd ~/appeditor/build​
com.github.donadigo.appeditor​
GMS2/wine itself should have already made a launcher icon. We are going to edit that.​
Find it and:​
- set 'Show in Launcher' to true.​
- set the 'Category' to Programming​
- set 'Command Line' to /home/YOUR_USER_NAME_HERE/launchGMS2.sh​
- enable 'Launch in Terminal'​

Now save and try the launch entry. (close any open IDE's beforehand)​

Compile for android:
Download latest jdk8 for Windows x64, and the latest jdk8 for Linux (.tar.gz):​

If you don't have an account you can make one with a temporary email service: https://temp-mail.org/en/view/3586d8b76358d93eabd0f0d53207bfc4
note: I used jdk-8u211.​
Launch jdk-8u***-windows-x64.exe with q4wine in gms2 prefix.​
Some UI elements of the install will be broken.​
Check the box and press the left button.​
Click Next​
On the next broken screen press the left button again​
If the same message keeps popping up, click the right button.​
Go to your GMS2 android platform settings and set the JDK to: C:\Program Files\Java\jdk1.8.0_XXX (your directory may be different)​
(These steps are kind of vague, they may need to be written down more clearly. These were my notes and I didn't have enough time to walk trough the process again on my tutorial VM.)​
Download android studio for windows 64 bit:

Run the installer in the correct prefix using q4wine.​
After the installation execute:
WINEPREFIX=~/gms2 WINEARCH="win64" wine64 "C:\Program Files\Android\Android Studio\bin\studio64.exe"​

Don't send usage statistics.​
Do a custom install.​
Set SDK path to C:\Android\SDK​
Don't install Intel HAXM​
Follow trough with the install. Android studio will start to download components.​
When you see the Android Studio welcome screen, click configure and then 'SDK Manager'​
Install the correct SDK platforms and the SDK tools. Use this tutorial as reference:​

Again, make sure not to install anything to do with HAXM.​
Install the components and accept all license agreements.​
Install android studio on your host machine with the exact same settings. On Ubuntu you can install android studio trough the Software center. When setting up android studio use linux kernel hardware acceleration module instead of HAXM. (This should be done by default)​
Open a terminal and do:
Cd ~/Android/Sdk/platform-tools/​
./adb --version​

This should yield:​
Android Debug Bridge version 1.0.41​
Version 29.0.1-5644136​
Installed as /home/YOUR_USERNAME/Android/Sdk/platform-tools/adb​

Open a second terminal and do:
WINEPREFIX=~/gms2 WINEARCH="win64" wine64 cmd​

This will open a windows cmd prompt. Here you can execute:​
C:​
cd C:\Android\SDK\platform-tools​
adb --version​

You should see something among the lines of:​
Android Debug Bridge version 1.0.41​
Version 29.0.1-5644136​
Installed as C:\Android\SDK\platform-tools\adb.exe​

It is okay if the version numbers between your setup and my setup differ, as long as the Windows and Linux Android Debug Bridge versions are the same.​
Luckily for us the ADB uses a separated client interface connected do a daemon server. We can actually run the server on Linux and the client on Windows.​
To do this, on your host execute: (In the same folder as last time)
./adb start-server​
adb devices​

If you had your phone connected to your computer, you should see it identified by adb. If not, connect your phone or troubleshoot your usb connection.​
On cmd execute:
adb devices​

Your adb devices should show up in Windows.​
In GMS, go to the android device editor (open the targets menu, click Android and click on the pencil under devices). Click 'Detect Device'. Your device should show up.​
Go back to your android platform settings and generate (or import) a keystore file. This keystore file has to be in the root of your windows system. For example: C:\testProject.keystore. Keeping the keystore file in the root directory makes our life easier down the road and prevents our filename from having any spaces.​
Find out what the API level of your phone is and select that in GMS.​
Select the processor architecture of your phone. (I had to enable ARM64)​
Extract your java-8u***-linux-x64.tar.gz file into your home directory.​
Edit your /etc/profile file to set your java home correctly:
sudo nano /etc/profile​

Add the following four lines:​
JAVA_HOME=/home/thomas/jdk1.8.0_211​
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin​
export JAVA_HOME​
export PATH​

Let Ubuntu know where our java is:
sudo update-alternatives --install "/usr/bin/java" "java" "<Directory where JAVA has been extracted>/bin/java" 1​
sudo update-alternatives --install "/usr/bin/javac" "javac" "<Directory where JAVA has been extracted>/bin/javac" 1​
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "<Directory where JAVA has been extracted>/bin/javaws" 1​
sudo update-alternatives --set java <Directory where JAVA has been extracted>/bin/java​
sudo update-alternatives --set javac <Directory where JAVA has been extracted>/bin/javac​
sudo update-alternatives --set javaws <Directory where JAVA has been extracted>/bin/javaws​

java -version should now return:​
java version "1.8.0_211"​
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)​
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)​
If you see something along the lines of OpenJDK 11, your gradle will not work.​
install gradle:
sudo apt install gradle​

Create a new android build folder somewhere on your computer.​
Add a copy of your keystore to this folder and call it 'project.keystore'.​
Add the following python script called launchGMS2AndroidBuild.py:​
#launchGMS2AndroidBuild.py​
#This script looks for changes in GMS's cached android build output and will compile and run your android app when GM is done with it's business.​
import sys​
import time​
import logging​
import re​
import shutil​
import os​
from watchdog.observers import Observer​
from watchdog.events import LoggingEventHandler​
import distutils.dir_util​
windows_gms2CachePath = "/home/YOUR_USERNAME/gms2/drive_c/users/YOUR_USERNAME/Application Data/GameMakerStudio2/Cache/GMS2CACHE/testProjec_BCCB0FB7_367ADB89"​
host_gradleVersion = "2.3.3"​
host_sdkDir = "/home/thomas/Android/Sdk/"#Where your android sdk is located​
host_keyStore = os.getcwd() + "project.keystore" #The location of your keyfile on your host machine​
android_packageName = "com.company.game"#The packagename of your game​
host_cacheFile = "gms2cache"#The local folder on your host that is used to hold and manipulate the gms2 android compile cache​
last_changed_build_file_pattern = re.compile(".*build.sample") #What file game maker edits last when compiling for android.​
def cleanUp():​
print("cleaning up...")​
if(os.path.isdir(host_cacheFile)):​
shutil.rmtree(host_cacheFile)​
def copyCacheToHost():​
print("copying cache to host")​
distutils.dir_util._path_created = {}​
distutils.dir_util.copy_tree(windows_gms2CachePath, host_cacheFile)​
def changeProjectFileForHostCompatibility():​
setHostGradleVersion()​
setSdkSrcDir()​
setKeystoreFile()​
def setHostGradleVersion():​
#make sure we are using the correct gradleVersion​
print("Setting gradle version to:"+host_gradleVersion)​
with open (host_cacheFile+"/Android/default/build.gradle", 'r') as f:​
content = f.read()​
content_new = re.sub("gradle:.*'", "gradle:"+host_gradleVersion+"'", content)​
with open (host_cacheFile+"/Android/default/build.gradle", 'w') as f:​
f.write(content_new)​
def setKeystoreFile():​
#make sure we are using the correct gradleVersion​
print("Setting keystore file to:"+host_keyStore)​
with open (host_cacheFile+"/Android/default/"+android_packageName+"/build.gradle", 'r') as f:​
content = f.read()​
content_new = re.sub("C:/.*.keystore", host_keyStore, content)​
with open (host_cacheFile+"/Android/default/"+android_packageName+"/build.gradle", 'w') as f:​
f.write(content_new)​
def setSdkSrcDir():​
print("Setting sdk source directory to:"+host_sdkDir)​
with open (host_cacheFile+"/Android/default/local.properties", 'w') as f:​
f.write("sdk.dir="+host_sdkDir)​
def gradleCompile():​
print("Using Gradle to compile in:"+host_cacheFile+"/Android/default")​
os.system("cd "+host_cacheFile+"/Android/default && gradle installDebug && cd ../../../")​
def runOnDevice():​
print("Using adb to run the app on a device")​
os.system(host_sdkDir+"platform-tools/adb shell monkey -p "+android_packageName+" 1")​
class GMSEventHandler(LoggingEventHandler):​
def on_any_event(self, event):​
print("HI!")​
#print(event)​
print(event.src_path)​
if (last_changed_build_file_pattern.match(event.src_path)):​
print("build sample file has been edited")​
copyCacheToHost()​
changeProjectFileForHostCompatibility()​
gradleCompile()​
runOnDevice()​
cleanUp()​
if __name__ == "__main__":​
print("Started looking for changes to: "+windows_gms2CachePath)​
cleanUp()​
logging.basicConfig(level=logging.INFO,​
format='%(asctime)s - %(message)s',​
datefmt='%Y-%m-%d %H:%M:%S')​
event_handler = GMSEventHandler()​
observer = Observer()​
observer.schedule(event_handler, windows_gms2CachePath, recursive=True)​
observer.start()​
try:​
while True:​
time.sleep(1)​
except KeyboardInterrupt:​
observer.stop()​
observer.join()​
cleanUp()​

You will need to edit this python file to make sure it runs on your machine. On the top of the files there are a bunch of settings you can change. This script only supports full system paths. '~/' is invalid and will not work. That's why you may need to inject your username into the script.​
To start the script open a terminal in the folder you created and execute:
python3 launchGMS2AndroidBuild.py​

You might need to install the watchdog python module:
pip3 install watchdog​

If you don't have python installed:
sudo apt install python3​
sudo apt install python3-pip​

To stop the script press CNTRL+Z​
From this point on my python script should take care of everything for you. Once it detects that build.sample has been updated, it will copy over the GMS2 android compile cache, change some settings and finally run gradle. Gradle will install the app for you on your phone after which the python script will launch it.​
Known problems without solutions:
When GameMaker runs through this method it spits out never-ending 'Changes made to project file' errors.​
There is no fix for this yet.​
Thanks to @Pir Jacques for reporting this issue​
GameMaker can run very slow at times for unknown reasons​
Thanks to @IceExplosive for reporting this issue​
Known problems with solutions:
Igor.exe invalid parameter:​
Make sure to launch GMS2 from the right prefix and from the terminal.​
Use a command like this:​
Code:
[/INDENT][/INDENT][/INDENT][/INDENT]
[INDENT][INDENT][INDENT][INDENT]Exec=gnome-terminal -- bash -c 'WINEPREFIX="/home/user/gms2" WINEARCH="win64" wine64 "C:\Program Files\GameMaker Studio 2\GameMakerStudio.exe"'[/INDENT][/INDENT][/INDENT][/INDENT]
[INDENT][INDENT][INDENT][INDENT]
Try adding --geometry 1x1+9999+9999 (COLUMNS x ROWS + X + Y) to the gnome-terminal command and it should make the window small and offscreen.​
Thanks to @Spectre216 and @Yal for this issue!​

Font problems:​
Install fonts in wine:​
Code:
[/INDENT][/INDENT][/INDENT][/INDENT]
[INDENT][INDENT][INDENT][INDENT]WINEPREFIX=~/gms2 winetricks allfonts[/INDENT][/INDENT][/INDENT][/INDENT]
[INDENT][INDENT][INDENT][INDENT]
Thanks to @Binsk for this issue!​

GLX Errors:​
If you see any of the following in your terminal while running GMS:​
- wine X Error of failed request: BadValue​
- Any error saying something with GLX​

Do the following:​
- restart your pc​
- upgrade or reinstall your video drivers.​


'This program encountered an error':​
In some cases wine might throw an error saying the program cannot be booted. When this happens is somewhat random and you might need to try launching GMS2 a few times before it finally works.​

Wine screws up audio:​
In some specific configurations starting a wine program may cause your sound to become higher or lower. To fix this execute:​
pulseaudio --kill​


Running gradle gives you a license error:​
open android studio on your host. Open the sdk manager and install the corresponding package. You may need to check 'Show Package Details'.​
Make sure you can compile an app (just an empty test project) in android studio on your host using the same build tools version and sdk version. You can change this in file>project structure​
Go into your android sdk directory on your host:
cd ~/Android/Sdk/tools/bin​

and:
./sdkmanager --licenses​
say 'y' to all​

adb server version (41) doesn't match this client (39); killing...​
This error occurs when you are using multiple adb versions. Make sure the adb version of your host machine is the same as on your windows machine.​
Make sure you have your adb daemon running on your Linux host.​
On your host, make sure you are running the program adb in the platform-tools folder.​
Cd into this folder and use './adb'. The ./ is important.​
Make sure the package 'android-tools-adb' is NOT installed. Uninstall it with:
sudo apt purge android-tools-adb​

GameMAkerStudio.exe is running. Please close it first.​
This message may appear when updating/uninstalling GMS2.​
Unfortunately, this problem has not been solved.​
For now, you will have to start all over by creating a new prefix.​


Sources:
http://ubuntuhandbook.org/index.php/2019/05/nstall-wine-4-8-ubuntu-19-04-18-04/
https://wiki.winehq.org/Mono
https://www.yoyogames.com/blog/107/how-to-compile-to-linux-ubuntu
https://forum.winehq.org/viewtopic.php?f=8&t=14285
https://linuxconfig.org/how-to-create-desktop-shortcut-launcher-on-ubuntu-18-10-cosmic-cuttlefish-linux
https://www.omgubuntu.co.uk/2018/02/app-menu-editor-for-ubuntu-appeditor
https://github.com/donadigo/appeditor
https://stackoverflow.com/questions/44094037/android-studio-failed-to-notify-project-evaluation-listener-error
https://developer.android.com/studio/build/building-cmdline
https://stackoverflow.com/questions/4567904/how-to-start-an-application-using-android-adb-tools
https://stackoverflow.com/questions/39760172/you-have-not-accepted-the-license-agreements-of-the-following-sdk-components
https://github.com/oblador/react-native-vector-icons/issues/527
https://www.guru99.com/how-to-install-java-on-ubuntu.html
http://tipsonubuntu.com/2016/07/31/install-oracle-java-8-9-ubuntu-16-04-linux-mint-18/
https://askubuntu.com/questions/620888/installing-jdk-with-wine
https://stackoverflow.com/questions/37691070/cannot-install-jdk-8-on-wine-ubuntu
https://help.yoyogames.com/hc/en-us/articles/216753498-GameMaker-Studio-Android-SDK-and-NDK-setup-


special thanks to:
The winehq team (For not making an emulator)
@tijeseffff (For fixing a problem where the IDE was unable to start Igor.exe)
@XSonicRU (For suggesting testing this with Android)
@canoi (For testing Linux Mint 19.1)
@Spectre216 (For fixing a problem where the IDE was unable to start Igor.exe)
@Yal (For hiding terminals)
@Binsk (For proposing a solution to some font issues)
@Samuel Venable (For providing an easy to install distro with all required dependencies)
@benway (For finding a bug where GMS2 can't be uninstalled or updated)
@Pir Jacques (For finding a bug where GMS2 spits out errors)
@❤️×1 (For testing GMS2 on elementary OS)
@IceExplosive (For reporting an issue where the IDE is quite slow at times)
 
Last edited:

Mert

Member
The only reason why I'm using Windows is games and game maker. I can play the same games on linux (Dota2 etc.), but I couldn't do it with Game Maker. It seems like now I can.
Thanks
 

Samuel Venable

Time Killer
Actually I've been searching for a while how to install wine on Kubuntu, as KDE Plasma Discover doesn't seem to have it.

Thanks for the terminal commands. :p
 

Tthecreator

Your Creator!
That's awesome! Have you tested it with GMS1.4?
I've gotten gms1 running in some state, but due to the window skinning and some other problems I've given up on getting it to work. Gms2 has a platform aspecific code base because it has to run on MacOS as well.
 
How to fix Igor problem. (no need to run another cmd window)
Launch your GMS2 using this command
Code:
WINEPREFIX=~/gms2 WINEARCH="win64" wine64 "C:\Program Files\GameMaker Studio 2\GameMakerStudio.exe"
And done.
 

XSonicRU

Member
What about android builds? Can someone test them?...
If they're working then there's really no reason to use win for me
 

Kenshiro

Member
Just tested it. It mostly worked, but at some point it crashed pretty hard and somehow Wine removed the GMS2 install.
Compiling and running was working.
I tested GMS1.4 as well but kept have authentication problems (which, I believe, exist on Windows too). When I managed to load a project, I tried to compile it but GMAssetCompiler.exe was failing for some reason.

Anyway, thanks again for tutorial. Hopefully Wine and Proton will keep making progress and compatibility will improve.
 
Last edited:

canoi

Member
OH GOOOOSH, it's working!! After a long time hahaha
Finally i can use it without open a vm everytime!

I'm using Linux Mint 19.1 (Based on Ubuntu 18.04, so it should work on Ubuntu too), and it's everything working.
I first tried with wine 4.0, but it had issue on compile/build the game. So it really needs wine 4.10

If anyone has doubts on how to install on 18.04, follow all the guide, but just change this part
add wine repository:
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ disco main'
to this:
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'
Captura de tela_2019-06-20_19-51-10.png
 

Tthecreator

Your Creator!
It seems like I succeeded in compiling for Android. However, I still need to do a lot of work to streamline the process. Right now it requires copying over files an manually editing them.
I'm going to write a script that can automatically detect when game maker updates files and then compile and run things for you. This way gradle, the sdk and adb can run on your host. Forget about running adb on wine.
 
I got stuck at the .net frame installation. Followed the tutorial, using wine 4.11, mint tara using the bionic package.

It got stucks every time I tried to install. Remove the prefix, delete the entire prefix folder, reinstall. Stuck every time

Did anyone encounter this?

 

Tthecreator

Your Creator!
@SlightlyWind did you execute the dotnet452 winetricks step correctly?
The installer GM has embedded doesn't work. You need to end it. Close it by going into Q4Wine into the processing tab and terminating "Setup.exe"
 
btw wine doesn't really do the trick, the game runs at 60 fps, draw gui fps in game return 60 all the time but on screen it's like 25fps for some reason.
 

Samuel Venable

Time Killer
For those of you who want a single runtime executable on Windows in GMS2:

https://www.gamephase.net/gms-zip-to-exe/

It requires Windows 7 for compatiblity with all Windows versions from Windows Vista to Windows 10.

However, on topic here - after you build said EXE using your Windows system...

...a recent wine update fixed an issue with this. Single Executables made with this method previously did not work in wine.. it would just throw an error. But after I updated wine a few days ago, it appears that bug is fixed and single runtime EXE's now work under wine! This also means GMS 1.4 single runtime EXE's built on Windows 7 will also work, since both use the same system32 / sysWOW64 folder stuff to create the EXE's.

Use the information in this tutorial to install wine, or link to this topic for any linux users who may want to try your game but don't have windows, and instruct them to skip all the unrelated steps regarding GMS2 development.

Cheers!
 

Dather32

Member
So I can't run GMS2 without mono and .NET 3.5 sp1, according to my attempts today. Except mono doesn't want to install, either.

YoyoGames really ought to listen to the crowd and make an AppImage, or even outsource someone to port this.
 
Last edited:

Lonewolff

Member
So I can't run GMS2 without mono and .NET 3.5 sp1, according to my attempts today. Except mono doesn't want to install, either.

YoyoGames really ought to listen to the crowd and make an AppImage, or even outsource someone to port this.

YYG asked the question on various social media platforms a few years back. Turns out there is about 100 people on the planet who wants an IDE for GMS on Linux.

Doesn't make financial sense to do it. The most cost for the smallest target.
 

Dather32

Member
I followed this tutorial which led to everything being installed:


However, my last issue is a "Waiting on children" within xterm and closing when I try to run GMS2:

 

Dather32

Member
Since I'm not allowed to append to my last post, I've been able to get through the above issue by redoing the process, without Lutris. My problem now comes in with running BouncyCastle.Crypto.dll, which presents a "Bad EXE Format Error" when I try to run the game.

My inclination is that BouncyCastle is a 32-bit DLL running on a 64-bit wine, and so it's incompatible. Any thoughts?

Snippet:

C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.3.344/bin/GMAssetCompiler.exe /c /zpex /mv=1 /iv=0 /rv=0 /bv=0 /j=8 /gn="TestProj101" /td="C:\users\linuxmint\GameMakerStudio2\GMS2TEMP" /cd="C:\users\linuxmint\Application Data\GameMakerStudio2\Cache\GMS2CACHE\TestProj10_28EBB149_9E268EE5" /zpuf="C:\users\linuxmint\Application Data/GameMakerStudio2\ahoward73_2140356" /m=windows /tgt=64 /nodnd /cfg="default" /o="C:\users\linuxmint\GameMakerStudio2\GMS2TEMP\TestProj101_BA6FE59_VM" /sh=True /optionsini="C:\users\linuxmint\GameMakerStudio2\GMS2TEMP\TestProj101_BA6FE59_VM\options.ini" /cvm /baseproject="C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.3.344\BaseProject\BaseProject.yyp" "C:\users\linuxmint\My Documents\GameMakerStudio2\TestProj101\TestProj101.yyp" /preprocess="C:\users\linuxmint\Application Data\GameMakerStudio2\Cache\GMS2CACHE\TestProj10_28EBB149_9E268EE5"
-----------------------------------------------------------------------------
System.BadImageFormatException: Could not load file or assembly 'BouncyCastle.Crypto.dll' or one of its dependencies. Bad EXE format for . (Exception from HRESULT: 0x800700C1)
File name: 'BouncyCastle.Crypto.dll'
at GMAssetCompiler.Program.”()
at GMAssetCompiler.Program.(String[] )
-----------------------------------------------------------------------------
EXCEPTION FILE - C:\users\linuxmint\Temp\cde3f20fe00c44dab9f507765a8cfeaf.yyg.saencryptedreport
-----------------------------------------------------------------------------
C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.3.344/bin/GMAssetCompiler.exe exited with non-zero status (-532462766)

$ wine --version
wine-4.0.1
 

Tthecreator

Your Creator!
Since I'm not allowed to append to my last post, I've been able to get through the above issue by redoing the process, without Lutris. My problem now comes in with running BouncyCastle.Crypto.dll, which presents a "Bad EXE Format Error" when I try to run the game.

My inclination is that BouncyCastle is a 32-bit DLL running on a 64-bit wine, and so it's incompatible. Any thoughts?

Snippet:

C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.3.344/bin/GMAssetCompiler.exe /c /zpex /mv=1 /iv=0 /rv=0 /bv=0 /j=8 /gn="TestProj101" /td="C:\users\linuxmint\GameMakerStudio2\GMS2TEMP" /cd="C:\users\linuxmint\Application Data\GameMakerStudio2\Cache\GMS2CACHE\TestProj10_28EBB149_9E268EE5" /zpuf="C:\users\linuxmint\Application Data/GameMakerStudio2\ahoward73_2140356" /m=windows /tgt=64 /nodnd /cfg="default" /o="C:\users\linuxmint\GameMakerStudio2\GMS2TEMP\TestProj101_BA6FE59_VM" /sh=True /optionsini="C:\users\linuxmint\GameMakerStudio2\GMS2TEMP\TestProj101_BA6FE59_VM\options.ini" /cvm /baseproject="C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.3.344\BaseProject\BaseProject.yyp" "C:\users\linuxmint\My Documents\GameMakerStudio2\TestProj101\TestProj101.yyp" /preprocess="C:\users\linuxmint\Application Data\GameMakerStudio2\Cache\GMS2CACHE\TestProj10_28EBB149_9E268EE5"
-----------------------------------------------------------------------------
System.BadImageFormatException: Could not load file or assembly 'BouncyCastle.Crypto.dll' or one of its dependencies. Bad EXE format for . (Exception from HRESULT: 0x800700C1)
File name: 'BouncyCastle.Crypto.dll'
at GMAssetCompiler.Program.”()
at GMAssetCompiler.Program.(String[] )
-----------------------------------------------------------------------------
EXCEPTION FILE - C:\users\linuxmint\Temp\cde3f20fe00c44dab9f507765a8cfeaf.yyg.saencryptedreport
-----------------------------------------------------------------------------
C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.3.344/bin/GMAssetCompiler.exe exited with non-zero status (-532462766)

$ wine --version
wine-4.0.1
Try a newer (development) version of wine. The tutorial uses 4.10, the latest dev is 4.14.
I have never gotten GMS2 to work with the wine version you are using.
 

Sammi3

Member
Can't manage to get this to work on Pop OS 19.04 which is based on Ubuntu 19.04. WIne version 4.2. When installing dotnet452 I get a bunch of error messages in the terminal but the installation completes:

Code:
0049:err:richedit:ReadColorTbl malformed entry
0049:err:richedit:ReadColorTbl malformed entry
0049:err:richedit:ReadColorTbl malformed entry
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:ntdll:RtlpWaitForCriticalSection section 0x7df1bc80 "window.c: win_data_section" wait timed out in thread 0049, blocked by 0144, retrying (60 sec)
0199:err:ole:apartment_getclassobject DllGetClassObject returned error 0x80040111 for dll L"C:\\windows\\system32\\hnetcfg.dll"
0199:err:ole:CoGetClassObject no class object {2c5bc43e-3369-4c33-ab0c-be9469677af4} could be created for context 0x1
003f:err:ole:CoGetClassObject class {2b72133b-3f5b-4602-8952-803546ce3344} not registered
003f:err:ole:CoGetClassObject no class object {2b72133b-3f5b-4602-8952-803546ce3344} could be created for context 0x1
003f:err:ole:CoGetClassObject class {2b72133b-3f5b-4602-8952-803546ce3344} not registered
003f:err:ole:create_server class {2b72133b-3f5b-4602-8952-803546ce3344} not registered
003f:err:ole:CoGetClassObject no class object {2b72133b-3f5b-4602-8952-803546ce3344} could be created for context 0x15
01fa:err:ole:CoGetClassObject class {2b72133b-3f5b-4602-8952-803546ce3344} not registered
01fa:err:ole:CoGetClassObject no class object {2b72133b-3f5b-4602-8952-803546ce3344} could be created for context 0x1
01fa:err:ole:CoGetClassObject class {2b72133b-3f5b-4602-8952-803546ce3344} not registered
01fa:err:ole:create_server class {2b72133b-3f5b-4602-8952-803546ce3344} not registered
01fa:err:ole:CoGetClassObject no class object {2b72133b-3f5b-4602-8952-803546ce3344} could be created for context 0x15
0042:err:msi:ITERATE_Actions Execution halted, action L"CA_BlockOlderVersionInstall" returned 1603
0044:err:msi:ITERATE_Actions Execution halted, action L"CA_BlockOlderVersionInstall" returned 1603
011d:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
00aa:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706ba
00aa:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706ba
00aa:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706ba

That's just a snippet. If anyone wants to see the whole log, I'll update the post. Even though it finishes installing and so does GMS2, when I try to run a game I get:

Code:
elapsed time 00:00:00.1877560s for command "cmd" /c subst Y: /d started at 09/05/2019 18:40:05
Saving project to: C:\users\endeva\My Documents\GameMakerStudio2\ARPS_DEV\ARPS_DEV.yyp
"C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.2.3.344/bin/Igor.exe"  -j=8 -options="C:\users\endeva\GameMakerStudio2\GMS2TEMP\build.bff" -v -- Windows Run

Igor complete.
-----------------------------------------------------------------------------
System.IO.IOException: Invalid parameter.

   at ..(String[] )
Which makes me suspect that it's an issue with dotnet. Any ideas anyone? I installed wine and winetricks from the pop shop and it didn't have mono included. Should I Install mono?
 

Tthecreator

Your Creator!
Can't manage to get this to work on Pop OS 19.04 which is based on Ubuntu 19.04. WIne version 4.2. When installing dotnet452 I get a bunch of error messages in the terminal but the installation completes:

Code:
0049:err:richedit:ReadColorTbl malformed entry
0049:err:richedit:ReadColorTbl malformed entry
0049:err:richedit:ReadColorTbl malformed entry
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:richedit:ReadStyleSheet skipping optional destination
0049:err:ntdll:RtlpWaitForCriticalSection section 0x7df1bc80 "window.c: win_data_section" wait timed out in thread 0049, blocked by 0144, retrying (60 sec)
0199:err:ole:apartment_getclassobject DllGetClassObject returned error 0x80040111 for dll L"C:\\windows\\system32\\hnetcfg.dll"
0199:err:ole:CoGetClassObject no class object {2c5bc43e-3369-4c33-ab0c-be9469677af4} could be created for context 0x1
003f:err:ole:CoGetClassObject class {2b72133b-3f5b-4602-8952-803546ce3344} not registered
003f:err:ole:CoGetClassObject no class object {2b72133b-3f5b-4602-8952-803546ce3344} could be created for context 0x1
003f:err:ole:CoGetClassObject class {2b72133b-3f5b-4602-8952-803546ce3344} not registered
003f:err:ole:create_server class {2b72133b-3f5b-4602-8952-803546ce3344} not registered
003f:err:ole:CoGetClassObject no class object {2b72133b-3f5b-4602-8952-803546ce3344} could be created for context 0x15
01fa:err:ole:CoGetClassObject class {2b72133b-3f5b-4602-8952-803546ce3344} not registered
01fa:err:ole:CoGetClassObject no class object {2b72133b-3f5b-4602-8952-803546ce3344} could be created for context 0x1
01fa:err:ole:CoGetClassObject class {2b72133b-3f5b-4602-8952-803546ce3344} not registered
01fa:err:ole:create_server class {2b72133b-3f5b-4602-8952-803546ce3344} not registered
01fa:err:ole:CoGetClassObject no class object {2b72133b-3f5b-4602-8952-803546ce3344} could be created for context 0x15
0042:err:msi:ITERATE_Actions Execution halted, action L"CA_BlockOlderVersionInstall" returned 1603
0044:err:msi:ITERATE_Actions Execution halted, action L"CA_BlockOlderVersionInstall" returned 1603
011d:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706be
00aa:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706ba
00aa:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706ba
00aa:err:ole:ifproxy_release_public_refs IRemUnknown_RemRelease failed with error 0x800706ba

That's just a snippet. If anyone wants to see the whole log, I'll update the post. Even though it finishes installing and so does GMS2, when I try to run a game I get:

Code:
elapsed time 00:00:00.1877560s for command "cmd" /c subst Y: /d started at 09/05/2019 18:40:05
Saving project to: C:\users\endeva\My Documents\GameMakerStudio2\ARPS_DEV\ARPS_DEV.yyp
"C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.2.3.344/bin/Igor.exe"  -j=8 -options="C:\users\endeva\GameMakerStudio2\GMS2TEMP\build.bff" -v -- Windows Run

Igor complete.
-----------------------------------------------------------------------------
System.IO.IOException: Invalid parameter.

   at ..(String[] )
Which makes me suspect that it's an issue with dotnet. Any ideas anyone? I installed wine and winetricks from the pop shop and it didn't have mono included. Should I Install mono?
You need to use wine 4.10, else it won't work. Follow the install instructions from the original forum post.
 

elsi11

Member
Hello!
Epic post. Thanks for the effort!

I was just wondering whether we could also explore the possibility of fixing GM2 in Steam. Proton is basically Wine, and it installs all the necessary stuff automatically. The only problem appears to be the .NET installation which crashes. I was wondering whether one could do some fiddling with the proton settings. I know there are lots of settings and recommended tweaks on the ProtonDB website https://www.protondb.com/app/271590, and there are some on the valve github https://github.com/ValveSoftware/Proton#runtime-config-options . I know I had the .NET problem with some game, but for the life of me, I can't find a solution or tutorial right now.

I have MX Linux, which is based on Debian, so all the Ubuntu stuff, even if I somehow manage to get a 4.1 Wine (I currently have 1.8 for some reason), it will pull all the Ubuntu-specific dependencies with itself. Proton is just as good or better then Wine, so I think there may be a possibility of utilizing this.

Please guys look into this if you can. I'm sure the "100 people worldwide" would be very grateful.

Tnx!
 
Hello,

I have GameMaker running on my Ubuntu but cannot get my projects to run. Here is my output.

Windows Output
Code:
"cmd"  /c subst Y: "C:\users\jveronese\Application Data\GameMakerStudio2\Cache\GMS2CACHE"

elapsed time 00:00:00.1762970s for command "cmd" /c subst Y: "C:\users\jveronese\Application Data\GameMakerStudio2\Cache\GMS2CACHE" started at 09/24/2019 10:33:40
"cmd"  /c subst Y: /d

elapsed time 00:00:00.1933588s for command "cmd" /c subst Y: /d started at 09/24/2019 10:33:40
"cmd"  /c subst Y: "C:\users\jveronese\GameMakerStudio2\GMS2TEMP"

elapsed time 00:00:00.2224826s for command "cmd" /c subst Y: "C:\users\jveronese\GameMakerStudio2\GMS2TEMP" started at 09/24/2019 10:33:40
"cmd"  /c subst Y: /d

elapsed time 00:00:00.2124786s for command "cmd" /c subst Y: /d started at 09/24/2019 10:33:40
"cmd"  /c subst Y: "C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.3.344"

elapsed time 00:00:00.2047908s for command "cmd" /c subst Y: "C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.3.344" started at 09/24/2019 10:33:41
"cmd"  /c subst Y: /d

elapsed time 00:00:00.2134354s for command "cmd" /c subst Y: /d started at 09/24/2019 10:33:41
Saving project to: Z:\home\jveronese\GameDev\platformer\platformer\platformer.yyp
"C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.2.3.344/bin/Igor.exe"  -j=8 -options="C:\users\jveronese\GameMakerStudio2\GMS2TEMP\build.bff" -v -- Windows Run

Igor complete.
-----------------------------------------------------------------------------
System.IO.IOException: Invalid parameter.

   at ..(String[])
-----------------------------------------------------------------------------
EXCEPTION FILE - C:\users\jveronese\Temp\c8fb2b247a4f4dd48758d5352fc33a47.yyg.saencryptedreport
-----------------------------------------------------------------------------
elapsed time 00:00:00.5677588s for command "C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.2.3.344/bin/Igor.exe" -j=8 -options="C:\users\jveronese\GameMakerStudio2\GMS2TEMP\build.bff" -v -- Windows Run started at 09/24/2019 10:33:41
"cmd"  /c subst C: /d

elapsed time 00:00:00.2917730s for command "cmd" /c subst C: /d started at 09/24/2019 10:33:42
"cmd"  /c subst C: /d

elapsed time 00:00:00.2712596s for command "cmd" /c subst C: /d started at 09/24/2019 10:33:42
"cmd"  /c subst C: /d

elapsed time 00:00:00.3421048s for command "cmd" /c subst C: /d started at 09/24/2019 10:33:42
FAILED: Run Program Complete
Ubuntu Output
Code:
"cmd"  /c subst Y: "C:\users\jveronese\Application Data\GameMakerStudio2\Cache\GMS2CACHE"

elapsed time 00:00:00.1664702s for command "cmd" /c subst Y: "C:\users\jveronese\Application Data\GameMakerStudio2\Cache\GMS2CACHE" started at 09/24/2019 10:27:20
"cmd"  /c subst Y: /d

elapsed time 00:00:00.1440872s for command "cmd" /c subst Y: /d started at 09/24/2019 10:27:20
"cmd"  /c subst Y: "C:\users\jveronese\GameMakerStudio2\GMS2TEMP"

elapsed time 00:00:00.1691739s for command "cmd" /c subst Y: "C:\users\jveronese\GameMakerStudio2\GMS2TEMP" started at 09/24/2019 10:27:20
"cmd"  /c subst Y: /d

elapsed time 00:00:00.1923501s for command "cmd" /c subst Y: /d started at 09/24/2019 10:27:21
"cmd"  /c subst Y: "C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.3.344"

elapsed time 00:00:00.1660979s for command "cmd" /c subst Y: "C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.3.344" started at 09/24/2019 10:27:21
"cmd"  /c subst Y: /d

elapsed time 00:00:00.1671398s for command "cmd" /c subst Y: /d started at 09/24/2019 10:27:21
Saving project to: Z:\home\jveronese\GameDev\platformer\platformer\platformer.yyp
"C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.2.3.344/bin/Igor.exe"  -j=8 -options="C:\users\jveronese\GameMakerStudio2\GMS2TEMP\build.bff" -v -- Linux Run

Igor complete.
-----------------------------------------------------------------------------
System.IO.IOException: Invalid parameter.

   at ..(String[])
-----------------------------------------------------------------------------
EXCEPTION FILE - C:\users\jveronese\Temp\6e1cefcbd0674e5cb4fdf38a59e73dbc.yyg.saencryptedreport
-----------------------------------------------------------------------------
elapsed time 00:00:00.3694126s for command "C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.2.3.344/bin/Igor.exe" -j=8 -options="C:\users\jveronese\GameMakerStudio2\GMS2TEMP\build.bff" -v -- Linux Run started at 09/24/2019 10:27:21
"cmd"  /c subst C: /d

elapsed time 00:00:00.1442116s for command "cmd" /c subst C: /d started at 09/24/2019 10:27:21
"cmd"  /c subst C: /d

elapsed time 00:00:00.1868581s for command "cmd" /c subst C: /d started at 09/24/2019 10:27:22
"cmd"  /c subst C: /d

elapsed time 00:00:00.1769107s for command "cmd" /c subst C: /d started at 09/24/2019 10:27:22
FAILED: Run Program Complete
Using Wine Staging (4.16). I also cannot connect to my linux machine using my current IP or 127.0.0.1. If I could get either way working this would be great, but don't know where to start. Should I try an older version of wine, maybe purge and switch to the Dev channel instead of the Staging channel?
 

Tthecreator

Your Creator!
Hello,

I have GameMaker running on my Ubuntu but cannot get my projects to run. Here is my output.

Code:
"cmd"  /c subst Y: "C:\users\jveronese\Application Data\GameMakerStudio2\Cache\GMS2CACHE"

elapsed time 00:00:00.1664702s for command "cmd" /c subst Y: "C:\users\jveronese\Application Data\GameMakerStudio2\Cache\GMS2CACHE" started at 09/24/2019 10:27:20
"cmd"  /c subst Y: /d

elapsed time 00:00:00.1440872s for command "cmd" /c subst Y: /d started at 09/24/2019 10:27:20
"cmd"  /c subst Y: "C:\users\jveronese\GameMakerStudio2\GMS2TEMP"

elapsed time 00:00:00.1691739s for command "cmd" /c subst Y: "C:\users\jveronese\GameMakerStudio2\GMS2TEMP" started at 09/24/2019 10:27:20
"cmd"  /c subst Y: /d

elapsed time 00:00:00.1923501s for command "cmd" /c subst Y: /d started at 09/24/2019 10:27:21
"cmd"  /c subst Y: "C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.3.344"

elapsed time 00:00:00.1660979s for command "cmd" /c subst Y: "C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.2.3.344" started at 09/24/2019 10:27:21
"cmd"  /c subst Y: /d

elapsed time 00:00:00.1671398s for command "cmd" /c subst Y: /d started at 09/24/2019 10:27:21
Saving project to: Z:\home\jveronese\GameDev\platformer\platformer\platformer.yyp
"C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.2.3.344/bin/Igor.exe"  -j=8 -options="C:\users\jveronese\GameMakerStudio2\GMS2TEMP\build.bff" -v -- Linux Run

Igor complete.
-----------------------------------------------------------------------------
System.IO.IOException: Invalid parameter.

   at ..(String[])
-----------------------------------------------------------------------------
EXCEPTION FILE - C:\users\jveronese\Temp\6e1cefcbd0674e5cb4fdf38a59e73dbc.yyg.saencryptedreport
-----------------------------------------------------------------------------
elapsed time 00:00:00.3694126s for command "C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.2.3.344/bin/Igor.exe" -j=8 -options="C:\users\jveronese\GameMakerStudio2\GMS2TEMP\build.bff" -v -- Linux Run started at 09/24/2019 10:27:21
"cmd"  /c subst C: /d

elapsed time 00:00:00.1442116s for command "cmd" /c subst C: /d started at 09/24/2019 10:27:21
"cmd"  /c subst C: /d

elapsed time 00:00:00.1868581s for command "cmd" /c subst C: /d started at 09/24/2019 10:27:22
"cmd"  /c subst C: /d

elapsed time 00:00:00.1769107s for command "cmd" /c subst C: /d started at 09/24/2019 10:27:22
FAILED: Run Program Complete
Using Wine Staging (4.16). I also cannot connect to my linux machine using my current IP or 127.0.0.1. If I could get either way working this would be great, but don't know where to start. Should I try an older version of wine, maybe purge and switch to the Dev channel instead of the Staging channel?
The most annoying this is that I have had this problem myself, and I don't remember at all how I fixed it.
Try using the same wine version, and maybe retry setting up .NET. Make sure mono isn't installed. (Basically a generic trouble shooting answer, but I don't have anything better for you at the moment)

Hello!
Epic post. Thanks for the effort!

I was just wondering whether we could also explore the possibility of fixing GM2 in Steam. Proton is basically Wine, and it installs all the necessary stuff automatically. The only problem appears to be the .NET installation which crashes. I was wondering whether one could do some fiddling with the proton settings. I know there are lots of settings and recommended tweaks on the ProtonDB website https://www.protondb.com/app/271590, and there are some on the valve github https://github.com/ValveSoftware/Proton#runtime-config-options . I know I had the .NET problem with some game, but for the life of me, I can't find a solution or tutorial right now.

I have MX Linux, which is based on Debian, so all the Ubuntu stuff, even if I somehow manage to get a 4.1 Wine (I currently have 1.8 for some reason), it will pull all the Ubuntu-specific dependencies with itself. Proton is just as good or better then Wine, so I think there may be a possibility of utilizing this.

Please guys look into this if you can. I'm sure the "100 people worldwide" would be very grateful.

Tnx!
Cool idea, but I don't have the time to figure it out right now. Making it work would be pretty annoying. Steam will keep trying to install .NET but fail. You need to somehow install .NET while steam knows the right version of .NET is installed so steam in turn doesn't try to install .NET (and fail).
 

Yal

GMC Memer
GMC Elder
This is a cool thread, GM is one of the big reasons I've not even tried moving over to Linux on my private computer so I'll keep an eye on this~
 
Figured out a workaround (or maybe the solution). I had to run the command with WINEPREFIX and WINEARCH. I changed the .desktop that WINE creates to do a bash command instead of trying to launch it. After that everything seems to be working correctly. After some troubleshooting with the Linux community on Reddit I just made it more like
Code:
Exec=gnome-terminal -- bash -c 'WINEPREFIX="/home/user/gms2" WINEARCH="win64" wine64 "C:\Program Files\GameMaker Studio 2\GameMakerStudio.exe"'
Then pinned the favorite to my bar. It makes a terminal window while the program runs, but that doesn't really bother me since my terminal is usually open anyway.

Also, thank you so much for finding a way to get this working and posting this tutorial. This was really the only piece of software outside of AAA games that kept me on Windows. Slowly getting off completely :)
 
Last edited:

Yal

GMC Memer
GMC Elder
Try adding --geometry 1x1+9999+9999 (COLUMNS x ROWS + X + Y) to the gnome-terminal command and it should make the window small and offscreen. (NB: i'm not sure what the possible bounds are, haven't tested it)
 

Binsk

Member
@Tthecreator

After having run GMS2 through a VM for the past several months, running this through wine is heavenly. It's so fast. I had tried numerous times to get it running through WINE but never got past the IGOR issue. Thanks, man. I don't understand why it has to be launched through terminal to work? I literally wrote an sh script to launch it but I get IGOR if I launch it from the file browser but not if I run it through terminal. Never had that happen before.

By the way, does anyone know what fonts GMS uses? I tried corefonts with no luck and just ended up installing them all (which fixed the fonts), but it'd be nice to just have the ones it actually requires.

To those who don't know how, you just do it through winetricks (like everything else, really):
Code:
WINEPREFIX=~/gms2 winetricks allfonts
 

benway

Member
Hello!

First of all, a BIG thank you to Tthecreator for the tutorial. I've managed to run GMS 2 on ubuntu without any problem... but the mouse! The mouse wheel doesn't work on GMS and that makes it impossible to navigate beetween different windows. The wheel do work on other windows sofware running under gms2 prefix, so I guess there may be any issue with GMS itself... Do any of you encountered this problem?
 

Samuel Venable

Time Killer
So I made a Linux Live ISO disk image that can be burned to a DVD-R with at least 4.7 GB of capacity, and then you may boot from that DVD into a temporary Linux session. See the readme.txt spoiler for more details, but it will make porting your game to Linux super easy if you don't have a Linux machine and don't really care to ever permanently install a Linux distro on your machine.








Thank you for downloading krapOS!

Before you begin using krapOS, there are a few things to make note of.

1) krapOS is a temporary session, meaning all data on it will be wiped and reset to all of its default files and settings upon shutdown and reboot. To avoid losing your work, back it up on removable media or upload the related files to an online backup service such as Google Drive or Dropbox. krapOS does not install anything on your computer, it does not modify any files on your computer, nor does it leave anything behind on your computer. It is 100% non-destructive to your computer and its data.

2) krapOS is based on KDE neon 5.16 User Edition, which is based on Ubuntu 18.04 LTS Bionic Beaver. As such, software you download must be compatible with this version of Ubuntu which krapOS is based on. (GameMaker Studio 2 games 'just work').

3) Microsoft Windows software will generally work out-of-the-box thanks to the software known as Wine. You may use Wine to run Windows programs with minimal hassle. Not all Windows software are compatible with Wine, so you don't technically know whether a specific application will work without testing it first. Try it! GameMaker Studio 2 can even be run under Wine. Check out this post: https://forum.yoyogames.com/index.php?threads/run-the-gms2-ide-on-ubuntu-19-04.64330/#post-405199

4) After krapOS has finished booting up, you will notice a shortcut icon on the desktop that is labeled "Install krapOS". DO NOT open this file! I created this shortcut for testing purposes only, in attempt to make an option for the user to permanently install krapOS on their system, if they wanted to. Sadly, it does not work; it is guaranteed to crash in the middle of installation, after it has already created a partition for krapOS on your system, therefore greatly limiting the space on your filesystem. As long as you avoid running this installer entirely, your computer will be fine.

<krapOS Login>
rootuser: owner
password: password

Have fun!
- Samuel Venable

[Download krapOS]

To install GameMaker Studio 2 on krapOS, you may skip all the dependency installation steps in the OP, i.e., start here instead:
We need to setup a wine prefix in q4wine:
  • Create a new gms2 folder in your home folder.
  • Open q4wine.
  • Run trough the q4wine setup process. (you can mostly click next)
  • Create a new prefix under 'prefixes'.
  • Name the prefix 'gms2'
  • Set the prefixpath to the previously created gms2 folder.
  • Set the arch to 64 bit.
  • Save the prefix

Run the following command to initiate the prefix: (We're also going to uninstall mono)
(if you chose a different wine prefix folder, don't forget to change it in these commands)
run uninstaller and init the prefix:
WINEPREFIX=~/gms2 WINEARCH="win64" wine64 uninstaller

If you are asked to install wine mono click 'install'. Do the same for gecko.
A wine GUI should open now. Select Mono and click uninstall. Both mono entries should have been deleted.​


We need to install .NET now. use the following commands:
Install .NET 4.5.2:
WINEPREFIX=~/gms2/ winetricks dotnet452

Run trough the installers.
If you are given a warning about the windows update server, just continue.
You don't have to restart your computer.​

Install gms2:
Now you want to download the gms2 installer .exe file.
Open it with q4wine (right click the file and select 'open with other application' if q4wine is not the default)
In q4wine select the gms2 prefix.

Install gms2.
If you see a "Turn Windows features on or off" message click okay.
If a .NET 3.5 installer opens, cancel the installation.
If a .NET 2.5.4 repair window opens, close it by going into Q4Wine into the processing tab and terminating "Setup.exe"​

GMS2 IDE should now open automatically. (or it may not) If it does, close it.

If you want to start it manually execute the following command:

WINEPREFIX=~/gms2 WINEARCH="win64" wine64 "C:\Program Files\GameMaker Studio 2\GameMakerStudio.exe"​
(thanks to @tijeseffff )

In the IDE, login to your account and wait for the runtime to install.
Start a new test project, make a room, an object and add a hello world message.

Click run. Your game should now start.

Compile a native linux executable:
To compile for linux we are going to follow this guide:

https://help.yoyogames.com/hc/en-us/articles/235186168
For your ip, you can fill in localhost or '127.0.0.1'

If that doesn't work you can try:
https://www.yoyogames.com/blog/107/how-to-compile-to-linux-ubuntu

There will be an extensive list of packages to install. However, not all of these packages are available anymore. This can be fixed by using:
sudo apt-get install libssl1.1
sudo apt-get install libbz2​
and then 'hacking' libssl to look like libssl1.0.0:

sudo cp /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0
sudo cp /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/libssl.so.1.0.0
sudo cp /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0
sudo cp /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.0.0​
Now follow the guide setting up your host to accept ssh connections.

Eventually you should see a native Linux app running on your pc.

Make a launcher shortcut
Download and build AppEditor:

sudo apt install valac libgranite-dev meson
cd ~/
git clone https://github.com/donadigo/appeditor.git
cd appeditor

Build AppEditor:
meson build
cd build
meson configure -Dprefix=/usr
ninja
sudo ninja install

Create startup script:
cd ~/
nano launchGMS2.sh

Insert the following text:
WINEPREFIX="/home/YOUR_USER_NAME_HERE/gms2" WINEARCH="win64" wine64 "C:\Program Files\GameMaker Studio 2\GameMakerStudio.exe"

Press CNTRL+X to close nano. Type 'Y' to save.

Launch AppEditor:
cd ~/appeditor/build
com.github.donadigo.appeditor

GMS2/wine itself should have already made a launcher icon. We are going to edit that.
Find it and:
- set 'Show in Launcher' to true.
- set the 'Category' to Programming
- set 'Command Line' to /home/YOUR_USER_NAME_HERE/launchGMS2.sh
- enable 'Launch in Terminal'​
Now save and try the launch entry. (close any open IDE's beforehand)​

Compile for android:
Download latest jdk8 for Windows x64, and the latest jdk8 for Linux (.tar.gz):

If you don't have an account you can make one with a temporary email service: https://temp-mail.org/en/view/3586d8b76358d93eabd0f0d53207bfc4

note: I used jdk-8u211.

Launch jdk-8u***-windows-x64.exe with q4wine in gms2 prefix.
Some UI elements of the install will be broken.
Check the box and press the left button.
Click Next
On the next broken screen press the left button again
If the same message keeps popping up, click the right button.
Go to your GMS2 android platform settings and set the JDK to: C:\Program Files\Java\jdk1.8.0_XXX (your directory may be different)
(These steps are kind of vague, they may need to be written down more clearly. These were my notes and I didn't have enough time to walk trough the process again on my tutorial VM.)

Download android studio for windows 64 bit:
Run the installer in the correct prefix using q4wine.

After the installation execute:
WINEPREFIX=~/gms2 WINEARCH="win64" wine64 "C:\Program Files\Android\Android Studio\bin\studio64.exe"​
Don't send usage statistics.

Do a custom install.
Set SDK path to C:\Android\SDK
Don't install Intel HAXM
Follow trough with the install. Android studio will start to download components.

When you see the Android Studio welcome screen, click configure and then 'SDK Manager'
Install the correct SDK platforms and the SDK tools. Use this tutorial as reference:
Again, make sure not to install anything to do with HAXM.

Install the components and accept all license agreements.

Install android studio on your host machine with the exact same settings. On Ubuntu you can install android studio trough the Software center. When setting up android studio use linux kernel hardware acceleration module instead of HAXM. (This should be done by default)

Open a terminal and do:
Cd ~/Android/Sdk/platform-tools/
./adb --version​
This should yield:

Android Debug Bridge version 1.0.41
Version 29.0.1-5644136
Installed as /home/YOUR_USERNAME/Android/Sdk/platform-tools/adb
Open a second terminal and do:

WINEPREFIX=~/gms2 WINEARCH="win64" wine64 cmd​
This will open a windows cmd prompt. Here you can execute:

C:
cd C:\Android\SDK\platform-tools
adb --version​
You should see something among the lines of:

Android Debug Bridge version 1.0.41
Version 29.0.1-5644136
Installed as C:\Android\SDK\platform-tools\adb.exe
It is okay if the version numbers between your setup and my setup differ, as long as the Windows and Linux Android Debug Bridge versions are the same.


Luckily for us the ADB uses a separated client interface connected do a daemon server. We can actually run the server on Linux and the client on Windows.
To do this, on your host execute: (In the same folder as last time)
./adb start-server
adb devices​
If you had your phone connected to your computer, you should see it identified by adb. If not, connect your phone or troubleshoot your usb connection.


On cmd execute:
adb devices​
Your adb devices should show up in Windows.


In GMS, go to the android device editor (open the targets menu, click Android and click on the pencil under devices). Click 'Detect Device'. Your device should show up.

Go back to your android platform settings and generate (or import) a keystore file. This keystore file has to be in the root of your windows system. For example: C:\testProject.keystore. Keeping the keystore file in the root directory makes our life easier down the road and prevents our filename from having any spaces.

Find out what the API level of your phone is and select that in GMS.
Select the processor architecture of your phone. (I had to enable ARM64)

Extract your java-8u***-linux-x64.tar.gz file into your home directory.
Edit your /etc/profile file to set your java home correctly:
sudo nano /etc/profile​
Add the following four lines:

JAVA_HOME=/home/thomas/jdk1.8.0_211
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH​
Let Ubuntu know where our java is:

sudo update-alternatives --install "/usr/bin/java" "java" "<Directory where JAVA has been extracted>/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "<Directory where JAVA has been extracted>/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "<Directory where JAVA has been extracted>/bin/javaws" 1
sudo update-alternatives --set java <Directory where JAVA has been extracted>/bin/java
sudo update-alternatives --set javac <Directory where JAVA has been extracted>/bin/javac
sudo update-alternatives --set javaws <Directory where JAVA has been extracted>/bin/javaws
java -version should now return:

java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

If you see something along the lines of OpenJDK 11, your gradle will not work.

install gradle:
sudo apt install gradle
Create a new android build folder somewhere on your computer.

Add a copy of your keystore to this folder and call it 'project.keystore'.
Add the following python script called launchGMS2AndroidBuild.py:
#launchGMS2AndroidBuild.py
#Author TTheCreator https://forum.yoyogames.com/index.php?members/tthecreator.233/
#This script looks for changes in GMS's cached android build output and will compile and run your android app when GM is done with it's business.

import sys
import time
import logging
import re
import shutil
import os
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
import distutils.dir_util

windows_gms2CachePath = "/home/YOUR_USERNAME/gms2/drive_c/users/YOUR_USERNAME/Application Data/GameMakerStudio2/Cache/GMS2CACHE/testProjec_BCCB0FB7_367ADB89"

host_gradleVersion = "2.3.3"
host_sdkDir = "/home/thomas/Android/Sdk/"#Where your android sdk is located
host_keyStore = os.getcwd() + "project.keystore" #The location of your keyfile on your host machine
android_packageName = "com.company.game"#The packagename of your game
host_cacheFile = "gms2cache"#The local folder on your host that is used to hold and manipulate the gms2 android compile cache
last_changed_build_file_pattern = re.compile(".*build.sample") #What file game maker edits last when compiling for android.

def cleanUp():
print("cleaning up...")
if(os.path.isdir(host_cacheFile)):
shutil.rmtree(host_cacheFile)

def copyCacheToHost():
print("copying cache to host")
distutils.dir_util._path_created = {}
distutils.dir_util.copy_tree(windows_gms2CachePath, host_cacheFile)

def changeProjectFileForHostCompatibility():
setHostGradleVersion()
setSdkSrcDir()
setKeystoreFile()

def setHostGradleVersion():
#make sure we are using the correct gradleVersion
print("Setting gradle version to:"+host_gradleVersion)
with open (host_cacheFile+"/Android/default/build.gradle", 'r') as f:
content = f.read()
content_new = re.sub("gradle:.*'", "gradle:"+host_gradleVersion+"'", content)
with open (host_cacheFile+"/Android/default/build.gradle", 'w') as f:
f.write(content_new)

def setKeystoreFile():
#make sure we are using the correct gradleVersion
print("Setting keystore file to:"+host_keyStore)
with open (host_cacheFile+"/Android/default/"+android_packageName+"/build.gradle", 'r') as f:
content = f.read()
content_new = re.sub("C:/.*.keystore", host_keyStore, content)
with open (host_cacheFile+"/Android/default/"+android_packageName+"/build.gradle", 'w') as f:
f.write(content_new)

def setSdkSrcDir():
print("Setting sdk source directory to:"+host_sdkDir)
with open (host_cacheFile+"/Android/default/local.properties", 'w') as f:
f.write("sdk.dir="+host_sdkDir)

def gradleCompile():
print("Using Gradle to compile in:"+host_cacheFile+"/Android/default")
os.system("cd "+host_cacheFile+"/Android/default && gradle installDebug && cd ../../../")

def runOnDevice():
print("Using adb to run the app on a device")
os.system(host_sdkDir+"platform-tools/adb shell monkey -p "+android_packageName+" 1")

class GMSEventHandler(LoggingEventHandler):
def on_any_event(self, event):
print("HI!")
#print(event)
print(event.src_path)
if (last_changed_build_file_pattern.match(event.src_path)):
print("build sample file has been edited")
copyCacheToHost()
changeProjectFileForHostCompatibility()
gradleCompile()
runOnDevice()
cleanUp()

if __name__ == "__main__":
print("Started looking for changes to: "+windows_gms2CachePath)
cleanUp()
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
event_handler = GMSEventHandler()
observer = Observer()
observer.schedule(event_handler, windows_gms2CachePath, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
cleanUp()​


You will need to edit this python file to make sure it runs on your machine. On the top of the files there are a bunch of settings you can change. This script only supports full system paths. '~/' is invalid and will not work. That's why you may need to inject your username into the script.

To start the script open a terminal in the folder you created and execute:
python3 launchGMS2AndroidBuild.py
You might need to install the watchdog python module:

pip3 install watchdog
If you don't have python installed:

sudo apt install python3
sudo apt install python3-pip​
To stop the script press CNTRL+Z


From this point on my python script should take care of everything for you. Once it detects that build.sample has been updated, it will copy over the GMS2 android compile cache, change some settings and finally run gradle. Gradle will install the app for you on your phone after which the python script will launch it.​
Known problems:
Igor.exe invalid parameter:

Make sure to launch GMS2 from the right prefix and from the terminal.
Use a command like this:
Code:
Exec=gnome-terminal -- bash -c 'WINEPREFIX="/home/user/gms2" WINEARCH="win64" wine64 "C:\Program Files\GameMaker Studio 2\GameMakerStudio.exe"'
Try adding --geometry 1x1+9999+9999 (COLUMNS x ROWS + X + Y) to the gnome-terminal command and it should make the window small and offscreen.

Thanks to @Spectre216 and @Yal for this issue!​

Font problems:
Install fonts in wine:
Code:
WINEPREFIX=~/gms2 winetricks allfonts
Thanks to @Binsk for this issue!​

GLX Errors:
If you see any of the following in your terminal while running GMS:

- wine X Error of failed request: BadValue
- Any error saying something with GLX​
Do the following:

- restart your pc
- upgrade or reinstall your video drivers.​

'This program encountered an error':
In some cases wine might throw an error saying the program cannot be booted. When this happens is somewhat random and you might need to try launching GMS2 a few times before it finally works.​

Wine screws up audio:
In some specific configurations starting a wine program may cause your sound to become higher or lower. To fix this execute:

pulseaudio --kill​

Running gradle gives you a license error:
open android studio on your host. Open the sdk manager and install the corresponding package. You may need to check 'Show Package Details'.

Make sure you can compile an app (just an empty test project) in android studio on your host using the same build tools version and sdk version. You can change this in file>project structure

Go into your android sdk directory on your host:
cd ~/Android/Sdk/tools/bin​
and:

./sdkmanager --licenses
say 'y' to all​

adb server version (41) doesn't match this client (39); killing...
This error occurs when you are using multiple adb versions. Make sure the adb version of your host machine is the same as on your windows machine.

Make sure you have your adb daemon running on your Linux host.

On your host, make sure you are running the program adb in the platform-tools folder.
Cd into this folder and use './adb'. The ./ is important.

Make sure the package 'android-tools-adb' is NOT installed. Uninstall it with:
sudo apt purge android-tools-adb​


Sources:

http://ubuntuhandbook.org/index.php/2019/05/nstall-wine-4-8-ubuntu-19-04-18-04/
https://wiki.winehq.org/Mono
https://www.yoyogames.com/blog/107/how-to-compile-to-linux-ubuntu
https://forum.winehq.org/viewtopic.php?f=8&t=14285
https://linuxconfig.org/how-to-create-desktop-shortcut-launcher-on-ubuntu-18-10-cosmic-cuttlefish-linux
https://www.omgubuntu.co.uk/2018/02/app-menu-editor-for-ubuntu-appeditor
https://github.com/donadigo/appeditor
https://stackoverflow.com/questions/44094037/android-studio-failed-to-notify-project-evaluation-listener-error
https://developer.android.com/studio/build/building-cmdline
https://stackoverflow.com/questions/4567904/how-to-start-an-application-using-android-adb-tools
https://stackoverflow.com/questions/39760172/you-have-not-accepted-the-license-agreements-of-the-following-sdk-components
https://github.com/oblador/react-native-vector-icons/issues/527
https://www.guru99.com/how-to-install-java-on-ubuntu.html
http://tipsonubuntu.com/2016/07/31/install-oracle-java-8-9-ubuntu-16-04-linux-mint-18/
https://askubuntu.com/questions/620888/installing-jdk-with-wine
https://stackoverflow.com/questions/37691070/cannot-install-jdk-8-on-wine-ubuntu
https://help.yoyogames.com/hc/en-us/articles/216753498-GameMaker-Studio-Android-SDK-and-NDK-setup-


special thanks to:

The winehq team (For not making an emulator)
@tijeseffff (For fixing a problem where the IDE was unable to start Igor.exe)
@XSonicRU (For suggesting testing this with Android)
@canoi (For testing Linux Mint 19.1)
@Spectre216 (For fixing a problem where the IDE was unable to start Igor.exe)
@Yal (For hiding terminals)
@Binsk (For proposing a solution to some font issues)
@Samuel Venable (For providing an easy to install distro with all required dependencies)
 
Last edited:

Yal

GMC Memer
GMC Elder
Even if the Live DVD plan falls flat, just having all dependencies in one place for an installation DVD (to set up a dev machine from scratch) would be a good start for people that don't feel comfortable enough around *nix to fix all the dependencies from scratch.

Considering how Elsi's "pls port GMS to Linux" thread crashed and burned I'm not quite sure how keen Yoyo will be to jump on this, it was stated several times that the main reason it's not ported isn't the original porting act, but because support is too much work because of distro differences.
 

Samuel Venable

Time Killer
I left out a few dependencies in the current version. I'm uploading a new one right now and will edit this post when it is done uploading.

@Yal that's a good idea. The only problem with that is it would require installation. This you could technically put on a flash drive and run it at a library or a friends house if you wanted to, without disrupting the computer or it's files. But I might do that as another option for those who want it.

Edit: New version with the previously missing dependencies uploaded.
 
Last edited:

Yal

GMC Memer
GMC Elder
As for the temporary nature... saving project files and stuff can be done by just mounting your existing HDDs, right? (Or more safely, using a removable drive). Could be worth having a note about that so people don't accidentally lose all their work if they forgot to save the project properly (which is probably going to sting more than losing preferences).
 

Samuel Venable

Time Killer
Yes. I just added that to my post. If yoyo is ok with it, and we'll be good to go, I can't be thankful enough for @Tthecreator's tutorial here or I would have no way to do this even potentially.
 

Tthecreator

Your Creator!
Hey...




Login password is "password"

So I wanted to make testing, porting, and playing GMS games for Windows and Linux as easy as possible for users who either do not have Windows or Linux. So I whipped up a Linux Live ISO file which includes all of GameMaker's dependencies for Linux development so that for anyone who has the Desktop License and more than one computer they have access to, they could burn my ISO file to a DVD with (at least) 4.7 GB of capacity, then they can reboot their computer with the DVD put in beforehand, It will automatically run the Ubuntu-based Linux distro I named "krapOS" which is basically KDE neon with extra packages preinstalled for using GameMaker's Ubuntu export, and configured to look similar to macOS in its interface (which is why I called it krapOS with the "k" in "krap" standing for "KDE neon").

Long story short, zero installation needed, and zero files will be deleted on your system, and when you are done and remove the DVD after shutdown, no files will be left behind, completely as if you never put in the DVD to begin with. The only downside is that nothing is actually saved, it's all read-only, so any files that get generated during your boot session will be removed and all defaults will be restored when you restart your computer and boot into krapOS again. So you'll need to move your exported Windows or Linux game to a flash drive or upload it somewhere so it won't get deleted. Again, this is a huge convenience because everything is already installed for you, so no terminal input is required to get started, and there is no need for installing anything.

Very easy and straight forward.

GameMaker cannot be redistributed without YoYoGames prior consent, and that is only if they happen to agree to it and say "yes". So my question is, I would like to make a new version of krapOS that has WINE and GMS2 preinstalled with everything set up beforehand, so that no one will even need to follow this tutorial if they are OK with the temporary boot session aspect of this method. Everything will be done for them and ready for testing and porting their GM games out of the box, making all of this easier than ever before. @Nocturne you mind getting in touch mith the YoYoGames staff and see what they think about this?

In the meantime, for people who want to use krapOS in it's current state, you may download it here: https://drive.google.com/drive/folders/1MhoaApnLjrBJlDHlQKJjkqfE_BuSeywb?usp=sharing

If you have more than one computer you may follow the steps from the YoYo knowledge base for setting up GameMaker for Ubuntu: https://help.yoyogames.com/hc/en-us/articles/235186168-Setting-Up-For-Ubuntu

You can skip all the steps that are in regards to what you need to do on the Ubuntu side, (other than getting the Host Name step, which is still needed).

I hope this isn't incredibly off-topic, but if YoYoGames approves of this idea, I would like to ask @Tthecreator if he would be willing to add a link in the OP that autoscrolls to this post so people can use this alternatively.

In short - I want to see more GM games on Linux. So it would be fantastic if this would help motivate people to port their game, I am literally spoon feeding everything that needs to be done.

(GameMaker will be logged out, I'm not intending to give away a paid license for free; just permission to redistribute the software itself. People will need to login with their own license if I end up getting permission to do this).
Wow! thank you, this is amazing. I hope you get "the green card" from YoYoGames. I've added a paragraph to the original post. Let me know if you think it is okay.

Hello!

First of all, a BIG thank you to Tthecreator for the tutorial. I've managed to run GMS 2 on ubuntu without any problem... but the mouse! The mouse wheel doesn't work on GMS and that makes it impossible to navigate beetween different windows. The wheel do work on other windows sofware running under gms2 prefix, so I guess there may be any issue with GMS itself... Do any of you encountered this problem?
I'm not too sure why it doesn't work. I'm currently using windows again for a GMS1 project so if someone else could test it then that would be nice.
 

Samuel Venable

Time Killer
I'm not too sure why it doesn't work. I'm currently using windows again for a GMS1 project so if someone else could test it then that would be nice.
What doesn't currently work? The tutorial or my ISO? I'm uploading a new version right now, which should fix some missing dependencies I forgot about. It will be available at the same link when it is done. It's not guaranteed to work on some computers - I edited my initial post about this and I mentioned that at the very bottom.

Edit: thanks for the mention, that's perfect!

Edit2: Ah, I see, you were talking to someone else there. My bad.

Edit3: New version with the previously missing dependencies uploaded.
 
Last edited:
Top