MOD/作成方法

ユニークユニットの作成 Edit

特殊能力を持たない単純なユニークユニットの作成例です。

xmlの記述 Edit

ユニットのデータ記述 Edit

まずは性能等を決めてしまいましょう。
大砲とロケット砲の間ぐらいの性能を持つ攻城兵器「自走榴弾砲」を作ってみます。
(すでに公開済みMODで実装しているものです)

新規にxmlファイルを作成します。で、適当にリネームしましょう。
ここではNewLeader_UU.xmlとします。

Propertyを右クリック⇒Add⇒NewItemと選択

Menu.png

Database(xml)を選択し、右下のAddをクリック

NewXML.png

これで新しくxmlファイルが出来上がりますので、適当にリネームしましょう。
ここではNewLeader_UU.xmlとします。

内容は以下のようにします。

<?xml version="1.0" encoding="utf-8"?>
<GameData>
	<Types>
		<Row Type="UNIT_hogehoge_UU" Kind="KIND_UNIT"/>
	</Types>
	<UnitAiInfos>
		<Row UnitType="UNIT_hogehoge_UU" AiType="UNITAI_COMBAT"/>
		<Row UnitType="UNIT_hogehoge_UU" AiType="UNITTYPE_RANGED"/>
		<Row UnitType="UNIT_hogehoge_UU" AiType="UNITTYPE_SIEGE"/>
		<Row UnitType="UNIT_hogehoge_UU" AiType="UNITTYPE_LAND_COMBAT"/>
	</UnitAiInfos>
	<TypeTags>
		<Row Type="UNIT_hogehoge_UU" Tag="CLASS_SIEGE"/>
		<Row Type="UNIT_hogehoge_UU" Tag="CLASS_FORWARD_OBSERVER"/>
	</TypeTags>
	<Units>
		<Row UnitType="UNIT_hogehoge_UU" BaseMoves="3" Cost="550" AdvisorType="ADVISOR_CONQUEST" 
			 BaseSightRange="2" ZoneOfControl="false" Domain="DOMAIN_LAND" FormationClass="FORMATION_CLASS_LAND_COMBAT" 
			 Name="LOC_UNIT_hogehoge_UU_NAME" Description="LOC_UNIT_hogehoge_UU_DESCRIPTION" PurchaseYield="YIELD_GOLD" 
			 PromotionClass="PROMOTION_CLASS_SIEGE" Maintenance="7" Combat="65" Range="2" TraitType="TRAIT_LEADER_UNIT_hogehoge_UU" 
			 PrereqTech="TECH_ADVANCED_BALLISTICS" Bombard="88"/>
	</Units>
</GameData>

Types:ユニットの親定義

UnitAiInfos:AIがユニットを動かす際の指標

TypeTags:ユニットが持つTagの設定

Units:ユニットのステータス詳細設定

UnitTypeTypeで定義したもの
BaseMoves移動力
Cost生産コスト
AdvisorType助言者の設定?
BaseSightRange視界
ZoneOfControlZOC:false = なし
Domainユニットが属するドメイン:DOMAIN_LAND = 陸上ユニット
FormationClassよくわかりません・・・たぶんユニットの見た目にかかわるものかと思います。
PromotionClassよくわかりません・・・ユニットが何のタイプなのか、かな???(SIEGEだと攻城兵器)
Maintenance維持費
Combat近接戦闘力
Range射程
TraitType何のTraitに紐付くか。ユニークユニットならば必須です。ロケット砲は全文明共通のユニットですので追加をしました。詳細は後述します。
PrereqTechユニット作成に必要な解禁技術:TECH_ADVANCED_BALLISTICS = 高度な弾道学
Bombard都市砲撃力

<Units>に設定できる値について Edit

設定できる値の定義は

Sid Meier's Civilization VI/Base/Assets/Gameplay/Data/Schema/01_GameplaySchema.sql

に書かれています。

CREATE TABLE "Units" (
・
・
・
FOREIGN KEY (ObsoleteTech) REFERENCES Technologies(TechnologyType) ON DELETE SET DEFAULT ON UPDATE SET DEFAULT);

の部分がユニットのデータ定義です。

データベースを知っている方ならわかると思いますが、SQLのCreate文そのものです。
どの要素を変えるとどうなるのかは全部理解できていません・・・。

指導者に紐付ける Edit

後述する、と書いたTraitについてはここで説明します。
そのユニットが指導者(ないし文明)固有のものであることを指定するにはTraitというものに紐付けます。
そのTraitを定義します。

今回は指導者に紐付けますのでNewLeader_JasperKitty.xmlを開いて追加します。

<GameData>
	<Types>
		<Row Type="LEADER_JASPER_KITTY" Kind="KIND_LEADER" />
		<Row Type="TRAIT_LEADER_JASPER_KITTY" Kind="KIND_TRAIT"/>
		<Row Type="TRAIT_LEADER_UNIT_hogehoge_UU" Kind="KIND_TRAIT"/> ★追加
	</Types>

	<Leaders>
		<Row>
			<LeaderType>LEADER_JASPER_KITTY</LeaderType>
			<Name>LOC_LEADER_JASPER_KITTY_NAME</Name>
			<InheritFrom>LEADER_DEFAULT</InheritFrom>
		</Row>
	</Leaders>

	<LeaderQuotes>
		<Row LeaderType="LEADER_JASPER_KITTY" Quote="LOC_LEADER_JASPER_KITTY_QUOTE"/>
	</LeaderQuotes>

	<LeaderTraits>
		<Row LeaderType="LEADER_JASPER_KITTY" TraitType="TRAIT_LEADER_JASPER_KITTY"/>
		<Row LeaderType="LEADER_JASPER_KITTY" TraitType="TRAIT_LEADER_UNIT_hogehoge_UU"/> ★追加
	</LeaderTraits>
	<Traits>
		<Row TraitType="TRAIT_LEADER_JASPER_KITTY" Name="LOC_TRAIT_LEADER_JASPER_KITTY_NAME" Description="LOC_TRAIT_LEADER_JASPER_KITTY_DESCRIPTION"/>
		<Row TraitType="TRAIT_LEADER_UNIT_hogehoge_UU" Name="LOC_TRAIT_LEADER_UNIT_hogehoge_UU_NAME"/> ★追加
	</Traits>
	<TraitModifiers>
		<Row TraitType="TRAIT_LEADER_JASPER_KITTY" ModifierId="TRAIT_JASPER_KITTY_INCREASE_GREAT_MUSICIAN_POINTS"/>
	</TraitModifiers>

こうすることで、LEADER_JASPER_KITTYはTRAIT_LEADER_UNIT_hogehoge_UUというTraitをもち、
UNIT_hogehoge_UUというユニットはTRAIT_LEADER_UNIT_hogehoge_UUに紐付いている、という風に定義がつながります。

文明選択時の表示 Edit

文明・指導者の特性や固有のユニット等はゲーム開始前の文明選択時に表示されていますが、それはConfigに記載されているからです。
それを記述しましょう。編集するのはNewLeader_Config.xmlになります。

<?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>
			<CivilizationAbilityName>LOC_TRAIT_CIVILIZATION_FELINE_NAME</CivilizationAbilityName>
			<CivilizationAbilityDescription>LOC_TRAIT_CIVILIZATION_FELINE_DESCRIPTION</CivilizationAbilityDescription>
			<CivilizationAbilityIcon>ICON_CIVILIZATION_FELINE</CivilizationAbilityIcon>
			<LeaderAbilityName>LOC_TRAIT_LEADER_JASPER_KITTY_NAME</LeaderAbilityName>
			<LeaderAbilityDescription>LOC_TRAIT_LEADER_JASPER_KITTY_DESCRIPTION</LeaderAbilityDescription>
			<LeaderAbilityIcon>ICON_LEADER_JASPER_KITTY</LeaderAbilityIcon>
			<Portrait>PORTRAIT_hogehoge</Portrait>
		</Row>
	</Players>
	<PlayerItems>
		<Row>
			<Domain>StandardPlayers</Domain>
			<CivilizationType>CIVILIZATION_FELINE</CivilizationType>
			<LeaderType>LEADER_JASPER_KITTY</LeaderType>
			<Type>BUILDING_LITTER_BOX</Type>
			<Name>LOC_BUILDING_LITTER_BOX_NAME</Name>
			<Description>LOC_BUILDING_LITTER_BOX_DESCRIPTION</Description>
			<Icon>ICON_BUILDING_LITTER_BOX</Icon>
			<SortIndex>10</SortIndex>
		</Row>
		<Row> ★追加
			<Domain>StandardPlayers</Domain> ★追加
			<CivilizationType>CIVILIZATION_FELINE</CivilizationType> ★追加
			<LeaderType>LEADER_JASPER_KITTY</LeaderType> ★追加
			<Type>UNIT_hogehoge_UU</Type> ★追加
			<Name>LOC_UNIT_hogehoge_UU_NAME</Name> ★追加
			<Description>LOC_UNIT_hogehoge_UU_DESCRIPTION</Description> ★追加
			<Icon>ICON_UNIT_hogehoge_UU</Icon> ★追加
			<SortIndex>20</SortIndex> ★追加
		</Row> ★追加
	</PlayerItems>
</GameData>

説明文を書く Edit

実際に表示される説明文をNewLeader_ConfigText.xmlへ記述します。
必要なのは

の4項目です。
例によってサンプルが英語ですので英語で書いておきます。

		<Row Tag="LOC_UNIT_hogehoge_UU_NAME" Language="en_US">
			<Text>Howitzer</Text>
		</Row>
		<Row Tag="LOC_UNIT_hogehoge_UU_DESCRIPTION" Language="en_US">
			<Text>Jasper Kitty unique Atomic era unit.</Text>
		</Row>
		<Row Tag="LOC_TRAIT_LEADER_UNIT_hogehoge_UU_NAME" Language="en_US">
			<Text>Jasper Kitty unique unit: Howitzer</Text>
		</Row>
		<Row Tag="LOC_PEDIA_UNITS_PAGE_UNIT_hogehoge_UU_CHAPTER_HISTORY_PARA_1" Language="en_US">
			<Text></Text>
		</Row>

Propertyに登録する Edit

作ったxmlファイルはpropertyへ登録しましょう。
In-Game ActionsのUpdateDatabaseの中です。

AddXMLtoProperty.png

ユニットのアイコン作成 Edit

ユニットは独自の2つのアイコンを持っています。

これらも作る必要があります。
それぞれ必要なサイズは以下となります。

基本は指導者や文明のアイコンと同じで、

です。
texのコピー元は指導者のアイコンと同じでOK。(文明アイコンのtexは少し仕様が違うみたいです)

そしてxmlの定義の書き方が少し特殊です。これは命名規則が決まっています。

まずFlagは4種類必要です。

ICON_[ユニット名]256,80,50,38,32のサイズを登録する
ICON_[ユニット名]_FOW32のサイズのみを登録する
ICON_[ユニット名]_WHITE80,32,2のサイズを登録する
ICON_[ユニット名]_BLACK32のサイズのみを登録する

Portraitはさらに面倒くさくて以下のようになります。

ICON_[ユニット定義名]_PORTRAIT256,200,95,50,38のサイズを登録する
ICON_ETHNICITY_ASIAN_[ユニット定義名]_PORTRAIT95,75のサイズを登録する
ICON_ETHNICITY_MEDIT_[ユニット定義名]_PORTRAIT95,75のサイズを登録する
ICON_ETHNICITY_SOUTHAM_[ユニット定義名]_PORTRAIT95,75のサイズを登録する
ICON_ETHNICITY_AFRICAN_[ユニット定義名]_PORTRAIT95,75のサイズを登録する

具体的には以下のように・・・(長いです)。

開発環境への画像登録 Edit

ImageAddUU.png

hogehoge_Icons.xlp Edit

以下を追加。

		<Element>
			<m_EntryID text="ICON_UU_hogehoge22"/>
			<m_ObjectName text="ICON_UU_hogehoge22"/>
		</Element>
		<Element>
			<m_EntryID text="ICON_UU_hogehoge32"/>
			<m_ObjectName text="ICON_UU_hogehoge32"/>
		</Element>
		<Element>
			<m_EntryID text="ICON_UU_hogehoge38"/>
			<m_ObjectName text="ICON_UU_hogehoge38"/>
		</Element>
		<Element>
			<m_EntryID text="ICON_UU_hogehoge50"/>
			<m_ObjectName text="ICON_UU_hogehoge50"/>
		</Element>
		<Element>
			<m_EntryID text="ICON_UU_hogehoge80"/>
			<m_ObjectName text="ICON_UU_hogehoge80"/>
		</Element>
		<Element>
			<m_EntryID text="ICON_UU_hogehoge256"/>
			<m_ObjectName text="ICON_UU_hogehoge256"/>
		</Element>
		<Element>
			<m_EntryID text="ICON_UU_hogehoge_PORT38"/>
			<m_ObjectName text="ICON_UU_hogehoge_PORT38"/>
		</Element>
		<Element>
			<m_EntryID text="ICON_UU_hogehoge_PORT50"/>
			<m_ObjectName text="ICON_UU_hogehoge_PORT50"/>
		</Element>
		<Element>
			<m_EntryID text="ICON_UU_hogehoge_PORT70"/>
			<m_ObjectName text="ICON_UU_hogehoge_PORT70"/>
		</Element>
		<Element>
			<m_EntryID text="ICON_UU_hogehoge_PORT95"/>
			<m_ObjectName text="ICON_UU_hogehoge_PORT95"/>
		</Element>
		<Element>
			<m_EntryID text="ICON_UU_hogehoge_PORT200"/>
			<m_ObjectName text="ICON_UU_hogehoge_PORT200"/>
		</Element>
		<Element>
			<m_EntryID text="ICON_UU_hogehoge_PORT256"/>
			<m_ObjectName text="ICON_UU_hogehoge_PORT256"/>
		</Element>

NewlLeader_Icons.xml Edit

<?xml version="1.0" encoding="utf-8"?>
<GameData>
	<IconTextureAtlases>
		<Row Name="ICON_ATLAS_LEADER_HOGEHOGE" IconSize="32"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_LEADER_hogehoge32.dds"/>
		<Row Name="ICON_ATLAS_LEADER_HOGEHOGE" IconSize="45"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_LEADER_hogehoge45.dds"/>
		<Row Name="ICON_ATLAS_LEADER_HOGEHOGE" IconSize="50"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_LEADER_hogehoge50.dds"/>
		<Row Name="ICON_ATLAS_LEADER_HOGEHOGE" IconSize="55"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_LEADER_hogehoge55.dds"/>
		<Row Name="ICON_ATLAS_LEADER_HOGEHOGE" IconSize="64"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_LEADER_hogehoge64.dds"/>
		<Row Name="ICON_ATLAS_LEADER_HOGEHOGE" IconSize="80"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_LEADER_hogehoge80.dds"/>
		<Row Name="ICON_ATLAS_LEADER_HOGEHOGE" IconSize="256" IconsPerRow="1" IconsPerColumn="1" Filename="ICON_LEADER_hogehoge256.dds"/>
 
		<Row Name="ICON_ATLAS_CIVILIZATION_HOGEHOGE" IconSize="22"   IconsPerRow="1" IconsPerColumn="1" Filename="ICON_CIV_hogehoge22.dds"/>
		<Row Name="ICON_ATLAS_CIVILIZATION_HOGEHOGE" IconSize="30"   IconsPerRow="1" IconsPerColumn="1" Filename="ICON_CIV_hogehoge30.dds"/>
		<Row Name="ICON_ATLAS_CIVILIZATION_HOGEHOGE" IconSize="36"   IconsPerRow="1" IconsPerColumn="1" Filename="ICON_CIV_hogehoge36.dds"/>
		<Row Name="ICON_ATLAS_CIVILIZATION_HOGEHOGE" IconSize="44"   IconsPerRow="1" IconsPerColumn="1" Filename="ICON_CIV_hogehoge44.dds"/>
		<Row Name="ICON_ATLAS_CIVILIZATION_HOGEHOGE" IconSize="45"   IconsPerRow="1" IconsPerColumn="1" Filename="ICON_CIV_hogehoge45.dds"/>
		<Row Name="ICON_ATLAS_CIVILIZATION_HOGEHOGE" IconSize="48"   IconsPerRow="1" IconsPerColumn="1" Filename="ICON_CIV_hogehoge48.dds"/>
		<Row Name="ICON_ATLAS_CIVILIZATION_HOGEHOGE" IconSize="50"   IconsPerRow="1" IconsPerColumn="1" Filename="ICON_CIV_hogehoge50.dds"/>
		<Row Name="ICON_ATLAS_CIVILIZATION_HOGEHOGE" IconSize="64"   IconsPerRow="1" IconsPerColumn="1" Filename="ICON_CIV_hogehoge64.dds"/>
		<Row Name="ICON_ATLAS_CIVILIZATION_HOGEHOGE" IconSize="80"   IconsPerRow="1" IconsPerColumn="1" Filename="ICON_CIV_hogehoge80.dds"/>
		<Row Name="ICON_ATLAS_CIVILIZATION_HOGEHOGE" IconSize="256"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_CIV_hogehoge256.dds"/>
 
		<Row Name="ICON_ATLAS_HOGEHOGE_UNITS"                         IconSize="256" IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge256.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_UNITS"                         IconSize="80"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge80.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_UNITS"                         IconSize="50"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge50.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_UNITS"                         IconSize="38"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge38.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_UNITS"                         IconSize="32"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge32.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_UNITS_FOW"                     IconSize="32"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge32.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_SYMBOLS_WHITE"                 IconSize="22"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge22.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_SYMBOLS_WHITE"                 IconSize="32"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge32.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_SYMBOLS_WHITE"                 IconSize="80"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge80.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_SYMBOLS_BLACK"                 IconSize="32"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge32.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_UNIT_PORTRAITS"                IconSize="256" IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT256.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_UNIT_PORTRAITS"                IconSize="200" IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT200.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_UNIT_PORTRAITS"                IconSize="95"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT95.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_UNIT_PORTRAITS"                IconSize="50"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT50.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_UNIT_PORTRAITS"                IconSize="38"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT38.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_ASIAN_UNIT_PORTRAITS"          IconSize="70"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT70.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_ASIAN_UNIT_PORTRAITS"          IconSize="95"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT95.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_MEDITERRANEAN_UNIT_PORTRAITS"  IconSize="70"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT70.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_MEDITERRANEAN_UNIT_PORTRAITS"  IconSize="95"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT95.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_SOUTH_AMERICAN_UNIT_PORTRAITS" IconSize="70"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT70.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_SOUTH_AMERICAN_UNIT_PORTRAITS" IconSize="95"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT95.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_AFRICAN_UNIT_PORTRAITS"        IconSize="70"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT70.dds"/> ★追加
		<Row Name="ICON_ATLAS_HOGEHOGE_AFRICAN_UNIT_PORTRAITS"        IconSize="95"  IconsPerRow="1" IconsPerColumn="1" Filename="ICON_UU_hogehoge_PORT95.dds"/> ★追加
	</IconTextureAtlases>
	<IconDefinitions>
		<Row Name="ICON_BUILDING_LITTER_BOX" Atlas="ICON_ATLAS_BUILDINGS" Index="0"/>
		<Row Name="ICON_CIVILIZATION_FELINE" Atlas="ICON_ATLAS_CIVILIZATION_HOGEHOGE" Index="0"/>
		<Row Name="ICON_LEADER_JASPER_KITTY" Atlas="ICON_ATLAS_LEADER_HOGEHOGE" Index="0"/>
 
		<Row Name="ICON_UNIT_hogehoge_UU"                            Atlas="ICON_ATLAS_HOGEHOGE_UNITS"                         Index="0"/> ★追加
		<Row Name="ICON_UNIT_hogehoge_UU_FOW"                        Atlas="ICON_ATLAS_HOGEHOGE_UNITS_FOW"                     Index="0"/> ★追加
		<Row Name="ICON_UNIT_hogehoge_UU_WHITE"                      Atlas="ICON_ATLAS_HOGEHOGE_SYMBOLS_WHITE"                 Index="0"/> ★追加
		<Row Name="ICON_UNIT_hogehoge_UU_BLACK"                      Atlas="ICON_ATLAS_HOGEHOGE_SYMBOLS_BLACK"                 Index="0"/> ★追加
		<Row Name="ICON_UNIT_hogehoge_UU_PORTRAIT"                   Atlas="ICON_ATLAS_HOGEHOGE_UNIT_PORTRAITS"                Index="0"/> ★追加
		<Row Name="ICON_ETHNICITY_ASIAN_UNIT_hogehoge_UU_PORTRAIT"   Atlas="ICON_ATLAS_HOGEHOGE_ASIAN_UNIT_PORTRAITS"          Index="0"/> ★追加
		<Row Name="ICON_ETHNICITY_MEDIT_UNIT_hogehoge_UU_PORTRAIT"   Atlas="ICON_ATLAS_HOGEHOGE_MEDITERRANEAN_UNIT_PORTRAITS"  Index="0"/> ★追加
		<Row Name="ICON_ETHNICITY_SOUTHAM_UNIT_hogehoge_UU_PORTRAIT" Atlas="ICON_ATLAS_HOGEHOGE_SOUTH_AMERICAN_UNIT_PORTRAITS" Index="0"/> ★追加
		<Row Name="ICON_ETHNICITY_AFRICAN_UNIT_hogehoge_UU_PORTRAIT" Atlas="ICON_ATLAS_HOGEHOGE_AFRICAN_UNIT_PORTRAITS"        Index="0"/> ★追加
	</IconDefinitions>
</GameData>

ユニットの見た目を定義する Edit

ここまでの作業を行えば、実際にゲーム内でユニークユニットを作成することはできます。
が、このままだと見た目が労働者になってしまいます。それはユニットの見た目の設定を何もしていないからです。

本来ならば3Dデータを作ってゲームで使えるように変換して・・・というのを書くのが筋なのですが・・・
あいにくのところ筆者は3Dデータを作る技術を持ち合わせておりません。よって既存の使いまわし方を記載します。

既存のデータを使いまわすにはArtdefファイルを書けばよいです。
使いまわしですのでバニラからもってきて定義を変える、という形になります。

とりあえず見た目を戦車と同じにしてみましょう。
まずArtdefの空ファイルを作成します。xmlと同じように新規追加でいいのですが、artdefという項目がありません。
なのでtxtファイルにして拡張子ごとリネームします。
「hogehoge_Units.artdef」としてください。

次にバニラのArtdefから戦車の定義部分を持ってきます。
バニラのユニットのArtdefファイルは

Sid Meier's Civilization VI/Base/Artdefs/Units.artdef

です。
戦車のユニット定義名は「UNIT_TANK」です。

探し当てたら必要最小限抜き出してユニット定義名を書き換えます。
作業後の内容は以下になります。

<?xml version="1.0" encoding="UTF-8" ?>
<AssetObjects:ArtDefSet>
	<m_Version>
		<major>4</major>
		<minor>0</minor>
		<build>256</build>
		<revision>893</revision>
	</m_Version>
	<m_TemplateName text="Units"/>
	<m_RootCollections>
		<Element>
			<m_CollectionName text="Units"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
			<Element>
				<m_Fields>
					<m_Values>
						<Element class="AssetObjects:ArtDefReferenceValue">
							<m_ElementName text="Scattered"/>
							<m_RootCollectionName text="UnitFormationTypes"/>
							<m_ArtDefPath text="Units.artdef"/>
							<m_CollectionIsLocked>false</m_CollectionIsLocked>
							<m_TemplateName text=""/>
							<m_ParamName text="Formation"/>
						</Element>
						<Element class="AssetObjects:ArtDefReferenceValue">
							<m_ElementName text="Tank"/>
							<m_RootCollectionName text="UnitCombat"/>
							<m_ArtDefPath text="Units.artdef"/>
							<m_CollectionIsLocked>true</m_CollectionIsLocked>
							<m_TemplateName text="Units"/>
							<m_ParamName text="UnitCombat"/>
						</Element>
						<Element class="AssetObjects:ArtDefReferenceValue">
							<m_ElementName text=""/>
							<m_RootCollectionName text="UnitFormationTypes"/>
							<m_ArtDefPath text="Units.artdef"/>
							<m_CollectionIsLocked>true</m_CollectionIsLocked>
							<m_TemplateName text=""/>
							<m_ParamName text="EscortFormation"/>
						</Element>
						<Element class="AssetObjects:ArtDefReferenceValue">
							<m_ElementName text="UNIT_MODERNEMBARK"/>
							<m_RootCollectionName text="Units"/>
							<m_ArtDefPath text="Units.artdef"/>
							<m_CollectionIsLocked>true</m_CollectionIsLocked>
							<m_TemplateName text="Units"/>
							<m_ParamName text="EmbarkedUnit"/>
						</Element>
						<Element class="AssetObjects:BoolValue">
							<m_bValue>false</m_bValue>
							<m_ParamName text="DoNotDisplayCharges"/>
						</Element>
						<Element class="AssetObjects:ArtDefReferenceValue">
							<m_ElementName text=""/>
							<m_RootCollectionName text="UnitCulture"/>
							<m_ArtDefPath text="Cultures.artdef"/>
							<m_CollectionIsLocked>true</m_CollectionIsLocked>
							<m_TemplateName text=""/>
							<m_ParamName text="Culture"/>
						</Element>
						<Element class="AssetObjects:ArtDefReferenceValue">
							<m_ElementName text=""/>
							<m_RootCollectionName text="Era"/>
							<m_ArtDefPath text="Eras.artdef"/>
							<m_CollectionIsLocked>true</m_CollectionIsLocked>
							<m_TemplateName text=""/>
							<m_ParamName text="Era"/>
						</Element>
						<Element class="AssetObjects:ArtDefReferenceValue">
							<m_ElementName text=""/>
							<m_RootCollectionName text="Units"/>
							<m_ArtDefPath text="Units.artdef"/>
							<m_CollectionIsLocked>true</m_CollectionIsLocked>
							<m_TemplateName text=""/>
							<m_ParamName text="ProxyUnit"/>
						</Element>
						<Element class="AssetObjects:BoolValue">
							<m_bValue>false</m_bValue>
							<m_ParamName text="PlayDeathOnDestroy"/>
						</Element>
						<Element class="AssetObjects:IntValue">
							<m_nValue>0</m_nValue>
							<m_ParamName text="DisplayLevel"/>
						</Element>
					</m_Values>
				</m_Fields>
				<m_ChildCollections>
					<Element>
						<m_CollectionName text="Members"/>
						<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
						<Element>
							<m_Fields>
								<m_Values>
									<Element class="AssetObjects:FloatValue">
										<m_fValue>1.000000</m_fValue>
										<m_ParamName text="Scale"/>
									</Element>
									<Element class="AssetObjects:IntValue">
										<m_nValue>1</m_nValue>
										<m_ParamName text="Count"/>
									</Element>
									<Element class="AssetObjects:ArtDefReferenceValue">
										<m_ElementName text="Tank"/>
										<m_RootCollectionName text="UnitMemberTypes"/>
										<m_ArtDefPath text="Units.artdef"/>
										<m_CollectionIsLocked>false</m_CollectionIsLocked>
										<m_TemplateName text=""/>
										<m_ParamName text="Type"/>
									</Element>
								</m_Values>
							</m_Fields>
							<m_ChildCollections/>
							<m_Name text="Members1"/>
							<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
						</Element>
					</Element>
					<Element>
						<m_CollectionName text="Audio"/>
						<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
						<Element>
							<m_Fields>
								<m_Values>
									<Element class="AssetObjects:StringValue">
										<m_Value text=""/>
										<m_ParamName text="XrefName"/>
									</Element>
								</m_Values>
							</m_Fields>
							<m_ChildCollections/>
							<m_Name text=""/>
							<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
						</Element>
						<Element>
							<m_Fields>
								<m_Values>
									<Element class="AssetObjects:StringValue">
										<m_Value text="Tank"/>
										<m_ParamName text="XrefName"/>
									</Element>
								</m_Values>
							</m_Fields>
							<m_ChildCollections/>
							<m_Name text="TANK"/>
							<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
						</Element>
					</Element>
				</m_ChildCollections>
				<m_Name text="UNIT_hogehoge_UU"/> ★ここを「UNIT_TANK」から変更
				<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
			</Element>
		</Element>
		<Element>
			<m_CollectionName text="UnitMovementTypes"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
		</Element>
		<Element>
			<m_CollectionName text="UnitFormationTypes"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
		</Element>
		<Element>
			<m_CollectionName text="MemberCombat"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
		</Element>
		<Element>
			<m_CollectionName text="UnitCombat"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
		</Element>
		<Element>
			<m_CollectionName text="CombatAttack"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
		</Element>
		<Element>
			<m_CollectionName text="UnitFormationLayoutTypes"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
		</Element>
		<Element>
			<m_CollectionName text="CombatFormation"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
		</Element>
		<Element>
			<m_CollectionName text="UnitAttachmentBins"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
		</Element>
		<Element>
			<m_CollectionName text="UnitMemberTypes"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
		</Element>
		<Element>
			<m_CollectionName text="UnitTintTypes"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
		</Element>
		<Element>
			<m_CollectionName text="UnitGlobals"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
		</Element>
		<Element>
			<m_CollectionName text="UnitDomainTypes"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
		</Element>
	</m_RootCollections>
</AssetObjects:ArtDefSet>

作成したArtdefをMod.Art.xmlへ登録します。

・
・
・
	</id>
	<artConsumers>
		<Element>
			<consumerName text="Units"/>
			<relativeArtDefPaths>
				<Element text="hogehoge_Units.artdef"/> ★追加
			</relativeArtDefPaths>
・
・
・

ビルド・動作確認 Edit

以上で完成です。
ビルドして動作確認してみましょう。

文明選択画面

SelectUU.jpg

Loading画面

LoadingUU.jpg

今回作ったユニットはかなり後半の時代のものです。(原子力時代)
上位ユニットもありませんので、情報時代でスタートして確認してみましょう。
こんな感じでちゃんとユニットが作成されればOKです。

UU.jpg

備考 Edit

何かのユニットと差し替えたい Edit

大砲の置き換えにしたい場合は以下のように記述します。

	<UnitReplaces>
		<Row CivUniqueUnitType="UNIT_hogehoge_UU" ReplacesUnitType="UNIT_ARTILLERY"/>
	</UnitReplaces>

※このままだと技術レベルが釣り合いませんので、ユニットの詳細にて解禁技術をTECH_ADVANCED_BALLISTICS(高度な弾道学)からTECH_STEEL(鋼鉄)などにするとよいでしょう。

サンプル Edit

ここまで作業したものを以下に置いておきます。
https://www.axfc.net/u/3836465



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