/fly — Creative-direction gap analysis (post polish wave 2)
Companion to fly-cinematic-creative-direction.md and the technical fly-cinematic-gap-analysis.md. Asks the same question the technical gap analysis asks — what does the current /fly do well, what does it miss — but through the director's-eye lens, not the renderer's.
Score model: ★★★ already present and good · ★★ present but compromised · ★ partial / accidental · ✗ absent.
Section-by-section scoring
§1 Camera angle vocabulary
| Angle | Score | Notes |
|---|---|---|
| Three-quarter | ★★★ | Default cinematic framing — already the bread and butter at flyby. |
| Eye-level | ★★ | Cruise framing is roughly eye-level to the spacecraft. Honest, slightly bland. |
| Over-the-shoulder | ★ | Achieved accidentally when the spacecraft sprite/model occludes the body limb. Not framed deliberately as a Cassini-antenna-foreground composition. |
| Low-angle / worm's-eye | ✗ | Never used. The Endurance-from-below grammar would slot into a launch beat. |
| High-angle | ✗ | Never used. Could anchor the "we are small" reveal at outer-system departures. |
| Bird's eye / top-down | ★★★ | The 2D view IS top-down. Used for navigation, not emotion. Acceptable. |
| Dutch / canted | ✗ | Never. Would punctuate malfunction beats (the only mission with crisis is Apollo 13 in the catalog — could lean into it). |
| Profile | ★ | The cruise default sometimes lands as profile when the ship's velocity vector is parallel to the camera. Not deliberate. |
| POV | ✗ | No cockpit / instrument POV. Possible for landing beats (Eagle descent reference). |
Gap of the section: the only deliberate angle is three-quarter at flyby. Everything else is the result of where the spacecraft happens to be. The creative guide's lesson: each angle communicates a specific emotion — using only three-quarter means every shot reads the same emotional register (composed, neutral, post-card).
§2 Distance language
| Distance | Score | Notes |
|---|---|---|
| Extreme wide | ★ | We have "wide cruise" but it's medium-wide, not the Pale-Blue-Dot register. |
| Wide | ★★★ | Cruise + arrival establish shots — already strong. |
| Medium | ★★★ | Default cinematic frame at flyby. Strong. |
| Close-up | ★ | Achieved at peak when ship sprite/model dominates the frame, but not as a deliberate "instrument register" beat. |
| Extreme close-up | ✗ | Never. The "humanise the robot" beat — Cassini antenna, RTG fin, instrument boom — doesn't exist. |
Gap of the section: we never sit at the cosmic extreme-wide register that the Voyager Pale-Blue-Dot grammar inhabits, and we never descend to the instrument-register close-up that humanises the spacecraft. The frame is always at medium distance ± lerp wiggle.
§3 Motion vocabulary
| Motion | Score | Notes |
|---|---|---|
| Track / follow | ★★★ | Default in cruise and during flyby. The base motion. |
| Dolly push-in | ★★ | Auto-zoom from cruise → flyby is technically a push-in; pacing too fast, no held arrival. |
| Dolly pull-out | ★ | Auto-zoom from flyby → cruise is technically a pull-out; never given the slow-pace-and-hold treatment that the creative guide demands. No "afterglow beat." |
| Static / locked-off | ✗ | The camera is always lerping. There is no moment in /fly where the camera holds for 6+ seconds. The discipline of stillness is absent. |
| Arc / orbit | ★★ | Used for cruise breathing — currently subtle. |
| Pan | ✗ | The composition transitions are dolly-based, not pan-based. |
| Tilt | ✗ | The composition transitions are dolly-based, not tilt-based. |
| Pedestal / boom | ✗ | Vertical translation never used. The "elevator past the Endurance ring" grammar. |
| Crane | ✗ | Bezier-curved farewell crane — never used. |
| Parallax / dolly zoom | ✗ | Never used. One-shot per mission could be the moment Saturn is first visible to Cassini, for example. |
| Handheld / shake | ✗ | Never used. Apollo 13 LEM-burn grammar — currently we have no failure or crisis beats to apply this to. |
| Whip pan / snap zoom | ✗ | Never used. Could punctuate the trans-planetary cuts (Jupiter → scrubber jump → Saturn). |
Gap of the section: the camera moves with one verb — track, optionally lerping into / out of a composition. Every other motion verb in the cinema-lexicon is absent. The "discipline of NOT moving" is most conspicuously missing — there is no locked-off shot anywhere in /fly, ever.
§4 Transition vocabulary
We have one transition: continuous lerp. There are no cuts. There are no dissolves. There are no match cuts. There are no J-cuts. There are no sound bridges. The mission plays as one continuous shot from launch to arrival — Cuarón's Gravity opening, but accidental, and without the discipline that makes Cuarón's choice meaningful.
| Transition | Score | Notes |
|---|---|---|
| Hard cut | ✗ | Never. The scrubber-jump is the closest thing to a cut, but unintentional. |
| Dissolve | ✗ | Never. The cruise → flyby auto-zoom is the closest, but as a lerp it doesn't read as a dissolve. |
| Match cut | ✗ | Never. The "Earth limb match-cut to Saturn limb" would be powerful at the start and end of Cassini's mission. |
| Motion match | ✗ | Irrelevant in a continuous shot. |
| J-cut / L-cut | ✗ | No sound-led editing. We have narration audio that bridges, but it's not edited cinematically. |
| Sound bridge | ★ | The continuous narration thread IS a sound bridge of sorts. Accidental rather than crafted. |
| Fade | ✗ | Never. Could mark act breaks (Cassini's outbound vs Saturn-resident phases). |
Gap of the section: the absence of cuts is the deepest gap. "Every cut is intentional" is one of the three throne-of-glory principles. We have no cuts to be intentional about. Adding even one deliberate cut per mission act would change the cinematic register substantially.
§5 Per-moment shot grammar
| Moment | Score | Notes |
|---|---|---|
| Pre-launch / countdown | ✗ | No pre-launch beat. We start at launch. The "weight of decades of work" register doesn't exist. |
| Launch | ★ | The LAUNCH banner + ring is acknowledgement of launch; the visual register is identical to cruise. No worm's-eye, no long-lens track, no cathedral framing. |
| Cruise | ★★ | Cruise is rendered as a continuous slow track — the right base. But there are no held holds, no "Tarkovsky 10% boredom" beats. The cruise is treated as connective tissue between flybys rather than as the body of the mission. |
| Mid-cruise event (TCM) | ★ | TCM events are listed in the timeline but get no cinematic register — no thruster close-up, no diagrammatic match-cut. |
| Flyby approach | ★★ | The auto-zoom builds up. Acceleration of cut frequency is absent because there are no cuts. |
| Flyby peak | ★★ | The composition itself is right (post polish wave 2). The 6–10 second held shot the creative guide calls for is absent — the camera is still lerping during peak. |
| Flyby departure | ★ | The pull-out exists mechanically. The slow afterglow beat (Cassini's 12-second silent pull-back) is absent. |
| Arrival / orbit insertion | ★★★ | Post polish wave 2 — Saturn arrival now frames as orbital docked. Good. |
| Landing / surface contact | ✗ | /fly hands off to /mars or /moon at landing; no in-/fly landing grammar. POV through the lander's eye, ECU on landing gear, tilt-up — all absent in /fly. |
| End of mission | ★ | The arrived state holds the orbital framing now. The locked-off "12-second silent goodbye" isn't a thing — the camera keeps lerping breathing motion. |
Gap of the section: four of the ten beats are absent (pre-launch, mid-cruise event, landing, end-of-mission as a distinct held shot) and the remaining six all suffer from the same root problem — there is no concept of a HELD shot. The hero moments arrive, the camera keeps moving, the moment passes.
§6 Reference matrix
We are not currently aiming at any specific shot from the matrix as a deliberate target. The Cassini Grand Finale pull-out, the Earthrise, the Cowboy Bebop Jupiter Gate frame — none of these have a /fly counterpart shot we've intentionally built. The closest thing is the limb-grazing Saturn composition (cd0c44295) inspired by Wernquist's illustrations, but it is general — not a specific named shot.
Gap of the section: zero deliberate references. The polish-wave post commits gesture at the matrix but never select a specific entry and engineer the shot to match it.
§7 Pacing & rhythm
| Principle | Score | Notes |
|---|---|---|
| Shot duration as emotional weight | ✗ | The notion of a shot doesn't exist; we have one continuous camera, no edit. |
| Silent hold | ✗ | No holds. |
| Cut-on-action | ✗ | No cuts. |
| 1.5× / 2× / 3× escalation | ✗ | Pacing isn't structured as escalation; it's structured as sim-day rate. |
| Afterglow beat | ✗ | Camera lerps directly into the next composition. |
| Music-as-scaffold | ✗ | Episode audio plays as narration, not as cinematic score. There's no edited rhythm. |
| Match-cut graphic continuity | ✗ | No cuts → no match cuts. |
| Negative space | ★ | Flyby peak has good negative space when overlays auto-hide; cruise has it most of the time; mid-cruise it sometimes piles up (FD banner + HUD + capcom + scrubber + timeline). |
Gap of the section: pacing is sim-time driven, not edit driven. This is the single biggest creative gap.
§8 Dramaturgy of mission events
| Act | Score | Notes |
|---|---|---|
| Setup (planning, team) | ✗ | We have no pre-mission setup register at all. Mission cards on /missions stand in. |
| Inciting incident (launch) | ★ | Treated as a beat (banner, ring) but not as a religious cathedral moment. |
| Rising action (cruise) | ★★ | Patient continuous cruise IS rising action. But no editing rhythm to give it structure. |
| Hero moments (flybys) | ★★★ | Each flyby cinema is a hero beat. The strongest part of the system. |
| Climax (arrival) | ★★ | OI cinema is the climax. Post polish wave 2 it composes correctly. The climax-as-act (multi-day cinematic prologue) doesn't exist. |
| Falling action (extended mission) | ✗ | Once "arrived" we stop. No extended-mission register. |
| Resolution (end of mission) | ★ | We hold the arrived framing. The locked-off finale + silence isn't there. |
Gap of the section: missions are treated as launch-cruise-arrive, not as setup-incident-rising-hero-climax-falling-resolution. Most of the dramaturgical structure of a real mission is collapsed.
§9 Discipline of NOT doing things
| Discipline | Score | Notes |
|---|---|---|
| Don't move when stillness is the emotion | ✗ | The camera always moves. |
| Don't add music to silence | n/a | We don't currently add music. The Cassini Grand Finale would benefit from a deliberate silence here. |
| Don't cut when audience needs to dwell | n/a | We don't cut at all. |
| Sometimes centre the planet | ★ | Centred framing accidentally happens in some compositions. Not deliberately invoked for sacred-subject moments. |
| Don't add foreground when planet is the subject | ★ | Sometimes the ship is correctly visible; sometimes it's a distraction (Earthrise-type beats want NO ship). |
| Don't intercut a hero moment | ★ | We don't intercut because we don't cut. Accidentally correct. |
| Don't over-orbit | ★★★ | We almost never orbit deliberately. Good. |
| Don't over-detail | ★★ | Generally clean. Some overlay clutter during transitions (now reduced after wave 2). |
| Don't motion-blur the awe | ★★★ | No motion blur applied; lyric shots are precise. Good. |
| Don't apologise for slowness | ★ | Mostly we DO move too fast — auto-zoom is brisk; cruise reads as connective tissue. The Tarkovsky 10% boredom budget is unspent. |
§10 Meta-question
Restated: what does this shot KNOW?
Currently a /fly shot at any given moment is the result of:
- Where the spacecraft is on the spline
- What sub-phase that maps to
- What composition lerp-target that sub-phase has
- Where the lerp is right now
There is no per-shot thesis. The framing has reasons, but those reasons are mechanical (track the ship, frame the body limb), not emotional (this is the moment the mission becomes irrevocable; this is the moment we touch the ringed god; this is the moment we say goodbye). The throne-of-glory tier requires a thesis per shot. We have a thesis per sub-phase — which is much coarser.
Wave 3 prioritised plan
Selected for impact-per-engineering-cost. Each item is the smallest discrete change that advances the creative-direction guide measurably.
W3.1 — Add a held-shot mechanism (highest ROI)
The single biggest gap is the absence of any locked-off shot. Add a new sub-phase state: when in the flyby peak window and within ±0.5 days of closest approach, freeze the camera lerp targets for 2.5 wall-clock seconds. Camera holds the iconic composition silent and still. The diamond pulses on, the body fills the frame, the ship hangs in foreground — and nothing moves except the slow body rotation underneath. Restores the "discipline of stillness." References: Cowboy Bebop Jupiter Gate hold; Cassini ring-plane crossing.
Estimated work: 1 small block in /fly +page.svelte; ~30 lines.
W3.2 — Add an afterglow pull-out beat
Immediately after the peak hold, run a 6-second slow dolly pull-out (not the existing lerp — a dedicated tween with its own ease curve) back to wide. During the pull-out, suppress all overlays (HUD, banner, scrubber). The body recedes; the ship recedes with it; the star field reveals around the frame edges. References: Cassini Grand Finale; Voyager Pale Blue Dot context.
Estimated work: moderate — a new tween system + overlay-suppress gate. ~60 lines.
W3.3 — Pre-launch sub-phase (cinematic prologue)
Currently /fly starts at met=0 (launch). Add a 4-second pre-launch beat: close static shot on Earth with the launch site visible in the limb, the spacecraft sprite holding off-axis, then the launch ring + banner fire. During this pre-launch beat the scrubber + HUD are hidden. Restores the "ritual / weight of decades of work" register. References: First Man pre-launch; Hidden Figures Glenn ascent.
Estimated work: moderate. ~50 lines + a met<0 path through the spacecraft-position calculation.
W3.4 — End-of-mission locked-off finale
For missions that end at a body via OI (Cassini-Saturn, Galileo- Jupiter, etc.), after the arrived-state composition settles, hold for 12 wall-clock seconds with the camera locked. Suppress all overlays except a small "MISSION END" caption that fades in around second 8. Fade to black at second 12. References: Cassini Grand Finale; 2001 starchild; Wernquist's "Where the Mission Ends" animation.
Estimated work: small. ~40 lines + a fade-to-black overlay.
W3.5 — Selective UI suppression during the peak hold
The peak-hold beat (W3.1) needs negative-space discipline. While the camera is in the held-shot state, suppress: FlightDirectorBanner, ConicSectionPanel, the scrubber-row, the active-event HUD row, and the milestone diamonds (not the actively pulsing one). What remains: the ship + the body + the star field. The "don't add foreground when the planet is the subject" discipline.
Estimated work: small. CSS + a single peakHeld state.
W3.6 — Cassini "Day the Earth Smiled" reference shot
Pick one specific reference matrix entry and engineer the /fly path to land exactly on it. For Cassini, that's the "Day the Earth Smiled" composite — Saturn backlit, Earth as a pixel in the rings. Engineer the mission's specific Saturn-flyby cinema to compose this exact shot: Saturn fills 70% of frame, sun directly behind, ring system in silhouette, with a hidden Earth indicator at the ring-gap-pixel. References: Carolyn Porco / Cassini ISS 2013.
Estimated work: moderate. Per-mission cinema override.
W3.7 — Trans-planetary scrubber-jump as a deliberate cut
When the user scrubs across the timeline by more than 1 mission year (Jupiter → Earth on Cassini), treat it as a cinematic cut: fade to black for 200 ms, fade in with the new composition pre-lerped to its target (don't re-lerp from the old position). The audience reads this as a real edit, not a long lerp. The first deliberate cut in /fly.
Estimated work: small. ~30 lines on the jumpToMet path.
W3.8 — Tarkovsky cruise — 10-second held cruise beat
Once per mission, during the longest cruise segment, hold the camera locked on a profile of the ship for 10 wall-clock seconds. The body of the mission, given dignity. The audience falls into the rhythm. References: 2001 Discovery cruise; Ad Astra Neptune solo cruise.
Estimated work: small. Cruise lerp gate.
What's deliberately deferred to a later wave
- Per-shot music/score (out of scope without an audio system)
- Match-cut graphic continuity (requires cut grammar first; do W3.7 to get the first cut, then build on it)
- Full pre-launch ritual (W3.3 is the minimal version; expanding to the Hidden-Figures-style mission-control intercut would need new scene content)
- POV / cockpit shots for landings (the landing routes /mars + /moon could absorb these separately)
Verdict
The technical fly-cinematic-gap-analysis (wave-2 plan) closed almost all the rendering gaps. The creative fly-cinematic-gap-analysis (this doc) reveals that the directorial gaps are largely untouched: there are no held shots, no cuts, no afterglow beats, no pacing structure.
Polish wave 2 made every shot in /fly look correct. Polish wave 3 needs to make every shot in /fly mean something. The order of operations matters: W3.1 (peak hold) is the single change that does the most directional work — it introduces the discipline of stillness, which then unlocks W3.2 (afterglow pull-out), W3.4 (locked-off finale), and W3.8 (Tarkovsky cruise hold). All four are variations of the same core mechanism.
Starts with the hold.