Skip to content

/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

AngleScoreNotes
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-shoulderAchieved accidentally when the spacecraft sprite/model occludes the body limb. Not framed deliberately as a Cassini-antenna-foreground composition.
Low-angle / worm's-eyeNever used. The Endurance-from-below grammar would slot into a launch beat.
High-angleNever 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 / cantedNever. Would punctuate malfunction beats (the only mission with crisis is Apollo 13 in the catalog — could lean into it).
ProfileThe cruise default sometimes lands as profile when the ship's velocity vector is parallel to the camera. Not deliberate.
POVNo 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

DistanceScoreNotes
Extreme wideWe 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-upAchieved at peak when ship sprite/model dominates the frame, but not as a deliberate "instrument register" beat.
Extreme close-upNever. 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

MotionScoreNotes
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-outAuto-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-offThe 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.
PanThe composition transitions are dolly-based, not pan-based.
TiltThe composition transitions are dolly-based, not tilt-based.
Pedestal / boomVertical translation never used. The "elevator past the Endurance ring" grammar.
CraneBezier-curved farewell crane — never used.
Parallax / dolly zoomNever used. One-shot per mission could be the moment Saturn is first visible to Cassini, for example.
Handheld / shakeNever used. Apollo 13 LEM-burn grammar — currently we have no failure or crisis beats to apply this to.
Whip pan / snap zoomNever 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.

TransitionScoreNotes
Hard cutNever. The scrubber-jump is the closest thing to a cut, but unintentional.
DissolveNever. The cruise → flyby auto-zoom is the closest, but as a lerp it doesn't read as a dissolve.
Match cutNever. The "Earth limb match-cut to Saturn limb" would be powerful at the start and end of Cassini's mission.
Motion matchIrrelevant in a continuous shot.
J-cut / L-cutNo sound-led editing. We have narration audio that bridges, but it's not edited cinematically.
Sound bridgeThe continuous narration thread IS a sound bridge of sorts. Accidental rather than crafted.
FadeNever. 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

MomentScoreNotes
Pre-launch / countdownNo pre-launch beat. We start at launch. The "weight of decades of work" register doesn't exist.
LaunchThe 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 departureThe 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 missionThe 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

PrincipleScoreNotes
Shot duration as emotional weightThe notion of a shot doesn't exist; we have one continuous camera, no edit.
Silent holdNo holds.
Cut-on-actionNo cuts.
1.5× / 2× / 3× escalationPacing isn't structured as escalation; it's structured as sim-day rate.
Afterglow beatCamera lerps directly into the next composition.
Music-as-scaffoldEpisode audio plays as narration, not as cinematic score. There's no edited rhythm.
Match-cut graphic continuityNo cuts → no match cuts.
Negative spaceFlyby 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

ActScoreNotes
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

DisciplineScoreNotes
Don't move when stillness is the emotionThe camera always moves.
Don't add music to silencen/aWe don't currently add music. The Cassini Grand Finale would benefit from a deliberate silence here.
Don't cut when audience needs to dwelln/aWe don't cut at all.
Sometimes centre the planetCentred framing accidentally happens in some compositions. Not deliberately invoked for sacred-subject moments.
Don't add foreground when planet is the subjectSometimes the ship is correctly visible; sometimes it's a distraction (Earthrise-type beats want NO ship).
Don't intercut a hero momentWe 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 slownessMostly 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:

  1. Where the spacecraft is on the spline
  2. What sub-phase that maps to
  3. What composition lerp-target that sub-phase has
  4. 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.

Orrery — architecture documentation · MIT · No tracking