プラグインのマージに関するお話です。
Fallout4には拠点や装備のクラフト要素がある為、Skyrimに比べてプラグイン数がカツカツになりやすい気がします。そんな時こそマージの出番。
SkyrimのxEdit用スクリプト、Merge Plugins xEdit Scriptを使います。スタンドアロンのMerge Pluginsは僕が使ったことないので、ここでは触れません(Fallout4で使えるのかも知らないですが・・・)。いずれにせよ、基本的な考え方は同じです。
書いてたら長くなったので、2回に分けます。
マージのメリット
有限リソースであるプラグイン数を減らすことが、一番の目的ですね。
下のSSは、ハッキングやロックピックを簡易化するEasier Hacking with Optionsや、電線の距離を伸ばすLonger Power Lines等、ゲーム設定を変更するMODを5個入れた状態。僅か7個のオブジェクトの為に5個のespを消費しています。
MODの目的がそれぞれ違うので仕方無いですが、ローカル環境的には燃費が悪いです。こうしたMODを全部マージすれば、esp数が大幅に稼げます。
こんな具合にセッティング系を全部まとめてしまえば、esp1個で済みます。
他にも、こまごました物(DLCごとの互換パッチ等)をまとめることで、管理面でも楽になると思います。
※わからなかったらスルーしてください。
背景緑の所はIdentical to Master Edit(マスターファイルと同じ中身、Dirty Editsの一種)なので、クリーニングすると削除対象になります。競合対策としては削除した方が安全なのですが、僕の都合で書き換える可能性がある為、残してあります(残してることを『管理』できてるので大丈夫)。
マージで起こりうる問題点
複数のMODを1個に纏める故、必然的にプラグイン名称が変わります。また、新規追加のオブジェクトはForm IDが重複する可能性が高く、回避する為にForm IDの変更が発生します。これが原因となるトラブルや、『マージ』という統合ならではの問題も発生します。
特に競合状態で強引にマージした場合は、不具合の発見がより一層困難になります。くれぐれもご注意を。
マスター指定対象の参照エラー
マスターファイル(esm)や、マスター指定対象のespをマージした際に起こる可能性があります。プラグイン名やForm IDが変わってしまうことで、本来参照されるべきレコードが読めずにエラーになります。
例えば、
- True Stormsに何かをマージして、True Stormsの追加天候のForm IDを変更させた
- Armorsmith Extendedと何かをマージして、プラグイン名を変更した
等。
True Stormsの例は、該当する天候をホロテープから呼び出せなくなると思います。AEの例では所持重量増加モジュールが使えなくなる等、AEをマスター指定したMOD全てに不具合が出る筈(それ以前に起動時に確定CTDするかも)。
セーブデータ内のオブジェクト消失
プラグイン名やForm IDが変わる以上、ニューゲーム以外では確実に発生します。
例として、
- Solar Panelsを、拠点クラフト用espにマージした。
- The M9 Standalone Pistolを、武器用espにマージした。
それぞれ元のespが消失する為、設置済のソーラーパネルの消滅、持ってた筈のM9が無くなったりします。再度の設置や、コンソールからの際入手が必要。
可読性の低下
マージのやり過ぎで単一プラグインがあまりに多機能になると、トラブルが起きた際の切り分けが困難になります。自分でもよくわからないespに成りかねない、というお話です。
アップデートの煩雑化
マージ後にアップデートを適用するには、アップデート前のオブジェクトをマニュアルで全て削除し、新バージョンを追加マージすることになります。面倒です。
アンインストール問題
マージ後に部分的にアンインストールしたくなったら、これも手動で削除することになります。マージしたプラグイン自体をマスター指定したプラグインがある場合は、簡単に削除する訳にいかなくなる為、これまた面倒だったり。マスター指定は計画的に。
競合状態における強引なマージ
これは問題外で、競合を解消するまで保留すべきです。「競合」という形で不具合を確認できたレコードが、強引にマージしてしまうと「1つのプラグイン内でのバグ」と化してしまう為、不具合特定が極めて困難になる恐れがあります。
マージのやり方
Description読むだけで判る位に簡単なので、詳細省略。スタンドアロン版は知らないですが、Merge Scriptの方は、
- 適切なフォルダにスクリプトをコピー
- FO4EditのApply Scriptから適用
- 必要な項目を設定(初回だけ)
- マージするプラグインを選択
- マージ後のファイル名を設定して実行
みたいな流れです。
ba2ファイルを含む場合は、
- リネーム(ba2ファイルを持つMODが1個だけの場合)
- ルーズフォルダに展開
- ba2ファイルもマージ
のいずれかで対処。
Merge Scriptではba2ファイルのマージはできないので、一度展開してからCKで再圧縮する等で対応してください。
マージ後の確認事項
バッグMODのSurvivalist Go-Bags(SS内[08])と、ドッグミート用ボディアーマーK-9 Harness(同[09])を、Bag-Merged.esp(同[0A])としてマージしました。これを例に。
Form IDの確認
[09]と[0A]が太字(変更済)になってます。
[0A]は作成したマージファイルなので当然太字。ですが [09]も太字なことに注目です。
これは、マージによって[09]内オブジェクトのForm IDが変更されたことを意味します。
マージ前の[09]のArmor Addon。xx000803
とxx000805
が有りますが・・・
[08]で既に使われてます。マージで上位2桁は同じになる以上、変更が必要です。
マージすると、1C17
と1C18
に変更されました。
今回はどちらのForm IDが変わっても支障無いですが、既存のマージespに追加マージする際には注意が必要です。既存のマージesp側のForm IDが変わると、セーブデータ内のオブジェクト(アイテムや景観等)が消滅する可能性があります。
例えばマージespの服を着てたとして、そのArmorのForm IDが変わるとマッパになります。どのプラグインのForm IDを優先するか、確認する必要があります。設定あったかもですが、デフォルトではロードオーダーの若いプラグインが優先されると思います。
何をマージしたか忘れた時は?
File Headerに、マージ元のプラグイン名が残されています。
もう1つ。マージの都度、Form Listにマージした全オブジェクトのリストが作成されます。
これは追加マージの度にどんどん増えていくので、古い物は削除しても良いでしょう。もし管理上の不安が残るようなら、残しておくのも手かと。
(おまけ)ba2ファイルの圧縮
僕が知らないだけで便利なツール有るかもですが、とりあえずCKでの作成手順だけメモっておきます。
例のバッグMOD(Go-BagsとK-9)は共にba2ファイルを使ってるので、まずはこれをルーズフォルダに展開。それをba2に再圧縮します。
CKのトップメニュー、File>Create Archiveを選択するだけ。
もしCKが落ちることがあれば(理由判らないですが何度か経験が)、中身がカラっぽのespを作成し、そこから作業すれば問題無く圧縮できます。起動直後にsaveすれば、カラのesp作れます。
あとは自動で読み込まれるか、もしくは下のSSの窓に、ドラッグ&ドロップでファイル指定。
選択し終わったらPack Filesを実行、適切にファイル名をつければ圧縮完了!
(おまけ2)esl化によるプラグイン数の節約
手段は違えと、マージと同じ目的で活用できます。条件次第ですが、最大4096個のプラグインをロード可能なので!
実の所eslは、
ゲーム上で行う公式マージ
と言っても差し支えない構造をしています。具体的には、全てのeslはFExxxxxxにon memoryでマージされます。マージesp作るより管理が楽なので、こっちメインにしようかなと検討中。
Skyrimブログの方でeslの解説していますので、よかったらどうぞ。
続きます。