Why drift, specifically
The two skills are deliberately different axes. Wave-pumping is vertical and about timing — catch the back of a swell at the right instant. Drift is lateral and about space — commit to a line through a corner. One owns the water, the other owns the land, and because they never compete for the same input at the same moment, learning one doesn't crowd out the other.
Standing on thirty years of someone else's work
Mario Kart has been refining this exact mechanic since 1992, and the history is a free design doc:
- 1992 — drift exists only to keep you from spinning out in a corner. No reward.
- 1996 — the mini-turbo: hold a drift, get a little boost on release.
- 2008 — the Wii switches from stick-wiggling to time-based charging. This is the big one: it killed "snaking" (spamming drifts on straights) and lowered the skill floor without lowering the ceiling.
- 2014 → 2017 — two tiers (blue, then orange), and Deluxe adds a third (purple ultra).
We took the modern, time-based model wholesale: hold a trick button while steering into a corner to charge, release to fire a tiered boost.
drift-tiers.ts; the deck scrolls at the boost
your charge earns.
The tiers, and the floor that stops the cheese
Hold longer, win bigger: blue at 0.6 s (a 1.45× punch), orange at 1.4 s (1.75×), purple at 2.4 s (1.95× and a duration long enough to carry clean into the next corner). The gap from orange to purple is intentionally wide, so a casual hold lands on orange and only a committed, long-arc drift earns the ultra.
But the most important number is the floor. Release before 0.6 s and you get nothing — try it in the demo. That floor, plus a quarter-second cooldown before you can drift again, is the anti-snake rule: you can't tap-spam mini-turbos down a straightaway. Charging two boosts requires two real corners. It's the Wii's lesson, baked in from day one.
The bugs Nintendo already fixed (so we fixed them too)
A naïve drift implementation reveals its problems fast. Our first pass let a held drift tighten into a death-spiral 180. The fix is the wide drift model: while drifting, counter-steering opens the arc rather than cranking it tighter, so the slide feels like a committed line you can shape, not a trap. The rider also physically banks into the slide — because the lean sells the drift to your eye far more than the underlying physics do — and the rear sparks shift color through the tiers with a matching HUD badge, because a charge you can't read is a guess, not a skill. (Those tier colours later became the first entry in the game's locked signal-colour vocabulary — the blue → orange → violet charge ladder of Chapter 08.)
It doesn't rebuild the handling — it bends it
Drift isn't a separate movement system. It reaches into the same hover ground-physics from Chapter 02 and bends two knobs: lateral drag drops to about a third (so the tail slides), and the bike's turning is replaced by a drift-direction bias with reduced player authority (so you're committed to the slide's direction). It's also strictly grounded-only — the moment you're airborne it yields to the trick window, keeping wave mastery's territory clear. And like the rest of the sim, it reads only ECS state, so it stays deterministic for multiplayer.
Read the code
The charge curve and boost payloads are a pure, test-pinned leaf:
src/game/systems/drift-tiers.ts (imported directly by the demo). The
state machine lives in
drift.ts, the physics modulation in
hover.ts, and the rationale in
docs/adr/0005-drift-mechanic.md + docs/drift-deep-dive.md.