TES5Editはスクリプトを使用することで、様々な作業の自動化ができます。一番よく使われる物はマージスクリプトじゃないでしょうか。使ったことない人でも、「マージ(merge)」という単語自体は聞いたことあると思います。
Merge Plugins xEdit Scriptを使うのが一般的です。無いと困るツールの1つ。
これは簡単に言うなら、
複数のプラグインを合体させて1つにする
という作業です。便利そうですね。esmやespの数が減れば、ロードオーダーの管理も楽になりそうだし、MODの制限数超えそうになっても平気そうです。
いいことずくめに見えますが、これまたお約束通りでして、安易に使うと再起不能になるリスクがあります。
いくつかのパターンで実際にマージしながら、見ていくことにします。
※基本的にマージスクリプトの使い方説明はしません。Descriptionに十分な情報が書かれている為、特に補足説明するような内容が見当たりません。
説明翻訳ブログを作るつもりはありませんので、使い方はDescription参照してください。各Optionの説明は、1.8の説明項目に書いてあります。
いつものことですが、かなり長いです。分割も考えましたが、「注意点」が分散するのも微妙な気がしたので1記事にしちゃいました。
- マージの必要性
- マージの可否の判断
- 問題無くマージできる場合
- Form IDやファイル名の変更で不具合が発生する場合
- 競合しているMOD同士をマージした場合
- 注意が必要”かもしれない”MODのマージ
- まとめ
マージの必要性
クリティカルなのは、MODの大量導入により
プラグイン数が上限の255個に到達する
場合です。これを超えたらもうesmやespを使用するMODを導入することはできません。マージすることでプラグイン数を減らし、新たなMODの導入を可能にします。
その他、上限に達していない場合でも、
- パッチだらけでごちゃごちゃしているのでスッキリさせたい
- 数の少ない武器や防具MODをまとめたい
等、管理面での問題からマージしたい場合もあると思います。
マージの可否の判断
任意の好きなプラグイン同士をマージできる訳ではなく、構造や使い方によって可否があります。マージ作業自体が正常終了すればOKというものではなく、適当にマージするとゲームで不具合が起こる可能性が高いです。
基本的にプラグインの構造と競合についての理解がある程度あれば、必然的にマージの可否を自分で判断できる筈です。
※上限255個に到達しそうにも関わらず、この判断が自分でできない場合は、確実に不具合とCTD連発の環境を作っているでしょう。マージすることで更に悪化するだけだと思いますので、先に構造理解を進めることをお勧めします。
知らないけど強行するのも自由ですが、もはやゲームにならないと思います。
主に注意すべき点は次の3つだと思います。
- 競合しているプラグイン同士をマージしてないか?
- Form ID(アドレス)が変更されても問題無いか?
- ファイル名が変更されても問題無いか?
競合同士をマージしたらどうなるか?の推測が全くつかない人は、非常に危険なのでマージ作業をしない方がいいです。最低限競合の意味と危険性を理解しておいてください。
Form IDやファイル名の変更については、ピンとこない人もいるかもしれません。「競合」してないのに何故問題になる?的な。実例を出しつつ、説明してみます。
問題無くマージできる場合
刀のMOD2つをマージしてみます。どちらも非常にクオリティの高い出来栄えです。攻撃力はチート級ですけど(笑)
Bishu Osafune ju Morikage Katana and Tachi
こういった「1装備で1枠のespを使うMOD」は、色々マージしたくなると思います。これは比較的トラブルを起こしにくいマージ方法で、これだけでかなりesp量を減らせるのでお勧めです。装備以外に追加項目のある場合は注意しておいてください。例えばゲーム開始時にインベントリに装備入れるスクリプトが有るとか、専用の販売NPCがいる、クエストや建物が追加されてる等。場合によってはトラブるかもです。
TES5Editで確認
TES5Editで2つを読み込んで比較してみます。共にバニラに対する変更は無く、刀本体、製造&強化レシピの追加のみとなっています。
TES5Editでマージを実行
この2つを選択してマージスクリプトを実行してみます。
完了しました。ロードオーダー03がマージ後のespです。
Weaponを見てみると、備州長船のForm IDは同じですが、不動明王のForm IDは変更になっています。D64とD65が既に使用されていた為です。
不動明王太刀の強化レシピを確認します。Form ID変更に伴って問題起きてないでしょうか?
EditorIDが変わった訳ではないので、きちんと追従してくれてます。右窓のCreated Objectを見てみると、変更後のForm IDに書き換わっています。問題無さそうです。他の強化や生産レシピも同様です。
Skyrimを起動して確認
ゲーム内で確認してみました。4本とも問題有りません。想定通りです。
上が不動明王、下が備州長船。
Form IDやファイル名の変更で不具合が発生する場合
IDやプラグインのファイル名の変更が発生することで、不具合に繋がるパターンを見てみます。
NPCの場合
マージスクリプトのバージョン1.9現在においては、原則NPCに関するForm IDとファイル名変更は不具合にならないです。が、構造説明として解りやすいので、これを例にします。
rk Followersを使ってみます。美人のお姉さん系フォロワーです。よくYukiさんとFenneさん連れて出かけてました。ちなみに4人は纏まったespなのですが、メイちゃんだけ分かれてNexus外にアップロードされているので、これをマージしてみます。
旧バージョンのマージスクリプトで2つのespをマージしてみました。マージの綴り間違ってるのは見逃してください。
見ての通りForm IDが変わっています。この状態でゲームを起動すると・・・
こうなります。珍獣大行列。FaceGenDataのファイル名がForm IDになっている為、不整合になっています。
マージしたesp名のフォルダを作り、メッシュファイルをForm IDにあわせてリネームしてみます。
テクスチャも同様にリネーム。
正常になりました。
つまり、Form IDやespファイル名が変更されることによりトラブル発生の可能性があるということです。
バージョン1.9現在は、下のSSのように極力Form IDを変更せずにマージしてくれます。不動明王と長船の時のように、変更しないと競合する場合は別ですが。
FaceGenDataも適切なフォルダを作った上でコピーしてくれます。便利になりました。
NPCの場合はこれで基本OKなのですが、不具合に直結する場合もあります。
スクリプトの場合
Wet and Coldのスクリプトのログです。Cloaks of Skyrimがインストールされてるかどうか調べてます。
stack:
<unknown self>.Game.GetFormFromFile() - "<native>" Line ?
[_WetQuest (2C000D63)]._wetquestscript.maintenance() - "_WetQuestScript.psc" Line 324
[alias Player on quest _WetQuest (2C000D63)]._WetPlayerAlias.OnPlayerLoadGame() - "_WetPlayerAlias.psc" Line 29
[06/15/2015 - 11:34:40PM] ==== LAL: DLC and Mod support check - Ignore errors about missing files. ====
[06/15/2015 - 11:34:40PM] Error: File "1nivWICCloaks.esp" does not exist or is not currently loaded.
「1nivWICCloaks.esp」というファイル名で走査している為、マージしてファイル名を変更していた場合、Wet and ColdはCloaks of Skyrimを見つけられません。
もう一つ、過去記事でfacelightの実験をやった時のスクリプトです。
facelight = Game.GetFormFromFile(0x0007FFA2, "Facelight.esp") as Spell
「Facelight.esp」内にあるfacelightのMagicEffectを、「0X0007FFA2」というForm IDの決め打ちで指定しています。したがって、ファイル名が同一であってもForm IDが変更されていた場合、このスクリプトは正常に動作しません。
スクリプトを使っているMODのマージには、注意が必要です。
競合しているMOD同士をマージした場合
競合状態にあるプラグインをマージした場合、最終レコードはロードオーダーに従うことになります。普通にMOD使う時と同様です。問題無い上書き競合であることが確認できていればOKですが(互換パッチ等)、そうでない場合は当然トラブルになります。マスター指定対象にも留意してください。
「マージすればBashed Patchのように競合回避してくれる」などというのはデマですので注意してください。そもそも「競合」を理解していればこの発想は無いと思いますが・・・競合状態のまま合体するだけです。
Killable and Lootable Children
を例にしてみます。定番の子供種族改変MODと、子供種族からEssentialの解除とlootを可能にするMODです。
ロードオーダーはXvision Childrenを先にしているので、頭関連は全て上書きされています。逆のロードオーダーにしても、今度はKillable and Lootableの方が潰れるだけです。
これをこのままマージしてみます。07がマージ版esp。当然ですがXvision Childrenが一方的な競合敗者になった状態が、マージ後のレコードになってます。
この状態でSkyrimを起動したら、FaceGenとespの不整合により、すごいことになってます。ちなみにNPCのレコードだけでなく、Raceも潰されています。
「競合対策」を出来ない人がマージをすると、こういう事態が起こりますので注意してください。
※クリーニングのし忘れによる無意味な競合、くれぐれも起こさぬように注意してください。
注意が必要”かもしれない”MODのマージ
建物や地形変更等、Navmeshの改変を伴うMODです。Descriptionによれば、オプション設定でNavmeshもNavigation Mesh Info Mapも共に扱えるようですが、僕個人は試したことありません。
Navmesh周りの改変は確定CTDに繋がりやすいです。隣接セルとの接続等を無視して不正に改変すると、あっさり確定CTD起きます。Navigation mesh Info Map自体はCKでNavmeshを変更した時に、自動で生成してくれる(?)感じです。
マージスクリプトを疑問視しているわけではありませんが、万が一の用心ということで。
※Navigation Mesh Info Mapは、どのプラグインでもForm IDが00012FB4です。通常であれば競合対策が必要になる所ですが、これは対策の必要の無い特殊ケースとなっているようです。TES5Editでも競合として表示されません。ゲームシステム側で実行時にマージしてくれる?とか何とか。詳細は下記リンク参照してください。(USKPの総本山)afkmods.iguanadons.net
まとめ
- スクリプトを伴わない装備やNPCのマージは比較的安全
- 装備「のみ」を追加しているプラグインのマージがお勧め
- Form IDを指定してたり、ファイル名を取得するようなスクリプトはエラーになる
- 競合しているプラグインを強引にマージすると、えらいことになる
- 想定済みの上書き競合であれば問題ない(パッチのマージ等)。ただしマスター指定には注意。
- 地形をさわるMODの場合、一応Navmesh周りに注意しておく
ちょっと長くて読みづらい感あった気もしますが、こんなところで終わります。