Validation
The validator reads the whole project and reports the structural problems that otherwise surface as “the branch never fires” bugs weeks later in the engine. It runs on demand, it never blocks you, and each finding links to the node it is about.
Running it
Section titled “Running it”Click the shield in the toolbar. The panel lists errors and warnings with counts; the shield itself carries a count whenever there are issues, and the same count badges the Details tile in the rail, so you notice a problem without opening anything.

Each entry names the conversation and node and has a jump link that selects the node on the canvas. ↻ Re-check project runs it again after you fix things.
What it checks
Section titled “What it checks”Errors — the project will not behave as written until these are fixed:
| Finding | What it means |
|---|---|
| Duplicate ID | Two nodes in a conversation, or two actors/items/places/variables, share an ID. Usually the result of a hand-edited file. |
| No root node / multiple root nodes | A conversation must have exactly one START. |
| Conversation has no dialog nodes | An empty conversation — delete it or write in it. |
| Link to missing node / missing conversation | A link points at something that was deleted. The card shows the dangling Go to. |
| Link origin mismatch | A link claims to start somewhere it does not — again, a hand-edit artefact. |
| Bad actor / conversant reference | A node names a speaker that no longer exists. |
| Condition references undefined variable | Variable["trsut"] — a typo, or a variable you renamed. |
| No actors / no conversations defined | The project is missing one of the essentials. |
Warnings — worth a look, often intentional:
| Finding | What it means |
|---|---|
| Unreachable node | No path from START reaches it. It will never play. |
| Node has no inbound link | An orphan: nothing links to it within its conversation (a cross-conversation link from elsewhere may still reach it). |
| Dialogue line has no actor | A spoken line with no speaker. Engines will show it with no name, or drop it. |
| Node has no dialogue or menu text | An empty node — probably a placeholder you forgot. |
| Script references undefined variable | A script sets a variable you never declared. It works at runtime in most engines, but declare it so its initial value is defined. |
| Variable is defined but never used | Housekeeping. |
| Duplicate link | The same link twice; harmless, but it will confuse a menu. |
| No player actor | No actor has Is player ticked. Some exports need one. |
| No branching anywhere | The whole project is linear. Fine for a cutscene, suspicious for a game. |
Target-specific preflights
Section titled “Target-specific preflights”Some export formats add their own checks when you choose them — for example
the Unity — Dialogue System export warns about two assets whose names
collapse to the same Lua key, a | inside a bracketed tag, or a link to a
different project file. Those appear in the export’s own report, not in the
validation panel. See Exporting and delivering.
A habit that pays
Section titled “A habit that pays”Validate before every Play session and before every export. It takes a second, and it turns “why does Act 3 dead-end?” into “node 47 links to a deleted node” before anyone else sees it.
For the exact rule set as a reference — useful when writing your own importer or checking files from another tool — see Validation rules.