Murder at Scramble Station

an advanced seminar game about solving a procedurally generated film-noir mystery. The mystery includes generating and simulating NPC lies and mistakes, and allowing the player to uncover the truth by using logic and deduction.

Project Timeline

January - April, 2022

Team Size

1

Development Tools

Unreal Engine 4, Git, Redmine

Gameplay of "Where's an Egg?"

Origins

The initial idea for Murder at Scramble Station came from vague memories of the game "Where's an Egg?". by the Homestar Runner creators. It's a procedurally generated adventure game where the player asks questions of suspects to find a missing egg. For a game with absolutely no real text, the base idea of deducing which suspects were liars via questioning was both clear and entertaining. In my own work I wanted to follow the same base formula while trying to add a bit more depth to the actual questioning itself.

In Where's an Egg, suspects will either tell all truths or all lies, and generally creates depth by adding a multitude of suspects to account for. Since I knew that I wanted something a more in depth questioning system I quickly decided that instead of all truths or lies, suspects would have different personalities. These personalities would determine what questions suspects would lie or tell the truth about.

Generating the Mystery

After deciding that suspects would have personalities that determined their truthfulness on different questions, I ran into a problem of how to procedurally generate the solution. While it's tempting to have a full simulation of the suspect relationships and how the murder happened, I knew that letting the player see that simulation was pointless, as it would give away the whole idea of figuring out the solution themselve. This left the question of what ways I could generate the variables I would need to ask the suspects about. Things like where they were, or what they thought the personalities of others were, or even what lies they would tell.

In the end, I realized that the simplest solution was to just randomly roll up each bit of relevant info as needed. Similar board games like Clue, each suspect has a randomly chosen personality and location drawn from a pool of possibilities. This information would only be revealed to the player by a truthful character.

Scramble Station's suspect personalties, and their associated habits

Player questioning a suspect in Scramble Station

Consistent Lies

Unlike truths, lies needed a little more work to implement. At first, I thought about lies being randomly generated each time, but I realized that seeing two different answers to the same question would immediately flag a suspect as lying.

In response, I generated the lies at runtime and stored the lies of each suspect once told. That way, when asked the same question, suspects would respond consistently. That way, players had to ask questions and cross reference the answers of other suspects to find the truth.