OpenGMK

OpenGMK is a modern rewrite of the proprietary GameMaker Classic engines, providing a comprehensive sourceport of the runner, a decompiler, a tool-assisted speedrunning (TASing) framework, and libraries for working with game data. This ambitious project is actively developed, with new features and updates being added regularly.

Project Overview

OpenGMK aims to faithfully recreate and enhance the GameMaker Classic experience. The project includes:

  • GM8Emulator: A powerful emulator for running GameMaker Classic games.
  • GM8Decompiler: A fast and reliable decompiler for extracting game assets.
  • TASing Framework: Tools for recording and replaying tool-assisted speedruns.

Building the Project

To build OpenGMK, follow these steps:

  1. Clone the repository with submodules:

    git clone --recurse-submodules https://github.com/OpenGMK/OpenGMK.git
  2. Initialize submodules if you cloned without the --recurse-submodules flag:

    git submodule update --init --recursive
  3. Ensure you have a compatible Rust toolchain (minimum version 1.59). Install Rust via rustup or a package manager.

  4. Build the project in release mode:

    cd path/to/repo-folder
    cargo build --release

Windows Specifics

For 64-bit Windows, if you need to run games requiring 32-bit DLLs, you'll need to build the WoW64 server:

  1. Add the 32-bit target:

    rustup target add i686-pc-windows-msvc
  2. Build the WoW64 server:

    cd path/to/repo-folder/gm8emulator-wow64
    cargo build --target=i686-pc-windows-msvc --release

Running Games

To run a game, simply pass the path to the game's executable:

gm8emulator path/to/game.exe

Recording and Replaying TASes

To record a TAS, pass a project name with the -n option:

gm8emulator path/to/game.exe -n project-name

Export and recreate save files using:

gm8emulator path/to/game.exe -l -f path/to/save#.gmtas -o path/to/save#.bin

Key Features

  • Complete Emulation: Accurate emulation of GameMaker Classic games, with plans to support more features.
  • Decompiler: Fast extraction of game assets for analysis and modification.
  • TASing Framework: Record and replay TAS runs, with support for savestates and exporting input data.
  • Cross-Platform: Support for various platforms, with specific builds for Windows and plans for Linux.

About GameMaker Classic

GameMaker is a game development engine originally created by Mark Overmars and later developed by YoYo Games. GameMaker 8 (GM8) was the last of the numbered releases before the introduction of GameMaker: Studio. Despite the newer versions, many developers and enthusiasts still prefer the classic versions for their simplicity and unique features.

Project History

OpenGMK started as GM8Emulator, a project aimed at accurately playing GameMaker Classic games. The development included writing a decompiler to extract assets, leading to the creation of GM8Decompiler. Eventually, these tools and more were unified under the OpenGMK project, reflecting its broader scope and goals.

Additional Credits

  • DatZach: Creator of the original free and open-source decompiler.
  • Jabberwock-RU: Designer of the project icon and logos.

OpenGMK is licensed under the GNU GPL v2, and is not affiliated with GameMakerâ„¢ or YoYo Games Ltd.

Explore OpenGMK and contribute to the development of this modern, open-source reimagining of a classic game development platform.

Similar Projects