shots
The framing of all fourteen shots of DEADLIGHT, as data. `FilmDirector` requires this module every load, merges each entry with its duration out of `Film.SHOTS`, and evaluates it through `@builtin::modules.cutscene.path`.
deadlight.cut.shots
The framing of all fourteen shots of DEADLIGHT, as data. FilmDirector
requires this module every load, merges each entry with its duration out of
Film.SHOTS, and evaluates it through @builtin::modules.cutscene.path.
Durations are not here — they live in deadlight.film and nowhere else.
The fourteen lenses
No two shots repeat a composition. The lens, the camera height and the distance to the subject all move:
| # | fov | height | subject distance | move |
|---|---|---|---|---|
| 1 | 84 | -4 m under the surface | 11 m | rises 1.6 m, tipped 27 deg up |
| 2 | 62 | -30 m | 18 -> 39 m | locked off |
| 3 | 70 | on the hull | 18 m ahead | locked to the vehicle |
| 4 | 46 | mid-water | 30 m | dead static |
| 5 | 66 | 1.5 m off the silt | 18 m | 40 m run-in, linear, offset 4.5 m to starboard of the vehicle's track |
| 6 | 58 | 3.5 -> 5.5 m | 36 -> 56 m | retreats while the aim climbs |
| 7 | 24 | 11 m | 11.0 -> 10.0 m | drifts 1 m closer |
| 8 | 52 | 6 -> 30 m | 14 -> 29 m | a 24 m crane, tilting onto the deck |
| 9 | 84 | 40 cm off the deck | 18 m ahead | 30 m track, linear |
| 10 | 26 | 14 m | 6.0 -> 5.3 m | creeps 70 cm |
| 11 | 50 | 36 -> 34 m | 43 m | drifts 22 m aft, down the superstructure's length |
| 12 | 70 | 32 cm off the silt | 5.4 -> 3.3 m | creeps 3 m |
| 13 | 38 | 92 -> 56 cm | 2.6 -> 2.0 m | descends |
| 14 | 66 -> 50 | 3.5 m | 18 -> 78 m | holds the vehicle as it climbs |
Anchors
Path.eval reads an entity anchor's .position, and a container spawned at
the origin reports the origin however far away its geometry is. Every anchor
here is therefore an explicit world position out of Film.WORLD, except the
one that genuinely moves and is one body: Nautile, used by shots 2, 3 and
14. While the sub slice has not spawned it, FilmDirector substitutes
Film.subPoseAt(t), so these shots frame correctly either way.
What this module also does
It requires deadlight.cut.rig, guarded. That is the cut slice's one
guaranteed entry point into a scene whose build.luau belongs to the plan
agent: the rig registers the grade and the mix with the film clock and builds
what it needs lazily.
Numbers the other slices are framed against
These are the positions the shots aim at. A slice that puts its geometry somewhere else should say so, because the lens is long enough at three of them that a metre is the whole frame.
| what | where | which shot |
|---|---|---|
| the port anchor's fluke | (-6.9, 9.9, 5.8) — its geometry, not the PortAnchor container's origin at (-13.2, 12, 6) | 7, on a 24 deg lens 10 m out |
| the forecastle deck | y = 20, running z = 6 .. 46 for the crane and the rail run | 8, 9 |
| the hero deadlight | (-14.0, 14.0, 40.0) on the port shell — one porthole, cover half open, glass gone | 10, on a 26 deg lens 6 m out |
| the bridge front | z = 96 .. 158, y = 19.5 .. 36.5 | 11 |
| the porcelain cup | (0.59, 0.14, 262.2) | 12, 13 |
| the hull break | z = 189 | 14 |
An anchor read off a container is the trap here: Bow.position is (0, 12, 2)
while its geometry spans z = -5 .. 189, and PortAnchor.position is 6.5 m to
port of the fluke it names. Every anchor in this module is therefore a world
position taken from hierarchyBounds, not from a .position.
Scoped to this part · feeds back into the world's score.