L4D2 の HUD 改造方法
Left 4 Dead 2 の HUD (Head Up Display) の変更・カスタマイズ方法をまとめた資料です。
概要
日本人でやっている人があまりいないので、資料は英語のものが多くなります。Source Engine なので過去作品と構造がほとんど同じで、「L4D」で検索するよりも「TF2」や「HL2」で検索したほうがヒットしやすいです。これはカスタムマップを作成するときも同じ傾向です。
有用な資料・ツール
参考文献:
- TF2 の HUD 弄り(日本語)
- TF2 の FlameHUD についての解説(英語)
上記を読めばだいたい分かります。
ツール:
- GCFScape — vpk(Source のアセットをまとめたアーカイブ形式)を展開できるツール
C:\Program Files (x86)\Steam\steamapps\common\left 4 dead 2\bin\vpk.exe— vpk 作成ツール。コマンドラインで実行すると、指定したフォルダが VPK に変換される
Source Engine の HUD 関連ファイル
HUD に関連したファイルについて説明します。以下は独自に調べたもので、間違っている可能性があります。
script/hudlayout.res— 全体のおおまかな各パーツの位置を規定するresource/ui/hud/*— 各パーツ内に存在する、より小さなパーツの配置を定義する
たとえば hud_layout.res で次のように書かれていたとします。
"HealthArea" {
xpos: 0 // そのパーツの x 座標
ypos: 0 // そのパーツの y 座標
tall: 100 // そのパーツの高さ
wide: 100 // そのパーツの幅
}
この場合、対応する res ファイルが resource/ui/hud/ 以下に大抵あります(この例なら HealthArea.res)。hud_layout.res で HealthArea というパーツの位置を決定し、resource/ui/hud/HealthArea.res でそのパーツに含まれる各部位を配置する、という構成です。
resource/clientscheme.res— 使用しているフォントの大きさなどを規定する。条件分岐で Xbox 360 版のものも同時に規定している
手軽に HUD をいじって修正を繰り返す方法
Source Engine のファイル読み込みの優先順位は次の通りです。
addons フォルダ内の VPK に含まれるファイル
> pak_dir01.vpk に含まれるファイル
> 実際にローカルに置いてあるファイル
この順番で読み込まれ、最初に見つかったファイルがそのまま使用されます。毎回 addon を作るのが確実ですが非常に面倒なので、script/hudlayout.res のようにローカルへそのまま配置し、ゲーム内で再読み込みできるようにします。
手順は以下です。
- pak_dir01.vpk を展開し、ローカルに配置する
GCFScape で
pak_dir01.vpkを展開し、scriptフォルダとresourceフォルダをローカルのscript・resourceにそれぞれコピペします。 - ローカルのファイルが読み込まれるように pak_dir01.vpk を修正する
バイナリエディタで
pak_dir01.vpkをいじり、たとえばhudlayout.resをrudlayout.resなどと適当にリネームしてしまいます。もちろん、事前にpak_dir01.vpkをバックアップしておいたほうが良いです。
こうすると、pak_dir01.vpk が最初に読み込まれたときに vpk 内に script/hudlayout.res が存在しないため、L4D はローカルの script/hudlayout.res を探しに行って読み込みます。
以上で作業は終わりです。この状態になれば、あとは L4D 起動中に HUD をリアルタイムに変更できます。具体的には、ローカルのファイルを修正した後にコンソール(ゲーム内のコマンド入力欄)で hud_reloadscheme と入力すると、script/hud_layout.res と resource/ui/hud/ 以下がリロードされ反映されます。このコマンドを適当なキーにバインドしておくと非常に楽です。
FAQ
Q1. ○○の HUD を変更するための res ファイルはどこにあるの? A1. 自分がやりたいことを実現している addon を FPSBANANA で探してみてください。見つかればその vpk を GCFScape で解凍し、どのようなことをしているか確認してみましょう。これは SourceMod やカスタムマップを作るときも同じで、先人の知恵を借りたほうが楽です。
Q2. プレイヤーの装備品の部分(右側のプライマリ武器などの位置)をいじるには? A2. 別の記事に詳細を書きました → hudlayout.res - HudWeaponSelection 詳細