Where to go next
The tracks and what each one is for, so you can stop reading in order and start reading what you need.
All documentation β Start here
Start here
Concepts
Authoring for a build
Playing a story
The generated assets and code
The plugin and sync
On this page
- Concepts β why it is shaped this way
- Playing β you are drawing a story
- The generated assets and code β you are wondering where something came from
- Media β you are wondering where the pictures and the sound went
- The pluginβs tools β something looks wrong while the game plays
- Authoring β you are telling a writer what reaches a build
- Extending β you want your own code to run when a sync finishes
- Reference β you are looking something up
- The sample
The rest of this documentation is not meant to be read in order. Each track answers one kind of question; pick the one you have.
Concepts β why it is shaped this way
Read these once. They are shared with the Unity plugin, because the shape is the same.
- The three files β what a sync produces, and which of it your writer changes without a compile.
- The two seams β which module holds what, and why the engine has no Unreal in it.
- Node meaning is resolved once β why there is no class per node type, and why there cannot be.
- Expressions β the gates and scripts, parsed at sync time and evaluated here.
- The payload, field by field β every type in
runtime.json.
Playing β you are drawing a story
The integration, in the order you will hit it.
- Starting a session β the component, the subsystem, the verbs and the events.
- Reading a step β the whole read surface.
- Choices, and why one is locked.
- One handler per node type β where a node typeβs own logic goes.
- Entity display β a name, a colour, a portrait.
- Implementing commands β how a story makes your game do something, and how it waits for you.
The generated assets and code β you are wondering where something came from
- What a sync writes as data β the assets and tags every sync writes without a compile.
- The typed C++ layer β what a schema change generates into your module, and the naming rules behind it.
- What a sync writes β every file, where it lands, what to commit.
Media β you are wondering where the pictures and the sound went
- Where synced media lands β the folder a sync imports into, the index it writes beside the assets, and what a rename does to a project that already shipped. This is where the files ARE; Loading media in Reference is how you turn a stepβs reference into one at play time.
The pluginβs tools β something looks wrong while the game plays
- The Story Debugger β where the story playing in the editor is, its variables, what it played, and a jump to any node.
Authoring β you are telling a writer what reaches a build
- What a build needs from a project β codes, commands, option sets, the start, and the two kinds of blank.
Extending β you want your own code to run when a sync finishes
- Running your own code after a sync β the two editor-module delegates that fire when a sync and its generation end, for validation, custom imports or generation of your own.
Reference β you are looking something up
- The Unreal player β every verb, the policy, how a playthrough ends.
- Saving a playthrough.
- Loading media.
- Drawing a line of text β the presenter widget and the markup.
- Diagnostics β every code the runtime emits.
- The projectβs UI strings.
The sample
TaleShard > Open Sample opens the pluginβs sample level in place: a TaleShard Story actor and a command handler that prints every command it receives, playing your own synced story on the pluginβs dialogue screen, with no C++. It is for looking at and playing, not for copying: your own level needs only a TaleShard Story actor.