Written by GuillaumeTechProject Skyfall
Skyfall, part 8: a map editor that draws with the game
November 12, 2026: the six arenas left the Tiled format for stages, stacks of layers made in a new map editor that draws them with the game's own renderer. The same day, I redesigned every arena around one feature.

Part 8 of the Skyfall story. Part 7 covered the track editor, the first of three tools I built from November 10 to 12. This article covers the second one: a new map editor. It landed on November 12, with a new map format and a redesign of the six arenas. The third tool, the sprite editor, is in part 9.
Table of contents
- From tiles to stages
- The canvas is the game
- Checks, traps and effects
- Six arenas, redesigned
- Dash-only hideouts
- By the numbers
- The Skyfall story
From tiles to stages
In part 5, Skyfall got its first map editor: a small Tiled made for the game, in its own repository. It saved the Lua format that Tiled exports, with tiles from tilesets. The six arenas from part 6 came out of it, and each one had its own art PNGs, drawn for its layout.
On November 12, the six arenas became stages. A stage is a Lua file, assets/maps/<id>/<id>.lua, of 40 by 23 cells of 8 pixels, so 320 by 184 pixels. It’s a stack of layers, drawn from the bottom up:
- Effect layers, with one sky or weather kind each. There are 10 sky kinds: a gradient, stars, a moon or sun, an aurora, light shafts, mountains, a tree line, a skyline, floating isles and cloud banks. There are 11 weather kinds: rain, snow, ash, dust, leaves, embers, fireflies, wind, fog, a waterfall and lightning. A layer only stores the settings that differ from the defaults.
- Tile layers, with one character per cell. A tile layer has a role: solid for walls and floors, one-way for planks, or back for scenery that nothing collides with.
- Object layers: the spawn points, the lights (torches, braziers, frost braziers, lanterns and crystals), and the decor, like banners, chains, cobwebs and Embergrove’s bottle kiln.
- The play layer, where players, arrows, chests and traps are drawn. Tile layers above it cover the players, so an arrow stuck in a wall sinks into it.
The art no longer belongs to one map. Each terrain is a single PNG, a 96 by 64 autotile template, and the renderer picks each cell’s tile from its neighbours: corners, edges, pillars, inner corners, grass on top and icicles below. So the per-map art PNGs are gone. The old Tiled maps, the two Towerfall maps and The Choosen One, still load, but they’re out of the rotation.
The canvas is the game
The new editor is a standalone LÖVE app, like the track editor, with the same pixel-art widgets. I start it with love tools/map/editor. The difference is in the middle of the screen: the editor draws the map with the game’s own renderer, engine/map/stage/. The lights, the sky, the weather and the torch flames in the editor are the game’s.

The layer list is on the left, the top one drawn last. Layers can be added, copied, moved, deleted, hidden and locked. Under the list, the palette changes with the active layer: terrains as 3 by 3 thumbnails grouped by biome, objects by group, or the effect kinds.
The tools are a brush, a rectangle, a fill, an eraser, a picker and a selection, with sizes 1 to 3, and the right button erases. A selection copies, cuts, pastes, moves, deletes and flips. Every arena is symmetric, so Mirror (M) repeats each edit on the mirrored column. A wide prop’s copy goes where its sprite mirrors, so the kiln in the middle mirrors onto itself. Ctrl+M copies the left half onto the right after the fact.
On an object layer, the brush places, drags and removes objects.

Checks, traps and effects
Above the canvas, next to Mirror and Grid, four more toggles change the view. Lights previews the map’s tint and its lights. Checks marks the map’s rule breaks on the canvas: an edge whose opening doesn’t match the opposite side, a spawn that isn’t 3 rows above a floor, a one-way platform over open air, or fewer than 2 mirrored pairs of spawns. Traps draws the map’s traps with the game’s trap renderer. I still write the traps by hand in each map’s hazards.lua, and the editor shows them without changing them. Animate plays the sky, the weather and the traps.
The inspector, on the right, has the map’s name, music and tint, then the layer’s name, role and tint. For an effect layer, it lists every setting: sliders, colour swatches, checkboxes and menus, with a Defaults button and a New seed button.

Ctrl+S saves the map and its preview.png, the picture that Stage Select and the track editor’s picker show. F5 saves, then starts the game on that map.
The map’s name is also its folder: “Crag Peak” goes in assets/maps/crag-peak/. Since the evening of November 12, a save after a rename moves the folder. For a map in the rotation, it also updates the map list, Stage Select, the English title and the tests, then copies the files to the server. The save stops with an error when the name is already taken.
Six arenas, redesigned
The same day, I redesigned the six arenas, each around one signature feature, listed in docs/map-design.md:
- Elderhollow: a hollow oak, 6 cells wide, with a tunnel 2 rows high through it.
- Stormkeep: a keep with battlements on two hanging piers, and a gate passage through its base.
- Embergrove: the anvil in front of the bottle kiln, with crane arms on chains on either side of the kiln’s neck.
- Oubliette: a trapdoor over the pit, with a cage of bars hanging under it.
- Driftmoor: a marble shrine on the central island.
- Cragspire: a ziggurat of four steps under the bell.
Around each signature, the layouts follow the movement numbers: steps of 3 rows with gaps of 1 to 3 tiles, edge grabs only up to 4 or 5 rows next to a wall, and nothing stacked within 3 rows. Each arena passed the reach check, which tests that every tile you can stand on is reachable, within a draft or two.

Part 6 has the same six arenas as they were on November 9.
Dash-only hideouts
That evening, three arenas got a hideout that only a dash reaches. Since part 6, a dash tucks the archer to 8 pixels, so it fits into a gap only one row high. An archer who stops in that gap lies crouched, and fades like any crouched archer.
In Elderhollow, the oak trunk stops one row above the ground, and the hollow under it is lit by glowing mushrooms. In Embergrove, the row under the anvil became an ash pit. In Oubliette, the lower cells have bars, with a hole dug under each one.
By the numbers
- 6 commits on November 12 for the stage format, the editor and the arenas.
- 148 files changed in the commit that brought the stages.
- About 2,600 lines of Lua for the editor.
- 6 arenas in the rotation, all of them stages.
The Skyfall story
- From a Defold cube to a fresh start in LÖVE
- Wall jumps, a real bow and a quiet network
- Rounds, rain, torches and a VHS replay
- The War Room and the armory
- A map editor, a ghost and the Champion Forge
- Pixel-art menus, six arenas and sound at last
- A track editor for the music
- A map editor that draws with the game (this article)
- A sprite editor for the blocks and props


