Arcade action
In developmentA 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.
Browser — desktop, phone in the works but its rough in both directions still
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.
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.
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.
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 hangar with its doors open and the fleet at home. Sprint 1, Assess — the first of the four acts.
Three parallax layers of coastline, a wrapping world, and control towers to navigate by.
Fly far enough in either direction and you arrive back where you started, which is what makes the scanner worth reading.
The vocabulary is fixed by the spec, because the naming is the joke and a generic Defender clone is not the game.
Yours. Carries one project at a time, and flies worse the heavier it is.
Settles onto a project and hauls it towards the ceiling. The whole game is stopping this.
What a project becomes when scope creep gets it to the top. Fast, homing, and permanent.
The bomber. Fails in your way rather than at you.
Splits into transitive dependencies, which is exactly what the real ones do.
Arrives when a sprint has gone on too long, and does not negotiate.
The cargo. Catch it on the way down and fly it home.
What is left when one hits the ground.
A project let go gently enough comes down under one of these.
Every agency toy needs one.
Built with : Phaser · TypeScript · Laravel · PHP · Filament · Postgres · Redis · Tailwind