Strataris: The Screensaver That Became a Game

Screenshot from the cockpit of my macOS game, Strataris: Galactic Colony Defence

Strataris, in the heat of battle

It’s done. After five months, Strataris is out: a first-person shoot-‘em-up where you fly low over alien worlds, defend a handful of colony buildings from waves of attacking craft, and warp on to the next planet when the skies are clear. There’s a high score table. There’s a cloaking device you’ll have to earn. There’s a rotating database of enemy ships that exists for no good reason other than I thought it was cool.

It is, fundamentally, a game about blasting spaceships for ten minutes. That was always the point. More on that later.

I want to write down how it happened, because the finished thing looks far more deliberate than the journey actually was. The truth is messier, and the messy version is the honest one.

It started as a screensaver

I did not set out to make a game. I set out to make a screensaver.

I had a little procedural terrain generator knocking about — fractal noise, some height-banded colour, the kind of thing that makes a pleasant rolling landscape if you squint. I thought it might make a nice screensaver: generate a world, drift a camera over it, let it lull you while you’re not at your desk. Harmless. Finite. A weekend, I told myself, with the confidence of a man who has never once finished anything in a weekend.

Then, as so often happens, Hacker News ruined everything. As if fate herself had stepped in, someone linked to Sebastian Macke’s wonderful write-up of the Voxel Space engine — the rendering trick behind Comanche and a whole generation of early-90s terrain games. If you’ve never seen it, go and look; it’s a beautiful, clever little hack that produces gorgeous landscapes from a height-map and a colour map and almost no maths by modern standards.

I was hooked. I had to build my own. So I did — a basic version, in Swift, just to see my own generated terrain rendered the old way. And the first time I flew over a landscape that I had made, rendered with a technique I’d just learned, something clicked. This was no longer a screensaver. A screensaver is something you watch. I wanted to be in there.

The pivot, and the part where I made my own life harder

So it became a game. Of course it did.

And almost immediately I made a decision that cost me weeks: I wanted proper flight. Not a camera on rails, drifting prettily. I wanted to bank and climb and dive and roll — full six degrees of freedom, the works. And the Voxel Space technique, lovely as it is, really doesn’t want to do that. It’s built for a camera that looks roughly forward over a landscape, not one that’s upside down doing a barrel roll over a colony.

So I tore out the renderer I’d been so pleased with and rebuilt the whole world as a proper 3D triangle mesh. This is the part of the story where, if this were a film, you’d get a montage. In reality it was a lot of staring at a black screen, a lot of terrain that rendered inside-out, and at least one evening where the entire world rendered as a single enormous spike stretching to infinity, which I found briefly hilarious and then not at all.

I will spare you the details, because I promised myself this wouldn’t be a technical post. But I will tell you that for a long, demoralising stretch, the colony buildings floated in the sky. Detached from their bases. Hovering serenely above the planet like they’d given up on gravity entirely. I fixed it, broke it, fixed it again. There was a memorable week where the buildings were correctly placed but stubbornly transparent until you flew right up to them, so the whole colony shimmered into existence like a bad magic trick. My notes from that period are not fit for publication.

The floppy disk rule

Here is the genuinely silly thing I did to myself, and the thing I’m proudest of.

I decided, very early and for no sensible reason, that the game would use no assets. None. No texture files, no audio files, no 3D model files, no fonts. Everything — the terrain, the ships, the buildings, the music, the sound effects, even the crackly radio voice of your colony calling for help — had to be generated in code. Maths all the way down.

And I set myself a target that makes no practical sense in 2026: it had to fit on a floppy disk (and yes, I have Hacker News to thank for this too). A 1.44 MB floppy. A storage medium that hasn’t shipped in a new computer in two decades and which most people reading this have never physically held.

Why? Honestly, because constraints are the best creative tool I know. When you can’t just load a file, you have to understand the thing. You can’t drop in an MP3, so you sit down and build a synthesiser and learn, properly, how a plucked string actually sounds. You can’t ship a font, so you draw one, pixel by pixel. It’s slower and it’s harder and it forces you to know exactly what every byte is doing. The game itself comes in under a megabyte. It fits on the floppy, with room to spare. Nobody asked for this. I don’t care.

Why it had to feel like 1991

The other thing driving all of this, underneath the technical stubbornness, was nostalgia. Unembarrassed, full-strength nostalgia.

I grew up on the Amiga and the Atari ST. Those machines, and the games on them, are a huge part of why I do any of this. And the thing those games understood — the thing I think a lot of modern games have quietly forgotten — is that playability beats fidelity every single time. Those games loaded in seconds, dropped you straight into the action, and gave you that quick hit of joy and then let you get on with your life. No forty-minute tutorial. No cut-scene you can’t skip. No launcher that needs updating before the launcher that launches the game.

There’s a lineage here I’m happy to admit to. Strataris owes an obvious debt to Defender — that same frantic dance of protecting things on the ground while the sky tries to kill you — and an even bigger one to Rescue on Fractalus!, which put you in a cockpit, low over an alien world, in a way that genuinely frightened twelve-year-old me. I am not pretending to have invented anything. I’m standing on the shoulders of people who did extraordinary work with a fraction of the resources I have, and trying to capture a little of the feeling they gave me.

Because sometimes you don’t want a hundred-hour open-world epic with a skill tree and a season pass. Sometimes you just want to blast some spaceships for ten minutes, get your initials on the board, and feel briefly, stupidly happy.

A screenshot of the high-score table in my macOS game, Strataris

The wins, because there were plenty

It would be dishonest to make this sound like five months of unbroken misery. It wasn’t. There were moments that made the whole thing worth it.

The first time the title theme played — a full, generated piece of music coming out of code I’d written, with no audio file anywhere — I sat there and grinned like an idiot. The first clean flight, banking over a ridge with the buildings correctly on the ground for once, felt like flying. The first time the warp sequence worked end to end — engines spooling up, light streaking past, the planet falling away — I ran it about thirty times in a row. The high score table, with its little stardate column, scratches the exact itch it was always meant to scratch. And getting that final binary size down, watching it slip under the floppy line, was a genuinely happy afternoon.

That’s the deal with a labour of love. The frustration is real — I’m not going to pretend the floating buildings didn’t cost me an evening or two of my actual good mood — but the wins land harder because you fought for them.

The title screen of my macOS game, Strataris

Go and play it

Strataris is out now, and like everything I make, it’s free — properly free, public domain, no catch. I’ve written before about why all my software is free, so I won’t relitigate it here, except to say: I built this because I wanted it to exist, and now it does, and you should have it.

You can find it, with screenshots and downloads, on its product page. It’s a native Mac app. It’ll fit on a floppy you almost certainly don’t own.

If you’d like to tell me what I got wrong, or just say hello, you can join the discussion on Hacker News — fittingly, the same place that started all this trouble in the first place.

Go defend a colony. Get your initials on the board. Ten minutes. That’s all it asks.

That was always the point.