You can wade, and then swim. Deep enough and you will start stroking; the animals do the same, and some of them dive.
They are called bolas — eighty-odd of them in seventeen loose herds, none bigger than a football. They graze, sleep, play, swim, make friends and get bored, and none of it is waiting for you to arrive. Walk up slowly and they will notice you. Run at them and they will not thank you for it.
Steering is the same WASD, but it rolls — so it carries momentum, leans into corners and takes a moment to stop. The small ones are quick and skittish; the bigger ones take a hill like a boulder.
About a quarter of them wear a small red cape. Those are the fliers. Ride one, get it off the ground with Space, and then keep Space held — it will climb and stay up, and it is markedly faster than you are on your own. Let go and it comes down.
Flight holds your altitude. Terrain and water stop your descent; use Space to climb over a ridge. Release the keys to stay still for a close look.
Five snowy summits, scattered to the far corners of the map — one of them a true mountain — and over each floats a bola unlike the others: dark-coated, glowing along its markings in its hill’s own colour. Green, gold, ice blue, violet, rose. Every herd wears a faint tint of its nearest summit’s colour, so you can read who belongs where in the dark. Walk up and the whisperer will notice you.
There are no textures, no meshes and no photographs in this project. The terrain is a noise field. The grass is instanced geometry with a wind model. The coats are shell fur generated on the GPU. Every sound is synthesised from nothing in the Web Audio API — the water, the birds, the insects and the animals' own voices. The whole site is about four megabytes, and most of that is the film on this page.
WebGL2 through three.js. Half a million grass blades on a scrolling clipmap that follows you. A 4096-square shallow-water simulation for the ripples, solved on the GPU sixty times a second, whose window slides with you and scrolls its own contents so nothing is lost as you move. Real solar geometry for the sun and moon, so the light at a given hour is the light that hour actually has. Depth of field in real photographic units — the aperture in the settings panel is an f-number.
Eighty-two of them: seventeen loose herds and five whisperers, one over each snowy summit. About a quarter wear a cape and can fly; about twenty stay up after dark. They have moods that drift over minutes, individual temperaments, particular friends, and enough of an opinion about each other to start a fight. Not one of them is scripted. The behaviour is a ladder of small rules, and what you see is what those rules do when left alone.
There used to be giants here, and a red titan that hunted them. They were cut on purpose: this is a meadow at grass height, and a boulder-sized animal in it read as set dressing from another game. What is left is a herd you look DOWN at, moving through blades taller than most of it.
In conversation. Every feature started as a sentence — “the water should ripple everywhere”, “the giants need to be afraid of something” — and became code, then a measurement, then usually a correction. A great deal of this project is the corrections: a ripple solver reading the riverbed from the wrong place, a hunting animal that spawned perfectly and never hunted because it was frozen 172 metres from the player, an orb that quietly slid off a hilltop three separate times because the hill kept moving underneath it.
Almost none of those were found by looking at them. They were found by building something that could measure the thing and then be surprised by the answer, which turned out to be most of the work.