DIALOGUE
Nodes for managing dialogue sequences and subtitles in Range Game Engine. The system uses globalDict as a signal bus and stores dialogue state on the object that holds the DialoguePlayer component.
Nodes
| Node | Type | Description |
|---|---|---|
| Start Dialogue | Action | Start a dialogue sequence by ID |
| Advance Dialogue | Action | Manually advance to the next line |
| Stop Dialogue | Action | Force-stop a running dialogue |
| Dialogue Player | Action (branch) | Main player — detects line changes |
| On Dialogue End | Action (branch) | Fires for one frame when dialogue ends |
| Dialogue Text | Data | Text of the current line |
| Dialogue Speaker | Data | Speaker name for the current line |
| Dialogue Index | Data | Zero-based index of the current line |
| Is Dialogue Active | Data | True while dialogue is playing |
| Show Subtitle | Action | Display timed text (subtitle with duration) |
| Get Subtitle | Data | Return subtitle text if not yet expired |
System architecture
Trigger → [Start Dialogue: ID="intro"]
↓ (globalDict: _dlg_start_intro = True)
[On Update] → [Dialogue Player: ID="intro", Advance=Spacebar]
└── Line Changed ──► [Set Text: Object=text_box, Text={Dialogue Text: ID="intro"}]
──► [Set Text: Object=speaker_label, Text={Dialogue Speaker: ID="intro"}]
└── Idle ──► [...]
[On Update] → [On Dialogue End: ID="intro"]
└── On End ──► [Overlay Scene: Scene=DialogueHUD, Mode=Remove]
└── Otherwise ──► [...]
Notes
Dialogue Playermust be on an object withOn Update— it is the only node that executes the advance logic.- Data nodes (
Dialogue Text,Dialogue Speaker, etc.) must be on the same object asDialogue Player. - For dialogues with more than 8 lines, chain two
DialoguePlayers usingOn Dialogue End→Start Dialogue.