Professor Oops

Binnenin Professor Oops

Binnenin Professor Oops

Een vel papier waarop alles dezelfde regels volgt

Professor Oops geeft een kind een vel papier en 83 echte dingen om erop te proberen: waterverf, ketchup, een lucifer, een ventilator, een batterij, mieren. Elk piepklein plekje van het papier houdt zijn eigen warmte bij, zijn eigen water en wat daarin is opgelost, en elk gereedschap en elk dier leest en schrijft diezelfde getallen. Zo kan een kind iets proberen waar niemand op had gerekend en toch een kloppend antwoord krijgen. Deze pagina’s laten zien hoe dat is gebouwd.

Geschilderde illustratie van de schilder die gehurkt bij een oven zit en kijkt hoe een waskrijttekening daarbinnen goudbruin roostert, met een ijsblokjesvorm en een citroen.

Een kind ziet papier en een gereedschapskist; daaronder is elk stukje papier een kleine wereld

Open Professor Oops en er ligt een vel papier op tafel, met laden vol dingen uit de keuken, de badkamer, de tuin, de knutseldoos, de speelgoedkist, de proefjesplank en de gereedschapskist. Er zijn geen levels, geen scores en niets te winnen. Een kind schildert, giet, knijpt, steekt aan, slaat en wacht, en kijkt wat er gebeurt.

Elk resultaat wordt uitgerekend terwijl het gebeurt. Druppel water op een stip van een zwarte stift en hij opent zich in ringen van blauw, roze en geel. Laat er een vuur bij komen en het vuur wordt aan de natte rand tegengehouden tot de warmte het water heeft weggekookt. Rol een voetbal langs een kaars en de kaars gaat uit. Laat ketchup drie dagen staan en er groeit schimmel op; laat honing staan en dat gebeurt niet. Elk hiervan komt van een kleine regel over één ding, zoals warmte of water of lucht, die op dezelfde manier op alles op het blad wordt toegepast.

Daarom kan het spel de mensen die het maakten verrassen. Een kind dat twee dingen combineert waar niemand aan had gedacht, krijgt toch een antwoord dat klopt, omdat beide dingen al dezelfde taal spreken.

Een vel papier waarop alles dezelfde regels volgt

Voor technici

Een vel papier waarop alles dezelfde regels volgt

Een raster van tot 512 × 384 cellen, elk ongeveer een halve millimeter, gestapt met een vaste 1/60 s in een Web Worker. Een typegecontroleerde scan van de TypeScript-AST vindt 33 systemen die 55 lagen per cel en per gebied delen via 689 lees- en schrijfverbindingen, en geen enkele regel die twee stoffen bij naam noemt. De drukste lussen draaien als zeven WebAssembly-kernels, waarvan er vijf bit voor bit zijn getest tegen hun JavaScript-tweelingen. Bij de release bevatte de code 2.614 tests in 270 bestanden.

Onder de motorkap
Een kind ziet papier en een gereedschapskist; daaronder is elk stukje papier een kleine wereld

Onder de motorkap

Een kind ziet papier en een gereedschapskist; daaronder is elk stukje papier een kleine wereld

Het vel is een raster van tot 512 × 384 cellen op een grote pagina en 288 × 216 op een telefoon, elk ongeveer 0,5 tot 0,6 mm. Elke cel houdt zijn eigen temperatuur bij, hoe nat hij is en welk water erop staat, zijn kleur als het licht dat hij opneemt, de vloeistoffen die erop liggen en daarop drijven, en een twaalftal opgeloste stoffen.

Lucht, geuren en wat dieren waarnemen, staan op een grover raster (64 × 48 op een volle pagina). Losse dingen zoals ballen, bekers en auto’s zijn 2,5D-lichamen die allemaal dezelfde regels volgen voor botsen en rollen.

De hele engine stapt met een vaste 1/60 s in een Web Worker, los van het scherm. Het scherm tekent vanuit een kopie van de toestand en tekent alleen de delen van het blad opnieuw die veranderden.

Elk van de 97 materialen bij de release wordt beschreven door getallen in één gedeelde tabel; de code die vloeistoffen verplaatst, leest die getallen en noemt geen enkel materiaal.

Het hele scherm van het spel: een vel papier op een houten tafel met een blauwe laag waterverf, een rode zigzag van ketchup en een brandend taartkaarsje erop, en links de tabs van de laden met de lade Tuin open.
In het spel. Het scherm van het uitgebrachte spel, met een laag waterverf, een zigzag van ketchup en een brandend taartkaarsje op het papier, en de laden met gereedschap ernaast. Alles wat een kind doet, komt op dat ene vel terecht.
In het spel: rechts is het papier weggebrand tot op de houten tafel; de vlammen worden tegengehouden aan de rand van een band nat papier, vage grijze plekken, waar een stip van een zwarte stift is opengegaan in een blauwe rand rond een oranjebruin midden.
In het spel. De situatie bovenaan deze pagina, in het uitgebrachte spel, 40 s na de lucifer: het vuur heeft de rechterkant van het vel weggebrand en wordt tegengehouden bij de band gegoten water, die het eerst droog moet koken voordat het verder kan branden. Als het lang genoeg duurt, komt het er wel doorheen. In de band is een stip van een zwarte stift opengegaan in een blauwe rand rond een oranjebruin midden.

Gewone tekst

De koppen en bijschriften van elk hoofdstuk vertellen het verhaal op zichzelf. Lees alleen die en je weet wat er bijzonder is.

+ Onder de motorkap

De laag voor technici: het idee achter elke regel, echte eenheden en rastergroottes, de kortere wegen die we nemen en hoe een test elk resultaat vasthoudt.

De eigen regel van het spel

De eigen regel van het spel Een live demo die de echte regel en constanten van het spel draait, alleen op een kleiner raster. Illustratie markeert een schets van het idee.

volgende update

volgende update Gebouwd en getest, komt in de volgende update. Alles zonder dit label zit in het spel dat je vandaag kunt spelen.

Nergens in de code staat dat een voetbal een kaars kan uitblazen

In de meeste spellen bepaalt een programmeur wat er gebeurt als twee dingen elkaar tegenkomen: “als de bal de kaars raakt, doof dan de vlam”. Professor Oops werkt bijna nooit zo. Een rollende bal duwt alleen de lucht voor zich uit. Een kaars kijkt alleen hoe snel de lucht rond haar vlam beweegt. Geen van beide weet dat de ander bestaat. Rol de bal er snel genoeg langs en de vlam gaat uit, omdat ze de lucht delen.

Hetzelfde geldt voor warmte, water, wat er in het water is opgelost, geluid en trillen. Elk gereedschap schrijft in een paar gedeelde lagen, en elk ding op het blad reageert op die lagen volgens zijn eigen getallen. Gebouwd voor verrassingen brengt ze allemaal in kaart en laat je de verbindingen van elk ervan volgen.

Wetenschappers noemen dit emergentie. Het gedrag komt uit onderdelen die één wereld delen, zonder een lijst met speciale gevallen erachter. Het is ook waarom het spel vragen kan beantwoorden die niemand erin heeft geschreven.

Onder de motorkap
Nergens in de code staat dat een voetbal een kaars kan uitblazen

Onder de motorkap

Nergens in de code staat dat een voetbal een kaars kan uitblazen

Systemen roepen elkaar nooit aan. Ze schrijven in gedeelde lagen: velden per cel zoals warmte, natheid en zuur, de lucht en de rasters die dieren waarnemen, en een paar gedeelde ingangen voor drukken, wrijven en klappen.

Een scan van de TypeScript-AST met de typechecker over de hele simulatie vond 689 lees- en schrijfverbindingen in het uitgebrachte spel, tussen 33 systemen en 55 lagen, op 5.539 plekken in de code. In 882 van de 1.056 geordende paren systemen schrijft het ene iets wat het andere leest.

Een tweede scan zocht naar elke regel die het ene materiaal met naam tegen een ander test. Over de 5.356 paren stoffen in het uitgebrachte spel vond hij er geen. Scheikunde tussen opgeloste stoffen is één keer geschreven, als tabel (azijn bruist op zuiveringszout via een regel over zuur en zuiveringszout), en de tests controleren het ook andersom: een automatische test faalt als de code van de luidspreker het zout noemt dat hij beweegt.

De volledige kaart, de aantallen en de uitzonderingen: Gebouwd voor verrassingen

Gedeeld: wind

Rol een voetbal snel langs een brandende kaars

De vlam gaat uit door de wind van de bal, zonder regel over ballen en kaarsen (vastgelegd in een test).

Lucht die echt beweegt

Gedeeld: CO₂ in de lucht

Laat azijn bruisen op zuiveringszout bij een kaars

Het zware gas kruipt over het papier en dooft de kaars: een kaars op 26 cellen afstand gaat uit, een op 84 cellen niet (vastgelegd in een test).

Scheikunde en pH

Gedeeld: carbonaat (een base)

Verbrand een plek en schilder er dan rodekoolsap overheen

Het sap wordt blauw in een dunne ring rond de brandplek en blijft paars op schoon papier, omdat verbranden carbonaat in de as achterlaat en de indicator de pH leest (vastgelegd in een test).

Warmte en vuur

Gedeeld: zuur

Klem een batterij over zout water op rodekoolpapier

Het water bij de plusklem wordt roze (vastgelegd in een test).

Elektriciteit

Gedeeld: nat + water

Schilder water dwars over de weg van een vuur

Een lucifer steekt het niet aan, en het front stokt tot het water weg is (vastgelegd in een test).

Water in papier

97 materialen, van ketchup tot zand, en geen enkele regel geschreven voor een paar ervan

Elk getal hier komt uit de code van het uitgebrachte spel, een test of een vastgelegde meting, en de hoofdstukken zeggen welke.

97
Materialen in het uitgebrachte spel, van ketchup en honing tot zand en verf, elk beschreven door getallen in één gedeelde tabel.
0
Regels die twee stoffen bij naam noemen, over 5.356 paren ervan. Gevonden met een scan van de code, en daarna elke kandidaat met de hand gelezen.
55 layers
Gedeelde lagen, zoals warmte, natheid, wind en geluid, die 33 systemen lezen en schrijven via 689 verbindingen.
882 of 1,056
Geordende paren systemen waarbij het ene iets schrijft wat het andere leest. Niemand heeft die paren bedraad; de lagen doen het.
2,614
Tests in 270 bestanden bij de release, met 8.933 controles. Veel ervan laten de echte engine op een echt blad stappen.
7 kernels
WebAssembly-kopieën van de drukste lussen. Vijf zijn tot op de laatste bit getest tegen hun leesbare JavaScript-tweelingen.
2.9×
De grootste versnelling die de papierkernel zijn eigen simulatie gaf, 1,8 tot 2,9× over verschillende situaties, gemeten op een desktop toen hij werd overgezet. Er is geen tablet gemeten.
4.6×
Minder vuurwerk op een warm deegblad waar de meeste tegels tot rust zijn gekomen en slapen, met een resultaat dat tot op de bit gelijk is.

Zestien hoofdstukken, van water en vuur tot dieren en snelheid, allemaal op hetzelfde vel

Elk hoofdstuk neemt één deel van de wereld op het papier: wat een kind ziet, wat er echt wordt uitgerekend, hoe het met de rest samenhangt, en waar we met opzet vereenvoudigen. De meeste hebben live demo’s die de eigen regels van het spel draaien.

De wereld op het blad

Dertien systemen, elk met zijn eigen regels, allemaal op hetzelfde vel.

Techniek

Hoe het snel blijft op een goedkope tablet, en hoe het kloppend blijft.

Het spel houdt wat een kind kan zien en testen, en laat de rest van de natuurkunde met opzet weg

Een tablet kan de echte wereld niet uitrekenen, en een kind heeft dat niet nodig. Het vakmanschap zit in kiezen wat je houdt: het effect dat een kind kan zien en testen, tegen kosten die een goedkoop apparaat kan dragen. Hier zijn zes van de kortere wegen, elk uitgelegd in zijn hoofdstuk.

In het echt. pH komt uit de balans van ionen in elke druppel water

In het spel. Een ruwe schatting uit de hoeveelheden op een plekje, verankerd aan de echte pH van azijn; de kleur van rode kool wordt opgezocht in een tabel die is gemengd uit een paar met de hand gekozen kleuren

Waarom dat genoeg is. De kleuren komen in de volgorde van de gedrukte kaarten, met één opzoeking per plekje. Scheikunde en pH

In het echt. De kleurstoffen in een inkt scheiden zich door hun scheikunde

In het spel. Elk van de drie kleurstoffen van een zwarte stift rijdt mee op het water met zijn eigen snelheid, ingevoerd zoals de Rf-waarden van een schoolproefje

Waarom dat genoeg is. De ringen komen uit de eigen beweging van het water, in de goede volgorde. Water in papier

In het echt. Lucht is bijna onsamendrukbaar

In het spel. Elke tik maar een deel van de drukcorrectie, met opzet

Waarom dat genoeg is. Van bovenaf gezien is een ventilator een bron van lucht en een vuur een put; een volledige oplossing maakte windvlagen zwakker. Wervels zijn zwakker dan echte. Lucht die echt beweegt

In het echt. Het geurspoor van een mier blijft ongeveer 47 minuten

In het spel. Het vervaagt binnen een minuut of twee, tientallen keren sneller

Waarom dat genoeg is. Een spoor moet binnen één keer spelen verdwijnen, zodat een kind het kan zien gaan. Dieren met een eigen wil

In het echt. Geluid is een drukgolf die reist en echoot

In het spel. Er worden geen geluidsgolven uitgerekend. De luidspreker schrijft een vaste trillingskaart, een som van een paar honderd trillingsvormen

Waarom dat genoeg is. Zout vindt de stille lijnen toch, op een volle pagina, op een tablet. Geluid en trillen

In het echt. Een schimmelkolonie groeit sneller als het warm is en er genoeg voedsel is

In het spel. Haar grootte is een formule van haar leeftijd, met een maximum

Waarom dat genoeg is. Drie dagen kosten één som, en ze groeit trager onder de ogen van een kind. Een warme en een koude kamer geven dezelfde grootte. Deeg, schimmel en tijd

179 bronnen over spel, echte wetenschap en verkopen aan kinderen, elk met een label voor wat ze echt deed

Vier pagina’s noemen elke bron waar we uit putten, van vloeistofoplossers en forensische druppelvlekken tot echte mieren en de regels over verkopen aan kinderen. Elke bron heeft een label voor wat ze echt deed: toegepast, gaf vorm aan een eigen regel, of later gevonden en passend. We hebben geen leerstudie gedaan, en we beweren dat ook niet. Het onderzoek erachter brengt ze samen.