Home Scheduled NPC Dialog & Gossip

Scheduled NPC Dialog & Gossip

Player conversations with NPCs are deterministic. Authored dialogue packs and personality stay in YAML. A batch LLM job refreshes Postgres overlays a few times per game day so speech stays current with town gossip and design changes — without live per-turn token cost.

Model

Layer Storage Who edits
Identity (personality, backstory, rails) assets/npcs/*.yaml Designers / content-admin NPCs
Static lines (sleep, closed, quests) assets/dialogue/*.yaml Designers / Dialogue tab
Dynamic lines + knowledge Postgres npc_dialog_overlay Regen job + Gossip tab
Town digest Postgres world_gossip_digest Regen job
Gossip bus Postgres world_event_inbox Designers, future sim hooks

Cadence

npc_dialog_refresh in server-settings:

  • morning — day plan, shop mood
  • midday — market / lunch buzz
  • evening — pub gossip (night enter also maps to evening when listed)

Region sim enqueues on phase enter; region worker runs OpenRouter offline and upserts overlays. No content publish.

Talk path

  1. Static / engine / quest line ids
  2. Overlay topic-tag match (trust-gated)
  3. Overlay greet / chitchat rotation
  4. Pack turn rotation

Live OpenRouter chat on NpcTalkSay when npc_live_chat policy allows; otherwise deterministic packs + overlays.

Admin

Content-admin Gossip tab: digests, events, overlay edit, force regen. Requires control-plane auth.

See also