Overview
ユニット追加MOD作成時にテラーガイストへの騎乗など、バニラではロードのみのために作成されたアニメーションを一般ユニットに適用した際にPortholeの3Dアニメーションが適切に表示されない現象を修正します。humanoid01のフレーム(人間男とスケルトンなど)のキャラ用です。人間女、エルフやリザードマンなどの別フレームのキャラには今のところ適用できません。
目的
MODで新規ユニットを追加する際にロード用のアニメーションを一般ユニットに適用すると、
Portholeのアニメーションがおかしくなってしまいます。
この現象を修正します。
MODとして公開しようと思いましたが、Portholeのカメラ位置をうまく設定する必要もあるので、
ガイドとしてアップロードします。
.animファイルと、.animpackファイルをユーザ側から編集できるようになれば、
本ガイドの手順は必要ないのですが、今のところその方法がないようです。
本ガイドに記載した手順は、.animファイルと、.animpackファイルを編集せずとも
この問題を解決するための苦しまぎれの方法です。
騎乗ユニットのPortholeアニメがおかしくなる理由(予想)
Portholeのアニメはロード・ヒーローユニットと、一般ユニットで別のアニメーションが用意されているようです。
一般ユニットの場合は、騎乗している人間側のアニメと、
騎乗されているモンスターのアニメを合わせて表示していますが、
ロード・ヒーローは騎乗されているモンスターを表示せず、
立ちアニメを表示するようになっているようです。
一般ユニットのためのアニメーションは、
騎乗モンスターと一緒に表示してもうまく表示されるように、
表示位置が調整されているようです。
テラーガイストの騎乗アニメのように、ロードだけにしか用意されていない
アニメーションパターンは、一般ユニット用の騎乗モンスターと一緒に表示するためのアニメーションが用意されていません。
このようなロード用のアニメーションパターンをMODで一般ユニットに使用すると、
騎乗用に位置が調整されていないただの立ちアニメと、
騎乗モンスターのPorthole用アニメが同時に表示され、
人間と騎乗モンスターが重ねて表示されてしまう現象が起きていると思われます。
準備
Stirlingなどのバイナリエディタを使用できるようにしておきます。
手順1
Pack File Managerをつかって、
オリジナルのdata.packから、
dataanimationsbattlehumanoid01ridersnake01serpentporthole
の下にある、
hu1_sn1_sp_rider1_porthole_idle_01.anim
hu1_sn1_sp_rider1_porthole_affirmative_01.anim
を抽出します。
抽出後、下記の通りファイル名を変更します。
“hu1_sn1_sp_rider1_porthole_idle_01.anim”
-> ”hu1_un_porthole_idle_TR.anim”
“hu1_sn1_sp_rider1_porthole_affirmative_01.anim”
-> ”hu1_un_porthole_affirmative_TR.anim”
実は変更するファイル名は何でも構わないのですが、
ファイル名の文字数だけは上記のものと同じにしておく必要があります。
手順2
手順1と同じように、Pack File Managerをつかって、
オリジナルのdata.packから、
dataanimationsanimation_tables
の下にある、
animation_tables.animpack
を抽出します。
手順3
手順2で抽出したファイル“animation_tables.animpack”をバイナリエディタで開き、
目当てのアニメーションパターンのidで検索します。
今回は例として、vampire coastのルーサーのテラーガイスト騎乗用アニメパターンの
id”hu1_cst_luthor_bi2_terrorgheist_wb_cutlass_and_pistol”
で検索します。
文字列をShift JISで16進数に変換した値を検索します。
何か所かヒットしますが、
hu1_cst_luthor_bi2_terrorgheist_wb_cutlass_and_pistol.frg
となっている箇所が目当ての箇所です。
手順4
手順3で見つけたanimation_tables.animpack内のアドレスから
下って直近の
”05 00 00 00 05 00 00 00”という数値になっている箇所を探します。
手順5
手順4で見つけたanimation_tables.animpack内アドレスのすぐ下に、
animationsbattlehumanoid01unarmedportholehu1_un_porthole_idle_01.anim
とshift jisコードの数値で表されれている箇所があります。
ここの、
“hu1_un_porthole_idle_01.anim”
の部分を、手順1で抽出してリネームした、
“hu1_un_porthole_idle_TR.anim”
にバイナリエディタ上から、shift jisコードの数値で直接変更します。
ここで、animation_tables.animpackの全体のファイルサイズが
変わってしまうと、読み込まれないようです。
手順1で、ファイル名の長さを決めたのはこのためです。
また、この書き換えをバイナリエディタではなく、
メモ帳などのテキストエディタで行うと、バイナリの情報が壊れてしまうため、
バイナリエディタで書き換えます。
書き換えたアドレスのすぐ下に、
hu1_un_porthole_affirmative_01.anim
とshift jisコードの数値で表されれている箇所がありますので、
同じように、
手順1で抽出してリネームした、
hu1_un_porthole_affirmative_TR.anim
に書き換えます。
二か所書き換えが完了したら、
animation_tables.animpackの名前を変えずに保存します。
手順6
手順1で抽出、リネームした、
“hu1_un_porthole_idle_TR.anim”
“hu1_un_porthole_affirmative_TR.anim”
と
手順5で書き換えたanimation_tables.animpack
を自分の追加ユニットのデータが入った.packファイルに追加します。
手順1で追加したファイルの方は、
animationsbattlehumanoid01unarmedporthole
の下に、
手順5で書き換えたファイルの方は、
オリジナルと同じように
animationsanimation_tables
の下に追加します。
ここまでで何をやったかというと、
騎乗モンスターと3Dアニメの位置が重ならないように、
表示位置が高く、一般ユニットのporthole用のアニメも用意されている、
ネクロポリスナイトのアニメを拝借して、
読み込めるようにファイル名を変更したものを追加し、
読み込み先を変更しています。
最初に書いたように、.animpackと.animの編集ができそうにないための、
苦し紛れの策です。
このままだとうまく表示されないので、次の手順でportholeカメラの設定について、
説明します。
手順7
手順6で人間と騎乗モンスターのアニメは重ならなくなりましたが、
オリジナルのPortholeカメラではうまく映してくれるカメラ位置がないので、
追加します。
この設定がなければ、このガイドで書いた項目をMODとして公開しようと思いましたが、
ダウンロードした後、Portholeアニメも設定しないといけないとなると、
さすがに…ということでガイドを作成しました。
Portholeカメラの設定は、オリジナルのdata.packの
dbの下のunit_porthole_camera_settings_tables
で設定できます。
PackFileManagerを使って、
distance:2
phi:180
theta:205
taegetx:-0.65
targety:3.8
で設定すると、本ガイドで作成した、portholeアニメの人間側を
うまく映してくれるカメラ位置になります。
追加したPortholeカメラのidをmain_units_tablesの、
porthole_cameraに指定して完成です。
Portholeカメラの設定については、
解説したものが少なくとも日本語ではないみたいなので、
気が向いたら、またガイドに書いてみようかと思います。
その他の方法
私が考えた、この問題を解決するためのその他の方法を書いてみます。
①ロード扱いにする
units_custom_battle_permissions_tablesのgeneral_portraitoに
ファイルが設定されていれば、カスタムバトルでのみロード扱い、
バトルでは一般ユニット扱いになって、
ロード用のportholeアニメが表示されます。
ただし、キャンペーンでは使えないです。
②2Dに設定して自分で作る
一度スクリーンキャプチャをとって、
portholeアニメの設定を2Dにしてしまう方法で、
2Dでもよくて、画像編集の手間をかけてもよければ、
①の方法と違って、キャンペーンでも使えます。
私が作ったのはこんな感じです。
③カスタムバトルでのみロード扱いにして一度キャプチャした後、
2Dporthole用のキャプチャをとる
①と②の合わせわざでたぶん画像編集は②よりも簡単だと思います。
実はこの方法は私は試してないです。