NPC Intents
generateNPCIntentsFires when the AI chooses NPC goals for a turn. Medium priority: near-constant in NPC-heavy play. Controls quality gates, escalation pacing, and per-scene-type intent logic. Supports multiple named keys for scene-type-specific behavior.
"NPC Intents Instructions"
- Editor location
- Files → AI → Advanced → NPC Intents
- Editor type
- Edit in Studio + View JSON
- Size limits
- Each string leaf under
aiInstructions.generateNPCIntents— 8,000 aiInstructions.generateNPCIntentstotal — 40,000
- Each string leaf under
Schema
{
"aiInstructions": {
"generateNPCIntents": {
"<key>": "string"
}
}
}Any key names work — the engine's seeded defaults and any keys you add beside them are conventions, not schema constraints.
Example
{
"aiInstructions": {
"generateNPCIntents": {
"core_principles": "# NPC INTENT INSTRUCTIONS\nYou are generating intents for NPCs in a roleplaying game.\nThink of yourself as playing these characters and pro-actively co-authoring and driving the story forward.\n\n## DEFINITION\nIntents are actions that the NPC wants to take, but have not yet been evaluated, resolved, or narrated.",
"when_to_generate": "## WHEN TO GENERATE INTENTS\n\n### In Combat\nGenerate intents for **all** NPCs who are actively participating in combat.\nThe number of intents per NPC should match their importance by tier:\n- **trivial/weak**: 1 simple, direct intent\n- **average**: 1-2 intents with basic tactics\n- **strong**: 2 intents, should use abilities when appropriate\n- **elite/boss/mythic**: 2-3 intents, tactical and dramatic\n\n### Out of Combat\n**STRICT LIMIT**: Generate intents for AT MOST 1-2 NPCs out of combat. Often zero is correct.",
"what_is_not_action": "## WHAT IS NOT AN ACTION\n\nAn intent must describe something the NPC **does**, not something they **think** or **feel**.\n\n### The \"What Happens Next?\" Test\nAsk yourself: if this intent resolves, what changes in the scene? If the answer is \"nothing, they're just standing there,\" it's not a valid intent.",
"description_economy": "## DESCRIPTION ECONOMY\n\nYour job is to specify WHAT happens, not to narrate it beautifully. The story generator will add atmosphere, prose style, and sensory detail. Don't do its job for it.",
"summary_established_beats": "## ESTABLISHED STORY (PAST SUMMARY AND RECENT STORY)\n\n**Past Story Summary** and **Recent Story** are the record of what has already happened and what has already been said. Treat them as authoritative.",
"action_format": "## ACTION FORMAT\n\nWrite 'action' as 1-3 complete sentences that describe:\n1. What the NPC wants to accomplish\n2. How they're approaching it (their method or style)\n3. Any detail that makes this action distinctive or interesting\n\nWrite in present tense, third person (\"She lunges forward...\").",
"story_driver": "## STORY DRIVING\n\nSubject to **Established Story (Past Summary and Recent Story)**: do not re-run beats or escalation already recorded there.\n\nNPCs are co-authors of the story.",
"custom": "## WORLD RULES\nCity guards escalate one step at a time: warn, then detain, then draw steel. Never skip a step in either direction.\nCourt figures act through intermediaries in public; they issue orders, they do not brawl."
}
}
}The engine's seeded keys, with each default's guidance condensed -- a new world ships the full versions, and custom here carries the kind of world-specific rule it exists for.
The engine's default keys
A new world ships this task pre-seeded with seven named instruction keys plus an empty custom -- the task's working base.
| Key | What the default text carries |
|---|---|
core_principles | Frames the AI as playing every NPC and pro-actively co-authoring the story; defines an intent (an action the NPC wants to take, not yet resolved or narrated) and its quality criteria |
when_to_generate | When intents are generated: all combat participants get intents scaled by tier (trivial 1 up to elite/boss 2-3); out of combat a strict cap of 1-2 NPCs, often zero |
what_is_not_action | An intent must be something the NPC does, not thinks or feels -- the "what happens next?" test, with red-flag phrasings that are not actions |
description_economy | Specify what happens instead of narrating it: dialogue as the actual words, atmosphere left to the story generator |
summary_established_beats | Past Story Summary and Recent Story are authoritative -- intents must not restate or re-perform beats already recorded there |
action_format | The action is 1-3 present-tense, third-person sentences: what the NPC wants, how they approach it, and one distinctive detail |
story_driver | NPCs co-author the story -- complicate or escalate scenes for energy, without re-running recorded beats |
custom | Ships empty -- the slot for your world's own rules |
The seeded text is also why this task has its own rows in the Size Limits panel.
Fields
The task's real field set is the engine's seven seeded keys plus custom (see the table above) -- edit their content to change behavior.
custom
Ships empty: the slot for your world's own rules. As the Schema note states, key names are free-form -- any named slot you add beside the seeded keys is read as part of this task.
Authoring pattern
Start from the seeded defaults and edit them in place -- each already owns a job, so a world rule belongs in the key that covers it:
- Who receives intents (combat tiers, the out-of-combat cap) --
when_to_generate. If the model still over-populates reactions, tighten it with an explicit URGENCY + IMPACT + RELEVANCE test so only NPCs whose action matters right now act. - What counts as a valid intent and how it is phrased --
what_is_not_actionandaction_format. - Continuity discipline --
summary_established_beatsandstory_driveralready forbid re-running recorded beats; sharpen them with your world's own red lines.
Patterns worth adding as extra keys or in custom:
- Mandatory scene classification before any logic runs. Forcing the AI to pick a scene category first prevents the wrong behavior rules from firing in the wrong context. The classifier itself is short; the value comes from making it the first thing the AI commits to.
- Per-scene-type rule blocks. Each scene category gets its own short rule set, anchored to the classifier. Easier for the AI to apply than a single block trying to cover every case.
- Escalation ladder with one-step-at-a-time discipline. Naming the rungs prevents jumps from
neutralstraight tohostileon weak provocation. The rule "never skip a step" applies both up and down the ladder. - Scene integrity rules. The strongest defense against AI invention: "every intent must connect to something already established in Recent Story." Pair with "no new threats invented through intents" and "calm scenes stay calm" to suppress reflexive escalation.
- A final hard rule. End your added instructions with a one-line rule the model treats as a hard constraint -- the single thing you most want enforced (uniqueness, no spam, no out-of-character action).
- Intent quality gate. Before generating any intent, verify the NPC can perceive the trigger and has a reason to act right now, not just opportunity. No other NPC should be covering the same beat simultaneously.