キモブロ

Please spy check please, Fucking retard

mvm_Scream_TvのTankが動かない問題を修正しようとして失敗した話

まずはmvm_Scream_Tvのデコンパイルとそのコンパイル環境を構築する。

まずmvm_Scream_Tv.bspをダウンロードしてくる。次にこのbspに含まれるzipファイルを取り出す。これには以下のコマンドを使う。

vbspzip -extract mvm_Scream_Tv.bsp mvm_Scream_Tv.zip

これでmvm_Scream_Tv.zipというのが手に入る。次にこれを展開し、Hammerで認識できるようにする。展開すると、maps, materials, soundというフォルダができるので、これを、steamapps/YourName/sourcesdk/bin/orangebox/tf/ のしたに展開する。

次にvmexでbspをvmfにデコンパイルする
vmex.batをダブルクリックして起動し、対象のファイルにmvm_Scream_Tv.bspを選択。Decompileボタンをクリック。以上でmvm_Scream_Tv_d.vmfというのが生成される。

vmfファイルを開き、実装を確認する。どうやらTankが移動しないのはそもそもTankの移動経路(path_track)が設定されていないからのようだ。マップにpath_trackを設定していく。popファイルをみてみよう。

Tank
{
    Health 25000
    Speed 75
    Name "boss"
    StartingPathTrackNode "boss_path_b1"
... (省略)

StartingPathTrackNode というところに、"boss_path_b1" と書いてある。つまりこの名前のpath_trackにTankが出現して、そのpath_trackに接続されてる、他のpath_trackノードを目指して行動していくんだなというのが分かる。

というわけで、Tankが出現して欲しい場所に"boss_path_b1"というpath_trackノードを設置し、"boss_path_b2" みたいな感じでどんどん進行経路を作成してあげる。このとき、Hammer Editor上で、boss_path_b1のpath_trackエンティティを選択した状態でShift + マウスドラッグで簡単に接続された状態のpath_trackを作成することができて楽チン。

で、以上が終わった後にコンパイルしたんだけど、マップがLEAKしているという警告が出た。LEAKというのはマップのどこかに隙間があるということでこれがあると水が描画されなくなってしまう。

そこでこのLEAKがどこで発生しているのかを探る必要がある。HammerEditorのメニューからMap → Load Pointfile とする。LEAKエラーがでたときはPointファイルというのがカレントディレクトリに生成されていて、このメニューを選択するとそれが読み込まれ、マップのどこがLEAKしているかをアドバタイズしてくれる。って感じで幾つか修正していったんだけどLEAKを修正しても、一切マップを変更せずにコンパイルしたのにLEAKの場所が変わっている、これは何かがおかしい。何回繰り返してもマップを一切変更してないタイミングでもLEAKの場所が変わっている。

ってところで詰んで終わってしまった。なんなんだろう。。
なんか細工してマップのデコンパイル対策でも施されてるのかなぁ。デコンパイル手法について調べたけど、なんかno_decompってどっかに記載しとくとできなくなるらしい。でもscream tvはそういうのでも無さそう。デコンパイル自体はできてるので。マップの規模がでかすぎてコンパイル時のコマンドラインオプション指定しないとだめとかそういうアレなのかなぁ。