Skip to content

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 ​

  1. The story file. src/guard.story.yaml (src/<id>.story.yaml), one file per character, in Convorcher's story format (Talking characters):

    yaml
    spec_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: normal

    A 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_state shows it as voice.voiceId). Put it in voice_id so the character speaks in that voice; the package the asset manager gives a game does not carry it.

  2. That is all. The file's name is the character's id (guard): the dev server finds src/<id>.story.yaml by 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 with names: { guard: 'Brannoc' } in talkingCharacters (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 ​