指導者のアイコンを例に説明します。
※SDKを用いて、サンプルの「Starter - New Civilization and Leader」をベースに作っているものとしています。
まずは画像を用意しなくては話になりません。
指導者のアイコンは正方形で1辺は256,80,64,55,50,45,32ピクセルのサイズのものが必要になります。
とりあえず一番大きな256x256の画像を用意します。フォーマットはdds(無圧縮/ABGR8/ミニマップあり)。
ちなみに筆者はGIMPにDDSを扱うプラグインを入れてやっています。
以降の説明ではhogehoge256.ddsとします。
hogehoge256.ddsをリサイズしてほかのサイズを作成し、作り終えたらMOD開発環境のTextureフォルダへ。
SDK Assetsから「Montezuma○○.tex」をMOD開発環境のTextureフォルダへコピーして、ファイル名は先ほど作った画像に合わせて変えてください。
この.texファイルは普通にテキストエディタで開くことができますので、中身を開いて二か所記述を作ったファイルに合わせて変更します。
Montezuma256.texを例とすると、以下を変更することになります。
<m_DataFiles> <Element> <m_ID text="DDS"/> <m_RelativePath text="Montezuma256.dds"/> ★ここ </Element> </m_DataFiles> <m_Name text="Montezuma256"/> ★ここ <m_Description text=""/> <m_Tags> <Element text="UserInterface"/> </m_Tags> <m_Groups/> </AssetObjects::TextureInstance>
数が多くて面倒ですが、全サイズ分変更して保存。
XLPというのは、アイコンを生成するための定義ファイルになります。
SDK Assetsからパクって作りましょう。
コピー元は
Sid Meier's Civilization VI SDK Assets\pantry\XLPs\Icons.xlp
です。
指導者以外のアイコンも山ほど登録されていますが・・・モンテスマの指導者アイコンだけ抜き出すと以下になります。
<?xml version="1.0" encoding="UTF-8" ?> <AssetObjects::XLP> <m_Version> <major>4</major> <minor>0</minor> <build>252</build> <revision>195</revision> </m_Version> <m_ClassName text="UITexture"/> <m_PackageName text="UI/Icons"/> <m_Entries> <Element> <m_EntryID text="Montezuma256"/> <m_ObjectName text="Montezuma256"/> </Element> <Element> <m_EntryID text="Montezuma32"/> <m_ObjectName text="Montezuma32"/> </Element> <Element> <m_EntryID text="Montezuma48"/> <m_ObjectName text="Montezuma48"/> </Element> <Element> <m_EntryID text="Montezuma50"/> <m_ObjectName text="Montezuma50"/> </Element> <Element> <m_EntryID text="Montezuma55"/> <m_ObjectName text="Montezuma55"/> </Element> <Element> <m_EntryID text="Montezuma64"/> <m_ObjectName text="Montezuma64"/> </Element> <Element> <m_EntryID text="Montezuma80"/> <m_ObjectName text="Montezuma80"/> </Element> <Element> <m_EntryID text="Montezuma45"/> <m_ObjectName text="Montezuma45"/> </Element> </m_Entries> <m_AllowedPlatforms> <Element>WINDOWS</Element> <Element>LINUX</Element> <Element>MACOS</Element> <Element>IOS</Element> </m_AllowedPlatforms> </AssetObjects::XLP>
変更箇所は
となります。
変更したらファイル名はm_PackageName の textと同じものにして、XLPsフォルダへ保存してください。
Mod.Art.xmlへ「ビルド後に出来上がるblpファイルのパス」を追記します。
blpファイルのファイル名はfuga.blpになります。
<Element> <libraryName text="UITexture"/> <relativePackagePaths> <Element text="UILeaders"/> <Element text="UI/fuga.blp"/> ★これ追加 </relativePackagePaths> </Element>
作ったdds、tex、xlpをMODの開発環境へ登録します。
登録後の開発環境下はこうなっているはずです。
Textures ├hogehoge256.dds ├hogehoge256.tex ├hogehoge80.dds ・ ・ ・ └hogehoge32.tex XLPs └fuga.xlp
さらにプロパティのInGameActionの項目のImportのところ(なければ追加)へddsファイルを登録します。
これで画像が読み込まれるようになります。
アイコンの定義(xml)を書きます。
新規ファイル作成でxmlを選んだら以下のように記述します。
<?xml version="1.0" encoding="utf-8"?> <GameInfo> <IconTextureAtlases> <Row Name="ICON_ATLAS_HOGEHOGE" IconSize="32" IconsPerRow="1" IconsPerColumn="1" Filename="hogehoge32"/> <Row Name="ICON_ATLAS_HOGEHOGE" IconSize="45" IconsPerRow="1" IconsPerColumn="1" Filename="hogehoge45"/> <Row Name="ICON_ATLAS_HOGEHOGE" IconSize="50" IconsPerRow="1" IconsPerColumn="1" Filename="hogehoge50"/> <Row Name="ICON_ATLAS_HOGEHOGE" IconSize="55" IconsPerRow="1" IconsPerColumn="1" Filename="hogehoge55"/> <Row Name="ICON_ATLAS_HOGEHOGE" IconSize="64" IconsPerRow="1" IconsPerColumn="1" Filename="hogehoge64"/> <Row Name="ICON_ATLAS_HOGEHOGE" IconSize="80" IconsPerRow="1" IconsPerColumn="1" Filename="hogehoge80"/> <Row Name="ICON_ATLAS_HOGEHOGE" IconSize="256" IconsPerRow="1" IconsPerColumn="1" Filename="hogehoge256"/> </IconTextureAtlases> <IconDefinitions> <Row Name="ICON_LEADER_HOGEHOGE" Atlas="ICON_ATLAS_HOGEHOGE" Index="0"/> </IconDefinitions> </GameInfo>
ちなみにアイコン画像というのは1サイズにつき複数のアイコンをタイルのように並べて1まとめにしておき、
xmlの定義の中で行数、列数を定めてindex(左上を0として真横が1、その横が2・・・)指定で呼び出せるようになっています。
今回は1アイコン単品なので1行1列のindexは0だけ、という形になります。
このxmlファイルはプロパティのFrontEnd ActionsのUpdateIcons、InGame ActionsのUpdateIconsの両方に追加します。
これで他のxmlから参照すると使えるようになります。
今回例としたのは指導者のアイコンですので、
実際に使う場合はConfig.xmlの<LeaderAbilityIcon>と<LeaderIcon>の値を変えればOKです。
<?xml version="1.0" encoding="utf-8"?> <GameData> <Players> <Row> <Domain>StandardPlayers</Domain> <CivilizationType>CIVILIZATION_FELINE</CivilizationType> <LeaderType>LEADER_JASPER_KITTY</LeaderType> <CivilizationName>LOC_CIVILIZATION_FELINE_NAME</CivilizationName> <CivilizationIcon>ICON_CIVILIZATION_FELINE</CivilizationIcon> <LeaderName>LOC_LEADER_JASPER_KITTY_NAME</LeaderName> <LeaderIcon>ICON_LEADER_JASPER_KITTY</LeaderIcon> ★ここの値を変える ・ ・ ・ <LeaderAbilityName>LOC_TRAIT_LEADER_JASPER_KITTY_NAME</LeaderAbilityName> <LeaderAbilityDescription>LOC_TRAIT_LEADER_JASPER_KITTY_DESCRIPTION</LeaderAbilityDescription> <LeaderAbilityIcon>ICON_LEADER_JASPER_KITTY</LeaderAbilityIcon> ★ここの値を変える <Portrait>LEADER_JASPER_KITTY_NEUTRAL</Portrait> </Row> </Players>
注意点としては、ICONの定義名はICON_[LeaderTypeの定義名]にしておかないと、文明選択時には表示されますがゲーム内では表示がされません。
(未確認ですが、ゲーム内でICONを表示する際のluaスクリプトがICON_[LeaderType]決め打ちになっているものと思われます)
ビルドすると、ModのディレクトリにPlatformsというディレクトリが作られています。
Platforms ├MacOS │└BLPs │ ├SHARED_DATA │ └UI │ └[任意に決めた名前].blp └Windows └BLPs ├SHARED_DATA └UI └[任意に決めた名前].blp
こんな感じになっているはずです。
あとはゲームを立ち上げて指導者を選ぼうとしてみてください。作ったアイコンが表示されているはずです。
作成中のMODで少々恥ずかしいですが、うまくいった例をさらしておきます。