Winter Patch: Adding Icons and ArtDefs

Can't think of a better place to post this but turns out you can mix and match buildings with districts. Here's my Royal Academy with the Military Academy model in the Campus.


Was that a simple copy and replace? (pre summer patch it caused the buildings to be invisible). Also was it the same size building and have you tried different size buildings on the plots? (I thought the wrong size building for the plot size is what caused the buildings to be invisible)
 
Was that a simple copy and replace? (pre summer patch it caused the buildings to be invisible). Also was it the same size building and have you tried different size buildings on the plots? (I thought the wrong size building for the plot size is what caused the buildings to be invisible)

I tried a few combinations, and it "works". I was able to make a Palace building appear in an Acropolis district, and it just clipped through the center structure. I'm guessing you need to use a building that goes in the same place as another building in the district would go for it to work properly.
 
I'm guessing you need to use a building that goes in the same place as another building in the district would go for it to work properly.

So there's no sign of an offset for the location of the buildings?
 
I've followed all the instructions above to import a new icon for the my new civilization but it doesn't work, but I think I know why. My original .dds files are all .dds A8R8G8B8 (without Mip Map) with an alpha channel, white and transparent. When I've used Asset Editor to import them as class UserInterface the transparent background has become black.

I'll experiment, but I'm unsure how to proceed.

Please help.
 
Last edited:
the transparent background has become black
So I've tried editing the black background files (my theory being that at least they're in the right format) using Gimp 2:
  1. Drag a file into Gimp 2 to open it.
  2. Use the color picker to select the black.
  3. Hit delete.
    • At this point the black disappears and I seem to have successfully created the image I need, white with a transparent background.
  4. From the File menu I use "Overwrite…"
  5. Rinse and repeat for all the other sized files, 22, 30, 36, 44, 45, 48, 50, 64, 80, 200, 256.
  6. Finally I use Add\Existing Item… in ModBuddy to pick up all the .dds and .tex files (which were already in the right place thanks to Asset Editor).
When I open Civ and click Create a game my new civilization icon still does not appear.

I wonder if the file format was changed when I overwrote it, but I don't know how to tell the format.

It might be easier if I knew how to save directly into the correct format from Gimp 2 or Paint.net — Anyone know how to do that please?
 
I've been able to get a new improvement to appear. The Strategic View doesn't work though.

.dep file:

Code:
    <SystemDependencies>
        <Element>
            <!-- The type of thing you are adding -->
            <ConsumerName text="Improvements"/>
            <ArtDefDependencyPaths>
                <!-- The name of the file you are adding,
                     seems to have to be the same as a base
                     file name -->
                <Element text="Improvements.artdef"/>
                <Element text="Landmarks.artdef"/>
                <Element text="StrategicView.artdef"/>
            </ArtDefDependencyPaths>
            <LibraryDependencies/>
            <LoadsLibraries>true</LoadsLibraries>
        </Element>

Improvements.artdef:

Code:
<?xml version="1.0" encoding="UTF-8" ?>
<AssetObjects::ArtDefSet>
    <m_Version>
        <major>4</major>
        <minor>0</minor>
        <build>243</build>
        <revision>870</revision>
    </m_Version>
    <m_TemplateName text="Improvements"/>
    <m_RootCollections>
        <Element>
            <m_CollectionName text="Improvement"/>
            <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
            <Element>
                <m_Fields>
                    <m_Values/>
                </m_Fields>
                <m_ChildCollections>
                    <Element>
                        <m_CollectionName text="Audio"/>
                        <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
                    </Element>
                    <Element>
                        <m_CollectionName text="StrategicView"/>
                        <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
                        <Element>
                            <m_Fields>
                                <m_Values>
                                    <Element class="AssetObjects::ArtDefReferenceValue">
                                        <m_ElementName text="StaveChurch"/>
                                        <m_RootCollectionName text="Buildings"/>
                                        <m_ArtDefPath text="StrategicView.artdef"/>
                                        <m_CollectionIsLocked>true</m_CollectionIsLocked>
                                        <m_TemplateName text="StrategicView"/>
                                        <m_ParamName text="XrefName"/>
                                    </Element>
                                    <Element class="AssetObjects::ArtDefReferenceValue">
                                        <m_ElementName text="Completed"/>
                                        <m_RootCollectionName text="BuildStates"/>
                                        <m_ArtDefPath text="Buildings.artdef"/>
                                        <m_CollectionIsLocked>true</m_CollectionIsLocked>
                                        <m_TemplateName text="Buildings"/>
                                        <m_ParamName text="State"/>
                                    </Element>
                                </m_Values>
                            </m_Fields>
                            <m_ChildCollections/>
                            <m_Name text="StrategicView"/>
                            <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
                        </Element>
                        <Element>
                            <m_Fields>
                                <m_Values>
                                    <Element class="AssetObjects::ArtDefReferenceValue">
                                        <m_ElementName text="StaveChurch_Pillaged"/>
                                        <m_RootCollectionName text="Improvements"/>
                                        <m_ArtDefPath text="StrategicView.artdef"/>
                                        <m_CollectionIsLocked>true</m_CollectionIsLocked>
                                        <m_TemplateName text="StrategicView"/>
                                        <m_ParamName text="XrefName"/>
                                    </Element>
                                    <Element class="AssetObjects::ArtDefReferenceValue">
                                        <m_ElementName text="Pillaged"/>
                                        <m_RootCollectionName text="BuildStates"/>
                                        <m_ArtDefPath text="Buildings.artdef"/>
                                        <m_CollectionIsLocked>true</m_CollectionIsLocked>
                                        <m_TemplateName text="Buildings"/>
                                        <m_ParamName text="State"/>
                                    </Element>
                                </m_Values>
                            </m_Fields>
                            <m_ChildCollections/>
                            <m_Name text="StrategicView001"/>
                            <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
                        </Element>
                    </Element>
                    <Element>
                        <m_CollectionName text="Clutter"/>
                        <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
                    </Element>
                    <Element>
                        <m_CollectionName text="Landmark"/>
                        <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
                        <Element>
                            <m_Fields>
                                <m_Values>
                                    <Element class="AssetObjects::ArtDefReferenceValue">
                                        <m_ElementName text="LM_STAVE_CHURCH"/>
                                        <m_RootCollectionName text="Landmarks"/>
                                        <m_ArtDefPath text="Landmarks.artdef"/>
                                        <m_CollectionIsLocked>true</m_CollectionIsLocked>
                                        <m_TemplateName text="Landmarks"/>
                                        <m_ParamName text="Xref"/>
                                    </Element>
                                    <Element class="AssetObjects::BoolValue">
                                        <m_bValue>true</m_bValue>
                                        <m_ParamName text="SuppressResource"/>
                                    </Element>
                                    <Element class="AssetObjects::ArtDefReferenceValue">
                                        <m_ElementName text="ANYTHING"/>
                                        <m_RootCollectionName text=""/>
                                        <m_ArtDefPath text=""/>
                                        <m_CollectionIsLocked>true</m_CollectionIsLocked>
                                        <m_TemplateName text=""/>
                                        <m_ParamName text="WhenAdjacentTo"/>
                                    </Element>
                                    <Element class="AssetObjects::ArtDefReferenceValue">
                                        <m_ElementName text="AncientWallSet"/>
                                        <m_RootCollectionName text="WallSet"/>
                                        <m_ArtDefPath text="Walls.artdef"/>
                                        <m_CollectionIsLocked>true</m_CollectionIsLocked>
                                        <m_TemplateName text="DynamicGeo"/>
                                        <m_ParamName text="Fence"/>
                                    </Element>
                                </m_Values>
                            </m_Fields>
                            <m_ChildCollections>
                                <Element>
                                    <m_CollectionName text="WhenAffectedBy"/>
                                    <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
                                </Element>
                            </m_ChildCollections>
                            <m_Name text="Landmark1"/>
                            <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
                        </Element>
                    </Element>
                    <Element>
                        <m_CollectionName text="ClutterVariants"/>
                        <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
                    </Element>
                    <Element>
                        <m_CollectionName text="Lighting"/>
                        <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
                    </Element>
                    <Element>
                        <m_CollectionName text="Activity"/>
                        <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
                    </Element>
                    <Element>
                        <m_CollectionName text="GreatWall"/>
                        <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
                    </Element>
                </m_ChildCollections>
                <m_Name text="IMPROVEMENT_STAVE_CHURCH"/>
                <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
            </Element>
        </Element>
        <Element>
            <m_CollectionName text="BuildStates"/>
            <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
        </Element>
    </m_RootCollections>
</AssetObjects::ArtDefSet>

Landmarks.artdef
Code:
<?xml version="1.0" encoding="UTF-8" ?>
<AssetObjects::ArtDefSet>
    <m_Version>
        <major>4</major>
        <minor>0</minor>
        <build>245</build>
        <revision>187</revision>
    </m_Version>
    <m_TemplateName text="Landmarks"/>
    <m_RootCollections>
        <Element>
            <m_CollectionName text="Landmarks"/>
            <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
            <Element>
                <m_Fields>
                    <m_Values>
                        <Element class="AssetObjects::BoolValue">
                            <m_bValue>true</m_bValue>
                            <m_ParamName text="FlattenTerrain"/>
                        </Element>
                        <Element class="AssetObjects::StringValue">
                            <m_Value text="ONLY_FIRST_60"/>
                            <m_ParamName text="RotationType"/>
                        </Element>
                    </m_Values>
                </m_Fields>
                <m_ChildCollections>
                    <Element>
                        <m_CollectionName text="Eras"/>
                        <m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
                        <Element>
                            <m_Fields>
                                <m_Values>
                                    <Element class="AssetObjects::ArtDefReferenceValue">
                                        <m_ElementName text="DEFAULT"/>
                                        <m_RootCollectionName text="ArtEra"/>
                                        <m_ArtDefPath text="Eras.artdef"/>
                                        <m_CollectionIsLocked>true</m_CollectionIsLocked>
                                        <m_TemplateName text=""/>
                                        <m_ParamName text="Tag_Era"/>
                                    </Element>
                                    <Element class="AssetObjects::BLPEntryValue">
                                        <m_EntryName text="DIS_REL_StaveChurch"/>
                                        <m_XLPClass text="TileBase"/>
                                        <m_XLPPath text="hero_buildings.xlp"/>
                                        <m_BLPPackage text="landmarks/hero_buildings"/>
                                        <m_LibraryName text="TileBase"/>
                                        <m_ParamName text="Asset"/>
                                    </Element>
                                    <Element class="AssetObjects::ArtDefReferenceValue">
                                        <m_ElementName text="DEFAULT"/>
                                        <m_RootCollectionName text="Culture"/>
                                        <m_ArtDefPath text="Cultures.artdef"/>
                                        <m_CollectionIsLocked>true</m_CollectionIsLocked>
                                        <m_TemplateName text=""/>
                                        <m_ParamName text="Tag_Culture"/>
                                    </Element>
                                    <Element class="AssetObjects::ArtDefReferenceValue">
                                        <m_ElementName text="ANY"/>
                                        <m_RootCollectionName text="AppealTags"/>
                                        <m_ArtDefPath text="Appeal.artdef"/>
                                        <m_CollectionIsLocked>true</m_CollectionIsLocked>
                                        <m_TemplateName text=""/>
                                        <m_ParamName text="Tag_Appeal"/>
                                    </Element>
                                </m_Values>
                            </m_Fields>
                            <m_ChildCollections/>
                            <m_Name text="Eras001"/>
                            <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
                        </Element>
                    </Element>
                </m_ChildCollections>
                <m_Name text="LM_STAVE_CHURCH"/>
                <m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
            </Element>
        </Element>

    </m_RootCollections>
</AssetObjects::ArtDefSet>
 
We can add our own Icons without the use of BLP's. You add the dds files to the Import part of the ModInfo:
Code:
       <ImportFiles id="HS_Import">
           <Items>
               <File>Art/Icons/Tech/Haj1Tech30.dds</File>
               <File>Art/Icons/Tech/Haj1Tech38.dds</File>
               <File>Art/Icons/Tech/Haj1Tech42.dds</File>
               <File>Art/Icons/Tech/Haj1Tech42_FOW.dds</File>
               <File>Art/Icons/Tech/Haj1Tech128.dds</File>
               <File>Art/Icons/Tech/Haj1Tech160.dds</File>
               <File>Art/Icons/Districts/financeatlas32.dds</File>
               <File>Art/Icons/Districts/financeatlas38.dds</File>
               <File>Art/Icons/Districts/financeatlas50.dds</File>
               <File>Art/Icons/Districts/financeatlas80.dds</File>
               <File>Art/Icons/Districts/financeatlas128.dds</File>
               <File>Art/Icons/Districts/financeatlas256.dds</File>
           </Items>
       </ImportFiles>
Create the Icon Atlas and Icon Definitions in a new XML:
Code:
<?xml version="1.0" encoding="utf-8"?>
<GameInfo>
   <IconTextureAtlases>
       <Row Name="ICON_HS_ATLAS_DISTRICTS" IconSize="32" IconsPerRow="8" IconsPerColumn="8" Filename="financeatlas32.dds"/>
       <Row Name="ICON_HS_ATLAS_DISTRICTS" IconSize="38" IconsPerRow="8" IconsPerColumn="8" Filename="financeatlas38.dds"/>
       <Row Name="ICON_HS_ATLAS_DISTRICTS" IconSize="50" IconsPerRow="8" IconsPerColumn="8" Filename="financeatlas50.dds"/>
       <Row Name="ICON_HS_ATLAS_DISTRICTS" IconSize="80" IconsPerRow="8" IconsPerColumn="8" Filename="financeatlas80.dds"/>
       <Row Name="ICON_HS_ATLAS_DISTRICTS" IconSize="128" IconsPerRow="8" IconsPerColumn="8" Filename="financeatlas128.dds"/>
       <Row Name="ICON_HS_ATLAS_DISTRICTS" IconSize="256" IconsPerRow="8" IconsPerColumn="8" Filename="financeatlas256.dds"/>
       <Row Name="ICON_HS_ATLAS_DISTRICTS_FOW" IconSize="256" IconsPerRow="8" IconsPerColumn="8" Filename="financeatlas256.dds"/>
   </IconTextureAtlases>
   <IconDefinitions>
       <Row Name="ICON_DISTRICT_SHOPPING_COMPLEX"                 Atlas="ICON_HS_ATLAS_DISTRICTS" Index="0"/>
       <Row Name="ICON_DISTRICT_SOUQ"                                             Atlas="ICON_HS_ATLAS_DISTRICTS" Index="1"/>
       <Row Name="ICON_DISTRICT_SHOPPING_COMPLEX_FOW"      Atlas="ICON_HS_ATLAS_DISTRICTS_FOW" Index="0"/>
       <Row Name="ICON_DISTRICT_SOUQ_FOW"                                  Atlas="ICON_HS_ATLAS_DISTRICTS_FOW" Index="1"/>
   </IconDefinitions>
</GameInfo>
Then you add this to the Icon part of the ModInfo:
Code:
       <Icons id="HS_Icons_Component">
           <Items>
               <File>Art/Data/HS_Icons_Districts.xml</File>
               <File>Art/Data/HS_Icons_Tech.xml</File>         
           </Items>
       </Icons>
I'm trying to understand it, at least most part of it looks comprehensive to me. But it's not quite clear to me what is the use of Index value under IconDefinitions. Could you explain a little?
Thanks!
 
So I've tried editing the black background files (my theory being that at least they're in the right format) using Gimp 2:
  1. Drag a file into Gimp 2 to open it.
  2. Use the color picker to select the black.
  3. Hit delete.
    • At this point the black disappears and I seem to have successfully created the image I need, white with a transparent background.
  4. From the File menu I use "Overwrite…"
  5. Rinse and repeat for all the other sized files, 22, 30, 36, 44, 45, 48, 50, 64, 80, 200, 256.
  6. Finally I use Add\Existing Item… in ModBuddy to pick up all the .dds and .tex files (which were already in the right place thanks to Asset Editor).
When I open Civ and click Create a game my new civilization icon still does not appear.

I wonder if the file format was changed when I overwrote it, but I don't know how to tell the format.

It might be easier if I knew how to save directly into the correct format from Gimp 2 or Paint.net — Anyone know how to do that please?
I have a same issue, and more weird I got Alexander appeared as my leader icon! Me and my "modbuddies" are now joking that Alexander is practicing "To Mods end"...
 
By the way, does anyone know why my Leader Profile shows BLUE in the setup screen? When I preview it in Photoshop the color looks normal. So to this question, what's the best export format for DDS out of Photoshop? I was using 8.8.8.8 ARGB 32bit. Could it be some other format that's actually required?

Cheers.
 
I'm not certain. My testing was somewhat quick and limited.
A bit late, but based off my work for the Rock-Hewn Church, the building is offset within the model itself (So the temple isn't located at 0,0,0 of the model for example).
 
A bit late, but based off my work for the Rock-Hewn Church, the building is offset within the model itself (So the temple isn't located at 0,0,0 of the model for example).
When setting up the building artdefs I found some building base parameters, I bet that's where we tell the game to locate the building in a tile. I wonder what if we tell it to locate a building next to river/mountain while there's no such adjacent feature?
 
Top Bottom