Skip to main content
This guide will get you from zero to a working dialogue conversation in your game in just a few minutes.
Make sure you’ve installed and enabled the Dialogue Manager plugin before starting this guide.

Create Your First Dialogue

1

Open the Dialogue tab

Click the Dialogue tab in the editor (next to 2D, 3D, Script, and AssetLib).Dialogue tab
2

Create a new dialogue file

Click the new dialogue file button in the toolbar.New dialogue buttonSave it as res://my_first_dialogue.dialogue.
3

Write your dialogue

In the dialogue editor, write your first conversation:
~ start

Nathan: Hi there! Welcome to Dialogue Manager.
Nathan: This is a simple dialogue example.
Nathan: You can add as many lines as you want.
Lines starting with ~ are labels - they mark different entry points in your dialogue. The start label is commonly used as the default starting point.

Add Player Responses

Let’s make the dialogue interactive by adding response options:
~ start

Nathan: Hi there! Welcome to Dialogue Manager.
Nathan: Would you like to learn more?
- Yes, tell me more!
	Nathan: Great! Dialogue Manager makes it easy to create branching conversations.
	Nathan: You can add conditions, variables, and much more.
- No, I'm good.
	Nathan: No problem! Come back anytime.
Response options start with - and their nested dialogue is indented with a tab.

Show Dialogue in Your Game

Now let’s make your dialogue appear in the game.
1

Create a test scene

Create a new scene with a basic node (like a Node2D or Control).
2

Add a script

Attach a script to your node with the following code:
extends Node2D

func _ready():
	# Load your dialogue resource
	var dialogue_resource = load("res://my_first_dialogue.dialogue")
	
	# Show the dialogue starting from the "start" label
	DialogueManager.show_dialogue_balloon(dialogue_resource, "start")
DialogueManager.show_dialogue_balloon() is the simplest way to show dialogue. It uses the built-in example balloon by default.
3

Run your scene

Press F6 to run your current scene. You should see your dialogue appear in a speech balloon!
  • Click or press Space/Enter to advance through dialogue
  • Use Arrow Keys and Enter to select response options
  • Press Escape to skip typing animation

Complete Example

Here’s a more complete dialogue example showcasing different features:
~ start

Nathan: Welcome to my shop!
Nathan: What can I help you with today?
- Tell me about yourself
	Nathan: I'm Nathan, the shopkeeper.
	Nathan: I've been running this place for years.
	=> shop_menu
- Show me your wares => shop_menu
- Goodbye => END

~ shop_menu

Nathan: Here's what I have in stock.
- Health Potion ($10)
	Nathan: A classic choice!
	=> shop_menu
- Magic Scroll ($25)
	Nathan: Powerful stuff!
	=> shop_menu
- Nothing for now
	Nathan: Come back anytime!
	=> END
  • => label_name jumps to another label
  • => END ends the dialogue conversation

Using Dialogue in Different Ways

Besides show_dialogue_balloon(), you can also get dialogue lines manually for more control:
extends Node2D

func _ready():
	var dialogue_resource = load("res://my_first_dialogue.dialogue")
	
	# Get a single line of dialogue
	var dialogue_line = await DialogueManager.get_next_dialogue_line(dialogue_resource, "start")
	
	# Access the line's properties
	print(dialogue_line.character)  # "Nathan"
	print(dialogue_line.text)       # "Hi there! Welcome to Dialogue Manager."
	
	# Get the next line
	dialogue_line = await DialogueManager.get_next_dialogue_line(dialogue_resource, dialogue_line.next_id)
This approach gives you full control over how dialogue is displayed, letting you create custom dialogue UI that matches your game’s style.

Next Steps

Basic Dialogue

Learn the full dialogue syntax including BBCode, tags, and randomization

Using Dialogue

Deep dive into the API and advanced integration techniques

Conditions & Mutations

Add game state checks and variable modifications to your dialogue

Custom Balloons

Create custom dialogue UI for your game

Tips for Writing Dialogue

  • Use descriptive labels: Name your labels based on what happens (~ shop_intro, ~ quest_accept)
  • Keep responses short: Long response text can be hard to scan
  • Test frequently: Run your dialogue often to catch typos and flow issues
  • Use comments: Add # This is a comment to document complex dialogue sections

Build docs developers (and LLMs) love