Fejl fra første rigtige spil: alle kendte svaret og sendte det igen og igen. Hver gang kom en ny replik i kø, og da skærmen venter på speakeren, kom spillet aldrig videre. Nu kommenteres det højst én gang pr. spørgsmål som en sidebemærkning, der ikke holder skærmen tilbage, og når tiden er gået, venter skærmen højst tolv sekunder på speakeren. Stemmen er mere levende (lavere stability, mere style), de hyppigste begivenheder har fået flere replikker, og spørgsmål som alle finder to gange, tages ud. Spillet vælger nu de mindst brugte spørgsmål først. Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
Weirsøe Party Protocol
Dansk party-spil i stil med Jackbox. Spillet vises på en storskærm, og spillerne er med fra deres telefoner. Første spil er Fup og Fakta: alle finder på en troværdig løgn til et kuriøst faktum, og så skal man finde sandheden blandt løgnene.
- Spillere:
https://party.weircon.dkog indtast koden fra skærmen (eller scan QR-koden). - Vært:
https://party.weircon.dk/host/(Authentik, grupperne Familie og authentik Admins). - Spørgsmål:
https://party.weircon.dk/admin/(Authentik-admins logges ind automatisk).
Sådan virker det
Serveren er autoritativ. Hver skærm har én WebSocket, sender handlinger og får hele spiltilstanden tilbage efter hver ændring (se docs/PROTOCOL.md). Spilmotoren (fupogfakta/engine.py) er ren Python uden I/O og ejer alle regler og timere. Rummene (party/rooms.py) ligger i hukommelsen i én proces, så serveren skal køre med én worker. Et genstart afbryder igangværende spil.
| Mappe | Indhold |
|---|---|
fupogfakta/ |
Spilmotor, modeller for kategorier og spørgsmål, spørgsmålsbank i data/*.json |
party/ |
Rum, WebSocket-consumers, sider, Authentik-header-login, templates og JS/CSS |
partyhub/ |
Django-projekt (settings, ASGI) |
deploy/ |
systemd-unit, miljøfil-skabelon og deploy.sh |
Udvikling
python3 -m venv .venv && .venv/bin/pip install -r requirements-dev.txt
export DJANGO_DEBUG=true DEV_HOST_USER=dev
.venv/bin/python manage.py migrate && .venv/bin/python manage.py load_questions
.venv/bin/uvicorn partyhub.asgi:application --reload
.venv/bin/python manage.py test
DEV_HOST_USER lader dig åbne /host/ uden Authentik (kun med DJANGO_DEBUG=true).
Drift
Én uvicorn-proces (--workers 1) bag en reverse proxy med TLS. Proxyen beskytter /host/, /ws/host/ og /admin/ med Authentik forward-auth og sender X-authentik-username og X-authentik-groups videre; på alle andre stier skal den blanke de headere. Appen stoler kun på dem fra adresserne i TRUSTED_PROXIES, så appens port bør kun kunne nås fra proxyen. Se deploy/wpp.env.example for miljøvariabler.
deploy/bots.py spiller et helt spil mod en kørende server og kan også fylde et spil op med bots (--code).
Spørgsmål
fupogfakta/data/*.json indlæses med manage.py load_questions (ved hver deploy; matcher på spørgsmålsteksten, så rettelser i admin bevares, medmindre samme spørgsmål ændres i filen). Skriv _____ hvor svaret står, og giv 3 husets løgne.
Den tidligere version (Angular-SPA, REST) ligger på branchen legacy.