source sdk mod始めました。

主に My First Mod を参考にする。

visual C+ 2008 express editionをインストールする。

source sdkでcreate a modする。 で、half-life2 single playerで作る。 modフォルダはとりあえずc:\mymodとする。 mod名はとりあえずpogeとする。

c:\mymod\src\Game_HL2-2005.slnをvc++で開く。 2008に変換するかと言われるのでする。 client_hl2またはserver_hl2のプロジェクトを右クリックしてプロパティを開き、 右上肩の構成マネージャを開き、client_hl2、server_hl2ともにdebug hl2をrelease hl2に変更する。 ビルドする。

debugのままでビルドすると、 libcmtdがmemoverride.objと競合しているなどと言われてリンカのところでビルドが止まる。 しかし、releaseでやると警告が出るだけで最後までいける。 その他いろいろ警告が出るが無視する。 Compling under VS2008 にはあちこちソースを修正するように書いてあるが、 これらのことはすでに修正済みであるらしく、特にいじる必要はない。

ビルドが済むと c:\program files\steam\steamapps\sourcemods\poge にとりあえず必要なファイルが作られる。 最初マップが一つもないので、どこかから適当にbspファイルを拾ってきて、 poge\mapsに放り込んでも良いのだが、 source sdkのhammer editorでごく簡単なマップを自作することにした。 hammer editorを立ち上げるときにsource sdkのcurrent gameをpogeにしておけば良い。 このマップの名前をとりあえずtestest00とする。 マップをビルドするときtestest00.vmfという名前で保存すればよい。 部屋を一つと、その中にinfo_player_startを一つ置けばそれだけでも動く。 ビルドがうまくいけばvmfからbspが作られて、 c:\program files\steam\steamapps\sourcemods\poge\mapsの中にtestest00.bspができる。

c:\mymod\run_mod.batでhl2.exeを起動するとコンソールが出る。 ニューゲームでもロードゲームでも最初はゲームを開始できない。 そこでコンソールで直接マップを指定して起動する。

map testest00

とか。 そうすると起動する。 run_mod.batがうまく起動しないとき(win vistaなど)は、 steamを再起動し、マイゲーム一覧からpogeを選び、 pogeを起動した後に、設定→キーボード→詳細...→開発者コンソールを有効化、にする。 この場合「半角/全角」キーでコンソールが開く。 マイゲームのpogeを右クリックし、プロパティ→起動設定...に

-dev -sw

などと書いておくと良い。

次にソースをいじってみる。 server_dll\Source Files\HL2DLL\weapon_rpg.cppを開き、

#define RPG_SPEED 1000

#define RPG_SPEED 100

とかに変えてみる。 それからソリューションをビルドする。 RPGというのはロケットランチャーのことだが、 マップの中にRPGがないとテストにならないから、 先ほどのtestest00の中にweapon_rpgを追加して再度ビルドして試してみる。

gameinfo.txtは特にいじらなくて良い。 maplist.txtも特に必要ない。