-
Notifications
You must be signed in to change notification settings - Fork 0
technical reference Art Assets
ghost-ng edited this page Jan 28, 2026
·
1 revision
This document covers art asset requirements and formats for Civilization VII modding, including icons, 3D models, textures, and UI elements.
Civ VII uses various art asset types:
- Icons - 2D images for UI elements (units, buildings, techs, etc.)
- Portraits - Leader and civilization imagery
- 3D Models - Units, buildings, improvements on the map
- Textures - Surface details for 3D models
- UI Elements - Interface components and backgrounds
- Animations - Unit and leader animations
| Asset Type | Format | Notes |
|---|---|---|
| Icons |
.dds, .png
|
DDS preferred for performance |
| Textures | .dds |
Compressed texture format |
| 3D Models | .gr2 |
Granny 3D format |
| Animations | .gr2 |
Included in model files |
| Audio | .wem |
Wwise audio format |
| Video | .bk2 |
Bink video format |
DDS (DirectDraw Surface) is the primary texture format:
| Compression | Usage |
|---|---|
DXT1 / BC1
|
RGB without alpha (smallest) |
DXT5 / BC3
|
RGBA with alpha (icons) |
BC7 |
High quality RGBA |
Uncompressed |
Source editing only |
| Category | Database Column | Typical Size |
|---|---|---|
| Unit Icons | IconAtlas |
256x256 |
| Building Icons | IconAtlas |
256x256 |
| Technology Icons | IconAtlas |
128x128 |
| Civic Icons | IconAtlas |
128x128 |
| Resource Icons | IconAtlas |
64x64 |
| Leader Portraits | Portrait |
512x512 |
| Civ Icons | IconAtlas |
256x256 |
Icons are organized into atlases (sprite sheets):
<IconTextureAtlases>
<Row Name="ICON_ATLAS_MY_MOD"
IconsPerRow="4"
IconsPerColumn="4"
IconSize="256"
Filename="MyMod_Icons.dds"/>
</IconTextureAtlases>| Column | Type | Description |
|---|---|---|
Name |
TEXT | Atlas identifier |
IconsPerRow |
INTEGER | Icons horizontally |
IconsPerColumn |
INTEGER | Icons vertically |
IconSize |
INTEGER | Size of each icon in pixels |
Filename |
TEXT | Path to DDS file |
<IconDefinitions>
<Row Name="ICON_UNIT_MY_WARRIOR"
Atlas="ICON_ATLAS_MY_MOD"
Index="0"/>
<Row Name="ICON_BUILDING_MY_TEMPLE"
Atlas="ICON_ATLAS_MY_MOD"
Index="1"/>
<Row Name="ICON_TECH_MY_TECH"
Atlas="ICON_ATLAS_MY_MOD"
Index="2"/>
</IconDefinitions>| Column | Type | Description |
|---|---|---|
Name |
TEXT | Icon identifier (ICON_*) |
Atlas |
TEXT | Reference to IconTextureAtlas |
Index |
INTEGER | Position in atlas (0-based, left-to-right, top-to-bottom) |
<!-- Unit with custom icon -->
<Units>
<Row UnitType="UNIT_MY_WARRIOR"
Name="LOC_UNIT_MY_WARRIOR_NAME"
Icon="ICON_UNIT_MY_WARRIOR"/>
</Units>
<!-- Building with custom icon -->
<Buildings>
<Row BuildingType="BUILDING_MY_TEMPLE"
Name="LOC_BUILDING_MY_TEMPLE_NAME"
Icon="ICON_BUILDING_MY_TEMPLE"/>
</Buildings>
<!-- Technology with custom icon -->
<Technologies>
<Row TechnologyType="TECH_MY_TECH"
Name="LOC_TECH_MY_TECH_NAME"
Icon="ICON_TECH_MY_TECH"/>
</Technologies>Create square icons at the required size:
- Use PNG format for editing
- Maintain transparency for backgrounds
- Follow game's art style
Combine icons into a single image:
+-------+-------+-------+-------+
| Icon0 | Icon1 | Icon2 | Icon3 | <- Row 0
+-------+-------+-------+-------+
| Icon4 | Icon5 | Icon6 | Icon7 | <- Row 1
+-------+-------+-------+-------+
Use tools like:
- NVIDIA Texture Tools - Command line or GUI
- Intel Texture Works - Photoshop plugin
- GIMP with DDS Plugin - Free option
- Texconv - Microsoft command-line tool
Example conversion:
texconv -f BC3_UNORM -o output/ MyMod_Icons.png<?xml version="1.0" encoding="utf-8"?>
<Database>
<IconTextureAtlases>
<Row Name="ICON_ATLAS_MY_MOD"
IconsPerRow="4"
IconsPerColumn="2"
IconSize="256"
Filename="Art/Icons/MyMod_Icons.dds"/>
</IconTextureAtlases>
<IconDefinitions>
<Row Name="ICON_UNIT_MY_UNIT_1" Atlas="ICON_ATLAS_MY_MOD" Index="0"/>
<Row Name="ICON_UNIT_MY_UNIT_2" Atlas="ICON_ATLAS_MY_MOD" Index="1"/>
<Row Name="ICON_BUILDING_MY_BUILDING_1" Atlas="ICON_ATLAS_MY_MOD" Index="2"/>
<Row Name="ICON_BUILDING_MY_BUILDING_2" Atlas="ICON_ATLAS_MY_MOD" Index="3"/>
<Row Name="ICON_TECH_MY_TECH_1" Atlas="ICON_ATLAS_MY_MOD" Index="4"/>
<Row Name="ICON_TECH_MY_TECH_2" Atlas="ICON_ATLAS_MY_MOD" Index="5"/>
</IconDefinitions>
</Database>| Type | Size | Format |
|---|---|---|
| Full Portrait | 512x512 | DDS (BC3) |
| Background | 1024x512 | DDS (BC1) |
| Scene | 2048x1024 | DDS (BC3) |
<LeaderPortraits>
<Row LeaderType="LEADER_MY_LEADER"
Portrait="Art/Leaders/MyLeader_Portrait.dds"
Background="Art/Leaders/MyLeader_Background.dds"/>
</LeaderPortraits>| Asset | Size | Usage |
|---|---|---|
| Main Icon | 256x256 | Selection screen, diplomacy |
| Small Icon | 64x64 | Unit flags, UI elements |
| Background | 512x256 | Leader scene background |
<CivilizationArtDefs>
<Row CivilizationType="CIVILIZATION_MY_CIV"
IconAtlas="ICON_ATLAS_MY_CIV"
IconIndex="0"
BackgroundImage="Art/Civs/MyCiv_Background.dds"
ColorPrimary="COLOR_MY_CIV_PRIMARY"
ColorSecondary="COLOR_MY_CIV_SECONDARY"/>
</CivilizationArtDefs>
<Colors>
<Row ColorType="COLOR_MY_CIV_PRIMARY">
<Red>0.8</Red><Green>0.2</Green><Blue>0.2</Blue><Alpha>1</Alpha>
</Row>
<Row ColorType="COLOR_MY_CIV_SECONDARY">
<Red>1.0</Red><Green>0.8</Green><Blue>0.2</Blue><Alpha>1</Alpha>
</Row>
</Colors>| Type | Usage |
|---|---|
| Unit Models | In-game unit representation |
| Building Models | City buildings and wonders |
| Improvement Models | Tile improvements |
| Resource Models | Resource icons on map |
| Terrain Features | Trees, rocks, etc. |
Civ VII uses Granny 3D (.gr2) format:
- Mesh geometry
- Skeleton/bones
- Animations
- Materials references
For mods without custom 3D art, reference existing models:
<ArtDefines>
<Row ArtDefineType="ART_DEF_UNIT_MY_WARRIOR"
BaseArtDefine="ART_DEF_UNIT_SWORDSMAN"/>
</ArtDefines>
<Units>
<Row UnitType="UNIT_MY_WARRIOR"
ArtDefine="ART_DEF_UNIT_MY_WARRIOR"/>
</Units><UnitArtDefines>
<Row UnitArtDefineType="ART_DEF_UNIT_MY_WARRIOR"
Model="Units/MyWarrior/MyWarrior.gr2"
Scale="1.0"
Formation="FORMATION_CLASS_LAND_COMBAT"/>
</UnitArtDefines><BuildingArtDefines>
<Row BuildingArtDefineType="ART_DEF_BUILDING_MY_TEMPLE"
Model="Buildings/MyTemple/MyTemple.gr2"
Scale="1.0"/>
</BuildingArtDefines>
<Buildings>
<Row BuildingType="BUILDING_MY_TEMPLE"
ArtDefine="ART_DEF_BUILDING_MY_TEMPLE"/>
</Buildings>| Type | Suffix | Purpose |
|---|---|---|
| Diffuse/Albedo | _D |
Base color |
| Normal | _N |
Surface detail |
| Specular | _S |
Reflectivity |
| Emissive | _E |
Glow effects |
| Ambient Occlusion | _AO |
Shadow detail |
| Usage | Recommended Size |
|---|---|
| Unit textures | 512x512 - 1024x1024 |
| Building textures | 1024x1024 - 2048x2048 |
| Terrain textures | 512x512 |
| UI elements | Power of 2 (256, 512, etc.) |
<UITextures>
<Row TextureName="MY_MOD_BUTTON"
Filename="Art/UI/MyModButton.dds"
Width="64"
Height="32"/>
</UITextures>For custom screens or panels:
<UIBackgrounds>
<Row BackgroundName="MY_MOD_BACKGROUND"
Filename="Art/UI/MyModBackground.dds"
TileMode="STRETCH"/>
</UIBackgrounds>| Mode | Description |
|---|---|
STRETCH |
Stretch to fill area |
TILE |
Repeat texture |
CENTER |
Center without scaling |
FILL |
Fill maintaining aspect ratio |
MyMod/
├── Art/
│ ├── Icons/
│ │ ├── MyMod_Units.dds
│ │ ├── MyMod_Buildings.dds
│ │ └── MyMod_Techs.dds
│ ├── Leaders/
│ │ ├── MyLeader_Portrait.dds
│ │ └── MyLeader_Background.dds
│ ├── Civs/
│ │ └── MyCiv_Background.dds
│ ├── Units/
│ │ └── MyWarrior/
│ │ ├── MyWarrior.gr2
│ │ ├── MyWarrior_D.dds
│ │ └── MyWarrior_N.dds
│ ├── Buildings/
│ │ └── MyTemple/
│ │ └── ...
│ └── UI/
│ ├── MyModButton.dds
│ └── MyModBackground.dds
├── Data/
│ └── MyMod_ArtDefs.xml
└── MyMod.modinfo
<Mod id="my-mod" version="1.0">
<Properties>
<Name>My Mod</Name>
</Properties>
<Components>
<!-- Art definitions -->
<UpdateDatabase id="my-mod-art">
<Items>
<File>Data/MyMod_ArtDefs.xml</File>
</Items>
</UpdateDatabase>
</Components>
<!-- Import art files -->
<Files>
<File>Art/Icons/MyMod_Units.dds</File>
<File>Art/Icons/MyMod_Buildings.dds</File>
<File>Art/Leaders/MyLeader_Portrait.dds</File>
<!-- etc. -->
</Files>
</Mod><?xml version="1.0" encoding="utf-8"?>
<Database>
<IconTextureAtlases>
<Row Name="ICON_ATLAS_MY_MOD"
IconsPerRow="2"
IconsPerColumn="2"
IconSize="256"
Filename="Art/Icons/MyMod_Icons.dds"/>
</IconTextureAtlases>
<IconDefinitions>
<Row Name="ICON_UNIT_ELITE_GUARD" Atlas="ICON_ATLAS_MY_MOD" Index="0"/>
<Row Name="ICON_UNIT_ELITE_GUARD_PORTRAIT" Atlas="ICON_ATLAS_MY_MOD" Index="1"/>
</IconDefinitions>
</Database><?xml version="1.0" encoding="utf-8"?>
<Database>
<Types>
<Row Type="UNIT_ELITE_GUARD" Kind="KIND_UNIT"/>
</Types>
<!-- Use existing model as base -->
<ArtDefines>
<Row ArtDefineType="ART_DEF_UNIT_ELITE_GUARD"
BaseArtDefine="ART_DEF_UNIT_SWORDSMAN"/>
</ArtDefines>
<Units>
<Row UnitType="UNIT_ELITE_GUARD"
Name="LOC_UNIT_ELITE_GUARD_NAME"
Description="LOC_UNIT_ELITE_GUARD_DESC"
Icon="ICON_UNIT_ELITE_GUARD"
Portrait="ICON_UNIT_ELITE_GUARD_PORTRAIT"
ArtDefine="ART_DEF_UNIT_ELITE_GUARD"
BaseMoves="2"
BaseCombat="40"
Cost="150"/>
</Units>
</Database>| Tool | Purpose |
|---|---|
| Photoshop/GIMP | Icon and texture creation |
| NVIDIA Texture Tools | DDS conversion |
| Blender | 3D modeling (requires export plugin) |
| Asset Studio | Extract game assets for reference |
| ModBuddy | Mod project management |
Using NVIDIA Texture Tools:
# Convert PNG to DDS with alpha
nvcompress -bc3 input.png output.dds
# Convert PNG to DDS without alpha
nvcompress -bc1 input.png output.ddsUsing Microsoft Texconv:
# High quality with alpha
texconv -f BC7_UNORM -o output/ input.png
# Standard with alpha
texconv -f BC3_UNORM -o output/ input.png
# No alpha
texconv -f BC1_UNORM -o output/ input.png- Use DDS Format - Better performance than PNG in-game
- Power of 2 Sizes - 64, 128, 256, 512, 1024, 2048
- Match Game Style - Study existing assets for consistency
- Optimize File Sizes - Use appropriate compression
- Test All Resolutions - Verify icons look good at all zoom levels
- Provide Fallbacks - Reference existing art when custom isn't available
- Organize Files - Use clear folder structure
- Document Assets - Note file purposes and requirements
- Version Control - Track source files separately from converted DDS
- Consider Performance - Large textures impact load times
- Verify atlas filename and path
- Check IconDefinitions match expected names
- Ensure DDS format is correct (BC3 for transparency)
- Confirm modinfo includes the file
- Re-export DDS with correct settings
- Verify dimensions are power of 2
- Check compression format matches usage
- Verify ArtDefine reference is correct
- Check model file path in modinfo
- Try using BaseArtDefine as fallback