Fallout箱庭DIY

「箱庭DIY」Fallout分室

【Fallout4】プラグインのマージにおける注意と確認

スポンサーリンク


MOD基礎

プラグインのマージに関するお話です。

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の目的がそれぞれ違うので仕方無いですが、ローカル環境的には燃費が悪いです。こうしたMODを全部マージすれば、esp数が大幅に稼げます。

 

こんな具合にセッティング系を全部まとめてしまえば、esp1個で済みます。

マージしたGameーSettings

他にも、こまごました物(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が変わる以上、ニューゲーム以外では確実に発生します

例として、

それぞれ元のespが消失する為、設置済のソーラーパネルの消滅、持ってた筈のM9が無くなったりします。再度の設置や、コンソールからの際入手が必要。

 

可読性の低下

マージのやり過ぎで単一プラグインがあまりに多機能になると、トラブルが起きた際の切り分けが困難になります。自分でもよくわからないespに成りかねない、というお話です。

 

アップデートの煩雑化

マージ後にアップデートを適用するには、アップデート前のオブジェクトをマニュアルで全て削除し、新バージョンを追加マージすることになります。面倒です。

 

アンインストール問題

マージ後に部分的にアンインストールしたくなったら、これも手動で削除することになります。マージしたプラグイン自体をマスター指定したプラグインがある場合は、簡単に削除する訳にいかなくなる為、これまた面倒だったり。マスター指定は計画的に。

 

競合状態における強引なマージ

これは問題外で、競合を解消するまで保留すべきです。「競合」という形で不具合を確認できたレコードが、強引にマージしてしまうと「1つのプラグイン内でのバグ」と化してしまう為、不具合特定が極めて困難になる恐れがあります

 

マージのやり方

Description読むだけで判る位に簡単なので、詳細省略。スタンドアロン版は知らないですが、Merge Scriptの方は、

  1. 適切なフォルダにスクリプトをコピー
  2. FO4EditのApply Scriptから適用
  3. 必要な項目を設定(初回だけ)
  4. マージするプラグインを選択
  5. マージ後のファイル名を設定して実行

みたいな流れです。

 

ba2ファイルを含む場合は、

  • リネーム(ba2ファイルを持つMODが1個だけの場合)
  • ルーズフォルダに展開
  • ba2ファイルもマージ

のいずれかで対処。

Merge Scriptではba2ファイルのマージはできないので、一度展開してからCKで再圧縮する等で対応してください。

 

マージ後の確認事項

バッグMODのSurvivalist Go-Bags(SS内[08])と、ドッグミート用ボディアーマーK-9 Harness(同[09])を、Bag-Merged.esp(同[0A])としてマージしました。これを例に。

バッグMODのマージ

 

Form IDの確認

[09]と[0A]が太字(変更済)になってます。

[0A]は作成したマージファイルなので当然太字。ですが [09]も太字なことに注目です。

これは、マージによって[09]内オブジェクトのForm IDが変更されたことを意味します

マージ前の[09]のArmor Addon。xx000803xx000805が有りますが・・・

K-9のFormID

 

[08]で既に使われてます。マージで上位2桁は同じになる以上、変更が必要です。

AAのFormID重複

ArmorのFormID重複

 

マージすると、1C171C18に変更されました。

変更されたFormID

 

今回はどちらのForm IDが変わっても支障無いですが、既存のマージespに追加マージする際には注意が必要です。既存のマージesp側のForm IDが変わると、セーブデータ内のオブジェクト(アイテムや景観等)が消滅する可能性があります

例えばマージespの服を着てたとして、そのArmorのForm IDが変わるとマッパになります。どのプラグインのForm IDを優先するか、確認する必要があります。設定あったかもですが、デフォルトではロードオーダーの若いプラグインが優先されると思います。

 

何をマージしたか忘れた時は?

File Headerに、マージ元のプラグイン名が残されています。

マージしたプラグインのリスト

 

もう1つ。マージの都度、Form Listにマージした全オブジェクトのリストが作成されます。

マージしたオブジェクトのFormList

これは追加マージの度にどんどん増えていくので、古い物は削除しても良いでしょう。もし管理上の不安が残るようなら、残しておくのも手かと。

 

(おまけ)ba2ファイルの圧縮

僕が知らないだけで便利なツール有るかもですが、とりあえずCKでの作成手順だけメモっておきます。

例のバッグMOD(Go-BagsとK-9)は共にba2ファイルを使ってるので、まずはこれをルーズフォルダに展開。それをba2に再圧縮します。

CKのトップメニュー、File>Create Archiveを選択するだけ。

CKでのba2圧縮

もしCKが落ちることがあれば(理由判らないですが何度か経験が)、中身がカラっぽのespを作成し、そこから作業すれば問題無く圧縮できます。起動直後にsaveすれば、カラのesp作れます。

 

あとは自動で読み込まれるか、もしくは下のSSの窓に、ドラッグ&ドロップでファイル指定。

圧縮ファイルのリスト

選択し終わったらPack Filesを実行、適切にファイル名をつければ圧縮完了!

完成したba2ファイル

 

(おまけ2)esl化によるプラグイン数の節約

手段は違えと、マージと同じ目的で活用できます。条件次第ですが、最大4096個のプラグインをロード可能なので!

実の所eslは、

ゲーム上で行う公式マージ

と言っても差し支えない構造をしています。具体的には、全てのeslはFExxxxxxにon memoryでマージされます。マージesp作るより管理が楽なので、こっちメインにしようかなと検討中。

Skyrimブログの方でeslの解説していますので、よかったらどうぞ。

skmod.hatenablog.com

 

続きます。

f4mod.hatenablog.com 

 

Copyright © 2015 Fallout Hakoniwa DIY All rights reserved .

S.kutsumiya@gmail.com