Petri Genesis

Inspiration

We wanted the "small world that remembers you" feeling of NeoPets, built on tools that didn't exist back then: gaussian splatting to turn real life environments into an explorable world, and AI characters that can actually hold a conversation with the player, and with each other. The twist that made it a game: you're God, but you have no hands. You may only speak to your Prophet and it is the Prophet who has to go convince a village full of other AI characters that argue, gossip, and scheme amongst themselves.

What it does

Photograph your belongings with Lumière, our 3D-printed character Polaroid built on Raspberry Pi. Estuary generates a Prophet and a village rooted in that object's world, as a gaussian splat through World Labs Marble.

Night: This is when your Prophet has visions and you may speak with them. They report on the village's needs, and ask for your guidance.

Day: the village visibly changes based on that conversation, leveraging Marble to continually generate new splats based on where the story has gone. The player only ever talks to the Prophet; it's the Prophet who directly interacts with everyone else, and those agents talk to and influence each other independently of the player

A rival False Prophet steals followers if the Prophet fails them; a Technologist builds what you command; a Politician holds the money and can be bribed by the False Prophet — there's no fail state, just the village you end up with as a result of your choices

How we built it

World Labs: Marble to generate splats in real-time Tripo: generating character avatars in real-time Estuary: AI character API to generate and drive each character's personality, memories, and voice. It powers the player-facing conversations, and the live agent-to-agent interactions within the village. Engine: Unity, aras-p gaussian splatting plugin, Coplay Unity MCP Capture: Raspberry Pi 5 (8GB) + Pi Camera Module 3 Tooling: Claude Code

Challenges

Fitting a systemic god-game into a 5-minute demo — cutting it down to one night/day loop, one clear decision, one visible consequence Getting multiple agents to hold live conversations with each other, not just the player, while staying in character and on pace for a demo Chaining photo → splat → character → engine fast enough to hold demo pacing

What we learned

Treating AI agents like NPCs with real stakes who talk to each other, not just answer the player's questions forced us to actually define "belief" and "influence" as game variables, not just a vibe.

What's next

A longer playthrough cycle featuring more villagers, natural disasters, conflict, fuller individual character story arcs, and deeper belief systems. On the technical side, making world splat evolutions morwe grounded in the previous world, and exploring Tripo's unirig and animation system to bring out more expressivity in the characters is quite promising.

Built With

  • estuary
  • tripo
  • unity
  • worldlabs
Share this project:

Updates