---
title: "Things that push things"
description: "How Professor Oops works out bumps, tipping, tilting, rolling paint and goop strings from weight, size and grip: a football topples a mug, a marble can't."
source_name: "Game Tailors"
source_url: "https://professoroops.com/en/inside/pushing/"
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:03:33.457Z"
modified_at: "2026-11-10T12:03:33.457Z"
---

# Things that push things

## A football topples a mug, a marble doesn't, and no rule says so

Everything on the paper that isn't paint has a weight, a size and a height. A marble weighs 5 grams, a football 430, a full mug 450. When two things meet, the game works out the bump from those numbers. Tilt the tablet and balls, toy cars, string and cups all feel the same downhill, each held back by its own grip. Roll a ball through paint and it prints the paint again exactly one turn of the ball later.

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

![Painted illustration of the painter pushing a toy car through blue paint, leaving tyre tracks, beside a monster truck, a beach ball, a football and a marble](<https://professoroops.com/_assets/entity_Ous2FAFeixeVW2G070EG.webp>)

## Weight, size and where it's hit decide whether a mug goes over

Roll a football at a full mug and the mug goes over, spilling the way the ball was rolling. Roll a marble at it, even fast, and the mug only rattles. There's no line in the code that says "football tips mug". There is one rule for anything standing on its foot, and every ball brings its own weight, bounciness and size to it.

The rule asks one question. Does the blow swing the mug round its far edge hard enough to lift its middle over that edge? A heavier ball gives a harder blow. A bigger ball hits higher up, where the same blow turns the mug more. A taller, narrower thing goes over more easily, and a wider, squatter one resists. In the released game every cup stands by this sum. next update Bottles and flasks stand by it too, each with its own numbers.

Drag a mug with your finger and stop dead, and it goes over. Slow down gently and it stays up. Swing it round a sharp corner too fast and it goes over as well. The mug wants to keep going while your finger has stopped or turned, and the same sum decides both. Nothing in the code knows about corners. Push a mug slowly, even at its rim, and it slides instead, because the paper's grip gives way before the mug's foot does.

Fruit, pens, pebbles and stamped cards are different again. They are painted straight into the same grid of squares as the paint. When you push one, the game reads all the squares of that fruit as one solid piece, moves it, and lays it down again from its original shape, so it never crumbles or loses a drop. Shove a pen at one end and it swings round, because the game measures how its weight is spread from its own squares.

A football topples a mug, a marble doesn't, and no rule says so

For engineers

### A football topples a mug, a marble doesn't, and no rule says so

Loose things are 2.5D capsules \(a disc or stadium in plan, with a height\) in one shared registry, stepped at a fixed 60 Hz. A bump is one textbook impulse per pair, and a standing thing goes over when the blow's angular impulse about its far edge beats what it takes to lift its centre of mass over that edge. Tools and moving things touch the page through one shared description of a press that twelve systems read in turn.

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

Weight, size and where it's hit decide whether a mug goes over

Under the hood

### Weight, size and where it's hit decide whether a mug goes over

The bump is the textbook impulse between two bodies, worked out once per pair per step with no iteration, from their masses and a shared bounciness. Any overlap is pushed apart in proportion to how light each one is:

J = −\(1 \+ e\)·v<sub>n</sub> / \(1/m<sub>a</sub> \+ 1/m<sub>b</sub>\)

A standing thing rocks about the edge of its foot like a solid cylinder. It tips if the blow, struck at a height, carries more angular impulse about that edge than lifting its centre of mass over the edge takes. That energy condition is real mechanics, with the page's own gravity in it. A ball strikes at the height of its centre, so a bigger ball turns the mug more. When it tips, tipping takes only the share of the blow it needs and the ball rolls on with the rest.

Dragged by a finger, the cup's own inertia makes a turning couple about its edge, and the cup rocks by one angle until its centre passes over the edge. The same sum covers a sudden stop and a sharp corner.

Pushed steadily, a thing goes over before it slides only if its grip on the paper, times the height of the push, beats its foot's half-width. A mug's doesn't, so a slow push never tips it. An automated test pins each of these: the slow push, the stop, the corner, the football that tips and the tennis ball and marble that rattle.

Fruit and pens are read as one connected lump of squares, kept in their own frame and redrawn from that first reading on every move, so the volume always comes out exact. A push off-centre splits into sliding and turning by the textbook rigid-body rule, with the lump's radius of gyration measured from its own squares \(pinned by a test\). next update Lumps also meet the loose things, so a flicked pen knocks a cup on where today it passes through.

Try it: roll a ball at a full mug The game's own ruleA side view. The ball rolls in at the speed you set and meets the mug with the game's bump and tipping rule, using each ball's mass, bounciness and size from the game. **What to look for:** the football tips the mug at 160 cells/s, as in the game's test. Switch to the tennis ball or the marble at the same speed and the mug only rattles. Then find the slowest speed that still tips it. The demo shows the rattle as a short shove.

![Side view of a ball rolling at a full mug, which tips over or rattles by the game's rule](<https://professoroops.com/_assets/entity_5ogqTQ3DJThqtsUrmVsf.png>)

- marble · 5 g
- tennis ball · 58 g
- beach ball · 100 g
- football · 430 g
- hits the mug 3.2 cells up \(dashed\)
- hits the mug 7.0 cells up \(dashed\)
- hits the mug 22.0 cells up \(dashed\)
- hits the mug 18.0 cells up \(dashed\)

BallMarbleTennis ballBeach ballFootball

Speed160 cells/s

mug—

blow × height—

mug needs—

this ball needs—

outcome—

How fast each ball must roll to tip a full mugAn automated test checks the football at 160 \(tips\) and the tennis ball and marble \(rattle\).

A football must roll at 98 cells/s, a beach ball 220, a tennis ball 1,061, a bouncy ball 3,905 and a marble 23,402.

Data table

How fast each ball must roll to tip a full mug

| the ball rolled at the mug | speed needed |
| --- | --- |
| Football | 97.5 |
| Beach ball | 219.5 |
| Tennis ball | 1061.3 |
| Bouncy ball | 3905.4 |
| Marble | 23 402.4 |

Source: Worked out from the game's own tipping rule and each ball's mass, size and bounciness; a ball hits the mug at the height of its centre.

## One tap bursts a yolk, pops a bubble and sends a fly darting, because a dozen systems feel the same touch

When a hand, a hammer, a rolling pin, a rolling ball, a toy car's wheels or a monster truck's tyre touches the page, it describes a press: how big its foot is, how hard it presses, how hard its face is, how sharp, how fast and how heavy. Then the game hands that one description to a dozen systems in turn. The paint and paper underneath, flames, soap bubbles, foam, confetti, creatures, loose things, plants, sticks and mould all read the same press and decide for themselves.

So one tap can burst a yolk, pop a bubble, send a fly darting off and slide a cup. Whether something breaks goes by its own strength. A yolk gives way to almost anything, then a strawberry, a tomato and an orange, and an apple holds out longest. A rolling football presses hard enough to burst a strawberry, and a marble rolls over it. A rolling pin slammed down lands between the orange and the apple, so it bursts the orange and leaves the apple whole.

Hardness matters too. What breaks by a blow feels it through a soft face much less than through a hard one. What tips takes all of it. That's why a palm swept slowly past a toothpick leans it over instead of snapping it, and a palm flicked at a mug knocks the mug flat. A hammer brought down on a toothpick drives it into the paper without breaking it, because the hard face holds its top straight.

The press also reaches the creatures. They feel it as danger: a small one is slid clear, and the others dodge. No creature is ever hurt, by design, and that rule runs through the same channel as everything else.

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

One tap bursts a yolk, pops a bubble and sends a fly darting

Under the hood

### One tap bursts a yolk, pops a bubble and sends a fly darting

One shared record describes every press: the shape of its foot, how hard it presses, how firm and how sharp its face is, how heavy it is, how fast it moves in three directions, whether it slips, how warm it is and whether it ploughs. The engine hands that record to twelve listeners in a fixed order. Each square of the page feels the share of the foot that covers it. The record also names the tool, for sounds only; no rule ever looks at the name.

A blow lands with more than its weight: its kinetic energy, spread over the size of its foot, adds to its pressure for that moment. This is a calibrated blend, not strict physics. It was tuned so that a football bursts a tomato and a marble doesn't, so those outcomes are what it was set for, and a test pins the rolling pin's slam between the orange and the apple.

The soft-face rule: what breaks feels the blow scaled down steeply by how soft the face is; what tips takes all of it \(pinned by tests that sweep the hand past dozens of things\). A steady hand on a stick counts as a steady push, set so that it snaps a toothpick and leaves a candle standing. That setting was calibrated against the snap strengths, and we say so.

### One press, read twelve times

#### paper and paint

#### flames under it

#### soap bubbles

#### foam

#### confetti and bits

#### creatures

#### sealed vessels

#### loose things

#### plants

#### balls in the air

#### sticks

#### mould

**One press, read twelve times.** The order is fixed. Each listener reads the same description \(foot · how hard · how firm · how sharp · how heavy · how fast · slip · warmth · plough\) and decides by its own numbers.

What gives way to what

| On one log scale | Gives way at | Presses at |
| --- | --- | --- |
| 0.3 | yolk | toy car wheel |
| 0.4 | · | marble rolling |
| 0.8 | strawberry | · |
| 1 | · | football rolling |
| 1.5 | tomato | · |
| 2 | banana | · |
| 2.5 | · | rolling pin |
| 3 | passion fruit | · |
| 4 | orange | · |
| 5.05 | · | rolling pin slammed |
| 6 | apple | · |
| 22 | · | hammer blow |
| 50 | · | monster-truck lug |

**What gives way to what.** How much each thing can take before it bursts, and how hard each thing presses, on one scale. A press bursts whatever sits below it in the gives-way column.

## Tilt the tablet and balls, cars, fruit, string and cups feel the same downhill

Tip a phone or tablet and the page tips with it. Balls, toy cars, fruit, string, cups, confetti and stickers all read the same downhill pull. Each one only starts moving when that pull beats its own grip on the paper. A marble goes almost at once. Confetti needs a clear tip. String and a mug need a steep one. A sticker stuck down on dry paper never slides at all, until heat or water has loosened its glue.

A marble and a tennis ball tipped together don't speed up alike. The marble is solid, the tennis ball hollow, and a rolling ball keeps some of its energy in its spin. The game uses the same two fractions you'd find in a physics book, 5/7 and 3/5, so the marble pulls ahead.

The tablet also learns how you hold it. Rest it at an angle in your lap and your drawing doesn't drain to the bottom. A small tip is soon treated as the new level. A clear tip keeps things pouring, and fades only slowly. Water, goop and the air read the same downhill through their own flows.

The shake button bumps the table: a quick run of short jolts in random directions. Loose things lag behind each jolt, so they jump about, each by its own grip.

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

Tilt the tablet and everything feels the same downhill

Under the hood

### Tilt the tablet and everything feels the same downhill

One shared rule gives the downhill every loose thing reads: the page's slope plus any jolt from the shake button, held back by Coulomb friction. A thing starts moving when the tangent of the tilt beats its grip, and then only by the part of the pull beyond that grip. Each kind of thing has its own grip; a sticker adds the hold of its glue until heat or water loosens it. On a ball the pull is scaled by the textbook rolling fractions, 5/7 for a solid ball and 3/5 for a hollow one \(the ratio is checked by a test\).

The slope comes from the gravity sensor, less a rest pose the game learns. The rest pose follows the device quickly while it's close to level and very slowly once it's clearly tipped, with a small dead zone round it. So the angles in the demo are angles of the page's slope, a little more from the tablet's rest pose.

The shake button is a short burst of random jolts, strong enough to beat light grips and not heavy ones \(pinned by a test\).

next update Bottles and lids lying down, towels, bulbs and the battery read the slope too, and a cup glides by the same law as the rest. In the released game a cup creeps by a rule of its own.

Try it: tip the page The game's own ruleSix loose things on the same tipped page, downhill to the right. Each reads the game's downhill rule with its own grip. The balls speed up by 5/7 and 3/5 of it, the car's speed drifts back towards stopped as a let-go car's does, and the mug creeps as it does in the released game. Things are drawn bigger than their size. **What to look for:** raise the tilt slowly and watch each one start at its own angle. Press "Shake the table" at a low tilt and see the light things jump.

![Six loose things on a tipped page, each starting to slide or roll at its own angle](<https://professoroops.com/_assets/entity_XejDp7HnfeIfvNglMTMD.png>)

- downhill →
- Marble
- Tennis ball
- Toy car
- Confetti
- String
- Mug
- starts 2.3°
- starts 2.3°
- starts 2.9°
- starts 6.8°
- starts 19.3°
- starts 21.8°

Tilt of the page8.0°

slope—

pulled past its grip—

A held tip slowly becomes the new levelAn automated test checks that a clear tip keeps things moving for seconds.

A 0.1 g tip fades below a marble’s start \(0.04 g\) within a second; a 0.3 g tip takes about 29 s and a 0.5 g tip about 44 s.

- tipped 0.1 g \(about 6°\)
- tipped 0.3 g \(about 17°\)
- tipped 0.5 g \(30°\)
- a marble starts rolling

Data table

A held tip slowly becomes the new level

| seconds held | tipped 0.1 g \(about 6°\) | tipped 0.3 g \(about 17°\) | tipped 0.5 g \(30°\) | a marble starts rolling |
| --- | --- | --- | --- | --- |
| 0 | 0.07 | 0.27 | 0.47 | 0.04 |
| 0.5 | 0.0479 | 0.265 | 0.4617 | — |
| 1 | 0.0307 | 0.2602 | 0.4536 | — |
| 1.5 | 0.0172 | 0.2554 | 0.4456 | — |
| 2 | 0.0068 | 0.2507 | 0.4378 | — |
| 2.5 | 0 | 0.246 | 0.43 | — |
| 3 | 0 | 0.2415 | 0.4224 | — |
| 3.5 | 0 | 0.237 | 0.4149 | — |
| 4 | 0 | 0.2326 | 0.4076 | — |
| 4.5 | 0 | 0.2282 | 0.4004 | — |
| 5 | 0 | 0.2239 | 0.3932 | — |
| 5.5 | 0 | 0.2197 | 0.3862 | — |
| 6 | 0 | 0.2156 | 0.3794 | — |
| 6.5 | 0 | 0.2116 | 0.3726 | — |
| 7 | 0 | 0.2076 | 0.3659 | — |
| 7.5 | 0 | 0.2036 | 0.3594 | — |
| 8 | 0 | 0.1998 | 0.353 | — |
| 8.5 | 0 | 0.196 | 0.3466 | — |
| 9 | 0 | 0.1922 | 0.3404 | — |
| 9.5 | 0 | 0.1886 | 0.3343 | — |
| 10 | 0 | 0.185 | 0.3283 | — |
| 10.5 | 0 | 0.1814 | 0.3223 | — |
| 11 | 0 | 0.1779 | 0.3165 | — |
| 11.5 | 0 | 0.1745 | 0.3108 | — |
| 12 | 0 | 0.1711 | 0.3052 | — |
| 12.5 | 0 | 0.1678 | 0.2996 | — |
| 13 | 0 | 0.1645 | 0.2942 | — |
| 13.5 | 0 | 0.1613 | 0.2888 | — |
| 14 | 0 | 0.1581 | 0.2835 | — |
| 14.5 | 0 | 0.155 | 0.2784 | — |
| 15 | 0 | 0.152 | 0.2733 | — |
| 15.5 | 0 | 0.149 | 0.2683 | — |
| 16 | 0 | 0.146 | 0.2633 | — |
| 16.5 | 0 | 0.1431 | 0.2585 | — |
| 17 | 0 | 0.1402 | 0.2537 | — |
| 17.5 | 0 | 0.1374 | 0.249 | — |
| 18 | 0 | 0.1346 | 0.2444 | — |
| 18.5 | 0 | 0.1319 | 0.2399 | — |
| 19 | 0 | 0.1292 | 0.2354 | — |
| 19.5 | 0 | 0.1266 | 0.231 | — |
| 20 | 0 | 0.124 | 0.2267 | — |
| 20.5 | 0 | 0.1215 | 0.2225 | — |
| 21 | 0 | 0.119 | 0.2183 | — |
| 21.5 | 0 | 0.1165 | 0.2142 | — |
| 22 | 0 | 0.1141 | 0.2102 | — |
| 22.5 | 0 | 0.1117 | 0.2062 | — |
| 23 | 0 | 0.1094 | 0.2023 | — |
| 23.5 | 0 | 0.1071 | 0.1984 | — |
| 24 | 0 | 0.1048 | 0.1947 | — |
| 24.5 | 0 | 0.1026 | 0.191 | — |
| 25 | 0 | 0.1004 | 0.1873 | — |
| 25.5 | 0 | 0.0982 | 0.1837 | — |
| 26 | 0 | 0.0961 | 0.1802 | — |
| 26.5 | 0 | 0.094 | 0.1767 | — |
| 27 | 0 | 0.092 | 0.1733 | — |
| 27.5 | 0 | 0.09 | 0.1699 | — |
| 28 | 0 | 0.0634 | 0.1666 | — |
| 28.5 | 0 | 0.0428 | 0.1634 | — |
| 29 | 0 | 0.0267 | 0.1602 | — |
| 29.5 | 0 | 0.0141 | 0.157 | — |
| 30 | 0 | 0.0044 | 0.1539 | — |
| 30.5 | 0 | 0 | 0.1509 | — |
| 31 | 0 | 0 | 0.1479 | — |
| 31.5 | 0 | 0 | 0.145 | — |
| 32 | 0 | 0 | 0.1421 | — |
| 32.5 | 0 | 0 | 0.1392 | — |
| 33 | 0 | 0 | 0.1364 | — |
| 33.5 | 0 | 0 | 0.1337 | — |
| 34 | 0 | 0 | 0.131 | — |
| 34.5 | 0 | 0 | 0.1283 | — |
| 35 | 0 | 0 | 0.1257 | — |
| 35.5 | 0 | 0 | 0.1231 | — |
| 36 | 0 | 0 | 0.1206 | — |
| 36.5 | 0 | 0 | 0.1181 | — |
| 37 | 0 | 0 | 0.1157 | — |
| 37.5 | 0 | 0 | 0.1133 | — |
| 38 | 0 | 0 | 0.1109 | — |
| 38.5 | 0 | 0 | 0.1086 | — |
| 39 | 0 | 0 | 0.1063 | — |
| 39.5 | 0 | 0 | 0.104 | — |
| 40 | 0 | 0 | 0.1018 | — |
| 40.5 | 0 | 0 | 0.0996 | — |
| 41 | 0 | 0 | 0.0975 | — |
| 41.5 | 0 | 0 | 0.0954 | — |
| 42 | 0 | 0 | 0.0933 | — |
| 42.5 | 0 | 0 | 0.0913 | — |
| 43 | 0 | 0 | 0.0795 | — |
| 43.5 | 0 | 0 | 0.0553 | — |
| 44 | 0 | 0 | 0.0364 | — |
| 44.5 | 0 | 0 | 0.0217 | — |
| 45 | 0 | 0 | 0.0103 | — |
| 45.5 | 0 | 0 | 0.0014 | — |
| 46 | 0 | 0 | 0 | — |
| 46.5 | 0 | 0 | 0 | — |
| 47 | 0 | 0 | 0 | — |
| 47.5 | 0 | 0 | 0 | — |
| 48 | 0 | 0 | 0 | — |
| 48.5 | 0 | 0 | 0 | — |
| 49 | 0 | 0 | 0 | — |
| 49.5 | 0 | 0 | 0 | — |
| 50 | 0 | 0 | 0 | 0.04 |

Source: Computed with the game's own rest-pose rule: it follows a small tip quickly and a clear tip slowly, with a small dead zone.

## A ball rolled through paint prints it again one turn later

Each ball is a sphere that turns as it rolls. Its skin is split into 512 small patches, and each patch carries whatever paint it has touched. Roll a ball through a stripe of paint and the patch that touched it comes round to the bottom again after exactly one turn of the ball. There it prints the stripe again, fainter, and again one turn later. Rolling it back and forth only moves the paint about. Paint comes off the paper onto the ball and back, and none is made or lost.

A tennis ball is fuzzy, so it soaks up a lot and prints grainy. A marble takes up little. Paint under a ball slows it down, and wet soapy paper lets it roll much further. Slam a ball down and it squashes for a moment, splats what's under it and bounces off a little sideways, because no hit is quite straight.

Toy cars are steered towards your finger, the way a child steers one, and they can only turn sharply while rolling. Their four tyres carry paint the same way the ball's skin does, so a car driven through ketchup leaves red tracks that fade over a long way. Deep in mud, honey or glue, the wheels sink and crawl through. A car that drives into a tomato bumps it and leaves it whole, because a wheel presses more lightly than a tomato can take.

The monster truck's tyre is a spectacle: nearly two-fifths as long as the page is high. It's simulated as one line of cells where it touches the paper, with chevron lugs that press hard, dent the paper and squeeze paint out sideways.

Moving things push the page back. A ball or a hand dragged through paint ploughs it aside with a bow wave, heavier balls more. Balls, cars and the hand stir the air as they go, so a football rolled fast past a candle blows it out without touching it. A slap on the paper puffs air out that blows nearby confetti. The air is the same coarse stable-fluids grid the fan and hair dryer blow, after <sup>[Stam 1999](<https://professoroops.com/en/inside/research-simulation/#stam-1999>)</sup>.

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

A ball rolled through paint prints it again one turn later

Under the hood

### A ball rolled through paint prints it again one turn later

A ball has a position and speed in three dimensions, an orientation quaternion and a skin of 512 patches that each carry paint. It always rolls without slipping: every move turns the quaternion by distance over radius about the axis across its path, in small steps that each touch the paper. The disc under the ball maps to skin patches through the quaternion. Each patch prints some of what it carries and picks up what's wet, by the same carry rule the car's tyres and the string use. An automated test finds the print exactly one circumference, 2πR, after the stripe.

Paint and goop under a ball add drag, and soap takes some of it away, up to a limit. Landing hard, a ball squashes for a moment and bounces back at a share of its speed, so to that share squared of its height, as a real ball does. next update Paint parts more evenly between skin and paper at each touch, and the page's edge stops a ball unless it's flung off hard; in the released game it rolls off and is gone.

The toy car is driven kinematically: it wants to head for your finger, slows when it has to turn, and can turn sharply only while it rolls. Its tyres carry paint by the shared carry rule. Deep, sticky goop holds a wheel much harder than it holds a foot. A car's bump is its own rule, because a motor keeps pushing \(pinned by a test\).

The monster tyre is heavy and runs at a constant speed that nothing slows. Under a lug the paper dents, more when it's wet, and goop is squeezed out past the tyre's edge. At a steady beat it lands a blow and shakes the sheet \(pinned by a test\).

Ploughing grows with a body's weight for its size, up to a cap \(checked by a test\), and runs in a WebAssembly kernel that is bit-exact with its JavaScript twin. In the air, a moving body adds a dipole flow round itself, as a cylinder moving through a fluid does. A football rolled fast past a candle blows it out, and rolled slowly it leaves it lit, and an automated test checks both.

Try it: roll a ball through paint The game's own ruleSeen from above. The ball turns by the game's quaternion rule, and its 512 skin patches pick up and print paint by the shares in the game's carry rule \(one paint, simplified\). Drag on the paper to roll it yourself, or press Roll it back. **What to look for:** the faint copies of the red stripe land on the yellow marks, each one turn of the ball apart. The marble's marks are close together, the football's far apart. "Paint in all" never changes: the ball only moves paint about.

![A ball seen from above rolling through a red stripe of paint and printing it again one turn later](<https://professoroops.com/_assets/entity_f5SW53DboiJ10YdzFHb4.png>)

BallMarbleTennis ballFootball

Speed45 cells/s

one turn—

rolled—

paint on the ball—

paint in all—

![A tennis ball's track after rolling through a red stripe: fainter red copies of the stripe repeating at even spacing along its path](<https://professoroops.com/_assets/entity_2l9nCtBkI3rSXJYb5MNV.webp>)

**In the game.** A tennis ball rolled through a stripe of red paint prints it again and again, fainter than the stripe, one turn of the ball apart.

## The hand touches as much paper as its painting covers, and tells a slap from a smear

The hand is free and always on screen. Turn its size slider all the way down and only the tip of the index finger touches, for fine finger painting. From a little below the middle of the slider up it's the whole palm, which squeezes a palm's worth out of a puddle and ploughs a broad trench through thick paint. With a mouse you see the painted hand, and the disc it presses has the area of the skin in that painting, to within half a percent. An earlier version pressed less than half the skin it showed. That was fixed before the release.

A touch screen can't tell how fast a finger came down. So the hand presses at once and decides afterwards. Lift quickly without sliding and it was a slap, and paint splashes. Slide, or stay, and it was put down, so smearing paint never sprays it. Even the painted cuff of the sleeve is part of the simulation. It shoves aside a cup the palm missed, and lifts over it when you tip onto a fingertip.

Every finger on the glass is its own hand. One can hold a piece of string while another smears paint, and lifting one never drops what the other holds. If the system steals a finger mid-gesture, say for a notification, the hand lets go cleanly and finishes nothing.

Throws read the finger's real speed. Each touch event carries the time it happened, so a fling is measured the same on a busy old tablet as on a fast one. A thrown thing leaves at a share of the finger's speed, and a solid one skids to a stop on landing.

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

The hand touches as much paper as its painting covers

Under the hood

### The hand touches as much paper as its painting covers

The disc the palm presses is sized to have the same area as the skin in the hand's painting, to within half a percent, and an automated test pins that. At small sizes the point that touches slides smoothly from the index fingertip to the palm; at larger sizes the reach grows with the painting. That one radius feeds the press, the wipe, the slap, the ploughing, the strings, the air and the scheduler that keeps slow devices smooth.

The palm's outline is lumpy, a few slow lobes round a firm middle, so a palm print isn't a perfect circle. next update A wiping palm bears down flatter, so its trench through tube paint comes closer to the size of the painted palm.

Slap or put down is decided after the fact, from how long the finger stayed and how far it slid. Dragged through a paint pool the hand throws no drops; tapped, it throws a splash \(pinned by a test\).

Every tool that holds something keeps one gesture per finger. A finger that goes quiet, or whose id comes down again, is let go, and a move with no finger is ignored. Two test files cover this with 59 cases.

Each pointer event carries its own time stamp into the Web Worker that runs the simulation. The throw speed is measured over the last moments of motion, and is zero if the finger stood still before letting go. Solids skid to a stop over the textbook stopping distance for their grip \(pinned by a test\). next update Between events the tools' clock runs on the page's own steps, and a recorded gesture gives the same page at 0.25×, 1× and 3× machine speed \(pinned by a test\).

One automated test sweeps a fingertip and a palm, slow and fast, through some 35 kinds of loose thing, each row with a written sentence of what should happen. Flicked by a fast palm, a card slides more than twice as far as an apple.

The hand's reach now follows its paintingAt the default size the earlier hand pressed less than half the skin it showed; now the palm disc has the painted skin's area to within half a percent, pinned by a test. At small sizes the touch moves from the index fingertip to the palm, so it is smaller on purpose.

At the default size \(0.4\) the hand now touches a radius of 10.1 cells, where the earlier rule touched 6.6; at full size 22 against 18.2.

- now: a disc with the painted skin's area
- earlier: a rule of its own

Data table

The hand's reach now follows its painting

| size slider | now: a disc with the painted skin's area | earlier: a rule of its own |
| --- | --- | --- |
| 0 | 1.65 | 2.1 |
| 0.02 | 1.711 | 2.167 |
| 0.04 | 1.887 | 2.278 |
| 0.06 | 2.165 | 2.414 |
| 0.08 | 2.531 | 2.569 |
| 0.1 | 2.973 | 2.741 |
| 0.12 | 3.48 | 2.927 |
| 0.14 | 4.036 | 3.127 |
| 0.16 | 4.631 | 3.338 |
| 0.18 | 5.252 | 3.56 |
| 0.2 | 5.885 | 3.791 |
| 0.22 | 6.518 | 4.033 |
| 0.24 | 7.139 | 4.283 |
| 0.26 | 7.734 | 4.542 |
| 0.28 | 8.29 | 4.809 |
| 0.3 | 8.797 | 5.084 |
| 0.32 | 9.239 | 5.366 |
| 0.34 | 9.605 | 5.655 |
| 0.36 | 9.883 | 5.952 |
| 0.38 | 10.059 | 6.255 |
| 0.4 | 10.12 | 6.564 |
| 0.42 | 10.402 | 6.879 |
| 0.44 | 10.724 | 7.201 |
| 0.46 | 11.064 | 7.529 |
| 0.48 | 11.415 | 7.862 |
| 0.5 | 11.775 | 8.201 |
| 0.52 | 12.143 | 8.545 |
| 0.54 | 12.517 | 8.895 |
| 0.56 | 12.896 | 9.25 |
| 0.58 | 13.28 | 9.61 |
| 0.6 | 13.668 | 9.975 |
| 0.62 | 14.06 | 10.345 |
| 0.64 | 14.456 | 10.719 |
| 0.66 | 14.855 | 11.099 |
| 0.68 | 15.257 | 11.483 |
| 0.7 | 15.662 | 11.872 |
| 0.72 | 16.07 | 12.265 |
| 0.74 | 16.48 | 12.662 |
| 0.76 | 16.893 | 13.064 |
| 0.78 | 17.308 | 13.47 |
| 0.8 | 17.725 | 13.88 |
| 0.82 | 18.145 | 14.295 |
| 0.84 | 18.566 | 14.713 |
| 0.86 | 18.989 | 15.135 |
| 0.88 | 19.414 | 15.562 |
| 0.9 | 19.841 | 15.992 |
| 0.92 | 20.27 | 16.426 |
| 0.94 | 20.7 | 16.864 |
| 0.96 | 21.132 | 17.306 |
| 0.98 | 21.565 | 17.751 |
| 1 | 22 | 18.2 |

Source: From the game's hand-size rule and the rule it replaced.

## Strings stretch out of melted cheese, thin and snap

Press the hand into melted cheese, honey or glue and pull away, and strings stretch off your fingers. As you pull, each string thins and draws a little more out of the goop where it's stuck. When it's too thin it snaps somewhere along its length. By the code, the part near the paper falls back as a thread and the rest drops in a blob under your hand, and every drop is accounted for. On the page a child sees the strings stretch and snap; the fallen threads don't show.

How stringy something is depends on its state, not its name. Cold cheese doesn't string at all. Melt it and it strings as much as anything in the game. Honey and glue string a bit, peanut butter and chocolate hardly. Dust dough with flour and the hand hardly sticks to it, through the same rule that every pick-up reads.

The String tool is a different thing: a length of string you lay on the paper. It's a chain of points that can't stretch. The paper's friction is so heavy that it slides and doesn't swing. Drag one end and the rest follows, wrapping round cups in its way, picking up wet paint and printing it further on. Tilt the page past its grip and it slides downhill like the balls and cups.

One small fix shows the approach. Strings used to be drawn out of the single square under their anchor, and every string pulled out of thick peanut butter left a tiny pit. A hand stroke came out dotted with pinpricks. Now a string draws from a little foot around its anchor, more from nearby and deeper squares, as the goop would flow in towards it. The pinpricks are gone, and the total amount of goop over a stroke changes by less than a millionth.

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

Strings stretch out of melted cheese, thin and snap

Under the hood

### Strings stretch out of melted cheese, thin and snap

Goop strings are a small shared pool for the whole page. How stringy a square is right now depends on three things: how stringy its material is, how much of it is still liquid rather than set, and whether flour dusts it. Below a certain share of liquid nothing strings at all.

A string catches a little of the goop under the hand and holds together by its material's stickiness. On each move, while it's thin, it draws a little more from a small foot round its anchor, more from nearby and deeper squares. It snaps when it's too thin for its stickiness, at a random point partway along. Every drop it took goes back to the page as a thread and a blob.

Automated tests pin the outcomes: melted cheese makes long strings, floured dough gives far fewer strings than plain dough, and thick peanut butter shows no lone specks while the total goop over a stroke changes by less than a millionth.

The String tool uses Verlet integration with heavy paper friction and repeated constraint passes so it can't stretch, and it carries paint at every point. A string lying still goes to sleep and costs nothing until something it lies round changes. It never parts, whatever the heat \(pinned by a test\).

Try it: pull strings out of goop The game's own ruleThe circle is the hand at its default size. It comes down in a pool of goop and pulls away, catching, stretching, topping up and snapping strings by the game's rule. Drag on the paper to pull with your own hand, or press Pull again. **What to look for:** melted cheese stretches all the way across, honey snaps late, peanut butter and chocolate snap early and lie as threads \(in the game the fallen threads don't show on the paper\). Slide "melted" well down and nothing strings at all. The rule counts moves, not seconds: it tops a string up once per move, so pull in smaller steps and even honey holds on.

![A hand pulling strings out of a pool of melted goop; they thin, snap and fall as threads](<https://professoroops.com/_assets/entity_0cJCmSsqTElpyHhYPVpS.png>)

GoopMelted cheeseHoneyPeanut butterChocolate

Melted100 %

Pull per move4.0 cells

hand—

strings held—

longest now—

snapped—

longest snapped—

stringiness in the pool—

![Strings of warmed cheese stretching from a slice all the way to the hand pulling away from it](<https://professoroops.com/_assets/entity_LFuSjF3m31gePqmrPBdC.webp>)

**In the game.** A cheese slice warmed with the hair dryer, then pulled by the hand: strings stretch from the slice all the way to the hand.

## A mug fizzes and a bottle sprays because of the size of its mouth

Cups, the cola bottle and the flask are all one kind of thing: a container with contents. What's inside is a well-mixed amount with its colour, what it's made of, its fizz and its temperature. Its opening is a door, and anything that lands there goes in, the way it lands anywhere else.

There's no geyser code and no toothpaste code. When gas forms inside, it has to leave through the opening. Through a wide mug the gas leaves slowly and the drink just fizzes and froths over the rim. Through the narrow neck of a bottle the same gas has to rush out fast, and above a set speed it throws the liquid up with it. Soap in the mix traps the gas as foam that lasts far longer. Change the numbers and you have a different eruption.

Knock a mug over and it spills the way it fell. In the released game the spill is a shortcut: a puddle and a splash. next update Bottles and flasks stand and fall by their own build. A full cola bottle on a narrow foot goes over on a tilt before it slides, and a squat flask slides. Empty the bottle and it weighs less than half as much, so it tips at a knock a full one only rattles at. What pours out is set by geometry: a mug empties almost at once, a bottle pours for seconds, and what's below the neck stays inside.

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

A mug fizzes and a bottle sprays because of the size of its mouth

Under the hood

### A mug fizzes and a bottle sprays because of the size of its mouth

All containers share one model. Gas has to leave through the mouth, so the speed it leaves at is the gas made per step over the mouth's area, and above a set speed it carries liquid with it. Some of the gas becomes foam, much more through soapy liquid, and soapy foam lasts far longer. The bottle and the flask differ only in their numbers; the eruption tools only fill them. A cup is a container too, and an automated test checks them all.

next update Mass and balance follow the contents. The centre of mass moves down as the drink drains, so the angle a bottle tips at changes with how full it is. It tips when the page's slope beats the ratio of its foot to the height of its centre of mass, and slides when the slope beats its grip, whichever comes first.

A bottle lying down keeps what sits below its mouth's lip, a circular segment worked out from its shape. It pours out the rest at a rate set by the size of its mouth, slowly through a neck and almost at once out of a mug. Tests pin the full cola bottle tipping on a tilt and the flask sliding, an emptied bottle going over at a knock a full one only rattles at, and cups and bottles lying down. A standing cup is always counted as full: its mass and balance don't change as you drink.

A cola bottle tips at an angle that moves with how full it isIt tips when the slope beats its foot over the height of its centre of mass, and slides when the slope beats its grip. A test pins the full bottle tipping and the flask sliding. The stretch above the dashed line, about 20 to 65 % full, is the rule's prediction, by a degree at most; no test pins it.

Full or empty, the bottle tips at 18.8°, and up to 22.9° at 40 % full; it slides at 21.8°, so from about 20 to 65 % full it would slide first.

- cola bottle tips at
- it slides at

Data table

A cola bottle tips at an angle that moves with how full it is

| how full \(%\) | cola bottle tips at | it slides at |
| --- | --- | --- |
| 0 | 18.753 | 21.801 |
| 2.5 | 19.27 | — |
| 5 | 19.756 | — |
| 7.5 | 20.209 | — |
| 10 | 20.626 | — |
| 12.5 | 21.009 | — |
| 15 | 21.355 | — |
| 17.5 | 21.666 | — |
| 20 | 21.94 | — |
| 22.5 | 22.178 | — |
| 25 | 22.381 | — |
| 27.5 | 22.55 | — |
| 30 | 22.685 | — |
| 32.5 | 22.789 | — |
| 35 | 22.861 | — |
| 37.5 | 22.904 | — |
| 40 | 22.919 | — |
| 42.5 | 22.908 | — |
| 45 | 22.872 | — |
| 47.5 | 22.812 | — |
| 50 | 22.732 | — |
| 52.5 | 22.632 | — |
| 55 | 22.513 | — |
| 57.5 | 22.378 | — |
| 60 | 22.228 | — |
| 62.5 | 22.064 | — |
| 65 | 21.888 | — |
| 67.5 | 21.701 | — |
| 70 | 21.505 | — |
| 72.5 | 21.3 | — |
| 75 | 21.087 | — |
| 77.5 | 20.868 | — |
| 80 | 20.644 | — |
| 82.5 | 20.416 | — |
| 85 | 20.184 | — |
| 87.5 | 19.948 | — |
| 90 | 19.711 | — |
| 92.5 | 19.472 | — |
| 95 | 19.233 | — |
| 97.5 | 18.993 | — |
| 100 | 18.753 | 21.801 |

Source: next update Computed from the game's own balance rule for a part-full bottle.

## A football rolled past a candle blows it out, and a toy car driven through ketchup leaves red tracks

Each of these happens because two systems share a layer of the page, and neither one names the other.

Shared: the ball's wake → air speed at the flame

### Roll a football fast past a lit candle

The candle blows out without being touched. Rolled slowly, it stays lit. Pinned by a test · *[Air that really moves](<https://professoroops.com/en/inside/air/>)*

Shared: a slap → a puff of air

### Slap the paper beside some confetti

The gust from the slap blows the confetti away. Pinned by a test · *[Air that really moves](<https://professoroops.com/en/inside/air/>)*

Shared: paint carried on its tyres

### Drive the toy car through ketchup

Red tyre tracks run on beyond the ketchup, fading as the tyres give up what they took. Pinned by a test · *[Runny, sticky and oily](<https://professoroops.com/en/inside/liquids/>)*

Shared: the page's heat → each toy's material

### Bake a toy car and a beach ball in the oven

The car slumps into a puddle of its own plastic. The ball shrivels into a patch with just the plastic of its skin, stripes and all. The marble comes through. Pinned by a test · *[Heat and fire](<https://professoroops.com/en/inside/heat/>)*

Shared: how set each square of goop is

### Melt cheese with the hair dryer, then pull it with the hand

Strings stretch out of it. Let it cool and set, and it won't string. Pinned by a test · *[Heat and fire](<https://professoroops.com/en/inside/heat/>)*

Shared: the press → danger

### Sweep the hand across the paper where creatures are

Each one gets out of the way, slow or fast, fingertip or palm. None is ever under the hand. Pinned by a test · *[Animals with their own minds](<https://professoroops.com/en/inside/creatures/>)*

98 cells/s

The slowest a football can roll and still tip a full mug. A marble would need 23,402.

12

Systems that read every press, in a fixed order, each by its own numbers.

512

Patches on every ball's skin, each carrying its own paint round.

8×

How much slower than life things fly on the page, the same for everything that falls.

35

Kinds of loose thing one test sweeps the hand through, each with a written sentence of what should happen.

60 Hz

Fixed steps a second for every bump, roll and tip, worked out in a Web Worker beside the drawing.

![A mug lying on its side after a football rolled into it, the ball just behind it, a ring stain where the mug stood and the drink spilled ahead in the direction the ball was rolling](<https://professoroops.com/_assets/entity_hDpMphTbanLiY715dcpt.webp>)

**In the game.** A football rolled at a full mug: the mug goes over and the drink spills the way the ball was rolling. The ring is where the mug stood.

![A toy car beyond a line of ketchup, with red tread prints fading along its track](<https://professoroops.com/_assets/entity_JpcAL4RHmQKietsZ9EXU.webp>)

**In the game.** A toy car driven through a line of ketchup leaves red tread prints that fade along its track.

## Nothing stacks and everything falls in slow motion, so the page stays steady under a child's hands

A tablet has to run all of this at 60 steps a second next to water, paint, fire and air. Each shortcut below keeps what a child sees and drops what they wouldn't.

**In real life.** Solid things turn about any axis, lean on each other and stack

**In the game.** A 2.5D capsule with a height. It spins only about the vertical, and a standing thing rocks about one edge with one angle

**Why that's enough.** Fast and steady with a child's hands all over it. Nothing stacks, and that's the price

**In real life.** Contacts are solved together, many times over

**In the game.** One impulse per pair per step, overlap pushed apart in mass share

**Why that's enough.** Plenty for the handful of things on a page, with no jitter to manage. Piles and chains of contact are lost

**In real life.** g = 9.81 m/s²

**In the game.** One gravity for everything, much weaker than real g at the page's scale

**Why that's enough.** A satisfying arc at this page size. Flight is in slow motion, about 8 times, and the same for all, so things dropped together land together

**In real life.** A football is 22 cm across

**In the game.** Shrunk to fit the page, a football to about 2 cm across. Masses are the real ones

**Why that's enough.** Toys must fit a page and be seen. Anything that depends on size and mass together, such as wind on a ball, isn't real

**In real life.** Friction depends on both surfaces

**In the game.** One grip per kind of thing; a few friction laws side by side

**Why that's enough.** Readable and tunable. Paint under a sliding lid doesn't change its grip; only balls roll further on soap

**In real life.** Things float on water

**In the game.** No buoyancy for solid things. Paint and water slow them by drag and stickiness

**Why that's enough.** The page is a height field, not a 3D fluid. Oil floating on water is handled as a layer, in [Runny, sticky and oily](<https://professoroops.com/en/inside/liquids/>)

**In real life.** A toy car's tyres grip and skid

**In the game.** Steered towards the finger; the monster truck drives at a constant speed that nothing slows

**Why that's enough.** A child steers, and the truck is a spectacle. No drifting, and the truck can't get stuck

**In real life.** A palm has five fingers and gaps

**In the game.** A lumpy disc with the painted skin's area; strings are a segment with a volume and a snap threshold

**Why that's enough.** One radius drives every channel and matches what you see. A palm print is a blob, and strings don't sag or bead
