Inspiration

An existing project meets a good opportunity. For months I have been building an innovation-research engine: an agent orchestration framework that explores a design space as a explicit graph of concepts and evidence, where ideas are validated or trashed by verifiable knowledge. This hackathon came as a good opportunity to put it to the test. A research thread of ours kept circling games about evidence and theory-crafting: a community staring at fragments and figuring out what happened. We used the engine to find the game, then built a simplified version of the game it found. I am a big big fan of Outer Wilds so this idea resonated deeply.

What it does

One Reddit post is one buried site. You dig it cell by cell and the rooms you expose and the objects you recover tell the story of the site. Every player digs the same site, so the comment thread becomes the place to compare finds and argue theories. For each dig site, a new layer unlocks each day, and the story arrives in installments. On each layer's theory board you reconstruct what happened by filling a short report with word tiles corresponding to the things you've found.

How it was built

The engine generated 32 candidate game concepts and filtered them against evidence (existing games, state of the art, research, real world constraints, etc). 19 failed for the same reason: their core loop is only fun if a crowd is already playing, and a hackathon entry starts with zero players. Others were too common or too big for the window. The survivor was a mystery you can finish alone, where the community layer helps but isn't mandatory for the game to be interesting.

The game itself is built backwards. The seed of a story is invented then a story for it is written backwards. Evidence objects are generated to match the story, then the evidence is planted across layers of the dig. Every fact about the story is supported by evidence. A build time validator ensures each theory board is solvable from this evidence. Play-testing allows to tweak if the theory boards are too easy or too hard to figure out. A mystery is a data file that has to pass these checks. There is a second complete story on the same skeleton based on the first one. The art ressembles an archaeologist's site plan in ink and amber, drawn by code at runtime and rendered to Phaser textures. The objects drawings were generated with nanobanana and edited to match the game's style of hand drawn objects found on the site.

Challenges we ran into

First: generating a meaningful story and deslopifying it. LLM-written fiction has a style people recognize right away. To fight it I built a writing guide from public domain works, kept a list of known AI tells, and had a separate model review every player-facing line cold. It feels better now but isn't perfect.

Second: building a coherent story flow so players can actually figure out what happened, without it being too easy or too hard. If a report sentence gives away its own answer the board is trivial. If a fact is never named anywhere the board is unsolvable. Spoilers creep up easily. The procedural part of the mystery generation is essential to keep internal consistency.

Third: making the dig actions satisfying with music and sounds. Digging got a scrape sound, each layer its own background ambience, and slow crossfades as you go deeper. Getting music and sounds just right is hard.

Finally, the playtest humbled the theory board. A player dug two full layers, read a dozen object descriptions, scored 0 of 5 on the board twice, and never tried again. This pushed me to find a way to create a satisfying path forward even on failure so it doesn't just feel like hitting a wall.

What I learned

  • The engine behind the game idea feels like can help in coming up with interesting ideas that are doable.
  • Playtesters are worth their weight in gold 😅

What's next

More dig sites! The plan is to solidify a pipeline to create more ambitious mysteries with more room for exploration and theory crafting and building a community around it. To create mysteries and to uncover them.

Built With

Share this project:

Updates