Bring the swing log to every rally mode, and time the gold ring
Oliver wants to hand over a log of why he missed balls. It existed behind a scoreboard tap but was gated on G.mode === 'tennis', so the Climb, the cup and training (which run as 'splatter') logged nothing. It now writes in every rally mode: hits with shot, tap age and any quality cap, misses with the new let-it-bounce reason, and a WON/LOST line naming why each point went. Tapping the open log copies all 200 entries with a header. Its first catch: the gold ring went gold at a distance, which is too early for the slow balls steps 1-3 brought in. It is now timed off the ball's real path to his reach (against where his run is taking him): gold means touch now. ringTime 0 restores the old ring. v365. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
180288ef8f
commit
d110e12321
8 files changed
+225
-41
No files matched your search
+36
@@ -5384,6 +5384,42 @@ rolling (seed 31337 found it).
|
||||
**Not built:** the champion LEARNING whether the net works for him (Free Tennis's idea), a style for
|
||||
classic's CPU, and a "DROP"/"LOB" word at contact.
|
||||
|
||||
### The swing log comes back for every rally mode, and the gold ring is TIMED (2026-10-14, v365)
|
||||
Oliver: *"bitte bau nochmal die Funktion ein die protokolliert warum ich einen Ball nicht bekommen habe
|
||||
(ich glaube das war ein Tap aufs Scoreboard).. ich würde dir das gerne mal zum Debuggen geben."*
|
||||
- **The log existed but was gated on `G.mode === 'tennis'`.** The match runs as `'splatter'` under its
|
||||
interlude, so the Climb, the cup and training logged nothing at all. `swingLog()` (tennis or
|
||||
`rallyFeel`) now gates every site: whiff analysis, swing snapshots, closest approach, the HIT line.
|
||||
- What a line now carries:
|
||||
- **HIT:** `q=0.82 drop left volley · tap 120ms · capped: …`, i.e. the shot asked for, the tap's
|
||||
age (keyPressed's `lead`, stored as `P.tap`), and which cap took the quality down (volley below
|
||||
the tape, dug-out drop, lobbed).
|
||||
- **MISS:** the old early/late/wide/high/low reasons, plus "waited for the bounce" when the
|
||||
let-it-bounce gate refused it. The snapshot reach now includes `matchReach`; without it a near
|
||||
miss in the match read as wide.
|
||||
- **WON/LOST:** every point names why (`logPoint`, called by both `pointTo` and `resolveInterlude`).
|
||||
A point lost with no swing adds how close the ball came. The old PASSED entry folded into this
|
||||
line; the ghost hand's pass streak keeps its old classic-only trigger.
|
||||
- The ring holds 200 entries. **Tap the scoreboard** to open the last nine. **Tap the open log** to
|
||||
copy all of it (`copySwingLog`, main.js): a header with build, mode, opponent and style, then one
|
||||
line per entry with its measured fields. It uses the clipboard, with the share sheet as fallback.
|
||||
`render.logGeom` is the one geometry for drawing and hit test.
|
||||
- **The log's first catch: the gold ring was a DISTANCE** (2.7 m ± 0.5). That is right for the
|
||||
~20 m/s rally balls it was calibrated on, and too early for every slow ball steps 1-3 brought in:
|
||||
moonballs, lobs, drops, deep balls braked by their bounce. A gold-ring tap on one missed "30 ms after
|
||||
the window".
|
||||
- `gameplay.ringCue` rolls the ball forward (the real bounce rule, reach, height band and
|
||||
let-it-bounce gate) to the moment it enters the player's contact reach, measured against where
|
||||
the auto-run is CARRYING him (`P.tgt`). Against where he stands, the cue jumped 50-180 ms a frame.
|
||||
- Gold means a finger landing now centres that moment in the swing window (`ringBand` 0.35 of the
|
||||
half-window, so the gold edge is q 0.65). The rings kiss at the sweet moment: a tap at the kiss
|
||||
measured q 1.00 every time.
|
||||
- Gold-tapping bot with a 100 ms lift: 92-98% returned at every style. The distance ring returned
|
||||
75% against THE BRUTE's topspin.
|
||||
- `TUNE.ringTime 0` restores the distance ring for A/B.
|
||||
- Note: contact still fires on the first frame the ball is in reach, which right after a bounce is
|
||||
often 15-25 cm off the grass. A visual half-volley, the old contact model; untouched.
|
||||
|
||||
# OPEN — leftovers, in rough priority order
|
||||
|
||||
Nothing here is broken; these are known gaps and unverified risks.
|
||||
|
||||
Reference in new issue
Block a user