Write a character's story
Goal
A talking character's persona for Convorcher: who they are, how they speak, their voice, what they know and hide, and the objectives the service judges as the conversation goes (evidence the game reads, never verdicts). The dev server uploads it when it starts and again whenever the file is saved. Needs Set up talking characters.
Files you will edit
src/guard.story.yaml
Steps
The story file.
src/guard.story.yaml(src/<id>.story.yaml), one file per character, in Convorcher's story format (Talking characters):yamlspec_version: '1.0' story: id: north-gate-guard # unique in your account title: 'The north gate guard' version: '1.0' start_phase: questioning character: name: north-gate-guard gender: male # female or male: the face that moves with the voice (Myra's or Isaac's lip sync) voice_id: onwK4e9ZLuTAKqWW03F9 # optional personality: | You are Brannoc, the night guard at the north gate: gruff, tired, not unkind. One or two short sentences per turn. Ask who the player is and why they want out. Never say whether they may pass: the game decides that. global_facts: public: ['The gate is shut at night by order of the council.'] private: ['A courier with a sealed letter may pass at any hour.'] phases: questioning: description: 'Find out who the player is and why they want to pass.' tone: 'wary, curt' max_turns: 0 # never let the service end the talk: the game counts attempts objectives: - id: gave-reason description: 'The player has given a reason to pass.' completion: { type: player_state, condition: 'The player has said why they need to pass the gate.', } urgency: normalA character made in the Gameable studio has a voice of its own: its id is on the character's Voice in the studio (the studio's MCP
gameable_stateshows it asvoice.voiceId). Put it invoice_idso the character speaks in that voice; the package the asset manager gives a game does not carry it.That is all. The file's name is the character's id (
guard): the dev server findssrc/<id>.story.yamlby itself, uploads it, and uploads it again every time you save. The talk box shows the id with a capital; give it a proper name withnames: { guard: 'Brannoc' }intalkingCharacters(src/main.ts).
Verify
- The dev server logs
gameable: talk: guard is ready (story north-gate-guard, character north-gate-guard). - A mistake in the file logs
guard's story (…) was not taken:with the service's reason; fix it and save.
See also
- Talking characters — the story file's fields
- Talk to a character — the next step: the character in the game
- Let the game decide a conversation — objectives the game decides on