Repository navigation
v0.4.0
A fairground on the east bank with five rides on it, a bridge over the river with a name on it, street signs where the four roads meet, and a lantern that is carried in a hand. Twenty-nine commits since v0.3.0, nearly all of them from playing it on a phone and reporting what looked wrong.
A fairground
Forty by a hundred and seventy metres of fenced sand across the river, levelled by the height field the way the football pitch is — so the terrain, the collision, the grass, the trees, the boulders and the animals all agree there is a fairground here without any of them being told one exists. Nothing grows or lies about on it: inside the fence it is trodden sand.
Five rides. A carousel whose horses stand along the circle, nose to tail, and are solid enough to lean on. Two moving walkways, thirty metres each, running opposite ways, with treads that visibly move and arrows that point the way they actually go. A trampoline twice the size of the playground's. A big wheel thirty metres to the top, turning in the plane along the river, its gondolas open on one side with a bench inside. And a wooden coaster running the length of the ground, twenty metres up at its lift hill.
Everything a child can stand on that moves carries them, and every frame is solid — the legs, the piles, the column and the sides of the belts, all of which a child walked straight through at first.
A coaster that runs on its own weight
The speed is not read off the height any more; it is integrated. Gravity along the track's own slope, a little drag, the chain holding a steady pace up the lift, and brakes on the run home. Real gravity, too: scaled to a third it ambled down a twenty-metre drop, which is the one moment the ride exists for. Eighteen metres a second at the bottom of the first drop, three over the crests, a lap in under a minute.
That is also what made the profile a proper ride. A first drop nearly to the sand, a big camelback, then hills that get smaller — because a coaster cannot climb higher than it has fallen from, and a profile that pretends otherwise stalls halfway up and stands there for ever. The bends are banked, worked out from which way the track is swinging rather than written down beside it.
Five single cars, each closed at the ends and down the far side with a doorway on the platform side, a seat facing the way it is going, and a yellow shoulder harness hinged behind the head that drops as the train leaves. It stops at the platform for five seconds every lap, because a child cannot step into a moving box.
Rides are paid for, and nothing is ever taken
A kiosk at the gate sells rides at ten coins each, the same for all of them; the trampoline and the walkways are free, because they are the two a child uses while working out what the place is.
Nothing spends a child's coins without asking. A question comes up with a red cross and a green tick under it, which need no reading: the kiosk asks before it sells, and every ride asks before it takes a ticket. Walking away from the question is an answer. Tickets are remembered between days.
A bridge, and a way across on wheels
A bicycle ridden into the river puts its rider down on the bank, which is right — you do not swim a motorcycle across — and that left everything east of the water closed to anything bought in the shop. There is one crossing now, at the camp's own latitude: the river is twenty-five metres from the door, so you walk out and onto it.
The deck a foot meets is one swept surface rather than a row of planks, because twenty-eight tilted colliders cannot be made flush and what they build is a staircase. It meets the bank exactly at both ends, arches three metres over the water, carries solid handrails and an enamel plate with its name.
Street signs, and a square
The four roads out of the camp were anonymous worn earth. They have names now, on a post in the Paris manner — Boulevard Berzeg to the playground, Avenue Kabard to the café, Impasse de Kassag to the pool, Rue des Parents east over the bridge — under a green enamel plaque naming the square itself. Each plate is turned by asking where its road actually goes, so a sign cannot point at a place its road no longer leads to.
A lantern in a hand
It was a glowing ball parented to the character rather than to the body, so it never turned with the child and never went down with them: swimming, the body sank to the chin and the light stayed at standing height beside the ear. It is carried in a hand now, and it is built like a storm lantern — a half-clear glass barrel between a lid and a base, three uprights, a bail with a ring, and a flame inside that wavers with the light.
Sound
The river had a bright hiss and burbles on it, which is what a tap sounds like. It has a body now: a low rush, a middle where most of the water is, a bright sheet on top, and bubbles with a rising note, which is the single most recognisable thing about running water. The wood got its grain back — a few hundred separate leaf ticks rather than the average of a wood, which sounds like surf. Both loops run longer and are joined end to beginning, so the click that came round every four seconds is gone.
Things that were wrong
- A child could fall out of the world: the ground was asked whether it existed rather than whether it could hold anybody.
- The forest was asked where its trees were nine times per frame; caching that took the phone from four frames a second to fifty.
- A machine ridden into a wood could not be backed out of it: steering had no bite below walking pace, and reverse spent the stick push twice.
- The open bag pushed the purse, the gauges and half the buttons off the bottom of the screen.
- Animals walked through the signpost, and rocks sat in the middle of the roads.
- Nothing lives on the fairground, the playground, the pitch or in the pool now except a cat or a dog.
Talking, and what the game does with data
Talking can be switched off in the menu, and the switch is obeyed by the microphone rather than by the interface: with it off the capture stream cannot start at all. docs/PRIVACY.md says what the game collects, which is nothing — no account, no advertising, no analytics, no server — where a child's valley is stored, and why playing together reaches only devices on the same home Wi-Fi.
The repository
Badges, a CITATION.cff, SECURITY.md, Dependabot for the actions CI is pinned to, and a release workflow that runs the whole check suite on the tag and refuses a tag whose version does not match the version inside the build.