---
title: "Built for surprises"
description: "How Professor Oops gets surprising, sensible results from combinations nobody planned: every system writes into a few shared physical layers."
source_name: "Game Tailors"
source_url: "https://professoroops.com/en/inside/emergence/"
site_home: "https://professoroops.com/"
source_description: "The drawing app where the paper is real. No ads. No accounts. No personal data: only anonymous counts, which you can switch off."
locale: "en"
legal:
  - "Game Tailors · Schieweg 15Y-40, 2627 AN Delft (NL)"
  - "KvK 92437702 · VAT NL866044474B01"
  - "info@gametailors.com · +31 6 4227 5919"
copyright: "© 2026 Game Tailors"
published_at: "2026-11-10T12:04:03.923Z"
modified_at: "2026-11-10T12:04:03.923Z"
---

# Built for surprises

## A ball blows out a candle, though no line of code says it can

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.

[For engineers](<#hood-engineers>)

![Painted illustration of the painter crouching by an oven, watching a crayon drawing toast golden inside, with an ice-cube tray and a lemon.](<https://professoroops.com/_assets/entity_3kuAoHIjjj2uBbqOOhSg.webp>)

## Everything shares the same heat, water, air and noise, and reacts in its own way

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 <sup>[Purho 2019](<https://professoroops.com/en/inside/research-simulation/#purho-2019>)</sup>. It applies that lesson to a kitchen table full of real things.

A ball blows out a candle, though no line of code says it can

For engineers

### A ball blows out a candle, though no line of code says it can

Systems never call each other. They write into shared layers: per-cell fields on a grid of up to 512 × 384 cells \(heat, wetness, goop, 12 dissolved elements at the release\), a coarser grid for air, smells, noise, vibration and motion, and a handful of choke points for pressing, scraping and blows. Each reader reacts by its own row of numbers. A type-checked scan of the code finds 689 read and write links, all of them in the released game, between 33 systems and 55 shared layers, and no rule that names two substances.

[Under the hood](<#hood-idea>)

Everything shares the same heat, water, air and noise, and reacts in its own way

Under the hood

### Everything shares the same heat, water, air and noise, and reacts in its own way

**Three kinds of shared thing**, all plain data or a single function, none aware of who uses it:

- **Per-cell fields**: one number per spot of paper for each quantity \(heat, wetness, standing water, goop, acid…\), 512 × 384 cells down to 288 × 216 on a phone, about half a millimetre a cell.
- **Coarse fields**: wind, warm air and gases, and noise, vibration and motion, on a coarser grid over the same sheet.
- **Choke points**: one way in each for pressing, scraping, a blow coming down, something moving, a tilt or jolt of the table, and something dissolving. Anything can use them; they never look at who did.

**The property table** opens with its own rule: "Behaviour comes from these numbers, not from per-material code". 97 named substances at the release \(100 in the next update next update\), each described by about 90 properties, which the per-cell loops read as fast lookups.

one heat scale in °C for everything  ·  paper ignites at 230 °C

Every material changes at its own temperature on that one scale: wax melts, chocolate softens, egg white sets, paper chars.

### 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

→ writes

### Shared layers

- 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

### Anything that reacts

- 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.

A shared layer turns a few links into many routes

Goop links 55 systems and opens 754 routes; heat links 35 and opens 264; the sixth busiest layer, the floating layer, links 29 and opens 154.

- systems linked to the layer \(writers \+ readers\)
- writer-to-reader routes \(writers × readers\)

Data table

A shared layer turns a few links into many routes

|  | systems linked to the layer \(writers \+ readers\) | writer-to-reader routes \(writers × readers\) |
| --- | --- | --- |
| goop | 55 | 754 |
| water | 39 | 378 |
| wetness | 38 | 352 |
| heat | 35 | 264 |
| colour | 31 | 240 |
| floating | 29 | 154 |

Source: Counted on this page from the code scan's links present in the released game. Heat: 11 systems write it and 24 read it, so 35 links give 264 routes. A route means A writes what B reads, not that you would see B react.

### A code audit turned pair rules into shared layers

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.

[Under the hood](<#hood-press>)

A code audit turned pair rules into shared layers

Under the hood

### A code audit turned pair rules into shared layers

A press is described once, in physical terms: the shape of what touches the paper, how hard it pushes, how hard and sharp its face is, how hot and how heavy it is, and how it moves. The same description goes in turn to the paper, soap bubbles, foam, loose bits, creatures, cups, bodies, plants, balls, sticks and mould. Who pressed is kept only for sounds and debugging, never for rules.

kinetic energy *E* = ½ · *m* · *v*²  →  a peak pressure on the same scale as every press

One door for everything that comes down. From the blow's mass, speed and size alone, the same function makes a splash, a dent, an air puff, a jolt of the table and a noise, each growing with the energy. In the next update it also smothers flames by the blow's own numbers next update; in the released game the hammer and the hand put flames out by their own code. Each thing breaks above its own limit, one column of the property table. Both doors are pinned by automated tests.

One scale for pressing and breakingRed dots: how hard each presser pushes. Blue squares: what each thing can take before it gives. A thing gives where the press on it goes above its own number. Game units on a log scale, an ordering, not pascals.

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\)

Data table

One scale for pressing and breaking

|  | 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.

## A map drawn from the code shows fire's heat reaching 24 systems that have no code for fire

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.

[Under the hood: how the graph was made](<#hood-graph>)

A map drawn from the code shows fire's heat reaching 24 systems that have no code for fire

Under the hood

### A map drawn from the code shows fire's heat reaching 24 systems that have no code for fire

The TypeScript compiler's type checker, run over the simulation, creature and tool code. An access counts only when its type shows it really lands on a shared layer, so the temperature of a press isn't taken for the paper's heat. It follows local aliases and values passed into helpers. Writes and reads are told apart; clearing and allocating a layer are not counted. About forty links that go through the engine loop or the shared senses were added by hand, each line read.

Checks: a random sample of 45 links was read against the code and all were right, and a script confirmed that every quoted code line stands where it is cited. That proves the citations are real, not that every read or write is classified rightly. Not scanned: the WebAssembly kernels \(twins of these JS loops\), rendering and the UI.

Counts: 689 of today's links were already in the released game; 751 with the next update. The released game also had 17 links that the next update removes, which aren't drawn. 8 more links come only from tools that aren't on the shelf, and are left out here.

Explore the wiring The game's own ruleTap 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.

![The wiring of the game: systems on the outer ring, shared layers on the inner ring, lines for each read or write.](<https://professoroops.com/_assets/entity_OtyH7Mc36vqqmYjZetYH.png>)

- Heat
- Paper and water
- Goop
- Chemistry
- Air
- Senses
- Contact
- Motion
- Light
- Noticed
- released game
- with the next update
- Fire, heat
- Candles, sticks
- Flies
- heat
- CO₂
- motion seen
- acid
- Engine
- Hand tools

Good places to startnoneFire, heatCandles, sticksFliesheatCO₂motion seenacid

picked—

layers shown—

links shown—

places in the code—

systems—

routes—

linked pairs of systems—

of—

pick: writes, or written by—

pick: reads, or read by—

other systems read what it writes—

other systems write what it reads—

689

Read and write links between systems and shared layers, all of them in the released game, found in 5,539 places in the code.

3,269

Writer-to-reader routes they open: for each layer, its writers times its readers. Routes, not effects you'd see.

882 of 1,056

Ordered pairs of systems where one writes something the other reads.

0

Rules that name two substances, at the release and in the next update \(method below\).

[Every system's links](<#hood-wiring-systems>)

Every system's links, by name

The wiring

### Every system's links, by name

The panel of the graph above, for every system at once. Each layer it writes or reads, with how many places in its code do it, most first; links that only the next update adds are marked. The last column lists the systems that read something it writes, in the released game.

| System | Writes | Reads | Can be felt by |
| --- | --- | --- | --- |
| Air: Air and what it carries | goop 17, wind 8, water 6, wetness 3 | wind 23, goop 20, water 12, float layer 8, dye 6, wetness 6, damp air 5 \(next update\), cover 4, chlorine 4, foul smell 4, CO₂ 4, sharp smell 4, smoke 4, sour smell 4, spores 4, sweet smell 4, frost 2, holes 1 | 31: Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Pressers, Senses, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Ants: Ants | goop 6, sugar 1, food 1 | goop 17, bleach 3, sugar 3, food 3, colour 3, acid 2, float layer 2, water 2, press 1, danger 1, soap 1, sharp smell 1, smoke 1, sour smell 1, sweet smell 1, motion seen 1, vibration 1, heat 1 | 28: Air, Balls, Bits, stickers, Bodies, Cat, dog, Chemistry, Circuit, Contact, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Balls: Balls | bodies 1, motion seen 1, wetness 1, wind 1 | slope, jolt 3, bodies 1, press 1, soap 1, float layer 1, goop 1, holes 1, wetness 1, wind 1 | 29: Air, Ants, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Pressers, Senses, Sheet shaking, Snail, Soap, foam, String, Time skips, Wicking |
| Bits, stickers: Bits, particles, things laid down | colour 26, goop 19, cover 6, wetness 6, dents 4, water 4, heat 3, float layer 2, sugar 1, flame 1, frost 1 | goop 27, colour 21, slope, jolt 16, cover 11, wetness 8, wind 8, heat 6, warm air 5, water 5, dents 4, holes 4, shear 2, float layer 2, press 1, soap 1, frost 1, mould 1, sheet shaking 1, wax 1 | 31: Air, Ants, Balls, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Bodies: Bodies \(bump, tip, slide\) | goop 3, bodies 2 \(next update\), press 1, shear 1 \(next update\), heat 1 | slope, jolt 27, bodies 11, wind 4, sheet shaking 3 \(next update\), heat 3, flame 2, goop 2, holes 2, press 1, float layer 1 | 32: Air, Ants, Balls, Bits, stickers, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Senses, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Candles, sticks: Sticks and candles | goop 4, dents 2, holes 2, noticed 1 \(next update\), warm air 1 | slope, jolt 8, wind 4, holes 3, CO₂ 2, dents 2, heat 2, bodies 1, press 1, cover 1 \(next update\), frost 1 \(next update\), warm air 1 \(next update\), water 1 \(next update\) | 32: Air, Ants, Balls, Bits, stickers, Bodies, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Senses, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Cat, dog: Cat and dog | goop 13, shear 4, colour 4, wind 4, motion seen 3, wetness 2, bodies 1, impact 1, press 1, foul smell 1, dents 1, water 1 | goop 21, float layer 6, heat 6, colour 3, noise 3, water 2, wind 2, danger 1, foul smell 1, smoke 1, sour smell 1, sweet smell 1, dents 1, motion seen 1, vibration 1 | 32: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Chemistry, Circuit, Contact, Cups, bottles, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Senses, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Chemistry: Reaction table and indicators | goop 37, noticed 10 \(next update\), acid 8, colour 8, bases 6, urea, peroxide 6, bleach 3, dye 2, any element 2, indicators 2, tannin 2, mould 2, water 2, salt crystals 1, iron 1, salt \(in water\) 1, sugar 1, food 1, wetness 1 | goop 98, colour 33, acid 28, bases 25, dye 12, any element 9, water 8, wetness 8, urea, peroxide 7, mould 7, bleach 6, indicators 5, salt \(in water\) 5, heat 4 \(next update\), colour hold 3, soap 3, sugar 3, tannin 3, salt crystals 2, dough 2 \(next update\), iron 2, food 1, holes 1 \(next update\), light 1 \(next update\), surface soap 1 \(next update\), wax 1 | 29: Air, Ants, Balls, Bits, stickers, Bodies, Cat, dog, Circuit, Contact, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Circuit: Electric circuit | metal 7, acid 1, bases 1, goop 1, noticed 1 \(next update\), motion seen 1, noise 1, heat 1 | metal 10, heat 4, bases 3, goop 3, dough 2, holes 2, water 2, wetness 2, acid 1, salt \(in water\) 1, float layer 1 | 32: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Contact, Cups, bottles, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Senses, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Contact: Contact solver \(press, shear\) | goop 14, dye 12, colour 6, dents 2, water 2, frost 1 \(next update\), heat 1 \(next update\) | goop 28, dye 21, colour 9, water 9, frost 6, heat 5 \(next update\), wetness 4, colour hold 3, shear 3, holes 3, press 2, cover 2, dents 2, bodies 1 \(next update\), dough 1, float layer 1 \(next update\) | 29: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Cups, bottles: Cups and bottles | CO₂ 3, heat 3, noticed 2 \(next update\), dye 1 \(next update\), any element 1 \(next update\), soap 1 \(next update\), chlorine 1 \(next update\), goop 1, noise 1, water 1 | slope, jolt 13, goop 6 \(next update\), heat 4, warm air 4, press 3, wind 3, bodies 1 | 32: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Senses, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Dough: Dough | dough 47, goop 38, water 1 | goop 98, dough 79, water 3, cover 2, float layer 1, holes 1, mould 1, heat 1 | 28: Air, Ants, Balls, Bits, stickers, Bodies, Cat, dog, Chemistry, Circuit, Contact, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Engine: Engine choke points | goop 49, vibration 10, wind 10, slope, jolt 9, smoke 9, motion seen 9, water 9, bodies 8, press 8, impact 7, colour 7, noise 7, heat 7, wetness 7, danger 6, CO₂ 5, shear 4, warm air 4, dye 3, dents 3, sheet shaking 3, metal 2 \(next update\), chlorine 2, noticed 2 \(next update\), char 1, any element 1, float layer 1, damp air 1 \(next update\), holes 1, light 1 \(next update\) | goop 65, slope, jolt 16, colour 9, water 9, heat 8, float layer 5, wind 5, bodies 4, press 4, holes 4, impact 3, frost 3, dents 3, shear 2, cover 2 \(next update\), chlorine 2, char 1, metal 1 \(next update\), flame 1 \(next update\), light 1 \(next update\), noticed 1 \(next update\), wetness 1 | 32: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Dough, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Senses, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Fire, heat: Fire and heat | goop 15, colour 12, float layer 8, heat 7, char 4, metal 3, flame 3, food 3, sugar 2, noticed 2 \(next update\), wetness 2, dough 1, bases 1, iron 1, fat 1, holes 1, mould 1, water 1, wax 1 | colour 35, heat 34, goop 29, float layer 17, food 9, sugar 8, holes 8, wax 8, char 7, flame 6, fat 6, metal 5, mould 4, wetness 4, cover 3, bases 3, water 3, wind 3, dough 2, slope, jolt 2, CO₂ 2, crust 1 | 31: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Dough, Engine, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Flies: Flies | · | float layer 8, goop 7, light 3 \(next update\), heat 3, wind 2, press 1, danger 1, acid 1, bleach 1, sugar 1, food 1, foul smell 1, smoke 1, sour smell 1, sweet smell 1, mould 1, motion seen 1, noise 1, vibration 1 | 0 |
| Float, grease: Floating layer and grease | float layer 59, goop 48, fat 4, heat 2, stir 1, water 1 | float layer 135, goop 99, water 13, fat 9, cover 7, heat 6, holes 5, stir 5, frost 4, dents 4, soap 2, wetness 1 | 31: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Dough, Engine, Fire, heat, Flies, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Frost: Frost and ice | goop 7, colour hold 3 \(next update\), frost 3, heat 2 \(next update\), water 2, food 1, noticed 1 \(next update\), wetness 1 | goop 20, dye 9 \(next update\), colour 9, water 8, wetness 7, frost 5, colour hold 3 \(next update\), salt crystals 1 \(next update\), float layer 1, food 1, holes 1, heat 1 | 28: Air, Ants, Balls, Bits, stickers, Bodies, Cat, dog, Chemistry, Circuit, Contact, Dough, Engine, Fire, heat, Flies, Float, grease, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Goop: Goop flow | goop 231, float layer 18, colour 16, dye 12, wetness 8, dough 5, any element 5, frost 3, fat 2, heat 2, water 2, food 1, surface soap 1 | goop 382, float layer 59, colour 27, water 26, dye 21, frost 17, holes 16, slope, jolt 15, wetness 14, cover 9, dough 6, heat 6, dents 4, colour hold 3, food 3, fat 3, mould 3, crust 3, soap 2, surface soap 2, wax 2, sheet shaking 1 | 31: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Hand tools: Hand tools | goop 57, press 25, any element 16, colour 15, wetness 15, shear 10, water 8, impact 6, metal 3, danger 3, food 2, noticed 2 \(next update\), motion seen 2, heat 2, wax 2, bodies 1, dye 1 \(next update\), bases 1, wind 1 | goop 65, colour 38, holes 15, wetness 10, mould 4, heat 4, wax 4, float layer 3, water 3, metal 2, bases 2, soap 2, sugar 2 \(next update\), food 2, slope, jolt 2, frost 2, dents 2, any element 1 \(next update\), indicators 1 | 32: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Senses, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Lens, laser: Lens and laser beams | heat 2, char 1, water 1, wetness 1 | goop 5, char 3, colour 3, heat 3, water 3, wetness 3, holes 2, metal 1, float layer 1 | 31: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Mould, Paper, Pigeon, Plants, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Light: Light and optics | · | light 4 \(next update\) | 0 |
| Mould: Mould | mould 4, food 2 \(next update\), spores 2 | mould 9, goop 8, food 5, wetness 3, wind 3, char 2, spores 2, holes 2, water 2, press 1, shear 1 \(next update\), acid 1, bleach 1, sugar 1, frost 1, vibration 1, heat 1 | 12: Air, Bits, stickers, Chemistry, Dough, Fire, heat, Flies, Goop, Hand tools, Plants, Sheet shaking, Smells, Time skips |
| Paper: Paper and water film | colour hold 22, dye 13, colour 10, float layer 8, water 7, wetness 7, any element 4, metal 3, goop 3, dents 3, salt crystals 2, salt \(in water\) 2, heat 2 \(next update\), food 1 | dye 75, colour 57, colour hold 42, float layer 34, goop 32, wetness 25, water 22, cover 19, heat 10, metal 9, slope, jolt 7, holes 7, salt crystals 6, dents 5, salt \(in water\) 4, wax 4, soap 2, shear 1, food 1, frost 1, fat 1, crust 1, sheet shaking 1 | 29: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Pigeon, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Pigeon: Pigeon | goop 11, motion seen 3, wind 2, press 1, dents 1, colour 1, noise 1 | goop 19, float layer 4, wind 2, danger 1, smoke 1, sweet smell 1, dents 1, crust 1, motion seen 1, noise 1, vibration 1, heat 1, wetness 1 | 32: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Plants, Pressers, Senses, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Plants: Plants and seeds | mould 2, goop 1, colour 1 | mould 4, heat 2, press 1, holes 1 | 29: Air, Ants, Balls, Bits, stickers, Bodies, Cat, dog, Chemistry, Circuit, Contact, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Pressers: Pressers: car, tyre, face, roller, iron | goop 39, colour 16, dents 14, dye 9, press 6, water 4, wetness 4, motion seen 3, noise 3, impact 2, vibration 2, wind 2, bodies 1, shear 1, soap 1, foul smell 1, fat 1, heat 1 | goop 81, colour 21, dents 18, float layer 16, dye 15, wetness 15, holes 12, water 10, colour hold 3, dough 3, soap 2, slope, jolt 2, frost 2, fat 2, bodies 1, cover 1, heat 1 | 32: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Cups, bottles, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Senses, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Senses: Senses and danger \(creatures share them\) | · | press 6, warm air 5, wind 5, motion seen 4, smoke 3, shear 2 \(next update\), foul smell 2, sharp smell 2, sour smell 2, sweet smell 2, noise 2, vibration 2, bodies 1 | 0 |
| Sheet shaking: Sheet vibration and grains | goop 11, bases 2, sheet shaking 2 | goop 30, bases 3, frost 2, wetness 2, holes 1, mould 1 | 28: Air, Ants, Balls, Bits, stickers, Bodies, Cat, dog, Chemistry, Circuit, Contact, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Pressers, Smells, Snail, Soap, foam, String, Time skips, Wicking |
| Smells: Smell sources | foul smell 1, sharp smell 1, sour smell 1, sweet smell 1 | dough 2, goop 2, acid 1, bleach 1, sugar 1, food 1, mould 1, heat 1 | 7: Air, Ants, Cat, dog, Flies, Pigeon, Senses, Snail |
| Snail: Snail | goop 6 | goop 11, float layer 2, heat 2, danger 1, acid 1, bleach 1, sour smell 1, sweet smell 1, holes 1, motion seen 1, vibration 1 | 28: Air, Ants, Balls, Bits, stickers, Bodies, Cat, dog, Chemistry, Circuit, Contact, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Pressers, Sheet shaking, Smells, Soap, foam, String, Time skips, Wicking |
| Soap, foam: Soap, foam, surface tension | goop 18, colour 10, float layer 8, dye 6, surface soap 6, soap 3, stir 3, wetness 2, any element 1, noticed 1 \(next update\), water 1 | goop 71, float layer 30, dye 15, surface soap 14, colour 12, wetness 8, soap 6, water 6, slope, jolt 4, colour hold 3, stir 3, press 2, cover 1, frost 1, fat 1, holes 1, sheet shaking 1, wind 1 | 28: Air, Ants, Balls, Bits, stickers, Bodies, Cat, dog, Chemistry, Circuit, Contact, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Pressers, Sheet shaking, Smells, Snail, String, Time skips, Wicking |
| String: String and what rings | danger 2, vibration 2, bodies 1, shear 1, sheet shaking 1 | slope, jolt 3, goop 3, bodies 2, heat 2, float layer 1, water 1, wetness 1 | 18: Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Contact, Cups, bottles, Engine, Flies, Goop, Mould, Paper, Pigeon, Pressers, Senses, Snail, Soap, foam |
| Time skips: Time skips \(settle, oven, ageing\) | goop 19, colour 18, iron 2, food 2, mould 2, water 2, wetness 2, char 1, sugar 1, dents 1, heat 1 \(next update\) | goop 45, colour 20, wetness 9, holes 6, water 5, char 4, cover 4, bases 4, food 4, mould 4, colour hold 3 \(next update\), metal 3 \(next update\), dye 3 \(next update\), acid 3, sugar 2, dough 1, any element 1 \(next update\), iron 1 \(next update\), frost 1, dents 1, wax 1 | 30: Air, Ants, Balls, Bits, stickers, Bodies, Candles, sticks, Cat, dog, Chemistry, Circuit, Contact, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Plants, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Wicking |
| Wicking: Wicking and dyes | dye 48, colour 24, goop 9, wetness 3, crust 2, noticed 1 \(next update\) | dye 96, colour 48, goop 25, wetness 9, crust 6, holes 4, colour hold 3 \(next update\), cover 2, dough 2, salt crystals 1 | 28: Air, Ants, Balls, Bits, stickers, Bodies, Cat, dog, Chemistry, Circuit, Contact, Dough, Engine, Fire, heat, Flies, Float, grease, Frost, Goop, Hand tools, Lens, laser, Mould, Paper, Pigeon, Pressers, Sheet shaking, Smells, Snail, Soap, foam, String, Time skips |

[Every layer's writers and readers](<#hood-wiring-layers>)

Every layer's writers and readers

The wiring

### Every layer's writers and readers

The panel of the graph above, for every layer at once, grouped as the inner ring is. The number after each name is how many places in its code. Routes are writers times readers, in the released game.

| Layer | Written by | Read by | Routes |
| --- | --- | --- | --- |
| Heat \(Heat\) | Engine 7, Fire, heat 7, Bits, stickers 3, Cups, bottles 3, Lens, laser 2, Float, grease 2, Frost 2 \(next update\), Goop 2, Paper 2 \(next update\), Hand tools 2, Bodies 1, Contact 1 \(next update\), Circuit 1, Time skips 1 \(next update\), Pressers 1 | Fire, heat 34, Paper 10, Engine 8, Bits, stickers 6, Float, grease 6, Goop 6, Cat, dog 6, Contact 5 \(next update\), Chemistry 4 \(next update\), Cups, bottles 4, Circuit 4, Hand tools 4, Lens, laser 3, Bodies 3, Flies 3, Plants 2, Snail 2, Candles, sticks 2, String 2, Ants 1, Dough 1, Frost 1, Mould 1, Pigeon 1, Smells 1, Pressers 1 | 264 |
| Where a flame stands \(Heat\) | Fire, heat 3, Bits, stickers 1 | Fire, heat 6, Bodies 2, Engine 1 \(next update\) | 4 |
| Burnt and charred \(Heat\) | Fire, heat 4, Lens, laser 1, Engine 1, Time skips 1 | Fire, heat 7, Time skips 4, Lens, laser 3, Mould 2, Engine 1 | 20 |
| Holes in the paper \(Heat\) | Candles, sticks 2, Engine 1, Fire, heat 1 | Goop 16, Hand tools 15, Pressers 12, Fire, heat 8, Paper 7, Time skips 6, Float, grease 5, Bits, stickers 4, Engine 4, Wicking 4, Contact 3, Candles, sticks 3, Lens, laser 2, Bodies 2, Circuit 2, Mould 2, Air 1, Balls 1, Chemistry 1 \(next update\), Dough 1, Frost 1, Plants 1, Snail 1, Soap, foam 1, Sheet shaking 1 | 72 |
| Frost \(Heat\) | Frost 3, Goop 3, Bits, stickers 1, Contact 1 \(next update\) | Goop 17, Contact 6, Frost 5, Float, grease 4, Engine 3, Air 2, Hand tools 2, Pressers 2, Sheet shaking 2, Bits, stickers 1, Mould 1, Paper 1, Soap, foam 1, Candles, sticks 1 \(next update\), Time skips 1 | 42 |
| Wetness in the paper \(Paper and water\) | Hand tools 15, Goop 8, Engine 7, Paper 7, Bits, stickers 6, Pressers 4, Air 3, Wicking 3, Fire, heat 2, Cat, dog 2, Soap, foam 2, Time skips 2, Balls 1, Lens, laser 1, Chemistry 1, Frost 1 | Paper 25, Pressers 15, Goop 14, Hand tools 10, Time skips 9, Wicking 9, Bits, stickers 8, Chemistry 8, Soap, foam 8, Frost 7, Air 6, Contact 4, Fire, heat 4, Lens, laser 3, Mould 3, Circuit 2, Sheet shaking 2, Balls 1, Engine 1, Float, grease 1, Pigeon 1, String 1 | 352 |
| Standing water \(Paper and water\) | Engine 9, Hand tools 8, Paper 7, Air 6, Bits, stickers 4, Pressers 4, Chemistry 2, Contact 2, Frost 2, Goop 2, Time skips 2, Lens, laser 1, Cups, bottles 1, Dough 1, Fire, heat 1, Float, grease 1, Cat, dog 1, Soap, foam 1 | Goop 26, Paper 22, Float, grease 13, Air 12, Pressers 10, Contact 9, Engine 9, Chemistry 8, Frost 8, Soap, foam 6, Bits, stickers 5, Time skips 5, Lens, laser 3, Dough 3, Fire, heat 3, Hand tools 3, Ants 2, Circuit 2, Mould 2, Cat, dog 2, Candles, sticks 1 \(next update\), String 1 | 378 |
| Colour in the paper \(Paper and water\) | Bits, stickers 26, Wicking 24, Time skips 18, Goop 16, Pressers 16, Hand tools 15, Fire, heat 12, Paper 10, Soap, foam 10, Chemistry 8, Engine 7, Contact 6, Cat, dog 4, Pigeon 1, Plants 1 | Paper 57, Wicking 48, Hand tools 38, Fire, heat 35, Chemistry 33, Goop 27, Bits, stickers 21, Pressers 21, Time skips 20, Soap, foam 12, Contact 9, Engine 9, Frost 9, Ants 3, Lens, laser 3, Cat, dog 3 | 240 |
| Dye the water carries \(Paper and water\) | Wicking 48, Paper 13, Contact 12, Goop 12, Pressers 9, Soap, foam 6, Engine 3, Chemistry 2, Cups, bottles 1 \(next update\), Hand tools 1 \(next update\) | Wicking 96, Paper 75, Contact 21, Goop 21, Soap, foam 15, Pressers 15, Chemistry 12, Frost 9 \(next update\), Air 6, Time skips 3 \(next update\) | 64 |
| How colour holds on \(Paper and water\) | Paper 22, Frost 3 \(next update\) | Paper 42, Chemistry 3, Contact 3, Frost 3 \(next update\), Goop 3, Soap, foam 3, Time skips 3 \(next update\), Pressers 3, Wicking 3 \(next update\) | 6 |
| Dents and cockle \(Paper and water\) | Pressers 14, Bits, stickers 4, Engine 3, Paper 3, Contact 2, Candles, sticks 2, Cat, dog 1, Pigeon 1, Time skips 1 | Pressers 18, Paper 5, Bits, stickers 4, Float, grease 4, Goop 4, Engine 3, Contact 2, Candles, sticks 2, Hand tools 2, Cat, dog 1, Pigeon 1, Time skips 1 | 108 |
| Porous crust \(Paper and water\) | Wicking 2 | Wicking 6, Goop 3, Fire, heat 1, Paper 1, Pigeon 1 | 5 |
| What lies on the paper \(Paper and water\) | Bits, stickers 6 | Paper 19, Bits, stickers 11, Goop 9, Float, grease 7, Air 4, Time skips 4, Fire, heat 3, Contact 2, Dough 2, Engine 2 \(next update\), Wicking 2, Soap, foam 1, Candles, sticks 1 \(next update\), Pressers 1 | 12 |
| Metal and graphite \(Paper and water\) | Circuit 7, Fire, heat 3, Paper 3, Hand tools 3, Engine 2 \(next update\) | Circuit 10, Paper 9, Fire, heat 5, Time skips 3 \(next update\), Hand tools 2, Lens, laser 1, Engine 1 \(next update\) | 20 |
| Wax in the paper \(Paper and water\) | Hand tools 2, Fire, heat 1 | Fire, heat 8, Paper 4, Hand tools 4, Goop 2, Bits, stickers 1, Chemistry 1, Time skips 1 | 14 |
| Fat in the paper \(Paper and water\) | Float, grease 4, Goop 2, Fire, heat 1, Pressers 1 | Float, grease 9, Fire, heat 6, Goop 3, Pressers 2, Paper 1, Soap, foam 1 | 24 |
| Goop \(Goop\) | Goop 231, Hand tools 57, Engine 49, Float, grease 48, Pressers 39, Dough 38, Chemistry 37, Bits, stickers 19, Time skips 19, Soap, foam 18, Air 17, Fire, heat 15, Contact 14, Cat, dog 13, Pigeon 11, Sheet shaking 11, Wicking 9, Frost 7, Ants 6, Snail 6, Candles, sticks 4, Bodies 3, Paper 3, Cups, bottles 1, Circuit 1, Plants 1 | Goop 382, Float, grease 99, Chemistry 98, Dough 98, Pressers 81, Soap, foam 71, Engine 65, Hand tools 65, Time skips 45, Paper 32, Sheet shaking 30, Fire, heat 29, Contact 28, Bits, stickers 27, Wicking 25, Cat, dog 21, Air 20, Frost 20, Pigeon 19, Ants 17, Snail 11, Mould 8, Flies 7, Cups, bottles 6 \(next update\), Lens, laser 5, Circuit 3, String 3, Bodies 2, Smells 2, Balls 1 | 754 |
| Floating layer \(Goop\) | Float, grease 59, Goop 18, Fire, heat 8, Paper 8, Soap, foam 8, Bits, stickers 2, Engine 1 | Float, grease 135, Goop 59, Paper 34, Soap, foam 30, Fire, heat 17, Pressers 16, Air 8, Flies 8, Cat, dog 6, Engine 5, Pigeon 4, Hand tools 3, Ants 2, Bits, stickers 2, Snail 2, Balls 1, Lens, laser 1, Bodies 1, Contact 1 \(next update\), Dough 1, Circuit 1, Frost 1, String 1 | 154 |
| What is worked into dough \(Goop\) | Dough 47, Goop 5, Fire, heat 1 | Dough 79, Goop 6, Pressers 3, Chemistry 2 \(next update\), Circuit 2, Fire, heat 2, Smells 2, Wicking 2, Contact 1, Time skips 1 | 27 |
| Soap on a surface \(Goop\) | Soap, foam 6, Goop 1 | Soap, foam 14, Goop 2, Chemistry 1 \(next update\) | 4 |
| How hard soap was worked \(Goop\) | Soap, foam 3, Float, grease 1 | Float, grease 5, Soap, foam 3 | 4 |
| Food for mould \(Goop\) | Fire, heat 3, Mould 2 \(next update\), Time skips 2, Hand tools 2, Ants 1, Chemistry 1, Frost 1, Goop 1, Paper 1 | Fire, heat 9, Mould 5, Time skips 4, Ants 3, Goop 3, Hand tools 2, Chemistry 1, Flies 1, Frost 1, Paper 1, Smells 1 | 88 |
| Mould \(Goop\) | Mould 4, Chemistry 2, Plants 2, Time skips 2, Fire, heat 1 | Mould 9, Chemistry 7, Fire, heat 4, Plants 4, Time skips 4, Hand tools 4, Goop 3, Bits, stickers 1, Dough 1, Flies 1, Smells 1, Sheet shaking 1 | 60 |
| Any dissolved element \(Chemistry\) | Hand tools 16, Goop 5, Paper 4, Chemistry 2, Cups, bottles 1 \(next update\), Engine 1, Soap, foam 1 | Chemistry 9, Time skips 1 \(next update\), Hand tools 1 \(next update\) | 6 |
| Acid \(Chemistry\) | Chemistry 8, Circuit 1 | Chemistry 28, Time skips 3, Ants 2, Circuit 1, Flies 1, Mould 1, Smells 1, Snail 1 | 16 |
| Bases \(Chemistry\) | Chemistry 6, Sheet shaking 2, Circuit 1, Fire, heat 1, Hand tools 1 | Chemistry 25, Time skips 4, Circuit 3, Fire, heat 3, Sheet shaking 3, Hand tools 2 | 30 |
| Bleach \(Chemistry\) | Chemistry 3 | Chemistry 6, Ants 3, Flies 1, Mould 1, Smells 1, Snail 1 | 6 |
| Dissolved salt \(Chemistry\) | Paper 2, Chemistry 1 | Chemistry 5, Paper 4, Circuit 1 | 6 |
| Crystal salt \(Chemistry\) | Paper 2, Chemistry 1 | Paper 6, Chemistry 2, Frost 1 \(next update\), Wicking 1 | 6 |
| Sugar \(Chemistry\) | Fire, heat 2, Ants 1, Bits, stickers 1, Chemistry 1, Time skips 1 | Fire, heat 8, Ants 3, Chemistry 3, Time skips 2, Hand tools 2 \(next update\), Flies 1, Mould 1, Smells 1 | 35 |
| Soap in the paper \(Chemistry\) | Soap, foam 3, Cups, bottles 1 \(next update\), Pressers 1 | Soap, foam 6, Chemistry 3, Float, grease 2, Goop 2, Paper 2, Hand tools 2, Pressers 2, Ants 1, Balls 1, Bits, stickers 1 | 20 |
| Tannin \(Chemistry\) | Chemistry 2 | Chemistry 3 | 1 |
| Iron \(Chemistry\) | Time skips 2, Chemistry 1, Fire, heat 1 | Chemistry 2, Time skips 1 \(next update\) | 3 |
| Indicator dyes \(Chemistry\) | Chemistry 2 | Chemistry 5, Hand tools 1 | 2 |
| Urea, peroxide, spent acid \(Chemistry\) | Chemistry 6 | Chemistry 7 | 1 |
| Wind \(Air\) | Engine 10, Air 8, Cat, dog 4, Pigeon 2, Pressers 2, Balls 1, Hand tools 1 | Air 23, Bits, stickers 8, Engine 5, Senses 5, Bodies 4, Candles, sticks 4, Cups, bottles 3, Fire, heat 3, Mould 3, Flies 2, Cat, dog 2, Pigeon 2, Balls 1, Soap, foam 1 | 98 |
| Warm air \(Air\) | Engine 4, Candles, sticks 1 | Bits, stickers 5, Senses 5, Cups, bottles 4, Candles, sticks 1 \(next update\) | 6 |
| Smoke \(Air\) | Engine 9 | Air 4, Senses 3, Ants 1, Flies 1, Cat, dog 1, Pigeon 1 | 6 |
| CO₂ \(Air\) | Engine 5, Cups, bottles 3 | Air 4, Fire, heat 2, Candles, sticks 2 | 6 |
| Chlorine \(Air\) | Engine 2, Cups, bottles 1 \(next update\) | Air 4, Engine 2 | 2 |
| Sweet smell \(Air\) | Smells 1 | Air 4, Senses 2, Ants 1, Flies 1, Cat, dog 1, Pigeon 1, Snail 1 | 7 |
| Foul smell \(Air\) | Cat, dog 1, Smells 1, Pressers 1 | Air 4, Senses 2, Flies 1, Cat, dog 1 | 12 |
| Sour smell \(Air\) | Smells 1 | Air 4, Senses 2, Ants 1, Flies 1, Cat, dog 1, Snail 1 | 6 |
| Sharp smell \(Air\) | Smells 1 | Air 4, Senses 2, Ants 1 | 3 |
| Mould spores \(Air\) | Mould 2 | Air 4, Mould 2 | 2 |
| Damp air \(Air\) | Engine 1 \(next update\) | Air 5 \(next update\) | 0 |
| Noise \(Senses\) | Engine 7, Pressers 3, Cups, bottles 1, Circuit 1, Pigeon 1 | Cat, dog 3, Senses 2, Flies 1, Pigeon 1 | 20 |
| Vibration felt \(Senses\) | Engine 10, String 2, Pressers 2 | Senses 2, Ants 1, Flies 1, Mould 1, Cat, dog 1, Pigeon 1, Snail 1 | 21 |
| Movement seen \(Senses\) | Engine 9, Cat, dog 3, Pigeon 3, Pressers 3, Hand tools 2, Balls 1, Circuit 1 | Senses 4, Ants 1, Flies 1, Cat, dog 1, Pigeon 1, Snail 1 | 42 |
| Coming down on a creature \(Senses\) | Engine 6, Hand tools 3, String 2 | Ants 1, Flies 1, Cat, dog 1, Pigeon 1, Snail 1 | 15 |
| Press \(Contact\) | Hand tools 25, Engine 8, Pressers 6, Bodies 1, Cat, dog 1, Pigeon 1 | Senses 6, Engine 4, Cups, bottles 3, Contact 2, Soap, foam 2, Ants 1, Balls 1, Bits, stickers 1, Bodies 1, Flies 1, Mould 1, Plants 1, Candles, sticks 1 | 78 |
| Shear \(Contact\) | Hand tools 10, Engine 4, Cat, dog 4, Bodies 1 \(next update\), String 1, Pressers 1 | Contact 3, Bits, stickers 2, Engine 2, Senses 2 \(next update\), Mould 1 \(next update\), Paper 1 | 20 |
| Impact \(Contact\) | Engine 7, Hand tools 6, Pressers 2, Cat, dog 1 | Engine 3 | 4 |
| Bodies \(Contact\) | Engine 8, Bodies 2 \(next update\), Balls 1, Cat, dog 1, String 1, Hand tools 1, Pressers 1 | Bodies 11, Engine 4, String 2, Balls 1, Contact 1 \(next update\), Cups, bottles 1, Senses 1, Candles, sticks 1, Pressers 1 | 48 |
| Slope and jolt \(Motion\) | Engine 9 | Bodies 27, Bits, stickers 16, Engine 16, Goop 15, Cups, bottles 13, Candles, sticks 8, Paper 7, Soap, foam 4, Balls 3, String 3, Fire, heat 2, Hand tools 2, Pressers 2 | 13 |
| The sheet shaking \(Motion\) | Engine 3, Sheet shaking 2, String 1 | Bodies 3 \(next update\), Bits, stickers 1, Goop 1, Paper 1, Soap, foam 1 | 12 |
| Light on the paper \(Light\) | Engine 1 \(next update\) | Light 4 \(next update\), Flies 3 \(next update\), Chemistry 1 \(next update\), Engine 1 \(next update\) | 0 |
| Phenomena noticed \(Noticed\) | Chemistry 10 \(next update\), Cups, bottles 2 \(next update\), Engine 2 \(next update\), Fire, heat 2 \(next update\), Hand tools 2 \(next update\), Circuit 1 \(next update\), Frost 1 \(next update\), Soap, foam 1 \(next update\), Candles, sticks 1 \(next update\), Wicking 1 \(next update\) | Engine 1 \(next update\) | 0 |

## Twenty chain reactions nobody programmed, each one checked by a test

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.

[Under the hood: the order of one tick](<#hood-tick>)

Twenty chain reactions nobody programmed, each one checked by a test

Under the hood

### Twenty chain reactions nobody programmed, each one checked by a test

The simulation steps 60 times a second, and the order within a step is a design choice: what acts first is seen by what follows. Noise, vibration and motion fade last, "so whatever happened this tick was there for everyone to notice before it fades". Slow, smooth things such as water soaking into paper may step less often than fast ones.

### Through the air

Shared: wind

#### Roll a football fast past a lit candle

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](<https://professoroops.com/en/inside/air/>)* · checked by a test

Shared: acid \+ base → CO₂

#### Pour vinegar on baking soda beside a candle

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](<https://professoroops.com/en/inside/chemistry/>)* · checked by a test

Shared: heat → CO₂ depth

#### Shake baking soda over burning oil

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](<https://professoroops.com/en/inside/heat/>)* · checked by a test

Shared: warm air \+ flame

#### Burn paper beside loose confetti, near a cut in the sheet, in a breeze

Burning scraps ride the updraft across the cut and start a second fire.

*[Heat and fire](<https://professoroops.com/en/inside/heat/>)* · checked by a test

Shared: foul smell \+ wind

#### A dog asleep, a breeze, a fly downwind

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](<https://professoroops.com/en/inside/creatures/>)* · checked by a test

Shared: press → spores → wind

#### Bounce a ball on mould in a breeze, then skip time

New mould grows downwind on food somewhere else.

*[Dough, mould and time](<https://professoroops.com/en/inside/living/>)* · checked by a test

### Through what creatures notice

Shared: motion seen, looming

#### Let a bucket fall near a pigeon

It's off before the bucket lands. Far away, it stays.

*[Animals with their own minds](<https://professoroops.com/en/inside/creatures/>)* · checked by a test

Shared: noise \+ motion

#### One pigeon takes off

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](<https://professoroops.com/en/inside/creatures/>)* · checked by a test

Shared: noise

#### Run a vacuum cleaner near a dog

It barks at a roar close by, not at a fan across the page.

*[Sound and shaking](<https://professoroops.com/en/inside/sound/>)* · checked by a test

Shared: sheet shaking

#### Hold a speaker face down on the paper

Ants scatter, sand gathers on the still lines, bubbles on the shaking parts pop.

*[Sound and shaking](<https://professoroops.com/en/inside/sound/>)* · checked by a test

### Through pressing and bumping

Shared: press against crush

#### Walk a pigeon over a yolk and a tomato

The yolk bursts; the tomato holds.

*[Things that push things](<https://professoroops.com/en/inside/pushing/>)* · checked by a test

Shared: bodies: mass and build

#### Roll a football at a full cup

It tips and spills the way the ball was going. A tennis ball only rattles it.

*[Things that push things](<https://professoroops.com/en/inside/pushing/>)* · checked by a test

Shared: carried load

#### Drive the toy car through ketchup

Red tracks go on beyond the puddle, with the paint shared out, none made.

*[Runny, sticky and oily](<https://professoroops.com/en/inside/liquids/>)* · checked by a test

### Through heat, water and chemistry

Shared: goop carries heat

#### Spill hot coffee towards a chocolate bar

The bar softens where the coffee reaches it.

*[Heat and fire](<https://professoroops.com/en/inside/heat/>)* · checked by a test

Shared: ash → carbonate → pH

#### Burn some paper, then paint red cabbage juice over it

Blue in a thin ring round the burn, where the ash is, and purple beside it. Fire reaches chemistry.

*[Chemistry and pH](<https://professoroops.com/en/inside/chemistry/>)* · checked by a test

Shared: iron \+ tannin

#### Tea on damp paper with a pin in it, then skip a few days

A blue-black ring of iron-gall ink. The iron comes from the rusting pin.

*[Chemistry and pH](<https://professoroops.com/en/inside/chemistry/>)* · checked by a test

Shared: heat

#### Connect 9 V across steel wool on paper

It glows white-hot and catches fire where the clips bite. Electricity reaches fire.

*[Electricity](<https://professoroops.com/en/inside/electricity/>)* · checked by a test

Shared: heat

#### A fly lands on a glowing wire

It's off at once. The fly's code has no wire in it.

*[Electricity](<https://professoroops.com/en/inside/electricity/>)* · checked by a test

Shared: acid, salt, sugar in food

#### Leave honey and ketchup out for three days

Honey stays clean, ketchup grows mould. Vinegar on it keeps the mould off; juice doesn't.

*[Dough, mould and time](<https://professoroops.com/en/inside/living/>)* · checked by a test

Shared: soap on the surface

#### Touch soap to a puddle with pepper on it

The pepper rushes away. The magic-milk code knows nothing about pepper.

*[Runny, sticky and oily](<https://professoroops.com/en/inside/liquids/>)* · checked by a test

### Coming in the next update

Shared: heat at the wick

#### Burning paper reaches a candle

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](<https://professoroops.com/en/inside/heat/>)* · checked by a test

Shared: water at the wick

#### Pour water on a lit wick

next update It drowns where it stands and won't relight while wet. Poured beside it, the flame burns on.

*[Heat and fire](<https://professoroops.com/en/inside/heat/>)* · checked by a test

Shared: heat speeds reactions

#### Bleach on warm paper

next update Colour fades faster. In the released game, warmth speeds reactions only during time skips.

*[Chemistry and pH](<https://professoroops.com/en/inside/chemistry/>)* · checked by a test

![Vinegar fizzing on a heap of baking soda beside a birthday candle that has just gone out, its wick black.](<https://professoroops.com/_assets/entity_cYevqYwIlQTCosP5xJaz.webp>)

**Vinegar, baking soda and a candle.** The fizz gives off CO₂, which is heavier than air. It creeps along the paper and puts out the candle beside it. Nothing in the candle's code mentions vinegar.

![A stripe of red cabbage juice across a small hole burnt in the paper: purple on the clean paper, blue in a thin ring round the scorched edge.](<https://professoroops.com/_assets/entity_LZIXcBN7RfkLfwXHQkGP.webp>)

**Fire meets chemistry with no rule between them.** A small burn, put out with the damp tea towel, then a stripe of red cabbage juice across it. Burning leaves potash in the ash, a base. The juice reads the pH of the paper under it: purple on clean paper, blue in a thin ring round the scorched edge, where the ash is. The colour is a table read on the pH.

### Some tests check that things don't know about each other

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.

[Under the hood: tests of absence](<#hood-absence>)

Some tests check that things don't know about each other

Under the hood

### Some tests check that things don't know about each other

- One test reads the speaker's own code and fails if it names anything the shaking moves: loose bits, foam, bubbles, goop, water, ripples, particles, grains or any material. It also reads the code of ten things that feel the shaking and fails if any of them names the speaker.
- Another fails if the table shake's code mentions cups, balls, bits, sticks, cars, sloshing, spilling, foam or stickers.
- A third fails if the flies ever gain a command that tells them to leave. They have to notice. \(One exception, on purpose: anything pressing down slides a fly out from under it, so no creature is ever hurt.\)
- The speaker test also sets the sheet shaking by hand with no speaker present, and the glitter still reads it.

## Animals react to a bang, a jolt or a sudden movement, whatever made it

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 <sup>[Card 2008](<https://professoroops.com/en/inside/research-real/#card-2008>)</sup>. 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 <sup>[Hingee 2009](<https://professoroops.com/en/inside/research-real/#hingee-2009>)</sup>. The game has no special alarm sound, only a loud, sudden thing.

[Under the hood](<#hood-senses>)

Animals react to a bang, a jolt or a sudden movement, whatever made it

Under the hood

### Animals react to a bang, a jolt or a sudden movement, whatever made it

Three grids on the air's coarse grid. A source writes a splat that fades with distance, kept only where it's stronger than what's there \(peak-hold\), so many small sources never add up to a bang. Each layer dies away within a fraction of a second.

A louder noise reaches further. A blow's jolt grows with its energy. A mover shows more the faster and bigger it is, and a slow one shows nothing at all. Things coming down look bigger the nearer they get, as a looming shape does to a real animal. One shared sense function serves all six species:

surprise = what it senses − what it made itself − what it's used to  ·  threat = Σ sensitivity × surprise  →  startles above its own level

What it's used to drifts towards what it senses, so a steady noise stops counting. The only per-animal part is one row of numbers per species, the same at the release. What a creature then does \(how far it flees, how fear adds up\) is its own code.

Try it: who notices? The game's own ruleTap 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.

![A sheet of paper with a pigeon, a fly, ants, a snail, a cat and a dog. Blows and hand movements write noise, vibration and motion, and each animal startles when its threat passes its own level.](<https://professoroops.com/_assets/entity_rDGYXHWJXXHfFyysxsj7.png>)

- pigeon
- pigeon startled
- fly
- fly startled
- ant
- ant startled
- snail
- snail startled
- cat
- cat startled
- dog
- dog startled
- A bang: noise and a jolt
- Your blow: a bang and a jolt
- A fast swipe
- A slow creep up to the fly
- Your hand
- noise
- vibration
- motion seen

Blowloud 1.00

Hand size12 cells

hand speed—

motion it shows—

seen?—

blow: noise reaches—

jolt—

jolt reaches—

startles: pigeon—

startles: fly—

startles: ant—

startles: snail—

startles: cat—

startles: dog—

Six animals, one sense function, a row of numbers each

Ants and snails hear nothing \(noise 0\) and feel vibration fully \(1\); the fly sees motion most keenly \(1.5\) and startles soonest \(0.3\); the pigeon hears best \(1\) and startles last \(0.5\).

- noise
- vibration
- motion seen
- startles above

Data table

Six animals, one sense function, a row of numbers each

|  | noise | vibration | motion seen | startles above |
| --- | --- | --- | --- | --- |
| pigeon | 1 | 0.3 | 1 | 0.5 |
| fly | 0.2 | 0.8 | 1.5 | 0.3 |
| ant | 0 | 1 | 0.1 | 0.3 |
| snail | 0 | 1 | 0.5 | 0.3 |
| cat | 0.6 | 0.3 | 0.6 | 0.35 |
| dog | 0.5 | 0.2 | 1.1 | 0.45 |

Source: The game's own table of senses per species, the same at the release. The order follows real animals \(deaf ants and snails, flies quick to see movement\); the sizes are tuned for play, not measured.

## No rule in the game names two substances, yet vinegar and baking soda still fizz

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 <sup>[Dohta 2017](<https://professoroops.com/en/inside/research-simulation/#dohta-2017>)</sup>. 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.

[Under the hood: how "0" was counted](<#hood-zero>)

No rule in the game names two substances, yet vinegar and baking soda still fizz

Under the hood

### No rule in the game names two substances, yet vinegar and baking soda still fizz

A scan of the TypeScript syntax tree of the simulation, creature and tool code \(58,098 lines at the release, 69,002 now\) finds every place a material is tested by name, in a comparison or a switch, and every place two such tests on different things meet, joined by "and" or nested one inside the other.

Now: 851 mentions of a material by name, nearly all "put down some of this"; 71 tests of which material is there, 16 of them for "nothing", so 55 name a real material; 0 pairs. At the release: 77 tests and one candidate, which only picks the colour of a smashed fruit's pulp.

The scan's known hole: it can't tell two different spots on the paper apart, so a test of one spot for A and another spot for B would count as one thing. So all 71 tests were also read by hand. None is such a pair. A grep for materials named another way found two string tests for vinegar: one only picks a tint, the other only puts acid down.

Pairs, from the property table alone \(the substances plus the drops\), as "can act, given enough of both in one place". No pair was run. At the release: 104 substances, 5,356 pairs, 1,143 \(21.3 %\) with something specific, 2,080 \(38.8 %\) counting mould. These are cross products of a handful of rules, not that many separate behaviours.

Try it: any two substances The game's own ruleEach 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.

![A matrix of the game's substances against each other; a coloured square marks a pair that a property rule connects.](<https://professoroops.com/_assets/entity_cdTeDdQEY7CW4jDDX0PO.png>)

ShowAllReactions and colourWater gets inLayersDoughMouldFirstvinegarbleachwatercooking oilsaltdish soapflourgrape juiceSecondbaking sodamilkketchuphoneyyolkshellcolachia seeds

pairs lit—

share—

first—

first: pH—

second—

second: pH—

picked pair—

Reactions and colour—

Water gets in—

Layers—

Dough—

Mould—

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.

[The rules behind the squares](<#hood-rules>)

The rules behind the squares

Any two substances

### The rules behind the squares

What each rule in the matrix means. The readouts under the matrix name the ones the picked pair meets.

| Rule | Kind | What it does |
| --- | --- | --- |
| Fizz | Reactions and colour | Acid meets baking soda: the chemistry table's fizz rule, acid with base, gives off CO₂. |
| Fizz on shell | Reactions and colour | An acid meets eggshell, which is tagged as a carbonate and fizzes in acid. |
| Curdles | Reactions and colour | An acid meets milk, and milk's row says it curdles into curd. |
| Colour change, acid side | Reactions and colour | A juice with anthocyanin \(grape, blueberry, strawberry\) meets an acid and reddens. The colour comes from a table read on the pH, not from a rule. |
| Colour change, base side | Reactions and colour | An indicator \(anthocyanin, or the curcumin in mustard\) meets a base and shifts colour. A table again. |
| Chlorine | Reactions and colour | Bleach meets an acid: the chlorine rule, and a spoken warning to open the window. |
| Bleach fades it | Reactions and colour | Bleach fades the colour of whatever it reaches. |
| Soap on milk | Reactions and colour | Soap meets milk: the surface flow of the magic-milk experiment. |
| Water gets in: swells | Water gets in | Something watery meets something that swells or sets with water \(seeds to gel, flour to dough, as its row says\). |
| Water gets in: dissolves | Water gets in | Something watery meets something that dissolves in it \(salt, icing sugar, baking soda\). |
| Keep apart | Layers | A fat or oil meets something watery: they don't mix, and one floats on the other. |
| Held mixed | Layers | An emulsifier \(yolk, mustard, foam\) meets a fat or oil and holds it mixed. |
| Soaks up fat | Layers | Flour or cornflour meets a fat or oil and soaks it up. |
| Mould: bleach | Mould | Bleach on a food stops mould growing there. |
| Mould: acid | Mould | Enough acid on a food keeps mould off. |
| Mould: salt | Mould | Salt on a food changes how well mould can grow there. |
| Mould: sugar | Mould | A very sweet thing on a food changes how well mould can grow there. |
| Dough | Dough | Dough kneads it in: yeast, butter in sheets, salt, sugar. |

## Some things are still written by hand, and here is the list

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. |

## Where we simplify, and why

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.

**In real life.** Substances mix in any proportion

**In the game.** One column of goop per cell, of one material. Whatever is added in greater amount than what's there takes over; colour and height add.

**Why that's enough.** Every property is one table lookup. The smaller partner's properties vanish from that cell, though its colour stays. Dough is the exception: it keeps track of what is worked into it.

**In real life.** Liquids stack freely

**In the game.** Goop plus one floating layer

**Why that's enough.** Oil on water is what children see. There's no third layer.

**In real life.** Sound is a wave

**In the game.** A splat on a coarse grid that dies away within a fraction of a second, with no echo and no shadow. Two loud things don't add up: the louder is kept.

**Why that's enough.** Creatures need "how loud, from where". Everything else a wave does is lost.

**In real life.** Pressure is force over area

**In the game.** A number on a game scale, and a crush per material

**Why that's enough.** It orders things right: bubble, yolk, tomato, apple. The numbers have no units.

**In real life.** Air is three-dimensional

**In the game.** A flat grid, with height as a formula

**Why that's enough.** Fast enough for a phone. Nothing happens above the paper as a volume.

**In real life.** A flame uses up oxygen

**In the game.** No oxygen. Covering is yes or no per cell, and CO₂ puts a flame out past a depth.

**Why that's enough.** The outcome is right. A real candle under a jar lasts seconds until its air runs out; here it goes out at once.

**In real life.** Reactions follow amounts and concentration

**In the game.** A rate per cell, times time, using up both by rule

**Why that's enough.** A table can hold them. Adding water doesn't dilute.

**In real life.** Any pair might interact

**In the game.** Pairs meet only through a shared layer

**Why that's enough.** No table of every pair to keep right. A route can be real and still too small to see, so the pair counts above are potential, not observed.
