Fighting Game · Guides & deep dives

Sequencer Sub-Sequence Composition

id, parent start frame, parent duration, source start frame, playback rate, looping flag, binding-inheritance flag, binding overrides, and parameter overrides.

5sections2 minread

On this page

This document records the TODOS.phase-72.72.15.1.10 cinematic sequencer sub-sequence composition contract. Parent sequences can nest reusable child sequences, retime them on the parent timeline, inherit or override actor bindings, and pass parameterized sub-sequences into child tracks or bindings.

Runtime Ownership#

  • Runtime module: V2Cinematics
  • Parameter spec: FV2SequencerSubSequenceParameterSpec
  • Sub-sequence spec: FV2SequencerSubSequenceSpec
  • Resolved instance spec: FV2SequencerResolvedSubSequence
  • Composition evaluation: FV2SequencerSubSequenceEvaluation
  • Issue enum: EV2SequencerSubSequenceIssueType
  • Issue struct: FV2SequencerSubSequenceIssue
  • Automation: V2.Cinematics.Sequencer.SubSequenceComposition
  • CI checker: V2/ue/Tools/check-v2-sequencer-sub-sequence-composition.py

Composition Model#

FV2SequencerSequenceSpec now owns a SubSequences array. Each FV2SequencerSubSequenceSpec stores an instance id, referenced child sequence id, parent start frame, parent duration, source start frame, playback rate, looping flag, binding-inheritance flag, binding overrides, and parameter overrides.

FV2SequencerSubSequenceParameterSpec carries typed parameter values and targets them at a binding id, track id, or both. This lets a reusable child sequence keep stable authoring data while the parent composition passes values such as Param.Cassia.Intensity or Param.Camera.Mode.

Default Fixture#

BuildDefaultSequencerSubSequenceComposition creates Seq.Composition.CouncilTrial with two child instances of Seq.DataModel.CouncilIntro:

  • SubSeq.CouncilIntro.OpeningBeat runs from parent frame 0 through 120 at normal speed and passes Param.Cassia.Intensity.
  • SubSeq.CouncilIntro.ReplayInsert runs from parent frame 120 through 210 from child source frame 30 at half-rate playback and passes Param.Camera.Mode as CameraMode.ReplayCloseup.

At parent frame 30, the opening beat maps to child frame 30. At parent frame 150, the replay insert maps to child frame 45.

Validation#

EvaluateSequencerSubSequenceComposition validates missing or duplicate instance ids, missing child sequence ids, unavailable child sequence references, invalid frame ranges, invalid playback rates, missing or duplicate parameter names, missing parameter targets, invalid parameter value types, and recursive composition cycles. The result lists every resolved child instance and the active instance ids for the evaluated parent frame.

Verification#

Run:

bash
python3 V2/ue/Tools/check-v2-sequencer-sub-sequence-composition.py

Adjacent verification should include python3 V2/ue/Tools/check-v2-sequencer-actor-bindings.py, python3 V2/ue/Tools/check-v2-sequencer-camera-tracks.py, python3 V2/ue/Tools/check-v2-sequencer-event-tracks.py, python3 V2/ue/Tools/check-v2-sequencer-audio-tracks.py, python3 V2/ue/Tools/check-v2-sequencer-animation-clip-tracks.py, python3 V2/ue/Tools/check-v2-sequencer-property-tracks.py, python3 V2/ue/Tools/check-v2-sequencer-keyframe-interpolation.py, python3 V2/ue/Tools/check-v2-sequencer-timeline-playback.py, python3 V2/ue/Tools/check-v2-sequencer-data-model.py, and python3 V2/ue/Tools/check-v2-cinematics-module.py.