NPC Details
generateNPCDetailsFires once when an AI-created NPC first appears in scene with only minimal first-pass data. Generates the full basicInfo, hiddenInfo, personality, and abilities record. Distinct from generateCharacterBackground, which generates the player character's backstory and appearance during character creation.
"NPC Details Instructions"
- Editor location
- Files → AI → NPC Details
- Editor type
- Edit in Studio + View JSON
- Size limits
- Each string leaf under a task (
aiInstructions.<task>.<key>) — 5,000 aiInstructions.generateNPCDetailstotal — 26,000
- Each string leaf under a task (
Schema
{
"aiInstructions": {
"generateNPCDetails": {
"<key>": "string"
}
}
}Example
{
"aiInstructions": {
"generateNPCDetails": {
"custom": "## HIDDEN INFO STRUCTURE\nAll NPCs are SENTIENT. Write hiddenInfo as three labelled fields in dense behavioural prose. Use this exact format:\n\nFormat: \"hiddenInfo\": \"Background: ...\\n\\nPersonality: ...\\n\\nCombat: ...\"\n\nBackground (6-8 sentences): Name, age, origin/clan, rank or skill tier; how they reached their current level; at least one defined relationship; current objective or pressure; personal view on their role or world.\n\nPersonality (7-9 sentences): Speech style and tone; default behaviour and how it shifts under pressure; routine and idle tendencies; behaviour toward higher vs lower status; what they hide vs reveal; one defining belief or trait outside combat.\n\nCombat (4-5 sentences): Fighting style tied to their training and specialisation; preferred range and engagement style; triggers for escalation or disengagement; reaction to injury or disadvantage; one distinct combat habit.\n\n## ABILITIES (MANDATORY)\nAll NPCs must have 6-10 abilities. Abilities must be broad systems, not single techniques; must reflect rank and specialisation; must explain practical combat or utility use.\nFormat: (TYPE) Ability Name: Description. Types: attack, combat, utility.\n\n## ARCHETYPE FIRST\nNPCs must be immediately readable on first encounter. Each rank or class should carry a one-line silhouette: 'reactive, learning' / 'composed, dependable' / 'commanding, experienced' / 'silent, efficient, lethal' / 'authoritative, dominant'. Match observable behaviour to the silhouette.\n\n## CHARACTER PHILOSOPHY\nDefine characters by what they want — ambitions, loyalties, drives — not by what they have lost. Lead with desire, not damage.\n\n## KNOWLEDGE LIMITS\nNPCs volunteer only what their role and position would plausibly allow. Hidden information surfaces through play, observation, or earned trust — never through narrator convenience.\n\n## BANNED TYPES\nNo bureaucrats, pedants, worriers, sticklers, moralists, or procedural personalities. Any record-keeper should be dangerous or funny, not procedural.",
"style": "## Style\n* Plain, period-appropriate language\n* No anachronisms; nothing that sounds modern in a pre-industrial setting",
"cliche_avoidance": "## Cliche Avoidance\n* No retired mercenaries, chosen ones, or amnesiacs",
"faction_affiliation": "## Faction Affiliation\n- Assign a faction only when the NPC would plausibly be known to it"
}
}
}A worked pattern with labelled hiddenInfo sections — replace world-specific tokens:
Fields
Each key replaces one section of the prompt the engine ships for this task. Set only the sections you want to change; every key you leave out keeps Voyage's own text.
custom
Free-form rules layered over the whole pass rather than one section.
character_creator_instructions
The opening brief: what the task is producing and that the world background sets genre, tone, style, and setting.
personality_archetype_information
How to use archetype guidance when the engine supplies it, and what to do for lower-tier characters that arrive without any.
style
Prose register for the whole NPC: plain language, grounded and flawed people, tropes subverted by ordinary human weakness, nothing anachronistic to the setting.
cliche_avoidance
Backstories to refuse outright. Voyage's default rules out retired mercenaries, former servants of the king, orphans, and fallen nobles.
basic_info
The short public-facing description: appearance, gender, approximate age, bearing, demeanour. Voyage's default keeps it evergreen and bars anything situational.
hidden_info
The private brief written as narrative: who they are, the event that shaped them and what they took from it, and the specific thing they care about that drives their choices.
personality
The comma-separated trait list, mixing plain adjectives with descriptive phrases and pairing outward traits with inner motivation. Voyage's default asks for a contradiction and rules out quirks and verbal tics.
abilities
Shape of the ability list, including how many, the (TYPE) NAME: DESCRIPTION format, and that they stay useful in combat or conflict.
faction_affiliation
When to attach a faction. Voyage's default treats it as optional, restricts it to factions the world already defines, and assigns one only where the NPC's occupation, values, or goals line up.
Note:
generateNPCDetailsruns on AI-improvised, authored, and quest-spawned NPCs alike, on each NPC's first meaningful appearance — not only AI-created ones.
Authoring pattern
- Labelled
hiddenInfosections with explicit sentence counts. Telling the modelBackground (6-8 sentences) / Personality (7-9 sentences) / Combat (4-5 sentences)produces consistent depth across all generated NPCs. The labels themselves anchor the model's output structure. Format:directive with literal escaped newlines. Showing the exact intended output string —"Background: ...\n\nPersonality: ...\n\nCombat: ..."— pins the model to the format rather than asking it to infer.- Mandatory abilities count + format spec.
6-10 abilitiesplusFormat: (TYPE) Name: Descriptionplus the enum of types prevents the model from producing one-line ability strings or skipping the count. - Archetype-first design. A one-line silhouette per rank/class makes generated NPCs immediately readable on first encounter. The model uses the silhouette as the seed and fills outward.
- Character philosophy and knowledge limits as cross-cutting rules. These apply regardless of which archetype the NPC falls into. Keep them short and prescriptive —
Lead with desire, not damageis more useful than three paragraphs about motivation theory. - Banned-types list to suppress default tropes. Without an explicit ban the model defaults toward procedural, anxious, or worry-coded characters. Naming what NOT to produce is more effective than describing what TO produce.
How personality manifests physically: posture, speech patterns, how the character moves. "Confident" is a label; "speaks over the ends of other people's sentences" is a manifestation. Apply this rule to every Personality block.
Age and energy default: younger characters (late teens / twenties human equivalent). Older characters should be vital and dynamic, not efficient and weathered.
Note: To enforce a baseline depth floor (a minimum character count) on generated
hiddenInfo, see Minimum output depth in the Advanced AI Techniques appendix.