Sequential Multi-Choice Playback

The component supports sequential playback of multiple selected choices, allowing a player to select multiple options in a choice node and have each option’s TargetNodeID branch play one after another as dialogue.

Blueprint API:

  • SubmitChoiceSequential(SelectedChoiceIDs, bTriggerChoiceEvents=true, bOrderBySelected=true)

    • SelectedChoiceIDs: Array of selected choice GUIDs (keeps selection order if bOrderBySelected=true)

    • bTriggerChoiceEvents: Whether to broadcast each choice’s OnSelectedEvent

    • bOrderBySelected: true to preserve player-selected order; false to use the authored order in FDialogueChoiceNode

Behavior:

  • Builds an internal queue from selected choices’ TargetNodeID and plays each branch as a normal dialogue.

  • Preserves DisplayDelay and AutoAdvanceDelay with millisecond-level overhead.

  • In sequential mode, text nodes with AutoAdvanceDelay == 0 auto-advance to avoid stalling.

  • If a branch reaches another Choice node, the branch ends (default policy: stop at next Choice) and the system immediately advances to the next selected branch to guarantee all selected branches execute.

  • If a TargetNodeID is invalid or conditions fail at runtime, the system skips that branch and continues with the next.

Events:

  • OnDialogueChoiceSelected: Broadcasts once with the final set of valid selections for the current choice node

  • OnDialogueNodeExecuted: Broadcasts for each text node with resolved SpeakerInfo

  • OnDialogueEventTriggered: Broadcasts for dialogue or choice events

  • OnDialogueStarted / OnDialogueEnded: Fired at the start/end of dialogue (including sequential sessions)

Notes & Best Practices:

  • If you regenerate choice GUIDs or rewire TargetNodeID in the editor, ensure your UI passes the updated GUIDs to SubmitChoiceSequential.

  • To guarantee all selected branches are executed, model deeper “new player decisions” as subsequent choice nodes; the default sequential policy ends at the next Choice to avoid unintended state changes.

  • If you need an alternative policy (e.g., auto-pick first available, tag-based selection, or skip all inner choices), extend the component with a strategy enum; default prioritizes predictability and robustness.

Last updated