L4D2 の HUD 改造方法

Left 4 Dead 2 の HUD (Head Up Display) の変更・カスタマイズ方法をまとめた資料です。

概要

日本人でやっている人があまりいないので、資料は英語のものが多くなります。Source Engine なので過去作品と構造がほとんど同じで、「L4D」で検索するよりも「TF2」や「HL2」で検索したほうがヒットしやすいです。これはカスタムマップを作成するときも同じ傾向です。

有用な資料・ツール

参考文献:

上記を読めばだいたい分かります。

ツール:

Source Engine の HUD 関連ファイル

HUD に関連したファイルについて説明します。以下は独自に調べたもので、間違っている可能性があります。

たとえば hud_layout.res で次のように書かれていたとします。

"HealthArea" {
    xpos: 0    // そのパーツの x 座標
    ypos: 0    // そのパーツの y 座標
    tall: 100  // そのパーツの高さ
    wide: 100  // そのパーツの幅
}

この場合、対応する res ファイルが resource/ui/hud/ 以下に大抵あります(この例なら HealthArea.res)。hud_layout.resHealthArea というパーツの位置を決定し、resource/ui/hud/HealthArea.res でそのパーツに含まれる各部位を配置する、という構成です。

手軽に HUD をいじって修正を繰り返す方法

Source Engine のファイル読み込みの優先順位は次の通りです。

addons フォルダ内の VPK に含まれるファイル
  > pak_dir01.vpk に含まれるファイル
  > 実際にローカルに置いてあるファイル

この順番で読み込まれ、最初に見つかったファイルがそのまま使用されます。毎回 addon を作るのが確実ですが非常に面倒なので、script/hudlayout.res のようにローカルへそのまま配置し、ゲーム内で再読み込みできるようにします。

手順は以下です。

  1. pak_dir01.vpk を展開し、ローカルに配置する GCFScape で pak_dir01.vpk を展開し、script フォルダと resource フォルダをローカルの scriptresource にそれぞれコピペします。
  2. ローカルのファイルが読み込まれるように pak_dir01.vpk を修正する バイナリエディタで pak_dir01.vpk をいじり、たとえば hudlayout.resrudlayout.res などと適当にリネームしてしまいます。もちろん、事前に pak_dir01.vpk をバックアップしておいたほうが良いです。

こうすると、pak_dir01.vpk が最初に読み込まれたときに vpk 内に script/hudlayout.res が存在しないため、L4D はローカルの script/hudlayout.res を探しに行って読み込みます。

以上で作業は終わりです。この状態になれば、あとは L4D 起動中に HUD をリアルタイムに変更できます。具体的には、ローカルのファイルを修正した後にコンソール(ゲーム内のコマンド入力欄)で hud_reloadscheme と入力すると、script/hud_layout.resresource/ui/hud/ 以下がリロードされ反映されます。このコマンドを適当なキーにバインドしておくと非常に楽です。

FAQ

Q1. ○○の HUD を変更するための res ファイルはどこにあるの? A1. 自分がやりたいことを実現している addon を FPSBANANA で探してみてください。見つかればその vpk を GCFScape で解凍し、どのようなことをしているか確認してみましょう。これは SourceMod やカスタムマップを作るときも同じで、先人の知恵を借りたほうが楽です。

Q2. プレイヤーの装備品の部分(右側のプライマリ武器などの位置)をいじるには? A2. 別の記事に詳細を書きました → hudlayout.res - HudWeaponSelection 詳細