A native extension for GameMaker (GMS1, GMS2, GMS2.3+) that implements various Steam API features not covered by the built-in functions - most importantly, P2P networking, lobbies, and matchmaking.
- Set up GameMaker for Steamworks SDK development (GMS1, GMS2).
- Enable Steamworks support for desired platform(s) in Global Game Settings, "Steam" tab. Don't forget to set the game ID.
- Import the "Steamworks.gml" extension (from ./Steamworks.gmx/extensions) to your desired project.
- Have the game call
steam_gml_updateonce per step (required for steam events to dispatch).
If all is well, upon running the game you'll see
Steamworks.gml initialized successfully. in the CompileForm.
Steamworks.gml failed to link with Steam API. means that either the Steam client is not running, or you have specified an incorrect App ID.
Steamworks.gml binary is not loaded. means that the DLL/DyLib/SO could not be loaded, usually due to the native extension file missing or being otherwise inaccessible.
Note: If you are grabbing the sample project straight from this repository, you will need to compile it first using Visual Studio (Windows) or via included .sh scripts (Mac, Linux). Sample project page has pre-compiled binaries.
Download or clone the repository.
Create a "Steamworks" directory and place Steamworks SDK there.
You must pick a Steamworks version that matches the recommended version for your version of GameMaker (e.g. 1.42 for GMS2.3 - see helpdesk).
Readme.txt should be located at
Steamworks/Readme.txt as result.
Windows: Open the included Visual Studio solution and order it to make a x86 build.
Linux: Run build_linux_gms#.sh. You'll need cpp:i386, gcc:i386, and g++:i386 installed.
Mac OSX: Run build_osx_gms#.sh. You'll need XCode command line tools installed.
The extension is automatically updated to reflect the functions/macros from the source code as a post-build step in the Visual Studio project (via gmxgen).
GmxGen.exe (build it yourself or get one from Downloads) into
Steamworks.gml directory or add it to your PATH.
Author: Vadim "YellowAfterlife" Dyachenko
License: MIT https://opensource.org/licenses/mit-license.php
- YoYo Games, for making and continuously improving GameMaker: Studio.
- Russell and Peter of YoYo Games in particular, for answering my questions on native extensions.
- Alex Fernandez, for helping build the OSX version of the extension.
- /id/volnes, for answering my various Linux-related questions.
- Riley Labrecque, for being a source of inspiration to making this kind of project open-source (see Steamworks.NET).