Scannen, naam, binnen
Aflevering 5: twee tikken van de QR-code tot de lobby, een doodle die je op de tv terugvindt, een rare naam die binnen een seconde van het scherm verdwijnt, en op een groot feest eerst je naam en dan je tafel.

Aflevering 5: twee tikken van de QR-code tot de lobby, een doodle die je op de tv terugvindt, een rare naam die binnen een seconde van het scherm verdwijnt, en op een groot feest eerst je naam en dan je tafel.


Aflevering 4: een tv en telefoons die tegelijk “Tijd!” zeggen, een code zonder Q, een telefoon die een minuut offline gaat en gewoon verder speelt, de laptop van de zaal zonder wachtwoord, en een tv die ook bij een fout donker blijft.

Aflevering 3: twee thema's uit één bron, een testpagina die mijn eigen fout vond, een knop die precies 4 pixels zakt, een countdown die niet wiebelt en een logo dat half zo groot was als bedoeld.

Aflevering 2: punten waarbij snel tikken niet automatisch wint, een klok die op elke telefoon gelijk loopt, codes zonder vieze woorden en achttien fouten die ik er expres in stopte.
Elke maandag een nieuwe aflevering van Achter de schermen, tot eind januari. Volg @quizplayground, of zet je op de lijst en hoor als eerste wanneer je je eigen show kunt maken.
Vorige week leerden de tv en de telefoons in de maat te lopen. Deze week de voordeur van de quiz: hoe kom je erin? Het antwoord moest zo kort zijn dat oma het snapt voordat haar koffie koud is.
Op de tv staat een QR-code. Je scant hem, typt je naam en tikt op "Doe mee". Twee tikken, en op je telefoon staat "Je bent binnen!". Geen QR-code bij de hand? Op quizplayground.com typ je de vier letters van de tv, met hoofdletters of zonder.
Twee keer Jan op hetzelfde feest? De tweede heet "Jan 2". Dat beslist de database zelf, zodat twee Jannen die op precies hetzelfde moment tikken toch elk een eigen naam krijgen. Geen gekibbel over wie de echte Jan is.
En het scheldwoordenfilter zit op de server, niet alleen in je telefoon. Gasten hebben een eigen sessie, dus iemand die slim is, kan de database rechtstreeks proberen. Daarom mag alleen de server iemand laten meedoen: na het filter, en na de limiet op verkeerde codes.
Natuurlijk bleef de lobby eerst leeg, terwijl de speler wel bestond. Ik zocht hem op met een kolom die de browser met opzet niet mag lezen. De beveiliging werkte. Alleen tegen mij.
Iedereen krijgt een getekend gezichtje: een doodle. Twaalf vormen, zeven kleuren, 5.376 combinaties. Je doodle is overal dezelfde, op de tv en op alle telefoons, en er wordt er niet één opgeslagen: hij wordt berekend uit je spelercode. Niet blij met de jouwe? Schud je telefoon, of tik op "Andere doodle".

Geen foto's als avatar: die horen bij de vragen, niet bij wie je bent. Ik heb zelf vier keer geschud voordat ik mezelf herkende.
Het schudden moest wel een pauze krijgen. Zonder telde één flinke schud als drie nieuwe doodles, en had je jezelf al voorbijgeschud voordat je keek.
Wie meedoet, verschijnt binnen een seconde op het grote scherm, met een plopje en een piepje. Daar begint de show eigenlijk al: iedereen zoekt zichzelf.
Een test zet tachtig spelers in één feest en kijkt of ze allemaal heel in beeld staan. Het mozaïek meet zichzelf en wordt stap voor stap kleiner tot iedereen past. Bij veel spelers maken de QR-code en de code ook plaats.
En dan dit: één speler, twee piepjes. Ik speelde het geluid af op een plek die React in ontwikkeling expres twee keer uitvoert. Nu onthoudt de tv wie er al in beeld is. De review vond er nog een: lange namen duwden spelers stilletjes van het scherm. Nu worden namen ingekort, en staat er "+3 anderen" als het echt niet past.
Er is altijd één neef met één grap. Op de telefoon van de host staat daarom wie er meedoet. Tik op een naam, bevestig, en weg is die. Van de tv, en uit het spel, in minder dan een seconde. Op de telefoon van de neef staat dan netjes: "De host heeft je uit het spel gehaald."
De review vond iets venijnigs. Op trage wifi kon een oud antwoord van de database de naam een paar seconden terugzetten op de tv. Mijn eerste test zag dat niet eens: hij wachtte geduldig tot de naam weer verdween, en vond alles prima. Nu onthoudt het scherm wie er weg is, en faalt de test zoals het hoort.
Op een bruiloft van tweehonderd speel je per tafel. Tot nu toe zat de tafelkeuze in hetzelfde formulier als je naam. Nu krijg je na je naam een eigen scherm: "Aan welke tafel zit je?", met per tafel hoeveel mensen er al zitten. En erbij waarom het telt: de score van een tafel is het gemiddelde, dus een grote tafel wint niet vanzelf.

Staat er een QR-code op je tafel, dan sla je die stap over: je zit meteen. En wie halverwege herlaadt, komt weer bij de tafels uit, niet bij het naamformulier. Je zit al in het spel, alleen nog niet aan tafel.
Voor de nerds: meedoen loopt via een server action die de sessie zelf leest, en join_game mag alleen de server aanroepen, na checkRoomCode en het naamfilter (ADR 0023). Een nieuwe speler zet Postgres zelf op het kanaal van de kamer, niet de telefoon. Een verwijderde speler wordt echt verwijderd, en zijn sessie komt op een lijst die alleen de server leest (ADR 0028). De tafelstap roept het bestaande set_player_table aan (ADR 0141). Gebouwd met MakerKit, Supabase en Claude Code, getest met Playwright. De hele serie staat op Achter de schermen.
Volgende week: de quiz zelf. Vraag, punten en prijzen. Meld je aan en lees mee.