Creating Your First Dialogue
This guide walks through creating a simple two-line conversation with an NPC from scratch. By the end you will have a Speaker asset, a Dialogue Graph, and a working trigger on a scene object.
Before starting, make sure you have run the One-Click Setup and followed the Setup Instructions so that DialogueManager is present in your scene. Dialogue cannot play without it!
Step 1 — Create a Speaker Asset
A Speaker is a reusable ScriptableObject that defines who is talking — their name, portrait, and voice. You create one per character.
In the Project window, navigate to the folder where you want to store your dialogue assets (e.g.
Assets/Dialogue/Speakers)Right-click → Create → Malbers Quest Forge → Dialogue → Speaker
Name the asset after your character (e.g. Speaker_Blacksmith)
Select it and fill in the Inspector:
Speaker Name — the name displayed in the dialogue UI (e.g. Blacksmith)
Portrait — assign a Sprite for the character's avatar
Name Color — colour of the speaker name text
Voice Clip — optional audio that plays when this character speaks
Leave everything else at its defaults for now. It will look something like this:

Step 2 — Create a Dialogue Graph Asset
A Dialogue Graph is the ScriptableObject that holds all the nodes and connections for a conversation.
In the Project window, navigate to your dialogue folder (e.g. Assets/Dialogue)
Right-click → Create → Malbers Quest Forge → Dialogue Graph
Name it descriptively (e.g. Dialogue_BlacksmithIntro)

Alternatively you also can:
Open the QuestForge Dialogue Graph by navigating to: Tools -> Malbers Quest Forge -> Open Quest Forge Editor
Once it opens, use the Save button at the top of the screen to save where you want it (e.g. Assets/Dialogue).

Step 3 — Build the Graph
Double-click the Dialogue Graph asset to open it in the Dialogue Graph Editor (or if already inside the Graph Asset Ignore This!)
You will see two nodes already present — a Start Node and an End Node. Do not delete these.
If the Graph Nodes are not present, go ahead and right click anywhere on the empty canvas, and Add a Start Node and a End Node.
Add a dialogue line
Right-click anywhere in the empty canvas and select Simple Dialogue Node
On the new node:
Assign your Speaker asset to the Speaker field
Type your NPC's line into the Dialogue Text field (e.g. "Welcome to my forge, traveller.")
Wire it up
Click and drag from the output port (right side) of the Start Node to the input port (left side) of your Simple Dialogue Node
Click and drag from the output port of your Simple Dialogue Node to the input port of the End Node
Your graph should now read: Start Node → Simple Dialogue Node → End Node and look something like this:

Save the graph (Ctrl+S or the Save button in the editor toolbar)
Make sure the graph is saved before continuing!
The Start Node is the entry point — the graph always begins there. The End Node closes the conversation and returns control to the player. Every path through your graph must reach an End Node.
Step 4 — Set Up the NPC
You now need a scene object that plays this dialogue when the player walks into the trigger collider that it has. For this simple example, the workflow will be Player walks into trigger collider -> Dialogue Starts.
Select your NPC GameObject in the Hierarchy
Open Tools → Malbers Quest Forge → Malbers Quest Forge Helper Tools (Ctrl+Shift+H)
Go to the Creator tab, select your NPC as the target
Choose the Dialogue NPC preset and click Select
Scroll down and Review the Components that will be added
This adds a DialogueTrigger and MInteract component automatically. It also adds a NPCSpeechBubble component but we will remove that after.
Choose the Create Dialogue NPC button at the bottom (The big green one!)
Now choose your gameobject in the hierarchy and review it and do the following:
Remove the Interactable/MInteract Component - Not Required for this tutorial
Remove the NPCSpeechBubble Component - Not Required for this tutorial
Then assign your graph:
Select the Gameobject and find the DialogueTrigger component in the Inspector
Drag your Dialogue Graph asset that you created before into the Dialogue field
Change the Trigger Type to "On Enter"
Change the Required Tag to whatever your players tag is (Usually "Animal").
If your Gameobject doesnt have a collider, use the Add Sphere Collider or Add Box Collider Button to add one.
Turn off all settings under the Quest System Integration section
Leave everything else as it is. If setup correctly you'll see this under the Status & Testing section:

For this example we are using the scenarios in the Helper Tools but once you feel more comfortable with the asset, you can always add these manually!
Step 5 — Test It
Press Play in the Editor
Walk your player up to the NPC and walk into the trigger
The dialogue UI should appear and display your first line
Click anywhere on the screen using the Left Mouse Click to continue dialogue.
The dialogue closes automatically when it reaches the End Node
CONGRATULATIONS! If everything has gone well, you've just created your first dialogue in the system! If it hasn't gone well, re-review the above steps to make sure it's all set correctly!
What Next?
Now that you have a working dialogue, here are natural next steps you could try:
Add player choices — use a Choice Dialogue Node instead of Simple Dialogue Node to give the player response options that branch to different outcomes
Conditional dialogue — add a True/False Node (Conditions2) to show different lines depending on quest state or dialogue flags (e.g. different greeting after the player has completed a quest)
Quest integration — add a Quest Node inside the graph to start or complete a quest as part of the conversation
Camera control — enable Focus Camera on Speaker on individual dialogue nodes, or add a Cinemachine Node for cinematic camera cuts
NPC animation — use a Character Action Node to trigger an animation state on the NPC at any point in the conversation
Save state — enable Trigger Once and Save Trigger State on the DialogueTrigger so the NPC remembers it has already spoken to the player between sessions
Last updated