Shape the cone by hand, and give the playground its knobs back
Oliver's tuned numbers become the defaults: beamY 0.95, beamLen 23, beamW0 0.08, beamW1 3.1, beamOriginLift 0.44, beamBorder 0.18. Three knobs earned their keep on the way there. beamLen is the DRAWN length now, not only the kill range. The drawn length was solved every frame so the far end landed on the middle of the ad strip, which made this a control that visibly did nothing. One meaning beats one clever behaviour -- and it pairs with beamY, since a lower plane meets the ads sooner. beamOriginLift replaces beamOriginY: the apex is a lift ABOVE the plane rather than an absolute height, so lowering beamY brings the near end down with it instead of leaving it hanging at chest height with the beam sloping away. beamBorder exposes the edge width, which was hardcoded. And the playground is back, deliberately NOT paused. The first version froze the world so the picture would hold still, and then nothing redrew, so every value changed did nothing -- a still frame you cannot change is worth nothing. The bodies are held still individually and spawning is off instead. Also: a boolean living in TUNE has to be tested with >= 0.5. The panel steps every key by 0.02, so one nudge set beamBand to 0.02 -- still truthy -- and the renderer switched variants under him mid-tune. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ac1d5fbccd
commit
99774ab4be
6 files changed
+125
-62
No files matched your search
+24
@@ -443,6 +443,9 @@ that holds that height all the way out instead of sloping to the ground — that
|
||||
makes the rest possible. Sloping, it lay flat on the grass across the whole far half, so there was
|
||||
nothing for it to cut exactly where the crowd stands.
|
||||
|
||||
- **`beamLen` is the DRAWN length now, not just the kill range.** It used to be solved every frame so
|
||||
the far end landed on the middle of the ad strip, which made it a knob that visibly did nothing.
|
||||
One meaning beats one clever behaviour.
|
||||
- **`TUNE.beamBand` is a live A/B between two looks**, flippable from the T panel on the phone.
|
||||
**1 (default) = the BAND**: drawn the way the ball's aim trajectory is drawn — a path down the lane
|
||||
whose width comes from each point's OWN projection scale, so it narrows into the distance like
|
||||
@@ -494,6 +497,27 @@ nothing for it to cut exactly where the crowd stands.
|
||||
are AIMING rather than only on the shot. Measured on desktop: 0.27 ms/frame with 20 bodies against
|
||||
a 16.7 ms budget.
|
||||
|
||||
## T.laserScene() — the tuning playground
|
||||
|
||||
`T.laserScene()` in the console (or `#laser` on the URL) poses six bodies of different types at known
|
||||
depths with the laser armed and a pull held. `T.laserFire()` shoots it; `T.laserScene()` re-poses.
|
||||
|
||||
**It does NOT pause, and that is the point.** The first version froze the world so the picture would
|
||||
hold still — and then every value changed in the T panel did nothing visible, because nothing
|
||||
redrew. Oliver: "tuning the parameters does not change the view (because it's paused?)". The bodies
|
||||
are held still individually (`v = 0`) and spawning is off instead, so the picture is stable while the
|
||||
render loop keeps running. **Never pose a tuning scene by halting rAF or pausing** — a still frame
|
||||
you cannot change is worth nothing.
|
||||
|
||||
**A boolean living in TUNE must be tested with `>= 0.5`.** The panel renders every TUNE key as a
|
||||
number input stepping by 0.02, so one nudge on `beamBand` set it to 0.02 — still truthy — and the
|
||||
renderer silently switched variants under him mid-tune.
|
||||
|
||||
The laser's shape was tuned this way and these are Oliver's numbers: `beamY` 0.95, `beamLen` 23,
|
||||
`beamW0` 0.08, `beamW1` 3.1, `beamOriginLift` 0.44, `beamBorder` 0.18.
|
||||
**`beamY` and `beamLen` interact** — a lower plane meets the ad strip at a shorter distance, so
|
||||
dropping one wants the other shortened.
|
||||
|
||||
## T.pause(true) — freeze the world, keep drawing
|
||||
|
||||
`T.pause(true)` stops `update()` but keeps `render()` running, so a value changed in devtools shows
|
||||
|
||||
Reference in new issue
Block a user