Developer Diary: Building the 100 Screens of Apocalypso!
Ten apocalypses, 250 tins and one jump. How we designed and tested a 100-screen platformer that fits in a 48K Spectrum.
Apocalypso! is the biggest game in the arcade: 100 named screens in ten zones, each zone a different end of the world. This is how it came together.
One rule: no weapon
We started with a constraint. Steve, the hero, can walk left, walk right and jump. Nothing else. That keeps the game readable at a glance, which matters on a screen of 256 × 192 pixels, and it means every danger has to be avoided rather than shot. It also meant the jump had to feel right, so it only ever comes from a fire button or the jump key, never from pushing up on a joystick.
Ten zones, ten mechanics
A hundred screens of the same thing would be dull, so each zone of ten has its own rule. Soggy Bottoms floods on a timer. Saucer Street has laser fences that switch on and off. Toaster Rebellion has conveyor belts, Lava Lounge has heat columns you can float on, and Brrrmingham has ice. Mushroom Mayhem bounces you high, Rock 'n' Roll Falls has rubble that collapses under you, and on Blackout Boulevard the lights go out every few seconds.
Each mechanic is needed to reach some of the tins in its zone, so you can't ignore it.
Checking every screen can be finished
The hardest problem with a big platformer isn't drawing the screens; it's making sure none of them is broken. A tin one pixel too high to reach, or a ledge you can drop onto but never leave, ruins a game.
So alongside the game we wrote a model of its physics: how far Steve walks each frame, how high and how far he jumps, how the Moon Boots change that, and how each zone's mechanic moves him. The model checks every one of the 100 screens and reports any tin, treasure box or exit it can't reach, and any spot where you could get stuck with no way out alive. The game only passed when the model found no problems at all.
Then an autopilot, driven by the same model, played the whole game through the real Sinclair ROM loaders, on the 48K with the keyboard and the 128K with a Kempston joystick, collecting all 250 tins and reaching The Bunker.
Fitting it into 48K
A hundred screens, 111 quiz questions, sprites for dozens of enemies and a soundtrack is a lot for 48 KB, some of which the screen itself needs. Room names, questions and answers share a compression dictionary of common words, cutting the text by about a third. Each zone's enemy graphics are unpacked into a cache when you enter it, so only the current zone's sprites take up space. When we added the AY music, it fitted in the space that was left at the top of memory without moving a single variable.
Music for the end of the world
The 128K soundtrack, "Last Dance Before The End", is one tune arranged ten ways: each zone plays it in its own key, tempo and drum pattern, down to a slow, half-time version for Blackout Boulevard. Treasure boxes, banners, wrong answers and the ending each have a jingle that hands back to the zone's music. Listen on the game's page, or read about the AY chip that plays it.
What we'd do again
Build the checking tools first. Every bug the model found before release was one no player ever had to meet. If you're writing a Spectrum game of your own, our guide to writing a Spectrum game today collects the lessons from all seven of ours.