Mutaspire devlog #2: A spire made of text files
Every floor of Mutaspire is stacked from small hand-made rooms written as plain text. Here's why we chose ASCII over a level editor, and how a seed turns them into forty different floors.
A floor in Mutaspire is one screen wide and a few screens tall. You enter at the bottom, the exits wait at the top, and the Rot follows you up. Floors have to feel hand-made — fair jumps, readable fights — but every run should still be different.
Rooms as text
So every floor is a stack of chunks: small rooms, designed by hand, written as text files. This is the bottom of a boss arena:
........============........
............................
...=======........=======...
............................
.=====................=====.
............................
..P......................B..
############################
# is solid rock, = is a one-way platform you can jump up through, P is where Muta starts and B is where the boss appears. Other letters place enemies (K ground, F flying, T wall-mounted, E elite candidate), hazards (^ thorny roots, v falling stalactites), bounce mushrooms, poison pools, pistons, conveyor belts, hook rings and fossils.
The letters don't say which enemy — only what kind. A K is a Maggot in the Root Caverns, a Hopping Shroom on the Fungal Floors and a Gear Bug in the Rusted Gears, so the same room plays differently in every zone.
Why text?
- Fast to write. A new room is a minute of typing, not an afternoon in an editor.
- Easy to check. A small script reads every chunk and makes sure its size is right and that the exit can actually be reached from the start. Broken rooms never make it into the game.
- Easy to read in a diff. When a room changes, we can see exactly what changed.
Stacking the floor
A normal floor is an entry chunk, three middle chunks and an exit chunk on top. The floor generator picks them with the run's seed, mirrors most of them at random, and decides which enemy markers actually spawn. Same seed, same spire — which is exactly how the Daily Seed works: everyone gets the same floors and the same part pool that day.
Doors, not maps
At the top of each floor are two or three doors, and the icon on each tells you what the next floor is: a Part floor (an elite, then a choice of three parts), an Essence floor, a Cocoon (heal or +1 max heart), an Evolution Tube (level up a part), an Event, a Challenge, a Fossil floor or, rarely, a Wandering Merchant. Floor 4 of every zone is always a safe Nest Room with a shop, and floor 8 is the boss.
That gives you a real decision every 30–45 seconds, and it's never a blind one: you always know what's behind the door.
Next time: the purple stuff rising beneath your feet, and a rule we had to change after playtesting.