MASTERPLAN current state reflects M1 complete, M2 ~85% done with full inventory of what exists and what's missing. REQUIRED_ASSETS adds completion tracking table (92/230+ assets, ~40%). Events registry status corrected from "none implemented" to reflect M2 events and completed modifier icons/backgrounds. REVIEW_NOTES resolves WARNING-01 (pillars), WARNING-05 (attention unified), WARNING-06/07 (trigger distinctions), WARNING-08 (religion family), updates NOTE-02 (province IDs), and corrects summary counts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
51 KiB
Required Visual Assets — Lords of Ash
Complete inventory of every visual asset needed across all milestones, from placeholder icons to publication-ready map art.
Summary
| Category | Count | Format | First Needed |
|---|---|---|---|
| Trait icons | ~26 | DDS (uncompressed ARGB), 120x120 | M8 |
| Modifier icons | ~53 | DDS (uncompressed ARGB), 60x60 | M4/M8 |
| Decision illustrations | ~10 | DDS (DXT1), 1100x440 | M8 |
| Loading screens | 3-5 | DDS (DXT1), 3840x2160 | M8 |
| Bookmark art | 6 | DDS (DXT1/DXT5), 1920x1080 + UI sizes | M8 |
| Coat of Arms emblems | 12-15 | DDS (uncompressed ARGB), 128x128 | M3/M8 |
| Religion icons | 4-5 | DDS (uncompressed ARGB), 100x100 | M3/M8 |
| Men-at-Arms icons | 5 | DDS (DXT5), 60x60 | M8 |
| Event scene backgrounds | 16 | DDS, 1592x848 | M4/M8 |
| Custom map files | 20+ | PNG/BMP/DDS/CSV (see specs) | M8 |
| Portrait assets | varies | DDS (DXT5), 1024x1024 | M8 |
| Building icons | 5 | DDS (ARGB 32bpp), 60x60 | M3/M8 |
| Lifestyle assets | ~45+ | DDS, various (see 4d) | M4 |
| Activity assets | ~8+ per activity | DDS, various (see 4e) | M4 |
| Scheme icons | 2 | DDS, 120x120 | M4 |
| Bookmark art | 6 | DDS (DXT1/DXT5), various | M8 |
| Frontend art (optional) | 2 | DDS (DXT1), 3840x2160 | M8 |
| Workshop thumbnail | 1 | PNG, 512x512 | M8 |
| Total unique assets | ~230+ |
Current State (updated 2026-02-08)
| Category | Done | Total | Notes |
|---|---|---|---|
| Trait icons | 26 | 26 | Complete. All metallic arts traits. |
| Modifier icons | 42 | 53 | 21 base (M2) + 21 flavor (M7). 11 remaining. |
| Loading screens | 5 | 5 | Complete. |
| Event backgrounds | 16 | 16 | Complete. All scene classes covered. |
| Bookmark art | 3 | 6 | Background + 2 variants. 3 overlays remaining. |
| Decision illustrations | 0 | 10 | Not started. |
| CoA emblems | 0 | 13 | Not started. |
| Religion icons | 0 | 4 | Not started. |
| MaA icons | 0 | 5 | Not started. |
| Building icons | 0 | 5 | Not started. |
| Lifestyle assets | 0 | 45+ | Not started. |
| Activity assets | 0 | 8+ | Not started. |
| Scheme icons | 0 | 2 | Not started. |
| Custom map | 0 | 20+ | Not started. |
| Other | 0 | ~20 | Frontend, workshop thumbnail, portraits. |
| Total | ~92 | ~230+ | ~40% complete |
All culture graphics fall back to vanilla western_*_gfx packs. No custom
map data exists.
DDS Production Guide
All CK3 icon and illustration assets use the DDS (DirectDraw Surface) format.
Compression & Format Types (verified from CK3 v1.18 game files)
| Use case | Format | Mipmaps | Notes |
|---|---|---|---|
| Trait icons (120x120) | Uncompressed ARGB 32bpp | No | Full alpha channel. NOT DXT compressed. |
| Modifier icons (60x60) | Uncompressed ARGB 32bpp | Yes (6 levels) | Full alpha channel. |
| Decision illustrations (1100x440) | DXT1 / BC1 | No | No alpha needed. Some DLC use 2x (2200x880). |
| Loading screens (3840x2160) | DXT1 / BC1 | No | Full 4K resolution. |
| Faith icons (100x100) | Uncompressed ARGB | No | Full alpha. |
| CoA colored emblems (128x128) | Uncompressed ARGB 32bpp | No | Required for color mask system. B8G8R8A8 Linear. |
| CoA patterns (256x256) | DXT1 / BC1 | — | Opaque. |
| Tenet icons (260x400) | DXT5 / BC3 | — | Tall format, with alpha. |
| Portrait textures | DXT5 / BC3 | Yes | 1024x1024 typical. |
| Map terrain textures | DXT5 / BC3 | Yes | Tiling textures. |
| Bookmark backgrounds (1920x1080) | DXT1 / BC1 | No | Opaque illustrations. |
| Bookmark character overlays (1920x1080) | DXT5 / BC3 | No | With alpha for compositing. |
Tools
- GIMP + NVIDIA DDS plugin (or GIMP 2.10+ built-in) — supports uncompressed ARGB export
- Paint.NET + DDS FileType Plus plugin — reliable, easy UI
- texconv (Microsoft DirectXTex) — CLI batch conversion from PNG to DDS
- Photoshop + Intel Texture Works plugin
- Blender / Maya — for portrait 3D model work (with CK3 export addon)
Workflow
- Design at exact target resolution in PNG with transparent background
- Export to DDS with the correct format per asset type (see table above)
- Generate mipmaps only where required (modifier icons: yes; trait icons: no)
- Place in correct
gfx/subdirectory with exact filename matching code reference
Common Pitfalls
- Trait icons must be uncompressed ARGB, not DXT5 — wrong format causes invisible icons
- Trait icons are 120x120, not 60x60 — wrong resolution causes scaling artifacts
- Missing mipmaps on modifier icons cause blurry scaling
- Anti-aliased edges in province maps crash the game
- CoA emblems must use uncompressed ARGB for the color mask system to work
- DDS files must match the exact filename referenced in code (case-sensitive on Linux)
- Loading screens are 4K (3840x2160), not 1080p — lower res will appear blurry
M1: Foundation
No visual assets required. M1 is about data correctness — province history, scripted triggers, game rules, vanilla suppression. All visual display uses vanilla fallbacks.
Assets needed: 0
M2: The Metallic Arts
No visual assets required. M2 validates and completes all metallic arts mechanics (traits, events, MaA balance). Trait icons will show as blank placeholders until M8, which is acceptable for testing.
Assets needed: 0
(Trait icon paths are defined in code during M2 but the actual .dds files are
created in M8. Missing icons produce a "missing texture" log warning but don't
crash the game.)
M3: The Final Empire
Canonical characters, religions, buildings, kandra. Some assets benefit immersion but are not strictly required for functionality.
3a. Coat of Arms Emblems (Optional, polish in M8)
Custom dynasty and house crests for the 10 Great Houses, Lord Ruler, and special factions. In M3 these can use vanilla auto-generated CoA; custom emblems add polish.
Directory: gfx/coat_of_arms/colored_emblems/
| Asset | Format | Resolution | Description |
|---|---|---|---|
ce_house_venture.dds |
DDS (ARGB 32bpp) | 128x128 | House Venture — silver tower |
ce_house_hasting.dds |
DDS (ARGB 32bpp) | 128x128 | House Hasting — crossed swords |
ce_house_elariel.dds |
DDS (ARGB 32bpp) | 128x128 | House Elariel — rose motif |
ce_house_lekal.dds |
DDS (ARGB 32bpp) | 128x128 | House Lekal — shield/lion |
ce_house_erikeller.dds |
DDS (ARGB 32bpp) | 128x128 | House Erikeller — crest |
ce_house_tekiel.dds |
DDS (ARGB 32bpp) | 128x128 | House Tekiel — merchant scales |
ce_house_bylerum.dds |
DDS (ARGB 32bpp) | 128x128 | House Bylerum — crest |
ce_house_getrue.dds |
DDS (ARGB 32bpp) | 128x128 | House Getrue — crest |
ce_house_urbain.dds |
DDS (ARGB 32bpp) | 128x128 | House Urbain — crest |
ce_house_entrone.dds |
DDS (ARGB 32bpp) | 128x128 | House Entrone — crest |
ce_house_rashek.dds |
DDS (ARGB 32bpp) | 128x128 | Lord Ruler's house — atium/sun motif |
ce_terris_synod.dds |
DDS (ARGB 32bpp) | 128x128 | Terris Synod — metalminds |
ce_kelsier_crew.dds |
DDS (ARGB 32bpp) | 128x128 | Kelsier's crew — mistcloak/coin |
Color mask system: Colored emblems use three recognized mask colors:
- Color 1:
#000084(blue) - Color 2:
#00FF94(light green) - Color 3:
#FF0084(magenta)
The engine tints these regions at runtime based on the CoA color definition. Emblems must use uncompressed ARGB 32bpp (B8G8R8A8 Linear) — DXT compression breaks the color mask system.
Emblem registration: Each emblem needs an entry in a definition file at
gfx/coat_of_arms/colored_emblems/:
ce_house_venture.dds = {
colors = 3 # Number of color channels (1, 2, or 3)
visible = yes # Show in CoA designer
}
CoA definitions go in common/coat_of_arms/coat_of_arms/ and auto-match by
keyname (dynasty/house/title key = CoA key).
Also needed:
- Patterns in
gfx/coat_of_arms/patterns/— 256x256, DXT1 (optional, can reuse vanilla) - CoA mask at
gfx/coat_of_arms/coa_mask_texture.dds— 256x256, DXT1 (optional, vanilla default works)
Count: ~13 emblems
3b. Religion Icons (Optional, polish in M8)
Faith icons — gfx/interface/icons/faith/
| Asset | Format | Resolution | Description |
|---|---|---|---|
steel_ministry.dds |
DDS (ARGB 32bpp) | 100x100 | Steel Ministry sigil — vertical lines/spikes |
terris_worldbringers.dds |
DDS (ARGB 32bpp) | 100x100 | Keeper symbol — metalminds |
survivorism.dds |
DDS (ARGB 32bpp) | 100x100 | Survivor symbol — scars/mist |
ruin_religion.dds |
DDS (ARGB 32bpp) | 100x100 | Ruin symbol — cracked/destructive |
Referenced in religion definition via icon = <name_without_extension>.
Doctrine icons (optional) — gfx/interface/icons/faith_doctrine_groups/
| Asset | Format | Resolution | Description |
|---|---|---|---|
| Custom doctrine group icons | DDS (ARGB) | 120x120 | One per custom doctrine group |
Tenet icons (optional) — gfx/interface/icons/faith_doctrines/
| Asset | Format | Resolution | Description |
|---|---|---|---|
| Custom tenet icons | DDS (DXT5) | 260x400 | Tall format. One per custom tenet. |
Count: 4 faith icons (required) + doctrine/tenet icons (optional)
3c. Building Icons (Optional, polish in M8)
Special buildings defined in M3 (Kredik Shaw, Pits of Hathsin, Conventical of Seran, Great Library of Tathingdwen, Urteau Canal) need icons for the holding view.
| Asset | Path | Format | Resolution | Description |
|---|---|---|---|---|
| Kredik Shaw | gfx/interface/icons/buildings/building_kredik_shaw.dds |
DDS (ARGB 32bpp) | 60x60 | Spired fortress |
| Pits of Hathsin | gfx/interface/icons/buildings/building_pits_of_hathsin.dds |
DDS (ARGB 32bpp) | 60x60 | Mining pit / caves |
| Conventical of Seran | gfx/interface/icons/buildings/building_conventical_seran.dds |
DDS (ARGB 32bpp) | 60x60 | Dark monastery |
| Great Library | gfx/interface/icons/buildings/building_tathingdwen_library.dds |
DDS (ARGB 32bpp) | 60x60 | Grand library |
| Urteau Canal | gfx/interface/icons/buildings/building_urteau_canal.dds |
DDS (ARGB 32bpp) | 60x60 | Canal/waterway |
Count: 5 icons
M4: Scadrial on the Map
The vanilla map feels like Scadrial. Province modifiers, custom CBs, schemes, lifestyles, activities, and rethemed court content.
4a. Province Modifier Icons
New province modifiers defined in M4 need icons.
| Asset | Path | Format | Resolution | Description |
|---|---|---|---|---|
| Heavy Mists | gfx/interface/icons/modifiers/modifier_mist_heavy.dds |
DDS (ARGB 32bpp) | 60x60 | Thick swirling mist |
| Fertile Ashland | gfx/interface/icons/modifiers/modifier_fertile_ashland.dds |
DDS (ARGB 32bpp) | 60x60 | Green sprout in grey ash |
Count: 2 icons
4b. Custom Casus Belli Icons
| Asset | Path | Format | Resolution | Description |
|---|---|---|---|---|
| Rebellion CB | gfx/interface/icons/casus_belli/cb_rebellion.dds |
DDS (ARGB 32bpp) | 60x60 | Raised fist / broken chain |
| House Conquest | gfx/interface/icons/casus_belli/cb_house_conquest.dds |
DDS (ARGB 32bpp) | 60x60 | Sword over noble crest |
| Reclaim Dominance | gfx/interface/icons/casus_belli/cb_reclaim_dominance.dds |
DDS (ARGB 32bpp) | 60x60 | Crown / territory map |
Count: 3 icons
4c. Scheme Icons
Scheme definitions reference icons via icon = icon_scheme_<name> which maps to
gfx/interface/icons/scheme_types/icon_scheme_<name>.dds.
| Asset | Path | Format | Resolution | Description |
|---|---|---|---|---|
| Noble Infiltration | gfx/interface/icons/scheme_types/icon_scheme_noble_infiltration.dds |
DDS | 120x120 | Masked figure at a ball |
| Skaa Recruitment | gfx/interface/icons/scheme_types/icon_scheme_skaa_recruit.dds |
DDS | 120x120 | Hidden handshake |
Schemes also reference an illustration field pointing to an event scene DDS
for the scheme window background (see section 4f event backgrounds).
Count: 2 icons
4d. Lifestyle Assets
5 Mistborn-themed lifestyles planned in M4, each with a tree of perks. CK3 lifestyles require multiple asset types (verified from game files):
Lifestyle strip icons: gfx/interface/icons/lifestyles/
| Asset | Format | Resolution | Description |
|---|---|---|---|
allomantic_lifestyle.dds |
DDS | 480x160 | 3-frame sprite strip — burning metals motif |
political_lifestyle.dds |
DDS | 480x160 | Noble court / intrigue motif |
underworld_lifestyle.dds |
DDS | 480x160 | Shadowy thieving crew motif |
keeper_lifestyle.dds |
DDS | 480x160 | Terris keeper with metalminds motif |
military_lifestyle.dds |
DDS | 480x160 | Hazekillers / Koloss battle motif |
Focus icons: gfx/interface/icons/focuses/ — 140x140 DDS, ~3 per lifestyle
| Lifestyle | Focus count (est.) | Example names |
|---|---|---|
| Allomantic | 3 | allomantic_burning_focus, allomantic_pushing_focus, allomantic_enhancement_focus |
| Political | 3 | political_authority_focus, political_scheming_focus, political_diplomacy_focus |
| Underworld | 3 | underworld_thieving_focus, underworld_smuggling_focus, underworld_recruitment_focus |
| Keeper | 3 | keeper_knowledge_focus, keeper_breeding_focus, keeper_preservation_focus |
| Military | 3 | military_command_focus, military_hazekiller_focus, military_koloss_focus |
Perk tree backgrounds: gfx/interface/icons/lifestyle_tree_backgrounds/ — 348x812 DDS (tall strip), one per perk tree (~15 total for 5 lifestyles x 3 trees)
Lifestyle background illustrations: gfx/interface/illustrations/lifestyles_background/ — 608x1552 DDS (very tall vertical sidebar art), one per lifestyle
Perk node icons: gfx/interface/icons/lifestyles_perks/ — 180x60 DDS per node type
Count: 5 lifestyle strips + ~15 focus icons + ~15 tree backgrounds + 5 sidebar illustrations + perk nodes = ~45+ assets
4e. Activity Assets
Rethemed activities (Noble Ball, Mist Patrol). CK3 activities require multiple visual asset types (verified from game files):
Activity icons: gfx/interface/icons/activities/ — 80x80 standard + 164x164 header variant
| Asset | Format | Resolution | Description |
|---|---|---|---|
activity_noble_ball.dds |
DDS | 80x80 | Ball activity icon |
activity_noble_ball_header.dds |
DDS | 164x164 | Ball header variant |
activity_mist_patrol.dds |
DDS | 80x80 | Mist patrol icon |
activity_mist_patrol_header.dds |
DDS | 164x164 | Mist patrol header |
Activity header backgrounds: gfx/interface/illustrations/activity_header_backgrounds/ — 1100x440 DDS
| Asset | Format | Resolution | Description |
|---|---|---|---|
activity_noble_ball.dds |
DDS | 1100x440 | Grand ballroom panoramic |
activity_mist_patrol.dds |
DDS | 1100x440 | Soldiers in mist panoramic |
Activity type illustrations (vertical sidebar): gfx/interface/illustrations/activity_types/ — 460x1100 DDS
Activity phase icons (optional): gfx/interface/icons/activity_phases/ — 140-160px DDS
Activity intent icons (optional): gfx/interface/icons/activity_intents/ — 60x60 DDS
Count: 4 icons + 2 headers + optional type/phase/intent icons = ~8+ assets per activity
4f. Event Background Themes
Custom event themes so events don't use vanilla European backdrops. Vanilla has 205 event scene illustrations at 1592x848 (verified from game files).
Directory: gfx/interface/illustrations/event_scenes/
| Asset | Format | Resolution | Description |
|---|---|---|---|
mistborn_court.dds |
DDS | 1592x848 | Noble court with ash-stained windows |
mistborn_streets.dds |
DDS | 1592x848 | Luthadel street scene, ash and mist |
mistborn_wilderness.dds |
DDS | 1592x848 | Ash plains with distant ashmount |
mistborn_ball.dds |
DDS | 1592x848 | Ballroom scene, chandeliers, nobility |
mistborn_dungeon.dds |
DDS | 1592x848 | Dark dungeon / Pits of Hathsin caves |
mistborn_temple.dds |
DDS | 1592x848 | Steel Ministry canton interior |
mistborn_battlefield.dds |
DDS | 1592x848 | Battle scene with Koloss, ash |
mistborn_mists.dds |
DDS | 1592x848 | Dense mist scene, mysterious |
Flavor event backgrounds (needed for M7 task 7.14 — see docs/events-registry.md):
| Asset | Format | Resolution | Description |
|---|---|---|---|
mistborn_underground.dds |
DDS | 1592x848 | Secret resistance hideout, torchlit underground passage |
mistborn_fighting_pit.dds |
DDS | 1592x848 | Underground fighting arena, crowd, torchlight, blood |
mistborn_ruins.dds |
DDS | 1592x848 | Pre-Ascension ruins deep underground, alien metalwork |
mistborn_plantation.dds |
DDS | 1592x848 | Skaa plantation, ash-covered fields, overseers |
mistborn_private_chamber.dds |
DDS | 1592x848 | Noble private study, candlelight, intimate setting |
mistborn_market.dds |
DDS | 1592x848 | Trade district or black market, shadowy stalls |
mistborn_ashmount_close.dds |
DDS | 1592x848 | Volcanic eruption close-up, glowing lava and ash |
mistborn_clear_night.dds |
DDS | 1592x848 | Rare clear night sky with stars — eerie absence of mist |
Event background definitions go in common/event_backgrounds/:
mistborn_court_background = {
background = {
reference = "gfx/interface/illustrations/event_scenes/mistborn_court.dds"
environment = "environment_event_courtroom"
ambience = "event:/SFX/Events/Backgrounds/castle_interior"
}
}
Event themes go in common/event_themes/ and reference the backgrounds:
mistborn_court_theme = {
background = { reference = "mistborn_court_background" }
icon = { reference = "gfx/interface/icons/event_types/type_intrigue.dds" }
}
Events reference themes via theme = mistborn_court_theme.
Event type icons (optional): gfx/interface/icons/event_types/ — 148x148 DDS
Count: 16 scene backgrounds + definition files
M5: The Crew
Kelsier's unlanded adventurer band. Bookmark rework.
5a. Bookmark Character Portraits
Bookmark characters need curated portraits. CK3 uses the DNA/gene system for portraits, not separate image files. However, the bookmark screen shows a rendered portrait panel.
No separate image files needed — character appearance is controlled via
has_scripted_appearance = yes and custom DNA strings in history files. But the
DNA strings must be carefully crafted for:
- Kelsier (scarred arms, confident look, skaa features)
- Vin (small, young, dark hair, mistrustful expression)
- Elend Venture (noble, scholarly appearance)
- Straff Venture (older, stern noble)
Count: 0 image files (DNA is data, not art — but requires careful design)
M6: The Plan
Core narrative arc events. No new visual asset categories introduced.
6a. Additional Modifier Icons
New modifiers introduced in M6 event arcs:
| Asset | Path | Format | Resolution | Description |
|---|---|---|---|---|
| Full Crew Assembled | gfx/interface/icons/modifiers/modifier_full_crew.dds |
DDS (ARGB 32bpp) | 60x60 | Circle of figures |
Count: 1 icon
M7: The Deepness
All event arcs, atium economy, political intrigue, Mistborn duels.
7a. Additional Modifier Icons
| Asset | Path | Format | Resolution | Description |
|---|---|---|---|---|
| Eleventh Metal Insight | gfx/interface/icons/modifiers/modifier_eleventh_metal_insight.dds |
DDS (ARGB 32bpp) | 60x60 | Golden metal shard |
| Duel Veteran | gfx/interface/icons/modifiers/modifier_duel_veteran.dds |
DDS (ARGB 32bpp) | 60x60 | Crossed coin and sword |
| Atium Contract Holder | gfx/interface/icons/modifiers/modifier_atium_contract_holder.dds |
DDS (ARGB 32bpp) | 60x60 | Atium geode with scroll |
| Mist Empowerment | gfx/interface/icons/modifiers/modifier_mist_empowerment.dds |
DDS (ARGB 32bpp) | 60x60 | Swirling mist with glow |
| False Flag Framed | gfx/interface/icons/modifiers/modifier_false_flag_framed.dds |
DDS (ARGB 32bpp) | 60x60 | Two crests with knife |
| Skaa Scandal Shame | gfx/interface/icons/modifiers/modifier_skaa_scandal.dds |
DDS (ARGB 32bpp) | 60x60 | Broken noble mask |
| Beauty in Ash | gfx/interface/icons/modifiers/modifier_beauty_in_ash.dds |
DDS (ARGB 32bpp) | 60x60 | Flower against grey |
| Hero of Ages | gfx/interface/icons/modifiers/modifier_hero_of_ages.dds |
DDS (ARGB 32bpp) | 60x60 | Radiant figure in mist |
| Ashmount Eruption | gfx/interface/icons/modifiers/modifier_ashmount_eruption.dds |
DDS (ARGB 32bpp) | 60x60 | Erupting volcano |
| Mist Fear | gfx/interface/icons/modifiers/modifier_mist_fear.dds |
DDS (ARGB 32bpp) | 60x60 | Cowering figure in fog |
| Post-Empire Chaos | gfx/interface/icons/modifiers/modifier_post_empire_chaos.dds |
DDS (ARGB 32bpp) | 60x60 | Crumbling tower |
| Terris Breeding Program | gfx/interface/icons/modifiers/modifier_terris_breeding.dds |
DDS (ARGB 32bpp) | 60x60 | Intertwined metalminds |
Count: 12 icons
7b. Additional Decision Illustrations
New decisions from M7 event arcs:
| Asset | Path | Format | Resolution | Description |
|---|---|---|---|---|
| Raid Noble House | gfx/interface/illustrations/decisions/decision_raid.dds |
DDS (DXT1) | 1100x440 | Night raid on a noble keep |
| Challenge Allomancer | gfx/interface/illustrations/decisions/decision_duel.dds |
DDS (DXT1) | 1100x440 | Two Allomancers facing off in mist |
| Assault Kredik Shaw | gfx/interface/illustrations/decisions/decision_assault_kredik_shaw.dds |
DDS (DXT1) | 1100x440 | Siege of Lord Ruler's palace |
Count: 3 illustrations
7c. Flavor Event Modifier Icons
New modifiers introduced by the flavor events expansion (task 7.14 — see
docs/events-registry.md for full event catalog).
Directory: gfx/interface/icons/modifiers/
| Asset | Format | Resolution | Description |
|---|---|---|---|
modifier_underground_network.dds |
DDS (ARGB 32bpp) | 60x60 | Skaa resistance network — hidden tunnels |
modifier_keeper_advisor.dds |
DDS (ARGB 32bpp) | 60x60 | Terris Keeper serving as advisor — metalmind glow |
modifier_pewter_gate_champion.dds |
DDS (ARGB 32bpp) | 60x60 | Fighting pit champion — fist and laurel |
modifier_mist_scholar.dds |
DDS (ARGB 32bpp) | 60x60 | Scholar studying mist behavior — book and swirl |
modifier_mist_warden.dds |
DDS (ARGB 32bpp) | 60x60 | Guardian against mist threats — shield and mist |
modifier_mist_denier.dds |
DDS (ARGB 32bpp) | 60x60 | Willful ignorance of mist changes — closed eye |
modifier_ruin_pact.dds |
DDS (ARGB 32bpp) | 60x60 | Accepted Ruin's bargain — dark handshake |
modifier_ministry_insider.dds |
DDS (ARGB 32bpp) | 60x60 | Obligator informant — Ministry sigil with whisper |
modifier_combat_veteran.dds |
DDS (ARGB 32bpp) | 60x60 | Survived the pewter gate — scarred knuckles |
modifier_underground_contacts.dds |
DDS (ARGB 32bpp) | 60x60 | Underworld connections — shadowed handshake |
modifier_house_rivalry.dds |
DDS (ARGB 32bpp) | 60x60 | Active feud with another house — crossed crests |
modifier_cautious_ruler.dds |
DDS (ARGB 32bpp) | 60x60 | Learned caution from Lord Ruler attention — wary eye |
modifier_defiant_confidence.dds |
DDS (ARGB 32bpp) | 60x60 | Hardened by defying the Lord Ruler — raised chin |
modifier_paranoid_ruler.dds |
DDS (ARGB 32bpp) | 60x60 | Paranoia from attention experience — fractured mirror |
modifier_mist_sickness.dds |
DDS (ARGB 32bpp) | 60x60 | Province: mist sickness outbreak — sick figure in fog |
modifier_ashfall_crisis.dds |
DDS (ARGB 32bpp) | 60x60 | Province: severe ashfall — buried buildings |
modifier_metal_shortage.dds |
DDS (ARGB 32bpp) | 60x60 | Metal supply disrupted — empty scales |
modifier_skaa_loyalty.dds |
DDS (ARGB 32bpp) | 60x60 | Skaa population supportive — clasped hands |
modifier_skaa_resentment.dds |
DDS (ARGB 32bpp) | 60x60 | Skaa population hostile — clenched fist |
modifier_double_agent.dds |
DDS (ARGB 32bpp) | 60x60 | Running a turned spy — two-faced mask |
modifier_artifact_corruption.dds |
DDS (ARGB 32bpp) | 60x60 | Ruin-tainted artifact — cracked relic with red glow |
Count: 21 icons
M8: The Art of Metals
Custom map, full graphics, publication polish. This is the primary art milestone where most visual assets are created.
8a. Custom Map Files
The single highest-risk and most labor-intensive asset category. CK3 maps require pixel-perfect files that work together as a set. All dimensions are relative to a base map size (W x H). Width must be >= height (known bug since v1.9: north part of heightmap renders black if height > width).
Recommended base size: 4096x2048 for a focused total conversion. Vanilla is 8192x4096. Power-of-2 dimensions recommended.
Directory: map_data/
Core Map Files (required)
| File | Format | Dimensions | Depth | Description |
|---|---|---|---|---|
provinces.png |
PNG | W x H | 24-bit RGB | Province boundaries. Each province is a unique RGB color. No anti-aliasing, no gradients, no alpha. Every pixel must match exactly one color from definition.csv. Pencil tool only — never brush. Black (0,0,0) = impassable. |
heightmap.png |
PNG | W x H | 16-bit greyscale, RGB mode | Elevation data. Must be RGB mode, not RGBA (RGBA causes white fog rendering bug). Requires companion heightmap.heightmap declaring original_heightmap_size { W H }. After changes, must repack via CK3 map editor. Auto-generates indirection_heightmap.png (W/32 x H/32) and packed_heightmap.png. |
rivers.png |
PNG (indexed) | W x H | Indexed RGB | River network. No anti-aliasing, no transparency (causes CTD). River pixels must be orthogonally adjacent to max 2 other river pixels; splits/joins max 3. |
definition.csv |
CSV (; delimited) |
— | — | ID;R;G;B;Name;x; — Province ID to RGB mapping. IDs must be sequential or game crashes. ~160 rows. |
default.map |
Text | — | — | Master config. Province type flags: blank=land, R=rivers, L=lakes, O=oceans, W=wasteland, IS=impassable seas, IM=impassable mountains. |
adjacencies.csv |
CSV | — | — | From;To;Type;Through;start_x;start_y;stop_x;stop_y;Comment. Types: sea, river_large. Must end with -1;-1;;-1;-1;-1;-1;-1; or infinite load. |
River color conventions:
| Color | RGB | Meaning |
|---|---|---|
| Green | #00FF00 |
River source |
| Red | #FF0000 |
Tributary junction |
| Yellow | #FFFC00 |
River split |
| Magenta | #FF0080 |
Sea/lake/navigable water connection |
| White | #FFFFFF |
Land (no river) |
| Blue gradient | Various | River flow (darker = wider) |
Scadrial heightmap values: Ashmounts: 220-250, Terris mountains: 180-220, Central plains: 40-60, River valleys: 20-35, Ocean: 0.
Terrain Files
| File | Format | Dimensions | Description |
|---|---|---|---|
Terrain masks (*_mask.bmp) |
BMP (greyscale) | W x H | One per terrain type (e.g., plains_01_mask.bmp). Max height 4096px. |
Terrain diffuse (*_diffuse.dds) |
DDS (BC3/DXT5) | Tiling | Albedo/color texture per terrain type. With mipmaps. |
Terrain normal (*_normal.dds) |
DDS (BC3/DXT5) | Tiling | Normal map per terrain type. |
Terrain properties (*_properties.dds) |
DDS (BC3/DXT5) | Tiling | PBR: R=unused, G=specular, B=metalness, A=roughness. |
detail_index.tga |
TGA | W x H | Detail texture index map. |
detail_intensity.tga |
TGA | W x H | Detail texture intensity. |
colormap.dds |
DDS | W/2 x H/2 | Overall color overlay at quarter resolution. |
flatmap.dds |
DDS | W x H | Paper/flat map view texture. |
materials.settings |
Text | — | Maps texture sets to mask files. |
Province terrain assignment is defined separately in
common/province_terrain/00_province_terrain.txt using the format
province_id = terrain_type. 14 vanilla terrain types: plains, farmlands,
hills, mountains, desert, desert_mountains, oasis, jungle, forest,
taiga, wetlands, steppe, floodplains, drylands.
Water & Environment Files
| File | Path | Format | Dimensions |
|---|---|---|---|
flowmap.dds |
gfx/map/water/ |
DDS | W/2 x H/2 |
foam_map.dds |
gfx/map/water/ |
DDS | W/4 x H/4 |
watercolor_rgb_waterspec_a.dds |
gfx/map/water/ |
DDS | W/√2 x H/√2 |
surround_mask.dds |
gfx/map/surround_map/ |
DDS | W/√2 x H/√2 |
surround_fade.dds |
gfx/map/surround_map/ |
DDS | W/4 x H/4 |
surround_tile.dds |
gfx/map/surround_map/ |
DDS | Tiling |
Map Object Placement (3D objects on map)
| File | Path | Format | Description |
|---|---|---|---|
building_locators.txt |
gfx/map/map_object_data/ |
Text | Holding/building positions per barony |
combat_locators.txt |
gfx/map/map_object_data/ |
Text | Army combat positions |
player_stack_locators.txt |
gfx/map/map_object_data/ |
Text | Raised army positions |
siege_locators.txt |
gfx/map/map_object_data/ |
Text | Siege weapon positions |
positions.txt |
map_data/ |
Text | City/unit/text positions per province |
Locator files can be auto-generated using the CK3 map editor's auto-nudge tool.
Defines (required for custom map dimensions)
| File | Key | Value |
|---|---|---|
common/defines/00_defines.txt |
WORLD_EXTENTS_X |
W - 1 |
common/defines/00_defines.txt |
WORLD_EXTENTS_Z |
H - 1 |
common/defines/00_defines.txt |
WATERLEVEL |
Height for ocean/lake |
common/defines/graphic/00_graphics.txt |
PANNING_WIDTH |
W |
common/defines/graphic/00_graphics.txt |
PANNING_HEIGHT |
H |
Dimension Relationships Summary
All dimensions relative to base map (W x H):
| File | Size |
|---|---|
| provinces.png, rivers.png, heightmap.png | W x H |
| flatmap.dds, detail_index/intensity, terrain masks | W x H |
| colormap.dds, flowmap.dds | W/2 x H/2 (quarter) |
| watercolor.dds, surround_mask.dds | ~W/1.4 x H/1.4 (half area) |
| foam_map.dds, surround_fade.dds | W/4 x H/4 (sixteenth) |
| indirection_heightmap.png | W/32 x H/32 |
Map geography should depict:
- Roughly circular landmass with Luthadel at center
- Terris mountains in the north
- Ashmounts scattered throughout (5+ volcanic peaks)
- River Channerel flowing south through Central Dominance
- Pits of Hathsin in the south
- Remote Dominance at the edges / frontier
- Ocean or impassable wasteland beyond the Empire borders
Recommended approach: Start with 4096x2048 for prototyping. The Atlantis TC template provides a clean starting scaffold for total conversion map_data structure.
Count: ~20+ image/data files across map_data/ and gfx/map/
8b. Trait Icons
Every metallic arts trait defined in common/traits/ needs a custom icon.
Directory: gfx/interface/icons/traits/
Allomancy Misting traits (12 icons):
| Asset | Format | Resolution | Description |
|---|---|---|---|
trait_misting_coinshot.dds |
DDS (ARGB 32bpp) | 120x120 | Steel — blue/silver pushing-coins motif |
trait_misting_lurcher.dds |
DDS (ARGB 32bpp) | 120x120 | Iron — dark pulling-metals motif |
trait_misting_thug.dds |
DDS (ARGB 32bpp) | 120x120 | Pewter — fist/strength motif |
trait_misting_tineye.dds |
DDS (ARGB 32bpp) | 120x120 | Tin — eye/enhanced senses motif |
trait_misting_soother.dds |
DDS (ARGB 32bpp) | 120x120 | Brass — calming wave motif |
trait_misting_rioter.dds |
DDS (ARGB 32bpp) | 120x120 | Zinc — flame/emotion motif |
trait_misting_smoker.dds |
DDS (ARGB 32bpp) | 120x120 | Copper — cloud/shield motif |
trait_misting_seeker.dds |
DDS (ARGB 32bpp) | 120x120 | Bronze — detection/pulse motif |
trait_misting_augur.dds |
DDS (ARGB 32bpp) | 120x120 | Gold — mirror/past-self motif |
trait_misting_oracle.dds |
DDS (ARGB 32bpp) | 120x120 | Atium — eye-of-the-future motif |
trait_misting_duralumin.dds |
DDS (ARGB 32bpp) | 120x120 | Duralumin — amplification burst |
trait_misting_nicroburst.dds |
DDS (ARGB 32bpp) | 120x120 | Nicrosil — external amplification |
Mistborn (1 icon):
| Asset | Format | Resolution | Description |
|---|---|---|---|
trait_mistborn.dds |
DDS (ARGB 32bpp) | 120x120 | All-metals motif, mist-swirling figure. This is the signature icon — make it striking. |
Allomantic strength (3 icons):
| Asset | Format | Resolution | Description |
|---|---|---|---|
trait_allomantic_weak.dds |
DDS (ARGB 32bpp) | 120x120 | Dim/faded metal glow |
trait_allomantic_strong.dds |
DDS (ARGB 32bpp) | 120x120 | Bright metal glow |
trait_allomantic_savant.dds |
DDS (ARGB 32bpp) | 120x120 | Intense/dangerous glow with cracks |
Allomantic potential (2 icons):
| Asset | Format | Resolution | Description |
|---|---|---|---|
trait_allomantic_potential.dds |
DDS (ARGB 32bpp) | 120x120 | Dormant spark, hidden potential |
trait_mistborn_potential.dds |
DDS (ARGB 32bpp) | 120x120 | Brighter dormant spark (Mistborn-level) |
Feruchemy (2 icons):
| Asset | Format | Resolution | Description |
|---|---|---|---|
trait_feruchemist.dds |
DDS (ARGB 32bpp) | 120x120 | Metalmind/arm-band motif, Terris styling |
trait_feruchemy_potential.dds |
DDS (ARGB 32bpp) | 120x120 | Dormant metalmind motif |
Hemalurgy (6 icons):
| Asset | Format | Resolution | Description |
|---|---|---|---|
trait_hemalurgist.dds |
DDS (ARGB 32bpp) | 120x120 | Dark spike motif, blood/corruption |
trait_hemalurgic_steel.dds |
DDS (ARGB 32bpp) | 120x120 | Steel spike — thin, precise |
trait_hemalurgic_pewter.dds |
DDS (ARGB 32bpp) | 120x120 | Pewter spike — thick, brutal |
trait_hemalurgic_bronze.dds |
DDS (ARGB 32bpp) | 120x120 | Bronze spike — warm-toned |
trait_hemalurgic_atium.dds |
DDS (ARGB 32bpp) | 120x120 | Atium spike — rare, glowing |
trait_knows_hemalurgy.dds |
DDS (ARGB 32bpp) | 120x120 | Book/knowledge with dark undertone |
Count: 26 icons
8c. Modifier Icons
Every modifier needs a unique icon. Several currently share placeholder paths.
Directory: gfx/interface/icons/modifiers/
| Asset | Format | Resolution | Description |
|---|---|---|---|
modifier_compounder.dds |
DDS (ARGB 32bpp) | 60x60 | Golden dual-power (Allomancy + Feruchemy fused) |
modifier_lord_ruler_attention.dds |
DDS (ARGB 32bpp) | 60x60 | Red eye/gaze of the Lord Ruler |
modifier_lord_ruler_attention_1.dds |
DDS (ARGB 32bpp) | 60x60 | Amber eye (Tier 1 — warning) |
modifier_lord_ruler_attention_2.dds |
DDS (ARGB 32bpp) | 60x60 | Red eye (Tier 2 — investigation) |
modifier_lord_ruler_attention_3.dds |
DDS (ARGB 32bpp) | 60x60 | Burning eye (Tier 3 — retribution) |
modifier_steel_ministry_favor.dds |
DDS (ARGB 32bpp) | 60x60 | Steel Ministry sigil, gold/positive |
modifier_steel_ministry_displeasure.dds |
DDS (ARGB 32bpp) | 60x60 | Steel Ministry sigil, cracked/red |
modifier_ash_blight.dds |
DDS (ARGB 32bpp) | 60x60 | Grey ash covering land |
modifier_koloss_rampage.dds |
DDS (ARGB 32bpp) | 60x60 | Blue koloss fist/destruction |
modifier_great_house_status.dds |
DDS (ARGB 32bpp) | 60x60 | Noble house crest with gold frame |
modifier_atium_supply.dds |
DDS (ARGB 32bpp) | 60x60 | Atium geode, shimmering |
modifier_breeding_for_allomancy.dds |
DDS (ARGB 32bpp) | 60x60 | Intertwined bloodlines motif |
modifier_ruin_influence.dds |
DDS (ARGB 32bpp) | 60x60 | Dark red corruption veins |
modifier_steel_inquisitor_power.dds |
DDS (ARGB 32bpp) | 60x60 | Spiked eye sockets, menacing |
modifier_mist_heavy.dds |
DDS (ARGB 32bpp) | 60x60 | Dense mist (also in M4) |
modifier_fertile_ashland.dds |
DDS (ARGB 32bpp) | 60x60 | Green in grey (also in M4) |
modifier_full_crew.dds |
DDS (ARGB 32bpp) | 60x60 | Circle of figures (also in M6) |
modifier_eleventh_metal_insight.dds |
DDS (ARGB 32bpp) | 60x60 | Golden metal shard (also in M7) |
modifier_duel_veteran.dds |
DDS (ARGB 32bpp) | 60x60 | Crossed coin and sword (also in M7) |
modifier_atium_contract_holder.dds |
DDS (ARGB 32bpp) | 60x60 | Atium geode with scroll (also in M7) |
(Plus 12 from M7a and 21 from M7c — see M7 sections above.)
Count: ~20 base + 12 from M7a + 21 from M7c = ~53 total modifier icons
Note: Many of these are listed in both the milestone where they're first referenced in code (M4/M6/M7) and here in M8 where they're physically created. Create all modifier icons together during M8 for consistency.
8d. Decision Illustrations
Large artwork panels shown behind decisions in the decision detail view.
Directory: gfx/interface/illustrations/decisions/
| Asset | Format | Resolution | Description |
|---|---|---|---|
decision_host_ball.dds |
DDS (DXT1) | 1100x440 | Noble ball scene — chandelier, dancing |
decision_snapping.dds |
DDS (DXT1) | 1100x440 | Character in pain, awakening power |
decision_hemalurgy.dds |
DDS (DXT1) | 1100x440 | Dark ritual with metallic spike |
decision_hire_kandra.dds |
DDS (DXT1) | 1100x440 | Shapeshifter in shadows |
decision_breed_allomancy.dds |
DDS (DXT1) | 1100x440 | Noble house genealogy with metal glow |
decision_smuggle_atium.dds |
DDS (DXT1) | 1100x440 | Cloaked figure with atium geode |
decision_recruit_skaa.dds |
DDS (DXT1) | 1100x440 | Skaa allomancer hiding powers |
decision_crack_down_skaa.dds |
DDS (DXT1) | 1100x440 | Noble overseeing skaa workers |
decision_improve_conditions.dds |
DDS (DXT1) | 1100x440 | Compassionate scene with skaa |
decision_raid.dds |
DDS (DXT1) | 1100x440 | Night raid on noble keep (also in M7) |
decision_duel.dds |
DDS (DXT1) | 1100x440 | Allomantic duel (also in M7) |
decision_assault_kredik_shaw.dds |
DDS (DXT1) | 1100x440 | Siege of the spired palace (also in M7) |
Count: ~12 illustrations
8e. Loading Screens
Custom loading screen art replaces vanilla during game load.
Directory: gfx/interface/illustrations/loading_screens/
| Asset | Format | Resolution | Description |
|---|---|---|---|
ls_luthadel_skyline.dds |
DDS (DXT1) | 3840x2160 | Luthadel skyline — ash, mists, spired buildings |
ls_kredik_shaw.dds |
DDS (DXT1) | 3840x2160 | Kredik Shaw palace — towering spires |
ls_ashmounts.dds |
DDS (DXT1) | 3840x2160 | Ashmounts at sunset — volcanic glow |
ls_vin_mists.dds |
DDS (DXT1) | 3840x2160 | Vin leaping through mist — action pose |
ls_kelsier_overlooking.dds |
DDS (DXT1) | 3840x2160 | Kelsier on rooftop overlooking Luthadel |
CK3 automatically cycles through images. Configuration is via
loadscreen_settings.txt in the same directory:
luthadel_skyline = { priority = 2 }
kredik_shaw = { priority = 2 }
ashmounts = { priority = 2 }
vin_mists = { priority = 2 show_first = yes }
Format: <filename_without_extension> = { priority = <int> }. Use
show_first = yes to prioritize a specific screen.
Count: 3-5 images + 1 config file
8f. Bookmark Art
The "End of an Empire" bookmark needs multiple art assets (verified from vanilla).
Multiple files per bookmark:
| Asset | Path | Format | Resolution | Description |
|---|---|---|---|---|
| Main background | gfx/interface/bookmarks/bm_end_of_an_empire.dds |
DDS (DXT1) | 1920x1080 | Mist-shrouded Luthadel with Kredik Shaw, ash falling |
| Kelsier character overlay | gfx/interface/bookmarks/bm_end_of_an_empire_bookmark_kelsier.dds |
DDS (DXT5) | 1920x1080 | Kelsier character art with alpha for compositing |
| Vin character overlay | gfx/interface/bookmarks/bm_end_of_an_empire_bookmark_vin.dds |
DDS (DXT5) | 1920x1080 | Vin character art with alpha |
| Elend character overlay | gfx/interface/bookmarks/bm_end_of_an_empire_bookmark_elend.dds |
DDS (DXT5) | 1920x1080 | Elend character art with alpha |
| Big icon | gfx/interface/icons/bookmark_big/bm_end_of_an_empire.dds |
DDS | 336x152 | Thumbnail in bookmark selection list |
| Button | gfx/interface/icons/bookmark_buttons/bm_end_of_an_empire.dds |
DDS | 580x160 | Bookmark selection button |
Character overlays are composited on the background. Each shows a single
character in their position = { x y } as defined in the bookmark definition.
Use DXT5 (alpha) for overlays, DXT1 (opaque) for the background.
Count: 6 assets (1 background + 3 character overlays + 2 UI elements)
8g. Portrait & Ethnicity Assets
Custom ethnicity definitions for the three Scadrial cultures, plus portrait modifiers for Hemalurgic characters.
Custom ethnicity definitions (data files, not images):
| File | Description |
|---|---|
common/ethnicities/00_scadrial_ethnicities.txt |
scadrial_noble (pale), scadrial_skaa (darker/weathered), scadrial_terris (dark-skinned per lore) |
Portrait modifier textures (optional, for Hemalurgic spike visuals):
Portrait modifiers are defined in gfx/portraits/portrait_modifiers/ (33 files
in vanilla). They use dna_modifiers blocks with modes: add, replace, modify.
Weight-based selection triggered by traits, culture, religion, rank.
| Asset | Path | Format | Resolution | Description |
|---|---|---|---|---|
| Inquisitor spike overlay | gfx/portraits/portrait_modifiers/inquisitor_eyes.txt |
Text + DDS | — | Modifier definition + textures |
For visual spike effects, options:
- Option A (simpler): Scripted DNA with
has_scripted_appearance = yesfor named Inquisitors. Uses existing disfigured/scarred appearance genes. - Option B (complex): Custom portrait modifier triggered by traits. Requires custom accessory meshes and textures (Blender + CK3 export addon).
Culture graphics packs (optional, aspirational):
To fully replace the vanilla Western aesthetic, a complete custom gfx pack
includes (all textures DXT5, 1024x1024 unless noted):
| Category | Path | Format | Resolution | Count (est.) |
|---|---|---|---|---|
| Clothing diffuse | gfx/models/portraits/m_clothes/ & f_clothes/ |
DDS (DXT5) | 1024x1024 | ~20 per gender |
| Hair textures | gfx/models/portraits/m_hair/ & f_hair/ |
DDS (DXT5) | 1024x1024 | ~10 per gender |
| Headgear textures | gfx/models/portraits/m_headgear/ & f_headgear/ |
DDS (DXT5) | 512-1024 | ~10 per gender |
These are major art projects requiring 3D modeling. For v1.0, using vanilla
western_*_gfx with custom ethnicity settings is acceptable. Custom culture
graphics are a post-launch enhancement.
Frontend / Main Menu (optional polish):
| Asset | Path | Format | Resolution | Description |
|---|---|---|---|---|
| Frontend background | gfx/interface/illustrations/frontend/frontend_bg.dds |
DDS (DXT1) | 3840x2160 | Custom main menu background — Scadrial themed |
| Pause background | gfx/interface/illustrations/frontend/pause_bg.dds |
DDS (DXT1) | 3840x2160 | Custom pause screen |
Count: 1 data file + optional portrait/clothing/frontend assets
8h. Men-at-Arms Custom Icons
Replace the generic vanilla icon references with custom Mistborn-themed icons.
Directory: gfx/interface/icons/regiments/
| Asset | Format | Resolution | Description |
|---|---|---|---|
hazekillers.dds |
DDS (ARGB 32bpp) | 60x60 | Elite warrior with obsidian weapons |
koloss.dds |
DDS (ARGB 32bpp) | 60x60 | Blue-skinned giant with crude sword |
mistborn_agents.dds |
DDS (ARGB 32bpp) | 60x60 | Mistcloaked figure in shadow |
skaa_levies.dds |
DDS (ARGB 32bpp) | 60x60 | Ragged peasant militia |
noble_guard.dds |
DDS (ARGB 32bpp) | 60x60 | Armored house guard |
To use custom MaA icons, update common/men_at_arms_types/00_mistborn_maa.txt
from icon = heavy_infantry to icon = hazekillers (custom type) and register
the icon type.
Count: 5 icons
8i. Steam Workshop Thumbnail
| Asset | Format | Resolution | Description |
|---|---|---|---|
thumbnail.png |
PNG | 512x512 | Mod logo — Mistborn silhouette, metallic arts symbol, or Scadrial landscape. Must read clearly at small sizes. |
Placed at lords_of_ash/thumbnail.png.
Count: 1 image
Asset Totals by Milestone
| Milestone | New Assets | Cumulative | Categories |
|---|---|---|---|
| M1 | 0 | 0 | — |
| M2 | 0 | 0 | — |
| M3 | 0 (23 optional) | 0 (23) | CoA emblems, religion icons, building icons |
| M4 | 0 (98+ optional) | 0 (121+) | Province modifier icons, CB icons, scheme icons, lifestyle assets (~45+), activity assets (~16+), event backgrounds (16) |
| M5 | 0 | 0 (121+) | DNA strings only |
| M6 | 0 (1 optional) | 0 (122+) | 1 modifier icon |
| M7 | 0 (36 optional) | 0 (158+) | 33 modifier icons (12 existing + 21 flavor events), 3 decision illustrations |
| M8 | ~230+ | ~230+ | Everything — map (20+), all icons, loading screens, bookmark (6), portraits, thumbnail |
Strategy: All visual assets can be deferred to M8 without breaking functionality. Icons show as blank/missing-texture in earlier milestones, which is acceptable during development. Creating assets incrementally during each milestone is ideal for iterating on style, but all can be batched in M8.
Priority Order for Art Production
If creating assets incrementally rather than all in M8:
Priority 1 — Map files (M8.1)
The map is the riskiest, most complex, and most impactful visual change. Start early and test obsessively.
Priority 2 — Trait icons (M8.4, 26 icons)
Most player-facing icons. Visible in character sheets, tooltips, dynastic views. Establish the visual language of the metallic arts here.
Priority 3 — Loading screens + Bookmark art (M8.5, 4-6 images)
First impression art. Players see these before gameplay. High impact on perceived quality.
Priority 4 — Decision illustrations (M8.5, ~12 images)
Visible whenever players interact with decisions. Moderate effort, high return.
Priority 5 — Modifier icons (M8.5, ~53 icons)
Visible in tooltips and character modifiers. Important but can survive as placeholders longer.
Priority 6 — Event backgrounds (M4f, 16 images)
Replace vanilla European backdrops. High immersion value for events.
Priority 7 — Lifestyle assets (M4d, ~45+ assets)
Multiple asset types per lifestyle (strips, focuses, tree backgrounds, sidebar illustrations, perk nodes). Use a consistent visual template per lifestyle.
Priority 8 — Everything else
CoA emblems, religion icons, building icons, MaA icons, portrait modifiers, workshop thumbnail. These are all polish-level assets.
Art Style Guide
All visual assets should follow a consistent Mistborn aesthetic:
- Color palette: Muted greys, dark blues, burnt oranges, metallic silvers and golds. The world is perpetually overcast with falling ash.
- Motifs: Metal symbols (steel, iron, pewter, tin, etc.), mist swirls, falling ash, spires (Kredik Shaw), spikes (Hemalurgy), metalminds (Feruchemy)
- Tone: Dark fantasy with moments of hope. Gritty but not grimdark.
- Typography reference: Angular, metallic — inspired by the Mistborn book cover designs
- Icon style: Clean silhouettes on transparent backgrounds. Each metallic art icon should be immediately distinguishable at 60x60 pixels.
- Illustrations: Painterly style with dramatic lighting. Mist and ash should be present in outdoor scenes. Interior scenes feature candlelight and metal fixtures.
Directory Structure (Final)
lords_of_ash/
├── common/
│ ├── defines/
│ │ ├── 00_defines.txt # WORLD_EXTENTS_X/Z, WATERLEVEL
│ │ └── graphic/
│ │ └── 00_graphics.txt # PANNING_WIDTH/HEIGHT
│ ├── province_terrain/
│ │ └── 00_scadrial_terrain.txt # Province-to-terrain assignment
│ └── ...
├── gfx/
│ ├── coat_of_arms/
│ │ └── colored_emblems/ # ~13 house/faction emblems
│ ├── interface/
│ │ ├── bookmarks/ # 6 bookmark assets (bg + overlays + UI)
│ │ ├── icons/
│ │ │ ├── bookmark_big/ # 1 bookmark thumbnail (336x152)
│ │ │ ├── bookmark_buttons/ # 1 bookmark button (580x160)
│ │ │ ├── buildings/ # 5 building icons
│ │ │ ├── activities/ # activity icons (80x80 + 164x164)
│ │ │ ├── activity_intents/ # intent icons (60x60)
│ │ │ ├── activity_phases/ # phase icons (140-160px)
│ │ │ ├── casus_belli/ # 3 CB icons
│ │ │ ├── faith/ # 4 faith icons (100x100)
│ │ │ ├── faith_doctrine_groups/ # doctrine group icons (120x120)
│ │ │ ├── faith_doctrines/ # tenet icons (260x400)
│ │ │ ├── focuses/ # ~15 focus icons (140x140)
│ │ │ ├── lifestyle_tree_backgrounds/ # ~15 tree bgs (348x812)
│ │ │ ├── lifestyles/ # 5 lifestyle strips (480x160)
│ │ │ ├── lifestyles_perks/ # perk nodes (180x60)
│ │ │ ├── modifiers/ # ~53 modifier icons (60x60)
│ │ │ ├── regiments/ # 5 MaA icons
│ │ │ ├── scheme_types/ # 2 scheme icons (120x120)
│ │ │ └── traits/ # 26 trait icons (120x120)
│ │ └── illustrations/
│ │ ├── activity_header_backgrounds/ # activity headers (1100x440)
│ │ ├── activity_types/ # activity sidebars (460x1100)
│ │ ├── decisions/ # ~12 decision illustrations (1100x440)
│ │ ├── event_scenes/ # 16 event backgrounds (1592x848)
│ │ ├── frontend/ # 2 optional (menu bg, pause bg; 4K)
│ │ ├── lifestyles_background/ # 5 lifestyle sidebars (608x1552)
│ │ └── loading_screens/ # 3-5 loading screens (4K) + settings
│ ├── map/
│ │ ├── map_object_data/ # building/combat/siege locators
│ │ ├── surround_map/ # surround_mask, surround_fade, surround_tile
│ │ ├── terrain/ # terrain masks, diffuse/normal/properties DDS
│ │ │ └── materials.settings # texture-to-mask mapping
│ │ └── water/ # flowmap, foam_map, watercolor
│ └── portraits/
│ └── portrait_modifiers/ # 2 optional portrait overlays
├── map_data/
│ ├── definition.csv # Province ID -> RGB color mapping
│ ├── default.map # Master map config
│ ├── provinces.png # Province boundary map (W x H)
│ ├── heightmap.png # Elevation (16-bit greyscale)
│ ├── heightmap.heightmap # Declares original_heightmap_size
│ ├── rivers.png # River network (indexed RGB)
│ ├── positions.txt # Province positions
│ ├── adjacencies.csv # Strait/river crossings
│ ├── colormap.dds # Color overlay (W/2 x H/2)
│ ├── flatmap.dds # Paper map view (W x H)
│ ├── detail_index.tga # Detail texture index (W x H)
│ ├── detail_intensity.tga # Detail texture intensity (W x H)
│ └── geographical_regions/
│ └── 00_scadrial_regions.txt
└── thumbnail.png # Workshop thumbnail (512x512 PNG)