A 1977 desert rally-raid through Morocco's High Atlas mountains. You ride shotgun as the navigator — the AI pilot (Jean-Michel "Michou") drives. Your job: place waypoints on the paper map, read the roadbook, manage the instruments, and keep the crew alive across five days and 218 km of sand, rock, fesh-fesh, and mountain passes.
Built as a single-page browser game. No server, no install. Three.js + Rapier3D physics + Web Audio waveguide engine synthesis. Real SRTM elevation data from the Atlas mountains.
5-day campaign persisted in localStorage. Day 5 → Arrivée Finale + general classification + Nouveau Rallye.
52 ES modules across 18 directories, zero framework. Each system is isolated: physics has no gameplay coupling, rendering is testable in Node, AI is seeded and reproducible.
setInterval main loop (hidden-tab safe), rAF for rendering when visiblesrc/config.jssrc/physics/surfaceAt() returns {grip, roll, label}setInterval + rAF)Gate probes: static sag 32.9%, corner roll 24°, jump airtime 0.18s, top speed ~151 km/h
registerScreen() / gotoScreen() with CSS fade transitionswadiDepthAt() with closest-point-on-segment, quadratic blend, drowning ramp?tod=0..1, 0=dawn, 0.5=noon, 1=sunset)?veh= URL param_rightCar() uprights in placelivery.js palette-driven vertex-color bake pipeline.vehicle.json canonical specs with real gravity (9.81)?crew=vq)max(3.5s, 1.5s + 65ms/char)<b> tagsheight.js reads src/config.js)clearRally())nearestFeature read f.x/f.z (always NaN — hazards NEVER fired since P3) → featurePos() helpers--regen green on palette atlas-v2.vehicle.json stub export, registerSplitVehicle() round-trip