Night Eagle II is the same game as Night Eagle, but you look at it from an angle above instead of from straight overhead. It is night in June 1944, you are an SAS soldier in the Morvan, and you have to get past 90 German enemies, blow up the radio command centre in the base and escape to the extraction point. Mission, map, enemies, vehicles, partisans, weapons, checkpoints and cheat mode are the same; the picture, the opening, the music and the churches are new.
The game opens in a C-47 Dakota with the black and white invasion stripes of June 1944. It flies low over clouds at different heights into the valley, the light by the door turns from red to green and you jump out on the left side. At first you keep the plane's speed, fall free for a moment, and the canopy unfolds from a narrow streamer into a full parachute that sways a little. The camera stays with you, pulls back over the whole valley and comes back for the landing; then the canopy falls over beside you.
A point (x, y) in the world lands on the screen at (x − y, (x + y) / 2). A cell of 8 by 8 pixels becomes a diamond 16 wide and 8 high, and the picture of 640 by 360 pixels shows as much ground as in Night Eagle, so sight distances and tension stay the same. W walks up the screen; the mouse aims at chest height and is worked back to the ground.
Both versions come from one code base. The simulation is shared and never imports Phaser; a test guards that. A build with --mode iso picks the isometric drawing layer. Light, effects, water, Flak and the debug view go through a lens that decides how world positions land on the screen: in the light layer the guards' view cones become projected polygons and round lights become ellipses twice as wide as they are high. The terrain is first painted flat as in Night Eagle; then every screen pixel takes the world pixel below it, so the pixels stay sharp.
Everything that stands is a small 3D model of blocks, built in code and turned into pixel art with a dark outline at start-up: soldiers in 8 directions with all their animations, vehicles in 16 directions with light edges on the metal, trees, tents, sandbags, fences, the watchtower, the radio mast and the Ju 52. Buildings are built up from the walls in the level data, one 8 by 8 cell at a time, so soldiers in front and behind are drawn in the right order. Walk inside and the roof disappears and the walls drop to a low edge; stand behind a building and it turns see-through. Long things such as a 384-pixel fence are drawn in one go and then cut per cell, without seams.
Each village has a church with a bell tower: dressed stone with lighter quoins, a clock, the belfry and an eight-sided slate spire with a cross and a weathercock. Inside are pews and an altar with a crucifix and two candles, and before it the priest in a black soutane. Walk up to him and you greet him, the bell rings and your health is full again. That works again once you have walked away for a moment.
The music is a lament of its own in G minor, synthesised live with the Web Audio API. Under it runs the falling chromatic bass of the old laments, as in Henry Purcell's When I am laid in earth (1689); over it a melody of its own that keeps sighing down a step. On the title screen horn and violins sing. While sneaking only a tremolo deep in the bass, a heartbeat and single sighs are left. In a fight the bass goes twice as fast, with pizzicato, timpani, side drum and the melody in the brass; on the run the melody climbs an octave. The voices are the same 61 lines as in Night Eagle. The title panorama was made with the OpenAI Images API and reduced to the game's palette.
There are 525 unit tests in Vitest and end-to-end tests in Chromium, Firefox and WebKit, for both versions. The game runs at 60 frames per second with 90 enemies and loads about 420 kB gzip, Phaser included; the voices follow in the background. On a phone or tablet the page shows a still and Phaser is not loaded.
The game opens in a C-47 Dakota with the black and white invasion stripes of June 1944. It flies low over clouds at different heights into the valley, the light by the door turns from red to green and you jump out on the left side. At first you keep the plane's speed, fall free for a moment, and the canopy unfolds from a narrow streamer into a full parachute that sways a little. The camera stays with you, pulls back over the whole valley and comes back for the landing; then the canopy falls over beside you.
A point (x, y) in the world lands on the screen at (x − y, (x + y) / 2). A cell of 8 by 8 pixels becomes a diamond 16 wide and 8 high, and the picture of 640 by 360 pixels shows as much ground as in Night Eagle, so sight distances and tension stay the same. W walks up the screen; the mouse aims at chest height and is worked back to the ground.
Both versions come from one code base. The simulation is shared and never imports Phaser; a test guards that. A build with --mode iso picks the isometric drawing layer. Light, effects, water, Flak and the debug view go through a lens that decides how world positions land on the screen: in the light layer the guards' view cones become projected polygons and round lights become ellipses twice as wide as they are high. The terrain is first painted flat as in Night Eagle; then every screen pixel takes the world pixel below it, so the pixels stay sharp.
Everything that stands is a small 3D model of blocks, built in code and turned into pixel art with a dark outline at start-up: soldiers in 8 directions with all their animations, vehicles in 16 directions with light edges on the metal, trees, tents, sandbags, fences, the watchtower, the radio mast and the Ju 52. Buildings are built up from the walls in the level data, one 8 by 8 cell at a time, so soldiers in front and behind are drawn in the right order. Walk inside and the roof disappears and the walls drop to a low edge; stand behind a building and it turns see-through. Long things such as a 384-pixel fence are drawn in one go and then cut per cell, without seams.
Each village has a church with a bell tower: dressed stone with lighter quoins, a clock, the belfry and an eight-sided slate spire with a cross and a weathercock. Inside are pews and an altar with a crucifix and two candles, and before it the priest in a black soutane. Walk up to him and you greet him, the bell rings and your health is full again. That works again once you have walked away for a moment.
The music is a lament of its own in G minor, synthesised live with the Web Audio API. Under it runs the falling chromatic bass of the old laments, as in Henry Purcell's When I am laid in earth (1689); over it a melody of its own that keeps sighing down a step. On the title screen horn and violins sing. While sneaking only a tremolo deep in the bass, a heartbeat and single sighs are left. In a fight the bass goes twice as fast, with pizzicato, timpani, side drum and the melody in the brass; on the run the melody climbs an octave. The voices are the same 61 lines as in Night Eagle. The title panorama was made with the OpenAI Images API and reduced to the game's palette.
There are 525 unit tests in Vitest and end-to-end tests in Chromium, Firefox and WebKit, for both versions. The game runs at 60 frames per second with 90 enemies and loads about 420 kB gzip, Phaser included; the voices follow in the background. On a phone or tablet the page shows a still and Phaser is not loaded.
More work

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.

Interactive World Globe
A 3D globe of 2,000 points of light, built with Three.js. Pick the Netherlands, Suriname or England and the globe turns to that country, with a short text.

Interactive DOS Experience
An MS-DOS simulation with CRT effects and commands such as DIR, CD and TYPE. CAROUSEL.EXE sends ASCII blocks flying across the screen and opens a 3D carousel.
