Dual Grid Tileset — 16 Tiles Instead of 47, for Godot and Tiled
A dual grid draws 16 corner tiles offset half a tile from the map grid instead of 47 blob tiles. The Studio recognises dual-grid sheets (including several terrains in one pack), generates them from quarter tiles and exports them for Godot 4 and Tiled.
A dual grid keeps the terrain on the map's cells but draws the tiles on the points between them, half a tile off. Each drawn tile covers one corner of four cells, so it only has to know which of those four are terrain: 2⁴ = 16 tiles instead of the blob's 47. The price is a display layer shifted by half a tile — (W+1) × (H+1) tiles for a map of W × H cells — and art whose edges run through the middle of the tiles. The Studio recognises 16-corner sheets (several terrains per pack), generates them from the same quarters as a blob set, and exports Godot 4 Match Corners terrains, Tiled corner Wang sets and LDtk rules; a Unity Rule Tile cannot hold one.

- 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
Why 16 tiles are enough when the grid moves half a tile
In a blob set the tile at a cell has to draw all four quarters of that cell. Each quarter depends on three neighbours — the top-left quarter on N, W and NW — and has five looks: outer corner, rim along the top, rim along the side, inner corner, full. The four quarters must agree along their shared sides, and the combinations that are possible come to 47.
Shift the drawn grid by half a tile and each drawn tile shows one quarter of each of four different cells: the cells that meet at its centre point. Which of the five looks a quarter needs now follows from the other three cells in the same tile, so the tile needs just one bit per cell, terrain or not. Four bits give 16 tiles: 1 empty, 4 with one terrain cell (outer corners), 4 with two side by side (straight edges), 2 with two diagonal cells, 4 with three (inner corners), 1 full.
Because each quarter is chosen from the same three neighbours either way, Nerulio's generator builds a blob-47 set and a dual-grid 16 set from the same 20 drawn quarters (4 corners × 5 looks). What changes is where the tiles sit, not what the art has to show.
The costs are real: the display layer is offset and one tile larger in each direction than the data grid, collision and game logic stay on the data grid, and not every engine can place tiles on grid points. Do not confuse it with a 16-tile side set: that one matches the four sides of a cell (roads, fences, platforms) and its tiles are not interchangeable with corner tiles.
- Data grid
- The cells you paint and your game logic reads: terrain or not.
- Display grid
- The drawn tiles, one per grid point between four cells, offset by half a tile.
- Corner mask
- NW 1 + NE 2 + SE 4 + SW 8 over the four cells around a point: 0 (empty) to 15 (full).
- Side set
- 16 tiles matched on the four sides (N 1, E 2, S 4, W 8), drawn on the cells; a different set.
Example: which tile a grid point gets
A 4 × 3 map with a 2 × 2 block of land in the middle:
data grid (# = land) display tiles on the grid points: (4 + 1) × (3 + 1) = 20
. . . .
. # # . the point between cells (1,0) (2,0) (1,1) (2,1):
. # # . NW . = 0 NE . = 0 SE # = 4 SW # = 8 → mask 12
= land in the bottom half: a straight top edge
land cells around a point 0 1 2 side by side 2 diagonal 3 4
look - outer straight edge diagonal inner corner full
tiles 1 + 4 + 4 + 2 + 4 + 1 = 16The same 2 × 2 block on a blob set is four cells, each picking one of 47 tiles by its eight neighbours; on the dual grid it is nine grid points, each picking one of 16 tiles by four cells.
Where each engine puts a corner set
| Engine | How a corner set is stored | Nerulio export |
|---|---|---|
| Godot 4 | A terrain set in Match Corners mode: four corner peering bits per tile | Verified: a 4-terrain dual-grid pack painted 251 of 251 cells as predicted in Godot 4.7.2, including 3 maps with several terrains |
| Tiled | A corner Wang set (Tiled's manual: a complete two-terrain corner set has 16 tiles); the sample map layer is offset by half a tile | Verified with Tiled 1.12.2's own readers |
| LDtk | One rule per tile, the tile drawn with a half-tile offset | Partly verified: 1.5.3 schema, official loader, rules re-run |
| Unity | A Rule Tile draws on cells, not on the points between them | Not exported |
| Godot 3 and templates | Godot 3's "2×2" template, cr31's 2-corner Wang set and the 4×4 dual-grid sheet share one order | Recognised as corner16 cr31 |
What it does
- 16-corner layouts (cr31 2-corner = Godot 3 "2×2" = dual-grid 4×4) recognised with a confidence.
- Multi-terrain packs: blocks with the same plain fill are grouped as one terrain.
- Generate dual-grid 16 from the same quarters as a blob set; A-over-B transitions one pair at a time.
- Godot 4 terrains in corners mode (verified, 251/251 cells incl. multi-terrain maps) and Tiled corner Wang sets (verified); not exported to Unity.
How to do it
- Drop the dual-grid sheet (or a base block to generate from).
- Apply the recognised layout; check each terrain.
- Paint a test map: corner sets sit on grid points half a tile off.
- Export for Godot 4 or Tiled.
Files you get
For a dual-grid sheet named grass.png:
| File | What it is for |
|---|---|
nerulio_tileset_import.gd | Godot 4: builds nerulio-tileset.tres with a Match Corners terrain set; a pack with several blocks keeps its terrains. |
grass.tsx | Tiled: a corner Wang set, one colour per terrain; sample.tmx draws the set on a layer shifted by half a tile. |
grass.ldtk | LDtk: an IntGrid value per terrain and one rule per tile with a half-tile tile offset. |
Troubleshooting
| Symptom | Likely cause | How to check | Fix |
|---|---|---|---|
| Everything looks half a tile off in the engine | Blob-style art (edges on the tile border) used as a corner set, or corner art placed on an unshifted layer | On the test map with the Tiled rule, see where the rims fall relative to the painted cells | Draw corner tiles with the terrain edge through the middle of the tile, and keep the display layer offset |
| The Unity export has no terrain for the set | A Rule Tile draws on cells; corner sets need grid points | The export notes say corner sets are skipped for Unity | Use Godot, Tiled or LDtk, or a blob-47 set for Unity |
| A multi-terrain pack gets its terrains mixed up | Terrains are grouped by plain fills that are the same picture; a fill that differs slightly makes a new terrain | Read the terrain list after Apply | Merge or rename the terrains, or make the fills identical |
| The outer ring of the map shows gaps with the Tiled rule | Grid points on the map's edge touch cells outside the map | These points are not reported as problems | Expected; paint one extra cell of border if the edge must be drawn |
| The generator will not make a dual grid from an A4 wall block | A side-only source has no corner pieces to build corner tiles from | The error says a side-only source cannot draw corner tiles | Use an RPG Maker A2, Blobsmith, five-tile or procedural rim source |
Other ways to do it
| Option | When it is the better choice |
|---|---|
| A 47-tile blob set | You need Unity Rule Tiles, or want tiles to sit on the cells with no offset layer (the blob explained). |
| Tiled's corner set on its own | Your levels live in Tiled and you mark the Wang colours there; see Tiled Wang sets. |
| Generate the 16 from a base block | You have drawn an A2 block or a 2×3 base: the tileset generator assembles the dual-grid set from the same quarters as the blob. |
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
- No Unity export for corner sets.
- Transitions between terrains come from the art in the pack or from A-over-B generation, one pair at a time.
- The test map shows grid points on the map's outer ring without checking them.
- 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
Verified by Nerulio (docs/STUDIO-TILE.md, 2026-09-23): the MIT-licensed GlitchedinOrbit dual-grid sheet was read as 5 corner16 blocks with 4 terrains (80 of 80 corner terrains right, seam AUC 1.000), Godot 4.7.2 painted 251 of 251 cells as predicted, Tiled 1.12.2 and the LDtk 1.5.3 checks passed. The engine terms follow the linked documentation.
Official documentation used
Questions
Why is there no Unity export for dual grid?
A Unity Rule Tile draws on cells, not on the corners between them, so corner / dual-grid sets are not exported to Unity.
Can one sheet hold several terrains?
Yes. A pack with several dual-grid blocks was recognised with 4 terrains and 80/80 corner terrains right.
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).