POWDERLINE
GUIDE · RACES

1v1 races

How a peer-to-peer race is put together: the link, the countdown, the finish gate, and what happens when you crash.

Snowboarder riding down a dusk slope toward distant peaks
Both riders generate the same mountain from the same numbers; only positions cross the wire, so the race never waits on a server.

One link, no server

Start a race and the game gives you an invite link. Send it however you like; your friend opens it and drops into your lobby. From that moment the two browsers talk directly to each other over WebRTC — there is no game server relaying the race. A public signalling broker (PeerJS) is used once, to introduce the two peers; after the handshake it sees none of the traffic.

Two channels carry the race. A reliable, ordered one handles the lobby handshake, the clock sync, the start and the finish. An unreliable one carries the opponent's position about fifteen times a second — a lost snapshot is stale the moment the next one lands, so retransmitting it would only add delay. That is why a bad connection makes the other rider jittery rather than making the race lag.

The same mountain, twice

Both browsers run a complete simulation of their own rider. Nothing about the terrain is sent, because nothing needs to be: the mountain is deterministic, so two machines asked for the same coordinates build the identical slope, ice patch for ice patch and kicker for kicker. The only shared state in the whole race is the two riders.

Each rider is authoritative over themselves. What you see of your opponent is where they said they were, smoothed over the gaps between snapshots and carried forward by the time those snapshots spent on the way, so they are drawn where they are now rather than a few metres back up the hill. What they see of you is the same.

A new course every race

The mountain never ends, so a race does not have to start at the top. When the host presses start, their game picks a fresh stretch of hill anywhere in the first 30 km of the mountain and sends that one number to the other rider with the countdown. Both games then build that same stretch, so the course is new every race and identical for the two of you, down to the last tree and ice patch.

Wherever the course lies, it rides like a run from the top: the snow starts easy and gets rougher and faster the further down the course you go, never because of where on the mountain it was drawn. The start line and the finish are kept clear of trees, rocks, kickers and other riders, and the finish gate stands on the course's own snow. A rematch draws a new course again.

Contact

The two riders collide. Each browser checks its own rider against the opponent exactly as it draws them, and moves only its own rider. Whichever side sees the touch first tells the other, so both of you feel the same bump even when one view missed it by a hair.

Lean into someone and you both get shoved apart and lose a little speed. Cut hard across their line, or ram them from behind much faster, and you both go down, so ramming costs the rammer as much as the victim. Jump high enough and you fly clean over them.

A rider who has just dropped back in after a wipeout cannot be hit for a moment. Once one of you has crossed the finish, the other can no longer be knocked about.

The start

GO is announced as a relative delay — "in this many seconds" — rather than a timestamp, because the two pages' clocks are not the same clock. The guest corrects for the message's travel time using half the best round trip it has measured, which leaves a residual of a few milliseconds on any reasonable connection. The countdown is 3.5 seconds, long enough to absorb the latency either way.

The finish

The finish is a physical gate across the corridor 1500 metres down the course. Progress is measured in metres down the mountain from the course's start line, which is what makes the race robust: a crash, a respawn or the world's own coordinate housekeeping never moves the finish and never resets your distance. Wipe out and you lie in the snow for most of a second, then drop back in where you fell — behind, but still racing.

Each rider reports their own elapsed time on crossing the gate; the smaller time wins. A rematch is one tap, on a new course, and again the same one for both of you.

There is also a trick battle, where the clock is the gate instead of a line: ride for the time and the higher score wins. It gets a course of its own too; the race is for points.

Practicalities

Your first run starts in seconds

Free in your browser on a laptop, a phone or a gamepad. No download, no sign-up.

PLAY FREE