The camera holds still: the ball-follow lean zeroed on Oliver's verdict
The flattened body curve stays (farK 0.25 — 'really good, helped a ton'); the broadcast lean was 'distracting' and its knobs sit at 0 like the aimCam pair. The plumbing stays for the T panel. PROJECT.md: farK is now a settled feel decision. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e571e46d92
commit
0e01894f4d
3 files changed
+15
-7
No files matched your search
+9
-2
@@ -344,6 +344,12 @@ zombie (now an occasional opponent, `TUNE.racketEvery`, not the every-game fixtu
|
||||
starts flashing brightness. `assets/_sheet_crowd1.png` is the pre-brightening original.
|
||||
|
||||
## Settled feel decisions — do not regress silently
|
||||
- **Far bodies draw off a flattened scale curve; the camera holds still.** `TUNE.farK` 0.25
|
||||
(render.js `farB`): the court projects true, bodies grow toward the far baseline (~20% at the
|
||||
back), anchored so the near player never changes. Oliver: *"new perspective is really good —
|
||||
helped a ton."* The ball-follow lean built alongside it (`farCamY`/`farCamZ`) was vetoed the
|
||||
same day — *"the camera movement is distracting"* — and sits at 0 like the aimCam pair: every
|
||||
camera-motion experiment on this game has now lost to a still camera.
|
||||
- **Two-stage serve**: touch = reticle, drag = aim, release = fire, drag back under `pullMin` =
|
||||
cancel. The pull's DIRECTION picks the lane, its LENGTH is power — deliberately decoupled so a
|
||||
far shambler never costs a longer drag than the screen has.
|
||||
@@ -408,8 +414,9 @@ zombie (now an occasional opponent, `TUNE.racketEvery`, not the every-game fixtu
|
||||
## Session log: the far court, without spending the lens (2026-08-13)
|
||||
|
||||
Oliver: the far-side opponent is barely visible in portrait, and the lens (camZ/camF, already at its
|
||||
measured ceiling — see fitViewport) and world height were the only knobs he knew. Two new ones, both
|
||||
AWAITING HIS PHONE VERDICT — nothing here is settled yet:
|
||||
measured ceiling — see fitViewport) and world height were the only knobs he knew. Two new ones.
|
||||
VERDICT (same day): the scale curve is settled-in (*"really good — helped a ton"*), the lean was
|
||||
vetoed (*"the camera movement is distracting"*) and its knobs sit at 0 — see the settled list:
|
||||
|
||||
- **`TUNE.farK` — bodies draw off a flattened scale curve, the court projects true.** The 16-bit
|
||||
tennis trick: `s' = s·(sNear/s)^farK`, anchored at the player's deepest stance (he is untouched),
|
||||
|
||||
+1
-1
@@ -431,6 +431,6 @@ if (location.hostname !== 'splatter-tennis.wuwi.one') {
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="module" src="src/main.js?v=210"></script>
|
||||
<script type="module" src="src/main.js?v=211"></script>
|
||||
</body>
|
||||
</html>
|
||||
+5
-4
@@ -283,10 +283,11 @@ export const TUNE = {
|
||||
// BALL-FOLLOW LEAN (tennis + match only): while the ball is on the FAR half the camera eases
|
||||
// toward camY+farCamY / camZ+farCamZ — a broadcast-style lean into the deep court. It pivots
|
||||
// about the near player's feet (see fOff in render.js), so his stance and the pull room the
|
||||
// apron math promised never move. Both 0 = the camera holds still. Defaults are deliberately
|
||||
// shy of visible: the phone (not the desktop pane) is where a moving camera gets its verdict.
|
||||
farCamY: 0.35, // m of camera rise while the ball is far (steepens the look-down)
|
||||
farCamZ: -0.6, // m of camera dolly while the ball is far (negative = closer)
|
||||
// apron math promised never move. Both 0 = the camera holds still, which is where Oliver
|
||||
// landed ("the camera movement is distracting") — the same verdict the aimCam pair got. The
|
||||
// flattened body curve above carries the far-court read on its own.
|
||||
farCamY: 0, // m of camera rise while the ball is far (steepens the look-down)
|
||||
farCamZ: 0, // m of camera dolly while the ball is far (negative = closer)
|
||||
backstopZ: -1.8, // z of the far backstop — must sit IN FRONT of the -2 retire line, or balls die before they reach it
|
||||
backstopKeep: 0.55, // pace a ball keeps after the rebound — still lethal, slower
|
||||
backstopPop: 1.8, // m/s of lift off the fence, so the rebound travels back instead of dying at the net posts
|
||||
|
||||
Reference in new issue
Block a user