ユニーク区域の作成 Edit

例として一番単純な区域(建造物がないもの)である近郊部の置き換えユニーク区域を作ります。
近郊部の効果を一部ンバンザに近いものにし、工業地帯に接すると生産力+2の能力を付与します。
(これもすでに公開しているMODで・・・)

xmlの記述 Edit

NewLeader_District.xml Edit

ユニークユニットでやったように新しくxmlファイルを作ります。
ファイル名は「NewLeader_District.xml」としてください。作ったらPropertyへの登録をお忘れなく。
内容は近郊部の定義をコピーして書き換えます。近郊部の定義名は「DISTRICT_NEIGHBORHOOD」です。
また、わかりやすくアピールによる住宅の変動はなしで5固定(ンバンザと同じ)にしてみましょう。
隣接ボーナスは他の区域のものを参考に書いてみます。

で、実際には以下の内容となります。

<?xml version="1.0" encoding="utf-8"?>
<GameInfo>
	<Types>
		<Row Type="DISTRICT_hogehoge" Kind="KIND_DISTRICT"/>
	</Types>
	<DistrictReplaces>
		<Row CivUniqueDistrictType="DISTRICT_hogehoge" ReplacesDistrictType="DISTRICT_NEIGHBORHOOD"/>
	</DistrictReplaces>
	<Districts>
		<Row DistrictType="DISTRICT_hogehoge" Name="LOC_DISTRICT_hogehoge_NAME" Description="LOC_DISTRICT_hogehoge_DESCRIPTION"
		PrereqCivic="CIVIC_URBANIZATION" PlunderType="PLUNDER_GOLD"  PlunderAmount="50" AdvisorType="ADVISOR_GENERIC"
		Cost="54" CostProgressionModel="COST_PROGRESSION_GAME_PROGRESS" CostProgressionParam1="1000" RequiresPlacement="true" RequiresPopulation="false"
		OnePerCity="false" Aqueduct="false" NoAdjacentCity="false" InternalOnly="false" ZOC="true" CaptureRemovesBuildings="false" CaptureRemovesCityDefenses="false"
		MilitaryDomain="NO_DOMAIN" Housing="5" CityStrengthModifier="2" TraitType="TRAIT_CIVILIZATION_DISTRICT_hogehoge"/>
	</Districts>
	<District_Adjacencies>
		<Row DistrictType="DISTRICT_hogehoge" YieldChangeId="IndustrialZone_Production"/>
	</District_Adjacencies>
	<Adjacency_YieldChanges>
		<Row ID="IndustrialZone_Production" Description="LOC_DISTRICT_INDUSTRIAL_ZONE_PRODUCTION" 
		YieldType="YIELD_PRODUCTION" YieldChange="2" TilesRequired="1" AdjacentDistrict="DISTRICT_INDUSTRIAL_ZONE"/>
	</Adjacency_YieldChanges>
</GameInfo>

Types:区域の親定義
DistrictReplace:何の区域の置き換えにするか
Districts:区域の詳細設定

Name区域名。別ファイルに中身を書きます
Description区域の説明。別ファイルに中身を書きます
PrereqCivic解禁社会制度:CIVIC_URBANIZATION = 都市化
PlunderType略奪で得られるもの:PLUNDER_GOLD = ゴールド
PlunderAmount略奪時のボーナス量
AdvisorType助言者設定
Cost建設コスト
CostProgressionModelコストの上昇モデル?
CostProgressionParam1コストの上昇値?
RequiresPlacement建設に領土が必要かどうか。通常はtrueです。(例外で都心だけはfalseになっています)
RequiresPopulation建設に人口が必要かどうか。キャンパスなど一定の人口が必要なものはtrueになっています。
OnePerCity1都市に1つかどうか。近郊部など無制限に作れる区域はfalseです。
Aqueducttrueにすると、都心区域と真水源の間にのみ建設可能になる(用水路の建設条件)
NoAdjacentCity都心に隣接できるかどうか。falseだと隣接できます。兵営はここがtrueになっています。
InternalOnly不明
ZOCZOCの発生の有無。trueで発生。
CaptureRemovesBuildings占領時に区域内の建造物が略奪状態になるかの設定。兵営と都心がtrueになっています。
CaptureRemovesCityDefenses不明ですがおそらく都心専用。他はfalseになっています。
MilitaryDomain区域を設置したタイルでの戦闘時になんのドメインに所属することになるか???
Housing住宅への加算値
TraitType所属特性(ユニークにするなら必須)

District_Adjacencies:区域の隣接ボーナスの親定義
Adjacency_YieldChanges:区域の隣接ボーナスの詳細設定

IDDistrict_Adjacenciesで作成したIDを指定
Description隣接ボーナスの説明
YieldType得られるボーナスの種類
YieldChange得られるボーナスの値
TilesRequiredボーナスを得るために必要なタイルの数
AdjacentDistrictボーナスを得るための隣接区域

NewLeader_Felines.xml Edit

ユニークユニットと同様、ユニーク区域も指導者か文明に紐付ける必要があります。
今回は文明側に紐付けます。

<?xml version="1.0" encoding="utf-8"?>
<GameData>
	<Types>
		<Row Type="CIVILIZATION_FELINE" Kind="KIND_CIVILIZATION" />
		<Row Type="TRAIT_CIVILIZATION_BUILDING_LITTER_BOX" Kind="KIND_TRAIT" />
		<Row Type="TRAIT_CIVILIZATION_FELINE" Kind="KIND_TRAIT" />
		<Row Type="TRAIT_CIVILIZATION_DISTRICT_hogehoge" Kind="KIND_TRAIT" /> ★追加
	</Types>
	
	<Civilizations>
		<Row>
			<CivilizationType>CIVILIZATION_FELINE</CivilizationType>
			<Name>LOC_CIVILIZATION_FELINE_NAME</Name>
			<Description>LOC_CIVILIZATION_FELINE_DESCRIPTION</Description>
			<Adjective>LOC_CIVILIZATION_FELINE_ADJECTIVE</Adjective>
			<StartingCivilizationLevelType>CIVILIZATION_LEVEL_FULL_CIV</StartingCivilizationLevelType>
		</Row>
	</Civilizations>

	<CivilizationLeaders>
		<Row CivilizationType="CIVILIZATION_FELINE" LeaderType="LEADER_JASPER_KITTY" CapitalName="LOC_CIVLIZATION_FELINE_CITY_1" />
	</CivilizationLeaders>

	<CivilizationCitizenNames>
		<Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_MALE_1" Female="0"/>
		<Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_MALE_2" Female="0"/>
		<Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_MALE_3" Female="0"/>
		<Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_MALE_4" Female="0"/>
		<Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_FEMALE_1" Female="1"/>
		<Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_FEMALE_2" Female="1"/>
		<Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_FEMALE_3" Female="1"/>
		<Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_FEMALE_4" Female="1"/>
		<Row CivilizationType="CIVILIZATION_FELINE" CitizenName="LOC_CITIZEN_FELINE_FEMALE_5" Female="1"/>
	</CivilizationCitizenNames>

	<CivilizationInfo>
		<Row CivilizationType="CIVILIZATION_FELINE" Header="LOC_CIVINFO_BINOMIAL_NAME" Caption="LOC_CIVINFO_FELIS_CATUS" />
	</CivilizationInfo>

	<CivilizationTraits>
		<Row CivilizationType="CIVILIZATION_FELINE" TraitType="TRAIT_CIVILIZATION_BUILDING_LITTER_BOX" />
		<Row CivilizationType="CIVILIZATION_FELINE" TraitType="TRAIT_CIVILIZATION_FELINE"/>
		<Row CivilizationType="CIVILIZATION_FELINE" TraitType="TRAIT_CIVILIZATION_DISTRICT_hogehoge"/> ★追加
	</CivilizationTraits>

	<Traits>
		<Row TraitType="TRAIT_CIVILIZATION_BUILDING_LITTER_BOX" Name="LOC_PLACEHOLDER" Description="LOC_PLACEHOLDER" />
		<Row TraitType="TRAIT_CIVILIZATION_FELINE" Name="LOC_TRAIT_CIVILIZATION_FELINE_NAME" Description="LOC_TRAIT_CIVILIZATION_FELINE_DESCRIPTION"/>
		<Row TraitType="TRAIT_CIVILIZATION_DISTRICT_hogehoge" Name="LOC_TRAIT_CIVILIZATION_DISTRICT_hogehoge_NAME" /> ★追加
	</Traits>
・
・
・

これで文明とユニーク区域がつながりました。

NewLeader_Config.xml Edit

ユニークユニットと同様、ユニーク区域も文明選択時やLoading画面に表示がなされています。

		</Row>
		<Row> ★追加
			<Domain>StandardPlayers</Domain> ★追加
			<CivilizationType>CIVILIZATION_FELINE</CivilizationType> ★追加
			<LeaderType>LEADER_JASPER_KITTY</LeaderType> ★追加
			<Type>DISTRICT_hogehoge</Type> ★追加
			<Name>LOC_DISTRICT_hogehoge_NAME</Name> ★追加
			<Description>LOC_DISTRICT_hogehoge_DESCRIPTION</Description> ★追加
			<Icon>ICON_DISTRICT_hogehoge</Icon> ★追加
			<SortIndex>30</SortIndex> ★追加
		</Row> ★追加
	</PlayerItems>
</GameData>

NewLeader_ConfigText.xml Edit

ユニークユニットと同様、名称や説明などを書きます。

		<Row Tag="LOC_DISTRICT_hogehoge_NAME" Language="en_US"> ★追加
			<Text>Industrial Park</Text> ★追加
		</Row> ★追加
		<Row Tag="LOC_DISTRICT_hogehoge_DESCRIPTION" Language="en_US"> ★追加
			<Text>A district unique to Majestic Felines. Replaces the Neighborhood district. Provides +5 [ICON_Housing] Housing, +2 [ICON_Production] Production for adjacent Industrial Zone District.</Text> ★追加
		</Row> ★追加
		<Row Tag="LOC_TRAIT_CIVILIZATION_DISTRICT_hogehoge_NAME" Language="en_US"> ★追加
			<Text>Majestic Felines unique District: Industrial Park</Text> ★追加
		</Row> ★追加
		<Row Tag="LOC_PEDIA_BUILDINGS_PAGE_DISTRICT_hogehoge_CHAPTER_HISTORY_PARA_1" Language="en_US"> ★追加
			<Text></Text> ★追加
		</Row> ★追加
	</LocalizedText>
</GameData>

Artdefの記述 Edit

区域の見た目を設定します。
ユニークユニットと同様、既存の使いまわしでいきます。

まずは新規にartdefファイルを作成してください。ファイル名は「hogehoge_Districts.artdef」としてください。
バニラの区域のArtdefファイルは

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

ですので、ここから「DISTRICT_NEIGHBORHOOD」のものを探し出し、最小限をコピーして書き換えます。
書き換えたものは以下になります。

<?xml version="1.0" encoding="UTF-8" ?>
<AssetObjects:ArtDefSet>
	<m_Version>
		<major>3</major>
		<minor>0</minor>
		<build>202</build>
		<revision>872</revision>
	</m_Version>
	<m_TemplateName text="Districts"/>
	<m_RootCollections>
		<Element>
			<m_CollectionName text="District"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
			<Element>
				<m_Fields>
					<m_Values>
						<Element class="AssetObjects:BoolValue">
							<m_bValue>false</m_bValue>
							<m_ParamName text="CanAffectBuildings"/>
						</Element>
					</m_Values>
				</m_Fields>
				<m_ChildCollections>
					<Element>
						<m_CollectionName text="Landmark"/>
						<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
						<Element>
							<m_Fields>
								<m_Values>
									<Element class="AssetObjects:ArtDefReferenceValue">
										<m_ElementName text="DISTRICT_NEIGHBORHOOD"/>
										<m_RootCollectionName text="Districts"/>
										<m_ArtDefPath text="Landmarks.artdef"/>
										<m_CollectionIsLocked>true</m_CollectionIsLocked>
										<m_TemplateName text="Landmarks"/>
										<m_ParamName text="Xref"/>
									</Element>
								</m_Values>
							</m_Fields>
							<m_ChildCollections/>
							<m_Name text="Landmark001"/>
							<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
						</Element>
					</Element>
					<Element>
						<m_CollectionName text="StrategicView"/>
						<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
						<Element>
							<m_Fields>
								<m_Values>
									<Element class="AssetObjects:ArtDefReferenceValue">
										<m_ElementName text="Neighborhood"/>
										<m_RootCollectionName text="Districts"/>
										<m_ArtDefPath text="StrategicView.artdef"/>
										<m_CollectionIsLocked>false</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="Districts.artdef"/>
										<m_CollectionIsLocked>true</m_CollectionIsLocked>
										<m_TemplateName text="Districts"/>
										<m_ParamName text="State"/>
									</Element>
								</m_Values>
							</m_Fields>
							<m_ChildCollections/>
							<m_Name text="StrategicView001"/>
							<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
						</Element>
						<Element>
							<m_Fields>
								<m_Values>
									<Element class="AssetObjects:ArtDefReferenceValue">
										<m_ElementName text="Neighborhood_Pillaged"/>
										<m_RootCollectionName text="Districts"/>
										<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="Districts.artdef"/>
										<m_CollectionIsLocked>true</m_CollectionIsLocked>
										<m_TemplateName text="Districts"/>
										<m_ParamName text="State"/>
									</Element>
								</m_Values>
							</m_Fields>
							<m_ChildCollections/>
							<m_Name text="StrategicView002"/>
							<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
						</Element>
						<Element>
							<m_Fields>
								<m_Values>
									<Element class="AssetObjects:ArtDefReferenceValue">
										<m_ElementName text="Neighborhood_UnderConstruction"/>
										<m_RootCollectionName text="Districts"/>
										<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="UnderConstruction"/>
										<m_RootCollectionName text="BuildStates"/>
										<m_ArtDefPath text="Districts.artdef"/>
										<m_CollectionIsLocked>true</m_CollectionIsLocked>
										<m_TemplateName text="Districts"/>
										<m_ParamName text="State"/>
									</Element>
								</m_Values>
							</m_Fields>
							<m_ChildCollections/>
							<m_Name text="StrategicView003"/>
							<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="Build_District_Neighborhood"/>
										<m_ParamName text="XrefName"/>
									</Element>
								</m_Values>
							</m_Fields>
							<m_ChildCollections/>
							<m_Name text="Build_District_Neighborhood"/>
							<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
						</Element>
					</Element>
					<Element>
						<m_CollectionName text="AmbPlay"/>
						<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
						<Element>
							<m_Fields>
								<m_Values>
									<Element class="AssetObjects:StringValue">
										<m_Value text="PLAY_AMBIENCE_DISTRICT_NEIGHBORHOOD"/>
										<m_ParamName text="XrefName"/>
									</Element>
								</m_Values>
							</m_Fields>
							<m_ChildCollections/>
							<m_Name text="PLAY_AMBIENCE_DISTRICT_NEIGHBORHOOD"/>
							<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
						</Element>
					</Element>
					<Element>
						<m_CollectionName text="AmbStop"/>
						<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
						<Element>
							<m_Fields>
								<m_Values>
									<Element class="AssetObjects:StringValue">
										<m_Value text="STOP_AMBIENCE_DISTRICT_NEIGHBORHOOD"/>
										<m_ParamName text="XrefName"/>
									</Element>
								</m_Values>
							</m_Fields>
							<m_ChildCollections/>
							<m_Name text="STOP_AMBIENCE_DISTRICT_NEIGHBORHOOD"/>
							<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
						</Element>
					</Element>
				</m_ChildCollections>
				<m_Name text="DISTRICT_hogehoge"/> ★ここを「DISTRICT_NEIGHBORHOOD」から変更
				<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
			</Element>
		</Element>
		<Element>
			<m_CollectionName text="BuildStates"/>
			<m_ReplaceMergedCollectionElements>false</m_ReplaceMergedCollectionElements>
			<Element>
				<m_Fields>
					<m_Values/>
				</m_Fields>
				<m_ChildCollections/>
				<m_Name text="Completed"/>
				<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
			</Element>
			<Element>
				<m_Fields>
					<m_Values/>
				</m_Fields>
				<m_ChildCollections/>
				<m_Name text="Pillaged"/>
				<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
			</Element>
			<Element>
				<m_Fields>
					<m_Values/>
				</m_Fields>
				<m_ChildCollections/>
				<m_Name text="UnderConstruction"/>
				<m_AppendMergedParameterCollections>false</m_AppendMergedParameterCollections>
			</Element>
		</Element>
	</m_RootCollections>
</AssetObjects:ArtDefSet>

Mod.Art.xmlへの登録 Edit

記述したArtdefファイルをMod.Art.xmlへ登録します。hogehoge_Districts.artdefの追加箇所はLandmarks、WorldView_Translate、StrategicView_Translateの3か所です。

		<Element>
			<consumerName text="Landmarks"/>
			<relativeArtDefPaths>
                               <Element text="hogehoge_Districts.artdef"/> ★追加
			</relativeArtDefPaths>
			<libraryDependencies>
				<Element text="CityBuildings"/>
				<Element text="TileBase"/>
				<Element text="RouteDecalMaterial"/>
			</libraryDependencies>
			<loadsLibraries>true</loadsLibraries>
		</Element>
		<Element>
			<consumerName text="WorldView_Translate"/>
			<relativeArtDefPaths>
				<Element text="hogehoge_Districts.artdef"/> ★追加
			</relativeArtDefPaths>
			<libraryDependencies/>
			<loadsLibraries>false</loadsLibraries>
		</Element>
		<Element>
			<consumerName text="StrategicView_Translate"/>
			<relativeArtDefPaths>
				<Element text="hogehoge_Districts.artdef"/> ★追加
			</relativeArtDefPaths>
			<libraryDependencies/>
			<loadsLibraries>false</loadsLibraries>
		</Element>

アイコンの作成 Edit

区域のアイコンに必要なのは256,128,80,50,38,32のサイズのものになります。

ですが・・・

今回は既存の近郊部のアイコンを使いまわす方法を記載します。

\Sid Meier's Civilization VI\Base\Assets\UI\Icons

以下の、Icons_Districts.xml内。IconDefinitionsから使いたいアイコンの記述をコピーしてきて、Nameを書き変えるだけです。

・
・
・
		<Row Name="ICON_DISTRICT_hogehoge" Atlas="ICON_ATLAS_DISTRICTS" Index="10"/> ★追加
	</IconDefinitions>
</GameData>

ビルド・動作確認 Edit

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

文明選択画面

SelectUD.jpg

Loading画面

LoadingUD.jpg

解禁の条件が都市化ですので、スタートを近代以降にして開始すると楽に確認ができます。
まず工業地帯を設置し、その隣に今回作った区域を設置してみてください。

隣接ボーナスで生産力+2が付いていれば成功です。

UD.jpg

備考 Edit

上記サンプルでは、工業地域で制作していますが、それ以外は

都心CITY_CENTER
キャンパスCAMPUS
聖地HOLY_SITE
兵営ENCAMPMENT
商業ハブCOMMERCIAL_HUB
総合娯楽施設ENTERTAINMENT_COMPLEX
劇場広場THEATER
工業地帯INDUSTRIAL_ZONE

こんな感じです。
より詳しくは、

\Sid Meier's Civilization VI\Base\Assets\Gameplay\Data

以下のDistricts.xmlに定義があります。

また、傑作枠のある建造物が立つ区域に関してはFontIconの定義も足す必要があります。
これを足し忘れると、敵文明で登場させた際、スパイの「傑作を盗む」選択で長ったらしい文字列が表示されてしまいます。
※他にもあるかもしれませんが、いまのところ筆者がわかっているのは上記のみ。

例えば劇場広場を置換する区域がそうです(劇場広場には美術館や博物館が建ちます)。
バニラだとアクロポリスが該当。

Iconの記述に以下のように書き加えてください。

<Row Name="DISTRICT_hogehoge" Atlas="ICON_ATLAS_FONT_ICON_BASELINE_4" Index="182"/>

これで劇場広場のアイコンが表示されるようになります。
Indexの番号を変えれば他のアイコンにもできますので、傑作枠を独自に追加したのであればその建造物が立つ区域に差し替えてください。

バニラのFontIconの定義はBase\Assets\UI\Icons\FontIcons.xmlに書かれています。

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



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