The aim is a mark on the grass, not a line drawn over the game
The live flick readout was a ring on a ray from the player's feet — a HUD element laid across the court, and read as one: "pretty bare bones... the line must go away, it is distracting". It is a soft cloud on the ground now, in the register the dust and the blood already use: it sits where the ball is being asked to land, grows with the length of the swipe, and warms from pale lime through gold to red as that ask approaches the width no timing can keep in. The threshold stopped being a flip, so too hard is something you watch coming. Three things it took to make it read, kept in the comments so the next pass does not re-learn them: it is sized in METRES off the projection, or it is an eight-pixel smudge at the far corner where it actually lives; it is a stain and not an additive glow, which turned the red end yellow over green grass; and the ramp starts pale rather than green, because green on green showed nothing at all across the whole safe half of the range. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d5a069a90c
commit
1b16b422df
3 files changed
+49
-20
No files matched your search
+17
-4
@@ -524,10 +524,23 @@ depth only and holding your own artillery lane is the point.
|
||||
**THE AIM IS DRAWN WHILE THE THUMB IS STILL MOVING.** Oliver asked to *"visualize the strength of my
|
||||
flick at flick-time"*, and he was asking for the half the placement ring cannot give: the ring is a
|
||||
RECEIPT, it arrives with the ball already gone. `G.swipe` (set by input.js during the drag, cleared
|
||||
on release) draws the same target ring live, plus a RAY from the player's feet — the ring alone sits
|
||||
deep in perspective and 300 ms is not long enough to go looking for it. Cream while the ask is safe,
|
||||
`UI.hot` once the sway crosses that derived threshold: the colour is the answer to "was I too hard".
|
||||
Only inside the window where a release would still BE a flick (`FLICK_MS`/`TUNE.flickMin`, the same
|
||||
on release) marks where the ball is being ASKED to land.
|
||||
|
||||
**It is a cloud, not a diagram.** The first cut was a ring on a ray from the player's feet and it
|
||||
was rejected on sight (*"pretty bare bones... the line from the player to the indicator must go
|
||||
away, it is distracting"*): a line drawn across the court is a HUD element laid over the game.
|
||||
What is there now is a soft stain on the ground in the same procedural register as the dust and the
|
||||
blood — it GROWS with the length of the swipe and it WARMS as that ask approaches the width no
|
||||
timing can keep in. Three things were learned making it read, all of them the hard way:
|
||||
* **metres, not pixels** — sized off `p.s` so perspective shrinks it with distance. A pixel radius
|
||||
looked fine at the baseline and was an 8-px smudge at the far corner, which is where it lives.
|
||||
* **a stain, not a glow** — `globalCompositeOperation = 'lighter'` turned the red end YELLOW over
|
||||
green grass, and the hue is the entire message.
|
||||
* **the ramp is pale lime -> gold -> red, not green -> red** — green on green is invisible, so the
|
||||
obvious ramp showed nothing across the whole safe half of its range. The cool end carries its
|
||||
contrast in LIGHTNESS, which is what makes it read on grass, clay and slab alike.
|
||||
The threshold is not a flip: the colour is already gold before you reach it, so "too hard" is
|
||||
something you watch coming. Only inside the window where a release would still BE a flick (`FLICK_MS`/`TUNE.flickMin`, the same
|
||||
gate `endTouch` uses) — past that the gesture is a run and a target hanging off it would be a lie.
|
||||
Rally modes only (`rallyFeel`); gore's flick free-aims at a body, not at a lane. The placement ring
|
||||
turns `UI.bad` when the shot really is out, so the two rings together ARE the lesson: what you asked
|
||||
|
||||
Reference in new issue
Block a user