OUTDOOR DEVS
Field journal · Entry

Murder Mystery: A Voice-Acted AI Detective Game You Interrogate Out Loud

A rain-slicked city street at night, cordoned off with police tape under neon signs and fog

Somebody knows. That is the promise on the door of Murder Mystery, the newest project to come out of the workshop. It is a voice-acted, multiplayer detective game where every suspect is an AI character with a personality, a voice, an alibi, and — for exactly one of them — a lie that does not hold. You interrogate them the way a detective would: out loud, one question at a time, listening for the crack in the story. Then you accuse. The game is still under active development, but it is already playable, and this post covers both what it feels like to play and how the technology underneath actually works.

The Premise: Six Suspects, One Lie

Each case starts the same way. A crime, a cast of suspects, and an opening scene that sets the scene like the cold open of a radio drama. From there, the investigation is yours. You pick a suspect and start asking questions — with your actual voice, through your microphone, though you can type if you prefer. The suspect answers in their own voice, in character, in real time.

The suspects are not chatbots with a paragraph of backstory. Each one knows what they were doing the night of the murder, what they saw, who they are protecting, and what they would rather you never asked about. Some of them are helpful. Some are hostile. All of them are holding at least one piece of the puzzle, and the game tracks every clue you shake loose onto a shared investigation board. When you think you have it — when the alibis have been cross-checked and one story has fallen apart — you make your accusation, and the game judges whether you actually solved it or just guessed.

Because it is multiplayer, an investigation can be a group effort. Everyone in a session works the same case, interrogations happen in parallel, and discovered clues land on the shared board for the whole table to argue about. It plays like a dinner-party mystery night where nobody had to write the script and nobody knows the ending — including, in a meaningful sense, me.

Designing Mysteries Backwards

The hardest problem in a generated mystery is not making characters talk. It is making the mystery fair. A whodunit is a logic structure: the clues have to point somewhere, the red herrings have to be survivable, and the solution has to be reachable by a player who asks good questions. If you ask a language model to "write a murder mystery" front-to-back, you tend to get atmosphere with a hole in the middle.

So Murder Mystery generates every case backwards. The pipeline starts with the solution — who did it, how, and why — and only then works outward: the cast of characters gets built around that solution, the narrative gets layered on top of the cast, and finally the game generates an explicit map of how the case can be solved, clue by clue. Each stage runs through validators before the next stage begins. Is the chain of clues that eliminates each innocent suspect actually intact? Does every clue link to a character who can plausibly reveal it? If a stage fails validation, the errors get fed back into the prompt and the stage retries. The result is that by the time a case reaches a player, it has already been checked for the thing that matters most: it can actually be solved.

This is the same lesson that shows up across the AI application work I have written about before — the model is the easy part. The system around the model, the validation and the structure and the retry logic, is where a generated artifact becomes a dependable product.

Making Suspects Sound Guilty

A studio microphone in a smoky room, lit by warm light and a red neon glow
NOW RECORDING · EVERY SUSPECT ANSWERS IN THEIR OWN VOICE

Voice is where the game either comes alive or dies. Every suspect gets a distinct ElevenLabs voice assigned at generation time, matched to the character. But the real engineering problem is latency: an interrogation only feels like an interrogation if the suspect answers promptly. Nobody sweats a suspect who takes fifteen seconds to think.

The trick is that the game never waits for a full reply before it starts talking. As the language model streams the suspect's answer, a sentence splitter watches the stream and hands each completed sentence to the voice pipeline while the rest of the reply is still being generated. The first sentence of a reply is being spoken aloud while the third is still being written. Synthesized sentences are cached, audio is queued sequentially on the client, and the text reveal is synchronized word by word with the audio — so the suspect's answer unfolds on screen at the pace of their voice, like a live transcript.

Listening works the same way in reverse. Your microphone audio streams to a speech-to-text engine over a websocket, partial transcripts come back as you speak, and the game dispatches your question the moment you finish. If you interrupt yourself and keep talking, the in-flight request is aborted and replaced with the fuller question — the game retracts the stale exchange and answers what you actually asked. All the streaming lessons from real-time translation work apply directly here: the pipeline is only as good as its slowest first byte.

When a Conversation Is Also a Game Move

An interrogation is not just dialogue — it is full of moves. "Actually, let me talk to the butler." "I think it was the sister. I'm accusing her." "Cross the gardener off the board." In older builds, a separate fast model classified each utterance before the suspect could respond, which added latency to every single turn. The current build hands the suspect-model a small set of tools instead: switch addressee, accuse a suspect, rule suspects out, abandon the case. The model roleplays the reply and, when your words constitute a game action, calls the tool — and the server re-validates every call before acting on it, because a roleplaying model does not get to be the referee.

Clue discovery works the same way. Each suspect carries a short list of the clues they are able to reveal, and a tool fires when the conversation genuinely surfaces one — at which point it lands on the shared board for the whole party. The suspects never see the solution itself; the prompt is built so that the case's actual answer stays out of every character's context. A suspect cannot spoil a mystery they have never read. Accusations are judged by a separate call that does read the solution, which keeps the referee and the actors on opposite sides of the wall. This tool-based pattern is the natural evolution of the architecture in my guide to building conversational AI agents: don't bolt a classifier onto a conversation — let the conversation declare its own intents, then verify them.

What's Next for the Case Files

Murder Mystery is playable today at outdoordevs.com/murdermystery, and it is still under active development — cases, voices, pacing, and the investigation board are all being tuned, and the mystery generator keeps getting stricter about what counts as a fair puzzle. If you play a case and the fourth suspect's alibi feels a little too airtight, that is the validators doing their job, and if something feels off, that is next week's changelog.

If you want the broader technical background, the conversational agents guide and the write-up on building AI-powered web applications cover the foundations this game is built on. And if you just want to catch a killer — the case is waiting. Somebody knows.