今日も気づいたら夜

技術メモとか。Civ:BEのMOD作成についてとか。

Civ:BE テクノロジーの追加MOD

前回は遺産を追加したので今回はテクノロジーを追加してみる。

追加するテクノロジーは「居住区」からのびる枝ノード「Basis of magic」(魔術の基礎)である。簡単のため、テクノロジーが完成されたときに追加されるユニットなどはなしとする。

早速xmlを作っていく。追加しなければいけないのは1. 基本情報、2. 接続情報、3. その他の情報の三つだ。
テクノロジーに関する情報はCiv:BEがインストールされているフォルダを基準に「\assets\Gameplay\XML\Technologies」にある、CivBETechnologies.xmlに書いてある。


0. 作成するテクノロジーの決定
今回作成する「Basis of magic」は、「化学」と同じように「居住区」から延びる。そのためコストも「化学」などと同等にする。一方、「化学」がある円にはこれ以上他のテクノロジーを追加する余地がないため、一番外側の円に表示することとする。


1. 基本情報
テクノロジーの基本情報は、CivBETechnologies.xmlのTechnologiesに書いてある。例えば「化学」なら、下記のように記述される。

    <Row>
      <Type>TECH_CHEMISTRY</Type>
      <Cost>95</Cost>
      <GridRadius>1</GridRadius>
      <GridDegrees>270</GridDegrees>
      <Description>TXT_KEY_TECH_CHEMISTRY</Description>
      <Civilopedia>TXT_KEY_TECH_CHEMISTRY_DESC</Civilopedia>
      <Help>TXT_KEY_TECH_CHEMISTRY_HELP</Help>
      <Quote>TXT_KEY_TECH_CHEMISTRY_QUOTE</Quote>
      <IconAtlas>TECH_ATLAS_1</IconAtlas>
      <PortraitIndex>1</PortraitIndex>
      <AudioIntro>AS2D_TECH_CHEMISTRY</AudioIntro>
      <AudioIntroHeader>AS2D_HEADING_TECH_CHEMISTRY</AudioIntroHeader>
    </Row>

Typeはテクノロジーを特定するキー、Costは開発に必要なビーカー数、Descriptionはテクノロジー名、Civilopediaはシヴィロペディアに載るテクノロジーの「歴史」、Helpはテクノロジーが完成した際に解放される要素を記述したもの、Quoteは解放された際に表示される格言、IconAtlasとPortraitIndexは表示されるアイコン、AudioIntroとAudioIntroHeaderは格言の音声である。
残ったGridRadiusとGridDegreesは、テックウェブのどこに表示されるのか表したもので、GridRadiusはどの円に表示されるのか、GridDegreesは円のどの位置に表示されるのか3時を0度として時計回りで表したものである。

今回なら、Type, Description, Civilopedia, Help, QuoteにあるCHEMISTRYをBASIS_OF_MAGICに変更する。
CostやIconAtlas, PortraitIndexはそのまま、AudioIntroとAudioIntroHeaderは削除する。GridRadiusは4(一番外側の円)、GridDegreesは280を指定する。変更を適用すると下記のようになる。

		<Row>
			<Type>TECH_BASIS_OF_MAGIC</Type>
			<Cost>95</Cost>
			<GridRadius>4</GridRadius>
			<GridDegrees>280</GridDegrees>
			<Description>TXT_KEY_TECH_BASIS_OF_MAGIC</Description>
			<Civilopedia>TXT_KEY_TECH_BASIS_OF_MAGIC_DESC</Civilopedia>
			<Help>TXT_KEY_TECH_BASIS_OF_MAGIC_HELP</Help>
			<Quote>TXT_KEY_TECH_BASIS_OF_MAGIC_QUOTE</Quote>
			<IconAtlas>TECH_ATLAS_1</IconAtlas>
			<PortraitIndex>1</PortraitIndex>
		</Row>

なお、葉テクロノジーの場合はRowの中に<LeafTech>true</LeafTech>を追加すればよい。


2. 接続情報
Technologiesではテクノロジーを定義するが、テクノロジー同士の関係は定義していないので別の部分で定義する必要がある。これはTechnology_Connectionで定義する。

先ほどの「化学」なら下記のように定義されている。

    <Row>
      <FirstTech>TECH_HABITATION</FirstTech>
      <SecondTech>TECH_CHEMISTRY</SecondTech>
    </Row>

FirstTechが完成されたときにFirstTechが解放される、と読めばよい。
「Basis of magic」も「居住区」からつながっているので、SecondTechのCHEMISTRYをBASIS_OF_MAGICに変更すればよい。


3. その他情報
世界遺産を追加の時と同じように、Flavorとテキストを記述する。
今回は下記のようにした。

	<Technology_Flavors>
		<Row>
			<TechType>TECH_BASIS_OF_MAGIC</TechType>
			<FlavorType>FLAVOR_GROWTH</FlavorType>
			<Flavor>10</Flavor>
		</Row>
	</Technology_Flavors>
	<Language_EN_US>
		<Row Tag="TXT_KEY_TECH_BASIS_OF_MAGIC">
			<Text>Basis of magic</Text>
		</Row>
		<Row Tag="TXT_KEY_TECH_BASIS_OF_MAGIC_DESC">
			<Text>Mankind has been wanting the magic. We uses magic in this planet.</Text>
		</Row>
		<Row Tag="TXT_KEY_TECH_BASIS_OF_MAGIC_HELP">
			<Text>This technology allows basis of magic.</Text>
		</Row>
		<Row Tag="TXT_KEY_TECH_BASIS_OF_MAGIC_QUOTE">
			<Text>"Any sufficiently advanced technology is indistinguishable from magic."[NEWLINE]- Arthur C. Clarke, Profiles of the Future</Text>
		</Row>
	</Language_EN_US>

テキストは少なくとも英語版が定義されていれば問題ないので日本語版は省略した。

最終的なxmlは下記のようになる。

<?xml version="1.0" encoding="utf-8"?>
<GameData>
	<Technologies>
		<Row>
			<Type>TECH_BASIS_OF_MAGIC</Type>
			<Cost>95</Cost>
			<GridRadius>4</GridRadius>
			<GridDegrees>280</GridDegrees>
			<Description>TXT_KEY_TECH_BASIS_OF_MAGIC</Description>
			<Civilopedia>TXT_KEY_TECH_BASIS_OF_MAGIC_DESC</Civilopedia>
			<Help>TXT_KEY_TECH_BASIS_OF_MAGIC_HELP</Help>
			<Quote>TXT_KEY_TECH_BASIS_OF_MAGIC_QUOTE</Quote>
			<IconAtlas>TECH_ATLAS_1</IconAtlas>
			<PortraitIndex>6</PortraitIndex>
		</Row>
	</Technologies>
	<Technology_Connections>
		<Row>
			<FirstTech>TECH_HABITATION</FirstTech>
			<SecondTech>TECH_BASIS_OF_MAGIC</SecondTech>
		</Row>
	</Technology_Connections>
	<Technology_Flavors>
		<Row>
			<TechType>TECH_BASIS_OF_MAGIC</TechType>
			<FlavorType>FLAVOR_GROWTH</FlavorType>
			<Flavor>10</Flavor>
		</Row>
	</Technology_Flavors>
	<Language_EN_US>
		<Row Tag="TXT_KEY_TECH_BASIS_OF_MAGIC">
			<Text>Basis of magic</Text>
		</Row>
		<Row Tag="TXT_KEY_TECH_BASIS_OF_MAGIC_DESC">
			<Text>Mankind has been wanting the magic. We uses magic in this planet.</Text>
		</Row>
		<Row Tag="TXT_KEY_TECH_BASIS_OF_MAGIC_HELP">
			<Text>This technology allows basis of magic.</Text>
		</Row>
		<Row Tag="TXT_KEY_TECH_BASIS_OF_MAGIC_QUOTE">
			<Text>"Any sufficiently advanced technology is indistinguishable from magic."[NEWLINE]- Arthur C. Clarke, Profiles of the Future</Text>
		</Row>
	</Language_EN_US>
</GameData>

これを保存し、プロジェクトのプロパティの「Mod Info」で「Reload Strategic View System」にチェックを入れ、「Actions」で作成したxmlがデータベースに反映されるようにしてビルドすればMODの作成が完了する。

下記は実行結果。f:id:fallinsky:20141109133518j:plainf:id:fallinsky:20141109133643j:plain