Copyright © 2025-2026 Candy ArtsVN Scenes
A VN Scene displays Visual Novel busts: Actors shown on screen, at positions called bust nodes. How busts are used in Dialogues is explained in Visual Novels.
- Script: VN_UI.gd
- Templates: Scenes/VN_Scenes
- Updates: the script is 'unsafe', and so is every template except Default.tscn (see Customizing UI Elements, on the UI page)
- Engine path: busts_path in ui_elements_paths
- Location: in Candy_UI.tscn, a child of
VN_Layer, a CanvasLayer drawn in front of the 2D game world and behind the other UI Elements (see Drawing Order, on the UI page) - Files: see Media Files
VN_Layer in VN_Layer/Busts), at the old scene's position in the scene tree, and receives the name of the path's last node. The parent node must exist even when no VN Scene is loaded yet.
Nodes
| Variable | Node |
| busts_container | Required. The node containing the bust nodes. |
| highlight_player_1 | Optional. An AnimationPlayer for the "Animation_1" speaker highlight (see Speaker Highlight). |
1 to 9).
Unlike background layers, a bust node has no files of its own: it displays the files of the Actor placed on it, from that Actor's bust folder.
A bust node can be any node type listed in Media Files that displays images or videos. A Sprite2D or Sprite3D bust node is scaled to the size set for it in bust_sizes: {"Bust Name": [height, width]}.
Bust nodes are drawn in their order in the scene tree: lower children appear on top.
Children of a bust node
Each bust node can hold these children, all optional:
| Child | Purpose |
An AnimationPlayer named JML | Plays the Join, Move and Leave animations (see JML Effects). Its name is set by jml_player_name. |
A speech bubble named SpeechBubble | Displays the Lines of the Actor on this bust, in VN Bubbles mode. Its name is set by speech_bubbles_name. See Speech Bubbles. |
A Label or RichTextLabel named NameTag | Used by the "NameTag" speaker highlight. |
A node named Outline | Used by the "Outline" speaker highlight. |
NameTag and Outline nodes are used is explained in JML Effects and Speaker Highlight.
Settings
Files
These behave as on Background Scenes, for busts instead of layers: default_image_extension, default_sprite_extension, default_animated_sprite_extension, default_video_extension, default_animated_image_fps, default_sprite_fps, default_animated_sprite_fps, default_video_fps, default_effect_fps, animation_folder_cache, animation_folder_stream and default_effect_extension.
Other
| Setting | Purpose |
| bust_sizes | The size of each Sprite2D or Sprite3D bust node. |
| jml_player_name | The name of the JML AnimationPlayer in bust nodes. |
| speech_bubbles_name | The name (or path) of the speech bubble in bust nodes. |
| vn_join_effect, vn_move_from_effect, vn_move_to_effect, vn_leave_effect | Join, Move and Leave effects (see JML Effects). |
| speaker_highlight | The speaker highlights to use (see Speaker Highlight). |
| billboard_on, billboard_off | The billboard modes used by the "Billboard" highlight. |
| default_z | The VN Scene's Z-order. |
| Hook | Called |
| x_playback_starting() | Right before a bust or an effect starts playback. |
| x_playback_started() | Right after a bust or an effect has started playback. |
- "caller": the Engine.
- "node": the VN Scene.
- "actor": the Actor whose bust is playing.
- "effect": the effect's animation name, or
""when the bust itself starts playback.
[[command values], [actor values]] for a bust, and [[command values], [actor values], [effect values]] for an effect. See UI Elements for how hook functions work.