Skip to content

CMPKG packages

Export → CMPKG + media produces one .cmpkg file: a zip containing the project in both XML and JSON plus every media file the project references, with the references rewritten to point inside the package. It is the one export that carries assets, and it is the format to use when handing a whole scenario — script and files — to another team, a Desktop user, or an engine pipeline.

The_Ferry_at_Dusk.cmpkg (a zip)
├── The_Ferry_at_Dusk.xml ChatMapper XML
├── The_Ferry_at_Dusk.json ChatMapper JSON
└── media/
├── <asset-id>/ferry_01.mp3
├── <asset-id>/ferry_02.mp3
└── <asset-id>/ferryman.png
  • The XML and JSON describe the same project; use whichever your pipeline reads.
  • Every media reference in either document — Audio Files, Video File, Animation Files, Pictures, and any custom Files field the project registered — has been rewritten from the editor’s internal URL to the package-relative path media/<asset-id>/<filename>. Resolve them relative to the zip root.
  • Media the project references but the editor no longer holds is left as-is (the original reference), so a missing file is visible rather than silently dropped.
  • Media referenced by URL (attached with Media URL rather than uploaded) is not fetched; the URL is preserved.

Any zip library. Read the .json (or .xml), parse it, and for each media reference open the path inside the archive. The reference parser’s dialogueSegments helper pairs | segments with the entries of Audio Files by index.

The Desktop app’s own .cmpkg is a zip of a .cmp (its encrypted binary save) plus media. ChatMapper Cloud’s .cmpkg puts XML and JSON where the .cmp would be. Desktop opens the XML inside directly; ChatMapper Cloud imports either kind of package — a .cmpkg dropped on the import dialog is detected by content, its project loaded and its media attached.

Packages are built from the project’s media as stored; there is no recompression. A project with an hour of WAV will produce an hour of WAV. Use the Voiceover Script CSV when a studio only needs the lines.