Visualizing pressure when a fusion core blows

When an enemy ship is shot down in Wreckwing, its fusion core goes up: a blue-white flash, a ring of sparks, then fire. 0.15.5 and since described that death. We wanted it to hit harder, with a shockwave that visibly bends the view and more force behind the blast.
Finding a shockwave that was already there
The game already bent the picture around big blasts, the way a pressure wave bends light. A shell grows out from the blast, and whatever lies behind its edge is pushed outward on the screen. A research pass into how games and films make a blast read as big pointed at that shell first. Working from the code, its arithmetic said a ship’s shell lived about a twentieth of a second.
A recording of a ship’s death at 60 frames a second confirmed it before anything changed. The shell ran outward at 300 m/s, reached the camera in three frames, and was dropped once the camera was inside it. In the eight frames after the blast, no bending could be seen at all.
Slowing the wave and passing it through the camera
The shell now grows the way a real blast wave does, fast at first and slowing as it goes. Its radius rises as time to the power 0.4, the law physicists use for a point explosion, and it reaches at least 36 m over 0.55 s, fading as it goes. When it reaches the camera it no longer simply vanishes. A ring runs across the screen from where the blast is, as if the wave were passing over you.

In a test with a core 12 m from the camera, the new ring bends 667 pixels of a wall 0.05 s after the blast, where the old one had already gone. It is gone by 0.85 s.
The first version went too far. Its review found that at its first strength the thin shell stretched the image about eight times in narrow bands for two frames, enough to drip a parked car’s roof onto the sidewalk. The shell now runs at half the strength and is at least 3 m thick, twice the first version’s 1.5 m. It bends the scene as far with about a quarter of the stretch, and the second review measured about two times at worst.
Adding force behind the blast
- The kick. The view kicks away from the blast by the square of how near it is, about half a degree for a kill 40 m away and at most 1.4 degrees of pitch and 1 of roll. It eases back in about 0.4 s.
- The sound. Under a core going up within about 65 m, the sounds that start and the rumble, gravel and hum beds drop to half and come back over 0.45 s, so the core’s own blast stands out. Other blasts and the lock and missile warnings are never lowered.
- Three small blasts. They trail the core at 0.14, 0.27 and 0.41 s, 4 to 5 m from it, spread round it on the screen and smaller each time. In the first version they sat 1.5 to 3 m out, and the review couldn’t pick them out inside the core’s fireball.
- Slow motion. At first, every core in view stopped the game for 60 ms and then ran it at 0.4 speed for half a second. With mosquitoes in a city, small gun ships added this week, that happened several times a level, so it now plays only for the level’s last enemy and for the player’s own ship. Every core keeps its ring, kick, sound and trailing blasts.
- The last kill. When a level is won, the camera turns onto the last enemy’s blast over 0.6 s and holds there for 3 s before the results.
Checking every flash
Brighter flashes and screen warps raise a real risk. Some people with photosensitive epilepsy can have a seizure from rapid bright flashing. The usual guideline, WCAG 2.3.1, allows no more than three flashes in any one second over more than a small area: a quarter of any 10-degree part of the viewer’s field of view. W3C estimates that 10-degree field as a 341 by 256 pixel rectangle on a 1024 by 768 screen at a typical viewing distance, so the area is a quarter of that rectangle, 21,824 square pixels or about 2.8% of the screen. The game shows a warning at launch, and every new flash or warp goes through a flash audit before we play it.
The audit reads a recording pixel by pixel and counts a flash as a pair of opposite brightness changes of 10% or more, with the darker state below 80%. It fails a clip with more than three flashes in any second over WCAG’s area, and it checks red flashes separately. It also reports the largest share of the frame that flashed more than three times in a second. It tests itself on nine made-up clips with known answers. A full screen flashing five times a second fails, and so do a red one, 15% of the screen at five times a second, a tenth of the screen at ten times a second, and 3.75% of the screen at five times a second. Twice a second passes, 1.9% of the screen at ten times a second passes, and a slow fade and a single blast pass.
Two independent checks found errors in the audit’s math. While this post was being fact-checked against the game’s records on October 17, the comparison with WCAG showed that the audit counted a flash only once it covered a quarter of the screen, about nine times the area the guideline allows. We changed the area that day to the whole 341 by 256 rectangle, about 11% of the screen, which was still four times too large. A second review on October 18 found that the guideline’s definition limits flashing to a quarter of that rectangle. The audit now uses that area, and every clip it had passed was audited again. In a recording of a ship’s death in front of the chase camera, the fusion core flashes three times in its worst second, within the limit of three on W3C’s reference screen.
The audit covers the game’s own effects. Play itself can flash over the limit, for example when the camera tumbles through a collapsing building, so the game does not claim to meet WCAG 2.3.1. It shows a photosensitivity warning at every launch, and its accessibility settings include Reduce flashes.
All of this is in the development build as of October 17, the corrected area as of October 18, and none of it is in a tagged release yet.
Updated 2026-10-18: WCAG 2.3.1's flash area corrected from about 11% of a 1024 by 768 screen to about 2.8%, with the audit's self-test and the fusion core's result at the corrected area, and a note that play itself can exceed the limit.
How this post was made
- Drafted by
- A Claude Code session in the trilithon.games repository, October 17, 2026, working from the game's dev journal, changelog, commits and tracker.
- What it did
- Drafted this post from the game session's journal entry of October 15, added the sound, the trailing blasts and the change to slow motion from the changelog, and checked each number against the changelog and the commit messages.
- Reviewed by
- Alex van Rossum,
On the roadmap: The run: a ladder of cities
Linear MIP2-690, MIP2-963, MIP2-964commits 6babd72, 4d1b99f, 9c81e75, 42164c0, 7ef625a