GM2Godot converts GameMaker (2024.14.2) projects into Godot (4.6.2) projects. It includes a GUI, a headless CLI, a growing GMS2+ GML-to-GDScript transpiler, generated Godot runtime helpers, deterministic asset registries, diagnostics, compatibility reports, and fixture-backed regression tests.
- Modern Dark Theme UI: Clean project selection, settings, progress, and logs
- Headless CLI: Convert, analyze, validate, and generate compatibility reports for CI workflows
- GML Transpilation: Converts supported GMS2+ expressions, scripts, object events, room creation code, macros, extension stubs, and source-map metadata into GDScript
- Generated Runtime: Emits
gm2godot/gml_runtime.gd, runtime managers, asset registries, room/runtime metadata, and compatibility helpers for supported GameMaker APIs - Asset Conversion: Converts GameMaker project resources to Godot format:
- Sprites, collision masks, animation metadata, and generated scenes
- Sound effects, audio groups, bus layouts, and runtime playback metadata
- Fonts, notes, included files, scripts, objects, rooms, tilesets, shaders, paths, timelines, sequences, particles, extensions, texture groups, and options metadata where supported
- Project settings, game icons, platform options, and validation reports
- Platform Support: Converts settings for multiple platforms:
- Windows
- macOS
- Linux
- Diagnostics and Reports: Writes structured warnings/errors, compatibility Markdown/JSON, conversion manifests, architecture-policy reports, and optional headless Godot validation reports
- Customizable Conversion: Choose conversion groups or specific converter keys
- Compatibility Roadmap: Tracks current and missing GameMaker-to-Godot coverage in
todo-list/
GM2Godot is:
- A modern project conversion tool from GameMaker to Godot
- A growing GMS2+ GML-to-GDScript transpiler and Godot runtime compatibility layer with tests and reports
- A time-saver for starting Godot projects from GameMaker
- A tool for developers who want to migrate their projects
GM2Godot isn't:
- A perfect 1:1 conversion tool
- A complete implementation of every current GameMaker GML Code and GML Reference page yet
- A guarantee that converted gameplay semantics match GameMaker without manual review, especially for unsupported platform services, precise collision masks, shaders, and target-specific runtime APIs
- A tool for converting compiled GM projects (use UndertaleToolMod instead)
The full compatibility roadmap lives in todo-list/. It tracks checked current coverage, missing features, GMS2+ GML Code coverage, GML Reference/runtime API coverage, events, project import work, Godot architecture, and testing/codebase improvements. Generated report commands can also write current compatibility artifacts under gm2godot/.
Current source version: 0.6.1.
Downloadable releases include Windows (.exe), macOS (.dmg with .app), and Linux binaries. You can also run from source on Windows, macOS, and Linux.
To build a local macOS distributable (.app + .dmg), run bash build_macos.sh from the project root.
- Python 3.12 or later
- Clone the Repository
git clone https://github.com/Infiland/GM2Godot
cd GM2Godot- Create a Virtual Environment (recommended)
python3 -m venv venv- Activate the Virtual Environment
- On macOS/Linux:
source venv/bin/activate- On Windows:
venv\Scripts\activate- Install Dependencies
pip install -r requirements.txt- Launch the Application
python main.py- Configure Project Paths
- Set your GameMaker project directory
- Set an empty Godot project directory
- Important: Godot directory must be empty to prevent data loss
- Configure Settings
- Click the "Settings" button to open the configuration window
- Select which assets to convert:
- Assets (sprites, sounds, fonts)
- Project (icons, settings, audio)
- Work in Progress features
- Choose your target GameMaker platform
- Start Conversion
- Click "Convert" to begin the process
- Monitor progress through the progress bar
- View detailed logs in the console
- Use the stop button if needed
The same entrypoint can run headless conversion, analysis, validation, and report generation:
python main.py --version
python main.py list-converters
python main.py list-converters --format json
python main.py report --report-dir reports
python main.py analyze --gm-project path/to/GameMakerProject --report-dir reports --target-platform windows
python main.py convert --gm-project path/to/GameMakerProject --godot-project path/to/GodotProject --groups assets,project --report-dir reports --target-platform windows
python main.py validate --godot-project path/to/GodotProject --fail-on-unsupportedYou can also invoke the same headless interface directly with python -m src.cli.
CLI reports are written under gm2godot/ inside the selected report or Godot project directory. The diagnostic outputs are conversion_diagnostics.json and conversion_diagnostics.md; static compatibility outputs include gml_manual_scope.md and gml_api_compatibility.md.
Useful conversion and validation filters:
--groups assets,project,wipselects conversion groups.--only asset_registry,scripts,objectsruns specific converter keys instead of groups.list-converters --format jsonprints the exact converter keys accepted by--only.--fail-on-unsupported,--max-warnings,--max-errors, and--max-unsupportedturn diagnostics into non-zero exit codes for CI.--godot-binpoints validation at a specific Godot executable whenGODOT_BINis not set.
We welcome contributions! Check out CONTRIBUTING.md for guidelines.
To contribute:
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to your branch
- Create a Pull Request
- Report issues on our GitHub Issues page
- Check our Documentation for detailed guides
- Join our community (Add community links if available)
You are setting up the GM2Godot project.
Ensure Python 3.12 or later is installed.
Create and activate a virtual environment:
python3 -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activate
Install dependencies from requirements.txt:
pip install -r requirements.txt
The project uses PySide6 (not Tkinter). Required packages are:
- Pillow
- markdown2
- requests
- PySide6
Run the application using:
python main.py
Headless verification examples:
python main.py --version
python main.py list-converters --format json
python main.py report --report-dir reports
python main.py analyze --gm-project path/to/GameMakerProject --report-dir reports --target-platform windows
python main.py validate --godot-project path/to/GodotProject --fail-on-unsupported
Verification for coding agents:
- If Python or generated-code logic changes, run ./venv/bin/pyright --warnings and relevant tests.
- For broad code changes, run ./venv/bin/python -m unittest.
- For documentation-only changes, do not run Pyright or tests unless explicitly requested.
Ensure all dependencies are installed correctly before execution.