Alles wat iets doet
een vlam, een föhn, een lens
een rollende bal, een vallende emmer
een hamer, een handpalm, een autootje
azijn, bleekmiddel, thee, as
een batterij door staalwol
Game Tailors
Bron: Gebouwd voor verrassingen
De teken-app waarin het papier echt is. Geen reclame. Geen accounts. Geen persoonsgegevens: alleen anonieme tellingen, en die kun je uitzetten.
Game Tailors · Schieweg 15Y-40, 2627 AN Delft (NL)
KvK 92437702 · VAT NL866044474B01
info@gametailors.com · +31 6 4227 5919
© 2026 Game Tailors
Gebouwd voor verrassingen
In de meeste spellen bepaalt een programmeur wat er gebeurt als twee dingen elkaar tegenkomen. In Professor Oops komen de dingen elkaar in de code bijna nooit tegen. Een rollende bal duwt alleen de lucht voor zich uit. Een kaars kijkt alleen hoe snel de lucht rond haar vlam beweegt. Rol de bal snel langs de kaars en de vlam gaat uit, omdat ze allebei dezelfde lucht gebruiken. Warmte, water, wat er in het water is opgelost, geluid en ingedrukt worden werken allemaal zo, dus een kind kan iets proberen wat niemand had gepland en toch een kloppend antwoord krijgen.

Stel je het papier voor met onzichtbare lagen erop gestapeld. Eén houdt bij hoe heet elk plekje is. Eén houdt bij hoe nat het is. Eén houdt de wind bij die eroverheen waait, één het geluid in de kamer, één wat er in het water is opgelost: zuur, zout, zeep, suiker. Een vlam verwarmt geen kaars, geen waskrijt en geen ei. Hij verwarmt de warmtelaag van het papier, en dat is alles wat hij doet.
Al het andere leest die lagen en beslist zelf. Was wordt zacht bij 60 °C, chocolade bij 32 °C, eiwit stolt bij 63 °C. Een vlieg verlaat een plekje dat te heet voor hem is. Geen van hen vraagt wat de warmte maakte. Dus een kaars, een föhn, een vergrootglas en een strijkijzer laten allemaal waskrijt smelten en eiwit stollen, omdat ze allemaal dezelfde warmte schrijven. Een hete beker doet geen van beide, al maakt hij chocolade nog wel zacht.
Elke stof in het spel is een rij getallen: hoe dun hij is, hoe snel hij intrekt, waar hij kookt, hoe hard je moet drukken voordat hij breekt, wat hij in water afgeeft. Een nieuwe stof doet meestal mee door een rij in te vullen, en komt dan alles tegen wat er al is.
Het ontwerp haalde zijn les uit vallend-zandspellen, waarin eenvoudige regels voor elk plekje verhalen opleveren die niemand schreef, zoals de maker van Noita beschreef in een lezing die we kennen via een verslag Purho 2019. Het past die les toe op een keukentafel vol echte dingen.
een vlam, een föhn, een lens
een rollende bal, een vallende emmer
een hamer, een handpalm, een autootje
azijn, bleekmiddel, thee, as
een batterij door staalwol
→ schrijft
warmte · één °C-schaal
natheid en water · in het papier en erop
wind, warme lucht, gassen · een grover raster
zuur, zout, zeep, ijzer… · opgeloste elementen
geluid, trilling, beweging · binnen een tel weg
drukken, schuiven, inslag · één deur, elke drukker
→ gelezen volgens zijn eigen getallen
een kaars: snelle lucht rond de vlam
een vlieg: beweging, zoete en vieze geuren
een dooier: breekt bij licht drukken
schimmel: zuur, zout, suiker, bleekmiddel
chocolade: wordt zacht bij 32 °C
Geen van beide kanten kent de andere. De kaars heeft geen code voor ballen. De bal heeft geen code voor kaarsen. Ze ontmoeten elkaar in de luchtlaag.
Het spel was niet altijd zo gebouwd. In oktober 2026 telde een audit van de code ongeveer 26 soorten haakjes en ongeveer 170 plekken waar één gereedschap één doelwit vertelde wat het moest doen. Alleen de hamer al had 20 vertakkingen, één voor elk soort ding dat hij kon raken. Het resultaat was inconsequent op manieren die een kind zou merken: een deegroller van 1 kg kon een tomaat niet pletten, terwijl een autootje van 50 g dat wel kon.
De oplossing was één deur voor elke druk. Een gereedschap zegt nu hoe hard het drukt, en hoe groot en hoe hard zijn oppervlak is. Het ding eronder zegt hoeveel het kan hebben. Een tomaat geeft mee onder een matige druk, een appel alleen onder een harde. De deegroller drukt ergens tussen die twee in, dus hij plet de tomaat en duwt de appel opzij. Het autootje botst nu tegen een tomaat in plaats van hem te pletten, en niemand schreef een autoregel om daar te komen. Dezelfde audit vond ongeveer 45 met de hand geschreven regels waarin een genoemde bron een genoemd dier liet schrikken. Die zijn vervangen door drie gedeelde kanalen, die het deel over de dieren hieronder uitlegt.
Een spons drukt met 0,4, een strijkijzer met 1, een deegroller met 2,5 en een hamerklap met 22; een zeepvlies geeft mee bij 0,01, een dooier bij 0,3, een tomaat bij 1,5, een appel bij 6 en plastic bij 20.
| drukkers duwen zo hard | dingen breken boven dit (pletten) | |
|---|---|---|
| zeepvlies | 0,01 | |
| schuim | 0,02 | |
| dooier | 0,3 | |
| spons | 0,4 | |
| plakje | 0,5 | |
| bes | 0,8 | |
| strijkijzer | 1 | |
| tomaat | 1,5 | |
| banaan | 2 | |
| deegroller | 2,5 | |
| sinaasappel | 4 | |
| chocolade | 5 | |
| appel | 6 | |
| plastic | 20 | |
| hamerklap | 22 |
Bron: De eigen drukkers en eigenschappentabel van het spel; de klap van de hamer is uitgerekend uit zijn gewicht en snelheid.
Hieronder staat de echte bedrading van het uitgebrachte spel. Op de buitenste ring staan de systemen van het spel: vuur, opzuigen, de poes en de hond, het handgereedschap. Op de binnenste ring staan de gedeelde lagen waarin ze elkaar ontmoeten. Een lijn betekent dat een systeem in een laag schrijft of eruit leest, en elke lijn staat voor echte code die dat doet.
Kies een systeem en zie wat het schrijft, wat het leest, en welke andere systemen kunnen voelen wat het doet. Vuur schrijft warmte. Vierentwintig systemen lezen warmte, waaronder de vliegen, de mieren, de planten en de schimmel. Geen van die systemen heeft code voor vuur.
De lijnen worden gevonden door een programma dat de broncode leest, niet met de hand getekend. Het telt een verbinding alleen waar de code de gedeelde laag echt raakt.
Tik op een systeem op de buitenste ring, of op een laag op de binnenste, of kies een goed beginpunt uit de lijst, of loop de ringen rond met Volgend systeem en Volgende laag; Volgende soort laag laat één soort tegelijk zien, met de naam op de ring. Waar je op let: rode doorgetrokken lijnen zijn schrijfacties, blauwe gestreepte lijnen zijn leesacties. Rood omcirkeld zijn de systemen die lezen wat je keuze schrijft; blauw omcirkeld de systemen die schrijven wat ze leest. Negen stippen hebben hun naam erbij; de verbindingen van elk systeem en elke laag staan met naam in de twee tabellen onder de demo. De systemen Engine en Handgereedschap zijn knooppunten: ze geven veel dingen door, dus ze bereiken bijna alles. Dat blaast de aantallen routes op, en dat is één reden dat routes geen effecten zijn.
Een ketting is hier iets wat een kind kan doen, een laag die daardoor verandert, en wat er volgt. In elke ketting noemt de code van elke stap de andere kant nooit. De drempels zijn met de hand afgesteld. De ketting niet.
Elke ketting heeft een test in de testsuite van het spel die de situatie opzet en de uitkomst controleert. Veel tests bouwen de situatie direct op (een briesje, een vlieg die op zijn plek wordt gezet), dus een test laat zien dat de ketting kan gebeuren, niet hoe vaak dat tijdens het spelen gebeurt.
Gedeeld: wind
Hij gaat uit. Langzaam gerold blijft hij branden. De bal duwt alleen lucht; de kaars leest alleen hoe snel de lucht rond haar vlam beweegt.
Lucht die echt beweegt · gecontroleerd door een test
Gedeeld: zuur + base → CO₂
Het gas kruipt over het papier en de kaars vlakbij gaat uit zonder wind. Een kaars aan de andere kant van het blad blijft branden.
Scheikunde en pH · gecontroleerd door een test
Gedeeld: warmte → diepte van CO₂
Binnen een paar seconden uit. Het vuur leest hoe diep de CO₂ ligt, niet waar die vandaan kwam. Bloem op hetzelfde vuur laat het opvlammen.
Warmte en vuur · gecontroleerd door een test
Gedeeld: warme lucht + vlam
Brandende snippers liften mee op de opwaartse lucht over de snee en beginnen een tweede vuur.
Warmte en vuur · gecontroleerd door een test
Gedeeld: vieze geur + wind
De vlieg ruikt de adem van de hond en komt via de geurpluim naar hem toe. Het landen op zijn neus is geschreven; de reis niet.
Dieren met een eigen wil · gecontroleerd door een test
Gedeeld: druk → sporen → wind
Nieuwe schimmel groeit benedenwinds op eten ergens anders.
Deeg, schimmel en tijd · gecontroleerd door een test
Gedeeld: geziene beweging, iets wat nadert
Hij is weg voordat de emmer landt. Ver weg blijft hij zitten.
Dieren met een eigen wil · gecontroleerd door een test
Gedeeld: geluid + beweging
De duif ernaast gaat ook. Voor de tweede vogel is het opvliegen van de eerste alleen een geluid en een beweging.
Dieren met een eigen wil · gecontroleerd door een test
Gedeeld: geluid
Hij blaft bij een gebrul vlakbij, niet bij een ventilator aan de andere kant van het blad.
Geluid en trillen · gecontroleerd door een test
Gedeeld: trillend vel
Mieren stuiven uiteen, zand verzamelt zich op de stille lijnen, belletjes op de trillende delen knappen.
Geluid en trillen · gecontroleerd door een test
Gedeeld: druk tegenover breekgrens
De dooier barst; de tomaat houdt het.
Dingen die dingen duwen · gecontroleerd door een test
Gedeeld: lichamen: massa en bouw
Hij kantelt en morst in de richting waarin de bal ging. Een tennisbal laat hem alleen rammelen.
Dingen die dingen duwen · gecontroleerd door een test
Gedeeld: meegedragen lading
Rode sporen lopen door voorbij de plas, met de verf verdeeld, niets erbij gemaakt.
Dun, plakkerig en vettig · gecontroleerd door een test
Gedeeld: smurrie draagt warmte
De reep wordt zacht waar de koffie hem bereikt.
Warmte en vuur · gecontroleerd door een test
Gedeeld: as → carbonaat → pH
Blauw in een dunne ring rond de brandplek, waar de as ligt, en paars ernaast. Vuur bereikt scheikunde.
Scheikunde en pH · gecontroleerd door een test
Gedeeld: ijzer + tannine
Een blauwzwarte ring van galnoteninkt. Het ijzer komt van de roestende speld.
Scheikunde en pH · gecontroleerd door een test
Gedeeld: warmte
Het gloeit witheet en vat vlam waar de klemmen bijten. Elektriciteit bereikt vuur.
Elektriciteit · gecontroleerd door een test
Gedeeld: warmte
Hij is meteen weg. De code van de vlieg bevat geen draad.
Elektriciteit · gecontroleerd door een test
Gedeeld: zuur, zout, suiker in eten
Honing blijft schoon, op ketchup groeit schimmel. Azijn erop houdt de schimmel weg; sap niet.
Deeg, schimmel en tijd · gecontroleerd door een test
Gedeeld: zeep op het oppervlak
De peper schiet weg. De code van de tovermelk weet niets van peper.
Dun, plakkerig en vettig · gecontroleerd door een test
Gedeeld: warmte bij de lont
volgende update De lont vat vlam. Een tandenstoker in dezelfde warmte niet: die heeft geen lont. In het uitgebrachte spel steekt alleen een lucifer een kaars aan.
Warmte en vuur · gecontroleerd door een test
Gedeeld: water bij de lont
volgende update Hij verdrinkt ter plekke en gaat niet meer aan zolang hij nat is. Ernaast gegoten brandt de vlam door.
Warmte en vuur · gecontroleerd door een test
Gedeeld: warmte versnelt reacties
volgende update Kleur verbleekt sneller. In het uitgebrachte spel versnelt warmte reacties alleen tijdens sprongen in de tijd.
Scheikunde en pH · gecontroleerd door een test


De meeste tests controleren dat er iets gebeurt. Een paar controleren het tegenovergestelde: dat een stuk code de dingen waarop het werkt niet noemt. Die bewaken het ontwerp zelf, zodat een snelle oplossing niet stilletjes een paarregel terugbrengt.
Eén test gaat verder. Hij laat het vel trillen zonder dat er een luidspreker op het blad staat, en glitter drijft toch naar de stille lijnen. De luidspreker is gewoon één schrijver van een gedeelde laag.
Elk dier in het spel luistert naar dezelfde drie kortlevende lagen: geluid, trilling door het papier, en beweging die het kan zien. Een hamerklap schrijft een knal en een schok. Een hand die voorbij zwaait, schrijft beweging. Een duif die opvliegt, schrijft een geluid en een beweging. Elk dier leest ze via zijn eigen rij getallen. Mieren en slakken zijn doof en voelen de grond. Vliegen letten vooral op beweging. Duiven horen goed.
Ze merken verandering op, geen niveau. Elk dier houdt bij waar het aan gewend is, dus een plotselinge knal laat schrikken, terwijl een ventilator die blijft blazen al snel wordt genegeerd. Beweging telt veel zwaarder als ze snel is, dus een hand die met een paar cellen per seconde aansluipt, laat bijna niets zien, terwijl dezelfde hand, snel bewogen, van ver wordt gezien. Daarom kun je een vlieg besluipen. Echte vliegen springen weg van een dreiging die op ze af komt Card 2008. De vlieg in het spel vlucht recht weg van waar het alarm vandaan kwam, en dat klopt met dat artikel in de richting en niet meer.
Een duif schrikt niet van zijn eigen vleugels, maar de duif ernaast wel. Elk dier trekt wat het zelf net maakte af van wat het waarneemt. Biologen noemen dat een efferentiekopie; de code gebruikt die term niet, het is onze vergelijking. Het groepsalarm is geïnspireerd door onderzoek naar kuifduiven, waarvan het fluiten bij het opvliegen de groep alarmeert Hingee 2009. Het spel heeft geen speciaal alarmgeluid, alleen iets hards en plotselings.
Tik op het papier voor een klap, sleep eroverheen om een hand te bewegen, of druk op Knal, Snel zwaaien of Vlieg besluipen. Tot je dat doet, knalt, zwaait en sluipt de demo zelf. Waar je op let: snel zwaaien jaagt de duif, de hond en de vlieg op zijn weg op; langzaam aansluipen tot vlak bij de vlieg schrijft helemaal niets, dus die blijft zitten; de mieren en de slak zijn doof voor de knal en reageren op de schok. De eigen hand van de demo zweeft; de jouwe wordt over het papier gesleept, dus een snelle sleepbeweging wrijft er ook een beetje trilling in, zoals in het spel. De balk onder elk dier is zijn dreiging; het streepje in het midden is waar het schrikt.
Azijn en zuiveringszout bruisen. Nergens zegt de code “azijn ontmoet zuiveringszout”. Azijn zet zuur in het water op het papier. Zuiveringszout zet er een base in. Eén regel in de scheikundetabel zegt wat zuur en base samen doen, en die is één keer geschreven. Ketchup, cola, sinaasappelsap en elk zuur dat later wordt toegevoegd, doen vanzelf mee.
Die verdeling, tussen een paar dingen die in water zijn opgelost en de vele stoffen die ze aanvoeren, is geïnspireerd door hoe de makers van een bekend avonturenspel hun scheikunde-engine beschreven, zoals verslagen van hun lezing het weergeven Dohta 2017. Regels groeien met het aantal opgeloste elementen, niet met het aantal paren stoffen.
We hebben dit gecontroleerd met een programma dat de code leest. Het vindt elke plek waar een materiaal bij naam wordt getest en elke plek waar twee zulke tests op verschillende dingen samenkomen. Het antwoord is nul, bij de release en in de volgende update. Dezelfde tabel zegt wat er tussen twee willekeurige stoffen van het spel kan gebeuren. Probeer hieronder elk paar dat je wilt.
Elke rij en elke kolom is een stof uit het spel, gesorteerd naar met hoeveel andere hij iets specifieks heeft. Een gekleurd vierkantje betekent dat een regel tussen dat paar kan werken: rood voor reacties en kleur, blauw waar water binnendringt, geel voor lagen, paars voor deeg, groen voor schimmel. Tik op een vierkantje, of kies er twee uit de lijsten, acht per lijst. Waar je op let: bleekmiddel, helemaal links, bereikt bijna alles, omdat het kleuren laat verbleken en schimmel tegenhoudt; zout, azijn en zoete of zure drankjes bereiken de meeste etenswaren via schimmel. De meeste paren ontmoeten elkaar alleen via de algemene regels voor mengen, stromen en intrekken. De tabel hier bevat de 89 stoffen die een kind in het uitgebrachte spel of met de volgende update kan maken. Het meeste wat oplicht, zijn een paar regels die hele klassen kruisen: 45 waterige dingen tegenover 7 die opzwellen en 3 die oplossen, en vier soorten conserveermiddel (bleekmiddel, zuur, zout, suiker) tegenover elk soort eten.
Dit is alleen eerlijk met de kleine lettertjes erbij. De scheikunderegels zelf zijn met de hand geschreven, en verschillende noemen twee ingrediënten: bleekmiddel met zuur maakt chloor, ijzer met tannine maakt inkt. Ze noemen wat er is opgelost, één keer, niet de stoffen die het aanvoeren. En de uitkomsten zijn bedacht: de rij van bloem zegt dat bloem en water deeg maken.
Gedeelde lagen zijn een sterke gewoonte in deze code, geen wet. Sommig gedrag is geschreven voor een ding met een naam, omdat het een keuze is en geen natuurkunde, of omdat er nog niets beters is. Een pagina over emergentie die dit verborg, zou iets verkopen. Dit is de lijst die een doorlezing van de code opleverde.
| Wat met de hand is geschreven | Waar | Waarom het er is |
|---|---|---|
| Het lievelingseten van de hond, bij naam | 18 van de 55 materiaaltests, in de code van de hond | Een smaak, dier tegenover materiaal. Geen natuurkunde. |
| Scheikunderegels met twee ingrediënten | chloor (bleekmiddel + zuur), galnoteninkt (ijzer + tannine), bruisen, carbonaat, schiften, in de scheikundetabel | Scheikunde is bedacht, één keer per paar opgeloste elementen. Elke stof die ze aanvoert, doet mee. |
| Poezen jagen op vliegen, honden rennen achter ballen aan | de code van de poes en de hond | Een keuze van waar ze op letten. De ontsnapping van de vlieg voor de poes loopt via de gedeelde lagen, behalve waar de poot neerkomt: daar verplaatst de regel tegen kwetsen hieronder de vlieg direct. |
| Rondvliegende druppels laten zeepbellen knappen | één verbinding met een naam, één keer ingesteld in de engine | Hoe hard een druppel moet raken, is algemeen; welke druppels bellen bereiken, is één keer bedraad. |
| Een vlieg gaat op de neus van een hond zitten | de code van de vliegen | Het landen is geschreven. De weg ernaartoe, op geur in de wind, niet. |
| De winddrempel van elk soort stukje; hoe de duif zich vasthoudt tegen de wind | losse stukjes, de duif | Er is nog geen model voor luchtweerstand, dus dit zijn getallen per soort. |
| Materialen met een naam in regels voor één ding | dooier, schuim, olie, gebakken ei, karamel, bruisen, tubeverf | Het eigen gedrag van één materiaal, geen paar. Een eigenschap zou een deel hiervan kunnen dragen. |
| Ongeveer 100 tests van wat voor soort voorwerp iets is | is het een deksel, een poes, een beker…, door de hele code | Veel ervan is tekenen of opzetten. Niet een voor een doorgelicht. |
| Gereedschap dat dieren roept; het slakkengereedschap dat een slak instopt; een huisdier aaien | het gereedschap, de engine | Daar is het gereedschap voor: het kind roept de duif. |
| Dieren kunnen niet gekwetst worden | elke druk waarschuwt ook de vliegen en mieren direct; vuur waarschuwt dieren direct; de oven en de vriezer halen ze eerst weg | Een ontwerpregel boven op de natuurkunde. De natuurkunde stopt met opzet bij het dier. Vastgelegd in een automatische test. |
| Sprongen in de tijd die dingen bij naam noemen | de code voor sprongen in de tijd | Boekhouding voor een lange wachttijd: mieren vinden eten dat is blijven liggen, en vliegen komen erop af. |
| Geschreven lesjes | het opvlammen van vet, de waarschuwing voor chloor | Woorden die het spel met opzet één keer zegt. |
| Een lucifer steekt een kaars aan op soort; water dooft een kaars met een aanroep bij naam | alleen het uitgebrachte spel | In de volgende update vervangen door warmte en water bij de lont volgende update. |
Gedeelde lagen werken alleen als elke laag goedkoop genoeg is om tijdens het spelen op een telefoon of tablet bij te houden. Daarom is elke laag een bewuste vereenvoudiging. De kaars vraagt nooit wat de wind maakte, dus het maakt niet uit dat wind van een bal een snel duwtje op een grof raster is. Een smalle, eerlijke koppeling tussen systemen is wat ze eenvoudig laat blijven.