Studio

FolioTier 2

@kenburns

Slow camera zoom drift to a target scale - background motion behind dialogue.

@kenburns applies a slow, continuous camera drift - zooming toward or away from a fixed point - that runs beneath your dialogue without blocking it. It gives a static background the sense of a world still gently moving even as characters speak.

Reach for it in scenes that breathe: a quiet confession, a long establishing shot, any stretch of dialogue where you want subtle atmosphere without a hard visual event. Because the effect fires and continues by default, the drift lives underneath your say lines and the viewer feels it more than they consciously notice it.

The focus point determines where the zoom anchors. Shifting it toward a character's position draws the eye as the scene closes in; a corner anchor creates a slow lean that can read as unease or anticipation.

Passing a sprite tag to target confines the drift to that layer, which lets you build parallax depth when your background and foreground are on separate sprites. Leave target empty and the whole frame moves as one.

Watch duration against your scene length. If the drift resolves before your dialogue ends, the sudden stop reads as a glitch - set duration longer than you expect the scene to run. Setting wait to true turns the effect into a blocking pause useful for cutaways or a held beat before the first line, but it stalls all script execution until the drift finishes.

Parameters

ParameterKindRequiredDefaultNotes
to_scalenumberno1.10.5-3 × multiplier. Default 1.1.
durationnumberno80.5-60 seconds. Default 8.
targetstringno""Optional sprite tag; empty targets the whole frame.
focus_xnumberno0.50-1 (0-1). Default 0.5.
focus_ynumberno0.50-1 (0-1). Default 0.5.
waitbooleannofalseBlock for the effect's duration when true; false fires and continues so effects can overlap.

Canonical example

bg quiet-lake
@kenburns(12, to_scale=1.15)
say "Ada": "I used to come here every summer."
say "Ada": "Before everything happened."

@kenburns drifts the camera zoom to to_scale over duration seconds. Named for the documentary technique of slowly zooming in on still photographs to add motion - useful for keeping a static backdrop visually alive while characters talk over it.

Why a separate effect from @zoom

@kenburns is @zoom with a long default duration (8 seconds vs 1), tuned for slow ambient camera drift behind dialogue rather than a quick punctuating zoom. Both drift the camera to a target zoom from its current state.

Pacing

The default duration is 8 seconds - tuned for "drifts behind dialogue" rather than quick punctuation. The next script line resumes once the drift completes, so a @kenburns(12) keeps the player on the same line for 12 seconds.

If you want the drift to play while dialogue advances, pass wait=false. Like every stage effect, @kenburns defaults to wait=true (block until the duration elapses), but wait=false advances the player to the next event the instant the drift starts - so the camera keeps moving while the line plays, or so a second effect can animate alongside it.

Notes

@kenburns runs on the Pixi stage.

See also

  • @zoom - absolute zoom from current state
  • @pan - absolute pan offset
  • @shake - stage-frame jitter (orthogonal to camera)
  • bg - backdrop change; does not auto-reset camera