Skip to main content

Dialogue Editor

The Dialogue Editor is a powerful side panel that provides a dedicated interface for editing Dialogue nodes with support for text, player options, background images, and more.

Overview

The Dialogue Editor is a collapsible side panel that appears on the right side of the visual scripting system (also referred to as the node editor) when you're working with Dialogue nodes. It provides a rich editing experience with dedicated fields for all dialogue properties, making it easier to create complex interactive conversations than editing directly in the node visual.

Key Features:

  • Dedicated Text Editing: Large text area with multiline support for dialogue content
  • Visual Image Selector: Browse and preview background images from your project's Content folder
  • Option Management: Add, edit, reorder, and delete player response options with drag-and-drop
  • Unsaved Changes Tracking: See what you've modified before applying changes
  • Auto-Preserve State: Your edits are preserved when switching between nodes or files

Opening the Editor

To open the Dialogue Editor, double-click any Dialogue node in the node graph. The editor panel will expand automatically from the right side of the screen.

The panel stays open as you work, allowing you to double-click different Dialogue nodes to instantly switch between editing them. The panel will automatically collapse when you select a non-Dialogue node (like a Branch node or Variable node), keeping your workspace clean.

Dialogue Editor interface showing the side panel with title field, text area, background image selector, and options management

User Interface

The Dialogue Editor is organized into four main sections, each handling a different aspect of your dialogue.

Title Field

The Title field is an optional text field that appears in the dialogue node header. It's primarily used for organization within the editor and is not displayed to players during playback.

  • Optional: Can be left empty if not needed
  • Display: Visible in the editor node header, but not shown to players during runtime
  • Common uses: Speaker identification ("Narrator", "Alice"), scene labels ("Town Square - Morning"), conversation topics ("Quest Intro"), or any organizational text

Editor Organization

The Title field helps you organize and identify dialogue nodes at a glance when working with large conversation trees. For example, labeling a node "Captain Elena - Quest Start" makes it easy to find later.

Background Image

Add visual context to your dialogue with background images. Perfect for visual novels, illustrated stories, or creating atmosphere in your narrative.

Image Selection Features:

  • Visual Browser: Browse all images from your project's Content folder with live previews
  • Drag-and-Drop: Drag images directly from the Content Browser into the image selector
  • Search Functionality: Filter images by filename to quickly find what you need
  • Quick Actions:
    • Show in Content Browser: Locate the selected image in your file tree
    • Open File: View the image in your system's default image viewer
  • Preview: See a thumbnail of the selected image directly in the editor

Supported Formats

The image selector displays all image files from your Content folder. Supported formats are PNG and JPEG/JPG only. Images are referenced by their relative path from the Content folder.

Drag-and-Drop Workflow:

  1. Navigate to your images folder in the Content Browser (e.g., Content/Images/)
  2. Drag an image file from the Content Browser
  3. Drop it onto the image selector area in the Dialogue Editor
  4. The image is automatically selected and previewed

Text Area

The Text field contains the main dialogue content that players will read. This is the core of your narrative.

Features:

  • Multiline Support: Press Shift + Enter to create new lines within your dialogue
  • Large Editing Area: Expanded text area makes it easy to write and edit longer passages
  • Real-time Display: Text appears in the dialogue box exactly as you type it
  • Variable Interpolation: Use {variableName} syntax to insert variable values dynamically

Using Variables in Dialogue

You can insert variable values directly into your dialogue text using curly braces: {variableName}. This allows you to create dynamic, personalized dialogue.

Examples:

  • "Hello, {playerName}!" displays as "Hello, Alice!" if playerName = "Alice"
  • "You have {gold} coins." displays as "You have 150 coins." if gold = 150
  • "Your health is {health}%." displays as "Your health is 75.5%." if health = 75.5

Note: If a local and global variable share the same name, the local variable takes precedence and will be used.

Options Management

Options are the dialogue responses that create branching narratives. Each option represents a button the player can click, leading to different story paths.

Managing Options:

  • Add Option: Click the "Add Option" button to create a new option. Options are automatically assigned unique IDs.
  • Edit Text: Click on an option's text to edit what the player will see (e.g., "Accept the quest", "Decline politely", "Ask for more information"). You can also use {variableName} syntax in option text to display variable values.
  • Multiline Text: Options support multiple lines of text. Press Shift + Enter to add line breaks within an option.
  • Reorder Options: Drag and drop options to change their display order. Players will see them in this order from top to bottom.
  • Delete Option: Click the trash icon to remove an option. This cannot be undone.
  • Option Type: Select the option type (Button, Input, or Enum) to change how the option behaves.

Option Connections

When you delete an option, any connections from that option's output handle will also be deleted. Make sure to reconnect your story flow if needed.

Option Handles:

Each option in a Dialogue node has two handles in the node graph:

  • Left Handle (Condition Input): Connect a boolean value to show/hide the option based on game state (e.g., only show "Use key" if player has the key)
  • Right Handle (Execution Output): Connect to the next node that executes when the player selects this option

Option Types

Dialogue options come in three types, each serving a different purpose. Select the type using the dropdown in each option's title bar.

Button Options

The default option type. Button options display as clickable text that players select to advance the dialogue.

  • Behavior: Player clicks to select, dialogue continues
  • Output: Execution flow continues from the option's output handle
  • Use Cases: Dialogue choices, branching paths, menu selections

Input Field Options

Input options display a text field where players can type their own response. Perfect for collecting names, passwords, or custom text.

  • Behavior: Shows a text input field with a submit button
  • Value Handle: A special output handle provides the entered text as a string value
  • Multiple Connections: The Value handle supports multiple connections, letting you send the input to different variables or nodes
  • Use Cases: Name entry, password input, custom responses, search queries

Input Field Example

Create a name entry dialogue: Add an input option with the label "Enter your name:", connect the Value handle to a Set String node for your playerName variable, and the execution handle to continue the dialogue.

Enum Options

Enum options present a dropdown menu of predefined choices. The player selects from your defined enum values, ensuring type-safe responses.

  • Behavior: Shows a dropdown with all options from the selected enum variable
  • Enum Selector: Choose which enum variable defines the available choices
  • Value Handle: Outputs the selected enum value
  • Use Cases: Difficulty selection, character class picker, faction choice, structured decisions

Setting Up Enum Options:

  1. First, create an enum variable with your desired options (e.g., "Easy", "Normal", "Hard")
  2. In the dialogue option, change the type to "Enum"
  3. Select your enum variable from the dropdown
  4. Connect the Value handle to store or process the selection

When to Use Each Type

  • Button: Standard dialogue choices with fixed outcomes
  • Input: Free-form text entry (names, passwords, custom text)
  • Enum: Selection from a predefined list (settings, categories, structured choices)

Audio

Dialogue nodes can play audio when displayed. This is perfect for voice lines, ambient sounds, or musical cues tied to specific dialogue.

Adding Audio to Dialogue

In the Dialogue Editor sidebar, you'll find the Audio section below the Background Image:

  • Audio Selector: Click to choose an audio file (MP3 or WAV) from your project
  • Loop Checkbox: Enable to repeat the audio continuously
  • Preview Controls: Play/stop button with progress bar to preview audio in the editor
  • Reset Checkbox: Enable to stop any playing audio when this dialogue displays

Audio Behavior

  • Audio starts playing when the dialogue node is reached
  • Non-looping audio plays once and stops
  • Looping audio continues until stopped by another node or reset
  • The Reset option stops any currently playing audio

Tip

For background music that should persist across multiple dialogues, use the Play Audio node instead. Dialogue audio is best for voice lines and sound effects tied to specific text.

Characters

Dialogue nodes can be associated with a character, displaying their name and portrait in the runtime.

Selecting a Character

In the Dialogue Editor sidebar, use the Character selector to choose from your project's character files (.sfc):

  • Character Dropdown: Shows all available characters with their portraits
  • Search: Type to filter characters by name
  • None Option: Clear the character selection

When a character is selected, the runtime will display their name and portrait alongside the dialogue text.

Character Variable Interpolation

You can reference character variables directly in your dialogue text using a special syntax. This allows dialogue to dynamically display character properties and custom variables.

Syntax: {Character.VariableName}

Examples:

  • {Elena.Name} - Displays the character's name (e.g., "Elena")
  • {Elena.Affection} - Displays a custom integer variable (e.g., "75")
  • {Merchant.ShopName} - Displays a custom string variable (e.g., "The Golden Coin")
  • {Player.Health} - Displays player health from a character file

Nested Interpolation:

Character variable interpolation supports nesting. If a character variable contains another variable reference, it will be resolved:

  • If Elena.Greeting equals "Hello, {playerName}!"
  • And playerName equals "Alice"
  • Then {Elena.Greeting} displays "Hello, Alice!"

Variable Suggestion

When typing in the text area, press { to open the variable suggestion menu. Navigate with arrow keys and press Enter to insert. The menu shows both regular variables and character variables from your project.

One-Time Options

Options can be marked as "one-time" so they disappear after being clicked. This is perfect for exploration-based narratives where you want players to exhaust dialogue options.

Enabling One-Time

Each option in the Dialogue Editor has a "Once" checkbox. When enabled:

  • The option displays normally the first time
  • After the player clicks it, the option is hidden on subsequent visits
  • This state persists within the current story session

Use Cases:

  • NPCs with multiple topics to discuss (each topic disappears after being covered)
  • Investigation scenes where clues can only be examined once
  • Tutorial prompts that shouldn't repeat
  • Side conversations that shouldn't clutter the main dialogue

Unsaved Changes

The Dialogue Editor intelligently tracks your modifications and provides clear feedback about unsaved changes.

How It Works:

  • Automatic Tracking: The editor compares your current edits against the saved node data
  • Visual Indicator: A "Reset Changes" button appears when you have unsaved modifications
  • State Preservation: Your edits are preserved when you switch to other nodes or files, allowing you to continue editing later
  • Click to Revert: Click "Reset Changes" to discard your edits and restore the node to its saved state

When Unsaved Changes Are Cleared:

  • When you click "Reset Changes"
  • When you click "Save Changes" (because there are no unsaved changes anymore)

Tips & Tricks

Organizing Large Dialogues

For complex conversations with many branches, some developers:
  • Write descriptive option text that clearly indicates the player's selection
  • Keep individual dialogue nodes focused on one exchange or topic
  • Use the Title field consistently (e.g., showing character names) for visual clarity
  • Add Comment nodes to annotate complex dialogue trees

Image Workflow

Image management options:
  • You can organize images in subfolders within Content (e.g., Content/Backgrounds/, Content/Characters/)
  • Consistent naming conventions can make searching easier (e.g., char_elena_happy.png)
  • You can drag and drop images directly from the Content Browser for quick selection
  • The search field in the image selector lets you filter by filename when you have many images

Option Design

Player option examples:
  • Many developers use 2-4 options per dialogue node for readability
  • Active and specific option text ("Search the ruins" compared to "Okay") can be clearer
  • You can use conditional options (boolean variables) to reveal options based on player progress
  • You can order options however you prefer based on your game's design

Next Steps

Now that you understand the Dialogue Editor, explore these related topics:

Need Help?

Join our Discord community to ask questions, share your projects, report bugs, and get support from the team and other users.

Join Discord