01Design & Craft / Field Notes

Cairn: a quiet little game I made for fun

A browser stone-stacking toy. No rules, no score, just real physics and the rhythm of finding the balance point.

Published
27 April 2026
Category
Design & Craft
Reading time
4 min
Tags
Game design, Three.js, Web games, Code
A cairn of pale stones balanced on a soft white ground
Cairn. Build it, balance it, watch it fall.

I made a game. It's called Cairn, it's a chill stone-stacking toy you play in the browser, and you can try it now.

The spark

It started by watching Jungkook from BTS build a cairn for Jimin on the Korean travel show Are You Sure?!. My wife is the BTS fan in the house, and watching with her is one of those companionable couple things. Jimin had a stomach ache and Jungkook wanted to cheer him up, so he sat outside their cabin patiently finding stones and balancing them into a tower. The camera just stayed with him.

It reminded me of doing the same on Peak District walks years ago, and at Ton Chong Fa waterfall in Phang Nga, Thailand on holiday a while back. The rhythm of picking up a stone, feeling its weight, finding the spot where it wants to sit.

A cairn of pebbles stacked on a rock at Ton Chong Fa waterfall, Thailand
My cairn at Ton Chong Fa waterfall, Khuekkhak, Phang Nga, Thailand.

I wanted a digital version. Not a game with rules, just a thing to do when you need a moment.

What I was after

Three things, in order of importance:

  1. Simple. No score, no timer, no level progression. Pick a stone, place it, watch it settle.
  2. Chill. Quiet ambient sound, soft white scene, nothing competing for your attention.
  3. Real physics. The whole point of cairn building is the suspense of whether it'll hold. Scripted balance points would have killed that. The stones need to actually topple sometimes.

The build

Three.js for rendering, cannon-es for physics, all running in the browser. No server, no account, no analytics on the page itself.

The hard parts were the things that look easy.

Stones. Each one is a procedurally generated icosahedron with two layers of noise displacement (a smooth water-tumbled silhouette plus a fine micro-pitting layer). On top of that, every stone picks one of five surface variants by seed: plain, speckled, banded, chipped, or cracked. All are vertex-coloured, with a unifying universal grain on every stone so they read as the same kind of object. Tuning the noise so they looked like beach pebbles instead of potatoes took a lot of iteration.

Ground. Tried a literal ground plane. Tried a faint disc. Both looked artificial. Settled on a small handful of sand grains scattered around the cairn with density falling off radially, plus a soft contact-shadow disc under the stones. Reads as ground without being one.

Sound. Looped wind ambient (procedural, bandpass-filtered brown noise modulated by two slow LFOs so it gusts rather than sits), plus stone-on-stone clacks sliced at random positions from a single CC0 recording. Atmosphere matters more than I expected. The trick was the per-stone collision throttle: a tumbling stone fires dozens of contact events a second, which without a rate-limit pile into a static-electricity buzz.

Camera. Auto-zooms out as the tower grows, so you always have headroom. Smooth lerp via a critically-damped curve, fast enough to feel responsive, slow enough not to be motion sick. Skipped on portrait, where pinch-zoom is the right control.

The hidden game is the collapse. The fall is the lesson.

The toppling

The collapse is the part I most want to be honest about. There's a meditation-app version of this where the cairn never falls. That would defeat the point. The fall is the lesson, and the surprise of whether you've stacked it well enough is what makes the next stone interesting. When the tower goes down, the game pauses with a quote on impermanence (Marcus Aurelius and the Dhammapada do most of the work; Douglas Adams shows up once in a while). Beginning again is a button click.

Three.js

3D rendering

cannon-es

physics

60fps

target on a phone

cairns saved to localStorage

A return to games

I used to make games. Macromedia Flash, late 90s and early 2000s. When the iOS App Store launched I designed iOS games in its first wave. Then product work pulled me away and games dropped out of my practice. Building Cairn was a return to a part of design I'd missed without quite noticing.

It isn't a serious thing. It's a thing for me to play, and for you to play if you want to. The most game-design decision I made is that there's nothing to win.

I want to make more of these. Small toys, no scope creep, no monetisation. Things you'd open for two minutes between meetings and feel a tiny bit better afterwards. Cairn is the first.

Play it

Cairn lives in the catalogue. Build a cairn, refresh the page, it's still there. Pinch to zoom on mobile. The share button captures the canvas.

If you make one you like, tag #cooperCairn and @0xCoops on X. I would genuinely love to see them.