Gra towarzyska dla 3-10 osób. Wszyscy poza Impostorem znają hasło, podają skojarzenia i głosują na podejrzanego.
- Każdy gracz po kolei wpisuje skojarzenie związane z hasłem.
- Po rundzie aktywni gracze głosują na podejrzaną osobę.
- Jeśli wyeliminowany nie jest Impostorem, rozpoczyna się kolejna runda bez tej osoby.
- Impostor może w dowolnym momencie zgłosić odpowiedź. Wszyscy głosują, czy jest poprawna.
- Host może włączyć Jester (wygrywa po wygłosowaniu) i Executioner (wygrywa po wygłosowaniu celu).
| Rola | Cel | |-------|----------|-----------| | Impostor | Wtopić się i odgadnąć hasło | | Gracz | Wykryć Impostora | | Jester | Zostać wygłosowanym | | Executioner | Doprowadzić do wygłosowania celu |
- Utwórz projekt w Firebase Console.
- Włącz Authentication i metodę Anonymous.
- Włącz Cloud Firestore (tryb produkcyjny lub testowy).
- Skopiuj konfigurację web app z Firebase i wklej do pliku app.js w obiekcie FIREBASE_CONFIG.
Wklej jako reguły Firestore:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /rooms/{roomId} {
allow read, write: if request.auth != null;
match /players/{playerId} {
allow read, write: if request.auth != null;
}
}
}
}Te same reguły są zapisane w pliku firestore.rules. W Firebase Console otwórz
Firestore Database -> Rules, wklej ich zawartość i kliknij Publish. Reguły
muszą zezwalać zalogowanym anonimowo użytkownikom na dokumenty rooms/{roomId}.
To są reguły prototypowe. Do produkcji warto dodać dodatkową walidację pól i ról hosta.
Ponieważ to statyczna strona z modułami ES, użyj prostego serwera HTTP:
- Otwórz terminal w folderze projektu.
- Uruchom:
npx serve .- Otwórz adres z terminala (zwykle http://localhost:3000).
- Utwórz repozytorium i wypchnij pliki.
- W ustawieniach repo:
- Settings -> Pages
- Source: Deploy from a branch
- Branch: main (root)
- Po publikacji aplikacja będzie działać jako statyczna strona, a backendem zostaje Firebase.
- index.html - UI aplikacji
- styles.css - styl i responsywność
- app.js - logika gry + Firebase
- README.md - instrukcja uruchomienia
GitHub Pages hostuje tylko frontend. Stan gry, synchronizacja i dane są w Firestore.