feat: cursor-steered headlights light the hero name, plates and world
@@ -15,3 +15,11 @@ Run: `npm run build:preview` then serve `dist` (dev server shows a blank page).
|
||||
- **Known weakness:** the reading panel covers the scene during p 0.1-0.75, so district power-down, packets and offsite are barely visible; relight uses the normal accent so the payoff reads as "back to normal". Audio rain bed skipped. Do not revisit before round 5.
|
||||
- Screenshots: docs/overnight/round1/ (before-* vs p*-1440/390).
|
||||
|
||||
## Round 2: High Beam (hero, road, plates)
|
||||
- **What:** the cursor steers the headlights. Fine-pointer hero name first paints as an outline, a 1.6 s sweep lights it, then a pointer-following halo lights the letters, plate edges and sparks; in the world the road cones yaw, terrain/districts catch the light, a warm SpotLight rakes the truss (high/medium), and a haze cone shows in the gaps between chapters. Click hero/gantry window flashes (rate-limited). Idle 4 s returns to centre. Touch/low tier: slow sway and tap flash only. Reduced motion: no effect, name stays lit.
|
||||
- **Why:** first thing a juror does is move the mouse; the hero had no pointer response and the scene none at all (direction.md signature moment 3, never built). Lives where round 1 said drama should: hero, gaps, panel edges.
|
||||
- **Build:** src/journey/headlight-beam.ts, useHeadlightBeam.ts, scene/world/headlights.ts, styles/headlight.css; beam terms in road, districts, terrain shaders. Initial JS +1.3 KB gz (113.0), 732 tests green.
|
||||
- **Verdict: KEEP with fixes.** Fable found the DOM half dead on delivery (NaN sentinel), fixed it, removed a drop-shadow rectangle artefact, raised the resting level. Frame times unchanged (p95 16.7 ms on hardware GL).
|
||||
- **Known weaknesses:** the outline-to-lit sweep beat is short (~300 ms visible); haze cone slightly flat/white; spark boost barely perceptible.
|
||||
- Screenshots: docs/overnight/round2/.
|
||||
|
||||
|
||||
BIN
docs/overnight/round2/beam-centre.webp
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
docs/overnight/round2/beam-left.webp
Normal file
|
After Width: | Height: | Size: 113 KiB |
BIN
docs/overnight/round2/beam-right.webp
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
docs/overnight/round2/before-fix-dim-name-1440.webp
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
docs/overnight/round2/before-hero-1440.webp
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
docs/overnight/round2/builds-1440.webp
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
docs/overnight/round2/contact-1440.webp
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
docs/overnight/round2/flash.webp
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
docs/overnight/round2/gap-1440.webp
Normal file
|
After Width: | Height: | Size: 118 KiB |
BIN
docs/overnight/round2/gap-right-1440.webp
Normal file
|
After Width: | Height: | Size: 126 KiB |
BIN
docs/overnight/round2/idle-return.webp
Normal file
|
After Width: | Height: | Size: 115 KiB |
BIN
docs/overnight/round2/mobile-390.webp
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
docs/overnight/round2/plate-edge-1440.webp
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
docs/overnight/round2/reduced-motion-1440.webp
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
docs/overnight/round2/road-left.webp
Normal file
|
After Width: | Height: | Size: 115 KiB |
BIN
docs/overnight/round2/road-right.webp
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
docs/overnight/round2/t100-hero.webp
Normal file
|
After Width: | Height: | Size: 108 KiB |
BIN
docs/overnight/round2/t1800-hero.webp
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
docs/overnight/round2/t3500-hero-settled.webp
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
docs/overnight/round2/t800-hero.webp
Normal file
|
After Width: | Height: | Size: 117 KiB |