Drop the dots, and stop handing back the dodge

"what are the dice dots for?" -> "drop them", and "the dodge swipe should not
reset to the middle when firing".

The pips were colourblind redundancy so the mode did not rest on hue alone,
but they were noise to everyone who can separate the colours and they shrank
to nothing on a body at distance — exactly where the channel had to work.
Gone from the bib and the chip. Recorded in PROJECT.md as a known gap rather
than pretended away: if the mode ships, the answer is bibs that differ by
shape at sprite scale, not dots.

The dodge one was never a drill bug. The auto-assist recovered toward HOME.P
including its x, so firing walked you back to the centre line: measured, a
step out to 1.94 m was dragged to 0.77 m over one ball's flight — most of a
dodge, handed back for free, which is the welded-in-place complaint the
sidestep exists to answer arriving slowly instead of all at once. Splatter
recovers in DEPTH ONLY now and holds whatever lane you stepped to. Tennis
keeps the full recovery: recovering to centre is the real sport's footwork
and there is no sidestep there to protect.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
wuwiandClaude Opus 5 committed 2026-08-11 19:17:20 +02:00
1 parent 57357c7865
commit 586e8d4e4b
5 files changed
+49 -42

No files matched your search

+9 -1
View File
@@ -1279,7 +1279,15 @@ export function update(dt) {
const chasing = ball.lastHit === 'O' || (G.mode === 'splatter' && !G.interlude && ball.vz > 0);
// no `slow` here: tapping must not freeze your legs, or anticipating a shot loses it
const rate = TUNE.playerSpeed * TUNE.autoAssist * dt * (chasing ? 1 : 0.55);
const tgt = chasing ? intercept('P') : HOME.P; // run to the ball, then recover home
// Run to the ball — then recover in DEPTH ONLY, holding whatever lane you are standing in.
// Recovering to HOME.P's x undid the sidestep: measured, a step to 1.94 m was dragged back to
// 0.77 m over one ball's flight, so firing gave back most of a dodge you had spent a cooldown
// on. That is the "welded in place" complaint the sidestep exists to answer, arriving slowly
// instead of all at once. TENNIS keeps the full recovery — recovering to centre is the real
// sport's footwork and there is no sidestep there to protect.
const tgt = chasing ? intercept('P')
: G.mode === 'splatter' ? { x: P.x, z: HOME.P.z }
: HOME.P;
const dx = tgt.x - P.x, dz = tgt.z - P.z, d = Math.hypot(dx, dz);
if (d > 0.35) { // deadzone: stand ready near the spot instead of dithering over it
P.x += dx / d * Math.min(rate, d);