Source
93,533 linesAcross 50 TypeScript modules; 96,113 including the UI stylesheet. The largest single file is src/fx/Effects.ts at 7,609 lines.
Comment density
49.0%45,854 of the 93,533 source lines are comment. They are load-bearing: several document guards whose removal has already reintroduced shipped rendering bugs.
Art assets
0Zero binary files under src/. dist/assets contains one JS bundle and one stylesheet, and nothing else.
Harnesses
62 files · 22,385 lines36 named benches — fps, drift, heat, weapon, invert, route, luma-histogram, touch-feel — plus 18 diagnostic probes.
Bundle
1,798,845 BPlus 28,788 bytes of CSS. Built with Vite against an es2022 target. That is the whole game.
Physics substep
1/367 sDistance-capped at h = min(1/120, 0.45/speed), so a 60 Hz frame at 165 m/s runs roughly six substeps. Capping on frequency instead tunnels a 1.6 m barrier at race pace.
Frame budget
≤220 draws · ≤2.2M trisScale comes from instancing rather than geometry. One 18 m truss bay instanced 4,800 times is a megastructure that costs a single draw call.
Exposure
0.85, fixedHard-set in src/render/Renderer.ts. Auto-exposure is banned outright — an adapting exposure would erase the terminator blowout, which is the best frame in the game.
Checkpoints
40 per lapRaised from 32. At 165 m/s a 32-point lap advances far enough in one dropped frame to skip a checkpoint, which reads to the player as a lap that did not count.
Roll channel
+360° per lapA monotonic accumulator kept separate from bank, all of it spent in one 246 m section. Peak chassis roll rate is 338 °/s; the camera follows at 0.62× with a 0.18 s damped lag.