Godot
Supported- Exports
- TileSet · Terrain
- Setup time
- ~5 min
- Difficulty
- Easy
Import PNG + Godot JSON mapping
Turn a single tile into a seamless 47-tile Autotile bitmask set with a live testing canvas.
Left Click: Paint | Right Click: Erase
Paint directly on this grid after uploading your tile.
Click a tile on the generated sheet
Generate a sheet to inspect tiles.
Tile count
47
Tile size
32px
Template
47 Blob
Export format
PNG + JSON
Sheet
256×192
Validation
Pending
Incomplete — upload center tile
Production-ready formats for your pipeline
Generated tiles
47
Unused area
2%
Padding
0 px (tight sheet)
Grid
8×6
Import with confidence
Import PNG + Godot JSON mapping
PNG + RuleTile mapping JSON
Load TSX next to PNG
Point tileset path at PNG
Export PNG sheet + Godot metadata JSON
Import PNG as Texture2D (Nearest filter)
Create TileSet → add atlas with tile size
Apply bitmask mapping from JSON / paint terrains
Drag to compare source tile and generated atlas
Keep 0–1px between cells if your importer adds margins; avoid bleed into neighbours.
Match edge colours or extrude 1px when using bilinear filtering in-engine.
Use Point / Nearest filtering and integer camera zoom for crisp autotiles.
Prefer 16/32/64 source tiles so the 8×6 sheet stays GPU-friendly.
Sheet is tileSize×8 by tileSize×6 — keep under your engine max texture size.
Idea → level → art → collision → audio → progression
GDD Generator
Earlier step
Level Generator
Earlier step
Sprite Sheet Packer
Earlier step
Autotile Generator
You are here
Auto Hitbox
Trace a sprite's alpha into a collision polygon automatically.
Collider Simplifier
Reduce collision vertex count without changing hit behaviour.
Retro SFX
Synthesize 8-bit jumps, coins and explosions in the browser.
XP Balancer
Model level curves, gold flow and stat progression.
Loot Simulator
Verify drop rates with Monte Carlo simulation before shipping.
More free browser-based game development tools
Terrain sets are consumed by the tilemap your level generator emits.
Turn a game idea into a structured, scoped design document.
Pack animation frames into a padded atlas with a JSON data file.
Trace a sprite's alpha into a collision polygon automatically.
Five steps from one source tile to a sheet plus the mapping your engine needs.
The generator needs a single filled tile — the texture that represents "this cell is solid ground". Edge and corner sources are optional refinements; without them the tool derives edges and corners from the centre tile so you can see the whole set working before you commit to drawing 47 pieces by hand.
Tile size drives the atlas dimensions, so a 32px tile produces a 256×192 sheet across the 8×6 grid. Match it to whatever your project already uses. Changing it later means regenerating, since every exported mapping references pixel offsets on that specific sheet.
Left click paints, right click erases. This is the part worth spending time on: draw an L-shape, a diagonal, a one-tile island, a hole in the middle of a filled area. Those are the cases where a hand-built tileset falls apart, and seeing the correct tile appear at each is how you know the bitmask is being read the way your engine will read it.
Clicking a tile on the generated sheet reports its bitmask value, which neighbours are set, and how the tile is classified — isolated, edge, outer corner, inner corner, junction or filled. That mapping from a number to a picture is the thing that makes autotiling stop feeling like magic, and it is what you need when a tile is appearing in the wrong place and you are trying to work out why.
PNG gives you the atlas. The metadata export gives your engine the mask-to-index table so it knows which tile answers which neighbour configuration — as a Godot or Unity mapping, a Tiled .tsx tileset, or an LDtk JSON definition. The PNG on its own is only half of a working autotile set.
Why the set is 47 tiles on an 8×6 atlas, what the bit values mean, and when a different system is the better answer.
| Tile role | Count |
|---|---|
| Inner Corner | 30 |
| Edge | 6 |
| Junction | 5 |
| Outer Corner | 4 |
| Isolated | 1 |
| Filled | 1 |
Computed from the tile catalog this generator uses. Inner corners dominate because they are the cases where a filled region turns back on itself — the part hand-drawn sets most often get wrong.
A tileset laid out so that every distinct arrangement of neighbours has exactly one tile answering it. Your engine looks at which of the eight surrounding cells are filled, computes a number from that, and draws the matching tile — so a wall automatically grows corners, edges and junctions as you paint. The 47 comes from collapsing 256 possible neighbour configurations down to the ones that are actually visually distinct.
Eight neighbours give 256 combinations, but a corner neighbour only matters when both adjacent edges are also filled — otherwise there is nothing for the corner to connect to. Applying that rule collapses 256 to exactly 47. Sixteen is what you get if you ignore corners entirely and match only north, south, east and west, which is a legitimate simpler option for blocky terrain. 256 would mean drawing many tiles that are pixel-identical.
For a single terrain type, 47 is the smallest set that gets every case right, so "better" usually means "simpler" or "different problem". A 16-tile 4-bit set is far quicker to draw and fine when diagonal joins do not matter. Wang tiles and corner-matching sets match edges between tiles rather than neighbour occupancy, which handles several terrains blending into one another — something the blob set does not do. Pick by what you actually need: fidelity, drawing time, or multi-terrain blending.
Each of the eight neighbours is a power of two, clockwise from north: N=1, NE=2, E=4, SE=8, S=16, SW=32, W=64, NW=128. Add the values of the filled neighbours and you get a single byte identifying the configuration. Neighbours to the north, north-east and east give 1 + 2 + 4 = 7. The tile inspector shows this number for any tile you click, together with which neighbours it represents.
Yes. Godot 4 renamed autotiles to Terrain Sets and bitmasks to terrain peering bits, but the underlying idea and the sheet layout are unchanged. Export the PNG and the mapping, then assign the peering bits in the TileSet editor. Be aware that a lot of Godot autotile tutorials online are written for Godot 3 and describe an editor UI that no longer exists.
A PNG atlas plus metadata for Godot and Unity, a Tiled .tsx tileset, and an LDtk JSON tileset definition. The metadata is the important half: it carries the mask-to-index table so the engine knows which tile answers which neighbour configuration. Exporting only the PNG leaves you to rebuild that mapping by hand.
Almost always bit order. Engines disagree about which direction is bit zero and whether the sequence runs clockwise or anticlockwise, so a sheet that is correct can still render wrong if the engine reads the mask differently. Compare the exported mapping against what your engine documents before redrawing any art — the fix is a remap, not a repaint.
No, that is the point of the tool. Supply one centre tile and the generator derives the full set; supply optional edge and corner sources if you want more control over how the borders look. Drawing all 47 by hand is possible and gives the best results for a finished game, but generating the set first lets you test the terrain logic before committing that time.
No. Your source tiles are read into a canvas in the page and the sheet is generated in your browser. Nothing is transmitted, there is no account, and the exported files are produced locally.
Godot Autotile & Bitmask Guide
The full walkthrough: terrain sets, peering bits, Unity and RPG Maker notes, and the art production order.
Procedural Level Generation Guide
BSP, cellular automata and noise, and how generated layouts feed a terrain set.
2D Procedural Level Generator
Generate the map your autotile set renders, with a validated route from spawn to exit.
2D Game Dev Lab
Every tool in the pipeline in running order — layout, tiles, collision, sprites, audio, economy.