BLIGHT.IO: a lander game in one HTML file
What I learned building a Zarch-lineage lander on Io by prompting AI: mechanics that tell the story without text, a synthesised soundtrack, and a leaderboard that's honest about what it can't verify.

Play it here: mouse, keyboard or Xbox pad.
Zarch was the game that sold the Acorn Archimedes: a lander you steer by tilting it with the mouse, flying over a patchwork landscape that an alien virus slowly infects. I wanted my own version. Not a remake, and not accurate to the original, just the version I'd want to play. BLIGHT.IO is that game: an original piece in Zarch's lineage, set on Jupiter's moon Io.
Built by prompting
I didn't write the code by hand. I designed it, played it and directed it, mostly with Claude (Fable 5.1, then Opus 5) and some ChatGPT and Gemini along the way. The loop was fast: change something, play for a minute, decide by feel, go again. Most of the work was deciding what to keep.
Let the mechanics tell the story
There's no explanatory text in the game. Everything the player needs to know is in how the world reacts:
- Your exhaust scorches the ground. Hover too long and you damage the moon you're protecting.
- Every shot costs a point. Spraying fire isn't free.
- Shot trees burst into red dust and blight the tile. Careless shooting spreads the problem.
- The end-of-wave tally scores the land you saved, minus what got blighted or scorched. The moon you leave is the moon you inherit.
- The ship's shadow is the altimeter: tight and black when you're low, wide and faint when you're high.
- Stars parallax-scroll and streak with your velocity, then fade out as you climb above the horizon.
The look
There are two palettes. The default is Io: sulphur, rust and cream bands, black vents, a lava-lake "sea" and a violet blight. Classic Zarch green is still in there as an alternative. The terrain is low-poly and the font is Press Start 2P, embedded in the file as base64.
One file, no samples
The whole game is a single HTML file. Every note is synthesised live with Web Audio, with no samples and no engine. With the font embedded, the only network request the game makes is to the leaderboard.
An honest leaderboard
Scores go to a small Cloudflare Worker backed by D1. Proper anti-cheat would mean a seeded world and replaying the player's inputs on the server. Runs are long, so I dropped that. The Worker only rejects scores that are malformed, implausible or flooding in. It's a wall of names, not a ranked ladder, and I'd rather say so than pretend otherwise.
What's next
- An itch.io release (pay what you want).
- A landing assist that fades based on how often you die, not on elapsed time. Landing legs would deploy near the pad so you can see it working.
- Gravity as the difficulty setting.