The staff learn your habits, the walk-on waits for your tap, and the club opens a practice court
Four answers to one phone report: - THE READ: repeat a lane and the opponent anticipates it; break the habit and it is wrong-footed for that ball — scaled by rung, so surprise is the weapon that opens the ladder past the HEAD COACH (TUNE block THE READ). - The opponent walk-on is a real modal now (head, punchline, tap to dismiss) in arcade, tournament and training — readable without a clock. - THE TRAINING COURT: third card under ZOMBIE TENNIS, pick any rung, one game at a time, the felled body walks straight back on, nothing banks, bleeding out is a popup instead of a death. mode_train.png rolled in the banner style. - MOVEMENT READS: sprinting feet kick per-court dust and fast bodies leave a two-ghost speed streak (trailMin gates both; feel verdict pending). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
a42dc6fc81
commit
43784c5b33
9 files changed
+360
-43
No files matched your search
+65
@@ -491,6 +491,71 @@ zombie (now an occasional opponent, `TUNE.racketEvery`, not the every-game fixtu
|
||||
`RETURNED`, `DOUBLE KILL`) is a footnote to something you already watched happen. Sharing the loud
|
||||
FACE with the milestone cards is right; sharing their SIZE made every footnote read as a milestone.
|
||||
|
||||
## Session log: THE READ, the walk-on modal, the training court, movement reads (2026-08-28)
|
||||
|
||||
Four items from one phone report. PHONE VERDICT PENDING on all of them.
|
||||
|
||||
### 1. THE READ — the twist for the post-COACH wall
|
||||
Oliver: past the HEAD COACH *"the opponents are very fast and barely make mistakes any more — we
|
||||
need a twist, maybe a kind of cognitive fatigue when you make the same move ten times and then
|
||||
surprise them."* Built as HABITUATION, his own idea with the numbers made playable:
|
||||
- **doHit buckets every aimed player rally shot into three lanes** (target x at ±1.1) and keeps a
|
||||
same-lane run on `G.match.laneRun`. `TUNE.readHabit` (3) same-lane shots = the habit is learned.
|
||||
- **One more of the same lane is `expected`**: the opponent's `aiRead` climbs toward
|
||||
`TUNE.readAnticipate` (0.97) — spam feeds the machine, so the late ladder punishes one-note play.
|
||||
- **Breaking the habit is `surprised`, for that one flight**: the read collapses (`surpRead`), the
|
||||
chase speed drops (`surpSlow`, applied inside `rzChaseSpeed` so the intercept planner and the
|
||||
early-fall test believe it too), and `surpFlub` lands on top of a whiff rate the champion had
|
||||
reduced to almost nothing. A "WRONG-FOOTED." flash announces it (rungs past ~20% only).
|
||||
- **Everything scales with the rung** (`learnK`, (opp−1)/(LADDER−1)): the shambler never learns,
|
||||
the champion — "HE RETURNS EVERYTHING" — is exactly the one you beat by setting a habit and
|
||||
breaking it on the big point. Solo match only (netplay's opponent is a human), rally lanes only
|
||||
(serves keep their own game — open: should serve placement feed the same book?). The one-ball
|
||||
states are cleared at the racket and at every point end (`matchReady`); a fresh walk-on resets
|
||||
the book. Tests pin the state machine (real swings through `keyPressed`) and the dial
|
||||
relationships (a wrong-footed champion runs slower than the head coach at full stride).
|
||||
|
||||
### 2. THE WALK-ON IS A MODAL (tournament + arcade + training)
|
||||
Oliver: *"die Intros der einzelnen Spieler bitte als richtiges Modal, das man wegtappen muss —
|
||||
man kann dann wirklich lesen was da steht, und schnell wegklicken wenn man es schon 100x gelesen
|
||||
hat."* `matchOpponent` now calls `showModal` (head icon `z_<fam>head`, the punchline, the cup's
|
||||
round line) instead of the timed 4 s card. The walk-on court is guaranteed-calm (the mop beat has
|
||||
just ended), so the popup policy allows it; the freeze holds the 1.6 s intro bar until the tap.
|
||||
The mode-rules popup fires BEFORE `matchOpponent` in `startMatch` so it lands first and the
|
||||
opponent queues behind it. Netplay untouched (no walk-on there at all). The test harness's
|
||||
`passMopBeat` now taps the walk-on away like a player would.
|
||||
|
||||
### 3. THE TRAINING COURT (`MODES` id `train`, third kid of ZOMBIE TENNIS)
|
||||
Oliver: *"ein Trainingsbereich — Auswahl des Gegners, ein Spiel, tap to replay, bis man keine
|
||||
Lust mehr hat."* One flag (`d.train`, set by `startMatch(false, null, rung)`) on the whole match
|
||||
machinery:
|
||||
- SERVE UP routes to a picker screen (`#train`, built from the roster like the boss picker, the
|
||||
same `z_*head` crops the draw uses); tapping a rung IS the start — tap-advances, like every
|
||||
other screen. `mode_train.png` rolled in the banner style (golden-hour practice court, ball
|
||||
basket, cones, no text) via the famroll OpenRouter route.
|
||||
- The rung is PARKED: `d.opp` never advances, a felled body walks back on as itself, and the
|
||||
walk-on modal (item 2) is the "tap to replay" gate for free. Between reps the blood resets
|
||||
silently (no WOUNDS TREATED ceremony — a popup per rep is the tap-tax the mode avoids).
|
||||
- NOTHING BANKS: no `G.runGames`, no `endRun` (pagehide guarded), and bleeding out is a modal
|
||||
("IT BLED YOU OUT") plus a fresh pool, never the death screen. The quit chip is the exit.
|
||||
- The board's progress slot reads `TRAINING · <SHORT>`; the setup footer says "NOTHING AT STAKE".
|
||||
|
||||
### 4. MOVEMENT READS — dust and speed ghosts (feel-tunable, verdict pending)
|
||||
Oliver: *"die Bewegung der Spieler optisch anreichern — motion blur / particles / shader, hier
|
||||
bin ich auf deinen Input angewiesen."* Two cheap effects in the existing registers, no shaders:
|
||||
- **Sprint dust**: feet crossing `TUNE.trailMin` (3.6 m/s — above every shamble) kick one
|
||||
per-court `dustPuff` per `runDustEvery` metres. racketAI's chase and the player's mover
|
||||
(auto-run, horde steer) both emit; the mover measures its travel AFTER the clamps so a body
|
||||
pinned at a bound reads as standing.
|
||||
- **Speed ghosts**: `drawZombie`/`drawChar` draw two alpha ghosts sampled back along the body's
|
||||
own velocity (`trailK` s × 1 and 2) — the modal masthead's speed-streak trick applied to
|
||||
bodies. Only genuine sprints qualify; never during a named frame (`showFrame` — a collapsing
|
||||
corpse must not smear on stale velocity). racketAI now records `vz` beside `vx`; the player's
|
||||
`P.vx/vz` are written by the mover and zeroed outside it.
|
||||
Both are panel-tunable (`trailMin` 0 kills both). Not tried, on the shelf if these fail the
|
||||
phone: a one-frame lean/skid sprite on hard direction changes (needs drawn frames, per the
|
||||
draw-frames rule), and court-colored skid streaks on the ground behind a hard stop.
|
||||
|
||||
## Session log: THE LOB (BUILT, THEN CUT) AND TWO THINGS THE MULTIPLAYER TEST FOUND (2026-08-22, same day)
|
||||
|
||||
### THE LOB WAS BUILT AND REMOVED THE SAME DAY — and the reason is the useful part
|
||||
|
||||
Reference in new issue
Block a user