MOD/MODの作り方/新文明を追加してみようその1 Edit

初めに Edit

civ5のMOD作成方法は、先人によってツールのインストールからXML編集、MOD化と一通りの基礎がまとめられています。感謝!
本ページでは一歩踏み込んで新文明の追加方法を具体的に紹介していきましょう。
なお筆者もXML、MOD作成の知識が十分なわけではありません。
間違い等あると思いますので、ご指摘をお待ちしております。

なお本ページを作成する上でCivFanaticsや既存のMODを参考にしております。

文明決定 Edit

まずはどんな文明を追加するかを決めましょう。
今回はサンプルとして指導者は徳川家康、文明は日本(江戸幕府)を追加してみましょう。
次にイメージにあうようなUUUBUAを決めていきます。
家康といえば江戸幕府の創設者ということで、UAは征夷大将軍に決定。
UBは刀鍛冶、UUは足軽にしましょう。
(色々と突っ込みどころがあると思いますが、例なので気にしないで下さい。)

建造物の追加方法 Edit

今回は建造物の追加方法を解説していきます。
xmlを記述する前に、建造物の詳細を決めておかなければなりません。
今回追加するのはUBの刀鍛冶です。
元となる建造物は溶鉱炉、生産したユニットに経験値を追加する効果を加えましょうか。

まずはXMLのコピーから Edit

方針も決まったところでxmlを編集していきましょう。
建造物を追加する場合、記述しなければならない項目は多岐に渡ります。
一から記述するより、性能が似ている建造物をお手本に、必要な個所を修正していく方が良いでしょう。
特にUBの場合元の建造物と似通った部分が多いため、修正箇所も少なくかなり楽になります。
それでは溶鉱炉についての記述を参照してみましょう。
XMLでお目当ての建造物を探す時は、英語名で検索を掛けると良いでしょう。
英語名が分からなくても、wikiのデータページに全て載っているので心配無用です。

	<Buildings>
		~省略~
		<Row>
			<Type>BUILDING_FORGE</Type>
			<BuildingClass>BUILDINGCLASS_FORGE</BuildingClass>
			<FreeStartEra>ERA_INDUSTRIAL</FreeStartEra>
			<Cost>120</Cost>
			<GoldMaintenance>1</GoldMaintenance>
			<PrereqTech>TECH_METAL_CASTING</PrereqTech>
			<Description>TXT_KEY_BUILDING_FORGE</Description>
			<Civilopedia>TXT_KEY_CIV5_BUILDINGS_FORGE_TEXT</Civilopedia>
			<Strategy>TXT_KEY_BUILDING_FORGE_STRATEGY</Strategy>
			<Help>TXT_KEY_BUILDING_FORGE_HELP</Help>
			<ArtDefineTag>ART_DEF_BUILDING_FORGE</ArtDefineTag>
			<MinAreaSize>-1</MinAreaSize>
			<ConquestProb>66</ConquestProb>
			<HurryCostModifier>25</HurryCostModifier>
			<IconAtlas>BW_ATLAS_1</IconAtlas>
			<PortraitIndex>2</PortraitIndex>
		</Row>
		~省略~
	</Buildings>

まずは<Buildings>タグ内の記述を見てみましょう。
civ5をインストールしたフォルダの\assets\DLC\Expansion2\Gameplay\XML\Buildings\CIV5Buildings.xmlを参照します。
上の方で記述する項目が多いと書きましたが、各項目にはデフォルトの内容が決められています。
そのためデフォルトから変更が無い場合、その項目は記述しなくても大丈夫です。

<Type>、<BuildingClass> Edit

<Type><BuildingClass>タグでは建造物の種類を定めます。
<Type>タグは全ての建造物で別のものを指定する必要があります。
<BuildingClass>タグは国家遺産の建造条件等に使われるので、UBは元となる建造物と同じにしておきましょう。
今回は<Type>タグの内容をBUILDING_SWORDSMITHに変更、<BuildingClass>タグは変更しないで置きます。
<Type>タグの内容はゲーム中表示されるわけではないので、被らなければ適当でも構いません。

<FreeStartEra> Edit

<FreeStartEra>タグでは、都市を建てた時に無償で供給されるようになる開始時代を定めます。
溶鉱炉の場合ERA_INDUSTRIALとなっているので、ゲーム開始を産業時代以降にすると溶鉱炉が貰えるということです。
UBなので特に弄らないでおきましょう。

<Cost> Edit

<Cost>タグでは生産コストを定めます。
120となっているので、溶鉱炉の生産コストがそのまま120となります。
ここも変更はありません。

<GoldMaintenance> Edit

<GoldMaintenance>タグでは建造物の維持費を定めます。
1となっているので、毎ターン1ゴールドの維持費が掛かります。
せっかくのUBですし維持費を0にしてみましょう。
デフォルトが0に設定されているので、<GoldMaintenance>タグ自体を削除すれば維持費が0になります。

<PrereqTech> Edit

<PrereqTech>タグでは生産に必要な技術を定めます。
TECH_METAL_CASTINGとなっているため、溶鉱炉の生産には鋳金が必要になります。
この項目も変更無しです。

<Description> Edit

<Description>タグでは建造物の名前を定めます。
<Description>タグの内容が名前として表示されるのではなく、指定したキーの内容が名前として表示されます。
例えば溶鉱炉の場合TXT_KEY_BUILDING_FORGEを指定しています。
さらに<Language_en_US>タグ内でTXT_KEY_BUILDING_FORGEとForgeが対応すると記述され、建造物の名称がForgeであると分かります。
(なお日本語で表示する場合、<Language_JA_JP>タグ内でTXT_KEY_BUILDING_FORGEと溶鉱炉が対応するという記述が必要になります。)
今回はキーをTXT_KEY_BUILDING_SWORDSMITHとしましょう。
やはりゲーム中表示されるわけではありませんが、分かりやすくするため

TXT_KEY_ + <Type>タグの内容

のように統一しておくとよいでしょう。
テキストの編集方法は後述します。

<Civilopedia>、<Strategy>、<Help> Edit

これらのタグではゲーム中に表示されるテキストを指定します。
<Civilopedia>タグではシヴィロペディアの歴史情報、<Strategy>タグでは戦略に表示されるテキストを指定します。
<Help>タグでは、技術ツリーや生産画面で建造物にカーソルを合わせた時、表示されるテキストを指定します。
これらのタグも内容がそのまま表示されるのではなく、あくまでキーの指定となります。
それぞれTXT_KEY_BUILDING_SWORDSMITH、TXT_KEY_CIV5_BUILDINGS_SWORDSMITH_TEXT、TXT_KEY_BUILDING_SWORDSMITH_STRATEGYとしておきましょう。

<ArtDefineTag> Edit

<ArtDefineTag>タグでは、溶鉱炉の見た目に使用するキーを指定します。
グラフィックに関するキーなので、アイコンについては別のタグで記述する必要があります。
流石に自作はできないので、変更せず溶鉱炉のグラフィックをそのまま使いましょう。

<MinAreaSize> Edit

<MinAreaSize>タグでは、建造物を建てるのに必要とする特定のタイル数を定めます。
例えば灯台のように海に面している必要がある場合、10となっています。
そのため10タイル以上の広さを持つ海に面していないと、建造することができません。
必要とするタイルの種類は、別のタグで指定することになります。
一般的な建造物は特に制限が無いので、-1にしておきましょう。

<ConquestProb> Edit

<ConquestProb>タグでは、都市を占領された時建造物が残る確率を定めます。
66となっている建造物が多いため、溶鉱炉や多くの建物は2/3の確率で残るということになります。
デフォルトは0のようですが、裁判所のようにわざわざ0と記述している建造物もあります。
念のため、確実に破壊したい場合は0にしておきましょう。

<HurryCostModifier> Edit

<HurryCostModifier>タグでは建造物を購入するときのコスト補正を定めます。
コストを直接指定するのではなく、生産コストに応じて決まっている基準から指定した値だけ割増されるようになっています。
例えばモニュメントは<HurryCostModifier>が40、神殿は25となっています。
また生産コストが40の場合、購入するときの基準コストは200のようです。
そのためモニュメントの購入コストは40%増しの280、神殿は25%増しの250となります。

<IconAtlas>、<PortraitIndex> Edit

<IconAtlas><PortraitIndex>タグでは建造物が使用するアイコンキーを指定します。
アイコンについては後述しますが、アイコンは複数がまとめてグループ化されています。
そのため<IconAtlas>タグでグループを指定、<PortraitIndex>タグでグループ内の順番を指定する、とイメージすると分かりやすいです。
今回はアイコンも自作するので、<IconAtlas>タグをEDO_ATLASにしましょう。
<PortraitIndex>タグは左から4番目に配置するので、3を指定します。
<PortraitIndex>タグは0からカウントしているので、アイコンがずれないように注意しましょう。
自作せず溶鉱炉のものを使う場合、変更しないでおきましょう。

上記の内容をまとめてみると以下のようになります。

	<Buildings>
		<Row>
			<Type>BUILDING_SWORDSMITH</Type>
			<BuildingClass>BUILDINGCLASS_FORGE</BuildingClass>
			<FreeStartEra>ERA_INDUSTRIAL</FreeStartEra>
			<Cost>120</Cost>
			<PrereqTech>TECH_METAL_CASTING</PrereqTech>
			<Description>TXT_KEY_BUILDING_SWORDSMITH</Description>
			<Civilopedia>TXT_KEY_CIV5_BUILDINGS_SWORDSMITH_TEXT</Civilopedia>
			<Strategy>TXT_KEY_BUILDING_SWORDSMITH_STRATEGY</Strategy>
			<Help>TXT_KEY_BUILDING_SWORDSMITH_HELP</Help>
			<ArtDefineTag>ART_DEF_BUILDING_SWORDSMITH</ArtDefineTag>
			<MinAreaSize>-1</MinAreaSize>
			<ConquestProb>66</ConquestProb>
			<HurryCostModifier>25</HurryCostModifier>
			<IconAtlas>EDO_ATLAS</IconAtlas>
			<PortraitIndex>3</PortraitIndex>
		</Row>
	</Buildings>
 
 
 

<Building_DomainProductionModifiers> Edit

建造物の主なデータは<Buildings>タグの中に記述しますが、それ以外にも必要なものがあります。
まずは<Building_DomainProductionModifiers>タグ内の溶鉱炉に関する記述を見てみましょう。

	<Building_DomainProductionModifiers>
		~省略~
		<Row>
			<BuildingType>BUILDING_FORGE</BuildingType>
			<DomainType>DOMAIN_LAND</DomainType>
			<Modifier>15</Modifier>
		</Row>
		~省略~
	</Building_DomainProductionModifiers>

<Building_DomainProductionModifiers>タグでは、特定のユニットに対する生産力ボーナスを指定します。
例えば溶鉱炉は陸上ユニットを生産するとき、15%のボーナスを得られます。

<BuildingType> Edit

<BuildingType>タグで建造物の種類を指定します。
UB刀鍛冶にも生産力ボーナスを持たせたいので、<Buildings>タグ内の<Type>で指定したBUILDING_SWORDSMITHに変更します。

<DomainType> Edit

<DomainType>タグではユニットの属性を陸海空から指定します。
例えば溶鉱炉はDOMAIN_LAND、港湾はDOMAIN_SEAをそれぞれ指定しています。
航空ユニットにボーナスが掛かる建造物は有りませんが、DOMAIN_AIRを指定すればボーナスが掛けられるはずです。
陸海空の他の移動不能という属性も用意されている様ですが、当てはまるユニットは今のところ存在しません。

<Modifier> Edit

<Modifier>タグでは生産力補正を%で指定します。
例えば溶鉱炉では15となっているので、陸上ユニット生産時に15%の生産力ボーナスが得られます。

上記の内容をまとめてみると以下のようになります。殆ど変更点がありませんね。

	<Building_DomainProductionModifiers>
		<Row>
			<BuildingType>BUILDING_SWORDSMITH</BuildingType>
			<DomainType>DOMAIN_LAND</DomainType>
			<Modifier>15</Modifier>
		</Row>
	</Building_DomainProductionModifiers>
 
 
 

<Building_DomainFreeExperiences> Edit

UBである以上、溶鉱炉との差別化を図りたいところです。
今回は例として、生産したユニットに経験値を追加する能力を足してみましょう。
溶鉱炉には無い効果ですので、兵舎の記述をコピーします。

	<Building_DomainFreeExperiences>
		~省略~
		<Row>
			<BuildingType>BUILDING_BARRACKS</BuildingType>
			<DomainType>DOMAIN_LAND</DomainType>
			<Experience>15</Experience>
		</Row>
		<Row>
			<BuildingType>BUILDING_BARRACKS</BuildingType>
			<DomainType>DOMAIN_SEA</DomainType>
			<Experience>15</Experience>
		</Row>
		<Row>
			<BuildingType>BUILDING_BARRACKS</BuildingType>
			<DomainType>DOMAIN_AIR</DomainType>
			<Experience>15</Experience>
		</Row>
		~省略~
	</Building_DomainFreeExperiences>

<BuildingType> Edit

今までの解説と同じく、BUILDING_SWORDSMITHを指定します。

<DomainType> Edit

こちらも同じく陸海空からユニットの属性を指定します。
兵舎は全てのユニットに経験値を与えるため、全ての属性を指定しています。
複数同時に指定することはできないようなので、陸海空について個別に設定しましょう。
刀鍛冶の場合対象は陸上ユニットだけにするため、DOMAIN_LANDのみで十分です。

<Experience> Edit

<Experience>タグでは与える経験値を指定します。
今回は追加の経験値を10与えたいので10にしておきましょう。

上記の内容をまとめてみると以下のようになります。

	<Building_DomainFreeExperiences>
		<Row>
			<BuildingType>BUILDING_SWORDSMITH</BuildingType>
			<DomainType>DOMAIN_LAND</DomainType>
			<Experience>10</Experience>
		</Row>
	</Building_DomainFreeExperiences>
 
 
 

<Building_LocalResourceAnds> Edit

溶鉱炉を建設する場合、鉄の改善が必要となりました。
このように建設に特定の資源改善が必要な場合、<Building_LocalResourceAnds>タグ内に記述していきます。
該当資源が複数ありそのうちの一種類でもあれば建造できる場合、<Building_LocalResourceOrs>タグで指定することになります。

それでは溶鉱炉についての記述を見てみましょう。

	<Building_LocalResourceAnds>
		~省略~
		<Row>
			<BuildingType>BUILDING_FORGE</BuildingType>
			<ResourceType>RESOURCE_IRON</ResourceType>
		</Row>
		~省略~
	</Building_LocalResourceAnds>

<BuildingType> Edit

今までと同じくBUILDING_SWORDSMITHを指定します。

<ResourceType> Edit

<ResourceType>タグ内では、建設に必要な資源を指定します。
溶鉱炉の場合鉄が必要となるので、RESOURCE_IRONとなっています。
刀鍛冶でも同じですので、ここは変更無しです。

上記の内容をまとめてみると以下のようになります。

	<Building_LocalResourceAnds>
		<Row>
			<BuildingType>BUILDING_SWORDSMITH</BuildingType>
			<ResourceType>RESOURCE_IRON</ResourceType>
		</Row>
	</Building_LocalResourceAnds>
 
 
 

<Building_ResourceYieldChanges> Edit

溶鉱炉を建設すると、鉄タイルの生産力が+1されます。
このように特定の資源に出力を加算する場合、<Building_ResourceYieldChanges>タグ内に記述していきます。
森林やジャングルといったタイルの特徴に加算する場合は、<Building_FeatureYieldChanges>タグで記述しましょう。

それでは溶鉱炉についての記述を見てみましょう。

	<Building_ResourceYieldChanges>
		~省略~
		<Row>
			<BuildingType>BUILDING_FORGE</BuildingType>
			<ResourceType>RESOURCE_IRON</ResourceType>
			<YieldType>YIELD_PRODUCTION</YieldType>
			<Yield>1</Yield>
		</Row>
		~省略~
	</Building_ResourceYieldChanges>

<BuildingType> Edit

今までと同じくBUILDING_SWORDSMITHを指定します。

<ResourceType> Edit

出力が加算される資源を指定します。
鉄資源に生産力が加算されるため、RESOURCE_IRONが指定されています。

<YieldType> Edit

加算される出力の種類を指定します。
溶鉱炉の場合生産力なので、YIELD_PRODUCTIONとなっています。
他にもゴールドや食糧が指定できます。

<Yield> Edit

加算される出力を指定します。
鉄タイルに生産力が+1されるので、溶鉱炉の場合1となっています。

刀鍛冶も溶鉱炉と同じ内容なので、変更点は殆ど有りません。
上記の内容をまとめてみると以下のようになります。

	<Building_ResourceYieldChanges>
		<Row>
			<BuildingType>BUILDING_SWORDSMITH</BuildingType>
			<ResourceType>RESOURCE_IRON</ResourceType>
			<YieldType>YIELD_PRODUCTION</YieldType>
			<Yield>1</Yield>
		</Row>
	</Building_ResourceYieldChanges>
 
 
 

まとめ Edit

以上の記述で、建造物の基本的なデータは設定し終わりました。
長くなってしまったため、アイコンやテキストの設定は後半でどうぞ

目次 Edit

コメント欄 Edit

間違い等の指摘がございましたら是非コメントをお願いいたします。
質問にも可能な限り回答いたします。

最新の10件を表示しています。 コメントページを参照

  • 素晴らしい項目をありがとうございます -- 2014-01-02 (木) 23:42:08
  • 難しそう… -- 2014-01-05 (日) 01:24:50
  • 続きも期待してます -- 2014-01-05 (日) 09:15:13
  • UAとUUどんなのになるか楽しみです -- 2014-01-09 (木) 17:06:49
  • 仕組みを1から解説するのではなく、あくまでMODをとりあえず作って楽しみたいというコンセプトのように感じられました。とても素晴らしいですね。 -- 2014-01-11 (土) 10:29:12
    • ご指摘の通りです。MOD作成の敷居が少しでも低くなればと思いこのような解説となりました。 -- ringo_? 2014-01-12 (日) 22:16:56
  • 超俺得です!超期待です!ありがとうございます!! -- 2014-01-11 (土) 18:44:20
  • コメントありがとうございます。新文明追加までの手順を一通り説明していきますので、暫くお付き合いいただけたら幸いです。 -- ringo_? 2014-01-12 (日) 22:11:53
お名前: