Skip to main content
← All Posts

TileForge: Six Versions in Eight Days

TileForge launched on March 16. I wrote about that already — the canvas renderer, the tileset picker, the basic drawing tools. A functional map editor, shipped and live. What I didn’t expect was what would happen in the eight days that followed. Between March 16 and March 24, TileForge went through six major versions, each one fundamentally expanding what the tool could do. This is the story of that sprint.

v1.1 and v1.2: Stabilizing the Foundation

The first two post-launch versions were about fixing what was broken and filling gaps that became obvious once real usage started. Edge cases in tile placement, UI quirks that slowed down workflows, missing keyboard shortcuts — the kind of work that isn’t glamorous but makes the difference between a demo and a tool. These versions also introduced several small feature additions that users were asking for immediately after launch. Nothing revolutionary here, but they set the stage for what came next by giving me confidence that the core was solid enough to build on aggressively.

v1.3: The WFC Solver and Cloud Storage

Version 1.3 changed what TileForge was, not just how well it worked. The big addition was a Wave Function Collapse solver for procedural map generation.

WFC generates maps by following adjacency rules — you define which tiles can sit next to which, set constraints, and the solver fills in the rest. The result is coherent layouts that look hand-placed but aren’t. Forests flow into clearings. Dungeon corridors connect logically.

I went with a multi-pass pipeline instead of solving everything in one shot. First pass lays down terrain regions. Second pass fills them with ground tiles. Third pass places walls and doors. Each pass builds on the last, which gives much better results than one big solve.

To prove it wasn’t a tech demo, I built One More Night building generators with it. Randomized apartments, offices, warehouses — furniture, doorways, loot spawns, all from WFC rules. Real game content generated in the editor and dropped into a shipping game. That was the validation.

Also added R2 cloud storage. Maps save to Cloudflare R2, so they’re not trapped on one machine. The API is a Cloudflare Worker handling auth, versioning, and presigned uploads. Simple.

v1.5: The Tile Intelligence System

Before v1.5, TileForge treated tiles as dumb pixel rectangles. It knew their position in the tileset and nothing else. The Tile Intelligence System gave them semantic meaning.

Three pieces. TileMeta stores properties — terrain type, walkability, biome, collision. TileTagger analyzes tile images and suggests tags based on color, edges, and similarity to tagged tiles. AutotilePass uses the metadata to pick the right variant based on neighbors — put grass next to dirt and it picks the correct transition piece automatically.

This turns tile placement from tedious to smart. Paint “grass” and the editor handles transitions. The WFC solver benefits too — richer metadata means better adjacency rules and better-looking maps.

v1.5 also added a tileset catalog with attribution, 90%+ test coverage, PixelLab integration (generate tiles with AI right in the editor), and a scatter tool for painting natural distributions of grass, flowers, debris. Select variants, set density, paint.

v1.6: Offline Mode and Recovery

Offline mode. TileForge works without internet now. Service worker caches the app, IndexedDB handles maps when R2 isn’t reachable, changes sync when you’re back online.

Crash recovery. Snapshots every 30 seconds to IndexedDB. Browser crashes, tab closes — next launch offers to restore your work. Combined with multi-stage undo (granular operation history, not just last action), it’s hard to lose work now.

Viewport culling. Large maps were getting sluggish. The renderer now only draws visible tiles. Big maps feel fast again.

Also in v1.6: capability-based plugin permissions, passkey auth for passwordless login, and PSD import — open Photoshop files directly, layers mapped to tileset regions.

Post-v1.6 Polish: March 23–24

Last two days were quality-of-life. Eyedropper, line tool, layer drag reorder, command palette (Ctrl+P), magic wand selection, tile bookmarks, security hardening, resizable sidebar. The kind of stuff that makes a tool feel finished instead of functional.

Where TileForge Stands Now

Eight days ago, TileForge was a basic tile editor. Now it has WFC procedural generation, tile intelligence, cloud storage with offline fallback, crash recovery, PSD import, AI tile generation, and 90%+ test coverage.

Each version built on the last — WFC got better once tile intelligence gave it semantic data, offline mode only mattered once cloud storage existed. Shipping frequently kept each version coherent instead of letting features pile up unreleased.

TileForge is now the tool I actually want to use when building maps for our games. That was the goal.

— Bruno