Repository navigation
Quick Start Conversion
Applies to: GM2Godot 1.0.0 · GameMaker LTS 2026 · Godot 4.7.2
Last reviewed: 2026-10-04
This guide covers a first conversion through either the desktop interface or the source CLI. GM2Godot converts source projects, so select the GameMaker project root that contains the .yyp file—not an exported or compiled game.
Before converting into an existing Godot project, commit it to version control or make a backup. Conversion writes the selected generated resources and settings into that project.
GM2Godot classifies the destination before writing output. The current rules are implemented in project_godot.py.
| Destination state | GUI | CLI | Result |
|---|---|---|---|
| Path does not exist | Not accepted; create an empty directory first. | Accepted. | The CLI creates the directory and initializes project.godot when conversion starts. |
| Existing empty directory | Accepted. | Accepted. | Conversion initializes a minimal project.godot. |
Existing Godot project with a valid regular project.godot
|
Accepted. | Accepted. | Selected converters may update project.godot and GM2Godot-managed paths. Back up or commit the project first. |
Non-empty directory without project.godot
|
Rejected. | Rejected. | Preflight refuses conversion instead of treating the directory as a new project. |
Redirected destinations such as symbolic links or junctions, invalid project.godot files, and unsafe managed output paths are also rejected. Choose the real project directory and resolve the reported preflight error before retrying.
- Launch the packaged application, or run
python main.pyfrom an activated source environment. - For GameMaker Directory, choose the project root containing one
.yypfile. - For Godot Directory, choose an empty directory or an existing valid Godot project. The GUI requires this directory to exist already.
- Open Settings and review the conversion checkboxes. Most start enabled; notes and sound-group folders start off.
- Choose the target platform:
windows,macos, orlinux. This selects target-specific GameMaker project options and conditional GML/macros; it does not filter the project's resources and does not have to match the computer running the converter. - Click Convert and follow the console and progress display. The stop button requests cancellation.
A completed progress bar means the conversion worker finished; it is not proof of full GameMaker semantic compatibility. Use the report checks below before treating the output as ready.
The CLI is available from a source installation through python main.py or python -m src.cli. A complete first conversion can be run as one command:
python main.py convert --gm-project "/path/to/GameMakerProject" --godot-project "/path/to/GodotProject" --groups assets,project,wip --target-platform windowsReplace both paths and choose windows, macos, or linux for the GameMaker options and conditional GML/macros you want selected. This does not filter the project's resources. If --target-platform is omitted, GM2Godot defaults to the current host platform.
The three conversion groups are defined by the current CONVERSION_CATEGORIES:
-
assetsconverts the supported asset, script, object, room, and registry outputs. -
projectconverts the supported icon, project metadata/settings, audio buses, and notes. -
wipenables the shader and tileset converters.
To run only specific converters, first print the accepted keys:
python main.py list-converters --format json
python main.py convert --gm-project "/path/to/GameMakerProject" --godot-project "/path/to/GodotProject" --only sprites,scripts,objects,rooms --target-platform windowsWhen --only contains at least one key, it takes precedence over --groups. Unknown group names and converter keys are rejected before conversion.
-
Read the terminal outcome (CLI). A terminal state can be
success,partial,failed, orcancelled. -
After destination preflight succeeds, read
<GodotProject>/gm2godot/conversion_attempt.jsonand<GodotProject>/gm2godot/conversion_diagnostics.md. Address errors, unsupported APIs, and relevant warnings. A pre-existingconversion_manifest.jsonmay describe an earlier trustworthy run, so inspect the newest attempt ledger first. A rejected preflight writes no conversion attempt or canonical report, although the persistent private destination lock/workspace parent may have been initialized before the rejection. For a successful or partial v0.7.43 conversion,conversion_manifest.jsoncontains the complete deterministicgeneration_inventorycommitted with the managed files. Selected object, room, sprite, shader, and asset-registry/timeline converters rebuild their owned logical-resource outputs, so current unavailable, blocked, skipped, or YYP-removed resources do not leave earlier files or registry references behind. A converter omitted by--onlyremains disabled and carries its prior inventory exactly; includeasset_registrywhen selectively rebuilding resource outputs that must be reflected in the runtime registry.project.godotremains under shared project-configuration ownership, with only a missing GM2Godot-managed room startup scene cleared. Failed or cancelled pre-decision reruns preserve the prior inventory byte- and mode-exact and publish an attempt whose preserved canonical generation isverified. If the private managed-output recovery artifact exists, close Godot and all writers and complete recovery before trusting either generation. -
Validate the destination project, including the generated resources, with the exact Godot 4.7.2 executable:
python main.py validate --godot-project "/path/to/GodotProject" --godot-bin "/absolute/path/to/Godot-4.7.2" --fail-on-unsupported
If
--godot-binis omitted, validation checksGODOT_BIN, then agodotexecutable onPATH, then the standard macOS application path. If Godot cannot be found, project/resource validation is reported as skipped rather than passed. -
For an additional bounded boot check of the configured main scene, add
--godot-boot-frames 60. The validation details are written to<GodotProject>/gm2godot/godot_validation_report.json. -
Open
project.godotin Godot 4.7.2, inspect the generated scenes and scripts, and test the game paths that matter to your project. Conversion and parser validation do not guarantee one-to-one runtime behavior.
The repository CI pins the full Godot build used for smoke tests in godot-smoke.yml. For interpreting partial output and unsupported features, continue with Compatibility and Limitations; for report details and failures, use Diagnostics and Troubleshooting. Generated file layout and runtime helpers are covered in Generated Project and Runtime.
If GM2Godot is not installed yet, start with Installation.