MOD/作成方法

アイコンの作り方 Edit?

指導者のアイコンを例に説明します。
※SDKを用いて、サンプルの「Starter - New Civilization and Leader」をベースに作っているものとしています。

画像の用意 Edit?

まずは画像を用意しなくては話になりません。
指導者のアイコンは正方形で1辺は256,80,64,55,50,45,32ピクセルのサイズのものが必要になります。

とりあえず一番大きな256x256の画像を用意します。フォーマットはdds(無圧縮/ABGR8/ミニマップあり)。
ちなみに筆者はGIMPにDDSを扱うプラグインを入れてやっています。

以降の説明ではhogehoge256.ddsとします。

hogehoge256.ddsをリサイズしてほかのサイズを作成し、作り終えたらMOD開発環境のTextureフォルダへ。

texファイルの用意 Edit?

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を書く Edit?

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への登録 Edit?

Mod.Art.xmlへ「ビルド後に出来上がるblpファイルのパス」を追記します。
blpファイルのファイル名はfuga.blpになります。

		<Element>
			<libraryName text="UITexture"/>
			<relativePackagePaths>
				<Element text="UILeaders"/>
				<Element text="UI/fuga.blp"/> ★これ追加
			</relativePackagePaths>
		</Element>

開発環境へ登録 Edit?

作ったdds、tex、xlpをMODの開発環境へ登録します。
登録後の開発環境下はこうなっているはずです。

Textures
├hogehoge256.dds
├hogehoge256.tex
├hogehoge80.dds
・
・
・
└hogehoge32.tex
XLPs
└fuga.xlp

さらにプロパティのInGameActionの項目のImportのところ(なければ追加)へddsファイルを登録します。
これで画像が読み込まれるようになります。

xmlを書く Edit?

アイコンの定義(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]決め打ちになっているものと思われます)

ビルド Edit?

ビルドすると、ModのディレクトリにPlatformsというディレクトリが作られています。

Platforms
├MacOS
│└BLPs
│  ├SHARED_DATA
│  └UI
│   └[任意に決めた名前].blp
└Windows
 └BLPs
  ├SHARED_DATA
  └UI
   └[任意に決めた名前].blp

こんな感じになっているはずです。
あとはゲームを立ち上げて指導者を選ぼうとしてみてください。作ったアイコンが表示されているはずです。

作成中のMODで少々恥ずかしいですが、うまくいった例をさらしておきます。



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