Every Revibed game starts the same way: something that was fun once and doesn't run any more. A Flash game with no Flash. A hobby build that leaks memory until the tab dies. Something that only ever worked on one laptop, and that laptop is gone.
The temptation is to rewrite it from memory. That's how you lose the thing that made it good.
Read it first, all of it
Before anything is written, the old build gets read properly — not skimmed. What holds up, what leaks, what was never safe.
3DTTT's review ran to a page. The verdict was worth the time: the game logic is solid, the plumbing is why it leaked. Win detection was a tidy thirteen-direction scan from the last move, not the seventy-six-line lookup table you'd expect. The two-tap mobile interaction was better than anything we'd have designed fresh.
The plumbing was the problem. Finished games never left memory. Every match built a new 3D scene and never disposed the old one. Logging in as somebody else handed you their seat.
So: keep the logic, throw away the plumbing. That sentence has decided the shape of every re-vibe so far.
Build the boring parts once
The second thing that happens is less romantic. Accounts, leaderboards, saved progress, head-to-head records, crews — none of that is a game, and all of it is the same in every game.
So it lives once, on a platform shared by all of them. Adding online play to 3DTTT meant defining what a match is and letting the API be generated from that description. The interesting work was deciding that a whole game is one row and a move is one governed endpoint. The CRUD, the permissions, the migrations, the OpenAPI — all generated.
The same applies to the front end. The games look nothing like each other on purpose — a re-vibe should feel like that game, not like a suite. But signing in, leaderboards and crews now work identically in all of them, because they're literally the same code wearing different colours. We call it a shell, and the rule is: games share a shell, never a skin.
Where the AI actually helps
The honest version, since "AI-assisted" usually means "we used autocomplete".
It reads faster than a person. Handing over a dead codebase and getting back a straight account of what's worth keeping — with the memory leak found and cited — is a genuine day saved.
It's relentless about the parts humans skip. Migration audits. Checking that a deployed thing is actually the thing you built. Noticing that production had drifted ten database migrations behind while every status light stayed green.
And it's good at catching its own class of mistake, if you make it check. During the last build it found a modal rendering in Times because the font was set on an element it wasn't inside, a heading rendering black-on-black because a CSS rule only worked where it was first written, and a form field that ignored hidden because a shared stylesheet quietly outranked the browser. All three looked fine in a screenshot. None of them survived checking the computed value.
What it does not do is decide. Whether a crew follows you between games, whether the speed clock is thirty seconds or three minutes, whether a captain can walk out on their own crew — those are judgement calls about what the thing is, and they don't come from a model.
What "done" means
A re-vibe is done when someone who played the original recognises it, and someone who didn't can't tell it was ever broken.
Three so far. Relay and 3DTTT are live; Space Startup 3D is next through the door.