All games

Arcade action

In development

Project Rescue

A Figit Toy featuring Black Airplane

A Defender in a software agency’s clothes, and a toy rather than a portfolio piece. One prop fighter, a wrapping strip of coastline, and a great deal of work arriving faster than you can carry it home.

Play now — Project Rescue

Browser — desktop, phone in the works but its rough in both directions still

The loop

Scope-creep drones descend on abandoned projects and start hauling them upward. A drone that reaches the ceiling destroys the project and comes back as tech debt — fast, homing, and there for the rest of the run.

So you shoot the drone before it gets there, catch the project as it falls, and fly it to the hangar. A heavy crate slows the plane down, which is the whole tension of carrying one: the longer you hold it, the worse everything else on the board gets. Anything you are still carrying dies with you.

The world wraps, so nothing is ever behind you for long, and the scanner along the top of the screen is how you find out what is happening on the far side of it.

Everything is named after the day job

Black Airplane is a software agency, and the game dramatises two of the things it actually does — rescuing projects that are already late, unstable or over budget, and deciding what to do with old software. So the cargo is a Project, the landers are Scope creep, the mutants are Tech debt, the bombers are Flaky tests, the swarmers come out of a Dependency pod, the smart bomb is a Hotfix and hyperspace is a Rollback. A wave is a Sprint. Home is the Hangar.

The four acts are the four phases of a modernization: Assess, Decide, Modernize, Transition. A delivered project is retained, refactored, replaced or retired. The rule the spec sets is that a proposed feature with no counterpart in the real work does not ship, which is a strong constraint for a game and a good one.

Built to be reproducible

The simulation is pure and deterministic, kept in its own module with no DOM, no Phaser and no knowledge of the viewport, and it does its arithmetic in fixed point at 1/256 units rather than in floats. The renderer imports the simulation and never the other way round.

That is not architecture for its own sake: it means a run can be replayed from its inputs and get the same answer, which is what a leaderboard needs before it can believe a score. A determinism gate runs after any change to the simulation and two runs have to print identical checksums; a mismatch blocks the release.

Still being built

It is playable now and the counters are live, but it is not finished — the milestones after this one bring the rest of the bestiary, the integrity verifier and the admin side. It is on the site early because a toy nobody can try is not a toy.

The field

What is out there

The vocabulary is fixed by the spec, because the naming is the joke and a generic Defender clone is not the game.

Built with : Phaser · TypeScript · Laravel · PHP · Filament · Postgres · Redis · Tailwind

All games