Let the player take the net and come back, and smash a lob he gets under
Oliver: "Steuerung ans Netz gehen", option (1), and "einen Lob vom Gegner als Volley annehmen soll derb schmettern". - A long up-flick (90 px or more) is the attack: the deep ball, and he follows it in. A long down-flick is the lob, and he goes back behind it. Short flicks keep the deep ball / the drop and leave him where he is. Length only, never context. - The net costs him what it costs the CPU: he split-steps (netReact) before reading the pass, and a CPU facing a net man passes at the line. Without both, the attacker won 78-95% of his net points. - The smash: a ball taken out of the air at 1.9-2.5 m is struck harder and to the open court, read late by the opponent, and pops "SMASH!". It wins ~80% of its points. - Lobbed at the net, he decides once whether he can get under it. If he can, he smashes. If not, he runs it down and only blocks it back, even if he meets it in the air. Re-deciding every frame smashed every lob. Measured at level 26: the base ladder is unchanged. Attacking pays against pushers and touch players and costs against big hitters, slicers and rushers. Three new tests; v374. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4406aeafdb
commit
599d5b0506
8 files changed
+201
-17
No files matched your search
+52
-1
@@ -5627,6 +5627,55 @@ Oliver: *"b"* (options above). Two halves, each useless alone (both were measure
|
||||
the air legitimately), and synthetic returns in the suite now carry `pow: 1` (a stale `pow` from the
|
||||
previous test read as a sitter).
|
||||
|
||||
### The player's way to the net and back, and the SMASH (2026-10-14, v374)
|
||||
Oliver: *"Steuerung ans Netz gehen, wie machen wir das?"* Offered: (1) a long up-flick is the attack and he
|
||||
follows it in, (2) a separate up-swipe while his own ball flies, (3) automatic after a strong ball (breaks
|
||||
the one-meaning rule). He picked **(1)**, asked *"wie kommt man wieder zurück?"*, and added *"wenn man einen
|
||||
Lob vom Gegner als Volley annimmt, soll man derb schmettern"*.
|
||||
- **The gestures, by LENGTH only** (never context — the 2026-08-22 lob rule):
|
||||
- up, short (< `attackMin` 90 px): the deep ball, you stay;
|
||||
- up, long: **the attack**, the deep ball and you follow it in (`ball.approach = 'P'`), even onto a
|
||||
man at the net — it is his call;
|
||||
- down, short: the drop, you stay (a drop volley keeps the net);
|
||||
- down, long: **the lob, and you go back behind it** (`ball.retreat`, `rallyHome`). That is the way back.
|
||||
It is also automatic when you are lobbed and cannot get under it, and when the point ends.
|
||||
Keys: up = attack, down = lob, as before. Both of your own runs go at full pace, and while the attack
|
||||
flies `P.rushing` makes the reply a net man's plan from wherever he has got to (the CPU's rule).
|
||||
- **The net has a price, as the CPU's does.**
|
||||
- At the net (or rushing) the player split-steps for `netReact` (0.22 s, `ball.heels`) before he reads
|
||||
the pass.
|
||||
- The CPU, facing a net man and not lobbing, plays the PASS at the line away from him (`aim.pass`,
|
||||
`punishX`, still bounded by the rung's width).
|
||||
- Measured without both: an attacker won 78-95% of his net points. His volley reach is ~2.5 m and he
|
||||
read instantly.
|
||||
- **THE SMASH** (rally modes, player):
|
||||
- A ball taken OUT OF THE AIR at `smashMinY` 1.9 m or higher, up to `smashMaxY` 2.5 (above
|
||||
`CONTACT.maxY` 2.3, but under the ~2.8 m a CPU lob clears a net man by).
|
||||
- Extra pace `smashPace` 0.8 × q on top of the forward flick's. Aimed at the line (`punishX`) on the
|
||||
flicked side, else away from the body. The opponent reads it for `smashRead` 0.3 s. It pops "SMASH!",
|
||||
and the log says `HIT q=1 SMASH`.
|
||||
- Aimed deep down the middle (the first cut), it came back to the baseliner and won ~40%. At the line it
|
||||
wins ~80%. The ring shows it (`ringCue`'s volley band is the smash band).
|
||||
- **Under the lob, or not — DECIDED ONCE** (`plan.over`, latched with the plan). When the player at the net
|
||||
is lobbed, `intercept` looks for the first point the lob comes down into the smash band that he reaches
|
||||
at `smashRun` 0.25 of his legs. Found: he goes there and smashes. Not found: he turns and runs it down,
|
||||
and whatever he meets on that run (in the air included) is a capped defensive ball, not a smash.
|
||||
- Re-asked every frame, his backpedal brought the overhead into reach on the way, and every lob was
|
||||
smashed.
|
||||
- Measured (attacker, rungs 7/14/18, 3 seeds): smashRun 0.35 → 131 smashes for 141 lobs; 0.25 → 62 for
|
||||
130, won 82%; 0.18 → 49.
|
||||
- **Measured** (Climb, level 26, σ60, 8 seeds; `ATTACK=0.3` = the bot plays 30% of its baseline balls as
|
||||
the attack): the base ladder is unchanged within the noise. Attacking is a real choice:
|
||||
- better against the pushers and touch players (Steward 49 → 60, Mascot 42 → 49, the bottom rungs);
|
||||
- worse against the big hitters, slicers and rushers (Roller 66 → 57, Seller 43 → 37, Club Pro 53 → 47);
|
||||
- level against the Champion (33 / 28).
|
||||
Points get short (4-6 shots).
|
||||
- Tests (170, nine seeds): the long up-flick follows the ball in and the short one stays; the long
|
||||
down-flick from the net goes back and a drop volley holds the net; a short lob is smashed hard into the
|
||||
open court and a deep lob is not (blocked back if reached).
|
||||
- `tools/rally-sim.mjs`: `ATTACK=0.3`, `NETX=1` (attacks, lobs faced at the net, smashes, smashes won), and
|
||||
`T_<knob>=<value>` sets any TUNE dial for a sweep.
|
||||
|
||||
# OPEN — leftovers, in rough priority order
|
||||
|
||||
Nothing here is broken; these are known gaps and unverified risks.
|
||||
@@ -5637,7 +5686,9 @@ Nothing here is broken; these are known gaps and unverified risks.
|
||||
opponent styles (v364) followed; the swing-log fixes ran to v371. Step 4: v372 measured why the ladder
|
||||
could not climb (points decided by the player's whiffs); Oliver picked (b), shipped v373 (the follow-
|
||||
through, put-aways, on his heels). Awaiting the phone verdict on v373, especially the half-second
|
||||
flat-footed read and the net rushers. See "Step 4 (b)" above. Fallback tag `rally-baseline-v360`.
|
||||
flat-footed read and the net rushers. See "Step 4 (b)" above.
|
||||
v374 adds the player's own net game: long up-flick = attack and follow in, long down-flick = lob and
|
||||
go back, and the SMASH. See "The player's way to the net and back" above. Fallback tag `rally-baseline-v360`.
|
||||
|
||||
1. **`RES` 4 is unverified on a real phone under load.** It nearly doubled the fill rate (810 -> 1080
|
||||
device px across). Oliver has not reported stutter, but he also has not played a late horde since.
|
||||
|
||||
Reference in new issue
Block a user