Fighting should feel good: gunfire with weight, punches on aliens, explosions on every hit, for aliens and for ships.
Real gun recordings were too quiet
Every weapon already had a fire sound. The trouble was the main gun. Real recordings, normalised to their peaks, have almost no body, and a game that fires ten shots a second exposes that at once. The first 250 ms of the machine gun clips measured between -13.9 and -23.8 dBFS, with 4 of 6 clips below -18.
The fix was punchier arcade recordings with a synthesised low thump and click underneath every shot, and a sub boom with rumble and crackle under every explosion. The machine gun clips now measure -12.6 to -15.8 dBFS.
| before | after | |
|---|---|---|
| Sound bank interactions | 166 | 172 |
| Sound bank clips | 411 | 452 |
| Particle shapes | 12 | 16 |
Alien guns have a voice and a muzzle flash too, and shots that hit scenery ricochet with a spark. Aliens take eight light hits and six heavy ones, a K.O. finisher on every kill, and a yelp on about 3 hits in 10.
One bug came out of the new session log: the sound bank only began loading after the first click, so anything asked for in the first seconds was lost. Clips are now downloaded in the background as soon as the page starts, combat sounds first and long ambience loops last, and decoded at the first click.
Explosions built in beats
The particle system now knows each particle's age, so a single sprite can animate itself. That allowed four new shapes: a churning fireball that burns away, rising smoke, a ground shockwave and tumbling debris.
An explosion runs in order: flash and lens flare, shockwave across the ground, fireball with satellites rolling outward, dust along the rim, debris, streaks, embers, smoke climbing out of the fire, a scorch mark, a light flash and a lingering glow. Big ones add camera shake and a short hitstop. There are four kinds: fire, plasma, ground slam (dust and shock, no fire) and goo.
Every shot that lands makes a small explosion at the target's real height. A saucer takes its hits at 7.5 m, the mothership at 12 m. Hurt saucers smoke, badly hurt ones burn, and a shot-down saucer blasts in the air, tumbles out of the sky trailing fire and hits the ground with the big one. Hit explosions are capped at 12 per 0.2 s, and a pile-up of blasts thins each one out so the frame rate holds.
Looking at the result forced four fixes:
- A falling saucer swung round a 7 m arc because it was rotated through its ground-level group instead of its hull. It tumbles in place now.
- It shrank to nothing before landing. It stays whole until impact.
- The hit flash turned a saucer into a cream-coloured blob under bloom. Flashes on ships and bosses are a gentle warm flush now.
- The fireball read cream-yellow. The heat ramp was rebalanced to fire-orange with a hot core.
A half-second effect is hard to judge from a live preview. Freezing the game loop and stepping frames by hand was the only reliable way to look at it.
A walker that burns the ground
The Tripod Harvester is a water-tower-tall walker. The hull is armour, so you shoot the glowing feet, and every footfall is a telegraphed stomp.
Every Harvester now fires the Plasma Sear. A warning ring appears on a Wakeguard, then a beam lands and chases them a step behind a runner. A runner moves about 5.6, so anyone who keeps moving stays ahead and anyone who stops is caught. The trail leaves a molten patch on every pace that stays lit for 3.6 s, a scorch mark that stays for 45 s, flames, rising smoke and chunks of earth flung out of the trench. Below 45 percent health a plate blows off the hull and smoke and fire pour out until it dies.
The test bot wiped in about 37 seconds against the first version of the beam. After it was eased, the bot wins sometimes. The beam's numbers are a first guess.
Shapes beside a modelled body look like dolls
Every neighbor is now a single modelled body, reshaped and recoloured for skin, hair, shirt, trousers, height, width and head size, with a few fitted hats. An earlier version gave the women a separate cartoon body and built extras from primitive shapes. Beside the detail of the modelled body they looked like dolls and were removed. Variety has to come from more modelled bodies, not more geometry.
Recolouring skin has to follow the texture's own brightness. A true-to-life light skin tone blew the arms out to white, because the arms in the texture are much brighter than the face.
A new Neighbor Randomizer page, linked from the title menu, is a live 3D editor with eight random neighbors to pick from, sliders and colour swatches.
Graphics presets built from measurements
The presets are now Fast, Balanced, Sharp and Ultra, with a Graphics switch and a reset button in Settings, and a first-launch benchmark that picks one. On the Intel UHD 630 the test machine uses, the old defaults were no anti-aliasing, a 90% render scale that could drop to 55%, 256 px textures, no sun or moon shadows and blur over the top and bottom 18% of the screen.
Procedural texture baking took 0.5 s at 256 px and 1.75 s at 512 px, and about 7 s would be needed at 1024, which is why the higher textures sit on the higher presets. The new set adds edge smoothing and a sharpen pass, and dynamic resolution that never drops below 75% and only after sustained slowdowns. Blur is off during play, haze is thinner, and sun and moon shadows come with Balanced. The game has no soft shadow mode, so shadow quality comes from the size of the map.
Timing frames with gl.finish() did not wait for the GPU in this browser, so the benchmark measures real frame pacing instead.
Where this stands
Verified by a smoke run of the production build: it booted, started a Watch, fired every explosion kind, killed six enemies and logged no errors. The levels of the new sounds came from measurements, not from listening, and nobody has played a full Watch with the new effects yet.
