ALTITUDE — ANTI-GRAV RACING LEAGUE
A browser-native arcade racing sim for VIVERSE · Desktop + Mobile + WebXR (Meta Quest)
Thirty-two hand-tuned circuits across four career tiers — from a rookie bowl in
the Bavarian alps to storm-lashed legend-class ovals — raced from chase cam or a
full VR cockpit, running entirely in a browser tab from a single HTML file.
THE GAME
*32-circuit career across 10 living environments — alpine, desert, night city,
volcanic, arctic, coastal, storm — with tier-gated progression from rookie to
legend and a garage of 8 cars spanning a starter hatchback to an LMP prototype,
each with 5 upgrade paths and a cash/XP economy.
*Championship seasons: 5-6 round points title per tier against a fixed roster,
F1-style scoring (25-18-15…), live standings after every round, and a title
bonus up to 416,000 CR for the Legend crown.
Twelve rivals with personalities, not name tags: fixed liveries and
temperaments that feed the AI — aggression sets how late they yield in traffic
and how greedily they burn nitro, consistency makes some erratic lap-to-lap —
plus overtake trash-talk and a nemesis system that pays out when you get
revenge on whoever beat you last.
*Time-trial ghosts: your best lap on every circuit is recorded at 10Hz in any
mode and replays as a translucent rival; beat yourself, bank the record bonus.
*Racing AI with PD-controlled steering, racing-line offsets, rubber-band-free
tier difficulty, car-to-car collision, and an attract mode that auto-directs
its camera to the closest on-track battle.
*Everything you hear is synthesized live: engine pitch tracks the tach with
per-gear drops, wind and tyre squeal are slip-driven filtered noise, collisions
thud by impact speed, and the soundtrack is a 128 BPM synthwave sequencer —
kick, hats, octave-hopping bass, echoed arp — that ducks under the engine
mid-race. No audio files exist.
WHY IT FITS VIVERSE
*Zero-friction distribution: one file, one link. If it can open a webpage, it
can run the league — and with three.js inlined, it has zero external
dependencies. No CDN, no fonts required, no store, no install. It runs
offline, inside sandboxed iframes, and inside VIVERSE unchanged.
*WebXR-native cockpit build: local-floor reference space, trigger throttle and
brake on Quest controllers, dash readouts modeled in-world, and comfort-first
design — camera shake is disabled in the headset build by design.
*Phones are first-class: on-screen touch controls appear automatically, races
request fullscreen landscape, long-press and pinch-zoom are suppressed, and a
performance quality preset scales the renderer from phones to laptops to
standalone headsets.
*Progress persists anywhere it lands: a three-tier save shim (platform storage,
localStorage, in-memory) means career, cash, trophies, and ghosts survive
refresh on every host — including embedded ones.
TECH NOTES
*Single-file builds (desktop ~776 KB, VR ~792 KB; ~3,800 lines of game code
plus inlined three.js r128): every track, car, environment, palette, and sound
generated procedurally in code, including WebAudio-synthesized engines, impacts,
and soundtrack.
*Four input worlds, coexisting: keyboard, PlayStation controller (analog R2/L2
triggers scaled into the physics, stick deadzone, full D-pad + Cross menu
navigation with a focus ring), mobile touch overlay, and Meta Quest controllers
— inputs merge rather than exclude, so a friend can grab the pad mid-session.
*Closed-loop polar track generator (rewritten after straight-and-arc chaining
kinked 30 of 32 layouts), PD-damped AI steering, swept collision against walls,
obstacles, and rivals, and GPU resource disposal on every world teardown.
*Built-in capture: F9 taps the game's own canvas at 60fps plus the master audio
bus into a self-downloading .webm — raw frames, no overlays, zero gameplay
touched, and deliberately exempt from every other key handler so recording
never kicks you out of the demo reel.
Built solo by Darrell Kelly, Global Talent Acquisition Manager at HTC, using AI-assisted
development — proof of what one determined non-engineer can ship when the tools
meet the ambition.
ALTITUDE — ANTI-GRAV RACING LEAGUE
A browser-native arcade racing sim for VIVERSE · Desktop + Mobile + WebXR (Meta Quest)
Thirty-two hand-tuned circuits across four career tiers — from a rookie bowl in
the Bavarian alps to storm-lashed legend-class ovals — raced from chase cam or a
full VR cockpit, running entirely in a browser tab from a single HTML file.
THE GAME
*32-circuit career across 10 living environments — alpine, desert, night city,
volcanic, arctic, coastal, storm — with tier-gated progression from rookie to
legend and a garage of 8 cars spanning a starter hatchback to an LMP prototype,
each with 5 upgrade paths and a cash/XP economy.
*Championship seasons: 5-6 round points title per tier against a fixed roster,
F1-style scoring (25-18-15…), live standings after every round, and a title
bonus up to 416,000 CR for the Legend crown.
Twelve rivals with personalities, not name tags: fixed liveries and
temperaments that feed the AI — aggression sets how late they yield in traffic
and how greedily they burn nitro, consistency makes some erratic lap-to-lap —
plus overtake trash-talk and a nemesis system that pays out when you get
revenge on whoever beat you last.
*Time-trial ghosts: your best lap on every circuit is recorded at 10Hz in any
mode and replays as a translucent rival; beat yourself, bank the record bonus.
*Racing AI with PD-controlled steering, racing-line offsets, rubber-band-free
tier difficulty, car-to-car collision, and an attract mode that auto-directs
its camera to the closest on-track battle.
*Everything you hear is synthesized live: engine pitch tracks the tach with
per-gear drops, wind and tyre squeal are slip-driven filtered noise, collisions
thud by impact speed, and the soundtrack is a 128 BPM synthwave sequencer —
kick, hats, octave-hopping bass, echoed arp — that ducks under the engine
mid-race. No audio files exist.
WHY IT FITS VIVERSE
*Zero-friction distribution: one file, one link. If it can open a webpage, it
can run the league — and with three.js inlined, it has zero external
dependencies. No CDN, no fonts required, no store, no install. It runs
offline, inside sandboxed iframes, and inside VIVERSE unchanged.
*WebXR-native cockpit build: local-floor reference space, trigger throttle and
brake on Quest controllers, dash readouts modeled in-world, and comfort-first
design — camera shake is disabled in the headset build by design.
*Phones are first-class: on-screen touch controls appear automatically, races
request fullscreen landscape, long-press and pinch-zoom are suppressed, and a
performance quality preset scales the renderer from phones to laptops to
standalone headsets.
*Progress persists anywhere it lands: a three-tier save shim (platform storage,
localStorage, in-memory) means career, cash, trophies, and ghosts survive
refresh on every host — including embedded ones.
TECH NOTES
*Single-file builds (desktop ~776 KB, VR ~792 KB; ~3,800 lines of game code
plus inlined three.js r128): every track, car, environment, palette, and sound
generated procedurally in code, including WebAudio-synthesized engines, impacts,
and soundtrack.
*Four input worlds, coexisting: keyboard, PlayStation controller (analog R2/L2
triggers scaled into the physics, stick deadzone, full D-pad + Cross menu
navigation with a focus ring), mobile touch overlay, and Meta Quest controllers
— inputs merge rather than exclude, so a friend can grab the pad mid-session.
*Closed-loop polar track generator (rewritten after straight-and-arc chaining
kinked 30 of 32 layouts), PD-damped AI steering, swept collision against walls,
obstacles, and rivals, and GPU resource disposal on every world teardown.
*Built-in capture: F9 taps the game's own canvas at 60fps plus the master audio
bus into a self-downloading .webm — raw frames, no overlays, zero gameplay
touched, and deliberately exempt from every other key handler so recording
never kicks you out of the demo reel.
Built solo by Darrell Kelly, Global Talent Acquisition Manager at HTC, using AI-assisted
development — proof of what one determined non-engineer can ship when the tools
meet the ambition.
ALTITUDE — ANTI-GRAV RACING LEAGUE
A browser-native arcade racing sim for VIVERSE · Desktop + Mobile + WebXR (Meta Quest)
Thirty-two hand-tuned circuits across four career tiers — from a rookie bowl in
the Bavarian alps to storm-lashed legend-class ovals — raced from chase cam or a
full VR cockpit, running entirely in a browser tab from a single HTML file.
THE GAME
*32-circuit career across 10 living environments — alpine, desert, night city,
volcanic, arctic, coastal, storm — with tier-gated progression from rookie to
legend and a garage of 8 cars spanning a starter hatchback to an LMP prototype,
each with 5 upgrade paths and a cash/XP economy.
*Championship seasons: 5-6 round points title per tier against a fixed roster,
F1-style scoring (25-18-15…), live standings after every round, and a title
bonus up to 416,000 CR for the Legend crown.
Twelve rivals with personalities, not name tags: fixed liveries and
temperaments that feed the AI — aggression sets how late they yield in traffic
and how greedily they burn nitro, consistency makes some erratic lap-to-lap —
plus overtake trash-talk and a nemesis system that pays out when you get
revenge on whoever beat you last.
*Time-trial ghosts: your best lap on every circuit is recorded at 10Hz in any
mode and replays as a translucent rival; beat yourself, bank the record bonus.
*Racing AI with PD-controlled steering, racing-line offsets, rubber-band-free
tier difficulty, car-to-car collision, and an attract mode that auto-directs
its camera to the closest on-track battle.
*Everything you hear is synthesized live: engine pitch tracks the tach with
per-gear drops, wind and tyre squeal are slip-driven filtered noise, collisions
thud by impact speed, and the soundtrack is a 128 BPM synthwave sequencer —
kick, hats, octave-hopping bass, echoed arp — that ducks under the engine
mid-race. No audio files exist.
WHY IT FITS VIVERSE
*Zero-friction distribution: one file, one link. If it can open a webpage, it
can run the league — and with three.js inlined, it has zero external
dependencies. No CDN, no fonts required, no store, no install. It runs
offline, inside sandboxed iframes, and inside VIVERSE unchanged.
*WebXR-native cockpit build: local-floor reference space, trigger throttle and
brake on Quest controllers, dash readouts modeled in-world, and comfort-first
design — camera shake is disabled in the headset build by design.
*Phones are first-class: on-screen touch controls appear automatically, races
request fullscreen landscape, long-press and pinch-zoom are suppressed, and a
performance quality preset scales the renderer from phones to laptops to
standalone headsets.
*Progress persists anywhere it lands: a three-tier save shim (platform storage,
localStorage, in-memory) means career, cash, trophies, and ghosts survive
refresh on every host — including embedded ones.
TECH NOTES
*Single-file builds (desktop ~776 KB, VR ~792 KB; ~3,800 lines of game code
plus inlined three.js r128): every track, car, environment, palette, and sound
generated procedurally in code, including WebAudio-synthesized engines, impacts,
and soundtrack.
*Four input worlds, coexisting: keyboard, PlayStation controller (analog R2/L2
triggers scaled into the physics, stick deadzone, full D-pad + Cross menu
navigation with a focus ring), mobile touch overlay, and Meta Quest controllers
— inputs merge rather than exclude, so a friend can grab the pad mid-session.
*Closed-loop polar track generator (rewritten after straight-and-arc chaining
kinked 30 of 32 layouts), PD-damped AI steering, swept collision against walls,
obstacles, and rivals, and GPU resource disposal on every world teardown.
*Built-in capture: F9 taps the game's own canvas at 60fps plus the master audio
bus into a self-downloading .webm — raw frames, no overlays, zero gameplay
touched, and deliberately exempt from every other key handler so recording
never kicks you out of the demo reel.
Built solo by Darrell Kelly, Global Talent Acquisition Manager at HTC, using AI-assisted
development — proof of what one determined non-engineer can ship when the tools
meet the ambition.