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>
1019 lines
51 KiB
Markdown
1019 lines
51 KiB
Markdown
# 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
|
|
1. Design at **exact target resolution** in PNG with transparent background
|
|
2. Export to DDS with the **correct format per asset type** (see table above)
|
|
3. Generate mipmaps **only where required** (modifier icons: yes; trait icons: no)
|
|
4. 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](https://github.com/bombusfrigidus/Atlantis) 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 = yes` for
|
|
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)
|
|
```
|