A live GML injector for GameMaker Studio 2.
Uses Underanalyzer's GML compiler, huge shoutout to the Underminers Team! Underanalyzer is licensed under the Mozilla Public License Version 2.0.
Tested on Pizza Tower (version 2022.1) and DELTARUNE (version 2022.3), as well as on GameMaker version 2024.13.3.268. It does support more versions but they weren't necessarily tested. Unfortunately, GMM does NOT support games made using GameMaker V1 or lower, therefore it does not work with UNDERTALE (yet!).
GMM now has a special environment with it's own special gml functions, including:
-
gml_wait(t): makes the main thread waittseconds. -
gml_load(src, self=global, other=global): immediatly executes the gml sourcesrcusingselfandother. -
gml_load_safe(src, self=global, other=global): executes the gml sourcesrcusingselfandotheron the main thread. -
debug_get_locals(l=0): gets the levels on the execution levellas a struct. -
debug_get_self(l=0): gets theselfof the execution levell. -
debug_get_other(l=0): gets theotherof the execution levell. -
debug_get_script(l=0): gets the name of the script at execution levell. -
array_freeze(a): makes the arrayaimmutable. -
array_unfreeze(a): makes the arrayamutable. -
array_frozen(a): returns if the arrayais immutable. -
script_replace(s1, s2): internally swaps the two scripts, functions or methodss1ands2. -
http_get_direct(url): directly returns the GET result of the request to the urlurl.
- See all instances in the current room.
- Get/set instance variables.
- Destroy instances.
- Go to specific rooms using room ids.
- Execute GML in-game!
- Run main.py, it should install all requirements from requirements.txt automatically.
- Write the name of the desired game (or it's process id) in the input box in the top of the app, and click "Attach".
- All of the game's ressources will now be loaded into memory, this might freeze the app for a couple seconds.
- GMM is now connected, enjoy!