GameMaker Autotile to Godot, Tiled and Unity — 47 Tiles
GameMaker Studio 2's 47-tile autotile template gives every wall, edge and corner case a fixed slot, and nothing else reads that order. Drop a sheet in that layout: the Tile workspace recognises it from the seams between the tiles, sets every terrain bit in one step, and exports a Godot 4 TileSet with terrain peering bits, a Tiled Wang set, Unity Rule Tiles or LDtk rules. There is no export back to GameMaker, and GameMaker itself was not run in any check (UNVERIFIED there).
GameMaker's 47-tile auto tile is a template of 47 slots that you fill in the Autotile Editor; the mapping is stored in the tile set asset, not in the PNG. A tile set sprite drawn in that template's own order — 8 × 6 cells with the top-left cell empty, as GameMaker requires — is recognised by Nerulio from its pixels. Every slot becomes a Godot 4 tile with its peering bits (Match Corners and Sides), and the same bits give a Tiled Wang set, Unity Rule Tiles or LDtk rules. Nothing goes back into GameMaker, and GameMaker itself was not run.

- Godot 4 TileSetVerified· Godot 4.7.2
- TiledVerified· Tiled 1.12.2
- Unity 6 Rule TileVerified· Unity 6000.5.3f1 + 2D Tilemap Extras 8.0.3
- LDtkPartly verified· LDtk 1.5.3 schema + loader
What GameMaker stores, and what Godot needs instead
The GameMaker manual offers two auto tile types, 47 and 16 tiles, and fills them in the Autotile Editor: click the 47 tile template, then click each template cell and pick the tile from the tile set (light grey marks the outside edge, dark grey the fill). The Tile Set Editor page adds that the top-left grid cell must always be empty, because GameMaker uses it as the "empty" tile. So the auto tile is a list of slot → tile assignments kept in the project, and only the PNG leaves GameMaker.
Nerulio can therefore read a sheet whose tiles sit in the template's order, which is how GameMaker template sheets and many packs "for GameMaker" are drawn. It scores that order (and every other published 47 order) by how seamlessly neighbouring tiles join. If your sprite holds the tiles in another arrangement and the auto tile library does the mapping, the order is not in the pixels: pick another recognised layout, or paint the bits.
Godot needs no fixed order at all: each tile carries its own terrain and peering bits. So the sheet keeps GameMaker's layout, and the TileSet only records which atlas cell stands for which neighbourhood.
- Auto tile library
- GameMaker's list of auto tiles in a tile set asset: template slots mapped to tiles.
- 47-tile template
- GameMaker's slot order for corners-and-sides autotiling; cell 0 of the sheet stays empty.
- Match Corners and Sides
- The Godot 4 mode that matches all 8 neighbours, the equivalent of a 47-tile set.
- cr31 mask
- The neighbour mask each template cell stands for (N 1 … NW 128), used to write the bits.
Example: GameMaker template cells as Godot tiles
8 × 6 cells of 64 px → a 512 × 384 px sheet; cell (0,0) left empty
cell (7,5) full tile mask 255 8 peering bits
cell (6,5) isolated tile mask 0 no peering bits
cell (0,2) mask 31 = N NE E SE S → top_side, top_right_corner, right_side,
bottom_right_corner, bottom_side = 0
cell (1,0) mask 127 = all but NW → 4 sides + 3 corners: an inner corner at the top-left
whole sheet 47 tiles, 188 peering bits, one terrain set in Match Corners and SidesIn nerulio-tileset.json the atlas coordinates are those cells, so cell (0,2) becomes "atlas":{"x":0,"y":2} with exactly those five bits.
What maps to what
| In GameMaker | In Nerulio | In Godot 4 |
|---|---|---|
| Tile set sprite (fixed grid, top-left cell empty) | Grid measured from the pixels; a size where the 47 layout fits exactly is ranked | A TileSetAtlasSource with the same tile size, margins and separation |
| 47-tile template slot | The slot's neighbour mask → a terrain pattern for that tile | The tile's terrain 0 and its peering bits |
| Auto tile library in the tile set asset | Not read: only the PNG is imported | — |
| Room editor: painting with the auto tile brush | Test map painted with the Godot rule (a port of set_cells_terrain_connect) | Terrains tab in Connect mode, or set_cells_terrain_connect() |
| Open Or Closed Edges button | Not applied: outside the painted area counts as empty | Cells beyond your terrain are empty, so edges get rims |
| 16-tile auto tile | Not recognised as a GameMaker layout (it may still match edge16 or corner16) | Match Sides or Match Corners, if a layout matched |
| Collision written in GML | Optional: polygons traced from each tile's alpha | Physics layer 0 with one polygon per tile |
What it does
- The layout is found from how tile edges continue into each other: the GameMaker 47 template scored high confidence (AUC 1.000, bits 47/47), and real 64 px cave platformer art in that layout scored medium (0.964) with all 47 tiles' bits right.
- Grid candidates are measured from the pixels, and a size where the 47 layout fits exactly is ranked; the top one is a dashed preview until Use this grid.
- Check panel: combinations present against expected, missing ones drawn as ghost tiles, duplicates, and art that disagrees with its bits.
- Test map (M) painted with the Godot rule (a port of set_cells_terrain_connect) or the Tiled rule; Godot 4.7.2 painted 485 of 485 test cells as predicted on these sets.
- Only GameMaker's 47-tile layout is recognised; its 16-tile layout is not among the 12 published layouts the Studio knows.
How to do it
- Open the Tile workspace and drop the GameMaker autotile sheet.
- Look at the grid candidates and press Use this grid.
- Accept the recognised GameMaker 47 layout and press Apply (one undo step).
- Read the Check panel, then paint a test map (M) with the Godot or Tiled rule.
- Export for Godot 4, Tiled, Unity or LDtk.
Files you get
One ZIP, one folder per target, for a sheet called cave.png:
| File | What it is for |
|---|---|
godot/nerulio-tileset.json + nerulio_tileset_import.gd | Builds the Godot 4 TileSet: 47 tiles, 188 peering bits, Match Corners and Sides. |
tiled/cave.tsx + sample.tmx | A mixed Wang set (46 marked tiles; the isolated one has no colour) and a sample map. |
unity/nerulio-ruletile.json + Editor/NerulioRuleTileImporter.cs | One RuleTile with 47 rules. |
ldtk/cave.ldtk | 47 auto-layer rules on an IntGrid layer (partly verified). |
From the GameMaker sheet to a painted Godot map
- Export with Godot 4 ticked; copy the PNG,
nerulio-tileset.jsonandnerulio_tileset_import.gdinto the project root (or setJSON_PATH/OUTPUT_PATHin the script). - After the PNG is imported, run the script with File › Run; the Output panel should report 47 tiles and 188 peering bits.
- Load
nerulio-tileset.tresinto aTileMapLayer's Tile Set property. - Paint with the Terrains tab in Connect mode — the closest thing to GameMaker's auto tile brush — or from code with
set_cells_terrain_connect(cells, 0, 0). - For GameMaker's "closed edges" look at the room border, paint the terrain one cell beyond the visible area, so the border cells have neighbours and no rim.
Check the result
- The Output line says 47 tiles; atlas cell (0,0) has no tile in the TileSet editor.
- Paint a 3 × 3 block, a single cell and an L shape: 9 different tiles, the isolated tile at cell (6,5) and an inner corner — the same pieces the GameMaker room editor would place.
- Paint the same shapes on the Studio's test map with the Godot rule: in our runs Godot 4.7.2 matched it cell for cell.
Where a GameMaker 47-tile sheet can go
| Target | Files | How it was checked |
|---|---|---|
| Godot 4 | PNG, nerulio-tileset.json and nerulio_tileset_import.gd, which builds the TileSet with peering bits | Verified: Godot 4.7.2 painted 485/485 test cells as predicted |
| Tiled | .tsx with a Wang set and a sample.tmx | Verified: loaded in Tiled 1.12.2 (its terrain brush was not driven) |
| Unity 6 Rule Tile | JSON and Editor/NerulioRuleTileImporter.cs, one RuleTile per terrain | Verified with 2D Tilemap Extras 8.0.3: 485/485 cells on blob sets |
| LDtk 1.5.3 | .ldtk with an IntGrid, one 3×3 rule per tile and a sample level | Partly verified: schema, official loader and rules re-run; not opened in the LDtk app |
| Generic | PNG and JSON | plain files |
| GameMaker | no export | UNVERIFIED: GameMaker was never run |
Troubleshooting
| Symptom | Likely cause | How to check | Fix |
|---|---|---|---|
| "GameMaker 47" is not among the layout candidates | The sprite is not in template order (the auto tile library did the mapping), or the grid is off | Layout candidates and their "at col,row" placement | Use the grid GameMaker used (Tile Set Properties: tile size, offset, separation), apply another recognised layout, or paint the bits |
| Inner corners land in the wrong places in Godot | The layout was applied one cell off (an extra row or column in the sheet) | The placement shown with the candidate | Apply the candidate at the right placement and export again |
| A 16-tile GameMaker sheet is not recognised as GameMaker | Only the 47-tile GameMaker order is known | Candidates list edge16 / corner16 or nothing | Apply the matching 16 layout, or paint the side bits |
| Map borders show rims that GameMaker hid | GameMaker's closed-edges option has no equivalent in the TileSet | Rims only on the map border | Paint terrain one cell past the edge |
| Seams between tiles in Godot | The sprite has an offset or separation between tiles (GameMaker Tile Set Properties) that the grid does not know | Tileset panel: margin and spacing | Set the grid's margin and spacing to the sprite's real layout and export again |
Other ways to do it
| Option | When it is the better choice |
|---|---|
| Assign the bits by hand in Godot's TileSet editor | A small set, or a sprite whose order only GameMaker's auto tile library knows. |
| Keep the level work in GameMaker | You are staying on GameMaker; nothing here writes GameMaker files. |
| Go through Tiled: Tiled Wang set | You want to paint maps in Tiled first and bring them to one or more engines later. |
Engine exports and how each was checked
"Verified" means the exported files were loaded by the real engine or tool on real CC0 assets and the result was compared with the source. Anything that was not loaded is labelled as such.
| Target | Files | Check |
|---|---|---|
| Godot 4 TileSet | PNG · nerulio-tileset.json · nerulio_tileset_import.gd | Verified Godot 4.7.2The included import script builds the TileSet with terrain peering bits; a map painted with set_cells_terrain_connect equals the Studio preview in every cell on 9 corpus sheets. |
| Tiled | .tsx Wang set · sample.tmx | Verified Tiled 1.12.2Tiled's own readers load every Wang ID as written and the sample map renders pixel-exact. The terrain brush itself was not driven. |
| Unity 6 Rule Tile | nerulio-ruletile.json · Editor/NerulioRuleTileImporter.cs | Verified Unity 6000.5.3f1 + 2D Tilemap Extras 8.0.3Blob and side sets: a painted Tilemap shows the predicted sprite in every cell. Corner / dual-grid sets are not exported to Unity. |
| LDtk | .ldtk (1.5.3) · rules · sample level | Partly verified LDtk 1.5.3 schema + loaderAccepted by the LDtk JSON schema and its official loader, and the rules re-run to the exported tiles; not opened in the LDtk app. |
Evidence
Layouts identified from the pixels alone on the tile corpus: 4 blob-47 templates and 2 Wang templates with high confidence, a real 64 px cave tileset with medium confidence — every tile's bits right. Godot 4.7.2 painted every test cell exactly as the Studio predicted (485/485 per blob set, 251/251 on a 4-terrain dual-grid pack); Tiled 1.12.2 read every Wang ID back; Unity 6000.5 matched on every painted cell of the blob and side sets.
Limits
- Only GameMaker's 47-tile order is recognised; its 16-tile order is not among the known layouts.
- No export back to GameMaker; GameMaker was never run in a check.
- The auto tile library itself (the slot assignments in the .yy asset) is not read.
- Tiled's terrain brush, the LDtk app and Godot's editor painter were not driven; the checks use the engines' readers and set_cells_terrain_connect.
- Unity gets blob and side sets only; several terrains become several Rule Tiles with no transitions between them.
- Isometric and hex tiles, animated tiles, occlusion and navigation layers are out of scope.
- Suggesting bits without a known layout needs a reference "full" tile; on side-only path templates the guess can fail until you select it.
Versions and sources
GameMaker's 47 template was recognised with high confidence (seam AUC 1.000, bits 47/47) and real 64 px cave platformer art in that order with medium confidence (0.964, bits 47/47). On both, Godot 4.7.2 painted 485 of 485 test cells as predicted, and the Tiled, LDtk and Unity exports passed their checks. GameMaker facts come from the GameMaker manual.
Official documentation used
Questions
My GameMaker autotile uses the 16-tile template. Will it work?
Not as a GameMaker layout: only the 47-tile one is recognised. A 16-tile sheet may still match another published layout such as edge16 or corner16; the Studio names what it finds with a confidence, and you can always paint the bits by hand.
Does my art have to look like the template?
No. The layout is identified from how edges continue across tiles, not by comparing with the template picture: textured cave art scored 0.964 (medium) and every bit came out right.
Can I take the result back into GameMaker?
There is no GameMaker tileset export, and nothing was checked inside GameMaker. The exports target Godot 4, Tiled, Unity and LDtk, plus a generic PNG and JSON.
Is it free, and do I need an account?
Everything on these pages is free and works without an account. There is no watermark and no export that is held back.
Are my sprites uploaded?
No. The Studio decodes, packs and exports in this browser tab. Projects are autosaved in the browser (IndexedDB) and can be saved as a .nerulio file.
Does it need Aseprite or an engine plugin installed?
No. .aseprite files are read and written in the browser, and each engine bundle carries what that engine needs (for Godot, the import settings and scene; for Unity and the Godot TileSet, a small editor script).