#author("2020-07-17T11:04:16+09:00","","")
#author("2020-07-17T11:07:11+09:00","","")
[[MOD/作成方法]]

* 指導者の各種画像表示(文明選択画面/ローディング画面/リザルト画面/外交交渉画面) [#eaf8faa2]

長くなっちゃいますがある意味不可分なものなので、まとめて説明します。
SDKのサンプルを改変していく形で説明します。

** 用意するもの [#f98cfbe3]

- hogehoge_LoadingInfo_Background.dds
サイズ:1920x960、フォーマット:非圧縮/ABGR8/ミップマップなし
- hogehoge_LoadingInfo_Foreground.dds
サイズ:888x1024、フォーマット:非圧縮/ABGR8/ミップマップなし
- hogehoge_DiplomacyInfo_Background.dds
サイズ:1920x960、フォーマット:非圧縮/ABGR8/ミップマップなし
- PORTRAIT_hogehoge.dds
サイズ:328x646、フォーマット:非圧縮/ABGR8/ミップマップなし
- FALLBACK_NEUTRAL_hogehoge.dds
サイズ:888x1024、フォーマット:非圧縮/ABGR8/ミップマップなし
- LEADER_hogehoge_NEUTRAL.dds
サイズ:888x1024、フォーマット:非圧縮/ABGR8/ミップマップなし

なお、画像のサイズが上記と異なる場合でも、ある程度は自動的に調整されて表示されるので問題ない。

※dds画像を作成するには、画像加工ソフト(「GIMP」等)を利用し、JPG/PNG画像をDDSに変換する。
※ddsのフォーマットは「非圧縮」「ABGR8」にすること。何らかの圧縮形式(DXT1等)やABGR8以外のカラー形式で作成した場合、dds画像が読み込まれなかったり、表示がバグる場合があるので注意。なお、dds画像が利用できない形式だった場合、ModBuddyでビルドするとcooker.logに"UIErrorTexture"などのエラーが表示される場合がある。
※ddsのフォーマットが正しくても、変換前のJPG/PNG画像が特殊な形式だった場合などは、やはり表示がバグる場合があるので注意。
** 下処理 [#m5aa80cc]

SDKのサンプルから立ち上げた状態だと、ゲーム内で自分の文明をクリックするとクレオパトラのアニメになっています。
まずはこれを消してしまいましょう。

クレオパトラのアニメを消すのは、既存記事([[勝手に出てくるクレオパトラを消す方法]])を参照してください。

なお、ModBuddyのデフォルトサンプル「Jasper Kitty」は、バグが多いお粗末な代物なので注意すること。
※「LEADER_JASPER_KITTYの罠」「指導者の定義を変えるとクラッシュする場合の対処」を参照。

なお、デフォルトのサンプルでは、texファイルやartdefの親タグが <AssetObjects::XXXXX> のようになっている。この書き方でも別に動作には問題ないが、ModBuddyで警告表示されてしまう。警告を消すには、この部分を <AssetObjects..XXXXX> に修正する。
** texファイルの用意 [#qd4ff928]
PORTRAIT_hogehoge.dds、FALLBACK_NEUTRAL_hogehoge.dds、LEADER_hogehoge_NEUTRAL.ddsの三つはtexファイルというものが必要です。
自動生成できるっぽいんですけど(Photoshopなら可能?)わかりませんのでサンプルのを改変します。
コピーして中身を2か所ほど変更します。

*** FALLBACK_NEUTRAL_hogehoge.tex [#l2a5997b]

FALLBACK_NEUTRAL_JASPERKITTY.texをコピーして作ります。
コピーしたら開いて以下のように書き換えます。
     <m_Height>1024</m_Height> ★画像の縦幅。今回の画像は888×1024なので1024
     <m_Width>888</m_Width> ★画像の横幅。今回の画像は888×1024なので888
     <m_Depth>1</m_Depth>
     <m_NumMipMaps>0</m_NumMipMaps> ★ミップマップ数。※無い場合は0にする
     <m_SourceFilePath text="C:\Users\sseckman\Documents\Meow.dds"/>
     <m_SourceObjectName text=""/>
     <m_ImportedTime>0</m_ImportedTime>
     <m_ExportedTime>1951816190</m_ExportedTime>
     <m_ClassName text="Leader_Fallback"/>
     <m_DataFiles>
         <Element>
             <m_ID text="DDS"/>
             <m_RelativePath text="FALLBACK_NEUTRAL_hogehoge.dds"/> ★ここ
         </Element>
     </m_DataFiles>
     <m_Name text="FALLBACK_NEUTRAL_hogehoge"/> ★ここ
     <m_Description text=""/>
     <m_Tags>
         <Element text="Leader_Fallback"/>
         <Element text="Leader"/>
         <Element text="Fallback"/>
     </m_Tags>
     <m_Groups/>
 </AssetObjects::TextureInstance>
*** PORTRAIT_hogehoge.tex [#v90341a2]

LEADER_JASPER_KITTY_NEUTRAL.texをコピーして作ります。
コピーしたら開いて以下のように書き換えます。
 <m_Height>646</m_Height> ★画像の縦幅
 <m_Width>328</m_Width> ★画像の横幅
 <m_Depth>1</m_Depth>
 <m_NumMipMaps>0</m_NumMipMaps>
 <m_SourceFilePath text="C:\Users\sseckman\Documents\Meow.dds"/>
 <m_SourceObjectName text=""/>
 <m_ImportedTime>0</m_ImportedTime>
 <m_ExportedTime>1144208637</m_ExportedTime>
 <m_ClassName text="UserInterface"/>
 <m_DataFiles>
     <Element>
         <m_ID text="DDS"/>
         <m_RelativePath text="PORTRAIT_hogehoge.dds"/> ★ここ
     </Element>
 </m_DataFiles>
 <m_Name text="PORTRAIT_hogehoge"/> ★ここ
 <m_Description text=""/>
 <m_Tags>
     <Element text="UserInterface"/>
     </m_Tags>
     <m_Groups/>
 </AssetObjects::TextureInstance>
*** LEADER_hogehoge_NEUTRAL.tex [#ye11e1fa]

こちらもLEADER_JASPER_KITTY_NEUTRAL.texをコピーして作ります。
コピーしたら開いて以下のように書き換えます。

 <m_Height>1024</m_Height> ★画像の縦幅
 <m_Width>888</m_Width> ★画像の横幅
 <m_Depth>1</m_Depth>
 <m_NumMipMaps>0</m_NumMipMaps>
 <m_SourceFilePath text="C:\Users\sseckman\Documents\Meow.dds"/>
 <m_SourceObjectName text=""/>
 <m_ImportedTime>0</m_ImportedTime>
 <m_ExportedTime>1144208637</m_ExportedTime>
 <m_ClassName text="UserInterface"/>
 <m_DataFiles>
     <Element>
         <m_ID text="DDS"/>
         <m_RelativePath text="LEADER_hogehoge_NEUTRAL.dds"/> ★ここ
     </Element>
 </m_DataFiles>
 <m_Name text="LEADER_hogehoge_NEUTRAL"/> ★ここ
 <m_Description text=""/>
 <m_Tags>
     <Element text="UserInterface"/>
     </m_Tags>
     <m_Groups/>
 </AssetObjects::TextureInstance>

すべて作成し終えたら開発環境へ登録します。
Modbuddyの画面左にある一覧の「Textures」へドラッグアンドドロップしてください。
元のJASPER_KITTYのは削除してしまいましょう。
画面左にある一覧で選択してからDeleteキーで消せます。
** XLPファイルの編集 [#he994ad9]

XLPフォルダには2つファイルが登録されています。
それぞれ以下のように書き換えます。

*** LeaderFallbacks.xlp [#o2cb9b7b]

 <?xml version="1.0" encoding="UTF-8" ?>
 <AssetObjects::XLP>
     <m_Version>
         <major>4</major>
         <minor>0</minor>
         <build>253</build>
         <revision>293</revision>
     </m_Version>
     <m_ClassName text="LeaderFallback"/>
     <m_PackageName text="LeaderFallbacks"/>
     <m_Entries>
         <Element>
             <m_EntryID text="FALLBACK_NEUTRAL_hogehoge"/> ★ここ
             <m_ObjectName text="FALLBACK_NEUTRAL_hogehoge"/> ★ここ
         </Element>
     </m_Entries>
     <m_AllowedPlatforms>
         <Element>WINDOWS</Element>
         <Element>LINUX</Element>
         <Element>MACOS</Element>
         <Element>IOS</Element>
     </m_AllowedPlatforms>
 </AssetObjects::XLP>

*** UILeaders.xlp [#e8545765]

 <?xml version="1.0" encoding="UTF-8" ?>
 <AssetObjects::XLP>
     <m_Version>
         <major>4</major>
         <minor>0</minor>
         <build>253</build>
         <revision>293</revision>
     </m_Version>
     <m_ClassName text="UITexture"/>
     <m_PackageName text="UILeaders"/>
     <m_Entries>
         <Element>
             <m_EntryID text="LEADER_hogehoge_NEUTRAL"/> ★変更
             <m_ObjectName text="LEADER_hogehoge_NEUTRAL"/> ★変更
         </Element>
         <Element> ★追加 
             <m_EntryID text="PORTRAIT_hogehoge"/> ★追加
             <m_ObjectName text="PORTRAIT_hogehoge"/> ★追加
         </Element> ★追加
     </m_Entries>
     <m_AllowedPlatforms>
         <Element>WINDOWS</Element>
         <Element>LINUX</Element>
         <Element>MACOS</Element>
         <Element>IOS</Element>
     </m_AllowedPlatforms>
 </AssetObjects::XLP>

** FallbackLeaders.artdefの編集 [#zfba9b51]

以下を書き換えるだけです。

                                     <Element class="AssetObjects::BLPEntryValue">
                                         <m_EntryName text="FALLBACK_NEUTRAL_hogehoge"/> ★ここ
                                         <m_XLPClass text="LeaderFallback"/>
                                         <m_XLPPath text="LeaderFallbacks.xlp"/>
                                         <m_BLPPackage text="LeaderFallbacks"/>
                                         <m_LibraryName text="LeaderFallback"/>
                                         <m_ParamName text="BLP Entry"/>
                                     </Element>

** NewLeader_Config.xmlの編集 [#p0b685ce]

PORTRAIT画像を指定している以下の箇所を書き換えます。

&ref(PORTRAIT.png);

** ローディング画面、外交交渉画面の設定記述 [#qf545f83]

用意しておいた残りの画像ファイル3つを登録します。

&ref(ImageAdded2.png);

さらに、プロジェクトファイル(この画像では、NewLeader6名のもの)のProperty画面から画像のImportを指定します。

&ref(ImportImage.png);

そしてここからxmlを書きます。
新規にファイルを追加してもいいですし、どこかに混ぜても構いません。
本例ではNewLeader_JasperKitty.xmlに混ぜ込むことにします。

(新規にファイルを追加した場合はPropertyへのファイル登録を忘れないように。In-Game Actions⇒UpdateDatabaseのところです。)

NewLeader_JasperKitty.xml
     <DiplomacyInfo>
         <Row Type="LEADER_JASPER_KITTY" BackgroundImage="hogehoge_DiplomacyInfo_Background.dds"/>
     </DiplomacyInfo>
     <LoadingInfo>
         <Row LeaderType="LEADER_JASPER_KITTY" ForegroundImage="hogehoge_LoadingInfo_Foreground.dds" BackgroundImage="hogehoge_LoadingInfo_Background.dds" LeaderText="LOC_LEADER_JASPER_KITTY_DOM_TEXT" PlayDawnOfManAudio="1"/>
     </LoadingInfo>

DiplomacyInfoが外交交渉画面です。
こちらはリーダーの指定と背景画像の指定のみ。
LoadingInfoがローディング画面です。前景、背景を登録します。
LeaderTextはローディング画面にでてくる指導者固有の説明書きの部分です。
必要なければ削除してOK。追加する場合はNewLeader_Text.xmlへ書いてください。

PlayDawnOfManAudioはゲーム開始(再開)時の時代に合わせた文章のナレーションボイス。0にするとボイスオフ。

なお、背景画像のtexファイルを用意して、UILeaders.xlpに追記する方法もある。この場合は、dds画像のImportは不要である。
** ModBuddy propertiesの設定 [#qf545f84]

ModBuddyに新規追加したファイルは、Build Actionが「None」になっている場合は無効になり、ビルドしても組み込まれない。ファイルを有効化するには、ソリューションエクスプローラーで該当ファイルを選択 → 右クリック → Properties → Advanced → Build Action → 「Content」「Arfdef」「XLP」のいずれかを選択する。

XMLやSQLファイルなら「Content」、arfdefファイルは「Arfdef」、dds/tex/xlpファイルは「XLP」に設定する。ddsおよびtexファイルは「Content」に設定しても別に問題ないが、その場合、Modをビルドすると不要なファイルが増えて容量が肥大化してしまうので注意(後述)
** ビルドされたファイルの構造 [#qf545f85]
** MODのビルド [#qf545f85]

MODの編集完了後は、ModBuddyのメニューバー → BUILD → Build Solution を実行する。なお、前回ビルド済みだった場合、Build Solutionだとエラーが出るので、一度「Clean Solution」で前回ビルドしたファイルを消去した後に「Rebuild Solution」を実行する。
MODの編集完了後、ModBuddyのメニューバー → BUILD → Build Solution を実行すると、Modフォルダが生成される。なお、前回ビルド済みだった場合、Build Solutionだとエラーが出るので、一度「Clean Solution」で前回ビルドしたファイルを消去した後に「Build Solution」を実行するか、または「Rebuild Solution」を実行する。

ビルドされたMODファイルは、"C:\Users\XXX(ユーザー名)\Documents\My Games\Sid Meier's Civilization VI\Mods\"配下のフォルダに生成される(デフォルト設定の場合)。XMLやSQLファイルなどはそのままの状態で組み込まれるが、ddsおよびtexファイルについては、BLPファイルとして梱包され、"Platforms\Windows\BLPs"フォルダの「LeaderFallbacks.blp」「UILeaders.blp」の内部に格納されている。

なお、ddsおよびtexファイルのBuild Actionを「Content」に設定した場合、ビルドしたファイルに「Textures」フォルダが生成され、フォルダ配下にdds/texファイルが配置されてしまう。本来、dds/texファイルの中身はblpファイルに梱包されているので、Texturesフォルダの内容は不要である。別にあっても問題ないが、容量が増えてストレージ領域の無駄遣いなので、出来れば消した方がいいだろう。
** 成功例 [#t1b5028b]

文明選択画面

&ref(BeforeGameStart.jpg);

Loading画面

&ref(Loading.jpg);

外交交渉画面

&ref(Diplomacy.jpg);

** 備考 [#n6391db5]

文明選択画面の画像は用意しなくてもいい場合があります。
FALLBACK_LEADER_hogehogeを使っても違和感がない場合はつくらなくてOK。
(たとえばボイスロイドの立絵だときれいに調整されて枠に収まるケースが多いです)

また、本手順で実際に作ったものを以下に上げておきます。
https://www.axfc.net/u/3835265


このエントリーをはてなブックマークに追加