diff --git a/docs/review/device-qa/README.md b/docs/review/device-qa/README.md index 2aede3f..a334812 100644 --- a/docs/review/device-qa/README.md +++ b/docs/review/device-qa/README.md @@ -216,5 +216,15 @@ Each note records one fact about bytes or draw calls already on main. None of th | [terminal-chrome-2026-11-04.md](terminal-chrome-2026-11-04.md) | The scrim, the rows, and the accolade | | [scene-frame-2026-11-04.md](scene-frame-2026-11-04.md) | The scene colour, and aspect fit | | [mount-solids-2026-11-04.md](mount-solids-2026-11-04.md) | A mount is omitted from the solid draw | +| [camera-reticle-2026-11-04.md](camera-reticle-2026-11-04.md) | The corners when detection leaves hidden | +| [exposure-brackets-2026-11-04.md](exposure-brackets-2026-11-04.md) | The screen corners for tracked, hunted, or lockdown | +| [damage-impact-2026-11-04.md](damage-impact-2026-11-04.md) | The ring or the arc, and the two-frame circle | +| [enemy-spark-2026-11-04.md](enemy-spark-2026-11-04.md) | The reduced circle, and the traveling squares | +| [enemy-burst-2026-11-04.md](enemy-burst-2026-11-04.md) | The debris squares, and the short reduced reach | +| [step-echo-2026-11-04.md](step-echo-2026-11-04.md) | The silhouette echo every three frames | +| [ricochet-trace-2026-11-04.md](ricochet-trace-2026-11-04.md) | The dashed pair, and the impact marks | +| [lockdown-frame-2026-11-04.md](lockdown-frame-2026-11-04.md) | The edge bars, and the broken ring | +| [camera-shatter-2026-11-04.md](camera-shatter-2026-11-04.md) | The crack, the shards, and the sparks | +| [blackout-card-2026-11-04.md](blackout-card-2026-11-04.md) | The title, the dim, and the field cascade | Next session: follow [retest-checklist.md](retest-checklist.md) (D-105 allows device checks on any build). diff --git a/docs/review/device-qa/blackout-card-2026-11-04.md b/docs/review/device-qa/blackout-card-2026-11-04.md new file mode 100644 index 0000000..10b6db6 --- /dev/null +++ b/docs/review/device-qa/blackout-card-2026-11-04.md @@ -0,0 +1,15 @@ +# Blackout card + +Read 2026-11-04 from `VFXRenderer.blackout` on `e4ff026`. No camera count was changed. + +The HUD line stays in [hud-bindings-2026-11-04.md](hud-bindings-2026-11-04.md). The music drop stays in [mix-and-blackout-2026-11-03.md](mix-and-blackout-2026-11-03.md). The display polygon stays in [camera-field-polygon-2026-11-04.md](camera-field-polygon-2026-11-04.md). A full-screen white flash stays forbidden in [hit-stop-2026-11-04.md](hit-stop-2026-11-04.md). + +The title is the presentation label. The projector sets that label to `NETWORK BLACKOUT`. It is Menlo Bold, size 34, red 0.96, green 0.96, blue 0.96, centred, at y 40, on the screen effect layer. + +Reduced motion or reduced flash draws a banner 420 by 52 behind that title. The banner fill is white 0.05 at alpha 0.85. Its stroke is the title colour at line width 1. No dim is added. + +Otherwise a black sprite, 1.2 times the visible width and height, fades to alpha 0.5 over 0.3 of the lifetime, holds for 0.45 of the lifetime, and returns to 0 over 0.25 of the lifetime. The title fades in and scales from 1.25 to 1 over 0.12 seconds, waits 0.6 of the lifetime, and fades out over 0.25 of the lifetime. + +Each cascade step whose camera is still in the snapshot draws `conePath` from that camera's range, heading, and field angle, at the camera's point. The fill is red 0.9, green 0.7, blue 0.1, alpha 0.16. The stroke is red 0.95, green 0.75, blue 0.15, alpha 0.7, at line width 1.5. The cameras are the unique ids, sorted by raw id. The wait, in milliseconds, is the lifetime in milliseconds times the index, divided by that count. The field then fades to 0 over 0.06 seconds. The first wait is 0. + +This does not change the camera count. diff --git a/docs/review/device-qa/camera-reticle-2026-11-04.md b/docs/review/device-qa/camera-reticle-2026-11-04.md new file mode 100644 index 0000000..6db0a35 --- /dev/null +++ b/docs/review/device-qa/camera-reticle-2026-11-04.md @@ -0,0 +1,11 @@ +# Camera reticle + +Read 2026-11-04 from `VFXRenderer.acquireReticle` on `e4ff026`. No detection band was changed. + +The pool and the frame lifetime stay in [vfx-pool-2026-11-04.md](vfx-pool-2026-11-04.md). The effect layers stay in [world-layer-order-2026-11-03.md](world-layer-order-2026-11-03.md). Detection bands stay in [exposure-bands-2026-11-03.md](exposure-bands-2026-11-03.md). + +The projector emits `cameraAcquire` when a detection-state event moves from hidden to observed. The reticle is drawn at the player, on the world effect layer. It is four corners of a 56 by 56 square, each arm 12, in red 0.95, green 0.78, blue 0.20, alpha 0.95, at line width 2. + +Reduced motion or reduced flash holds the reticle at alpha 0.9, then sets alpha 0.4 at 0.6 of the presentation lifetime. Otherwise the reticle scales from 1.6 to 1 over 0.7 of that lifetime, and a bar 52 by 1.5, in that colour at alpha 0.6, travels from y 26 to y −26 over the lifetime. + +This does not change a detection band. diff --git a/docs/review/device-qa/camera-shatter-2026-11-04.md b/docs/review/device-qa/camera-shatter-2026-11-04.md new file mode 100644 index 0000000..e592103 --- /dev/null +++ b/docs/review/device-qa/camera-shatter-2026-11-04.md @@ -0,0 +1,11 @@ +# Camera shatter + +Read 2026-11-04 from `VFXRenderer.cameraShatter` on `e4ff026`. No camera integrity was changed. + +The destruction record stays in [camera-destruction-record-2026-11-04.md](camera-destruction-record-2026-11-04.md). The angle step stays in [camera-follow-2026-11-03.md](camera-follow-2026-11-03.md). + +`cameraDestroyed` is drawn at the camera, or at the player when that camera has no known position. Reduced motion or reduced flash draws a crack through (−10, 9), (−2, 1), (−5, −4), and (6, −11), plus a branch from (−2, 1) to (9, 6). The stroke is red 0.70, green 0.88, blue 0.98, at line width 2. A bar 34 by 3, red 0.9, green 0.7, blue 0.1, alpha 0.8, is rotated by −π/5. + +Otherwise a broken ring of radius 12, 5 segments, in the crack colour, line width 3, scales to 3.4 and fades over the lifetime. The caps are round. Each segment draws 0.62 of its share of the circle. Six triangles, filled with that colour and unstroked, travel 46 along the angle step plus 0.4, spin one full turn, and fade over the second half. Each of the variant's particles is a 2.5 square, red 1, green 0.80, blue 0.35. Its reach is 40 plus `(index % 3) * 14`, over 0.8 of the lifetime. + +This does not change a camera's integrity. diff --git a/docs/review/device-qa/damage-impact-2026-11-04.md b/docs/review/device-qa/damage-impact-2026-11-04.md new file mode 100644 index 0000000..75b099b --- /dev/null +++ b/docs/review/device-qa/damage-impact-2026-11-04.md @@ -0,0 +1,13 @@ +# Damage impact + +Read 2026-11-04 from `VFXRenderer.impactArc` on `e4ff026`. No damage number was changed. + +The same-source skip stays in [hit-stop-2026-11-04.md](hit-stop-2026-11-04.md). One world unit stays in [q8-scale-2026-11-04.md](q8-scale-2026-11-04.md). The shot mark stays in [combat-feedback-marks-2026-11-04.md](combat-feedback-marks-2026-11-04.md). + +The impact point is the evidence point named `impact`, raw divided by the Q8 scale, or the player when that point is absent. The origin is the evidence point named `source`, on the same scale. An origin is dropped when the contributor list is present and its count is not 1, and when the origin equals the impact. + +With no origin the path is a circle of diameter 48, and the node is named `damage-impact-ring`. With an origin the path is an arc of radius 24, from the direction toward that origin minus 0.7 to the same direction plus 0.7, and the node is named `damage-impact-direction`. The stroke is red 0.95, green 0.36, blue 0.28, line width 4, with round caps. It fades over the second half of the presentation lifetime. + +Reduced motion or reduced flash draws that stroke only. Otherwise a circle of radius 18, white 0.96 at alpha 0.9, line width 3, is removed after `2 / 60` seconds. Each of the variant's particles is a 3 by 3 square of the stroke colour and travels 14 along its angle. With no origin that angle is the index times a full turn, divided by the particle count. With an origin the index is shifted so the set is centred, and the angle is the origin direction plus that shift times 0.5. + +This does not change a damage number. diff --git a/docs/review/device-qa/enemy-burst-2026-11-04.md b/docs/review/device-qa/enemy-burst-2026-11-04.md new file mode 100644 index 0000000..c6ca944 --- /dev/null +++ b/docs/review/device-qa/enemy-burst-2026-11-04.md @@ -0,0 +1,9 @@ +# Enemy burst + +Read 2026-11-04 from `VFXRenderer.burst` on `e4ff026`. No defeat rule was changed. + +The defeat clip stays in [reaction-clips-2026-11-04.md](reaction-clips-2026-11-04.md). The angle step stays in [camera-follow-2026-11-03.md](camera-follow-2026-11-03.md). + +`enemyDefeat` is drawn at the source actor, or at the player when that actor has no known position. Each of the variant's particles is a square of white 0.70 at alpha 0.9. Reduced motion or reduced flash uses size 5 and a reach of 8. Otherwise the size is 4 and the reach is 34. The direction is the shake note's angle step times the index. The square travels that reach and fades over the presentation lifetime. + +This does not change a defeat rule. diff --git a/docs/review/device-qa/enemy-spark-2026-11-04.md b/docs/review/device-qa/enemy-spark-2026-11-04.md new file mode 100644 index 0000000..e88f6d5 --- /dev/null +++ b/docs/review/device-qa/enemy-spark-2026-11-04.md @@ -0,0 +1,11 @@ +# Enemy spark + +Read 2026-11-04 from `VFXRenderer.spark` on `e4ff026`. No hit amount was changed. + +The frame lifetime stays in [vfx-pool-2026-11-04.md](vfx-pool-2026-11-04.md). The angle step stays in [camera-follow-2026-11-03.md](camera-follow-2026-11-03.md). + +`enemyHit` is drawn at the source actor, or at the player when that actor has no known position. Reduced motion or reduced flash draws one circle of radius 20, white 0.96 at alpha 0.9, line width 2. + +Otherwise each of the variant's particles is a 3 by 3 square of that colour. Its direction is the shake note's angle step times the index, plus the point's x times 0.01. It travels 16 along that direction and fades over the presentation lifetime. + +This does not change a hit amount. diff --git a/docs/review/device-qa/exposure-brackets-2026-11-04.md b/docs/review/device-qa/exposure-brackets-2026-11-04.md new file mode 100644 index 0000000..e139bda --- /dev/null +++ b/docs/review/device-qa/exposure-brackets-2026-11-04.md @@ -0,0 +1,11 @@ +# Exposure brackets + +Read 2026-11-04 from `VFXRenderer.edgeBrackets` on `e4ff026`. No threshold was changed. + +The notches stay in [hud-bindings-2026-11-04.md](hud-bindings-2026-11-04.md). The patterns stay in [exposure-pattern-2026-11-04.md](exposure-pattern-2026-11-04.md). The visible size stays in [camera-follow-2026-11-03.md](camera-follow-2026-11-03.md). The frame lifetime stays in [vfx-pool-2026-11-04.md](vfx-pool-2026-11-04.md). + +The projector emits `exposureThreshold` when a detection-state event's after value is tracked, hunted, or lockdown. The brackets sit on the screen effect layer. Each side is the visible size minus 24. Each arm is 34. The stroke is red 0.98, green 0.62, blue 0.18, alpha 0.95, at line width 3. + +Reduced motion or reduced flash holds alpha at 1, then sets alpha 0.35 at half the presentation lifetime. Otherwise alpha starts at 0.25, rises to 1 over 0.35 of the lifetime, then falls to 0 over 0.65 of the lifetime. + +This does not change a threshold. diff --git a/docs/review/device-qa/lockdown-frame-2026-11-04.md b/docs/review/device-qa/lockdown-frame-2026-11-04.md new file mode 100644 index 0000000..29c37d4 --- /dev/null +++ b/docs/review/device-qa/lockdown-frame-2026-11-04.md @@ -0,0 +1,11 @@ +# Lockdown frame + +Read 2026-11-04 from `VFXRenderer.lockdownPulse` on `e4ff026`. No tint was changed. + +The world tint stays in [lockdown-tint-2026-11-04.md](lockdown-tint-2026-11-04.md). The visible size stays in [camera-follow-2026-11-03.md](camera-follow-2026-11-03.md). The effect layers stay in [world-layer-order-2026-11-03.md](world-layer-order-2026-11-03.md). + +Four bars of thickness 6 cover the edges of the visible frame, on the screen effect layer. The fill is red 0.85, green 0.20, blue 0.18, alpha 0.55, and the stroke is clear. + +Reduced motion or reduced flash holds those bars at alpha 1. Otherwise they start at alpha 0 and fade in over 0.3 of the presentation lifetime. A broken ring at the player, on the world effect layer, uses the same colour, radius 20, 6 segments, and line width 4. The caps are round. Each segment draws 0.62 of its share of the circle. The ring scales to 12 and fades out over the lifetime. + +This does not change the tint. diff --git a/docs/review/device-qa/ricochet-trace-2026-11-04.md b/docs/review/device-qa/ricochet-trace-2026-11-04.md new file mode 100644 index 0000000..d8ef24e --- /dev/null +++ b/docs/review/device-qa/ricochet-trace-2026-11-04.md @@ -0,0 +1,13 @@ +# Ricochet trace + +Read 2026-11-04 from `VFXRenderer.ricochetTrace` on `e4ff026`. No continuation rule was changed. + +Who continues stays in [ricochet-continuation-2026-11-04.md](ricochet-continuation-2026-11-04.md). One world unit stays in [q8-scale-2026-11-04.md](q8-scale-2026-11-04.md). + +The projector skips the `ricochet` recipe on the event walk. It emits one presentation when a projectile has exactly two hits on the tick, the first kind `civicPulse` and the second kind `ricochet`, the same projectile id, and two different targets. The trace points are those two impact points, the civic-pulse impact and then the ricochet impact, raw divided by the Q8 scale. + +When reduced motion and reduced flash are both off, and there are at least two points, the path is those points dashed with lengths 8 and 6. The stroke is white 0.92 at alpha 0.85, line width 2, and it fades over the presentation lifetime. + +Each point, up to the variant's particle count and at least one, draws an X from (−4, −4) to (4, 4) and from (−4, 4) to (4, −4), in that same stroke. When the motion is not reduced, marker `i` waits `i * 0.03` seconds and then fades over the lifetime. + +This does not change a continuation. diff --git a/docs/review/device-qa/step-echo-2026-11-04.md b/docs/review/device-qa/step-echo-2026-11-04.md new file mode 100644 index 0000000..5dc1936 --- /dev/null +++ b/docs/review/device-qa/step-echo-2026-11-04.md @@ -0,0 +1,11 @@ +# Step echo + +Read 2026-11-04 from `VFXRenderer.advanceTrails` on `e4ff026`. No dodge length was changed. + +The dodge window stays in [player-movement-2026-11-04.md](player-movement-2026-11-04.md). The blockout contour stays in [actor-silhouettes-2026-11-04.md](actor-silhouettes-2026-11-04.md). The best-ghost fade stays in [ghost-replay-2026-11-04.md](ghost-replay-2026-11-04.md). + +`ghostStep` adds an empty node on the world effect layer. Its trail count starts at the variant's particle count, and at least 1. An echo is considered every 3 unfrozen frames. + +The echo is the player's silhouette at the player's current point. The stroke is red 0.55, green 0.85, blue 0.95, alpha 0.7, at line width 1.5. Reduced motion or reduced flash, read on that frame, draws one echo with a clear fill and then stops the trail. Otherwise the fill is that colour at alpha 0.18, the echo fades over 0.25 seconds, and the remaining count drops by 1. + +This does not change a dodge length.