Deathchase 3D: Three.js homage to the 1983 ZX Spectrum game classic

My Three.js homage to Deathchase by Mervyn Estcourt (Micromega, 1983), the pseudo-3D motorcycle chase that was a Spectrum smash hit and one of my earliest games.

First-person cockpit view, you and two AI bikes weaving through a procedural forest at speed, photon-bolt cannon, day/night cycle that advances during stage transitions.

CodePen: https://codepen.io/the-red-reddington/full/ZYBLxdp
GitHub Pages: https://red-reddington.github.io/web-demos/deathchase-3d
Source: https://github.com/red-reddington/web-demos/blob/4085ef8837f2e74772aea099e0819e2c23197946/deathchase-3d/index.html

Single HTML file plus a few GLB models and short audio clips. No build, no framework, no bundler.

Dependencies

  • Three.js (GLTFLoader + DRACOLoader + KTX2Loader + MeshoptDecoder for compressed GLBs)
  • Howler.js for spatial WebAudio (HRTF panner, listener in world space)
  • nipplejs for touch controls

Core visual subsystems are adapted from some of my earlier posts:

Two things I intentionally left out from the original (hopefully, game purists will forgive me):

  • Horizon choppers/tanks… because in proper 3D, and with my stage/score/odometer/day-night, there’s no need for additional progression “motivators”
  • Guided photons (bullet bending)… because locked-direction-at-fire-time feels like the better choice to me.

A few things I had a lot of fun working out:

  • Infinite forest via disc recycling. Bike at scene origin, world moves around it. Trees outside the disc relocate to fresh deterministic spots. Constant count, zero allocations. Player sees a stable forest with trees firmly planted in world coords.
  • World-locked ground. Fixed disc at scene origin; motion is normal-map UV scrolled by bike position, rotated by heading.
  • Cockpit HUD. Canvas texture on a plane flush with the dash bezel, parented to the bike group so it bobs/leans naturally.
  • Enemy suit hue rotation in the fragment shader
  • Enemy tree avoidance
  • Two-zone tree collision: kill inner + graze outer

Performance: stable, maximum fps on any mid-tier device (incl. mobile) from the past 5 years, with full forest, dynamic shadows, two AI bikes running tree-avoidance, and spatial audio for three engines plus per-kill explosions.

Play Deatchchase 3D →

Feedback welcome, especially on gameplay feel. I spent a lot of time tuning it.

Enjoy!