Ein Online-Multiplayer-Spiel für 3-10 Spieler, bei dem die Crew versucht, den Impostor zu entlarven.
- Crew: Den Impostor entlarven
- Impostor: Nicht entlarvt werden
- Lobby: Spieler treten dem Raum bei und warten auf den Start
- Kartenvergabe:
- Crew-Mitglieder erhalten ein geheimes Wort
- Der Impostor erhält kein Wort
- Hinweisrunde 1: Jeder Spieler gibt einen 1-Wort-Hinweis ab
- Hinweisrunde 2 (optional): Zweite Runde mit Hinweisen
- Diskussion: Spieler diskutieren, wer der Impostor sein könnte
- Abstimmung: Alle stimmen gleichzeitig ab
- Auflösung:
- Crew gewinnt, wenn der Impostor eliminiert wurde
- Impostor gewinnt, wenn jemand anderes eliminiert wurde oder Gleichstand
- Nur ein einzelnes Wort als Hinweis erlaubt
- Keine Synonyme oder Sätze
- Das Wort selbst darf nicht genannt werden
- Bei Gleichstand gewinnt der Impostor
- Framework: Next.js 16 (App Router)
- Styling: Tailwind CSS 4
- Sprache: TypeScript
- State Management: Client Authority Pattern (keine Datenbank nötig!)
- ✅ Private Räume mit 6-stelligen Codes
- ✅ Echtzeit-Updates via Polling
- ✅ Mehrere Runden spielbar
- ✅ Responsive Design
- ✅ Konfigurierbare Spieleinstellungen
- ✅ Rundenhistorie
- ✅ Client Authority: Host hält den State, kein Datenbankbedarf
- ✅ Auto-Recovery: Raum wird automatisch wiederhergestellt bei Server-Restart
# Installation
npm install
# Development Server starten
npm run dev
# Build für Produktion
npm run build
# Production Server starten
npm startDie App läuft dann auf http://localhost:3000.
Dieses Spiel verwendet ein Client Authority Pattern, wodurch keine Datenbank benötigt wird:
- Host = State Owner: Der Spieler, der den Raum erstellt, hält den autoritativen State im Browser (localStorage)
- Server = Relay: Der Next.js Server speichert den State temporär im Memory und broadcasted ihn an andere Spieler
- Auto-Recovery: Wenn der Server neu startet (z.B. bei Vercel serverless cold start):
- Host erkennt, dass der State fehlt
- Host lädt den State aus localStorage automatisch wieder hoch
- Andere Spieler sehen "Warte auf Host..." und reconnecten automatisch
- ✅ Keine Datenbank/Redis nötig
- ✅ Funktioniert auf Vercel Free Tier
- ✅ Automatische Wiederherstellung
- ✅ Einfache Architektur
⚠️ Host muss online bleiben (wenn Host geht, geht der Raum verloren)⚠️ State ist nicht persistent über Browser-Sessions hinweg (localStorage wird bei Browser-Clear gelöscht)
- Repository zu GitHub pushen
- Bei Vercel anmelden
- Neues Projekt erstellen und Repository auswählen
- Deploy-Button klicken
Vercel erkennt automatisch Next.js und konfiguriert alles richtig.
Keine Umgebungsvariablen erforderlich - die App läuft out-of-the-box.
splash/
├── app/
│ ├── api/ # API Routes
│ │ ├── game/ # Game Actions
│ │ └── rooms/ # Room Management
│ ├── room/[roomId]/ # Game Room Pages & Components
│ ├── layout.tsx # Root Layout
│ └── page.tsx # Landing Page
├── lib/
│ └── game/ # Game Logic
│ ├── types.ts # TypeScript Types
│ ├── words.ts # Wortliste
│ └── gameState.ts # State Management
└── public/ # Static Assets
POST /api/rooms/create- Neuen Raum erstellenPOST /api/rooms/join- Raum beitretenGET /api/rooms/[roomId]- Raum-Status abrufenDELETE /api/rooms/[roomId]- Raum verlassenPUT /api/rooms/[roomId]/sync- State synchronisieren (Host-only)POST /api/game/start- Spiel startenPOST /api/game/hint- Hinweis abgebenPOST /api/game/vote- AbstimmenPOST /api/game/advance- Phase voranschreitenPOST /api/game/next-round- Nächste Runde startenPOST /api/game/lobby- Zurück zur Lobby
- Räume werden nach 1 Stunde Inaktivität automatisch gelöscht
- Alle Daten werden im Server-Memory gespeichert (kein Persistence)
- Optimiert für Desktop und Mobile
MIT