Operation Iron Thunder

2026

A WW2 tank game in the browser: a Sherman and its five-man crew in Normandy, July 1944. Climb out, fight, rest in the church. three.js.

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.

Technologies

three.js WebGL TypeScript Vite Web Audio OpenAI Images API Poly Haven CC0 Vitest Playwright

More of my work

Browse the full portfolio or read the blog.

More work