Lydfilerne var op til 17 dB højere end speakeren (kategori-lyden -4 LUFS
mod speakerens -21). Alle effekter er nu normaliseret til -20 LUFS og
musikken til -23 LUFS. Speakeren går gennem sin egen kompressor med et
løft, og mens den taler, dykker effekterne og musikken, og musikken får
skåret taleområdet ned. En limiter til sidst forhindrer klipning.
Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
Hjernen (party/brain) skriver kommentarer til løgnene, dømmer løgne
(sandheden eller upassende), personlige drillerier og en slut-anmeldelse,
alt i baggrunden med faste replikker som fallback. Udbyderen vælges med
BRAIN_PROVIDER: anthropic (Claude), openai (OpenAI-kompatibel, fx Codex)
eller ollama (fx Gemma). Rummets mikrofon er eksperimentel: storskærmen
sender korte lydstumper til talegenkendelse (STT_PROVIDER), og kun et kort
resumé af latter og udsagn huskes til hjernen. Musikken er nu lavet med
en musikmodel.
Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
Faseskift venter, til speakeren er færdig med den aktuelle skærm, og
replikker til en skærm, der er væk, afspilles ikke. Ny kategori-intro med
en lyd pr. kategori, musik pr. fase med bløde overgange og lydeffekter til
alt, der flyver over skærmen. Efter afsløringen eksploderer løgne, ingen
valgte, og pointene tæller op. Hjerter gives kun under afsløringen og ses
live på storskærmen. Lyv for mig giver halve point. Narrede spilleres
telefon kan blive drillet med et fjollet billede og et buh. Alle lyd- og
billedfiler serveres med versionerede navne og caches af browseren.
Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
Spilmotoren udsender begivenheder, rummet vælger en replik, indsætter navne
og talord og genererer lyden (cachet på disk ud fra tekst, stemme og
model). Storskærmen afspiller replikkerne i rækkefølge. Afsløringen venter
på lyden og får en længde pr. trin, så stemplet lander, mens speakeren
taler. Uden nøgle eller ved fejl kører spillet som før, bare uden stemme.
Spørgsmålene er gjort familievenlige, og de otte mest kluntede replikker er
skrevet om.
Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
Deploy-script og systemd-unit beskrev én bestemt installation og hører ikke
hjemme i et offentligt repo. README beskriver nu kravene til proxy og
headere generelt, og eksempelmiljøet bruger neutrale værdier.
Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
Klar til oplæsning med ElevenLabs. En test håndhæver reglerne fra
manuskript-prompten: tilladte pladsholdere og lyd-tags pr. begivenhed,
højst 20 ord, ingen tankestreger og tal skrevet med bogstaver.
Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
Vanilla JS uden build-trin: én WebSocket pr. skærm med automatisk
genforbindelse, tegner altid fra seneste snapshot. Storskærmen viser kode,
QR, nedtælling og en animeret afsløring; telefonen er bygget til store
knapper og genoptager sin plads efter genindlæsning. dev.html viser alle
faser uden server. deploy/ har systemd-unit, deploy-script og en bot-test,
der spiller et helt spil mod en kørende server.
Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
Den tidligere version (Angular-SPA, REST og polling) er gemt på branchen
legacy. Denne version samler alle regler i en ren Python-spilmotor
(fupogfakta/engine.py), holder rummene i hukommelsen i én proces og sender
hele spiltilstanden pr. rolle over én WebSocket. Vært-login sker via
Authentik forward-auth i NPMplus.
Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu