Building a platformer where every enemy can be stomped
Maria and the Missing Coder has one promise that sounds simple: every enemy in the game, both bosses included, can be beaten by jumping on its head. No power-up required. Keeping that promise across twelve worlds took more testing than anything else in the game - and a few bugs that we would rather forget.
Why “stomp only” is a hard rule
Maria can pick up an energy drink and shoot debugging sparks. It would have been easy to design a few enemies that only sparks can handle: a moth that flies too high, a boss that never comes down. We decided against it. Sparks are a bonus that you can lose - one hit takes the power away - and a platformer that becomes unwinnable because you got hit once in the wrong place is not fun. So the rule became: sparks make things faster, never possible.
That rule has to be checked, not just intended. A level is not a list of good intentions; it is a map of tiles, and the question is whether Maria's actual jump, with its actual height and distance, can reach every enemy from above.
Measuring the jump
Everything starts with two numbers. At full running speed, Maria's jump carries her 4.8 tiles sideways and 3.4 tiles up. The catch is that those two maximums do not happen together. A jump onto a ledge three tiles up only carries her about three tiles sideways, because she lands on it on the way down, when most of the arc is already used.
So the level generator follows a small table of what is reachable:
| Target is… | Furthest sideways |
|---|---|
| 1 tile higher | 4 tiles |
| 2-3 tiles higher | 3 tiles |
| Level | 4 tiles |
| Lower | 5-6 tiles |
Pits in the ground are at most three tiles wide. Anything wider needs a moving platform or ledges to cross. The game is also forgiving at the edges: for a moment after running off a ledge you can still jump, and a jump pressed just before landing fires by itself. Those small allowances are why the margins in the table feel comfortable rather than pixel-perfect.
A jump graph for every map
With the jump measured, a checking tool builds a jump graph for each level: every place Maria can stand, connected to every other place she can reach with one jump, using the real jump distances from the game's code. Then it asks a dozen questions of that graph, including:
- Can the exit door be reached from the start?
- Does every enemy stand somewhere reachable, and can Maria land on it from above? For flying enemies: is there ground under the lowest point of their flight, within jumping distance?
- Can every crate be hit from below, and is every coffee bean within reach?
- Is there enough headroom above every surface, so a block does not hit Maria's head mid-jump?
- Are spikes never longer than three tiles without a platform to carry you over?
- Is each boss arena flat and free of traps?
- Is there no stretch of more than 30 tiles without an enemy? (That one catches dull, empty level endings.)
A second tool then runs the real game engine outside the browser and plays it the way a player would, with key presses. It checks that every enemy type, and both bosses, fall to stomping alone - three hearts, no sparks, the fire button never pressed.
The rules the tests taught us
Many of the level design rules came from failed tests rather than from planning. A few of our favourites:
- No solid blocks right after a pit. Maria hits them in mid-air, loses all her speed and drops into the pit. Thin ledges are fine there, because they only block from above.
- A dive off a high ledge needs a big landing. Jumping off a high ledge at a run, Maria carries on another four tiles to the right. If the island below ends sooner, the player falls into the void through no fault of their own.
- Flying enemies sit in row nine. Higher, and the bottom of their flight is out of stomping range. That is a measured number, not a guess.
- Coffee over a pit goes on the jump's arc, not in a neat row. At one point a level had three beans in a tidy line over a gap. The middle one could not be collected: over the middle of the pit, Maria is already four tiles higher than the line.
- Every moving platform must be needed. A drawer that slides over solder six tiles wide is needed, because no jump reaches that far. A platform you can jump past is just decoration.
The boss that walked off the map
The bosses gave us the most memorable bug. The Great Deadline, the boss of world six, originally started chasing Maria from the very first frame of the level - long before she reached its room. On the way it would walk into a hole in the floor and fall off the map. The level's door only opens when the boss is defeated, so with the boss gone, the door stayed shut forever and the stage could not be finished.
The fix was to give each boss its own patch of floor. It now follows Maria only within its room, never more than eight tiles from where it started. That also stopped it shooting at Maria while she was still riding a platform across to its room, which felt unfair. A dedicated boss test checks all of this on the real maps: the boss waits in its room, falls to stomping alone, and the stage actually ends after the fight.
The boss rooms themselves follow the same thinking. They are empty and roomy, and the boss stands in the middle, not by the entrance, so it has space to move and Maria has space to land and run up after every stomp. For the ten tiles before an arena, the generator places no enemies, so you never have to fight on the edge of the pit that leads to the boss.
How to beat the bosses
Both bosses follow the same pattern, so the same plan works:
- Watch first. The boss walks back and forth across its room and throws deadlines at you. Spend a few seconds learning its rhythm from the far side.
- Stomp, then use the stun. After every hit the boss is stunned: it stops, stops throwing and cannot hurt you. That is your window to bounce off it again or to walk calmly back into position.
- Count. The Great Deadline (world six) falls after three stomps. The Root Deadline (world twelve) needs four, moves faster and throws two deadlines at once - one ahead, one at its own feet. Keep more distance than in world six and do not rush: the stun after each stomp gives you all the time you need to reset.
Arrive with as many hearts as you can. Hearts carry over from stage to stage, up to five, and there are none lying on the maps: the only source is coffee, one heart for every fiftieth bean. Every bean you pick up in worlds one to five is, in a small way, an investment in the fight in world six.
Twelve worlds, one rule
From Bug Garden to the Deadline Core, every map in the game passes those checks: the door is reachable, every enemy can be stomped, every bean can be collected. If you find a spot where that is not true, it is a bug, and we would genuinely like to hear about it.
← All guides