Skip to content

Instantly share code, notes, and snippets.

@kimoto
Created August 15, 2010 02:04
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kimoto/524968 to your computer and use it in GitHub Desktop.
Save kimoto/524968 to your computer and use it in GitHub Desktop.
L4D2のHUD改造方法
//--------------------------------------------
// Subject: L4D2のHUD改造方法
// Author: KIMOTO
// Updated At: 2011/03/22
// Created At: 2010/08/15
//--------------------------------------------
■概要
Left4Dead2のHUD(Head Up Display)についての変更、カスタマイズ方法についてまとめた資料です
まず資料ですが日本人であんまやってる人がいないので英語が多いです
SourceEngineなだけあって過去作品と構造がほとんど一緒なので、L4Dで検索するよりもTF2とかHL2で検索したほうがヒットします
これはカスタムマップ作成するときとかも同じ感じです
■有用な資料とかツールについて
--------
参考文献1(TF2のHUD弄り): http://nemtha.blog83.fc2.com/blog-entry-21.html (日本語)
参考文献2(TF2のFrameHUDについての解説): http://flamehud.googlecode.com/files/FlameHUD.pdf (英語)
↑これ読めば大体わかります
GCFScape
vpkを展開できるツール
C:\Program Files (x86)\Steam\steamapps\common\left 4 dead 2\bin\vpk.exe フォルダパス
vpk作成ツール、コマンドラインで実行する、指定したフォルダがVPKに変換される
--------
■SourceEngineの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でそのHealthAreaパーツに含まれる各部位の配置を行う感じです
resource/clientscheme.res
で使用しているフォントの大きさとか規定しています
条件分岐でxbox360版のも同時に規定してます
■簡単にHUDいじって、修正を繰り返す方法
SourceEngineのファイル読み込みの優先順位は、
------------------------------------------------
addonsフォルダ内のVPKに含まれるファイル > pak_dir01.vpkに含まれるファイル > 実際にローカルにおいてあるファイル
------------------------------------------------
です。この順番でファイルが読み込まれます
上の優先順位で最初に読み込まれたファイルがそのまま使用されてしまいます
毎回addon作るのが確実ではありますがそれは非常にめんどくさいので、実際にscript/hudlayout.resみたいな感じで
ローカルにそのまま配置して、ゲーム内にて再読込み出来るようにします。
やり方は、以下です。
------------------------------------------------
1. pak_dir01.vpkを展開し、ローカルに配置する
GCFScapeでpak_dir01.vpkを展開し、scriptフォルダとresourceフォルダをコピペして
ローカルのscript、resourceにそれぞれそのままコピペしてください
2. ローカルのファイルが読み込まれるように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をリアルタイムに変更可能です
具体的には、ローカルのファイルを修正した後に
consoleにhud_reloadschemeと入力するとscript/hud_layout.resと、resource/ui/hud/以下がリロードされ反映されます
このコマンドを適当なキーにバインドしておくと非常にラクです
■FAQ
Q1. ~のHUDを変更するためのresファイルはどこにあるの?
A1. 自分がやりたいようなことを実現してるaddonを、FPSBANANAで探してみてください、もし見つかればそのvpkをGCFScopeで解凍して
そのプラグインがどのようなことをしているか確認してみてください。これはSouceModやカスタムマップ作るときなんかもそうです。
先人の知恵を借りた方が楽です
Q2. プレイヤーの装備品の部分をいじるにはどうしたらよいか(右側のプライマリ武器などの位置とか)
A2. 別の記事に詳細を書いた
hudlayout.res - HudWeaponSelection詳細
https://gist.github.com/880705
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment