Copyright © 2025-2026 Candy ArtsParallel Dialogues
A game can contain as many Engines as it needs, and each one runs its own dialogue, separately from the others. Dialogues that run at the same time are called Parallel Dialogues.
Separate Engines
Each Engine (each node with Candy_Engine.gd attached) has its own:
- Dialogue: the file it loaded, and its position in it.
- Settings: Dialogue Mode, typewriter speed, language, input actions... A setting changed on one Engine doesn't affect the others.
- UI Elements: the ones its ui_elements_paths and media_players_paths point to.
- State: suspension, interruption, choice menus, Input scenes, and its own Dialogue History (see Dialogue History).
["path", false] only allows the Engine to use the UI Element, without owning it. A UI Element has one owner at most. See UI Elements.
Private and Public
Media players, Background Scenes and VN Scenes have an Access setting, which decides which Engines may control them:
- Private: only the owner may.
- Public: any Engine may. The Engine that starts a playback on it holds it until that playback is over, and its Public Mode decides whether other Engines are refused, limited to a few commands (such as pausing), or free to take over.
- Assign each channel its own dialogue box (or subtitles), all at the same place on screen. A UI Element shows itself whenever it displays a line, so to hide the other channels, place each channel's box inside its own parent node, and hide the parents of the channels not watched.
- Mute the voice of the channels not watched, for example by assigning each channel's voice player its own audio bus.
- The channels can advance on their own (auto_advance), like a broadcast. If the player should read at their own pace instead, assign every channel the same input actions: they all advance together on the same key, but only the current one is seen.
"P1_Advance" and "P2_Advance"), so that each player advances their own dialogue.
Tips
- Game state: every Engine calls change_game_state() when its dialogue starts and ends. Limit the switch to the Engines that should change the game state (see Game State).
- Mouse: each Engine sets the mouse mode at the start and end of its dialogue. Leave mouse_mode_start and mouse_mode_end at None on Engines that run in the background.
- Input: Engines with the same input actions all react to the same key. Turn off input_enabled on Engines the player shouldn't control, or assign them actions of their own.
- Suspension: suspending the game's main dialogue doesn't suspend the others. Suspend each Engine that should pause (see Suspending Dialogues).