Let the ship explode before the debrief - #8
Merged
Conversation
|
@jordan-bravo is attempting to deploy a commit to the Delineator Team on Vercel. A member of the Team first needs to authorize it. |
Taking the fatal hit spawned a fireball and called `finish` in the same
frame, and `finish` calls `clearArena`, which calls `fx.clear`. The
explosion existed for one frame and was then wiped by the thing that
replaced it. In practice the hull vanished and the stat screen appeared.
A loss now seals its result and hands the next 2.4 seconds to the wreck:
- 0.00s the hull is still there. Dead, unsteerable, coasting on its last
velocity, tumbling, venting sparks, cooking white-hot, with two
small ruptures walking across it.
- 0.55s the ship goes. Big detonation, hard camera shake, hull hidden.
- 0.95s cook-offs out in the debris, then it burns down.
- 2.40s debrief.
The tumble is applied to the *visual* only. The chase camera sits in the
ship's own frame, so rotating `player.quaternion` would spin the shot
rather than the hull and make the last two seconds unwatchable. The
squadron keeps flying and bolts keep travelling underneath it — freezing
the arena on the death frame reads as the game crashing rather than as a
kill — and none of it can touch the player, since `step` and `takeDamage`
both bail on a dead hull and bolts skip anything untargetable.
Two things fell out of it:
- **The result is sealed at the moment of death** rather than read at
`finish`. The arena runs for two more seconds, which is long enough for
a hostile to fly into the star and post a bounty to a pilot who is
already dead. `elapsed` stops too, so a loss no longer records the
length of its own explosion as flight time.
- **The game refuses to pause while dying.** Escape mid-explosion — or
the pointer lock the browser drops when you press it — otherwise parks
a pause menu in front of the fireball with a debrief queued behind it.
`ending` is gone: `dying` covers the death path and `active` already
covered the win path, so it guarded nothing.
Verification: `npm run check` green — typecheck, the existing simcheck
suite including the seeded end-to-end run, the balance contract, plus ten
new assertions driving a real run onto a mine and checking the handoff.
Not verified in a browser; there is no display on this box.
Co-authored-by: Jordan Bravo <jordan@bravo.cc>
Signed-off-by: Jordan Bravo <jordan@bravo.cc>
jordan-bravo
force-pushed
the
feat/death-explosion
branch
from
August 5, 2026 21:40
eed386a to
975c3c1
Compare
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Taking the fatal hit spawned a fireball and called
finishin the same frame, andfinishcallsclearArena, which callsfx.clear. The explosion existed for one frame and was then wiped by the thing that replaced it. In practice the hull vanished and the stat screen appeared.A loss now seals its result and hands the next 2.4 seconds to the wreck:
The tumble is applied to the visual only. The chase camera sits in the ship's own frame, so rotating
player.quaternionwould spin the shot rather than the hull and make the last two seconds unwatchable. The squadron keeps flying and bolts keep travelling underneath it — freezing the arena on the death frame reads as the game crashing rather than as a kill — and none of it can touch the player, sincestepandtakeDamageboth bail on a dead hull and bolts skip anything untargetable.Two things fell out of it:
finish. The arena runs for two more seconds, which is long enough for a hostile to fly into the star and post a bounty to a pilot who is already dead.elapsedstops too, so a loss no longer records the length of its own explosion as flight time.endingis gone:dyingcovers the death path andactivealready covered the win path, so it guarded nothing.Verification:
npm run checkgreen — typecheck, the existing simcheck suite including the seeded end-to-end run, the balance contract, plus ten new assertions driving a real run onto a mine and checking the handoff. Not verified in a browser; there is no display on this box.