Cast members
How to create a character, fill in its row, and refer to it from the script and the stage.
A cast member is one character. It owns a display name, a color, a text-advance blip pitch, an optional avatar asset, a portrait flag, and (once it has an avatar) its looks. Everything else about a character, what they say and where they stand, lives in scenes.
Create one
Open the panel
In the right dock, pick the Project tab, then Cast. You need the editor role or higher; a viewer sees the rows but every control is disabled.
Add the member
Click Add cast. You get a row named "New cast" with an orange color, a blip pitch of 1, and portrait off. The member is minted with a stable id that never changes afterward.
Fill in the row
Type over the name. Click the swatch to set the color. Adjust the pitch if you want their dialogue to tick lower or higher than the default.
Give them a body
Use the avatar picker to choose an avatar-kind asset from the library. That is what stands on the 3D stage. Without one, the member is drawn as a colored capsule stand-in.
Every keystroke is an upsert of the same member, and it syncs to anyone else in the project immediately.
What each field does
| Field | Effect |
|---|---|
| colour | The tint of the name label and of the member's graph node. Also the color of the stand-in capsule and of the cast pick highlight ring. |
| name | The display name shown when they speak. Free to change at any time. |
| pitch | Multiplier for the blip, the per-character text-advance sound. 1 is the default. |
| avatar | An avatar-kind asset id. Determines what is rendered on stage. |
| bind | A variable that can make this member wear another member's identity. See Cast bindings. |
| portrait | When on, the speaker's head is framed in a portrait card while they talk. |
| looks | Named per-part color tints. Only shown once the member has an avatar. See Looks. |
Names are free-form and are allowed to collide. Everything that points at a cast member points at its id, not its name, so renaming Vale to Valentine breaks nothing.
How the script refers to them
Four places name a cast member, all by id:
- The speaker cell. Every line beat carries a select at its left edge. Pick a member and the line becomes dialogue: their name, their color, their blip. Leave it on
(none)and the line is narration. - The @ menu. Type
@at the start of a line in the script editor and a cast menu opens. Choosing a name sets that line's speaker and removes the typed text. There is noName:syntax to learn. - Placements. A scene's staging maps cast ids to marks (
far-left,left,center,right,far-right), and stage directions such as expression and animation target a member. See Staging a scene. - The cast pick. A choice option can carry a cast target, which makes clicking that member's staged avatar select the option. The text button stays rendered as a fallback.
Deleting
The X at the end of the row removes the member. Nothing else is rewritten, so any scene that still names the deleted id will fail to compile with UNKNOWN_CAST, and the message tells you where: a line speaker, a stage direction target, a choice option target, or a scene placement. A speaker select whose id is no longer in the cast keeps showing the raw id rather than quietly clearing itself, so you can see what went missing.
Deleting a cast member does not delete their avatar asset. That is a separate library entry with its own delete, covered in Assets.
Voice audio is per line, not per member
A cast member has a blip pitch, not a voice. Recorded voice lines attach to individual line beats: hover a line in the script editor and a speaker icon appears with an audio picker beside it. The stage plays that clip and drives the lipsync from it, falling back to the blip when a line is unvoiced.