Ponds, a community pool, and better splashes

What we wanted
We wanted water the city could break: ponds in some parks, ripples that don’t repeat, sun glints, splashes, a spout when a blast hits the water, and water that drains away when a crater opens under or beside it. We built it in three steps: ponds first, then ponds that react to blasts, then spray, which for now means fire hydrants. Water towers and dams wait for later.
Ponds that follow the ground
The engine already had water for the dam scene, on a grid that copied the height of the ground once, when the scene was built. A crater dug beside the reservoir left the water standing as a wall at the crater’s edge. Holding the surface level would have created water out of nothing, so each cell now keeps its depth when the ground under it changes. The water drops with the ground and runs into the crater, and none is made or lost.
A park pond is a bowl up to 19 m from its middle, with muddy banks. Its surface is drawn from four scales of baked noise, with features from 0.09 to 1.5 m, in two layers that drift across each other so the ripples keep changing. A blast in a pond pushes the water out of a cavity into a ring that runs across the pond and back off its banks. In a test, the water 6 m out rose 17 cm and the total volume held.
The community pool
Back-yard pools would put many small bodies of water in a map. We chose one building type instead, a community pool, so a map has at most two bodies of water to load.
The pool is a 25-yard tank of six lanes, 22.8 by 12.6 m, 1.1 m deep at the shallow end and 2.8 m at the deep end. It sits in a pit the city carves, with a deck, a bathhouse and a fence. A real tank wall is 0.2 m thick, thinner than one cell of the water grid, so the pit in the ground holds the water. The pool has its own grid, and a crater beside it drains it.
LOOP 0:11Splashes that read as paper
The first splashes looked more like steam and chunks of paper than a column of water. The particle code showed why. The drops were flat plates 12 to 35 cm across that tumbled as they flew and faded out over the last half of their lives, and the mist was soft round puffs that stopped in the air and hung there.
Spray is now a streak stretched along its flight, 2 to 12 times its width, with no tumbling. It is lit once and is brightest with the sun behind it, and it stays until it lands. A second kind, whitewater, is a dense puff stretched along its flight, with a hard fibrous edge that wears away as it ages. A blast in a pond throws a dome and a column of streaks. The dome and the column each carry a body of 8 to 36 whitewater puffs, which reach about 0.8 of the column’s height and fall back.
The first streaks, a few centimeters wide, read as specks from across a park, and slow ones with square ends looked like scraps of paper again. The coarse streaks are now 12 to 35 cm wide and drawn as soft ellipses.
A broken hydrant jets water about 5 m up, at full strength for 20 seconds, tapering until it stops at 32 seconds. The water wets the ground out to 7 m, which darkens, turns glossy and dries by half in about a minute.
Cars and ships
Cars skated across the first ponds, a ship flying in made no splash, and the ponds were too shallow. The pond’s middle went from 1.4 m to 2.4 m below the ground. Anything entering the water faster than 2.5 m/s now splashes and sends a ring across the pond, and a hollow body such as a car takes on water over 4 seconds and sinks.
Cars still rode the surface before sinking. A hollow body’s buoyancy started from the whole volume of its hull, 7.5 times a sedan’s weight, so a thrown car floated with its underside clear of the water. It now starts at no more than 1.6 times its weight, and a body at the surface is dragged toward the water’s current from the first touch. In a test, a car thrown in at 18 m/s rode 0.59 m over the surface on average through its second to fourth seconds. It now sits 0.74 m under it.
How this post was made
- Drafted by
- A Claude Code session in the trilithon.games repository, October 10, 2026, working from the game's changelog, docs and tracker.
- What it did
- Drafted this post from the changelog, the water research notes and the dev brief, and checked each number against them.
- Reviewed by
- Alex van Rossum,
On the roadmap: City depth
Linear MIP2-569, MIP2-570, MIP2-571, MIP2-603, MIP2-273, MIP2-662