40 — BPC_DialoguePlaybackSystem
Blueprint Spec — UE 5.5–5.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
Communications With
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.