Shield Cat

Shield Cat

Not enough ratings
How I Got My Gamemaker Game To Launch Through Steam On Linux
By Roxanne
This is a guide describing how I got the Linux version of Shield Cat to work on Steam, and includes instructions that should work for any Gamemaker game. Note that this guide was written for Gamemaker Studio 2.3.1, but should be able to be adapted to older versions.

Note: This guide is intended for game developers.
Note about Gamemaker 2022.3 with the Steamworks Extension
At the time of writing, it seems that the newest version of Gamemaker fixes the dynamic library linking issues of the runner, making this guide obsolete. If you're using older versions, you'll definitely need the guide still. However, if you're using Gamemaker 2022.3 or above, you should just be able to configure Steamworks to run the game directly without the inclusion of additional libraries.
The Game Wont Launch?
If you are reading this guide, chances are you've put your Gamemaker game on Steam, pressed the Play button to see it go, just to find out that it just doesn't go. It seems to be a common issue, so I'm writing this guide to help other people to get their own games launching on Steam.
Setting Up for Linux Export
Most likely you've already done this, but it doesn't hurt to double check. This page[] has the details for setting up Linux export in Gamemaker Studio 2, and it's a good idea to make sure you have all of the packages mentioned on that page.
Setting Up The Game Files
Here's the important part of the guide: The part that allows you to run the game.

What You'll Need
  • libcurl4, which can be downloaded here[]
  • libssl1 and libcrypto1, which can be downloaded here[]

Unzip the downloaded files and take a look inside for the following files:

Note: The download above actually comes with, with a symbolic link to You can either copy both files, or just copy and rename it.

Putting The Libraries In The Right Spot

In your Gamemaker game project directory, navigate to the datafiles folder. If you're not sure, click the hamburger menu in the corner here to open up the Included Files window, and then click "Open in Explorer"

Inside the datafiles folder, create a new folder called "lib"

This is how it looks in my project, but I have a bunch of unrelated files so you can ignore those.

Copy the files mentioned above into this folder. It should now look like this:
Setting Up The Initialization Script
Back in the datafiles folder, create a new file called

The Code
In this file, type in the following:
#!/bin/bash LD_LIBRARY_PATH=./assets/lib:$LD_LIBRARY_PATH ./Shield_Cat

IMPORTANT: Change Shield_Cat to whatever the name of your Linux executable is.

What this file does is it tells Linux to use the library files we put in the lib folder, and then run the game itself using these files.

Note: The library path above says ./assets/lib. This is intentional, as the file structure for included files is different on Linux.

IMPORTANT: The file MUST be formatted with LF. If it uses CRLF it wont work! Using a code editor like Visual Studio Code, you can check on the bottom to see what formatting its using. If you're not sure, it's best to create the .sh file in Linux and then copy it over to the machine you're using Gamemaker on.
Setting Up The Launch Options
In the Steamworks Launch Options for your game, configure a new Launch Option that looks like this:

This tells Steam to run our script instead of the game itself, which will allow everything to work. Publish the changes and then restart your steam client on your computer to see the changes.
Verifying The Build
Build your game to a ZIP file as you normally would. When looking inside the ZIP file, you should see the files you added in the assets folder

Upload the game to Steam as you normally would, and then publish and restart the Steam client on your computer to see the changes. Verify that the game updates and the new files show up when you install the game.
If you've done everything right, your game should now run from the Steam launcher in Linux!

If it doesn't work, make sure that you've placed all of the files in the right spot, and that Steamworks is set up to run the script instead of the game itself.

Keeping It Up To Date
Because you've placed all the relevant files inside the datafiles folder for the game itself, every time you build the game the script and libraries will automatically be included, not just for Linux, but for all target platforms. If you're also developing for Windows or another platform, please see this page about Included Files[] and how to specify what platform the files are included on.

Good luck!!
< >
flibitijibibo Jan 14 @ 8:49am 
This guide may need to be updated for newer releases - they have since updated their build process in a way that the assets/lib/ folder needs to be updated as well: