Backend
I built a free browser tool that turns 2 ground tiles into a full 47-tile autotile set
holometer Dev.to (EN Zone)
24 views
You draw a grass tile. You draw a dirt tile. Then you try to put a dirt path on the grass and realize the two tiles do not meet: you also need every edge, every inner corner, every outer corner, the one-tile-wide path and the single island.
Counted properly, that is 47 tiles per terrain pair. Draw them by hand once and you will not want to do it for the second pair.
So I built a tool that generates the full set from the two source tiles: 47-Tile Terrain Autotile Maker. Free, no sign-up, and nothing is uploaded; it all runs in your browser.
Why 47 and not 256
A tile has 8 neighbors, so there are 256 possible neighbor combinations. Most of them cannot happen on a real map. A diagonal neighbor only matters when both adjacent sides are also connected; a tile that touches only its top-right corner has no visible corner to draw.
Remove those impossible diagonals and 256 collapses to 47. This is the "3x3 minimal" blob set that Godot's terrain system and Unity's Rule Tile both expect. The tool enumerates the 47 masks mechanically, so the narrow path and the island never go missing.
What you get
Pick two ground types. Six pairs are built in (grass to dirt, grass to water, sand to water, snow to rock, cave floor to wall, cobblestone to grass), and A and B can be swapped.
Choose a tile size: 16, 32, 48 or 64 px.
Pick a boundary style: natural, shore (a light and dark rim against water) or cliff (top face, cliff edge, shadow below).
Adjust corner roundness, edge roughness and border width.
The set is placed on a sample map with an island, a winding path and inside corners, so you can see whether the edges actually connect before you download anything. You can also paint on the map yourself.
Exports:
the 47 tiles as an 8 x 6 PNG sheet at 1x, 2x, 4x or 8x (nearest-neighbor, no blur)
the sample map as PNG
a JSON manifest with each tile's neighbor mask, Godot peering bits and Unity This / NotThis conditions
The rule that matters most: no new colors
The tempting shortcut is to anti-alias the boundary. It looks smooth in a preview and wrong in a real tilemap, because the in-between colors exist in neither source tile and they break the palette.
So the boundary only uses colors that already exist in tile A or tile B, including the shore rim and the cliff shadow. One of the automated checks counts unique RGB values in every output and fails if a color appears that was not in the inputs.
What it does not do
It does not write Godot .tres files or Unity RuleTile assets. The JSON is a mapping table; you still assign the tiles in the editor.
It does not produce RPG Maker MZ A2 sheets. MZ uses its own 6-part autotile layout, which is a separate converter I have not built yet.
Numbers
256 neighbor masks in, 47 tiles out
generation of the full set takes about 10 ms at 32 px (engine only, Apple M2 Pro, measured in Node 26)
57 automated assertions, including "same seed gives byte-identical output"
Try it here: https://holometer.net/autotile-maker/en/?utm_source=devto&utm_medium=article&utm_campaign=tools
It is one of a set of small pixel-art tools I keep on the same site (sprite sheet fixer, GB Studio converter, palette tools). If the boundaries come out wrong for your tiles, a screenshot in the comments helps me more than a description.
Read original: https://dev.to/mojah2929mojaha/i-built-a-free-browser-tool-that-turns-2-ground-tiles-into-a-full-47-tile-autotile-set-87m
← Previous
I Built a 64-Bit OS from Scratch: BIOS/UEFI, GUI, Networking, a Browser, and DOOM
Next →
Taking Advantage of Cloud Run Sandboxes with Google Apps Script for Google Workspace
Related
The benchmark everyone cited for "fastest backend" was archived in March, and the reason is the interesting part
Backend
56
Dev.to (EN Zone)
Finding Exoplanets in Noisy Data with Machine Learning
Backend
46
DEV Community
How to automatically find the batch size when using Accelerate with FSDP2? [D]
Backend
43
Reddit r/MachineLearning
Cross-Chain Bridge Risk Assessment: Aave V3
Backend
36
DEV Community
Comments0
No comments yet — be the first