Files
UE5-Modular-Game-Framework/docs/blueprints/07-narrative/60_BPC_DialoguePlaybackSystem.md
Lefteris Notas 411edea8ce add blueprints
2026-05-19 13:22:27 +03:00

5.7 KiB
Raw Blame History

40 — BPC_DialoguePlaybackSystem

Blueprint Spec — UE 5.55.7


Parent Class

ActorComponent

Dependencies

Purpose

Manages the playback of dialogue sequences: line queuing, timing, subtitle routing, audio playback, and lip-sync. Serves as the audio/visual delivery layer for all spoken narrative content.

Responsibilities

  • Receive dialogue sequence data from DA_DialogueSequence
  • Queue lines and play in order with timing
  • Trigger subtitle display via dispatcher
  • Play voiceover audio
  • Fire narrative flags on line completion (if configured in sequence data)
  • Pause/interrupt dialogue on player action or external event
  • Support skip-to-next-line and full-skip-sequence

Does NOT Handle

  • Choice presentation (that is BPC_DialogueChoiceSystem)
  • What dialogue plays when (that is level or narrative flow)
  • Subtitle styling (that is WBP_SubtitleDisplay)

Variables

Name Type Description
ActiveSequence DA_DialogueSequence Currently playing sequence asset
LineQueue Array of S_DialogueLine Remaining lines to play
bIsPlaying Bool Dialogue currently active
bIsPaused Bool Dialogue paused
CurrentLineIndex Integer Index in sequence
LineTimer TimerHandle Auto-advance timer
bBlockInputWhilePlaying Bool Suppress player input during dialogue

Structs

Struct Fields Description
S_DialogueLine SpeakerTag: GameplayTag, LineText: FText, VoiceAudio: USoundBase, Duration: Float, LipSyncData: UAnimSequence, FlagToSetOnComplete: GameplayTag, AnimTag: GameplayTag, bIsChoicePoint: Bool One dialogue line with metadata
S_DialoguePlaybackOptions bCanSkipLine: Bool, bCanSkipSequence: Bool, bShowSubtitles: Bool, SubtitleDelay: Float Per-sequence playback settings

Functions / Events

Name Inputs Outputs Description
PlaySequence Sequence: DA_DialogueSequence Loads and begins playback of a dialogue sequence
PlaySequenceWithOptions Sequence, Options: S_DialoguePlaybackOptions Play with overrides
QueueSequence Sequence Adds sequence to pending queue (for chaining)
PlayNextLine Advances to next line in queue
SkipCurrentLine Ends current line early, plays next
SkipSequence Aborts entire sequence
PauseDialogue Pause audio, hold subtitles
ResumeDialogue Resume from pause
IsDialoguePlaying Bool Query
SetSpeakerOverride SpeakerTag: GameplayTag Override speaker for accessibility
GetCurrentLine S_DialogueLine For UI binding
GetRemainingLineCount Integer For UI progress indicator
EnqueueDialogueFromVolume OverlapActor Called by trigger volume overlap

Event Dispatchers

Name Parameters Fired When
OnDialogueStarted SequenceTag: GameplayTag Sequence begins
OnLineStarted Line: S_DialogueLine New line begins playback
OnLineCompleted Line: S_DialogueLine Line audio finishes
OnSequenceCompleted SequenceTag: GameplayTag Full sequence done
OnDialogueSkipped SequenceTag: GameplayTag Player skipped sequence
OnDialoguePaused Pause triggered
OnDialogueResumed Resume triggered
OnChoicePointReached Choices: Array of S_DialogueChoice Sequence reaches a branching point

Blueprint Flow

[PlaySequence called]
  └─► If bIsPlaying → return (or QueueSequence)
  └─► Set bIsPlaying = true
  └─► Validate sequence conditions (RequiredFlags from DA_DialogueSequence)
  └─► Load line queue from sequence asset
  └─► Broadcast OnDialogueStarted
  └─► Call PlayNextLine

[PlayNextLine]
  └─► Queue empty? → Broadcast OnSequenceCompleted → bIsPlaying = false → return
  └─► Get next S_DialogueLine
  └─► Start LineTimer (Duration)
  └─► Play VoiceAudio
  └─► Broadcast OnLineStarted
  └─► If line has AnimTag → notify ABP via dispatcher
  └─► If line is choice point → hand off to BPC_DialogueChoiceSystem
  └─► Wait for LineTimer or SkipCurrentLine

[OnLineCompleted]
  └─► If line has FlagToSetOnComplete → BPC_NarrativeStateSystem.SetFlag()
  └─► Advance CurrentLineIndex
  └─► Call PlayNextLine

Communications With

Target System Method Why
WBP_SubtitleDisplay Dispatcher Show/hide subtitles
BPC_NarrativeStateSystem Direct Set flags on line completion
BPC_DialogueChoiceSystem Dispatcher Hand off at choice points
BPC_CameraStateLayer Dispatcher Cinematic camera mode for dialogue
BPC_EmbodimentSystem Dispatcher Gesture animation tags
GI_GameFramework Direct Set game phase during dialogue

Reuse Notes

DA_DialogueSequence data assets hold all content — add new sequences per project without touching this system. Voice audio is optional: sequences work without audio (text-only dialogue). Lip-sync data is per-line and can use audio-driven or procedural lip sync.