Inspiration Everyone already knows the rules — it's the party game you've played in a car or a group chat. We wanted to know what happens when you can't just say your answer and have to go do it.

The other half of the inspiration was practical: a game like this needs a cast and a city, and none of us is a character artist or an environment artist. Tripo and Marble are the reason it exists at all.

What it does You're dropped into a rainy city block with six characters and one mission: fuck one, marry one, kill one.

The verbs are objects — a ring, a condom, a gun — hidden in the level among decoys, and you carry one at a time. Find it, find the right person, use it. Right target scores. Wrong target kills you, drops your item, and respawns you. Marry someone and they change into a wedding dress and follow you for the rest of the match.

Up to 3 players, and that's where it clicks: everyone gets the same three bodies with the verbs rotated, so every character is simultaneously somebody's spouse, somebody's hookup, and somebody's target. Shoot each other. Kill someone's spouse to claw back their points. Steal a spouse — they keep the dress and just start following you.

It's a URL. Same URL runs on desktop, phone, and VR.

How we built it Everything you look at came out of Tripo or Marble.

Tripo — the entire cast and every prop. We draw a character reference sheet, feed the views to Tripo, and get back a rigged model. Nine characters, plus wedding dresses, casual outfits, street-gang player avatars, and the ring/condom/gun. Every model lands on one shared 41-bone skeleton, so a library of Mixamo animations retargeted once binds to all of them by bone name — a new character costs zero animation work. Marble (World Labs) — the world. We sent images from ChatGPT to Marble as the inspiration and got back a rainy night street as Gaussian splats. Rendered in-browser with Spark alongside the glTF characters. The game around them: Three.js + WebXR (one codebase for desktop, phone, and headset), Rapier for player physics, and a rules layer that's a pure module — no renderer, no DOM — so the Colyseus multiplayer server imports the identical file the single-player client runs. Server on Render, client on Vercel.

Challenges we ran into Generated assets arrive with quirks, and you only find them in motion. Tripo's auto-rigger binds slightly asymmetric — up to a 22° left/right elbow difference — which our retargeting passed straight into every animation, so the whole cast stood crooked. Mirroring the rig at import fixed it: 23° → 5°. Splat worlds are fill-rate bound. Marble's city is gorgeous and it sets the GPU on fire. Needed a pixel-ratio override to keep it playable. Mixamo has no clip for the punchline, so we author those animations procedurally in headless Blender, directly on the Tripo skeleton.

Accomplishments that we're proud of A small team shipped a game with nine rigged characters, wardrobe changes, and a real environment. That's a small studio's art budget, done with Tripo and Marble. 3 players is the game's platonic form — with three seats, the verb rotation closes perfectly. We only saw it once we generalized the code.

What we learned AI asset tools are a pipeline, not a button. Enormous leverage, but every generated asset arrives with a defect class — junk meshes, asymmetric rigs, floating roots. The real work was building automated gates that catch them before an asset reaches the game. Ship what's fun, not what's clever. This started as a sophisticated social-deduction game. It was worse. We threw out the gameplay and kept everything else.

What's next for FMK More worlds — now that the Marble → Spark path is proven, a new setting is a weekend, not a milestone. Menus and a match-end summary — the screenshot-to-group-chat artifact is the distribution plan. VR hardware pass — built and emulator-verified; Quest and Pico on-device next. Bots that backfill live matches so a lobby is never empty. Playtests. Every tuning number is still a first guess.

Built With

Share this project:

Updates