Anything that acts
a flame, a hair dryer, a lens
a rolling ball, a falling bucket
a hammer, a palm, a toy car
vinegar, bleach, tea, ash
a battery through steel wool
Game Tailors
Source: Built for surprises
The drawing app where the paper is real. No ads. No accounts. No personal data: only anonymous counts, which you can switch off.
Game Tailors · Schieweg 15Y-40, 2627 AN Delft (NL)
KvK 92437702 · VAT NL866044474B01
info@gametailors.com · +31 6 4227 5919
© 2026 Game Tailors
Built for surprises
In most games a programmer decides what happens when two things meet. In Professor Oops the things almost never meet in the code. A rolling ball only pushes the air in front of it. A candle only checks how fast the air round its flame is moving. Roll the ball past the candle fast and the flame goes out, because both use the same air. Heat, water, what is dissolved in the water, noise and being pressed on all work this way, so a child can try something nobody planned and still get a sensible answer.

Picture the paper with invisible layers stacked on it. One holds how hot each spot is. One holds how wet it is. One holds the wind blowing over it, one the noise in the room, one what is dissolved in the water: acid, salt, soap, sugar. A flame doesn't heat a candle, a crayon or an egg. It heats the paper's heat layer, and that's all it does.
Everything else reads those layers and decides for itself. Wax softens at 60 °C, chocolate at 32 °C, egg white sets at 63 °C. A fly leaves a spot that's too hot for it. None of them asks what made the heat. So a candle, a hair dryer, a magnifying glass and an iron all melt crayon and set egg white, because they all write the same heat. A hot cup does neither, though it still softens chocolate.
Every substance in the game is a row of numbers: how runny it is, how fast it soaks in, where it boils, how hard you must press before it breaks, what it releases into water. A new substance mostly joins in by filling in a row, and then it meets everything that's already there.
The design took its lesson from falling-sand games, where simple rules for each spot give stories nobody wrote, as the maker of Noita described in a talk we know through a write-up Purho 2019. It applies that lesson to a kitchen table full of real things.
a flame, a hair dryer, a lens
a rolling ball, a falling bucket
a hammer, a palm, a toy car
vinegar, bleach, tea, ash
a battery through steel wool
→ writes
heat · one °C scale
wetness and water · in the paper and on it
wind, warm air, gases · a coarser grid
acid, salt, soap, iron… · dissolved elements
noise, vibration, motion · gone within a moment
press, shear, impact · one door, any presser
→ read by its own numbers
a candle: fast air round the flame
a fly: motion, sweet and foul smells
a yolk: breaks under a light press
mould: acid, salt, sugar, bleach
chocolate: softens at 32 °C
Neither side knows the other. The candle has no code for balls. The ball has no code for candles. They meet in the air layer.
The game wasn't always built like this. In October 2026 an audit of the code counted about 26 kinds of hook and about 170 places where one tool told one target what to do. The hammer alone had 20 branches, one for each kind of thing it could hit. The result was inconsistent in ways a child would notice: a 1 kg rolling pin couldn't squash a tomato, while a 50 g toy car could.
The fix was one door for every press. A tool now says how hard it presses, how big and how hard its face is. The thing underneath says how much it can take. A tomato gives under a moderate press, an apple only under a hard one. The rolling pin presses somewhere between the two, so it squashes the tomato and shoves the apple. The toy car now bumps a tomato instead of squashing it, and nobody wrote a car rule to get there. The same audit found about 45 hand-written lines where a named source scared a named creature. Those were replaced by three shared channels, which the creatures section below explains.
A sponge presses at 0.4, an iron at 1, a rolling pin at 2.5 and a hammer blow at 22; a soap film gives at 0.01, a yolk at 0.3, a tomato at 1.5, an apple at 6 and plastic at 20.
| pressers push this hard | things break above this (crush) | |
|---|---|---|
| soap film | 0.01 | |
| foam | 0.02 | |
| yolk | 0.3 | |
| sponge | 0.4 | |
| slice | 0.5 | |
| berry | 0.8 | |
| iron | 1 | |
| tomato | 1.5 | |
| banana | 2 | |
| rolling pin | 2.5 | |
| orange | 4 | |
| chocolate | 5 | |
| apple | 6 | |
| plastic | 20 | |
| hammer blow | 22 |
Source: The game's own pressers and property table; the hammer's blow is worked out from its weight and speed.
Below is the real wiring of the released game. On the outside ring are the game's systems: fire, wicking, the cat and dog, the hand tools. On the inner ring are the shared layers they meet in. A line means one system writes into a layer or reads from it, and every line stands for real code that does it.
Pick a system and see what it writes, what it reads, and which other systems can feel what it does. Fire writes heat. Twenty-four systems read heat, among them the flies, the ants, the plants and the mould. None of those has code for fire.
The lines are found by a program that reads the source code, not drawn by hand. It counts a link only where the code really touches the shared layer.
Tap a system on the outer ring, or a layer on the inner one, or pick a good place to start from the list, or step round the rings with Next system and Next layer; Next kind of layer shows one kind at a time, named on the ring. What to look for: red solid lines are writes, blue dashed lines are reads. Ringed in red are the systems that read what your pick writes; ringed in blue, those that write what it reads. Nine dots carry their names; every system's and every layer's links, by name, are in the two tables under the demo. The Engine and Hand tools systems are hubs: they pass many things along, so they reach almost everything. That inflates the route counts, which is one reason routes are not effects.
A chain here means something a child can do, a layer it changes, and what follows. In each one, the code of each step never names the other side. The thresholds are tuned by hand. The chain isn't.
Each chain has a test in the game's test suite that sets up the scene and checks the outcome. Many tests build the scene directly (a breeze, a fly put in place), so a test shows the chain can happen, not how often it does in play.
Shared: wind
It blows out. Rolled slowly, it stays lit. The ball only pushes air; the candle only reads how fast the air round its flame is moving.
Air that really moves · checked by a test
Shared: acid + base → CO₂
The gas creeps along the paper and the candle close by goes out with no wind. One across the page stays lit.
Chemistry and pH · checked by a test
Shared: heat → CO₂ depth
Out within a second or two. The fire reads how deep CO₂ lies, not where it came from. Flour on the same fire flares.
Heat and fire · checked by a test
Shared: warm air + flame
Burning scraps ride the updraft across the cut and start a second fire.
Heat and fire · checked by a test
Shared: foul smell + wind
The fly smells the dog's breath and comes up the plume to it. The perch on its nose is written; the journey isn't.
Animals with their own minds · checked by a test
Shared: press → spores → wind
New mould grows downwind on food somewhere else.
Dough, mould and time · checked by a test
Shared: motion seen, looming
It's off before the bucket lands. Far away, it stays.
Animals with their own minds · checked by a test
Shared: noise + motion
The pigeon next to it goes too. To the second bird, the first one's take-off is only a noise and a movement.
Animals with their own minds · checked by a test
Shared: noise
It barks at a roar close by, not at a fan across the page.
Sound and shaking · checked by a test
Shared: sheet shaking
Ants scatter, sand gathers on the still lines, bubbles on the shaking parts pop.
Sound and shaking · checked by a test
Shared: press against crush
The yolk bursts; the tomato holds.
Things that push things · checked by a test
Shared: bodies: mass and build
It tips and spills the way the ball was going. A tennis ball only rattles it.
Things that push things · checked by a test
Shared: carried load
Red tracks go on beyond the puddle, with the paint shared out, none made.
Runny, sticky and oily · checked by a test
Shared: goop carries heat
The bar softens where the coffee reaches it.
Heat and fire · checked by a test
Shared: ash → carbonate → pH
Blue in a thin ring round the burn, where the ash is, and purple beside it. Fire reaches chemistry.
Chemistry and pH · checked by a test
Shared: iron + tannin
A blue-black ring of iron-gall ink. The iron comes from the rusting pin.
Chemistry and pH · checked by a test
Shared: heat
It glows white-hot and catches fire where the clips bite. Electricity reaches fire.
Electricity · checked by a test
Shared: heat
It's off at once. The fly's code has no wire in it.
Electricity · checked by a test
Shared: acid, salt, sugar in food
Honey stays clean, ketchup grows mould. Vinegar on it keeps the mould off; juice doesn't.
Dough, mould and time · checked by a test
Shared: soap on the surface
The pepper rushes away. The magic-milk code knows nothing about pepper.
Runny, sticky and oily · checked by a test
Shared: heat at the wick
next update The wick lights. A toothpick in the same heat doesn't: it has no wick. In the released game only a match lights a candle.
Heat and fire · checked by a test
Shared: water at the wick
next update It drowns where it stands and won't relight while wet. Poured beside it, the flame burns on.
Heat and fire · checked by a test
Shared: heat speeds reactions
next update Colour fades faster. In the released game, warmth speeds reactions only during time skips.
Chemistry and pH · checked by a test


Most tests check that something happens. A few check the opposite: that a piece of code does not mention the things it affects. These guard the design itself, so a quick fix can't quietly bring a pair rule back.
One test goes further. It sets the sheet shaking with no speaker on the page at all, and glitter still drifts to the still lines. The speaker is just one writer of a shared layer.
Every creature in the game listens to the same three short-lived layers: noise, vibration through the paper, and movement it can see. A hammer blow writes a bang and a jolt. A hand sweeping past writes movement. A pigeon taking off writes a noise and a movement. Each animal reads them through its own row of numbers. Ants and snails are deaf and feel the ground. Flies care most about movement. Pigeons hear well.
They notice change, not level. Each animal keeps a sense of what it's used to, so a sudden bang startles while a fan that keeps blowing is soon ignored. Movement counts for far more when it's fast, so a hand creeping up at a few cells a second shows almost nothing, while the same hand swiped fast is seen from far off. That's why you can sneak up on a fly. Real flies jump away from a looming threat Card 2008. The game's fly flees straight away from where the alarm came from, which matches that paper on direction and no more.
A pigeon isn't scared by its own wings, but the pigeon beside it is. Each creature subtracts what it just made itself from what it senses. Biologists call this an efference copy; the code doesn't use the term, it's our comparison. The flock alarm was informed by research on crested pigeons, whose take-off whistle alarms the flock Hingee 2009. The game has no special alarm sound, only a loud, sudden thing.
Tap the paper for a blow, drag across it to move a hand, or press Bang, Swipe fast or Creep up to the fly. Until you do, the demo bangs, swipes and creeps by itself. What to look for: a fast swipe puts up the pigeon, the dog and the fly along its path; a slow creep right up to the fly writes nothing at all, so it stays; the ants and the snail are deaf to the bang and react to its jolt. The demo's own hand hovers; yours is dragged on the paper, so a fast drag also rubs a little vibration in, as in the game. The bar under each animal is its threat; the mark in the middle is where it startles.
Vinegar and baking soda fizz. Nowhere does the code say "vinegar meets baking soda". Vinegar puts acid into the water on the paper. Baking soda puts in a base. One rule in the chemistry table says what acid and base do together, and it's written once. Ketchup, cola, orange juice and any acid added later join in by themselves.
That split, between a few things dissolved in water and the many substances that bring them, was informed by how the makers of a well-known adventure game described their chemistry engine, as write-ups of their talk report it Dohta 2017. Rules grow with the number of dissolved elements, not with the number of substance pairs.
We checked this with a program that reads the code. It finds every place a material is tested by name and every place two such tests on different things meet. The answer is zero, at the release and in the next update. The same table says what can happen between any two of the game's substances. Try any pair below.
Each row and each column is a substance from the game, sorted by how many others it has something specific with. A coloured square means a rule can act between that pair: red for reactions and colour, blue where water gets in, yellow for layers, purple for dough, green for mould. Tap a square, or pick two from the lists, eight each. What to look for: bleach, on the far left, reaches almost everything, because it fades colours and stops mould; salt, vinegar and sweet or sour drinks reach most foods through mould. Most pairs only meet through the general rules of mixing, flowing and soaking in. The table here holds the 89 substances a child can make in the released game or with the next update. Most of what's lit is a few rules crossing whole classes: 45 watery things against 7 that swell and 3 that dissolve, and four kinds of preservative (bleach, acid, salt, sugar) against every food.
This is honest only with its fine print. The chemistry rules themselves are written by hand, and several name two ingredients: bleach with acid makes chlorine, iron with tannin makes ink. They name what is dissolved, once, not the substances that bring it. And the outcomes are authored: flour's row says that flour and water make dough.
Shared layers are a strong habit in this code, not a law. Some behaviour is written for a named thing, either because it's a choice rather than physics, or because nothing better exists yet. A page about emergence that hid these would be selling something. This is the list a read through the code turned up.
| What is written by hand | Where | Why it's there |
|---|---|---|
| The dog's favourite foods, by name | 18 of the 55 material tests, in the dog's code | A taste, creature against material. Not physics. |
| Chemistry rules with two ingredients | chlorine (bleach + acid), iron-gall (iron + tannin), fizz, carbonate, curdle, in the chemistry table | Chemistry is authored, once per pair of dissolved elements. Any substance that brings them joins in. |
| Cats hunt flies, dogs chase balls | the cat's and the dog's code | A choice of what to pay attention to. The fly's escape from the cat runs through the shared layers, except where the paw lands: there the no-harm rule below moves the fly directly. |
| Flying drops burst soap bubbles | one named wire, set once in the engine | How hard a drop must hit is generic; which drops reach bubbles is wired once. |
| A fly perches on a dog's nose | the flies' code | The perch is written. The route there, by smell on the wind, isn't. |
| Each kind of bit's wind threshold; the pigeon's grip against wind | loose bits, the pigeon | There is no drag model yet, so these are numbers per kind. |
| Named materials in single-thing rules | yolk, foam, oil, cooked egg, caramel, fizz, tube paint | One material's own behaviour, not a pair. A property could carry some of these. |
| About 100 tests of an object's kind | is it a lid, a cat, a cup…, across the code | Much of it is drawing or setting up. Not audited one by one. |
| Tools that call animals; the snail tool tucking in a snail; stroking a pet | the tools, the engine | That is what the tool is for: the child calls the pigeon. |
| Creatures can't be hurt | every press also warns the flies and ants directly; fire warns creatures directly; the oven and freezer clear them out first | A design rule on top of the physics. The physics stops at the creature on purpose. Pinned by an automated test. |
| Time skips that name things | the time-skip code | Bookkeeping for a long wait: ants find food left out, and flies arrive for it. |
| Scripted lessons | the grease flare, the chlorine warning | Words the game says once, by design. |
| A match lights a candle by kind; water puts a candle out by a named call | released game only | Replaced in the next update by heat and water at the wick next update. |
Shared layers only work if each layer is cheap enough to keep up in play on a phone or tablet. So each one is a deliberate simplification. The candle never asks what made the wind, so it doesn't matter that wind from a ball is a quick push on a coarse grid. A narrow, honest interface between systems is what lets them stay simple.