Gridmonger saves broken files under some conditions(probable cause: saving small levels where #rows != #columns with a specific wall/floor configuration)
This was confirmed on both 1.2.0 and a version built from the current master branch (0cde3f8)
I could finish my report here, but since I'm developing some stuff that uses gmm files, we can continue our investigation:
[
{
"chunk_type": "LIST",
"list_type": "map ",
"children": [
{
"chunk_type": "MAP_PROP",
"version": 4,
"title": "broken",
"game": "",
"author": "jagholin",
"creation_time": "2026-03-21 12:39:51",
"notes": ""
},
{
"chunk_type": "MAP_COOR",
"origin": 0,
"row_style": 0,
"column_style": 0,
"row_start": 1,
"column_start": 1
}
]
},
{
"chunk_type": "LIST",
"list_type": "lvls",
"children": [
{
"chunk_type": "LIST",
"list_type": "lvl ",
"children": [
{
"chunk_type": "LVL_PROP",
"location_name": "broken_location",
"level_name": "broken map",
"elevation": 0,
"num_rows": 4,
"num_columns": 3,
"override_coord_opts": 0,
"notes": ""
},
{
"chunk_type": "LVL_COOR",
"origin": 0,
"row_style": 0,
"column_style": 0,
"row_start": 1,
"column_start": 1
},
{
"chunk_type": "LVL_REGN",
"enable_regions": 0,
"rows_per_region": 16,
"columns_per_region": 16,
"per_region_coords": 1,
"num_regions": 0,
"records": []
},
{
"chunk_type": "LVL_CELL",
"floor": [
1,
1,
1,
0,
1,
1,
1,
0,
1,
1,
1,
0,
1,
1,
1,
0,
0,
0,
0,
0
],
"floor_orientation": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"floor_color": [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"wall_north": [
10,
10,
10,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
10,
10,
10,
0
],
"wall_west": [
10,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
"trail": [
0,
0,
0,
10,
0,
0,
0,
0,
0,
0,
0,
10,
0,
0,
0,
0,
0,
0,
0,
0
]
},
{
"chunk_type": "LVL_ANNO",
"num_annotations": 0,
"records": []
}
]
}
]
},
{
"chunk_type": "MAP_LINKS",
"num_links": 0,
"records": []
},
{
"chunk_type": "LIST",
"list_type": "stat",
"children": [
{
"chunk_type": "TYPE_UNKNOWN"
},
{
"chunk_type": "TYPE_UNKNOWN"
},
{
"chunk_type": "TYPE_UNKNOWN"
},
{
"chunk_type": "TYPE_UNKNOWN"
}
]
}
]
Gridmonger saves broken files under some conditions(probable cause: saving small levels
where #rows != #columnswith a specific wall/floor configuration)This was confirmed on both 1.2.0 and a version built from the current master branch (0cde3f8)
Steps to reproduce:
I could finish my report here, but since I'm developing some stuff that uses gmm files, we can continue our investigation:
./gmm2json broken.gmm | jq | tee broken.jsonOutput:
[ { "chunk_type": "LIST", "list_type": "map ", "children": [ { "chunk_type": "MAP_PROP", "version": 4, "title": "broken", "game": "", "author": "jagholin", "creation_time": "2026-03-21 12:39:51", "notes": "" }, { "chunk_type": "MAP_COOR", "origin": 0, "row_style": 0, "column_style": 0, "row_start": 1, "column_start": 1 } ] }, { "chunk_type": "LIST", "list_type": "lvls", "children": [ { "chunk_type": "LIST", "list_type": "lvl ", "children": [ { "chunk_type": "LVL_PROP", "location_name": "broken_location", "level_name": "broken map", "elevation": 0, "num_rows": 4, "num_columns": 3, "override_coord_opts": 0, "notes": "" }, { "chunk_type": "LVL_COOR", "origin": 0, "row_style": 0, "column_style": 0, "row_start": 1, "column_start": 1 }, { "chunk_type": "LVL_REGN", "enable_regions": 0, "rows_per_region": 16, "columns_per_region": 16, "per_region_coords": 1, "num_regions": 0, "records": [] }, { "chunk_type": "LVL_CELL", "floor": [ 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0 ], "floor_orientation": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "floor_color": [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "wall_north": [ 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 10, 0 ], "wall_west": [ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], "trail": [ 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0 ] }, { "chunk_type": "LVL_ANNO", "num_annotations": 0, "records": [] } ] } ] }, { "chunk_type": "MAP_LINKS", "num_links": 0, "records": [] }, { "chunk_type": "LIST", "list_type": "stat", "children": [ { "chunk_type": "TYPE_UNKNOWN" }, { "chunk_type": "TYPE_UNKNOWN" }, { "chunk_type": "TYPE_UNKNOWN" }, { "chunk_type": "TYPE_UNKNOWN" } ] } ]As we can see, there are indeed values
10in thetrailarray. But we didn't create any trails!Also, something weird is happening with walls arrays. We can see this clearly if we try to open the json in a secret godot project(WIP):
OOPS, most of the walls are gone!