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:
- Forest: procedural instanced forest
- Sky / sun / moon / clouds / stars: complete sky system
- Bullet trails / particles: Ravenfall
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.
Feedback welcome, especially on gameplay feel. I spent a lot of time tuning it.
Enjoy!