Social deduction prompt game for Open Party Lab where players identify the bluffing player.
Alpha. Responsive DOM host with player-photo instant prints, private phone roles,
secret voting, a free-text final guess and game-only cumulative points. The word
pool contains 288 family-friendly and 160 adult entries in German and English.
The phone uses the platform's reusable social_party layout. Real-phone camera
compatibility and group usability still need physical-device playtesting.
- Optionally take a player selfie on the phone, or continue without one. Photos stay for subsequent words in the same game; late joiners join the next word.
- Exactly one randomly selected player is the Imposter. Only crew phones receive the secret word. Tap to reveal/hide it. The host receives no word before the round resolves. With Hinweis geben enabled, only the Imposter gets one fixed, curated association for the selected word, e.g. Kondom → Sex. The hint never contains the answer or an answer list.
- In random turn order, each person says one related word out loud, twice per person. Do not say the answer. Confirm each spoken clue on the phone. Disable Hinweis gegeben bestätigen in setup to discuss freely and vote directly after photo setup, without any clue-confirmation buttons.
- Discuss and cast one secret vote for another player on the phone. No self-votes. You can change your choice until the last player votes. Only your latest choice counts; the host shows the final counts together after all players have voted.
- A unique plurality accuses that player. A tie exposes nobody and the Imposter wins. If an innocent player is accused, the Imposter also wins.
- If exposed, the Imposter gets 30 seconds and one free-text guess. The secret stays hidden until this guess is resolved. Correct: Imposter wins. Wrong or no guess: crew wins. Case, punctuation and German umlaut spellings are ignored.
- Imposter victory awards +2 to the Imposter; crew victory awards +1 to every crew member. These points never enter the room's global scoreboard. Totals carry across words and reset when starting a fresh game after another game.
- The result remains visible for eight seconds. Everyone must ready up again on their phone. Automatically ready for the next word is optional and persists across words, following the Schätzorama pattern.
Setup offers U18, Ü18, Alle and the optional Imposter hint. U18 is the default. Ü18 includes explicit sexual vocabulary and profanity; these entries never appear in U18. Hinweis gegeben bestätigen defaults to enabled and is independent of the optional private Imposter hint. Words do not repeat until the selected pool has been exhausted. Photos are kept in room memory only. A disconnected player has 30 seconds to reconnect; after that missing crew turns/ballots no longer block progress. If the Imposter leaves for 30 seconds, the crew wins. All gameplay timers respect room pauses.
These are explicit house rules for this implementation: two clue rounds, ties escape, and the final free-text guess. Common variants differ in tie handling and whether they allow a final guess; see Table Party's rules and Find Impostor's rules.
See hintCatalog.ts for all 448 assignments. Each
line contains German source word;German hint/English hint. Each word has
exactly one curated hint; shared associations are allowed. Examples:
Kondom → Sex, Kamera → Foto, Vibrator → Sexspielzeug,
Arschloch → Egoismus. Missing, duplicate or malformed assignments are
rejected; tests check both languages for answer leaks and age-pool separation.
This repo is not a standalone app. Run it through the Open Party Lab platform.
Recommended layout:
Open-Party-Lab/
local-games/
imposter/
From the Platform repo:
npm install
npm run games:sync-local
npm run dev:allThe Platform loads this game only when the repo exists locally and npm run games:sync-local links it. Missing optional games are skipped.
Description:
Social deduction prompt game for Open Party Lab where players identify the bluffing player.
Suggested topics:
open-party-lab party-game browser-game phaser typescript local-multiplayer social-deduction
@open-party-lab/game-imposter/manifest@open-party-lab/game-imposter/protocol@open-party-lab/game-imposter/server@open-party-lab/game-imposter/host@open-party-lab/game-imposter/controller
The Platform should import only these public entrypoints.
npm install
npm run typecheck
npm run build
npm test
npm run pack:dry-runFor visual checks, start Open Party Lab, add virtual controllers when needed, and capture host screenshots through a browser.
Code is licensed under the Apache License 2.0. See LICENSE.
Assets, generated media, word lists, prompts, and third-party references may need separate rights review before public store distribution.
When the platform provides GamePlayerSummary.avatar, Imposter uses that photo for the player's character and skips their in-game selfie step. Players without a lobby photo retain the existing selfie/skip flow.
