Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Hi YAL,

I came to conclusion it's impossible to convert a project unless it's small one.

I would have loved to know about this tool before because GameMaker data structures are insanely unsafe. You should really upsell it with your other products e.g. GMLive and GMEdit, when GameMaker uses inevitably encounter your great tools when starting in GameMaker :)

I took some notes about the converter, but do not fix any for me.

1) pre-increment not handled properly as it was in front of a qs_function e.g. if (--qs_.....).

2) pre-increment was not changed too

e.g.

 list = global.notificationsFramesLeft[playerIndex];
--list[| i];

3) json_decode not changed to qs_json_decode

4) ds_exists not changed to qs_exists

5) when accessing ds_maps from os_get_info() or async_load events should not be changed to qs. You would get errors like this:

trying to index a variable which is not an array
 at gml_Script_qs_debug_dump (line 4) -        var l_meta = argument0[0];
############################################################################################
gml_Script_qs_debug_dump (line 4)
gml_Script_qs_impl_map_mismatch (line 2) - show_error("Expected a map, got " + qs_debug_dump(argument0), true);
gml_Script_qs_map_find_value (line 9) - } else qs_impl_map_mismatch(argument0);
...

6) instance_place_list expects a ds_list so that causes a problem too

You can edit the rules in compfix.gml to add any missing functions or generally change code generation. Not sure if the replacer tool supports prefix operators - it’s a bit of a tricky topic and wasn’t needed for the original implementation (which was made for replacing variables like layer).

async_load is trickier - since GM creates it by itself, there’s not really much to replace. On one-off basis you could run qs_json_decode(json_encode(thing))