Unsocial Deduction Games: Sneaky Theater

Tristrum Tuttle
5 min readMar 11, 2021

A quick recap: I am on a quest to create web-based social deduction games that meet the following requirements: any number of players can play and have fun, everyone is always actively participating, and the game balances “social” and “deduction” without being too complicated. Last year, this quest led me to create Crops and Robbers — a speedy, chaotic, web app version of Mafia. This year, I decided to try a different approach.

One of my favorite social deduction games of all time is Spyfall— a simple game where every player except one is assigned a job at a single shared location (i.e. the zoo, the space station, etc). The remaining player, the spy, does not know the location. Players ask each other vague questions, like “How long is your commute?” and attempt to suss out the spy. The spy tries to blend in by answering questions with equally vague answers — “My commute is not too short, but also not too long..” and at the same time tries to guess the location. The game ends after a set amount of time. If the spy guesses the location, the spy wins. If the other players can collectively identify the spy, then everyone else wins.

I like Spyfall because it innately comes pretty close to meeting all of my requirements. It is pretty enjoyable in small and large groups, as long as you adjust the time accordingly. It is also pretty straightforward and doesn’t take a long time to explain or set up. The main struggle with Spyfall is that the questions are round-robin style: first, I ask a question to John, then John asks a question to Monica, and so on. This means you are often waiting a long time to ask or get asked a question. Even worse, its actually pretty hard to come up with good questions. Good questions need to be vague, but not too vague, and need to avoid overlapping with previous questions that have already been answered. Here is a verbatim dialogue of the average game of Spyfall:

“Alright Chris, its your turn to ask a question.”

“Oh yeah, shoot, lemme think of one… hmm…”

*20 hours later* “Got it!”

“Ok, now its Mia’s turn”

“Oh shoot… one sec…”

*repeat until the spy has either revealed themselves on accident or guessed the location*

There are measures you and your friends can take to avoid this fate, like prepping a list of good questions beforehand. But this is still generally a limitation: one person participates at a time, and most people just sit around quietly, bored.

Enter Sneaky Theater

My game, Sneaky Theater, seeks to improve on the downsides of Spyfall by incorporating elements of a similar game — Fakin’ It, from Jackbox. I won’t get into the rules or gameplay, since they are outlined on the Jackbox website, but I will tell you my least favorite things about Fakin’ It. First, one person has to buy and setup Jackbox Games (ugh, Capitalism, amirite?). Secondly, it has pretty strict player limitations — you can technically play with 3 to 6 players, but 4 or 5 is ideal. Thirdly, its not super remote-friendly: categories like ‘you gotta point’ don’t work, one player has to screen share the whole time, lag issues, etc.

In Sneaky Theater, every player except for one is assigned a character from the same movie. The remaining player, the spy, is trying to guess the movie. Instead of players asking questions directly to one another, each round all players are given the same pre-selected question and try to answer from their character’s perspective. After each question round, players can guess who the spy is, and the spy can guess the movie. After three question rounds, players who guessed the spy win, and spies that guess the movie win.

Ultimately, Sneaky Theater does pretty well on my criteria for fun social deduction games. It can be played with any number of players (try single player for a quick win after a long day of taking Ls). Everyone answers the same question at the same time, so there isn’t too much waiting around. And its pretty straightforward and easy to explain.

After play testing with friends, I’ve seen a few different strategies emerge that you can try out as well. Some of my friends adopt the Caveman strategy and try to answer with as few words as possible to avoid giving themselves or the movie away. “Where does your character live?” “Home.” Some of my friends take the I-havent-seen-this-movie approach. Dude, we all saw Avengers together, nice try. This is closely related to the I-dont-know-this-character strategy, which is a variation of the I-thought-this-character-was-someone-else strategy.

Sneaky Theater does face its own unique set of challenges. While not required, the game is easier to play if you have a decent amount of movie knowledge. I tried to categorize the movies so its easy to choose a movie list you are more familiar with, but it can still be a challenge. Even though the struggle of coming up with good questions has been improved, coming up with good answers can be just as difficult. Finally, the win conditions are not super clear. Do I still a win if I guessed the spy, but the spy also guessed the movie? Maybe we are all winners.

I like that. A social deduction game where we all win. Maybe this is the perfect quarantine game — watch movies, play Sneaky Theater, and go to bed a champion.

Try it out at sneakytheater.com!

Technical Details

All of the code for this project is available on GitHub. I built Sneaky Theater with React, Node.js, Express, and MongoDB. Since this was my first time trying React, I kept it simple and used basic HTTP requests instead of sockets. I am hosting the backend and database on an AWS EC2 server, and the frontend lives in an S3 bucket. There is a lot more work to do here, like setting up an SSL certificate, adding caching and improving the UI (to name a few).

Thank you to my lovely and talented girlfriend Monica for proofreading this article, and to everyone that play tested this game with me — Ben, Anton, Hunter, Matt, Emmanuel, Pranav, my fam and cousins, and my coworkers at Panorama. Photo credits to Andreas G and Petra H on Pixabey.