Virtual Dirt

Changelog

What changed in the browser game, newest first.

Get daily updates by email

One short digest per day, only on days the game actually changes. Sign in to subscribe.

July 29, 2026

11 updates
  • Identity carry the masked-email hint helper inside the endpoint so the site core stays untouched 82c502f
  • Identity entry screen collects a pseudonymous username + rider number on launch, pre-filled from localStorage or a server suggestion, anonymous play always one click away 251a996
  • Identity claim-to-account via the core auth modal loaded in-page (jQuery + semantic + rendered modals snapshot), round-tripping through ?claim=1 after login/signup since auth.js always redirects
  • Identity HUD shows the rider name, number and claimed check; telemetry results rows now carry player name/number
  • Identity ship play/dev/identity.php (suggest/register/status/claim against game_players + users.username, guarded bootstrap, masked-email hint for names claimed by another account)
  • Fix telemetry and dev-request POSTs use relative dev/ paths so they resolve under /play/ on prod instead of 404ing
  • Ops remember that virtualdirt workers live in herdr workspace w14 c5e353a
  • Leaderboards document our race data format, proposed MotoGamers model mapping, submission pathway and cheat-resistance plan in docs/leaderboard-integration.md 38d3e38
  • Telemetry post every completed lap as a MotoGamers-schema session row to /dev/lb.php, appended to var/lapresults.jsonl
  • Ghosts show the best-lap path ribbon by default so riders can see the line to chase (G still toggles it) 3639a5d
  • Devreq resolve the queue dir relative to the vhost root so the prompt inbox works on the production server, not only this machine 980dda9

July 28, 2026

2 updates
  • Audio recut the full-throttle loop from the clean 20.9-21.7s stretch of the source recording so the kid's voice and other bikes revving are gone (old cut came from 20.2-24.2s which included pit chatter) 6485fbf
  • Track track 4 berm ends run much wider - crest to 6m, outer slope reaches r~63.5 mid-corner flaring to ~70 at the tangents, long tapering run-out instead of an abrupt end wall ac902be

July 27, 2026

34 updates
  • Audio trim engine loops to matching zero crossings so the wrap no longer clicks (seamed sound) e1f14ba
  • Audio virtual 5-speed drivetrain - rpm sweeps with road speed in gear, snaps up with throttle, engine braking drags it down, airborn revs flare, clutch-dump at crawl, shift dips, tiny pitch wander
  • Track widen track 4 berms into one banked bowl r 43-59 so the face catches tight apex lines and the wide line alike (was a narrow band that hooked away from the rider) 160dcc9
  • Timing ordered sector gates replace the single far checkpoint so line-cutting laps do not rank (worker crashes) 45a51f2
  • Timing HUD shows next gate name and CUT reason when a lap is invalidated
  • UX G toggles a visible best-lap ghost path line (worker crashes)
  • Fix turn gates sit on the racing line at the apexes, not at corner centers (center gates were unreachable, no lap would ever validate)
  • Track move track 4 180 berms out onto the real U-turn line (band r 44-60, crest r~54, lanes run z=+-55 so riders arc at r 50-58; the old 40-55 band sat on the infield) 2afb724
  • Track trackness dirt coloring, tree keep-out and grove walls follow the new berm radii
  • Docs berm geometry rules in AGENTS.md (mirror apex, band straddles the line, ends die at tangents, verify grid + FPV)
  • Track move corner flag posts from the berm toe (r 38.5) to the flat bowl floor (r 34) 5336ab3
  • Devreq stamp queue lines with the hashed bundle name so stale-build reports are obvious
  • Perf park loop at 4 Hz with no physics/render when tab hidden (was 60 Hz busy timer) 20b3b2c
  • Perf half-rate render when window unfocused, physics stays 60 Hz
  • Perf suspend AudioContext on hide, resume on visible
  • Perf pixel ratio capped at 1.5 (?dpr= overrides) and ?lowspec=1 kills AA/shadows for iGPU
  • Perf HUD string rebuild throttled to 10 Hz
  • Track start 180 berms 13 deg into the corner so the entry wedge stays flat (prompt to edit track) 9729bab
  • Fix prompt-to-edit box accepts spaces (only arrows preventDefault) d58ef5d
  • Track merge berm tangent fix, corner scenery, audit tooling from designer f3e3cc1
  • Track berms now die at the corner tangents instead of running 20+ m up both straights (aFade spans half the arc, zero by the entry/exit line) fca281f
  • Track berm crest faces the racing line (face/lip on the inside of the band, fall-off outside), corner discs raised and widened so the bowl reads as one surface
  • Track infield and off-circuit terrain colored grass-green via trackness so the circuit ribbon reads from the saddle (track 1)
  • Track inner edge posts around both track 1 corners and white marker posts inside the track 4 bowls
  • Track hay bales moved from mid-lane on the straights to the corner shoulders as a bale wall outside the berm lip (track 1)
  • Track border trees pushed off the corner discs and fence lines extended so no trunks stand on the berms (track 4)
  • Track audit tooling - fpv helmet-cam screenshot rig, autopilot lap runner, terrain probe/bmp maps (tools/)
  • UX rebrand Y-box as prompt to edit track 2aacf18
  • Fix scrub float dust from dev-request JSON via toFixed c73eee2
  • Fix round snapshot numbers in dev-request payload 6829cf5
  • Fix hard-clear riding keys while Y-box is open 70e549c
  • Devreq Y-key in-game request box posts context to queue 3769a8f
  • Devreq per-track feature registry and __where() locator
  • Integrations php queue endpoint plus vite /dev proxy

July 24, 2026

1 update
  • v98 rider modeling booth + clean MX look - extract rider construction from main.js into src/rider.js (buildRider(THREE) -> { group, parts }); same group/parts structure and transforms the game and crash anims own - booth.html: studio page (pedestal, grid floor, 3-point lighting, OrbitControls, 7 preset views + ride/stand pose toggle, window.__booth hook) - look: back to clean pre-v96 simplicity on v96 proportions - no shoulder-pad cap, no back plate, no crown stripe; bold two-tone blue/white kit, white MX lid (shell, chin bar, blue peak, goggle strap + lens), boots with shin plates, gloves, bent elbows and knees bc74869

July 23, 2026

14 updates
  • v97 gentler landing slams + shock pre-load pump - compression damping only firms past a slam-speed gate, so ruts stay plush while true hard landings quit bouncing back out - hold S to squat into the pegs, tap W to spend a small loft (never launches off flat ground); bleeds unused over ~1.5 s c17ae82
  • v96 proper MX rider - torso tops out at shoulder-pad jersey with number plate, MX helmet as own posable group (shell, chin bar, peak, goggle band, two-tone stripe), head above-forward of shoulders, no more scuba tank ef25852
  • v95 crash system - rider ejects as free body, bike tumbles and spills, scramble/lift/remount recovery + track 4 Washougal, engine/crowd audio (N, default muted), dev-request hook notes 6d89646
  • v94 helmet cam eyes the landing - airborne, the helmet cam leans forward and the gaze drops toward the landing spot, ramping with smoothed airtime (whoop skips barely register) - AGENTS.md: bank realistic gear, engine sound, stadium crowd audio 994ce0a
  • v93 arena floor fix, menu key, helmet cam - fix: riding off the stadium slab dropped you onto an invisible net at y=-2.4 under the floor; stadium tracks now get a flat arena concourse at slab height (physics + visible floor) so you ride out and back - stadium kill bounds now follow the bowl ring (r>60) instead of a loose square: no more riding into the stands - M or Escape returns to the track menu - helmet cam: C cycles chase/side/top/helmet - rigid at the rider's head, rolls with the bike, wider 82 FOV, rider mesh hidden while active; HUD shows cam name 3dcd60b
  • v92 track 3 Dallas SX '26, poster menu, ghost rider, body/steer split + fixes - track 3: Dallas SX '26 - 4-lane serpentine (whoops/triples/doubles/tabletop), red Texas clay, night sky, east spawn facing -x, keyed 1/2/3 - poster-card track menu at /play/ (SVG art, hover page-tint, click or 1/2/3); ?track=N deep-links - ghost rider: lap line + far checkpoint, records best lap and replays it as a translucent cyan bike, HUD lap/best/GHOST - body L/R split: A/D = steer only, arrows = rider body weight; rider mesh offsets - arrows now also steer at 85% authority (natural turn keys with body english) - fix: initial spawn rotation missing (Dallas bike faced +x until first respawn) - fix: Dallas berm horseshoes faced the infield apex, flipped to the outside of each u-turn to match the bale arcs - AGENTS.md: queue zambianoutdoors.com bale/banner sponsorship 4c5a7d1
  • v91 sculpted full-width SX obstacles - ramp-profile jumps (takeoff/deck/landing), full-width whoops, dirt runs out under the bale lines, taller wider berms 2c62743
  • v90 SX stadium polish - tamer floodlights, much wider lanes/jumps/berms, hay bales properly lining both sides of every lane and around berms (solid, sponsor logos) 51487e7
  • v88 track selector (?track=1/2, keys 1/2) + track 2: indoor supercross at sundown - groomed rhythm double + triple, tabletop, 11-whoop section, smooth banked 180 berms, dusk sky dome, floodlights, sponsor banners, warm haze + long shadows 43a7e6b
  • v87 real baobabs - massive pale smooth trunk, gnarled root-like branch crown, sparse tip leaf tufts (per reference photo), still solid colliders 3a80174
  • v86 Zambian savanna - acacia/mopane/scrub/baobab flora (merged-geometry instancing), 16 big SOLID baobabs (cylinder colliders), giraffes/zebra herd/lying lion, 4 warthog runners crossing the track as kinematic obstacles, few sponsor bales (virtualdirt + floogy logos) with colliders 75a920d
  • v82 roost/dust particle system (single Points draw, 700-particle pool, emission = throttle x load + lateral slip at rear patch) dec0215
  • v80 cornering that actually arcs without spinning - yaw excluded from tire slip (normal-component, orientation-proof), lateral+camber at COM height (no outlean fight), gravity topple feedforward (no lean droop), solo-contact tire forces to pure COM (tuck spin fix), yaw torque capped, caster gated on sideslip, low-speed yaw clamp, power back (driveForce 1400, drag caps top speed) 88b1687
  • v61 restore tuck/tight-turn bite mid between dead v60 and pivoty peak 87ebee5

July 22, 2026

4 updates
  • v60 half top speed, milder lean/tuck (stops laying flat + less corner pivot), upright holds mild lean but still crashable past ~50 deg 799689e
  • v56 air steer inversion as toggle (default off = air matches ground, T key / ?airinvert=1) 468f1d8
  • v55 outdoor national track (260x170, hillside, huge doubles, long steep berms), scenery, trimesh terrain physics (heightfield raycast has hole lattice at small cells), turning dialed back mid 7223043
  • v48 arenacross loop, rate-PD air control, >0.5m steer inversion, grippy tires 43f5fe5