メモログ

Fallout4 Mod の swf ファイルを VR 向けに編集する(Vault Girl Mod など)

keyshenay
2020/07/26 23:49


Fallout4 Mod の swf ファイルを VR 向けに編集する(Vault Girl Mod など)

大抵の mod は通常版でもVR版でも動きますが、VR だとうまく動かなかったり最悪 CTD を起こすことがあります。

Park Tree に関わる levelupmenu.swf もそうしたファイルで、このファイルを含む Mod を適応させた状態でパークツリーを開くと落ちます。

今回このファイルを VR 向けに編集することに成功したのでその方法を書きます。恐らく他の swfファイルでも応用できるのではないかと思います。

 

流れ

  1. mod の swf ファイルから必要な要素をコピーし、VR の swf ファイルに移植
  2. コピーしてきた要素と入れ替えたい要素の ID を入れ替え
  3. XML 形式でエクスポートしエディタで切り貼りしてコピーしてきた要素の順番を並び替える
  4. SWF 形式に戻す

 

準備

とりあえず、かわいいボルトボーイをかわいいボルトガールに置き換える 「Vault Girl Mod」 に含まれる "levelupmenu.swf" を例にします。

まず Vault Girl Mod をインストールします。次に CTD したり pip-boy が操作できなくなる原因ファイルである "levelupmenu.swf" "pipboy_datapage.swf" "pipboy_invpage.swf" を移動させます。

pip-boy skillpage など、「parktree, pip-boy datapage, pip-boy invpage」以外の要素変更は適応されているので、このままVRで遊ぶのもありです。(あんまり進めていないのでどこかで何らかの不具合が起こるかもしれませんが…)

落ちる原因は VR版だと定義されているはずのボタン操作が定義されていないから、らしいです。 ボタン操作を定義しているスクリプトは難しくてよく分からないので、アニメーションを移植するという方向で今回やってみました。

次はFallout 4 VRData 内 "Fallout4_VR - Shaders.ba2" から基盤となる "levelupmenu.swf" を取り出しましょう。

必要ツール:BSA Browser

 

SWF ファイル編集

2ファイルを同時に開く

ではいよいよ FFdec で swf ファイルの編集です。以下のリンクから今すぐ入手。

JPEXS Free Flash Decompiler

 

File タブの "Open…" やドラッグアンドドロップで編集する2ファイルを開きます。今回は便宜的に基準 swf を "levelupmenuvr.swf" mod swf を "levelupmenugirl.swf" とリネームしています。

ファイルを開くときに "fonts_en.swf" を要求されますが、ロードしても "texts" の下に "fonts" が増えるだけなので多分どうでもいいです。 同じディレクトリにあれば "Yes" で勝手にロードしてくれますので、その場合ロードしてもしなくても手間は同じです。

Settings タブのチェック欄は… よく分からないので適当です。多分どうでもいいです。

あと、Change Language のところに日本国国旗がありますが日本語対応はしていません。悲しいです。

Copy tag with dependencies to の前におまじないをしよう

ここからアニメーション(Sprite)の移植(copy tag with dependencies to)を進めていくのですが、一度適当な Sprite を "copy tag to" しておかないと、移植先の Sprite をプレビューした途端 SWF preview ウィンドウが暗転して、再起動してもそれが続くという謎症状が出てしまいます。vrswf → girslswf の場合は発生しないのですが。まあこのおまじないは一度すれば良いので負担にはなりません。

さて "copy tag with dependencies to" で素材(Shape, Sprite)ごと vrswf に Sprite がコピーされ、重複するIDもリネームされました。重複していなくてもリネームされますが。謎。 次は移植された Sprite を選択し、入れ替えたい Sprite と ID を交換 (Replace with other character tag) しましょう。画像だと ID 2069 です。1つの Sprite を移植すると依存関係にある複数の Sprite がコピーされますが、目当ての Sprite は一番下に来ます。複数同時に選択して移植することも可能です。

タグの入れ替え

 

girlswfでは S.P.E.C.I.A.L. ツリー2列目まで実装されているので上記を14回繰り返すことになります。(自分はまだ途中です。楽な方法があれば今からでも教えてください)

Girl ID種類VR ID
1056I21064
1173C21169
1449E21446
1835L21805
1877A21820
1897P21847
1917S21859
1931L1870
1951A1877
1963I1891
1992C1900
2005E1907
2018P1915
2041S1923

移植する Sprite と入れ替える Sprite は上記表を参考にしてください。手打ちなので間違っていたらコメントください。

かぶさってる四角は無視せよ。sprite 内の levelupmenu などでも確認可能。

vrswf の frame 1 を見てうまく入れ替えられているか確認しましょう。上記画像だと Strong だけ入れ替えできています。

入れ替えた終わった Sprite は "Remove with dependencies" で削除してもいいと思います。

"frames" を見ると入れ替えた Sprite 以外は白い四角で覆われています。 各 Sprite rame 1 の "PlaceObject3 ~(border)" でのパラメータ "placeFlagHasColorTransform : boolean = " が  vrswf では falseであり、girlswf では true であることが原因です。これはどっちでも変わりはないのでほっときます。

 

並べ替え

※追記:export→編集→importの中で、動かしていない要素が適切な位置に移動していたので、下記並べ替えを省いて「export→import」でも大丈夫そうです。ダメでした。しかしほぼ全てのspriteに依存しているlevelupmenuのspriteを最下部に動かすという方法なら要素を一つ動かすだけで大丈夫そうです。(面倒だからもう試さない)

 

次は File タブ Export 欄 "Export SWF XML" で swf ファイルを xml 形式に変換します。

その xml ファイルを適当なエディターで編集します。自分は VS Code を使いました。

FFdec で表示されるのとほぼ同じでわかりやすい

入れ替えた spriteID を検索し、その Spriteを相応しい場所に移します。

FFdec で見ると分かるように83フレーム定義しているので 1 Sprite はちょっと長いです。 <item frameCount="83" hasEndTag="true" spriteId="xxxx" type="DefineSpriteTag"> ~ </item>までです。

Strong の例ですと spriteID は 1923 ですので元あった場所である 1917 の次に持っていきます。

画像はイメージです

VS Code に拡張機能(XML Tools)入れたのに「アウトライン情報は提供できません」などと言われてしまったのでツリービューが表示できません。代わりに FFdec で Sprite 移動のイメージを掴んでください。自分の環境では 1917 1923 2069 の順番で問題ないです。

また、Shape の方は一切触ってないですが、こちらは入れ替えが必要ないようです。

VS Code も XML も触ったのは今回がほぼ初めてなので拡張機能が動作しない原因がソフト側かファイル側か分かりません。情報提供求む。

コードの切り貼りが終わったら xml ファイルを swf に戻します。適当な swf ファイルを FFDec で開き、File タブの Import 欄 "Import SWF XML" で編集した xml ファイルを開いてください。

マージされたりするのではなく中身が入れ替わるので何の swf ファイルを開いていても同じです。

"DefineSprite(xxxx:Perkclipxxxx)"が想定通りの順番であることを確認したら、 "Save as…" で"levelupmenu.swf" と名前を付けて保存し、ゲームフォルダの Interface フォルダに入れるなり、お使いの Mod マネージャーに適した方法で配置して下さい。

並べ替えをしないとパークツリーを開いても落ちませんが、パーク説明文だけしか表示されません。

 

最後に

直接の Mod 作者は更新を放棄しておられますが、ソースファイルや編集チュートリアルを公開しておられるので、パークツリーmod に興味がある方は参考にして、作ってください。お願いします。

Vault Girl Park Tree

 

次回予告

アニメーションと効果音のタイミングがずれているので直したいですが大変そうです。

pip-boy invpage とかはこれからやりますが、上記で対応できないことがあり、解決できたら続編として書くかもしれません。

あと VR でのボタン操作が編集できれば、取引画面やインベントリで、スワイプで意図せずタブを切り替えてしまう問題を解決したいですね。こちらは望み薄ですが…

  • 60
  • 0

この投稿に最初のコメントをしましょう!

keyshenayさんのおすすめメモログ!


スポンサーリンク
PR
この投稿に最初のコメントをしましょう!

モナゲして応援しよう!

Loginすることで、モナゲが可能になります。