Townsfolk who talk back
Walk up to a quartermaster and ask him anything. He answers in character, remembers your name through the conversation, and knows only Tirawen. Ask him about Earth, real politics, or court intrigue above his station and he gets baffled or shrugs you off, because a weather-worn supply hand at a frontier post would not know either.
The model gives each NPC a voice; the server decides what is actually true.
Dialogue runs on a small local language model, off the simulation tick, on hardware we own. The model proposes a line and a mood; the server accepts the mood only if it is one of three allowed values, and that mood is the only piece of NPC state the model is ever allowed to touch. So a model glitch, or a player trying to talk an NPC into something, cannot move it, change the world, or wedge it into a bad state. Every call is best-effort: a timeout, a hard cap on concurrent calls, and a deterministic brain that takes over the instant the model is slow, busy, or down.
- The model only ever sets one NPC field, the mood, to one of three values. Everything else (inventory, prices, position) is server state it cannot reach.
- Calls run off the 20 Hz tick with a 20-second timeout and at most four at once; excess calls fall straight through to the deterministic brain instead of queuing.
- Player input is capped and sanitized, replies are length-limited, and there is a per-player cooldown, so the dialogue channel cannot be used to flood the model.
- Topics come in three honesty tiers: canned lines, lines built from real server state, and model-voiced replies; a forged topic id is rejected like any other bad request.