資源・地形改善の編集

MOD/作成情報/資源・地形改善の編集
Last-modified: 2013-06-20 13:03:28

MOD/作成情報/資源・地形改善の編集 †

はじめに †

資源と地形改善の編集方法の概要の説明です。
Fanatics内の記事(http://forums.civfanatics.com/showthread.php?t=153584)から翻訳中。

日本語版BtS3.19のSDKを読みながらアップデートしました。(2013-6-20)


 

編集対象ファイル †

既存の資源・地形改善を編集する場合は、以下のXMLファイルの内容を変更します。
新しい資源・地形改善を作ったり、資源・地形改善の名前を変更したりする場合は、そのほかに資源・地形改善の名前を定義するファイルをTextフォルダ内に追加する必要があります。
BtS 日本語版 CustomAssetsにMODを置く場合

  1. /My Games/Beyond the Sword(J)/CustomAssets/XML/Terrain/CIV4BonusInfos.xml
  2. /My Games/Beyond the Sword(J)/CustomAssets/XML/Terrain/CIV4BonusClassInfos.xml
  3. /My Games/Beyond the Sword(J)/CustomAssets/XML/Terrain/CIV4ImprovementInfos.xml
  4. /My Games/Beyond the Sword(J)/CustomAssets/XML/Units/CIV4UnitInfos.xml
  5. /My Games/Beyond the Sword(J)/CustomAssets/XML/Units/CIV4BuildInfos.xml

注1: 無印では"Beyond the Sword(J)"をSid Meier's Civilization 4(J)に、WLではWarlords(J)にそれぞれ読みかえてください。

注2: 元となるファイルは、BtSの場合、 C:/Program Files/CYBERFRONT/Sid Meier's Civilization 4(J)/Beyond the Sword(J)/Assets以下の場所からコピーしてください。
例としてCIV4ImprovementInfos.xmlの場合、"C:/Program Files/CYBERFRONT/Sid Meier's Civilization 4(J)/Beyond the Sword(J)/Assets/XML/Terrain/CIV4ImprovementInfos.xml" に元ファイルがあります(日本語版で通常の場所にインストールした場合)。

注2-2: 無印の元ファイルはC:/Program Files/CYBERFRONT/Sid Meier's Civilization 4(J)/Assets以下、WLはC:/Program Files/CYBERFRONT/Sid Meier's Civilization 4(J)/Warlords(J)/Assets以下にあります。
なお、CivはBtSで変更の無いファイルは自動でWL、無印のファイルを読んでいます。BtS内にファイルが見当たらない場合はWLのフォルダ→無印のフォルダと探してください。

なおCIV4BonusInfos.xmlはWL→BtSで変更が無いため、BtSのフォルダにはありません。BtS本編でもWLのファイルであるC:/Program Files/CYBERFRONT/Sid Meier's Civilization 4(J)/Warlords(J)/Assets/XML/Terrain/CIV4BonusInfos.xmlを読み込んでいるので、これを元ファイルとして使いましょう。
同様にCIV4BonusClassInfos.xmlは無印から変更が無いため、BtSのフォルダにもWLのフォルダにもありません。C:/Program Files/CYBERFRONT/Sid Meier's Civilization 4(J)/Assets/XML/Terrain/CIV4BonusClassInfos.xmlを元ファイルとして使いましょう。


注3: CustomAssetsではなく、独立したMODを作る場合は、"/CustomAssets"を/MODS/<MOD名> などに読みかえてください。

注4Textフォルダ内では、無印とWL/BtSでは無印とでファイル名が異なる場合があります。(CIV4GameText_Objects_BTS.xml など)(また、Textディレクトリ配下に限っては、MODで異なるファイル名を使ってもOKです)

注4-2Textフォルダ内では既存の定義を別ファイルで上書きしても大丈夫です。MODの定義が優先されます。(例えばTXT_KEY_HANDICAP_SETTLER("難易度:開拓者"の名前の定義)は無印のCIV4GameTextInfos_Objects.xmlで行われていますが、CIV4GameTextInfos_Objects.xmlをコピペして編集するのではなく、別名の新ファイルを作って改めて定義しなおすだけでOKです)

CIV4BonusInfos.xml †

BonusInfo>タグで資源について定義。

<Type>資源キー
<Description>資源名称キー
<Civilopedia>資源シヴィロペディアキー
<BonusClassType>何の資源クラスに分類されるのかの定義。
後述するCIV4BonusClassInfos.xmlで設定した資源クラスキーを使う。
<ArtDefineTag>この資源の画像・アイコンを定義
<TechReveal>この資源が可視状態になるために必要なテクノロジー
<TechCityTrade>この資源が満足・衛生を供給したりユニットを作るために利用するのに必要となるテクノロジー
<TechObsolete>資源を陳腐化させるためのテクノロジー
<YieldChanges>この資源がタイル上にあることで変化する値。<iYieldChange>で食料、ハンマー、コインの順に数値で定義する。マイナスにすることも可能。
<iAITradeModifier>数値が大きいほどAIはこの資源を取引するときに多額の金を払ってでも手に入れようとする。AIがプレーヤーに対して輸出するときも同様。通常では石油が20でそれ以外は0になっている。AIは取引の価値をプログラムにより自動で測っており(どこまで作りこまれているかは不明だが)、この数値はあくまでも多分付加価値、これが0でも、例えば衛生+100の資源があれば、AIは莫大な等価を出す。しかしこの値を例えば1000とか2000とかにすると、それなりの価値がでてくる。実験では鉄、石炭を出してきた。(指導者の性格にもよる)
<iAIObjective>http://forums.civfanatics.com/archive/index.php/t-328821.html
<iHealth>この資源から得られる衛生の数
<iHappiness>この資源から得られる幸福の数
<iPlacementOrder>マップ生成時の資源配置処理の順番。0番から順番に資源配置処理を行う。
設定できる値は0~(資源の種類数-1)まで。これから外れた数字を設定するとおかしな動作をする可能性がある。
鉄・石油は0、銅・馬は1、アルミ・石炭・ウランは2、石材・大理石は3、食料資源は4、暦資源などは5、漁業資源は6になっている。
<iConstAppearance><Rands>の説明に詳細を記述
<iMinAreaSize>資源が出現する最小の陸地の大きさ
<iMinLatitude>資源が出現する最低緯度。0なら赤道上。
<iMaxLatitude>資源が出現する最高緯度。100なら北極・南極になるが、資源は90までにしか出現しない。マップによっては両極が存在しないマップもあるが、その場合マップの上下の端が90になる。
<Rands>資源の配置数は(プレイヤー数*<iPlayer>+配置可能タイル数*<iTilesPer>)*(<iConstAppearance>+(1~<iRandApp1>)+(1~<iRandApp2>)+(1~<iRandApp3>)+(1~<iRandApp4>))になる。
<iPlayer>1人のプレーヤー当りの資源の数を%で定義。100なら1人のプレーヤーに1個ずつ、50なら2人のプレーヤーに1個ずつ、200なら1人のプレーヤーに対して2個ずつ資源が出現する。食料資源はたいてい0だが、0の場合資源の数はプレーヤーの数に影響されることはない。
<iTilesPer>この資源を配置できるタイル数をこの数値で割った数だけ資源を追加配置する
<iMinLandPercent>水上にも地上にも置ける資源の場合、地上に配置される量を%で定義する。
<iUnique>同じ資源から最低限確保される距離
<iGroupRange><iGroupRand>と関連。近くに同じ資源が配置されるとき、もう一つの資源との距離を定義。
<iGroupRand>この資源の近くにさらにもう一つ同じ資源が配置される可能性を%で定義。
<bArea>この値が1なら複数の大陸があるマップでは1つの大陸にしか出現しない。
<bHills>1ならこの資源は丘に配置できる。
<bFlatlands>1ならこの資源は平地に配置できる。
<bNoRiverSide>1ならこの資源は川沿いには配置できない。
<bNormalize>貧相な初期位置を修正する際に配置されるかどうか。
<TerrainBooleans>この資源が配置できる基本的地形を<TerrainType>で定義。
<FeatureBooleans>この資源が配置できる特徴的な地形を<FeatureType>で定義。
<FeatureTerrainBooleans><FeatureBooleans>で指定された特徴的な地形とこのタグの<TerrainType>で定義した基本的地形の両方を持つタイルにこの資源は配置される。


CIV4BonusClassInfos.xml &dagger;

資源の分類のキーを定義するファイル。
後述するキーの効果に加えて、AIが資源を持っていないときに同じ分類のほかの資源を見つける技術を優先しようとする。
(例:BONUSCLASS_RUSHには銅、馬、鉄が分類されているが、もし青銅器を持っていて銅が供給されていない場合、畜産や鉄器を研究する確率が+66%される。また青銅器と畜産を持っているとき、銅も馬も無い場合は鉄器を研究する確率が+200%される。但し、銅か馬の一方を持っているなら、鉄器を研究する確率上昇は+25%に留まる。)

<Type><資源クラスキー>
<iUnique>同じ分類の資源同士は最低でもこの距離分離れて配置される
但し初期位置補正による配置など無視される場合もある

CIV4ImprovementInfos.xml &dagger;

&lt;ImprovementInfo>タグで地形改善について定義。

<Type>地形改善キー
<Description>地形改善名称キー
<Civilopedia>地形改善シヴィロペディアキー
<ArtDefineTag>この地形改善の画像を指定。
<PrereqNatureYields>この改善を建てるために必要なタイルの数値。上から順に食料、ハンマー、コインで指定する。
<YieldChanges>この地形改善を建てることでタイルに与える値を<iYieldChange>で上から順に食料、ハンマー、コインで定義。
<bHillsMakesValid>1ならこの改善は丘に建てられる。
<bFreshWaterMakesValid>1ならこの改善は川沿い(湖を含む、つまりきれいな水がある場所)に建てられる。
<bRiverSideMakesValid>1ならこの改善は川沿い(湖を含まない)に建てられる。きれいな水の有無には関係なく川沿いだけに建てられる。
<bNoFreshWater>
<bRequiresFlatlands>平地でなければならない
<bRequiresRiverSide>
<bRequiresIrrigation>1なら灌漑されているタイルと隣接しているタイルでなければこの改善は建てられない。
<bCarriesIrrigation>1ならこの改善が建てられたタイルは灌漑されている状態になる。つまりこのタイルに隣接して灌漑を必要とする改善を建てられる。
<bRequiresFeature>後述の特徴的な地形が必要。それがなくなった場合この改善はなくなる。(例.伐採所)
<bWater>1ならこの改善は水の上にしか建てられない。
<bGoody>1ならこの改善があるタイルにユニットが入った際にお菓子の小屋のボーナスがもらえる。
<bPermanent>1ならこの改善は破壊することが出来ない。
<iTilesPerGoody>部族集落に設定されている。詳細不明?
<iGoodyRange>部族集落に設定されている。改善ごとの最低距離?
<iFeatureGrowth>特徴的な地形の成長(例:保安林は森林の成長を促進。値は64)
<iUpgradeTime>別の改善にアップグレードするのにかかるターン数。ゲーム速度は普通。
<iAirBombDefense>航空ユニットに対するこの改善の防御力。この数値と航空ユニットの攻撃力が同等の場合、2分の1の確率で改善が破壊される。
<iDefenseModifier>この改善があるタイルにいる全てのユニットに追加される防御ボーナスの%。
<iPillageGold>この改善を略奪したとき得られるゴールドの基本値。
<bOutsideBorders>1なら文化圏外に建設可能
<TerrainMakesValids>この改善が常に建てられる基本的な地形。
<FeatureMakesValids>この改善が常に建てられる特徴的な地形。
<BonusTypeStruct>この改善から得られる資源について定義。<BonusType>に資源の名前を定義。<bBonusMakesValid>が1ならばこの改善はいつでも建てる事ができる。<bBonusTrade>が1ならばこの資源は交易することが出来る。<iDiscoverRand>は数値で定義し、この数値をxとするとこの資源が存在しない改善に1ターンごとに1/xの確率で新たにこの資源が湧く。<YieldChanges>ではこの改善を建てることでタイルに変化を与える数値を定義する。子要素<iYieldChange>で上から順に食料、ハンマー。コインで指定する。
<ImprovementPillage>この改善が略奪されたときに変化する改善の名称。(例.略奪による町→村のダウングレードなど)
<ImprovementUpgrade>この改善からアップグレードされる改善の名称。(例.村→町など)
<TechYieldChanges>特定の技術が発見されたときに追加される食料、ハンマー、コイン上から順に子要素で定義。
<RouteYieldChanges>このタイルに道路が引かれて時に追加される食料、ハンマー、コイン上から順に子要素で定義。
<WorldSoundscapeAudioScript>
<bGraphicalOnly>


CIV4UnitInfos.xml 、CIV4BuildInfos.xml &dagger;

ユニットについて定義。新しい地形改善を作ったならば、ゲーム中で労働者がその改善を作れるようにしなければならない。詳しくは「ユニットの編集」を参照。

道路の追加方法 &dagger;

・Assets>XML>Units>CIV4UnitInfos.xml でワーカーでビルド指定
・Assets>XML>Units>CIV4BuildInfos.xml
・Assets>XML>GlobalDefines.xmlで

	<Define>
		<DefineName>INITIAL_CITY_ROUTE_TYPE</DefineName>
		<DefineTextVal>ROUTE_ROAD</DefineTextVal>
	</Define>

	<Define>
		<DefineName>INITIAL_CITY_ROUTE_TYPE</DefineName>
		<DefineTextVal>ROUTE_○○○○</DefineTextVal>
	</Define>

を置き換える

・Assets>XML>Misc>CIV4RouteInfos.xml
・Assets>XML>Art>CIV4RouteModelInfos.xml
・Assets>Art>Terrain>Routes ルートの画像
・あとテキスト指定と
・アイコン指定
・あとAssets>XML>Terrain>CIV4ImprovementInfos.xml で道路で得られる恩恵とか、