Repository for GameMaker's Epic Online Services Extension
This repository was created with the intent of presenting users with the latest version available of the extension (even previous to marketplace updates) and also provide a way for the community to contribute with bug fixes and feature implementation.
This extension works on Windows, macOS, Linux, Android and iOS.
Note
On Android only the arm64-v8a and x86_64 ABIs are supported. Epic does not ship a 32-bit ARM build of the EOS SDK, so armeabi-v7a is not available - remove it from your project's Android target ABIs, or the game will build and then fail to load the native library at runtime.
Important
Version 4.0.0 is a breaking change. The extension has been fully rewritten, with the platform
bindings generated from a single GMIDL spec and every asynchronous call now taking a GML callback
function directly, replacing the async_load-based Social Async Events. Function signatures
differ from 3.x, so moving an existing project across is a migration rather than a drop-in
upgrade. Projects that need the old API should stay on the final 3.0.1 release. Check
the documentation for the current API.
The API surface is declared in a single GMIDL spec and the platform bindings are generated from it, so the layout is by role rather than by IDE project:
- API SPEC:
source/EOS_gml/extensions/EpicOnlineServices/source/spec.gmidl - NATIVE C++ (Windows/macOS/Linux, and the shared implementation):
source/EOS_gml/extensions/EpicOnlineServices/source/src/native/ - iOS:
source/EOS_gml/extensions/EpicOnlineServices/source/src/ios/ - ANDROID (Java):
source/EOS_gml/extensions/EpicOnlineServices/AndroidSource/Java/ - GENERATED BINDINGS:
source/EOS_gml/extensions/EpicOnlineServices/source/code_gen/(never edit by hand - regenerate from the spec) - BUILD PRESETS:
source/EOS_gml/extensions/EpicOnlineServices/source/CMakePresets.json
After compilation the exported dll/dylib file is automatically copied into the extension folder inside the included GameMaker project folder.
Version 4.0.0 is a full rewrite. The platform bindings are generated from a single GMIDL spec, the extension builds for five platforms rather than two, and it adds the modules the previous release was missing, bringing the wrapper to 24 EOS interfaces:
- P2P API
- Sessions API
- Lobbies API
- ECom API
- RTC API
- Custom Invites API
- Reports API
- Logging API
The public GML API changed with the rewrite - function names and signatures differ from 3.x - so moving an existing project across is a migration rather than a drop-in upgrade. Projects that need the older API should stay on the final 3.x release.
In order to compile you are required to download the Epic Online Services SDK 1.19.1.2 and place it inside source/EOS_sdk/. The multi-platform bundle is expected: C/ for desktop, plus Android/ and iOS/.
Important
Latest version 4.0.0 is a major release:
- The GML API changed - read the upgrade note above before moving a 3.x project across
- You will need to make sure the SDK is updated to version 1.19.1.2
- Android builds must target arm64-v8a and/or x86_64 only (see the note above)
- Check the documentation
The online documentation is regularly updated to ensure it contains the most current information. For those who prefer a different format, we also offer a HTML version. This HTML is directly converted from the GitHub Wiki content, ensuring consistency, although it may follow slightly behind in updates.
We encourage users to refer primarily to the GitHub Wiki for the latest information and updates. The HTML version, included with the extension and within the demo project's data files, serves as a secondary, static reference.
Additionally, if you're contributing new features through PR (Pull Requests), we kindly ask that you also provide accompanying documentation for these features, to maintain the comprehensiveness and usefulness of our resources.