Skip to content

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.

Drop a tileset or autotile sheet (PNG)
Runs in your browser. Files are not uploaded.
Studio Tile workspace: a test map painted with the Godot terrain rule
The real Studio with a CC0 asset (OpenGameArt).
Exports to
  • 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   = 16

The 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

EngineHow a corner set is storedNerulio export
Godot 4A terrain set in Match Corners mode: four corner peering bits per tileVerified: a 4-terrain dual-grid pack painted 251 of 251 cells as predicted in Godot 4.7.2, including 3 maps with several terrains
TiledA corner Wang set (Tiled's manual: a complete two-terrain corner set has 16 tiles); the sample map layer is offset by half a tileVerified with Tiled 1.12.2's own readers
LDtkOne rule per tile, the tile drawn with a half-tile offsetPartly verified: 1.5.3 schema, official loader, rules re-run
UnityA Rule Tile draws on cells, not on the points between themNot exported
Godot 3 and templatesGodot 3's "2×2" template, cr31's 2-corner Wang set and the 4×4 dual-grid sheet share one orderRecognised 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

  1. Drop the dual-grid sheet (or a base block to generate from).
  2. Apply the recognised layout; check each terrain.
  3. Paint a test map: corner sets sit on grid points half a tile off.
  4. Export for Godot 4 or Tiled.

Files you get

For a dual-grid sheet named grass.png:

FileWhat it is for
nerulio_tileset_import.gdGodot 4: builds nerulio-tileset.tres with a Match Corners terrain set; a pack with several blocks keeps its terrains.
grass.tsxTiled: a corner Wang set, one colour per terrain; sample.tmx draws the set on a layer shifted by half a tile.
grass.ldtkLDtk: an IntGrid value per terrain and one rule per tile with a half-tile tile offset.

Troubleshooting

SymptomLikely causeHow to checkFix
Everything looks half a tile off in the engineBlob-style art (edges on the tile border) used as a corner set, or corner art placed on an unshifted layerOn the test map with the Tiled rule, see where the rims fall relative to the painted cellsDraw 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 setA Rule Tile draws on cells; corner sets need grid pointsThe export notes say corner sets are skipped for UnityUse Godot, Tiled or LDtk, or a blob-47 set for Unity
A multi-terrain pack gets its terrains mixed upTerrains are grouped by plain fills that are the same picture; a fill that differs slightly makes a new terrainRead the terrain list after ApplyMerge or rename the terrains, or make the fills identical
The outer ring of the map shows gaps with the Tiled ruleGrid points on the map's edge touch cells outside the mapThese points are not reported as problemsExpected; paint one extra cell of border if the edge must be drawn
The generator will not make a dual grid from an A4 wall blockA side-only source has no corner pieces to build corner tiles fromThe error says a side-only source cannot draw corner tilesUse an RPG Maker A2, Blobsmith, five-tile or procedural rim source

Other ways to do it

OptionWhen it is the better choice
A 47-tile blob setYou 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 ownYour levels live in Tiled and you mark the Wang colours there; see Tiled Wang sets.
Generate the 16 from a base blockYou 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.

TargetFilesCheck
Godot 4 TileSetPNG · nerulio-tileset.json · nerulio_tileset_import.gdVerified 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.tmxVerified 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 Tilenerulio-ruletile.json · Editor/NerulioRuleTileImporter.csVerified 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 levelPartly 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).