読者です 読者をやめる 読者になる 読者になる

みんからきりまで

きりみんです。

Civilization 6のゲームバランスを弄るオリジナルMODを作る(かんたん)

先日Civ6初めてとなる大型パッチが公開され、以前のレビューエントリでも書いた操作性の悪さやゲームバランスなどが修正された。
さっそく何プレイか遊んでみたところ、たしかにいくつかの不満点が改善されているようではあったが、どうも根本的なバランスの悪さはあまり変わっていないようだった。

いろいろと「もっとこうだったらなぁ」と思うところを妄想していたら、ふと定数を弄るMODくらいなら簡単に作れるのではないかと思いついたので、少し調べてみた。

結論から言うと簡単に作れたので作り方をメモしておく。

ゲームデータの場所と弄り方

Civilizationシリーズは元々MODが作りやすいような構造になっており、ゲーム内定数などがxmlファイルとして外出しされている。
Civ6のゲームデータは基本的に

"C:\Program Files (x86)\Steam\steamapps\common\Sid Meier's Civilization VI\Base\Assets"

内に置かれているようである。
例えば道路の移動速度の定義は上記ディレクトリ下の

\Gameplay\Data\Routes.xml

に定義されていた。
ファイルの中を見ると30行程度だが、その中に以下のような行がある。

     <Row RouteType="ROUTE_ANCIENT_ROAD" Name="LOC_ROUTE_ANCIENT_ROAD_NAME" Description="LOC_ROUTE_ANCIENT_ROAD_DESCRIPTION" MovementCost="1" SupportsBridges="false" PlacementValue="1" PlacementRequiresRoutePresent="false" PlacementRequiresOwnedTile="false"/>

これは古代の道路についての定義だ。
例えばMovementCost="1"となっている部分を0.25に変更し、ファイルを保存してゲームを起動すれば古代の道路は現代の道路以上に高速移動出来るようにちゃんと反映された。

単純にデータを弄るだけであればこれだけで完了。
ただし、これでは元のゲームデータを破壊してしまっているし、何かあった時に復元するのが面倒で危険だ。
なので、元データを直接弄るのではなくMODとしてデータをオーバーライドするのが正しいやり方だろう。

MODの作り方

DLCや配布されている他のMODをいくつか参考にしたらMOD作成も簡単に行う事が出来た。

MODを作成にするには最低2つのファイルが必要なようである。
1. modinfoファイル
2. データを定義するためのxmlファイル

modinfoファイル

これはMOD自体に関する情報と、使用するxmlファイルを指定したりするための定義ファイル。
Wikiにテンプレートのようなものが書かれていた。
MOD/作成方法 - Civilization6(Civ6)Wiki

実際にはこれを全て記述する必要はなく、必要なものだけを書けばいいようである。
実際に書く内容やその意味はWikiでも紹介されている他のMODをダウンロードし、modinfoを開いてみるのが一番早い。

数値を弄るMODであれば基本的に Settings, Components, filesを定義すれば良さそうだった。
僕が試しに作ったMODはこんな感じで書いたら動いた。
ちゃんと調べてないので過不足があるかは分からない。

<?xml version="1.0" encoding="utf-8"?>
<Mod id="59837596-3785-1212-348a-83ee5555eeee" version="1">
    <Properties>
        <Name>Better diplomacy</Name>
        <Teaser></Teaser>
        <Description></Description>
        <Authors>KIRIMIN</Authors>
    </Properties>
    <Settings>
        <Custom id="betterDiplomacy">
            <Items>
                    <Component>betterDiplomacy</Component>
            </Items>
        </Custom>
    </Settings>
    <Components>
    <UpdateDatabase id="betterDiplomacy">
          <Items>
                      <File>Data/GamePlayData.xml</File>
          </Items>
    </UpdateDatabase>
  </Components>
    <Files>
            <File>Data/GamePlayData.xml</File>
    </Files>
</Mod>

xmlファイル

こちらは実際の定義を書くファイル。
最初はここに変更したい元定義のファイルと同じものを書けば上書きされるのかと思ったが、そうではなくて上書き用の記法があった。

<?xml version="1.0" encoding="utf-8"?>
<GameInfo>
  <Routes>
    <Update>
      <Where RouteType="ROUTE_ANCIENT_ROAD"/>
      <Set MovementCost="0.25" />
    </Update>
  </Routes>
</GameInfo>

これはファイルを直接弄る方法で試した古代の道路の移動コストを変更する定義をMODとして書いたものである。
至って単純で、書き換えたい項目(Routes)のタグを作り、Updateタグ内にWhereタグとSetタグを書く。 Whereタグは対象の要素を指定していて、Setタグは変更する値を設定している。

作成した2つのファイルは

C:\Users\xxxxx\Documents\My Games\Sid Meier's Civilization VI\Mods

内にフォルダを作り格納する。
基本的にはこれだけでMODとして機能するようである。

余談

個人的なCiv6への不満点は主に外交周りなので、試しに戦争ペナルティを大幅に減らし、代わりに別政府ペナルティ(同政府ボーナス)を大幅に増やすというMODを作ってみた。
ちょっとプレイしてみたら新鮮でなかなか面白かった。

変えたい定数がどこで定義されているのかを探すのがなかなか大変なんだけど、細かく数値を弄りながら何度もテストプレイすれば(自分にとって)いい感じのMODが作れそうな気がする。
ただしそんなに何度もプレイしていたら人生が終わってしまうので厳しい。

個人的には外交面では宗教によって自然にいくつかのグループに分かれるようになっていたCiv4が一番良く出来ていた気がするので、Civ6ももうちょっとメリハリのある展開になるようなバランスになってほしいなぁ。