Candy Logo Copyright © 2025-2026 Candy Arts

VN Bubbles Mode
VN Bubbles mode displays the spoken text inside a speech bubble on the speaker's VN bust, for Visual Novels. There is no portrait or speaker label. VN Bubbles is an Alternate mode: never assign it yourself. The Engine switches a Line from Bubbles mode to VN Bubbles mode when: - vn_mode is enabled in the Engine, and - the Engine has a VN scene (busts_path in ui_elements_paths). The speech bubble is the node named speech_bubbles_name inside the speaker's bust. If the speaker has no bust on screen, or their bust has no speech bubble, the Line is displayed in the bubbles_exempt_mode instead. VN Bubbles mode uses the same settings as Bubbles mode (the bubbles_ settings and their overrides).
Note: The Godot Editor may print this error when it loads a scene containing a speech bubble or a bark bubble: Path to node is invalid: 'SubViewport'. (or 'BarkBubble/SubViewport' for a bark scene). It's caused by the Godot editor loading the speech/bark bubbles ViewportTextures before Subviewports. Everything works correctly: you can ignore it.
Engine Settings The following settings are available in the Engine (Candy_Engine.gd):
SettingPurpose
vn_modeEnable VN mode: Lines in Bubbles mode switch to VN Bubbles mode.
bubbles_exempt_modeThe Dialogue Mode to use when the speaker has no bust on screen, or their bust has no speech bubble.
bubbles_text_bbcodeBBCode tags wrapped around the spoken text. Write the opening tags only: the Engine adds the closing tags.
bubbles_end_of_line_stringThe end-of-line string before advancing to the next Line.
bubbles_advance_stringThe end-of-line string after advancing to the next Line.
lexicon_bubbles_modeEnable Lexicon formatting in the spoken text.
writing_speedTypewriter speed, in characters per second. 0 displays the whole Line at once.
continue_fast_speedTypewriter speed while the speed-up input is held.
continue_slow_speedTypewriter speed while the slow-down input is held.
sync_write_speed_voiceMatch the typewriter's speed to the voice file's length. The synchronization is lost if the player accelerates or slows down the writing.
auto_advanceSeconds to wait before automatically advancing to the next Line. -1: Disable (manual advance only). 0: Advance immediately when writing is finished.
auto_advance_per_characterSeconds added to auto_advance for each character the Line displays (e.g. 0.05 adds 5 seconds to a 100-character Line). Ignored when auto_advance is -1.
enable_voicePlay voice files or TTS for Spoken Lines.
await_voice_playbackDisable advancing until voice playback has finished.
text_to_speechText-To-Speech: "Off": Don't use Text-To-Speech. "Simple": Use the spoken text (without BBCode tags) for Text-To-Speech. "Advanced": Use the _TTS Variation for Text-To-Speech. Additional TTS modes are created in the tts() hook function (Tts.gd).
tts_advanced_fallbackThe TTS mode to use instead of "Advanced" when a Line has no "_TTS" Variation. Without TTS modes of your own, the only values are "Simple" and "Off".
llm_modeQuery an LLM to write the text to display.
write_dialogue_historyLog Spoken Lines in the Dialogue History.
UI Settings The following setting is available in the VN scene (VN_UI.gd):
SettingPurpose
speech_bubbles_nameThe name (or path) of the speech bubble inside each bust node.
The following settings are available in the speech bubble itself (Speech_Bubble_2D.gd or Speech_Bubble_3D.gd): Overrides Each of these replaces the Engine setting of the same purpose while its enable_ switch is on (e.g. enable_writing_speed):
SettingOverrides
text_bbcodebubbles_text_bbcode
end_of_line_stringbubbles_end_of_line_string
advance_stringbubbles_advance_string
lexicon_modelexicon_bubbles_mode
writing_speedwriting_speed
continue_fast_speedcontinue_fast_speed
continue_slow_speedcontinue_slow_speed
sync_write_speed_voicesync_write_speed_voice
auto_advanceauto_advance
auto_advance_per_characterauto_advance_per_character
enable_voiceenable_voice
await_voice_playbackawait_voice_playback
text_to_speechtext_to_speech
tts_advanced_fallbacktts_advanced_fallback
llm_modellm_mode
write_dialogue_historywrite_dialogue_history
Other
SettingPurpose
x_offsetThe bubble's offset on the X axis.
y_offsetThe bubble's offset on the Y axis.
z_offsetThe bubble's offset on the Z axis (3D only).
max_widthThe maximum width the bubble can reach.
text_width_marginExtra space on each side of the text.
default_zThe bubble's Z-order (2D only).
Actor Overrides The following overrides can be assigned to Actors (actors dictionary):
PropertyOverrides
BubblesExemptModebubbles_exempt_mode
BubblesTextBBCodebubbles_text_bbcode
BubblesEndOfLineStringbubbles_end_of_line_string
BubblesAdvanceStringbubbles_advance_string
LexiconBubblesModelexicon_bubbles_mode
DialogueModedialogue_mode
WritingSpeedwriting_speed
ContinueFastSpeedcontinue_fast_speed
ContinueSlowSpeedcontinue_slow_speed
SyncWriteSpeedVoicesync_write_speed_voice
AutoAdvanceauto_advance
AutoAdvancePerCharacterauto_advance_per_character
EnableVoiceenable_voice
AwaitVoicePlaybackawait_voice_playback
TTStext_to_speech
TTSAdvancedFallbacktts_advanced_fallback
LLMllm_mode
WriteDialogueHistorywrite_dialogue_history
To display an Actor's Lines in VN Bubbles mode, set their DialogueMode to "Bubbles". Line Overrides The following overrides can be assigned to Spoken Lines:
KeyOverrides
Bubbles_Exempt_Modebubbles_exempt_mode
Text_BBCodebubbles_text_bbcode
End_Of_Line_Stringbubbles_end_of_line_string
Advance_Stringbubbles_advance_string
Lexicon_Modelexicon_bubbles_mode
Dialogue_Modedialogue_mode
Writing_Speedwriting_speed
Continue_Fast_Speedcontinue_fast_speed
Continue_Slow_Speedcontinue_slow_speed
Sync_Write_Speed_Voicesync_write_speed_voice
Auto_Advanceauto_advance
Auto_Advance_Per_Characterauto_advance_per_character
Enable_Voiceenable_voice
Await_Voice_Playbackawait_voice_playback
TTStext_to_speech
TTS_Advanced_Fallbacktts_advanced_fallback
LLMllm_mode
Write_Dialogue_Historywrite_dialogue_history
To display a Line in VN Bubbles mode, set its Dialogue_Mode to "Bubbles".