How an AI game master keeps non-player characters consistent

Picture a ferryman you met in your first session. He is dry, suspicious of strangers, and speaks in short sentences. Forty turns later you meet him again, and he greets you with a speech full of warm, flowing metaphors. Nothing in the story explains the change. The model simply drifted.
If you have tried AI-narrated games before, you have probably seen this, and it is a fair reason to be wary. A character who sounds different every scene is not a character, just a name attached to whatever the model felt like writing. This post explains what Fabulator does about it, and where the approach has limits.
Why characters drift in the first place
The usual cause is simple. Many systems work out who a character is from the recent transcript and a running summary. As the conversation grows, the early scenes fall out of the window or get compressed, and the character's voice goes with them. The model then fills the gap with its own default register, which is polite, articulate and a little eager. Every NPC slowly converges on the same person.
Fabulator's design starts from a different premise: who a character is should not be inferred from the transcript at all. It should be stored, and handed to the model fresh each turn.
A card for identity, a condition for mood
Each character has a character card. The card holds the stable things: appearance, personality, voice, backstory, relationships, what drives them, what they are good at. Voice is a first-class part of the card, so register, verbal tics and sample lines live in data rather than in the model's memory of an earlier scene.
Mood is kept somewhere else. A character's current mood and conditions are volatile, and they are expected to change from turn to turn. Identity is not. Separating the two means a character can be furious this scene and calm the next without that swing dragging their personality along with it. The card is the thing the mood returns to.
When you meet the ferryman again, the engine assembles his card into the prompt along with his present mood. His dryness is part of the input, not something the model has to remember.
The model proposes, the engine checks
A reasonable follow-up is whether the model can simply rewrite the card by accident. It cannot. In Fabulator the model never has write authority. It proposes changes, and the engine validates those proposals against schemas, bounds and canon before anything is committed. The design treats a character's personality core like a world rule: ordinary state updates are not allowed to alter it. If a character is meant to change, for example a cautious scholar who becomes reckless after a loss, that is meant to be a deliberate, recorded change rather than an accident.
This is also why a retcon feels different from drift. Drift is the story changing by accident. A retcon is a decision, and it leaves a record.
Secrets without leaks
Consistency covers what a character hides as well as how they talk. Cards can carry secret facets, such as a hidden allegiance or a crime. The design keeps those out of any ordinary player-facing read of the character. The narrator is allowed to know the secret of an NPC who is present in the scene, so the story can foreshadow it, but the narrator is told to treat it as something to be earned rather than announced.
The aim is that the ferryman who is secretly smuggling cargo behaves like someone with something to protect, long before you learn why.
What this does not promise
It is worth being plain about the limits. A language model is still a language model. Stored cards raise the floor on consistency, but they do not turn narration into a script, and a character may occasionally phrase something in a way that surprises you. The difference is that the surprise sits on top of a fixed description of who they are, rather than replacing it.
Authors can shape this too. The fields on a card are the same ones an Author fills in when building a world, and there is an open custom category for anything a story needs, such as an accent or a signature habit.
Try it on a character you care about
The easiest way to judge this is to test it. Open Discover, pick a World Seed with a character who has a strong manner of speaking, and start a campaign. Talk to that character early, then leave and come back several scenes later. See whether the voice holds. If you are sceptical, that is exactly the right way to check.
Juega tu propia historia narrada por IA
Fabulator es un director de juego con IA que recuerda tus personajes, lugares y decisiones. Elige una Semilla de Mundo publicada y juega, o crea la tuya.
