はじめてのMOD作り

MOD/作成情報/はじめてのMOD作り
Last-modified: 2009-04-16 18:53:59

MOD/作成情報/はじめてのMOD作り †

概要 †

Civ4のMODを作りたい作成未経験者に向けて、MODを作るためのとっかかりとなる基本的なやり方を示します。理論の説明だけでなく、具体例・操作法をまじえて説明しますので、説明を読みつつ実際にその操作をしてみると、飲み込みやすいと思います。 補足説明として、脚注を多用しています。分からなかったら脚注も読んでください。

ここでは、MOD作りの中で最も簡単なXMLの書き換えによるMODを解説します。*1
本格的なMODは難しくても、ゲーム内のパラメータを少し変えるぐらいの簡単なMODなら、要領さえつかめばすぐにできてしまいます。気軽にトライしてみてください。

MOD(Civ4にインストール済みの公式MODだけでなく、Web上で公開されている別のMOD)のインストール・プレイを行うと、MOD作りを理解する助けになりますので、未経験の方はまずそれをやってからMOD作成に取り掛かることを勧めます。

参考文献 †

CivFanaticsにある以下の記事を参考に作成しました。

CivFanatics Modding Basics: XML 101
XML編集によるMOD作りの初歩解説(英語)。
MSMD: How to Create a Mod (video demo)
MOD作成の動画。英語ですが画像を見るだけでもある程度分かるかと思います。

MODの名前・対応バージョンを決める †

まず、MODの名前を決めましょう。半角英数字のみを使うのが良いと思います。*2MOD名は後からでも変更できますので、仮の名前でもかまいません。
この説明文では、MOD名を"KaitakuRunner"とします。

次に、MODがCiv4の無印・Warlords・Beyond the Swordの中でどれに対応するものかを決めてください。*3
ここではとりあえず、BtS向けのMODを作ることにします。
無印・WL向けのMODを作りたい方は、以下の説明のうちBtSを示すところ(主にフォルダ名)を、うまく読みかえてください。

MODの配置場所を作る †

他人の作ったMODを使う場合、インストール先フォルダは、以下の三か所のどこかです。詳しくはMOD/使用方法を参照。

MODを作成する場合も、まず最初に、同じ場所にフォルダを作ってしまいましょう。
作成場所としては、上記のうち2番目を選ぶのがお勧めです。*4

Windows VistaでBtS 日本語版用のMODを作成する場合は、ふつう
ドキュメント\My Games\Beyond the Sword(J)\MODS\
です。XP以前の場合は"ドキュメント"のかわりに"My Documents"です(この後もそう読みかえてください)。
この下に、先ほど決めたMOD名と同じ名前のフォルダを作ってください。今回の場合、"KaitakuRunner" フォルダを作ります。

ModTutorial1.jpg

(クリックすると拡大画像が出ます。以下同じ)

からっぽのMODができている †

実はこれだけで、"KaitakuRunner"というMODが作成されました!
BtSを起動して、タイトル画面で「アドバンス」→「MODをロード」を選んでみてください。「KaitakuRunner」という選択肢があるはずです。
これを選ぶと、KaitakuRunner MODがロードされ、開始されます。
現時点で、KaitakuRunner MODのゲーム内容は、通常のBtSと全く変わりありません。これは、KaitakuRunnerフォルダの中に何も無いからです。これから、KaitakuRunnerフォルダの中に、BtSとの差分(どこがどう変わるか)となるファイルを作って配置することで、ゲーム内容の改変を実現していきます。

変更内容を書いたファイルを作る †

さて、いよいよMODによる変更作業の始まりです。
今回作る"KaitakuRunner"は、開拓者の移動力を上げるというものです。
まずは、変更元のデータの場所を知っておきましょう。次いで、その変更方法を説明します。

大元のデータの場所 †

Civ4および拡張のゲームシステム・内容の多くは、以下の場所に格納されています。

Beyond the Sword(J)\Assets\ の中を見ると、Art, Python, res, Sounds ,XML のフォルダと CvGameCoreDLL.dllがあります。この全てがMODで変更可能だそうですが、最も簡単なのはXMLの改変です。

ModTutorial2.jpg

XMLフォルダの下、Unitsフォルダの中に CIV4UnitInfos.xml というXMLファイルがあります。名前の通り、ユニットについての情報を記述したファイルです。今回はこれをMODの変更対象とします。

フォルダ階層とファイルのコピー †

Assetsフォルダ以下の構造を、KaitakuRunnerディレクトリ以下に再現し、 CIV4UnitInfos.xml もコピーしましょう。以下のようにします。

  1. KaitakuRunner フォルダの下に、Assets というフォルダを作る。
  2. そのAssetsに移動し、その下に XML というフォルダを作る。
  3. そのXMLに移動し、その下に Units というフォルダを作る。
  4. C:\Program Files\CYBERFRONT\Sid Meier's Civilization 4(J)\Beyond the Sword(J)\Assets\XML\Units\CIV4UnitInfos.xml を、 ドキュメント\My Games\Beyond the Sword(J)\MODS\KaitakuRunner\Assets\XML\Units\ にコピーする。
ModTutorial3.jpg

これで、本来の Assets フォルダ以下の構造(のうち、CIV4UnitInfos.xmlがある部分)を、 KaitakuRunner の下に再現したことになります。

XMLファイルの改変 †

KaitakuRunner の数階層下に作った CIV4UnitInfos.xml を、テキストエディタ(メモ帳など)を使って開いてください。*5*6
名前の通りここには、ユニットに関する情報が記述されています。 たとえば最初の方を見ると<Class>UNITCLASS_LION</Class> という部分があり、このあたりでライオンユニットの情報を定義していることがわかります。この調子で、BtSに登場する全てのユニットのデータが書かれています。さすがに巨大なファイルですね(700KB・23000行を超えます)。*7

ModTutorial4.jpg


検索機能で、UNITCLASS_SETTLER という文字列で検索してください。<Class>UNITCLASS_SETTLER</Class> と書かれた行が見つかるはずです。(ファイルの715行め)
このあたりが、開拓者ユニットの情報を定義してある場所です。*8
さらに、その場所から下へ、<iMoves>で検索しましょう。<iMoves>2</iMoves> という行が出てくるでしょう(805行め)
このタグの中が、開拓者の移動力パラメータです。*9
この数字・2100に書き換えてください。これで、開拓者の移動力が100になりました!
ファイルを上書き保存して、エディタを閉じましょう。

ModTutorial5.jpg


これで、「開拓者の移動力を上げるMOD」KaitakuRunnerの完成です!

MODの実行 &dagger;

ではさっそく、このMODで遊びましょう!

CivModChooserの導入 &dagger;

MODを作成・テストする時には何度もMODをロードすることになります。そのため、MODを指定してCiv4を起動するための、手軽な方法を紹介します。
CivModChooserを用いるのが最も簡単でしょう。
Civ4無印かWLで動作させることを意図したツールと思われますが、BtSでも動作するようです。

ModTutorial28.png

初回起動時にダイアログに従って何度か操作をして、上記のように表示されたら、BtSの実行ファイル*10を指定すればOKです。

以下は、筆者がCivModChooserを使っていなかった頃に書いた代替手段です。念のため記事を残しておきますが、CivModChooserを使うのであれば読み飛ばして、次節に進んでください。

CivModChooserを使わずに、MODを手軽に起動したい場合、ショートカットを作るという手があります。
KaitakuRunnerフォルダに*11、BtSの実行ファイルへのショートカットを作り、 プロパティでリンク先の最後に" mod=\Mods\KaitakuRunner" を付け加えてください。*12
このショートカットを開くと、KaitakuRunner MODがロードされた状態でBtSが起動します。*13

ModTutorial6.jpg

MODを作成・テストする時には何度もMODをロードすることになりますから、こうしたショートカットを作ると便利です。

万一、CivModChooserもショートカット作成・起動による手法もうまくいかない場合は、今まで通り、普通にBtSを起動してMODをロードしても問題ありません。

MODのロード &dagger;

CivModChooser、もしくは他の方法で、KaitakuRunner MODを起動しましょう。

内部動作としては、本来のCiv4のAssets配下にあるファイル*14を読み込み、そしてそれをKaitakuRunnerディレクトリ配下にあるファイルで上書きしているものと思われます。*15KaitakuRunner配下に無いファイルについては、本来のファイルが使われているわけです。
まずタイトル画面で、「シヴィロペディア」を選び、「ユニット」→「開拓者」を見てみましょう。
「移動:100」と書かれています。
このように、ユニットのパラメータを変更すると、ちゃんとシヴィロペディアにも反映されるのです。良くできていますね。

ModTutorial7.jpg

ゲームプレイ &dagger;

では、ゲームを始めてみましょう。マップ・難易度など設定は何でもかまいません。
ゲームが始まったら、開拓者をクリックしてみましょう。彼はただの開拓者ではありません。
「移動力100」のスーパー開拓者です。
普段ならば初期配置場所もしくはその隣あたりに首都を建てるところですが、せっかくなので、開拓者でぐるぐる歩き回ってみましょう。1ターンで、ものすごい範囲を探索可能です。探索中に付近の文明に出会うこともあるでしょう。*16いろいろ回って、お菓子の小屋も回収しまくり、ベストの場所に首都を建てましょう。

ModTutorial8.jpg

初期開拓者だけでなく、今後生産する開拓者も、みんな移動力100です。遠い遠い場所であろうとも、開拓者が生産されたターンで都市を建設することができるでしょう。ただし、AIの開拓者も移動力100となっていますのでご注意を。
飽きたら、ゲームを終了してください。

開拓者の移動力を100にしたデータはKaitakuRunnerフォルダ配下にあり、KaitakuRunner MODを使う場合にのみ読み込まれます。
MODの無いCiv4や、他のMODを使う場合には、KaitakuRunnerフォルダは無視され、したがって開拓者の移動力は2のままです。ご安心ください(笑)。
せっかくなので記念に、筆者の作ったKaitakuRunner MODを置いておきます。

fileKaitakuRunner.zip


ここまで読んでくださって、ありがとうございました。
はじめてのMOD作り その2 につづく


*1 補足:XMLを全く知らない人は、XML入門サイト等で少し勉強してから読むほうがいいかもしれませんが、この文章で扱う範囲のXMLを理解するのは難しいことではありません。例えばHTMLのタグを使ったことがあるならば、それだけで十分です。
*2 MOD名はMODを格納するフォルダ名と一致させる必要があるため、文字コード等に起因するエラーを回避するには半角英数にするのが無難。
*3 MODによっては、全てに対応するものを作ることも可能ですが、とりあえず一つ決めたほうが理解が早いと思います
*4 Civ4のインストールフォルダ配下はアクセス権の扱いが厳しい場合があります。CustomAssetsは複数のMODを混ぜて使うための場所であり、MOD作りには向きません
*5 すでにXMLエディタを持っている人は、それでもいいです
*6 補足:ファイルをダブルクリックすると、Internet Explorerなどのファイル編集のできないソフトで開かれてしまう場合があるので、エディタを使って読み込んでください。また、時々文字コードをうまく扱えずに日本語・フランス語等で書かれた部分を破壊してしまうエディタがあるようですので注意。メモ帳で開けばたぶん大丈夫です。
*7 XMLについて補足:<Class>と</Class>に挟まれた部分が、<Class>というタグの値を示します。この場合、このユニットのClass(ユニット種類)の値はUNITCLASS_LION(ライオンを示すキー)である、という意味です。詳しく知りたい人はXML入門サイトへ
*8 正確には、その前の行の<UnitInfo>タグから、それの終了タグである893行目の</UnitInfo>までが開拓者の情報
*9 XML風に言うと、iMovesタグはユニットの移動力を表すタグであり、その値は2である、ということです。
*10 C:\Program Files\CYBERFRONT\Sid Meier's Civilization 4(J)\Beyond the Sword(J)\Civ4BeyondSword.exe
*11 別のフォルダに作っても問題ありません
*12 mod=の前に半角スペースを忘れずに。
*13 BtSを、コマンドラインオプション mod=\Mods\KaitakuRunner をつけて実行したことになります。
*14 上記「大元のデータの場所」に示したAssetsフォルダ以下にあるファイル
*15 まず無印用のAssetsである 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\ を読み込み、同じ名前のファイルについては無印用のデータに上書きする。、さらにBtS用 C:\Program Files\CYBERFRONT\Sid Meier's Civilization 4(J)\Beyond the Sword(J)\Assets\ を読んで上書き、最後にMODのデータ ドキュメント\My Games\Beyond the Sword(J)\MODS\ を読んで、修正されたファイル、すなわちCIV4UnitInfos.xmlをBtS版からKaitakuRunner独自のものに上書きする。
*16 筆者の環境では、出会ったとたんゲームが強制終了してしまうことがありましたが…