Homeworld Remastered Collection

Homeworld Remastered Collection

LPF MOD v5.510
dengun  [developer] 19 Sep, 2024 @ 2:53am
MOD作成メモ
個人的な備忘録
< >
Showing 1-10 of 10 comments
dengun  [developer] 19 Sep, 2024 @ 2:55am 
効果音BGM相互変換メモ


要点
HW2で使用されるサウンド系SFX等はFDAファイルが使用されている。
FDAファイルの中身はAIFRファイルと呼ばれるものである。

AIFMファイルからWAVへの変換は可能である。
参考資料と必要なdllはフォルダBGM関係に収めてある。

またMP3とWAVからFDAへの変換も可能である。

使用ツールはHomeworld_Universe_Mod_Tools内にあるHW2 - hw2mt - Musicconvertor
hw2mt.exeから可能である。





参考資料抜粋






準備
 以下の物を用意します。

・PeneSound
・Winamp AIFx Plugin
・Winamp

 Winampは最新版でも大丈夫なはずです。
 なお、このページでは日本語化したWinamp v5.01を使用しています。

作業(1) データを抽出する
 Winampをインストールします。すでにWinampが入っているのなら、それを使って下さい。次にWinamp AIFx Plugin(In_Aif.dll)を"~\Winamp\Plugins"の中にコピーします。


 InputにRelic AIFx Decoder v0.5a (x86)が追加されているはずです。


 Winamp AIFx Pluginの導入を確認したら、PeneSoundを起動します。この時、comdlg32.ocxのエラーが出た場合はcomdlg32.ocxが含 まれているVisual Basicランタイムを入れて下さい(Visual Basicランタイムのバージョンは5.0でも6.0でも可だったはずです)。初回起動時はWinampのプログラムファイル(Winamp.exe)の 場所を指定することになります。


 指定を終え、PeneSoundが起動したら、メニューにあるPeneSoundのOpen Fileを開き、WXDファイルを選びます。
 HOMEWORLDは"~\Homeworld\HW_Music.wxd"です。
 HOMEWORLD CATACLYSMは"~\Cataclysm\Music4Cat.wxd"です。


 ファイルを選ぶと別の画面に切り替わります。


Analyseボタンを押すとWXDファイルの中にあるデータのリストが表示されます。


 Extract ALLボタンを押します。するとそのWXDファイルがあるディレクトリ内にサブディレクトリ(HW_Music.wxd.extracted)が作成され、ナンバリングされたAIFRファイルがその中に書き出されます。

作業(2) AIFRファイルをWAVEファイルに変換する
 Winampを起動します。PeneSoundはPlayList.m3uも書き出していますので、それから起動するのが手っ取り早いです。

 Winampのオプションから設定を開きます。


 プラグインの項目にあるOutputをNullsoft Disk Writer Plug-in~に切り替えます。これはサウンドデバイスにデータ出力するのではなくファイルとして書き出すためのプラグインです。そのプラグインの設定 を開き、出力フォルダの設定をしておきます。


 それが終わればあとはプレイボタンを押すだけですが、リピート再生になっていないことを確認して下さい。


 作業が終わったらプラグインを元の状態に戻しておくことをお忘れ無く。

HOMEWORLD2
準備
 以下の物を用意します。

BIGファイルの抽出ソフト
Winamp AIFx Plugin
Winamp

 Winampは最新版でも大丈夫なはずです。

作業 抽出したFDAファイルをWAVEファイルに変換する
 "~Homeworld2\Data\Music.big"からFDAファイルを抽出します。その方法は、ス クリプトのページにある「Homeworld2.bigからデータを抽出する」を参照して下さい(手抜き……)。ファイル名がMusic.bigに変わる だけです。
 抽出されるファイルの総容量は約270MBあります。

 FDAファイルとLUAファイルがありますが、LUAファイルはスクリプトファイルですので無視して下さい。肝心なのはFDAファイルのみです。
 拡張子がfdaとなっています。ですが、中身はAIFRファイルですから、拡張子をaifrに変えるだけです。拡張子を一括変換するソフトウェア、コマンドプロンプトのリネームコマンドを使ったバッチ、手作業などの方法で変えて下さい。

 あとはHOMEWORLD / HOMEWORLD CATACLYSM編にある「作業(2) AIFRファイルをWAVEファイルに変換する」を参照して下さい。

余談
AIFRファイルについて


 HOMEWORLDのTrack29(上)と某曲(下)の比較です。曲の長さに差はありますが(無音部分の長さが違うと思われます)、両方とも再生開始から1:30:00のところに合わせてあります。

 Track29は88kbps(1024bit/Block)のAIFRファイルのため、11kHz付近からばっさりと切られてしまっています。これはHOMEWORLD CATACLYSMも同様です。
 なお、HOMEWORLD2では176kbps(2048bit/Block)になっているようです。
dengun  [developer] 20 Sep, 2024 @ 4:41am 
HODファイル作成メモ

①モデリング
MarbleCLAYを使用しモデリングを開始する。
UVマップを作製しOBJファイルを生成する。
(噴出ジェット3Dモデルの調整も行う)

②UVマップの画像出力
3Dwingsを使用しUV画像を出力する。

③テクスチャの作成
Gimp等を使用し、実際のモデルと比較しながらテクスチャを作成する。
テクスチャは
デフォルト
グロー
チーム
ノーマル
の4種類を作成する。
最初期はDDSのDX1形式で作成。
のちにHOODRでTGA形式に差し替える。

④OBJファイルの変換
3Dwingsを使用しOBJファイルを再生成する。(MarbleCLAYのファイルは機能しないため)

⑤OLDHODファイルを作成する。
CFHodEd4.0.2.4を使用し、HODファイルを作成する。
作成時の注意点として、起点となるHODファイルを用意する(新規作成が機能しないため)
作業フォルダと作業ファイルは全て半角英数字にする。(エラーを吐くため)
作業時にはコマめに複数バックアップを取り、その度に再起動読み込み可能か確認する。
作成が終わったらHW2 - 4E534B - CFHodEd 3.2.0 Tangentを通して再度保存しなおす。
この作業でクラシック版のOLDHODファイルが完成する。

⑥HODORを使用しDEAファイルを生成する。
コマンドプロンプトを起動し、コードを入力してOLDHODファイルをDEAファイルに変換する。

⓻テクスチャをTGA形式に入れ替える。
生成されたTGAテクスチャは劣化してるため、元のテクスチャから新規でTGAファイルに差し替える。
全て垂直反転してるため、注意。
ノーマルとチーム用は正しく出力されてないので特に注意。
チーム用は統合から2種に分かれるようになっている。
この際に、倍数法則でのテクスチャサイズの変更は可能になっている。

⑧HOODRを使用し、現行HODファイルを作成する。
コマンドプロンプトを起動し、コードを入力してDEAファイルをHODファイルに変換する。
HODファイルの生成完了とテストを行う。
現行HODファイルは開けない行程不可逆なので、それ以前の行程のファイルは全て保存対象となる。
調整はOLDHODファイルからの行程を繰り返す。
dengun  [developer] 1 Oct, 2024 @ 2:59am 
イベントファイルの小ネタ
event2 = {
{ "anim", "Death" },
{ "animtime", "0" },
{ "marker", "Root" },
{ "fx", "lpf_dd_torpedo_hit_combo" },
{ "sound", "explosion/small/etg_explode_small_energy" },
{ "fx_scale", "1.1" },
{ "fx_transform", "None" },
}

{ "fx_transform", "None" },とは
イベントファイルは基本的に船やミサイルのHODモデルに指定されてる座標マーカーをしていしてFXを発動させるが
このコードを使うと発動時はマーカーから発動するものの、
発動後は発動時のゲーム画面での座標を維持する。
もしもモデルがゲームステージを高速で移動していても追従しないことを意味する。
これの有効な活用は、上のコードに示されているようにミサイルの死に使われる
ミサイルが目標を外すなどして自爆を選択する時、
高速で移動するミサイルに追従することなく画面上に固定された爆発を起こせるようになる。
dengun  [developer] 19 May @ 6:09am 
バージョン2.0を超えてからHODファイルは基本的に読み取り不可能になった。
これにより、V1.X台のHODファイルは入手困難になっていたが、
アプリケーションのバージョンを古い物を取得する方法があるのが分かった。
https://steamhost.cn/steamcommunity_com/app/244160/discussions/0/3211505894104067340/?utm_source=chatgpt.com
実際にこの方法で古いバージョンのファイルを入手した。
bigファイルは暗号化されているので、一旦「bigDecrypter_1.2a」を通してから「HW2 - unfBig 1.4.1」でデコンパイルした。
これにより、再びHODファイルの参照が可能になった。

新しいユニットの作成に当たり、忘れていた事、過去に断念していた事について書いておく。
リペア能力やサルベージ能力(HW2で使用されているもの)を制御する座標系はhgn_resourcecollectorとその他で異なる。
厳密にいうと、hgn_resourcecollectorのみがHODファイルに左右されない独自の座標系を持っている可能性がある。

vgr_resourcecollectorではリペア、サルベージ共に特別な座標設定がされている。
もしも、これが存在しない場合、自動的にユニット座標の中心が適応される仕組み。

リペア座標系
LatchOrientation→LatchOrientationHeading、LatchOrientationUp、LatchOrientationLeft
サルベージ座標系
SalvageOrientation→SalvageOrientationHeading、SalvageOrientationLeft、SalvageOrientationUp

かなり複雑な動きをするので要注意。

ちなみに資源収集の積み下ろしを制御する座標系はSalvagePoint1で定義されている。
dengun  [developer] 19 May @ 7:02am 
MADファイルの破損?
HODORを通して生成したアニメーションが正常に動作しない事態が発生中。
基本的にMADファイルはオリジナルのものを使用するのが良いかもしれない。
dengun  [developer] 19 May @ 7:39am 
残骸サルベージと採集能力は基本的にセット。
採集能力が無い設定だとサルベージは機能しない。
dengun  [developer] 23 May @ 10:36pm 
テクスチャーのノーマルマップ。
ゲーム中はテクスチャ全てが反転して表示されるため、ノーマルマップ設定の凹凸は予め出っ張る+方向で設定する。
dengun  [developer] 23 May @ 10:41pm 
StartShipHardPointConfig(NewShipType, "Research", "Weapon_tkbcsitamisa1", "System", "Innate", "Indestructible", "dio_beacon", "", "", "", "", "", "", "", "");
最近追加したダミーのサブシステム。
サブシステムを搭載してるユニットは星雲の中に入っても通常表示される。
サブシステムを搭載してない船ばかりだったMODユニットはマップによっては発見しづらく不便だったため、
緊急でデストロイヤー以上に設置した。
ハードポイントジョイントを用意できなかった為に武装ジョイントを流用している。
ダミーサブシステムは目立たなくするためにHPバーなどは非表示にしている。(これはサブシステムの方で設定)
dengun  [developer] 5 Jul @ 6:55pm 
リサーチで表示されるファミリーアイコンの変更の仕方を忘れていたので書いておく。
HomeworldRM\Data\ui\newui\research\research.lua
このファイルの中でファミリーアイコンを指定するコードが存在する。
-- family wide upgrade icon hookups
FamilyIcons = {

{"the", "Fighter","the_fightertech"},
{"dio", "Fighter","dio_fightertech"},

{"the", "Corvette","the_corvettetech"},
{"dio", "Corvette","dio_corvettetech"},

{"the", "utility","the_utilitytech"},
{"dio", "utility","dio_utilitytech"},


{"Vaygr", "Fighter","Vgr_LanceFighter"},
{"Vaygr", "Corvette","Vgr_MinelayerCorvette"},
{"Vaygr", "Frigate","Vgr_InfiltratorFrigate"},
{"Vaygr", "Capital","Vgr_ShipYard"},
{"Vaygr", "Flagship","Vgr_Mothership"},
{"Vaygr", "Utility","Vgr_Probe_ECM"},
{"Vaygr", "Platform","Vgr_HyperSpace_Platform"},
--{"Vaygr", "SubSystemModule","Vgr_C_Module_Research"},
--{"Vaygr", "SubSystemSensors","Vgr_C_Sensors_Advanced"},
{"Hiigaran", "Fighter","Hgn_Bomber"},
{"Hiigaran", "Corvette","Hgn_MinelayerCorvette"},
{"Hiigaran", "Frigate","Hgn_DefenseFieldFrigate"},
{"Hiigaran", "Capital","Hgn_Shipyard"},
{"Hiigaran", "Flagship","Hgn_MotherShip"},
{"Hiigaran", "Platform","Hgn_GunTurret"},
{"Hiigaran", "Utility","Hgn_ECMProbe"},
--{"Hiigaran", "SubSystemModule",""},
--{"Hiigaran", "SubSystemSensors",""},
{"Kushan", "Fighter","Kus_Interceptor"},
{"Kushan", "Corvette","Kus_LightCorvette"},
{"Kushan", "Frigate","Kus_AssaultFrigate"},
{"Kushan", "Capital","Kus_Destroyer"},
{"Kushan", "Flagship","Kus_Mothership"},
{"Kushan", "NonCombat","Kus_ResearchShip"},
{"Taiidan", "Fighter","Tai_Interceptor"},
{"Taiidan", "Corvette","Tai_LightCorvette"},
{"Taiidan", "Frigate","Tai_AssaultFrigate"},
{"Taiidan", "Capital","Tai_Destroyer"},
{"Taiidan", "Flagship","Tai_Mothership"},
{"Taiidan", "NonCombat","Tai_ResearchShip"},
},
;
dengun  [developer] 10 Jul @ 3:54am 
MOD更新の際にアップロードでエラーを吐く。
原因はconfig.txtの容量オーバーだった模様。
このファイルは10kb以下にしなければならないらしい。
< >
Showing 1-10 of 10 comments
Per page: 1530 50