Character JSON Template
```toon
character:
identity_id: unique_slug_for_identity_v1
name: Full Character Name
species_or_type: "Race or species (e.g., Human, Dwarf, Half-Elf, Ratfolk)"
apparent_age: 0
height: "### cm"
build: "body type or silhouette (e.g., stocky, athletic, slender)"
skin_tone: "#HEXCODE"
face:
shape: "e.g., square, oval, heart-shaped"
brow: "e.g., straight, arched, heavy"
eyes:
color: "#HEXCODE"
shape: "e.g., almond, round, narrow"
distance: close-set | average | wide-set
nose: "e.g., straight, aquiline, upturned"
mouth: "e.g., full lips, thin line, defined cupid’s bow"
distinctives[1]:
"scars, freckles, tattoos, moles, unique marks (side/position/count)"
hair:
color: name + #HEXCODE
length: "e.g., short, shoulder, waist"
style: "e.g., loose waves, braids, tied back"
part: left | right | center | none
palette[5]:
"#HEX1"
"#HEX2"
"#HEX3"
"#HEX4"
"#HEX5"
signature_items[1]:
"notable items always associated (e.g., hatchets, pendant)"
wardrobe_default: typical outfit or armor set
allowed_variations:
hair: "limits or permissions (e.g., updo allowed; no color change)"
makeup: "e.g., minimal, none, light"
aging: ±X years
weight: stable | small variance
do_not_change[4]:
eye color
scar positions
freckle pattern
face proportions
notes: "optional; any special reminders about lighting, accessories, or backstory that affect visuals"
```
Style JSON Template
```toon
style:
mode: anime_cel | anime_semi_realistic | manga_halftone
line_weight: thin | medium | thick
palette_bias: warm | cool | neutral
finish: clean | light_texture | painterly
saturation: low | medium | high
contrast: low | medium | high
```
Scene JSON Template
```toon
scene:
pose: "describe stance and posture (e.g., 'standing with arms crossed, weight on left leg')"
expression: "facial mood and tone (e.g., 'focused frown', 'gentle smile')"
camera: "lens + angle (e.g., '50mm portrait, eye-level', '35mm wide, low angle')"
framing: headshot | bust | waist-up | full-body
lighting: "type, source, and tone (e.g., 'warm forge glow from right', 'overcast diffused light')"
environment: "short scene setting (e.g., 'inside dwarven forge', 'sunset cliffside')"
wardrobe_override: optional; specify outfit change if not default
props[1]:
list visible props or gear
motion: "optional; dynamic action (e.g., 'hammer mid-swing', 'cloak flowing')"
weather: "optional; e.g., 'rain', 'snow', 'clear sky'"
mood: "optional; emotional atmosphere (e.g., 'tense and determined')"
composition_notes: "optional; layout or emphasis details (e.g., 'rule-of-thirds focus on face')"
```
Optional Output JSON Template
```toon
output:
size: 1024x1536 | 1536x1024 | 1024x1024
background: plain | transparent | descriptive background detail
count: 1
```
House Crests
```toon
house_name: ""
motto: ""
crest:
primary_symbol:
object: ""
description: ""
style: ""
position: ""
color: ""
secondary_elements[0]:
field:
pattern: ""
colors[0]:
division_style: ""
texture: ""
accents:
trim_color: ""
metallic_details: ""
light_effect: ""
shield_shape: ""
ornamentation:
helm:
mantling:
banner:
background:
vibe[0]:
inspiration: ""
metadata:
artist_reference: ""
style_keywords[0]:
usage_notes: ""
```
Locations JSON Template
```toon
{
"version": "0.2",
"coord_space": { "type": "normalized", "width": 1000, "height": 1000 },
"layers": ["regions", "water", "mountains", "forests", "rivers", "routes", "cities", "labels"],
"styles": {
"region": { "fill": "#cccccc", "fill_opacity": 0.12, "stroke": "#888888", "stroke_width": 2 },
"water": { "fill": "#66aee8", "fill_opacity": 0.35, "stroke": "#3a87b7", "stroke_width": 1 },
"mountains": { "stroke": "#7a7a7a", "stroke_width": 2, "dash": [6,4] },
"forest": { "fill": "#4a7f4a", "fill_opacity": 0.25, "stroke": "#2f5b2f", "stroke_width": 1 },
"river": { "stroke": "#5fb3e0", "stroke_width": 2 },
"city": { "icon": "city-dot", "size": 10, "color": "#111111" },
"route": { "stroke": "#c2a15a", "stroke_width": 3 },
"label_major": { "font": "Serif", "size": 18, "color": "#111111", "halo": "#ffffff", "halo_width": 2 },
"label_minor": { "font": "Serif", "size": 14, "color": "#222222", "halo": "#ffffff", "halo_width": 2 }
},
"nodes": [
{
"id": "<unique_slug>",
"name": "<Display Name>",
"kind": "<region|subregion|city|water|mountain_range|forest|frontier|landmark>",
"layer": "<regions|cities|water|mountains|forests|rivers|labels>",
"parent_id": "<parent_slug_or_null>",
"geometry": {
"type": "<point|polygon|polyline>",
"pos": [<x>, <y>],
"coords": [[<x>,<y>], [<x>,<y>]]
},
"style": "<style_key_or_omit>",
"label": {
"text": "<Label>",
"layer": "labels",
"style": "<label_major|label_minor>",
"anchor": [<x>, <y>],
"offset": [<dx>, <dy>]
},
"z": <draw_order_number>,
"visibility": { "min_zoom": <number>, "max_zoom": <number> },
"interactions": { "on_click": { "type": "<open|modal|link>", "target": "<route_or_id>" } },
"tags": ["<tag1>", "<tag2>"]
}
],
"connections": [
{
"id": "<edge_id>",
"name": "<Display Name>",
"kind": "<road|river|ferry|trail>",
"layer": "routes",
"geometry": { "type": "polyline", "coords": [[<x>,<y>],[<x>,<y>]] },
"style": "route",
"z": <draw_order_number>,
"visibility": { "min_zoom": <number>, "max_zoom": <number> },
"meta": { "from": "<node_id>", "to": "<node_id>" }
}
]
}
```