// DEVLOG #002 · STACK
The pilots nobody programmed
Why GRAKKON's AI wingmates run on subsumption architecture instead of a script — the same less-is-more discipline as the ship art, and the honest cost of not knowing what a pilot will do next.
Somebody asked me last week how I “scripted” the AI pilots. Wrong verb. I didn’t script them. I stacked them, and then I got out of the way.
That distinction is the whole post.
What subsumption actually is
The idea isn’t mine. It’s Rodney Brooks’, out of a 1991 robotics paper — build a robot as a stack of dead-simple behaviors instead of one big brain. Bottom layer: don’t hit the wall. Next layer up: wander. Next layer up: explore. Each layer is trivial on its own. None of them knows the others exist. A higher layer can suppress a lower one when it has something more urgent to say — but there’s no manager behavior sitting on top, watching the whole board and calling plays. Nobody’s driving. The stack drives.
Take the wall-avoider away from the higher layers and the robot still doesn’t crash — it just never explores. Add the explorer and it doesn’t replace anything below it — it rides on top, borrowing the lower layers’ work for free. Complex-looking behavior emerges from that stack. Nobody authored the emergent part. That’s not a bug in the description — that’s the point of the architecture.
Why we didn’t build a state machine instead
The obvious way to build an NPC is a big flowchart: if X then do Y, else check Z. I’ve built those. They’re honest, predictable, and they die the same death every time — the flowchart gets bigger than a human can hold in their head, and the “personality” stops being a personality and starts being a maze of edge cases duct-taped together at 2am.
That’s the same trap the ship art dodges. GRAKKON draws a hull as a handful of stroked vector lines instead of a few thousand polygons, not because polygons are hard but because the constraint is the aesthetic — less is more, and the thing you leave out is doing as much work as the thing you draw. Subsumption is that exact same bet, aimed at behavior instead of geometry. Don’t author the pilot. Author a handful of small, honest reactions, stack them in priority order, and let the interesting part fall out of the stack instead of out of your outline.
It’s a harder sell than it sounds. A flowchart feels like control. A behavior stack feels like you’ve let go of the wheel. You have. That’s the trade.
Where you actually meet it
A galaxy is a field that has to keep working whether a human is sitting in it or not. When real pilots thin out, AI wingmates take the empty seats — mining the belt, running escort, keeping the comms honest. When real pilots pile back in, the machines fall back and make room. No announcement. No fanfare. No thank-you. The seat count barely moves. Only who’s flying it does.
None of that is a script running “player is absent, spawn helper.” It’s the same layered stack the welcoming committee runs on, tuned for a wingmate instead of a tutor: a floor behavior that just holds position and patrols when nothing’s happening, a layer above that reacts if a friendly takes fire, a layer above that reacts if the wingmate itself takes fire, and — when there’s something worth mining or something worth guarding — a layer that goes and does that job instead. Whichever layer’s condition is loudest right now wins, and the wingmate falls back to the quieter layer the second it isn’t. You don’t get a to-do list. You get a pilot that’s always doing the most urgent true thing.
The felt result is a galaxy that doesn’t check whether you logged on before it starts working.
The honest part
Here’s the thing I have to own about this, out loud: I don’t always know what a wingmate is going to do next either. That’s not false modesty. There’s no central plan to read — the “decision” is whichever layer’s sensing condition happens to be true this tick, and that depends on where everyone is, who’s shooting at what, and what’s drifting through a mining radius at that exact moment. Ask me what my own NPC will do in ninety seconds and my honest answer is a guess.
That’s the trade I made on purpose, and I’d make it again. The alternative — a flowchart big enough to cover every situation a live galaxy throws at it — doesn’t stay honest past the first hour of playtesting. It becomes a pile of special cases, and special cases are where “personality” goes to die. What I got instead is behavior that reads as alive, because it’s actually reacting to the field in front of it and not executing a memorized path. The cost is that tuning it is less like debugging and more like raising something — you nudge a threshold, watch what shakes loose three layers up that you didn’t touch, and learn to respect that the stack has opinions you didn’t put there.
Some of that is the same machinery that runs the welcoming committee in ORION — DOCKMASTER, PIP, BULLSEYE — the same compiled-behavior engine under Ironlogic, plain-English briefs turned into a stack instead of a line of code. I’ve written about that one already. This post is about the crew you meet after the tutorial’s over — the wingmates holding the field at 3am, doing jobs nobody assigned them, because nobody had to.
I still don’t fully trust it. I still ship it. That’s the arcade for you — you don’t get to see the whole board before you insert the coin.
— Ray