Fallout箱庭DIY

「箱庭DIY」Fallout分室

【Fallout4】FO4Editによる互換パッチの作成はじめ

スポンサーリンク


競合対策

ローカル環境に依存した競合対策として、互換パッチの作成が欠かせません。必要性と競合の起こる原因を見ながら、超簡単なパッチを作ります。

パッチの作成をしたこと無い人も対象にしていますが、最小限のFO4Editの使い方は知っている前提で進めます。

知らない人は、以下の記事の内容だけ押さえておいてください。

f4mod.hatenablog.com

なんで互換パッチが必要?

具体的なパッチ作成の前に、プラグインの基本ルールと、それに伴うパッチを作らなくてはいけない理由。

 

プラグインによるマスターファイルの上書きルール

Fallout4.esmのAmmunition(Ammo 弾薬)カテゴリの、プラズマカートリッジです。サバイバルモードで有効になる弾薬重量も設定されています。

サバイバルモード対応のFallout4.esm

 

ここにBetter Item Sorting英語版(以下BIS)のesp版を導入します。

大抵の人が知ってるであろう有名MODだと思います。アイテムをカテゴリ別に分類してソートしてくれまる便利MODです。構造はシンプルで、武器やアーマー以外の全てのアイテム名を、カテゴリの"タグ"が付いた名前に書換えます。

BISによるタグ付きネーム

今見ているプラズマカートリッジは"弾薬"なので、そのようにタグの付いた名前に変更されています。

 

プラグインによる上書き更新のルール

FO4Editの使い方記事でも書いてますが、MODによる改変というのは、ロードオーダー上位が下位のレコードを上書きすることで成立します。なのでこの場合は、Fallout4.esmのプラズマカートリッジのレコードをBISのレコードで上書きすることで、弾薬名が"タグ付き"に変更されます。

プラグインの上書きルール

ここでQuestion。あまりプラグインに詳しくない人は、是非試してみて欲しいです。

実はこのesp版、現在(16年9月)は1つ問題が発生しています。BISが悪いのではなく、Fallout4.esmのバージョンが上がったことで起きてしまったトラブルです。

上のSSで既に見えていますが、何処かわかりますでしょうか?

ヒントは、「全て上書きされてしまう」ことで発生する問題です。見比べてみると気付くと思います。

では答を。

16年9月現在、このMODはサバイバルモード適用以前のFallout4.espから作られている影響により、弾薬重量のレコードが「空欄状態」に上書きされてしまいます

空欄で上書きされる不具合

0ならまだしも「空欄」の為、現在のバージョンにおいてどんなレコードが読まれてしまうか不安な所です。けれども動作上は、サバイバルモードで弾薬重量が加算されないだけでした。つまり0と同じ扱いで、乱数的に重量が増加することは無さそうです。

 

バージョンによる差分の影響で、こういう「上書き」によるトラブルは、他でも発生する可能性があります。例えばHUD用Effectに関連するレコードを古いベースで上書きしたら、HUD使用時にクエストNPCから敵対されるかもしれません。

f4mod.hatenablog.com

 

MOD同士の上書き競合

MOD間の競合に関しても、仕組みは同じです。自分の環境には好ましくないレコードに書き変わることが、よくあります。ロードオーダーだけの管理だとほぼ確実に発生していますが、影響度の小さいものは気づかないことが多いです。さっきの例でも「サバイバルモードで弾薬に重量付くなんて知らなかった!」という場合には、気づかずスルーする可能性もあるでしょう。

例えばBetter Item SortingArmorsmith Extendedを併用すると、

  • アイテム名のタグが消える(STRINGS版、esp版)
  • 服(外套系)とアーマーの併用ができなくなる(esp版)
  • Ballistic Weaveの追加が自由にできなくなる(esp版)

等の問題が起きます。上記のように、変更して欲しくないレコードまで書き換えられてしまう影響です。

けれども、あまり使わないアイテムのタグが消えていても気づかないかも知れません。趣味上着ることの無い服に至っては、Ballistic Weaveが付かないことに気づいたとしても、困らないのでそのまま放置になるでしょう(不安定になる等の問題にはならないです)。

 

どうして必要無いレコードまで書き換える?

さて、ここで疑問に思った人もいるかもしれません。

 

どうしてBetter Item Sortingは名前”だけ”を変更してくれない?

 

項目細分化の限界

名前だけを変更して重量を触らなければ、そもそもこんな問題起こらないのは??

オブジェクトとレコード

感覚的にはもっともな話なのですが、残念ながらこれはオブジェクトの構造上不可能となっています。

 

プラズマカートリッジは、FormID0001DBB7のオブジェクトです。

プラズマカートリッジのオブジェクト

レコードの書き換えというのは、このオブジェクト単位で行わなければなりません。つまり何か1つでもレコードを変更したいと思ったら、ひとつのオブジェクトをまるごと全部書換える必要があります。部分的なレコード変更ができないのです。

STRINGS変更は例外で、文字列だけを変更することができます。ただし大抵はFallout4.esmのSTRINGSを置き換える為、ロードオーダーは最弱になります。バニラアイテムの改変MOD等でかぶったら、確実に潰されます。

 

ちょっと例を変えて、コンバットアーマーの防御力アップ(01)と、軽量化(02)をするプラグインが同時にロードされた状態を見ます。

双方が変更したいレコード自体は、それぞれ別の箇所です(マスクの掛かっていないレコードのみ)。しかし"コンバットアーマー"というオブジェクトを丸ごと全部書き換えなければならない為、実際にはこの2つは競合してしまいます。

コンバットアーマーの競合

この例だと、01の方が全面的に潰されることになります。

 

目的外のレコードの埋め方

プラズマカートリッジに戻ります。

BISの主目的は「名前を”タグ付き”に変更する」ことだけなのですが、名前以外の全てのレコードも一緒に書き込まなければなりません。もしカラッポだったら、それは削除を意味します。まさに弾薬レコードがそうなってます。

BISの名前以外のレコード対処

興味対象ではない、名前以外のレコードは何を書く?ということになるのですが・・・これは必然的に、マスターファイルのレコードで埋めておくという以外の選択肢が有りません。つまりこの場合は、Fallout4.esmのレコードで埋めることになります。でないと他のレコードも変更するMODになってしまいます。

 

マスターファイル(マスター指定)に関しては別記事にて。

f4mod.hatenablog.com

したがってBISは、

 

名前以外の項目はMOD作成当時のFallout4.esmのレコードを書き込む

 

という構造になる訳です。

他のMODに関しても勿論同じで、必要な部分以外はマスターファイルのレコードで埋めるというスタイルです。

以上の理由から、同一IDのオブジェクトを変更するMODが複数存在する場合は、例え変更対象のレコードが別であっても、競合状態になります。

BISは多くのアイテムを"タグ付き"に変更する為、武器やアーマー以外のあらゆるアイテムに関して「1度目の上書き変更」を行っています(これはSTRINGS版も同じ)。したがって、ここに別のMODで2度目の変更が加わった時点で競合が確定します。武器やアーマー以外のバニラアイテムを変更するMODを入れたら、ほぼ確定です。タグの消えてるアイテムの1個や2個、心当たりがあるんじゃないでしょうか。

とはいえ、esp版のBISをロードオーダー後方(優先度高め)にするのは危険です。アイテム系MODによる変更を全て潰し、BISが名前以外の全てをバニラに書き戻します

 

互換パッチによる最終レコードの更新

さて、いよいよパッチです。今回のケースは互換パッチというよりバグフィクスに近いですが、競合不具合を修正するという意味では全く同じ構造になります。

この状況を修正するには、

 

新規espをロードオーダー上位に作り、両立するレコードに書き直す

 

しかありません。これが互換パッチの基本的な役割です。

プラズマカートリッジの例では、

  • BISによるタグ付きの名前
  • 弾薬の重量
  • 他はFallout4.esmのまま

このようなレコードで最終的に上書きすればOKです。

patch.espを新設しました。BISによって空いてしまった弾薬重量の穴を塞ぎつつ、名前はBISと同じにしてあります。

esp版BISの修正パッチ

FO4Editの使い方記事に書いた通り、プラズマカートリッジのオブジェクトである0001DBB7Copy as override intoを使って新規espを作っています。BISをから作って重量を変更しても、Fallout4.esmから作って名前を変更しても、どちらでも同じです。BIS準拠の名前と弾薬重量の両立が目的です

もっとも次に更新されれば、確実にこの穴は塞がる筈なので(今のFallout4.esmをベースに作る筈)、こういう場合は互換パッチではなく、直接書き込んでしまってもOKだと思います。

名前はただの「文字列」なので、BISをマスター指定することなくパッチを作ることができます。

以上で終了です。

 

あとは実践編。

f4mod.hatenablog.com

f4mod.hatenablog.com

 

Copyright © 2015 Fallout Hakoniwa DIY All rights reserved .

S.kutsumiya@gmail.com