You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 59540cd
Browse filesBrowse the repository at this point in the historyBrowse files
Make a seed reproduce a run, and give the sector-2 boss teeth
Adding a per-sector breakdown to the balance bench turned up two things.
A seed reproduced nothing
The same seed, run three times in one process: won, lost at sector 4, lost at
sector 5. Boss patterns and enemy behaviour drew from the module-level `random`
rather than from the run's own generator, so nothing about a fight was
reproducible. Nothing crashed and no test failed -- the game just was not
deterministic, which means the balance figures in the previous commit were
reporting run-to-run noise as if it were the effect of a change, and a seed in
a bug report reproduced nothing.
Every roll that decides how a fight goes now comes from the run's RNG: boss
drift, spiral phase, wall gaps, rain, beam comb order, turret sides, pod and
turret stagger, enemy station, drift and fire cadence, pickup scatter.
Particles, shake and the starfield stay on the global generator deliberately --
they cannot change an outcome, and threading a seeded generator through the
particle pool would be churn for no property gained.
test_determinism.py fingerprints a patrol and all five bosses, driven twice from
one seed with a fixed input weave, with the global generator deliberately
disturbed in between so a leaked roll cannot accidentally line up. Its first
version passed with the bug reintroduced: it traced only the sector-2 boss, and
HIVE MOTHER has no walls, so a wall's roll leaking changed nothing it could
see. Tracing all five, the same injected bug fails SENTINEL, BULWARK and WARDEN.
Its sanity check -- a different seed must change the trace -- also had to be
loosened from one alternate seed to several. LANCE's opening rolls exactly one
die, its drift direction, so four seeds in a row can legitimately produce an
identical fight. Requiring one specific seed to differ was testing the seed
rather than the game.
HIVE MOTHER was the weakest of the five
Per sector, at PILOT: SENTINEL 2.3 hull, HIVE MOTHER 1.0, LANCE 3.2, BULWARK
5.1, WARDEN 6.3 -- and half of HIVE MOTHER's fights ended without a scratch, on
the boss most players meet second. Escorts alone are not a pattern: they are
enemies, and enemies are the thing a player is already good at. Its wall guns
are up from the first phase, escorts come down the flanks as well as out of the
bays, and it keeps firing while they close instead of waiting its turn.
Also corrected: the map figures in the READMEs were measured before REST_CHANCE
went from 0.45 to 0.55 and did not match the shipped code. On the code as it
stands: 0.54 repair bays a sector, 54% of sectors offering one, 12% forcing it.
The win-rate table in pc/README.md still carries the figures measured on the
non-deterministic build. A 24-seed run on this build is in flight and those
numbers land in the next commit.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AKLqS4PgnCXrzKHDH8Cnzy
0 commit comments