Saddle 3400. A snow col between two rock horns at three thousand four hundred metres, in the last gold twenty minutes of a winter afternoon. A hundred and forty metres below the lip an unbroken cloud deck fills the whole valley — so flat and so total that it reads as ground.
Dug in behind ice-crusted sandbags are four heavy howitzers. There are no crews. The guns work themselves: breeches cycle, trays rise, barrels elevate, recoil cradles rock and settle. The only other things alive on the ridge are the wind and one raven.
Over 104 seconds the battery registers one ranging round through the deck onto a scree fan a kilometre and three quarters west, corrects, and then fires for effect — four guns in a rolling 0.4-second ripple — until the racks empty themselves.
Nothing explodes on the saddle. All the violence is outbound, and what changes is the sky-floor: by the last shot the deck is torn open in six places, orange wells up through the holes and lights the cloud from inside, and shot 16 stands on shot 1's exact camera station over a place that is no longer the same place.
How it is built
A single FilmDirector advances one clock by exactly 1/24 s per rendered frame and
hands film seconds to five slices in order. Nothing reads wall time, so the same frame
index always produces the same picture and the film can be run twice and recorded once.
| Slice | What it owns |
|---|---|
ffe.weld | the joint: the ordnance hole schedule driving the ridge deck, and the two lamps that light the valley |
ffe.ridge | the massif as one height function in 51 patches, the 76-tile cloud deck, the pour over the west lip, revetments, dump and spotting mast |
ffe.battery | four articulated howitzers, the breech cycle, 1.1 m of recoil, and 69 ballistically solved shell arcs |
ffe.ordnance | 29 GPU emitters — muzzle flash, blast rings, snow ground-wave, gun smoke, steam, embers, soot decals, the deck's six tears and their smoke columns, and the raven |
ffe.cinema | the sun's 11°→4° crossing, atmosphere and height fog, sixteen cutscene set-ups, per-shot DoF, 180° shutter, bounded auto exposure, three LUTs and the sound film |
The cloud deck is a hand-written scattering shader, cutout-blended so a hole is a real
hole and cull: none so it can be seen from underneath. Everything with an "after"
state rides one number, Film.ruin(t), so the whole world changes together.
Running it
local Film = require("ffe.film")
Film.build()
Film.restart() -- 2496 frames, 104.0 s
Film.seek(58) -- park frame-exact on one shot
The film only advances in play mode.
Comments · 0
Open discussion, no rating attached. Ask questions, swap notes, follow threads.