Triple-tap the scoreboard for a sandbox
A test mode for trying the new content without playing twenty games to reach it. Three taps on the scoreboard toggles it, three more turns it off, and a single tap is still the miss-log overlay. Same shape as the umpire triple-tap cheat it sits next to. It OVERRIDES the difficulty director rather than editing it, so the wave is the same whether you opened it in game 1 or game 40 and the run keeps running underneath: 8 bodies, a fixed 1.15 m/s shamble, a spawn every 1.6 s, and pickVariant pretending to be at game 20 so every body type can turn up. All four barrel weapons sit on the rack and are topped back up each frame, because committing a burst spends the whole tin and a sandbox that runs dry is not one. A barrel rolls out every 14 s so the pickup itself is testable too. The third tap must NOT toggle logShow: taps one and two already toggled it twice and it is back where it started, so toggling again left the miss-log overlay switched on behind you every single time. Also records the trap that cost a debugging round getting here: index.html loads main.js?v=N, and fetching 'main.js' does not bust that URL -- so main.js stayed stale through a reload while every other module was fresh, and the tap handler appeared to do nothing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
282f5145a9
commit
46e268973d
7 files changed
+101
-12
No files matched your search
+23
@@ -320,11 +320,34 @@ zombie (now an occasional opponent, `TUNE.racketEvery`, not the every-game fixtu
|
||||
frame entirely. `xLim = Math.max(xVis, COURT.W / 2)` — the camera limit, floored at the sideline so
|
||||
every legal ball stays catchable.
|
||||
|
||||
## TEST MODE — triple-tap the scoreboard
|
||||
|
||||
A sandbox for trying new content without playing twenty games to reach it. Three taps on the
|
||||
scoreboard (the same shape as the umpire's triple-tap cheat next to it in main.js) toggles
|
||||
`G.testMode`; three more turns it off, and a SINGLE tap is still the miss-log overlay.
|
||||
|
||||
- a fixed MEDIUM wave: `testZMax` 8 bodies, `testZSpeed` 1.15 m/s, `testSpawnEvery` 1.6 s — it
|
||||
overrides the difficulty director rather than editing it, so the sandbox is the same whether you
|
||||
opened it in game 1 or game 40, and `G.runGames` keeps climbing underneath.
|
||||
- `testLevel` 20 is the roster level `pickVariant` pretends to be at, so every body type can appear.
|
||||
- every barrel weapon on the rack, TOPPED BACK UP each frame (`stockTestRack`), so committing a
|
||||
burst — which spends the whole tin — leaves it available again a moment later.
|
||||
- a barrel every `testBarrelEvery` seconds, so the pickup itself is testable.
|
||||
|
||||
**The third tap must not toggle `logShow`.** Taps one and two already toggled it twice, so it is
|
||||
back where it started; toggling again in the triple branch leaves the miss-log overlay switched on
|
||||
behind you every time you enter the mode.
|
||||
|
||||
## Verification recipe (the regression net)
|
||||
Drive the game deterministically via `window.T` with `javascript_tool`. The Browser-pane eval
|
||||
context reports `document.visibilityState === 'hidden'`, so RAF is paused; halt it anyway with
|
||||
`window.requestAnimationFrame = () => 0` and step with `T.step(1/60)`. `T.press('Space')` = tap.
|
||||
Clear the intro first: `document.getElementById('intro')?.remove()`.
|
||||
- **The module-refresh list MUST include the VERSIONED entry point.** `index.html` loads
|
||||
`main.js?v=N`, and `fetch('main.js', {cache:'reload'})` does not bust that URL — so main.js alone
|
||||
stays stale through a reload while every other module is fresh. Read the src off the page:
|
||||
`document.querySelector('script[type=module]').getAttribute('src')` and fetch that too. Symptom: a
|
||||
change in main.js appears to do nothing at all, repeatably.
|
||||
- **You MUST set `T.TUNE.autoAssist = 1.15` first** — the Browser pane reports `pointer: fine`, so
|
||||
the mobile assist is off and every ball reads as "never reachable".
|
||||
- Force splatter with `T.forceZombies()` then ~600 steps (in splatter it forces a HORDE instead).
|
||||
|
||||
Reference in new issue
Block a user