Fallout箱庭DIY

「箱庭DIY」Fallout分室

【Fallout4】マージしやすいMODとマージを避けた方がいいMODの判別方法



スポンサーリンク

続き物です。

前回はマージにおける基本的な注意事項を書きました。あまり気軽にやりすぎると危ないよ、って話です。

今回は実際のMODを交え、具体的にマージしやすいMODと注意した方がいいMOD、やめたほうがいいMODの例を挙げていきます。結構長いです。

前回はこちら。
f4mod.hatenablog.com

どんなMODがマージしやすい?

基本スタンスは、『ごく小規模な追加or変更をしているMODをまとめる』のが、比較的安全かつ高効率だと思います。

例えば以下のようなMOD。

  • 少数追加の武器、防具、アイテムMOD
  • 拠点クラフトの少数追加系MOD
  • Game Setting変更MOD


数が増えやすい割に構造を確認しやすいので、比較的楽にマージ可能です。

特に装備系であれは、セル配置やLeveled Listの追加が無く、入手方法がコンソールやクラフトのみのMODはまず安全です(競合リスクが無い)。とはいえ絶対ではないので、必ず構造確認してからマージしてください。


反面、

  • バニラの武器、防具、アイテム改変MOD
  • バランス調整(PerkやHP等)、オーバーホール系MOD
  • セル改変系MOD


といった、バニラ改変がメインのMODは競合しやすいです。事前に競合潰してからマージしないと、後でリカバリ効かなくなる恐れがあります。

以下、構造確認の例を挙げていきます。



 

問題なくマージできるMOD

.38ハンドガンMOD、The M9 Standalone Pistolを例に。

esp内の全てのオブジェクトが新規作成(バニラへの上書きが無い、背景白)なので、競合要素が皆無。コンソール取得のみな為、セルやLeveled List変更も無いです。
M9のesp概要


メッシュ、テクスチャ、マテリアルもルーズファイルなので、マージ後もそのまま使えます。
M9のルーズファイル

こうした競合要因の無いMOD同士であれば、いくつマージしても問題無いです。単体リリースの武器MODが増えてきたら、纏めてしまうとesp数稼げます。
但しマージ後にプラグイン名とForm IDが変わると、セーブデータ内のM9は消失します。コンソールで要再取得。



組み合わせ次第ではマージ可能なMOD

ハッキングやロックピック等を簡単にするEasier Hacking with Options - Easy Lockpick - Guaranteed Pickpocketと、パワーアーマーのフュージョンコアの消費量を調整するConfigurable Power Armor Fusion Core Drainを例に。

いずれもゲーム設定を変更するMODです。ハッキング簡易化esp、ロックピック簡易化esp、フュージョンコア消費量5%のespのあわせて3つのマージを考えます。
競合の無い状態

バニラのレコードを変更している為、いずれも組み合わせ次第では競合が発生します。が、この場合はそれぞれ変更箇所が異なる為、競合ありません。3つ合わせてマージしても平気です。

※一番上のiHackingMaxWordsは、背景白の新規オブジェクトじゃないの?と思った人は、最後のおまけコーナーを是非(マージとは関係無い話です)。
 

こちらは対物ライフルMODのM82a3 AMR。バニラのLeveled ListとNPCを変更している為、場合によっては競合します。
僅かに競合の可能性のあるesp

装備系MODはバニラのレコードを多少変更していることが多いです(セル配置、特定NPCの装備変更、Leveled List変更等)。マージ対象と競合する場合は、競合解消(Leveled List統合や変更箇所の共存)してからマージしてください。



マージに注意が必要なMOD

マージ可能ですが、単にマージしただけではトラブルになることもあります。要事前確認。

プラグインの競合対策

先程のフュージョンコア調整(消費量5%)MODと、ジェットパックのフュージョンコア消費を無くすReal working jet packのマージを考えます。

併用するからには、

  • フュージョンコアはバニラの5%しか消費しない
  • ジェットパックによる消費無し


という環境を期待する筈です。この前提で見ていきます。

マージ前のespを確認すると、赤字の所、2つ競合しています
競合状態のesp


ジェットパックの消費は5%(Value=3.2)でなく、0%(Value=0)にしたいので、このロードオーダーは間違いです。RealJetpackが後でないと、ジェットパックの消費が0になりません。
ロードオーダーの設定ミス
 

この状態でマージすると、RealJetpackのレコードが潰されたespが作成されます。これではマージの意味がありません。
マージの失敗

競合対策してからマージしないと後々面倒です。マージ前のプラグインが残っている間は比較検討できますが、マージプラグインのみでは何が悪いのか発見しづらくなります

 

ba2アーカイブファイルの対処

前回に試した、バッグMODのSurvivalist Go-Bagsと、ドッグミートのボディアーマーを追加するK-9 Harnessのマージを再び。

プラグインには競合要因が無く、問題無くマージ可能です。ですがどちらのMODもba2のアーカイブファイルを使っている為、このままではマージ後にba2をロードすることができません
ba2ファイル

対処方法は2種類。

  • 元のMODのba2を全てルーズフォルダに展開
  • 新たなba2ファイルに再圧縮


後の追加を考えるとルーズフォルダに置いておく方が楽ですが、ファイル管理の観点ではba2の方が楽ですかね。お好みでどうぞ。

ba2の再圧縮に関しては、僕が知らないだけで便利なツールあるかもですが・・・。少なくともルーズフォルダ展開後にCKで再圧縮すれば、作成可能です。前回の末尾に手順メモ載ってます。
ba2ファイルの再圧縮


 

マージを見送った方が良いMOD

マージによりトラブルや面倒が想定されるタイプです。注意や手間をかければ乗り切れる物から、絶対コケる物まで。

マスター指定対象のプラグイン

複数のMODが統合された結果、Form IDやプラグイン名が変わります。マスター指定されたプラグイン(親)に変更が発生すると、参照利用する側のプラグイン(子)が読み込みに失敗し、不具合になります

Armorsmith Extended対応のバッグMODを例に。

AEで新設された所持重量増加モジュールを使う為、AEをマスター指定し、AEのKeyword「xx000E3D」を設定してます。
マスター指定対象のKeyword
 

この状況下で、AEに対して自作のヘルメットMODをマージしたくなりました。
FormIDの重複
ヘルメットのForm IDはxx000E3D。別espなら問題無いですが、マージすることで上位2桁が同一になりますので・・・AEのKeywordと重複します


マージ後にバッグMODのKeywordを再度見てみると・・・Keywordがヘルメットにすり替わってしまいました
FormID変動による参照エラー

マージにより、参照先のForm IDのオブジェクトが変わってしまったことが原因です。勿論これでは想定通りに動きません。

これはかなり極端な例ですけども・・・マスター指定対象はマージしない方が安全です。


ハードコーディングを含むスクリプトのMOD

何かしらのMODのオプションとして、

必須ではないけれど、導入されてれば自動的に使ってくれる

という関係のMODがあれば、このタイプの可能性があります。


例えばこれ、Four Play(エロMOD)のプラグイン『Kidnapped』のスクリプト”FPK_Trigger.psc”の一部です。管理用MOD『Vinfamy's Control Panel』のオブジェクトをForm ID決め打ちで探すので、マージしてForm IDが変わってしまうと、トラブルが想定されます

Function UpdateGlobals()
	FPK_Global_Chance.setValue((Game.GetFormFromFile(0x0100174D, "Vinfamy_CP.esp") as GlobalVariable).getValue())
	FPK_Global_Night.setValue((Game.GetFormFromFile(0x0100174E, "Vinfamy_CP.esp") as GlobalVariable).getValue())
	FPK_Global_Friendly.setValue((Game.GetFormFromFile(0x0100174F, "Vinfamy_CP.esp") as GlobalVariable).getValue())
	FPK_Global_City.setValue((Game.GetFormFromFile(0x01001750, "Vinfamy_CP.esp") as GlobalVariable).getValue())
	FPK_Global_Settlement.setValue((Game.GetFormFromFile(0x01001751, "Vinfamy_CP.esp") as GlobalVariable).getValue())
	FPK_Global_Frequency.setValue((Game.GetFormFromFile(0x01001752, "Vinfamy_CP.esp") as GlobalVariable).getValue())
	FPK_Global_Notif.setValue((Game.GetFormFromFile(0x01001753, "Vinfamy_CP.esp") as GlobalVariable).getValue())
EndFunction 

※念の為書いておきますが、ハードコーディングを非難している訳ではないです。そもそも”GetFormFromFile”はForm IDを直接指定するので、どのMODのスクリプトも同じだと思います。


バージョンアップが予想されるMOD

SSは、拠点クラフト系のMODをいくつかマージしたespです。電線管同士を壁を貫通して接続するMOD、Wall Pass-Through Power Conduitsがマージされています。
オブジェクトの切り出し

元のMODのバージョンアップをマージespに反映させるには、

  1. マージesp内の電線管のオブジェクトを全て削除
  2. 新バージョンを追加マージ
  3. Form IDを旧バージョンに合わせる


といった作業が必要で、そこそこ面倒。

削除せずに新バージョンを追加マージしちゃうと、別MODとして新旧共に残ります。Form IDを合わせなかった際は、クラフト済の電線管が拠点から消失します

こういった手間からミスも考えられる為、バージョンアップが予想されるMODはマージしない方が楽かもです。

Constructible Object(生産レシピ)とか合わせなくても平気ですが、直接ゲーム内に現れるオブジェクト(コンソールのadditemやplaceatmeで扱えるような物)は、Form IDの変動で消失します。


継続利用が確定してないMOD

マージ後に一部アンインストールしたくなったら、手動で不要なオブジェクトを削除することになります。MOD単体からの再マージで済めば良いですが、何かしらレコード変更後だと、そうもいきません。

面倒な上に人的ミスも考慮すると、あまりお勧めしません。


大規模MOD同士のマージ

1つのプラグインにあまりの多くの機能を持たせてしまうと、トラブル発生時の原因特定が困難になります。あまり過度な巨大化は、運用上避けた方が良いと思います。

 

セーブデータへの悪影響を考慮

前述の通りForm IDやプラグイン名が変わる為、セーブデータ的には元のMODをアンインストールして同機能の別MODをインストールすることと同義になります。

つまりゲーム途中でマージすると、

  • 所持したアイテムの消失
  • 拠点に配置したオブジェクトの消失
  • NPCやクエストの初期化


等の問題が想定されます。MODで追加された装備が手元から無くなるとか、拠点に建てた家から特定の壁が無くなったり。クラフトし直したりコンソールからの入手、クエストフラグを手動で立てる等の作業が必要になることも。リカバリ可能か検討した上で、マージした方がいいと思います。



 

(おまけ)Game Settingカテゴリの取り扱いについて

序盤の、ゲーム設定を変更する3つのMODをマージした際の話です。

一番上のiHackingMaxWordsは、背景白で一見すると新規オブジェクトに見えますが・・・元々存在するGame Settingであり、バニラ改変になります
一見新規オブジェクトに見えるGameSetting


Fallout4.esm上に該当するForm IDは存在しないのですが、Editor IDによる識別で上書き可能となってます(プラグインの概念からするとハードコーディングぽく見えるけど、実際は書換え可能、みたいな感じ?)。
 

なので同じGame Settingを変更するプラグインが複数有れば、異なるForm ID同士で競合状態になります
異なるFormID同士での競合


FO4Editで新たなGame Settingを見つけるのは無理ですが、CKならGameplay>settingsタブから探せます。
CKのGameSetting項目

  
以上、おしまいです!

 

Copyright © 2015 Fallout Hakoniwa DIY All rights reserved .

S.kutsumiya@gmail.com