The aim cloud goes quiet, and a mistimed flick falls short of the line
Hidden behind TUNE.aimCloud rather than deleted: the reading it gives — how much width the swipe is buying, before the ball leaves — is the only teacher the gesture has, and the panel can flip it back live for the next look at it. And "a little harder to hit the out" is a number: flickReach 0.62 -> 0.52, which halves the worst-case rate from about 15% to about 7%, with the test tightened so it cannot drift back. The shape is untouched — a perfect flick still never sails, a badly timed full swipe still can — but a mistimed one now lands nearer the middle than the line, which is the only half of that trade a player who cannot see his own timing can do anything about. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1b16b422df
commit
7ff8671a22
5 files changed
+30
-7
No files matched your search
+14
-4
@@ -69,12 +69,17 @@ export const TUNE = {
|
||||
flickWidth: 3.95, // m off centre a PERFECTLY timed flick reaches. The singles line is 4.115,
|
||||
// so this is the corner with 17 cm to spare. Raising it past the line does
|
||||
// not make the flick punchier, it makes a perfect one go out.
|
||||
flickReach: 0.62, // how much of an aimed shot's width a MISTIMED flick gets (1 = all of it).
|
||||
flickReach: 0.52, // how much of an aimed shot's width a MISTIMED flick gets (1 = all of it).
|
||||
// 0.42 made going out IMPOSSIBLE, which fixed the 8-in-10 bug and then
|
||||
// overshot it: "flicking: too easy. i must be able to play out." At 0.62
|
||||
// a mistimed flick CAN sail (~15% of the time at quality 0, on the worst
|
||||
// half of the scatter) and a perfectly timed one never can — the risk is
|
||||
// back and it is timing, not a coin toss, that decides it.
|
||||
// a mistimed flick sailed ~15% of the time at quality 0 and a perfectly
|
||||
// timed one never could — the risk was back, and timing rather than a
|
||||
// coin toss decided it. 0.52 keeps that shape and halves the worst-case
|
||||
// rate to ~7% ("make it a little harder to hit the out"): a badly timed
|
||||
// flick now lands NEARER THE MIDDLE rather than nearer the line, which
|
||||
// is the only half of the trade a player who cannot see his own timing
|
||||
// can do anything about. THIS is the out dial — aimError is shared with
|
||||
// the opponent's returns and with every aimed shot in the gore modes.
|
||||
// Reach x quality must stay under the sideline once aimError is added on
|
||||
// top, or the flick goes out — which is exactly the bug this fixed:
|
||||
// 3.3 * 0.45 + 2.4 = 3.89 against a 4.11 m line. Raise it and the flick
|
||||
@@ -86,6 +91,11 @@ export const TUNE = {
|
||||
// of agency, the player can't really tell if there was skill or luck"). The serve already read its
|
||||
// flick as a continuous strength; the rally does now too, on the same shape of numbers.
|
||||
flickMin: 28, // px before a drag counts as a flick at all — input.js's own threshold
|
||||
aimCloud: 0, // 1 draws the live aim cloud under the moving thumb (render's G.swipe
|
||||
// block); 0 hides it. OFF after its first playtest — "hide the indicator
|
||||
// for now" — kept as a switch rather than deleted because the reading it
|
||||
// gives (how much width the swipe is buying, before the ball leaves) is
|
||||
// the only teacher the gesture has, and the panel can flip it back live.
|
||||
flickFull: 130, // ...and px of travel that buys the FULL width. About a third of a phone
|
||||
// screen: a short swipe is a safe half-court ball, and only a committed
|
||||
// one goes hunting the line, which is what makes going OUT a chosen risk.
|
||||
|
||||
Reference in new issue
Block a user