A dungeon now names the boss arena it ends in, and the arena decides the boss. Three entrances in the hub: Warden's Descent, The Choir Vault, Proving Grounds. That replaces the seed coin-flip from the last commit, which was the wrong call. Which boss you are about to fight is the single thing a player decides before walking into a dungeon, and rolling it for them makes that decision unavailable. Only the Proving Grounds still leaves its arena open, because a harness you re-enter every couple of minutes wants whichever fight comes up first -- and it is the one place where "either will do" is true. test_every_boss_has_a_dungeon_that_reaches_it is the check that matters here: adding a boss and forgetting to give it a way in is now a failing test rather than a boss nobody meets. The smoke test asserts all three portals open over a real socket -- bots pick theirs by account id, so a run exercises each. Bullets no longer animate. The sheet's eight frames are a COLOUR cycle rather than a shape change, so running it had every bullet on screen strobing through a palette in unison, which with a few hundred in the air is exactly as hard to look at as it sounds. Each bullet holds one frame and turns slowly instead, offset by its own id so a ring of twenty does not rotate as one rigid wheel. The rate is slow enough that nothing completes a full turn inside its own lifetime, so it reads as drift rather than spin, and a test pins that against the longest-lived bullet in the game. The renderer slices four textures at startup now instead of thirty-two. check.sh clean, 414 tests, SMOKE PASS (22 assertions), all four diagnostics green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+26
-3
@@ -403,6 +403,29 @@ asserts the burst lands where the marker promised.
|
||||
other thing in the view. A warning you cannot see is an unavoidable hit with
|
||||
extra steps, which is the opposite of what a telegraph is for.
|
||||
|
||||
**Which boss a run has comes from its seed, not its depth.** Depth is a dev flag
|
||||
that nothing in play raises, so keying the arena to it meant the second boss
|
||||
existed and no player could ever reach it.
|
||||
**Each boss has its own entrance in the hub.** A dungeon names the arena it ends
|
||||
in, and the arena decides the boss. Which fight you are walking into is the one
|
||||
thing a player chooses before a run, so it is not rolled for them — not from the
|
||||
depth (a dev flag nothing in play raises, which left the second boss
|
||||
unreachable) and not from the seed either. Only the Proving Grounds leaves it
|
||||
open, because a harness you re-enter every couple of minutes wants whichever
|
||||
fight comes up first.
|
||||
|
||||
---
|
||||
|
||||
## Bullets do not animate
|
||||
|
||||
**One frame, and a slow turn.** The bullet sheet's eight frames are a colour
|
||||
cycle rather than a shape change, and running it meant every bullet on screen
|
||||
strobed through a palette in unison — genuinely hard to look at with a few
|
||||
hundred in the air, which is the normal case for this game.
|
||||
|
||||
Each bullet now holds one frame and rotates at `Art.BULLET_SPIN_RATE`, offset by
|
||||
its own id so a ring of twenty does not turn as one rigid wheel. The rate is
|
||||
slow enough that nothing completes a full turn inside its own lifetime, so it
|
||||
reads as drift rather than as spin — a test pins that against the
|
||||
longest-lived bullet in the game.
|
||||
|
||||
The other seven frames stay in the atlas because that is what the source art is.
|
||||
Nothing draws them, and the renderer now slices four textures at startup instead
|
||||
of thirty-two.
|
||||
|
||||
Reference in New Issue
Block a user