Skip to content

ChatMapper for game developers

This manual is for developers and narrative designers who need branching conversation data — something your engine loads, your writers can edit without you, and your build pipeline can consume.

ChatMapper Cloud is a collaborative web editor over a mature, well-documented dialogue format. It is a companion to your engine, not a replacement for it: Unity and Unreal own simulation and rendering; this owns the authoring, the validation and the exports.

It has two sections. Read the one that describes you.

Start here — new to ChatMapper

Read this if you have never used ChatMapper. It covers the data model, the traversal semantics you must implement (or that your runtime already implements), the Lua host API, the editor workflow, and every export route into an engine.

Migrating from ChatMapper Desktop

Read this if your team already has .cmp / .cmpkg / XML projects from the Windows Desktop app and a pipeline built around them. It covers getting those projects in, what is bit-identical, what changed, and how to keep your existing Unity or custom importer working unchanged.

You wantRoute
Unity, with Pixel Crushers Dialogue SystemExport ChatMapper XML — Dialogue System imports it natively. A Unity export preset adds preflight lints.
Yarn SpinnerExport .yarn — nodes, options, and the translatable subset of the Lua.
Your own runtimeRead the canonical JSON. Stable, documented, and shipped with a dependency-free reference parser.
Unreal / Godot / anything elseSame JSON. The format is engine-neutral; the traversal rules are specified.
A playable build with no engine at allExport a single self-contained HTML file, or a SCORM 1.2 / xAPI package.
To get out of articy:draft, Arcweave or TwineImport them, with a report of everything that did not map cleanly.
  • The format is never forked. Extensions are additive: custom fields that older tools ignore, and an _editor object that is stripped from every export. Anything you write into a Fields object survives a round trip.
  • Values in Fields are always strings"True", "30", "[]" — whatever the field’s declared type. This trips up every first-time consumer.
  • Variables are keyed by name, not ID. XML has no variable ID at all.