// DEVLOG #001 · LIFTOFF
How GRAKKON is being built
An honest tour of the stack, the salvage loop under the Tide, and what a solo human plus a team of AI agents can actually ship in a browser tab.
Housekeeping: this is post #001, and the game underneath it has moved on since I wrote it — same duty date, current game, rebuilt in place.
GRAKKON is a free real-time multiplayer space game that runs in your browser. You fly into a field that’s dead or dying, fill your hold off the wreckage, and run it home before something out there decides your hold is worth more to it than your life is to you. Only one galaxy out here is glad you came.
That’s the elevator pitch. Here’s how it’s being built.
The thesis: vectors over voxels
I didn’t want to make another photoreal space sim. There are good ones already, and they cost a lot of polygons and a lot of your patience. What I missed was the feeling of a Tempest or Asteroids cabinet at 11pm in a pizza parlor — neon lines, instant feedback, no install, no tutorial, just push the button and play.
So GRAKKON leans the other way on purpose:
- Vector ships. Every hull is a few stroked lines on a black background — hardware-cheap, legible at a glance.
- Browser-first. No download, no installer, no launcher. One-tap sign-in and you’re flying.
- Free to play. Fly, salvage, fight, talk. Earn credits in-flight. A separate premium catalog of optional cosmetics is on the roadmap — the core loop stays free.
The aesthetic isn’t decorative — it shapes the gameplay. Vector ships read at a glance from across a radar. Proximity chat feels intimate when other pilots are glowing triangles, not HUD-cluttering nameplates.
The stack
A love letter to the cabinets we grew up feeding quarters to — wired to a real Postgres and shipped on the open web.
Client. Phaser 3 + TypeScript, strict mode throughout. Phaser handles the scene graph and input; everything else is plain TS. The ship is composed from interchangeable parts (hull / engine / weapon / shield, three variants each, six hull palettes), so customization is just swapping which draw function runs.
Server. A real-time server over Postgres, TypeScript strict end to end. Game state is server-authoritative — the server runs the physics tick, the client predicts and interpolates, but the server has the final word on where everything is. Getting in is one tap: Continue with Google, or email + passphrase if you’d rather.
Persistence. Identity, loadout, credits, resources — all in Postgres. Combat state (hull, position, velocity) lives only in memory and resets on respawn. Keeps the database calm, keeps respawns instant.
Shared module. Physics constants, the parts catalog, the integration
step, and the validation logic live in a small shared/ TS module both
client and server import — the client renders exactly the projectile the
server stamped, and the server validates a loadout using the same code that
priced it in the editor. One source of truth, no drift.
The chart, and the thing coming in
We used to describe this game as “three galaxies, three feels.” That framing’s dead — the game grew a spine since. Here’s the honest version.
Every galaxy sits somewhere on one long curve. West, the Shallows — water the tide’s never reached, where new pilots learn to fly before anyone shoots at them; ORION is the harbor, where DOCKMASTER teaches you to move, maneuver, and fire before the rest of the chart opens. Toward the middle, the Band — galaxies that breathe, rising and falling on their own clock. MOSCA is the flagship: a great dead ship worked by a swarm nobody sane provokes. Out east, the Emberline — water that came in and never went back out. No drag, no mercy, no letup.
Nobody knows what’s pushing that water in — not the pilots, not us. An operator swears it’s alive; a man who laughs at her says it’s people who joined instead of falling; a third just shrugs and pays fair for your hold. We’re never resolving that. It’s not a placeholder — it’s the design.
What you do about it is the whole game: fly in, fill the hold, run it home, cash out — or go back for one more wreck. Every so often a field crests, the dark stands taller than the sky, and pilots who came to get rich turn and fly at it instead of away, because a field full of strangers can push a crest back when one pilot can’t. Nobody calls it in. Nobody has to.
The catalog’s data now, not compiled code — a new galaxy’s a config file, not a rebuild.
The living galaxy
The thing I’m proudest of right now: log in at 3am and somebody’s already out there working. When real pilots thin out, AI wingmates take the empty seats — mining, escorting, keeping comms honest. When pilots pile back in, the machines fall back and make room. No announcement, no fanfare.
Under the hood it’s subsumption architecture — layered behaviors, no fixed route, so what a wingmate does next is a genuine guess even to us. Not padded population dressed up as players. A galaxy that doesn’t need you alive to keep breathing.
Living memory
The posts remember you, too. Talk to DOCKMASTER twice and he throws your last run back at you — unscripted, generated live off what you actually did in the cockpit, not pulled from a bank of pre-written lines. Some operators run it straight and count your credits fair. Some linger a beat too long on a hold that’s a little too full.
That’s Ironlogic doing more than drone ships — the same plain-English briefs, compiled into behavior, now running a welcoming committee that reacts to what you did, not to a button you pressed.
What’s hard
Real-time multiplayer in a browser is the gnarly part. Some honest notes:
- Latency hiding. Inputs apply locally first (prediction), then the server confirms or corrects. Other pilots are interpolated between server snapshots. Done right it’s seamless; done wrong, ships teleport.
- Mouse vs. keyboard. Two control schemes that need to feel equally good. We’ve shipped mouse-aim more than once — an original pass, a same-day hot-fix, and another tuning round after. A deep rabbit hole.
- Browser quirks. Phaser’s input lifecycle, Google’s OAuth popup flow, the small security and compatibility headers that’ll silently mute your audio if you get them wrong — not the parts you brag about, but a third of the work.
How it gets made
GRAKKON isn’t a hand-cranked weekend project, and it isn’t an AI-button-pressed demo. I work with a team of AI agents on code, copy, and art. Every “no, this feels wrong, do it again” comes from me. The agents move the bricks. I’m still drawing the building.
The taste has to stay human. The hours don’t.
What I want GRAKKON to feel like is a dish my grandma used to make me. Slow, careful, made with love, served warm. Two pilots running a full hold home at 11pm should feel like sitting at her table. That’s the spec.
What’s next
Ironlogic shipped its v0 a while back — the welcoming committee you meet in ORION runs on it, and their conversation went fully unscripted a couple patches after that. The next stage is the one we’ve pointed at since the beginning: letting pilots build their own drone ships by chatting with them — “mine the iron belt and call me at 80%,” plain English compiled into behavior, no menus, no code. That’s why this series is “Liftoff” and not “Crosshair Notes” — Ironlogic is the second stage rocket, and stage one already fired. Track it on the patch notes.
How to play
play.grakkon.com. Continue with Google, pick ORION if it’s your first time, point with mouse or keyboard, fire the cannon, see what happens.
If something breaks — or you want a feature, or just want to say a thing — hit [ESC] mid-flight. The form ships your current game-state snapshot so we can repro without a back-and-forth. Pilots whose feedback turns into a fix usually get their callsign in the patch notes — pilot MADMEX set the bar by flagging two regressions within minutes of the mouse-control launch, both fixed the same day. Open alpha means open feedback loop.
— Ray