The v3 PoC proved the visual thesis: photoreal splat capture streams + renders at 30 FPS on integrated GPU. That bar was always the falsifiable one. But the build felt like a tech demo, not a game. The v4 PRD calls this out in §2: a game is heard, seen, and felt — v3 shipped one of those three, v4 ships all three.
The trick that won me back the most ground wasn't any single channel in isolation. It was the pairings. Two beats that arrived together did more than four that arrived alone.
The clearest example: collision. Pre-v4 a hit was a thud + a haptic pulse. After v4 there are five things firing on a single impact event:
· the synth thud through the SFX bus (B1 audio graph), now coloured by the per-arena surface profile so ROOM hits duller and LUDLOW brighter (B3); · a whole-mix low-pass filter that drops the cutoff to 500–2000 Hz and recovers over a couple of seconds (B6 concussion LPF); · a screen-space backdrop-blur pulse on the same envelope (A6); · the existing haptic pattern through the gamepad + mobile vibrate (D6); · and a record on the replay-buffer event log (D8) so the future export can title the moment.
None of those are individually expensive. None of them are individually loud. But every input the player gives is met by three or four channels of output that all agree on what just happened. That's what the brain reads as "responsive."
The architectural beat that made the pairings cheap was the tiny impact-events bus (lib/impact-events.ts) — a four-line pub/sub that emits an event with the normalised force. Subscribers don't have to know about each other; the bus lets each channel route its own response. The blur overlay, the LPF, the replay-event recorder all subscribe independently. The pattern repeats anywhere we have one event with multiple downstream reactions.
The harder problem is judging when NOT to pair. Photo-mode has a shutter flash (visual) but no synthesised shutter sound — adding one made the moment feel busier without feeling more satisfying. Brake punch FOV (camera) is paired with a brake-heat particle (visual) but not with an audible brake-grind, because most cars stopping in most arenas don't make the kind of sound the brain expects from a "real" brake. The pairing rule is: add a channel when the absence of it would feel like a missing tooth, not just because the slot is open.
Section 2 of the PRD is short — three subsections, one paragraph each. But it changed how every other feature got shipped. When the slip-angle drift model landed (D3), the haptic pattern + drift toast + replay tagging arrived in the same commit. When the OOB reticle landed (C5), the compass needle + audio chip didn't arrive until they had something to say. The discipline is small. The output reads as if four people built it instead of one.