Normandy, July 1944. You drive an American M4 Sherman from the Allied camp to the fictional village of Saint-Vaast-la-Mare and beyond. The level is won when the German airfield (three Messerschmitts and a fuel depot) and the command bunker with its radio station are destroyed. On the way are 21 German soldiers and two Panzer IVs.
The tank has five crewmen: commander, gunner, driver, loader and radio operator. F sends the selected crewman out and you play on foot with his own weapon: Thompson, Garand, a sniper rifle or the loader's bazooka. Whoever climbs out is missing from the tank. Without the driver it does not move, without the gunner the main gun is silent, without the loader reloading takes longer. The loader lays anti-tank mines and can blow up the bunker with a demolition charge; the driver repairs tracks and engine in the field.
In the village church crewmen recover their health, but only when no Germans are close by. Inside, the view switches to a church interior with stained glass and shafts of light. In the garage the tank is repaired and refuelled, in the camp resupplied. P pauses the game so you can plan routes for those outside. The pause menu has a cheat mode, as in Night Eagle: tank and crew then lose nothing.
The picture is three.js with an orthographic camera at a fixed isometric angle, so shadows, day and night, fog and rain simply work in 3D. Vehicles, soldiers, houses, the church and the bunker are built in code; the soldiers walk, aim, throw and fall with procedural animation. Ground and walls use photo textures from Poly Haven (CC0). The crew portraits and the title painting were made with an OpenAI image model. All sound, from the engine to the church organ and the music, is synthesised live with the Web Audio API.
The simulation is separate from the picture and runs in fixed steps of 1/60 second; the enemies use state machines and A* routes. Savegames go to IndexedDB, with a version number. Unit tests in Vitest check tank physics, crew, ammunition, cheat mode, mission and savegames; end-to-end tests run in Chromium, Firefox and WebKit. It plays on a computer with keyboard and mouse.
The tank has five crewmen: commander, gunner, driver, loader and radio operator. F sends the selected crewman out and you play on foot with his own weapon: Thompson, Garand, a sniper rifle or the loader's bazooka. Whoever climbs out is missing from the tank. Without the driver it does not move, without the gunner the main gun is silent, without the loader reloading takes longer. The loader lays anti-tank mines and can blow up the bunker with a demolition charge; the driver repairs tracks and engine in the field.
In the village church crewmen recover their health, but only when no Germans are close by. Inside, the view switches to a church interior with stained glass and shafts of light. In the garage the tank is repaired and refuelled, in the camp resupplied. P pauses the game so you can plan routes for those outside. The pause menu has a cheat mode, as in Night Eagle: tank and crew then lose nothing.
The picture is three.js with an orthographic camera at a fixed isometric angle, so shadows, day and night, fog and rain simply work in 3D. Vehicles, soldiers, houses, the church and the bunker are built in code; the soldiers walk, aim, throw and fall with procedural animation. Ground and walls use photo textures from Poly Haven (CC0). The crew portraits and the title painting were made with an OpenAI image model. All sound, from the engine to the church organ and the music, is synthesised live with the Web Audio API.
The simulation is separate from the picture and runs in fixed steps of 1/60 second; the enemies use state machines and A* routes. Savegames go to IndexedDB, with a version number. Unit tests in Vitest check tank physics, crew, ammunition, cheat mode, mission and savegames; end-to-end tests run in Chromium, Firefox and WebKit. It plays on a computer with keyboard and mouse.
More work

The Art of Eight Limbs — Muay Thai, Muay Boran and Lethwei
An illustrated tribute to Muay Thai, Muay Boran and Lethwei: eight painted scenes, emblems in Thai and Burmese script, animals and sacred tattoos.

Interactive 3D WebGL Experience
A 3D WebGL piece with animated chrome letters, a neon grid and warp-speed stars. Move your mouse to pan the camera.

ERIK — Original Cube Animation
The 3D animation at the top of my homepage until October 2026: 50 cubes in three.js spell ERIK, with a photo and videos on their faces.
