{"tab":"ai","section":"imagePromptConfiguration","title":"Image Prompt Configuration","summary":"Custom prompt templates for AI image generation per content category, plus toggles for Voyage's default character and location art style. Author-provided strings layered on top of Voyage's default image prompts for NPC portraits, location art, and region art.","kind":"schema","uiLocation":"AI → Image Prompts","uiSubtitle":"\"Custom prompt templates for NPC, location, and region art\"","editor":"JSON only","related":[{"section":"npcs","note":"per-NPC portrait generation uses these templates"},{"section":"locations","note":"location art layered onto location image generation"},{"section":"regions","note":"region art layered onto region image generation"}],"wikiUrl":"/ai/imagePromptConfiguration","schema":{"_type":"partial","fields":{"npcs":"string","locations":"string","regions":"string","characterLoraEnabled":"boolean","locationLoraEnabled":"boolean"}},"sizeLimits":[{"id":"imagePromptField","group":"Image Prompts","label":"`imagePromptConfiguration.npcs` / `.locations` / `.regions`","measure":"rawChars","enforced":5000,"display":5000,"sections":["ai/imagePromptConfiguration"]},{"id":"imagePromptCombined","group":"Image Prompts","label":"`imagePromptConfiguration` (combined npcs+locations+regions)","measure":"rawChars","enforced":15000,"display":15000,"sections":["ai/imagePromptConfiguration"]}],"blocks":[{"type":"example","lang":"json","code":"{\n  \"imagePromptConfiguration\": {\n    \"npcs\": \"Style: painted oil portrait, soft warm light, period clothing, head-and-shoulders composition, neutral background.\",\n    \"locations\": \"Style: matte painting, dramatic atmospheric lighting, weathered surfaces, no people in frame.\",\n    \"regions\": \"Style: aerial concept art, broad landscape, painterly, time of day appropriate to region biome.\",\n    \"characterLoraEnabled\": true,\n    \"locationLoraEnabled\": true\n  }\n}"},{"type":"prose","md":"Populating a field injects your text into every image request for that category, useful for enforcing a consistent style across the world (e.g. \"watercolor, soft edges, painterly\" applied to every NPC portrait)."},{"type":"fields","fields":[{"name":"npcs","tooltip":"npcs: prepended/appended to every NPC portrait generation request.","md":"`npcs`: prepended/appended to every NPC portrait generation request. Useful for locking down portrait style and framing without writing the same instruction in every NPC's `basicInfo`."},{"name":"locations","tooltip":"locations: applied to every location art request.","md":"`locations`: applied to every location art request. Use for environment-consistency directives (camera angle, mood, art style)."},{"name":"regions","tooltip":"regions: applied to every region art request.","md":"`regions`: applied to every region art request. Region art is typically broader landscape framing; this slot enforces that."},{"name":"characterLoraEnabled","tooltip":"characterLoraEnabled (boolean): toggles Voyage's default character art style for character and NPC portrait generation.","md":"`characterLoraEnabled` (boolean): toggles Voyage's default character art style for character and NPC portrait generation. Labelled **\"Voyage style for characters\"** in the editor. Enabled by default: when `true`, portraits are generated with Voyage's house style applied on top of your `npcs` prompt; set `false` to drop the default style so your prompt and the base model drive the look on their own. Independent of `locationLoraEnabled`."},{"name":"locationLoraEnabled","tooltip":"locationLoraEnabled (boolean): toggles Voyage's default location art style for location and region art.","md":"`locationLoraEnabled` (boolean): toggles Voyage's default location art style for location and region art. Labelled **\"Voyage style for locations\"** in the editor. Enabled by default: when `true`, scene art uses Voyage's house style on top of your `locations`/`regions` prompts; set `false` to drop it. Independent of `characterLoraEnabled`.\n\n> **📋 Note:** All five fields are optional. For the three prompt strings (`npcs`, `locations`, `regions`), the engine substitutes Voyage's default prompt when a field is empty or absent; keep them concise enough to not crowd out the actual content prompt. The two style toggles are on by default (Voyage's default style applied); set either to `false` to turn that default style off for its category."}]},{"type":"prose","md":"## Differentiated prompts via labelled sections\n\nA single `npcs` (or `locations` or `regions`) string can contain multiple labelled sections, and the image model sorts on the NPC's type/category when generating. Use this pattern when you want different style guidance for distinct character classes (humanoid vs. creature, civilian vs. military, undead vs. living) without authoring per-NPC prompts.\n\n```json\n{\n  \"imagePromptConfiguration\": {\n    \"npcs\": \"Humanoid:\\n[Style directives for human-form characters: anime portrait, cell-shaded line art, period-appropriate clothing tags, eye and hair colour anchors, full-body composition.]\\n\\nCreature / Non-humanoid:\\n[Style directives for monsters, beasts, summons, constructs: scale and feature tags (horns, wings, tails, claws), no clothing tags, natural-stance posing, full-body silhouette must be visible.]\\n\\nUndead / Skeletal:\\n[Style directives for undead characters: skeletal features, hollow or glowing eye treatment, decay-state tags by stage, posture and clothing reflecting the character's pre-death role.]\"\n  }\n}\n```\n\n### How the sort works\n\n**How the sort works:** the AI reads the NPC's `type`, `basicInfo`, and `visualDescription` together with the full IPC string and matches the section whose label best fits the character it is generating. A section labelled `Humanoid:` applies when the character reads as human-form; `Creature:` applies when the character reads as a beast or non-humanoid; etc. Sections that don't match are ignored for that generation.\n\n### Labelling rules\n\n**Labelling rules that improve sorting accuracy:**\n\n- **Bold, capitalised labels** with a trailing colon — `Humanoid:`, `Creature:`, `Undead:`. The model uses the label as the sort key; lowercase or punctuation-soft labels read as prose.\n- **One blank line between sections.** Helps the model treat them as distinct branches.\n- **Mutually exclusive categories.** Overlapping labels (`Humanoid` + `Civilian` + `Military` all valid at once) produce inconsistent output. Pick one axis (form, role, faction, status) per IPC field.\n- **Cover the full space.** If your NPC roster includes a category not represented by any section, the model falls back to whichever section is closest or to the engine default. A `Default:` or `Other:` catch-all section is worth including.\n\n### Applying to locations and regions\n\nThe same pattern works for `locations` (interior vs. exterior, urban vs. wilderness, settled vs. ruined) and `regions` (climate biome, faction-controlled vs. wilderness, day vs. night).\n\n> **📋 Note:** For a more structured pattern that splits each category prompt into a fixed style scaffold plus per-instance variable slots (and combines naturally with the labelled-sections approach above), see [Scaffold and variable-slot image prompts](/appendix/ai-advanced-techniques#scaffold-and-variable-slot-image-prompts) in the Advanced AI Techniques appendix."}],"body":"## Example\n\n```json\n{\n  \"imagePromptConfiguration\": {\n    \"npcs\": \"Style: painted oil portrait, soft warm light, period clothing, head-and-shoulders composition, neutral background.\",\n    \"locations\": \"Style: matte painting, dramatic atmospheric lighting, weathered surfaces, no people in frame.\",\n    \"regions\": \"Style: aerial concept art, broad landscape, painterly, time of day appropriate to region biome.\",\n    \"characterLoraEnabled\": true,\n    \"locationLoraEnabled\": true\n  }\n}\n```\n\nPopulating a field injects your text into every image request for that category, useful for enforcing a consistent style across the world (e.g. \"watercolor, soft edges, painterly\" applied to every NPC portrait).\n\n## Fields\n\n### npcs\n\n`npcs`: prepended/appended to every NPC portrait generation request. Useful for locking down portrait style and framing without writing the same instruction in every NPC's `basicInfo`.\n\n### locations\n\n`locations`: applied to every location art request. Use for environment-consistency directives (camera angle, mood, art style).\n\n### regions\n\n`regions`: applied to every region art request. Region art is typically broader landscape framing; this slot enforces that.\n\n### characterLoraEnabled\n\n`characterLoraEnabled` (boolean): toggles Voyage's default character art style for character and NPC portrait generation. Labelled **\"Voyage style for characters\"** in the editor. Enabled by default: when `true`, portraits are generated with Voyage's house style applied on top of your `npcs` prompt; set `false` to drop the default style so your prompt and the base model drive the look on their own. Independent of `locationLoraEnabled`.\n\n### locationLoraEnabled\n\n`locationLoraEnabled` (boolean): toggles Voyage's default location art style for location and region art. Labelled **\"Voyage style for locations\"** in the editor. Enabled by default: when `true`, scene art uses Voyage's house style on top of your `locations`/`regions` prompts; set `false` to drop it. Independent of `characterLoraEnabled`.\n\n> **📋 Note:** All five fields are optional. For the three prompt strings (`npcs`, `locations`, `regions`), the engine substitutes Voyage's default prompt when a field is empty or absent; keep them concise enough to not crowd out the actual content prompt. The two style toggles are on by default (Voyage's default style applied); set either to `false` to turn that default style off for its category.\n\n## Differentiated prompts via labelled sections\n\nA single `npcs` (or `locations` or `regions`) string can contain multiple labelled sections, and the image model sorts on the NPC's type/category when generating. Use this pattern when you want different style guidance for distinct character classes (humanoid vs. creature, civilian vs. military, undead vs. living) without authoring per-NPC prompts.\n\n```json\n{\n  \"imagePromptConfiguration\": {\n    \"npcs\": \"Humanoid:\\n[Style directives for human-form characters: anime portrait, cell-shaded line art, period-appropriate clothing tags, eye and hair colour anchors, full-body composition.]\\n\\nCreature / Non-humanoid:\\n[Style directives for monsters, beasts, summons, constructs: scale and feature tags (horns, wings, tails, claws), no clothing tags, natural-stance posing, full-body silhouette must be visible.]\\n\\nUndead / Skeletal:\\n[Style directives for undead characters: skeletal features, hollow or glowing eye treatment, decay-state tags by stage, posture and clothing reflecting the character's pre-death role.]\"\n  }\n}\n```\n\n### How the sort works\n\n**How the sort works:** the AI reads the NPC's `type`, `basicInfo`, and `visualDescription` together with the full IPC string and matches the section whose label best fits the character it is generating. A section labelled `Humanoid:` applies when the character reads as human-form; `Creature:` applies when the character reads as a beast or non-humanoid; etc. Sections that don't match are ignored for that generation.\n\n### Labelling rules\n\n**Labelling rules that improve sorting accuracy:**\n\n- **Bold, capitalised labels** with a trailing colon — `Humanoid:`, `Creature:`, `Undead:`. The model uses the label as the sort key; lowercase or punctuation-soft labels read as prose.\n- **One blank line between sections.** Helps the model treat them as distinct branches.\n- **Mutually exclusive categories.** Overlapping labels (`Humanoid` + `Civilian` + `Military` all valid at once) produce inconsistent output. Pick one axis (form, role, faction, status) per IPC field.\n- **Cover the full space.** If your NPC roster includes a category not represented by any section, the model falls back to whichever section is closest or to the engine default. A `Default:` or `Other:` catch-all section is worth including.\n\n### Applying to locations and regions\n\nThe same pattern works for `locations` (interior vs. exterior, urban vs. wilderness, settled vs. ruined) and `regions` (climate biome, faction-controlled vs. wilderness, day vs. night).\n\n> **📋 Note:** For a more structured pattern that splits each category prompt into a fixed style scaffold plus per-instance variable slots (and combines naturally with the labelled-sections approach above), see [Scaffold and variable-slot image prompts](/appendix/ai-advanced-techniques#scaffold-and-variable-slot-image-prompts) in the Advanced AI Techniques appendix."}