Decompiling games without permission is:
Legitimate uses include:
GMS2 games are typically compiled into one of two formats:
Note on YYC (YoYo Compiler): If a game is compiled using YYC, the code is converted directly into machine code (C++). Decompiling YYC games is exponentially harder and often requires IDA Pro or Ghidra analysis rather than GMS-specific tools. This guide focuses on standard VM (Virtual Machine) builds.
When you build a game in GMS2, the IDE compiles your project into a platform-specific executable:
Decompilers primarily target games compiled with the VM (Virtual Machine) runner, which retains structured bytecode and metadata. gamemaker studio 2 decompiler
Several community tools have attempted GMS2 decompilation:
Important note: As of mid‑2020s, there is no fully reliable, public GMS2 decompiler that restores original variable names, comments, or exact project structure, especially for YYC-compiled games.
Short answer: Yes, but with significant limitations.
Long answer: Several tools claim to decompile GMS2 games, but none produce a perfect, ready-to-compile project folder with original comments, variable names, or folder structure.
Every GameMaker game includes an implicit license. YoYo Games' own EULA states you cannot reverse engineer, decompile, or disassemble software created with GameMaker. Decompiling games without permission is:
Ethical Guidelines:
| Scenario | Ethical? | Legal Risk | | :--- | :--- | :--- | | Decompiling your own game (lost source) | Yes | Low (no distribution) | | Decompiling for personal modding (non-commercial) | Gray area | Medium (depends on game dev) | | Decompiling to learn techniques (no redistribution) | Gray area | Medium | | Decompiling and reusing assets/code commercially | No | High (liable for damages) | | Distributing a decompiler tool | Yes (tool itself) | Low (if open-source for education) |
Key point: Just because you can decompile a game does not mean you have permission to use that code.
If your goal is to see the logic:
Example of what you will see:
push.v self.x
pushi.e 4
add.i.v
pop.v self.x
conv.v.i
push.i "Hello World"
conv.i.v
call.i show_message(argc=1)
How to read it:
Translation: The code above roughly translates to:
x += 4;
show_message("Hello World");
| Tool / Method | Type | Output Quality | Platform Target | |---------------|------|----------------|------------------| | UndertaleModTool | Open-source decompiler/editor | Very high (GML code, assets) | Windows VM | | Altar (CLI tool by krzys_h) | Python bytecode extractor | Medium (bytecode dump) | Windows VM | | GM2D (GameMaker 2 Decompiler) | Discontinued private tool | High | Windows VM | | Manual reversing (Ghidra/IDA) | For YYC or obfuscated games | Low (assembly level) | YYC / native | | Web disassembly tools | For HTML5 exports | High (JavaScript) | HTML5 |
UndertaleModTool is currently the most famous and actively maintained example. Despite the name, it supports many GMS2 games and allows browsing and exporting GML scripts, sprites, sounds, and even editing in-memory data.