It's the start of the new year, and as I get back this semester at Purdue, my friends and I have been infatuated with this "impostor" game.
The premise is that there is one impostor and the "crew". Everyone in the crew is given a special word. The impostor is not given this word, and they have to blend in by lying. Players take turns saying a word related to this special word, and the crew must identify the "impostor" among them by voting.
Just for funsies, I wanted to recreate this game with some improvements and creative liberties from our own experience. Here's a quick rundown of it. You can find the game at www.impostorhunt.com!
Basic Gameplay Loop
- Roles: Everyone (crew) gets a Topic and Secret Word; the Impostor only sees the Topic.
- Turns: Players say one related word to prove they know the secret.
- Deduction: The Impostor tries to blend in by guessing from context.
Some Added Twists
- An optional Jester 🃏 role wins by getting voted out.
- Impostor gets to see the topic, but the crew only gets to see the word. (Makes it harder for the crew to spot the impostor)
- The impostor gets a hint word.
I also wanted to be able to play online with some of my other friends, so there is an offline "Pass to Play" option as well as an online multiplayer. People can host lobbies, and your friends can join these lobbies with a PIN to play together.
The frontend is built with JavaScript and Tailwind CSS. The backend is Node.js with Express, real-time features are handled through Socket.IO, and everything is containerized with Docker and deployed on Fly.io.
Open Source
This project is open-source, so any contributions are welcome! We're actively trying to add more features. If you found a bug or have feedback, submit a PR or use our feedback form!