Time flicks from touch-down, log the opponent's shots, save early half-volleys

From Oliver's first swing log (cup vs the Brute): 13 of 22 hits were
perfect, 9 badly early or late — mostly forward-right flicks — and the
weak balls became seven "passed you". Every hit was a flick, and flicks
still swung only at the flickMin crossing while the timed ring says "touch
now": they are now timed from touch-down too (capped at flickLead 0.1 s).

The log gains its other half: a THEM line per opponent shot (kind, pace,
where it lands relative to you, coming in) and "never swung" judged per
incoming ball instead of once a point. And an early swing on a low ball
digs it out as a capped half-volley instead of whiffing. v366.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5.5 committed 2026-10-14 11:48:51 +02:00
1 parent d110e12321
commit 5bbde720ad
7 files changed
+66 -9

No files matched your search

+25
View File
@@ -5420,6 +5420,31 @@ Oliver: *"bitte bau nochmal die Funktion ein die protokolliert warum ich einen 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.
### Oliver's first swing log (v365, cup vs THE BRUTE) and what it changed (2026-10-14, v366)
**His question: "am I just bad or is something off".** Read off the log:
- 22 hits: 13 at q = 1, 9 under 0.5. Six of the nine bad ones were "deep right" (the forward-right
flick), which failed 6 of its 9 tries; the left flick failed 3 of 10. The bad hits split between
EARLY (the ball met at the edge of reach, d 1.55-1.73) and LATE (the ball already on top of him,
d 0.55-0.73). It is timing, with no single offset.
- Weak balls are what the Brute (power, league-5 quality) punishes. Seven LOST "passed you", and
several of them follow a weak hit of his within a second.
- Every hit said `tap 0ms`: he flicks everything. Hypothesis to check in the next log: the gore
slingshot habit. A pull-back before the forward flick crosses `flickMin` DOWNWARD, which fires the
swing early, and the live aim turns to "deep right" by contact.
**Changes:**
- **Flicks are timed from touch-down too** (`keyPressed(code, lead, flick)`; input.js passes the
crossing's age, capped at `flickLead` 0.1 s so a slow drag keeps a window). The timed ring means
"touch now" for both gestures. The log says `flick 46ms` / `tap 120ms`. Verified with real touch
events.
- **The log's missing half:** a THEM line per opponent shot (kind, spin, q, pace, where it lands
relative to the player, OUT, "coming in"), and `whiffed it` for a CPU flub. "Never swung" is now judged
per incoming ball: `G.swung` and `G.rallyNear` reset at the opponent's strike. It used to be judged
once a point, so none of his "passed you" lines could say whether he swung or how close the ball came.
- **An early swing on a low skidding ball no longer whiffs.** The let-it-bounce gate waits only while
the bounce will land inside the swing window. Otherwise it digs the ball out as a half-volley, capped
below the tape. His 48.14 s MISS was exactly this.
# OPEN — leftovers, in rough priority order
Nothing here is broken; these are known gaps and unverified risks.