とてもいい加減なMODの作り方(xmlの改造) Edit

何も項目がないのは寂しいので、簡単にではありますがMODの作り方を書いておきます。
このページの作者はMODは作りますがxmlの予備知識など皆無です。
どなたか詳しい方のMODに関する執筆を望むものであります。
(この記事を改変していただいても構いません。)

まず最初に Edit

SteamからCiv5のSDKをダウンロードしてインストールしましょう。
この時MSのVisual Studioのインストールを求められます。
この際日本語版のVisual StudioをインストールするとWorld Builderが文字化けして日本語入力できなくなります。
(英語版だと文字化けいないらしいですが未確認です。)

インストールしたら取り敢えずModBuddyを起動してみましょう。

mod00-00.jpg

こんなかんじになっていると思いますので、「New Mod...」を選びます。

mod00-04.jpg

こんな画面が出ます。「EmptyMod」を選択します。取り敢えず名前は「TestingMod」とでもしておきましょう。

mod00-02.jpg

Modのタイトル・作者・説明などを書きます。タイトルと説明は必須です。半角英数字で一定以上の文字数を要求されますが、後から日本語で書き換えられます。

mod00-03.jpg

こんなふうになりますので、「TestingMod」を右クリックして、「追加」「新しい項目」を選びます。
ウィンドウが出てきますので、XMLを選びましょう。ファイル名はなんでも構いません。

どんなファイル名であっても、中に書かれたタグさえ一致していれば、ゲームデータを書き換えることができます。

XMLの中身 Edit

まずは実際のゲームデータの中身を覗いてみましょう。
(Civ5のゲームフォルダ)\Assets\DLC\Expantion\Gameplay\XML\Units\CIV5Units.xml
*1というのが見るからにユニットのデータと思われますので、
他のフォルダにバックアップを取って、そのバックアップしたものをModBuddyにドラッグ&ドロップしてみます。
するとXMLの内容がずらっと出てきます。編者はXMLに明るくないので細かい説明はいたしません。

下の方に行くとこんな記述があります。

	<Units>
		<Row>
			<ID>0</ID>
			<Class>UNITCLASS_SETTLER</Class>
			<Type>UNIT_SETTLER</Type>
			<Moves>2</Moves>
			<Capture>UNITCLASS_WORKER</Capture>
			<CivilianAttackPriority>CIVILIAN_ATTACK_PRIORITY_HIGH_EARLY_GAME_ONLY</CivilianAttackPriority>
			<HurryCostModifier>20</HurryCostModifier>
			<Domain>DOMAIN_LAND</Domain>
			<DefaultUnitAI>UNITAI_SETTLE</DefaultUnitAI>
			<Description>TXT_KEY_UNIT_SETTLER</Description>
			<Civilopedia>TXT_KEY_CIV5_ANTIQUITY_SETTLER_TEXT</Civilopedia>
			<Strategy>TXT_KEY_UNIT_SETTLER_STRATEGY</Strategy>
			<Help>TXT_KEY_UNIT_HELP_SETTLER</Help>
			<Requirements>TXT_KEY_NO_ACTION_SETTLER_SIZE_LIMIT_HARDCODED</Requirements>
			<Food>true</Food>
			<Found>true</Found>
			<CombatLimit>0</CombatLimit>
			<UnitArtInfo>ART_DEF_UNIT__SETTLER</UnitArtInfo>
			<UnitArtInfoCulturalVariation>true</UnitArtInfoCulturalVariation>
			<PortraitIndex>0</PortraitIndex>
			<IconAtlas>UNIT_ATLAS_1</IconAtlas>
		</Row>
	(省略)
	</Units>

Rowタグで囲まれた部分ですが、SETTLERとありますので、多分開拓者のデータなのでしょう。
この<Row></Row>で囲まれた部分が一つのユニットのデータになります。
色々記述がありますが、取り敢えず<Moves>というところは見るからに移動力に関係していそうです。
まずはここだけ変えてみましょう。
新しく作ったxmlファイルの<GameData></GameData>に囲まれた部分に以下の様な記述をします。

	<Units>
		<Update>
			<Set Moves="90"/>
			<Where Type="UNIT_SETTLER"/>
		</Update>
	</Units>

これは、<Units>で囲まれた部分の、TypeがUNIT_SETTLERであるユニットのMovesを90に改変するという指示になります。
これがModの基本的な形になります。

MODのパッケージ化 Edit

取り敢えずこの移動力90のスーパー開拓者をMODとしてパッケージにしてみましょう。

mod00-09.jpg

例によってこの「TestingMod」を右クリックして、今度は「プロパティ」を選びます。
「その他のファイル」という項目がありますが、これは参考にするために表示されただけのものです。
MODのパッケージには含まれませんので、削除せずにこのまま進めて問題ありません。

mod00-05.jpg

最初に出てくる「ModInfo」の部分を下にスクロールするとこう出てきます。
上の部分では作者や説明文を変更できます。
「Systems」ではユニットをいじったので「ReloadUnitSystem」にチェックを入れます。
(画像だと「StrategicView」にも入っていますが気にしないでください)

mod00-06.jpg

次に左側の「Actions」を選択し、「Add」ボタンを押します。
「Add Action」というウィンドウが出てきますので、「OnModActivated」「UpdateDatabase」を選び、上で作成したxmlファイルを選びます。
これを忘れるとModは作動しませんので注意してください。

最後に左側の「TestingMod」を右クリックして、「ビルド」を選びます。
右下に

	------ すべてのリビルド開始: プロジェクト: TestingMod, 構成: Default x86 ------
				PRE: False
				Creating target folder structure...
				Copying files...
				Cleaning Package location...
						Packaging mod...
				Cleaning deployment location...
						Deploying mod...
						Mod deployed.
	========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

こんな表示が出れば、Modの完成です。試してみましょう。
ゲームを起動して、「MOD」を選び、「TestingMod」にチェックを入れて、ゲームスタート。

mod00-08.jpg

こんなふうになっていれば成功です。

その他の方法 Edit

その他の書き方 Edit

このような書き方をしても構いません。

	<Units>
		<Update>
			<Where Class="UNITCLASS_MUSKETMAN"/>
			<Set>
				<PrereqTech>TECH_CHEMISTRY</PrereqTech>
			</Set>
		</Update>
	</Units>

これも上と同じで、<Units>内のClassがUNITCLASS_MUSKETMANであるユニットのPrereqTechをTECH_CHEMISTRYにする、という指示になります。
具体的に書くと、UnitClassTypeがマスケット兵であるユニット、つまりマスケット兵およびその代替であるUU、例えばフランスの銃士隊など、の解禁技術を化学にするという記述になります。
ここでは一つだけですが、<Set></Set>の間には複数のデータを記述することが可能です。

データの消去 Edit

ゲームデータの一部を消すには以下の様な記述をします。

	<Civilizations>
		<Delete Type="CIVILIZATION_AMERICA"/>
	</Civilizations>

こうするとアメリカ文明が消えてなくなります。

既存のデータを改変する際、うまくいかない場合は一度<Delete>タグでそのデータを消す記述をしてから新しくデータを記述すればうまくいく…かもしれません。

データの追加 Edit

データの追加はもっと簡単です。

	<Unit_ClassUpgrades>
		<Row>
			<UnitType>UNIT_SCOUT</UnitType>
			<UnitClassType>UNITCLASS_ARCHER</UnitClassType>
		</Row>
	</Unit_ClassUpgrades>

このように書けば、新しく斥候のアップグレード先が弓兵、及びその代替ユニットになります。

基本的には、公式のシナリオのデータも、これらの組み合わせで記述されています。

以上、大変いい加減でしたが、Mod製作の簡単な紹介であります。
もしもっとちゃんとした知識がおありの方でお時間のある方がおられましたら、ちゃんとした紹介をしていただければと思います。






*1 GaKを入れている場合は、Expantion内のデータを参考にしないとエラーが起きる可能性があります。