Category: source sdk mod

振り付け

comments 振り付け はコメントを受け付けていません。
By , 2012年7月23日 (月) 15:34:03

振り付けとトリガー基本その1 というものを書いたのだが、 こういうものは学生にとって簡単なのか難しいのか。

ボタンを押すと開くドア などというのは昔から教えているのだが、このトリガーをenableしたりkillしたりして振り付けや台詞をイベント発生のたびに切り替える、 というのはかなり込み入っている、 つまり、もう一段階層が深いような気がする。

言われれば作れるかもしれないが、 自分で考えて作れと言われれば相当難しいだろうと思う。 問題は、シナリオを書いて、それをこういうロジックにいちいち置き換えなくてはいけないということ。 そのためにはけっこうなサンプルを作り動作確認しておかねばならない。 けっこう神経を使う作業だ。

プログラミングのようなものだと思うが、こういうものをプログラミングと呼ぶ習慣が私にはない。

教室

comments 教室 はコメントを受け付けていません。
By , 2012年7月22日 (日) 20:40:19


ふつう世の中で言う3DCGというのは、キャラクターモデリングしたらボーン仕込んでぐりぐり動かしてレンダリングなわけだが、source sdk でそれをやってしまうと普通の 3DCG となんら変わりなく、 なら普通の 3DCG やればいいじゃん、という話になってしまう。 source sdk を使うならその豊富なモーションキャプチャのライブラリを極力流用しつつ、 それ以外の部分に労力を振り向ける、 そういう戦略でなくては意味が無いのではないかと思う。

それでマップ作りなんてものは一番簡単だろうと思っていたが、 実はかなりきちんとやらないとリアリティが出てきてくれない。 ちゃんとライト仕込んで、窓には窓枠つけて、机や椅子もそれなりに作ってあげないと、 counter-strike:source と違って キャラがリアルな分、 half-life2は背景もきちんとディテイル作らないとうまくマッチしてくれない。

以前からアーティスティックな counter-strike:sourceのマップ作る人はいたが、 cs:s に関して言えば、マップはそれほどちゃんとしてなくてもゲームとしてはそこそこ楽しめる。 素人が作っためちゃくちゃなマップでも、それはそれなりの味として楽しめてしまう。 スケールが狂ってても、テクスチャが変でも、コンセプトがめちゃくちゃでも。 トリガーとか仕込まなくてもただのマップを作ればゲームとして成立しえる。 3DCG初心者の演習課題にもなりえた。 しかし、half-life 2 のマップはそれなりにリアリスティックに作らないといけない。 キャラのモデリングも振り付けもシナリオもちゃんとしてないと。 つまり、中身がちゃんとなくてはならない。

今のところはやっと trigger_changelevel を使いこなせるようになり、 マップとマップをつなぐことができた。 要するにあまり複雑なマップを作ってしまうとマップ間の移動が重くなりすぎてできないということ。 いまだに苦手意識があり、おそるおそるやってる。

マップからマップへたとえば func_physbox などを持ち運ぼうとすると新しいマップでは消えてしまう。 そういうことは考えない方がほうが無難であって、 マップはリニアに進んで、イベントはマップごとに完結するようにしたほうがよかろう。 つまり、初代の Portal のように、基本はダンジョンで、個々のマップの中だけでタスクは完結してて、 マップ間の移動はエレベータみたいな密室空間を経由する。 source sdk でもなんでもやはりマップ間の移動とか考えると一番楽なのはダンジョン型なのだ。 Portal は half-life 2 のようなリアリティよりも、新しいタイプのゲームをできるだけ短期間に作ろうとした、 プロトタイプのようなものだったのではないか。 そして Portal2 では広大なマップも作れるようにきちんと最適化した、のではないか。

Mod で作り出すといろいろ面倒なのでまずは half-life 2 の方でマップを作り、 モデルもテクスチャもありものですます。 マップが完成したら Mod へ持っていってテクスチャとかモデルとかセリフを差し替える、 というのがよいのではないか。 そうすればモデル・テクスチャ係とマップ係は完全に分業できる。 いまさらながらキャラが話すセリフというのはゲームにおいて極めて重要だなと思う。

武器もモンスターも出てこない、敵も味方もいない、戦闘もない、 たんたんと日常生活をつづったような学園物のゲームを一つ作ってみたい。 案外FPSはそのへんがまだ全然未発達なのではないか。

なんか、今年の正月休みあたりから突っ走ってきたせいか精神的に疲弊してきた。 少しまったく別のことでもやった方がいいかもしれん。 半年くらいは一つのことに熱中できるのにね。

病院マップ

comments 病院マップ はコメントを受け付けていません。
By , 2012年7月8日 (日) 11:36:08

照明がきかない時は

mat_fullbright 0

Gordon Wakes up というチュートリアルがあるので病院マップに仕込んでみる。 プレイヤーはゲームの開始時にベッドで寝ているのだが、目を覚まして起き上がる。 FPSの始まりとしては非常にメジャーなパターンだ。 Portal もそうだし、Sin Episode Emergence もそうだし、 Assassin’s Creed もある意味そうだ。 half-life 2 の中でも gordon が alyx に助けられるところで使われている。 枚挙にいとまがないとはこのことだ。


ラジオから音楽が聞こえてくる。 例によって久原先生の羽田労働歌 を使わせてもらう。 ambient_generic。 mp3でもそのまま再生可能。 ラジオに触れるとなり出して、もう一度触れると止まる(toggleになってる)。

onFoundPlayer は npc_metropolice ではうまく動くのだが、 npc_citizen ではなぜかうまくいかない。 npc_citizen には onPlayerUse があるが、機能が限定されているような気がする。 同じことだと思うが、 npc_kleiner には onPlayerUse すらない。


テクスチャを halflambert にすると少しだけ陰影付けがましになる。 キャラクターのテクスチャは少なくともすべてそうすべき。 phong も使いたいがよく使い方がわからん。なくてもいいか。

病室で目覚めてHEVスーツを着るところまではできたが、 その先のストーリーがまるで思いつかない。

これからどっちの方向へ進んでいけばいい? それこそ、学生の意見も聞きながらやればよさそうだが。

ちなみに phong というのは中国人の名で漢字だと裴祥風 (Phong, Bui Tong) と書くらしい。 と思ったらベトナムのハノイ生まれだった。 ふーむ。 ベトナムはフランスの植民地だったので最初はフランスの大学に進学し、 それからユタ大学の Ivan Sutherland の下でCGの研究をしたらしいぞ、by wikipedia。 33才、学位を取ってスタンフォード大学教授になってすぐに白血病で死んでいる。 1975年。まさにアメリカが敗北してベトナム戦争が終わった年だ。 宿命めいたものを感じるよな。

座らせ方

comments 座らせ方 はコメントを受け付けていません。
By , 2012年7月6日 (金) 13:00:21


未だに完全に把握できてないのだが、椅子の高さは17。 info_node_hint と椅子は接していてもいいが重なっていてはだめ。 info_node_hint は地面から少し浮かす。その高さには意味はない。

hammer editor の top view で見ると、info_node_hint から黄色い線が出ている。 これが顔が向く向きになる。

どの NPC が info_node_hint に向かうかは ai_goal_actbusy で設定する。 NPCの名前にはワイルドカードが使える(citizen* とか)。

複数人いるときは着席するまでに時間がかかることがある。

座る姿勢は scripts/actbusy.txt に定義してある。 d1_t01_BreakRoom_Sit01_Idle、 ACT_BUSY_SIT_CHAIR、 sitccouchtv1 などが使いやすい。

halfwit-2: half-life2 bits and pieces (source mapping) tutorials AI から 55 Ai_goal_actbusy などに行くと詳しい。

本家の info_node_hintactbusyai_goal_actbusy なども参照。

未だに座る姿勢など謎が多い。 椅子に座る姿勢でベッドに座らせちゃいけないとか? 謎だ。

!target

comments !target はコメントを受け付けていません。
By , 2012年7月5日 (木) 11:46:35

choreography とか faceposer がさっぱりわからんのでもう基礎からやることにした。

sdk_faceposer.vmf を見ると、 logic_choreographed_scene で target が指定されてないものがあり、 指定されているものもある。 なぜターゲットの NPC の指定が無いのに動くのかというのをまず調べてみた。 すると scene は VCD (Valve Choreography Data) というものに結びつけられているのだが、 VCD の中で actor 名がハードコーディングされている場合にはその actor にしか scene が働かないので、ターゲットを指定しなくてよい、ということのようだ。

いろんな種類の NPC が同じ VCD を共有する場合には、 ターゲットの actor の名前を !target1 とか !target2 などという名前にしておいて、 scene の中で target1 はどの NPC ですよとか記述するのでよい。

single player でプレイヤーは !player。

hoge という NPC が joge という trigger を起動して、joge が koge という logic_relay を動かしたとすると、koge の出力に対して hoge が !activator、joge が !caller、koge が !self となる、などなど。

まだまだわからんことがある。

看護師

comments 看護師 はコメントを受け付けていません。
By , 2012年7月1日 (日) 21:03:42


病院のマップを作ろうと思い、というよりは、昔 counter-strike:source 用に作った病院のマップを half-life 2用に作り替えようと思って、医者は Kleiner でいけるとして看護師のモデルも作ろうかと思い立ち、昨日からこつこつ作っている。

最近ウェイトマップはいつも壊れている。 思うに、もともとのウェイトマップで重み付けがされてないポイントというのがあって、そこが適当に補完されて、でたらめな重み付けがされているのが原因なのではなかろうか。 そしてそのでたらめに入っている重みというのはたいてい1種類か2種類程度なので、 そのおかしな重みを見つけ出して速やかに消去する。

softimage の weight map editor は重みが0になるように消去できない仕様なので、別の本来そこにあるべき重みを塗ってやらなきゃならないのだが、そういうのはたいてい入り組んだ中のほうのポリゴン、たとえば口の中とか襟の中のようなところにあるので、面倒だ。 weight map 塗る作業もずっとやってることなのでだいぶ慣れてきた。 トータルで一番時間がかかるのはやっぱテクスチャを塗る作業なのだ。

スカートというのは、実に難しい。 スカートはそれ自体にボーンを入れないとうまく制御できないのだが、 そんなモデルは source sdk にはたぶんない。 おなじような理由で髪の毛を長くするのもボーンを入れないと難しいが、そんなモデルはない。 髪が短くてジャージ着てるようなのが一番楽なのだ。

いろいろためしたが結局ダメであり、一番良い方法はスカートの中をがらんどうにして腰は作らない、 足は腰の付け根までしか作らない、スカートは板ポリにしてしまう、 などとやるしかない。 さもなければスカートにボーンを仕込むかだ。 別にスカートの中をのぞき込むような状況がない (たまたまそういう状況があってもきにしない) 場合はスカートは作ってもその内部は作らないようにすればOKだ。

これは看護師ですといってもたいてい看護師は普通の白い服を着ているだけなので、 頭に看護師ですよという頭巾をつけないとさまにならない。 あと胸に医療用の携帯電話とか体温計とかペンなどを挿して、名札を付けている。 しかし、帽子のようなものをかぶせるとどういうわけか飲食店のバイトの制服にみえてしまう。 或いはテニスかゴルフの選手か。

顔は、とにかく陰影を消してフラットにすると日本人風の顔になる。 眉間や鼻梁など凹凸感を思い切り良くなくせばよい。 眉毛もざっくりまず消して上から描き直すことだ。 そんな顔のテクスチャはお多福そっくりだ。 今も昔も日本人の美人顔というのはお多福なのではなかろうか。

ま、ともかく、顔の彫りの深さというのはモデルをいくらいじってもそんなには変わらない。 テクスチャをいじれば劇的に変わる。

テクスチャをつるつるにしてしまうとリアリティが失われるからさらに細かな描き込みをしなくてはならない。無限に時間がかかる。

それから、source sdk には生足生腕の女性のモデルなど無いから、 ズボンとか服の袖のぶんの太さを削って肌のテクスチャをかかなくてはならない。 このときどうしても細くするのが面倒だから、筋骨隆々な女子になってしまいがちだ。 気をつけるべきことだ。

steam 利用規約

comments steam 利用規約 はコメントを受け付けていません。
By , 2012年6月30日 (土) 06:20:49

法律や規約の解釈など、したくはないのだが、 steam 利用規約 によれば、

C. ソースエンジン用 SDK

ユーザーの利用権は、Half-Life 2 やこれと互換性のある Valve の他のゲーム製品において使用されるコンピュータゲームエンジン(以下「ソースエンジン」)用ソフトウェアを開発するための、Valve 製ソフトウェア開発キット(以下「SDK」)の利用権を含んでいる場合があります。 ユーザーは、ソースエンジンと互換性がありソースエンジンを使用している Half-Life 2 または Valve の他のゲーム製品の修正版(以下「Mod」)を開発する場合に限り、非営利目的で SDK を使用、複製、および修正できます。 ユーザーは、非営利目的で無償公開および配布する場合に限り、Mod を複製して、Half-Life 2 または Valve の他のゲーム製品のライセンスを有するエンドユーザーへのみ配布できます。

E. 各種制限

SDK に関する第 2 条(C)項の規定に基づき許されない限り、ユーザーは、Valve より書面による事前許可を得なければ、Steam ソフトウェアか Steam を通じて利用できる他のソフトウェアの一部またはすべてについて、コピー、フォトコピー、複製、翻訳、リバースエンジニアリング、ソースコード抽出、修正、逆アセンブル、逆コンパイル、派生成果物の創作、財産権表示または標示の削除などを行えません。

つまり、非営利目的で、Modを制作する限りにおいては、ソースコードの抽出、修正、複製などは行ってよい、と解釈していいわけだよな。 Modと称していろんなキャラとか作り散らかしているが、ここまではよくてここからはダメ、というのはまあ無理だと思うんだよね。 モデルというのはテクスチャだけでなくてポリゴンやらアニメーションやらのすべてからできている。全部を自分で作り出すことはできない。どうしても一部を改変することになる。なら、もう「自分のオリジナルのモデル」を作ることにこだわっても仕方ないだろうと思う。 たとえば、half-life 2 や counter-strike:source のマップやキャラクタを作るということはそのテクスチャも当然使うわけだ。それを steam プラットフォーム以外のところで流用すれば当然アウトなわけだが、steam 上で動くゲームで利用するのはOKということで良いのだと解釈しているのだけど。

ジャージ男 ver.0.0 からの遠い道のり

comments ジャージ男 ver.0.0 からの遠い道のり はコメントを受け付けていません。
By , 2012年6月29日 (金) 23:49:50

Korin modなどに触発されて、 自分でもキャラクタを作り始めたのは 2008年の11月頃から。 最初は jajiman00 とか jajiman01 とか jajiman02 とか jajiman03 とか。 jajiman04 から目玉が動くようになり(吉田戦車みたいなキャラだ)、 顔アニメーションも仕込んだjajiman05 を経て、 それから今度は女性キャラを作り始めて 眼鏡をかけさせたり。 年が明けて2009年、割烹着のオバサン作ったり。 卒業生が作ってくれたまんだら屋の良太のキャラを 全員集合させたりした。 それからずっとブランクがあったのだけど、 今年の正月に clip paint lab やら mmd やらをいじったのをきっかけにまた sourcesdk でキャラを作り始めた、というわけだ。

たいへんだった。たぶん half-life 2 の初期の頃にマップとか mod とかモデルとか作ってた人たちは、 おそらく quake とか half-life 1 の頃からすでにある程度作った経験があったのだろう。 私の場合 half-life 2 になって一からのスタートだったから、とてつもなく遅れた。 時間がかかった。 でもなんとか先達たちに追いついてきたように思う。 2009年から2012年までの長いブランクがなければもっと早くここまでたどり着いただろうと思うと、 かなり惜しい気持ちもある。

痛い目にあったときは忘れないうちにブログに書き残しておこう。

source engine 2006 と 2009 は vtex.exe に互換性がないのだった。 2009 でコンパイルしたテクスチャは 2006 では使えない。 普通 half-life 2 は 2009 で、mod は 2006 で作るから、 half-life 2 用に作ったテクスチャを mod で使おうとするとすべてコンパイルし直さなきゃいけない。

あと、barney や monk などを gcfscape で取ってきて mdldecompiler でデコンパイルしてそのまんまコンパイルしても、顔のテクスチャだけがおかしい。 これもやはり vtex.exe だか vtf のバージョン違いによるものらしく、 tga から vtf を作り直せば直る。 めちゃくちゃ悩んだ。

The Farm Raider

comments The Farm Raider はコメントを受け付けていません。
By , 2012年6月24日 (日) 23:31:41

なんかね、quake とか half-life 時代からの歴史にぶつかって感動することがありますよ。 別に感動する必要はないとも言えるけど。

拡張子には過去のとっくに忘れられた歴史が残るものらしい。 .qc という拡張子は quake C の名残だという。 quake は Cっぽい言語のスクリプトでカスタマイズできたらしいんだよね。

gameinfo.txt は localize できるんかいなと思いつつ文献を読むと gameinfo.txt は昔は liblist.gam と言われていたらしい。 liblist.gam という何のためあるかわからん設定ファイルがあるんだが、ある種の痕跡なんだわなこれ。

んで、説明読むと gameinfo.txt の中の game は ANSIで、 title は unicode で書けと書いてあるから、 gameinfo.txt は licalize できるんだわなと思いそうすると、

 gameinfo.txt is not a valid format

というエラーが出る。 思うに、古い engine (source engine 2006) では gameinfo.txt はローカライズできない、 つまり多バイトは使えない、ということなのではなかろうか。

んで、しゃーないので、The Farm Raider という名前にしてみた。 農園荒らしという意味だが、もちろんこれがかの Tomb Raider にちなんでいるのは言うまでもない。

んで、チャプター名は問題なくローカライズできるのでチャプターだけ日本語というおかしなことに。 いや、チャプターがというよりは台詞や説明が日本語になって欲しいわけよね。 一応舞台は「荒暮村(あらくれむら)」で行こうと思う。 そんな名前の市町村は実在しないだろうと思うがもし万が一あったらごめんなさい。 google 様には見つけられなかったみたいです。

忘れないうちにメモろうと思い、そういう仕事は wordpress よりか mediawaiki の方がずっと手軽なのでこちらに書いてたらずいぶん新しいのがたまった。

もうこんくらいできてれば夏は越せるだろう。 こんくらいできてればアルファ版ですからで許してもらえるだろう。 ていうか、こんだけまじめにゲームの AI 調べたんだから紀要くらい書いても誰も怒らないだろうと思う。

Valve Developer Community は確かにすばらしい。 一次ソースであるが、しかしわからんことも多い。 他人のmodみたり、gcfscape で half-life 2 のソース読んだり、 あとは google 様に調べてもらったりして、じわじわ前に進んでいる感じ。

最初から全部 utf8 か unicode 通せるようにすりゃいいんだわな。 或いは、トークンかませておいて言語によって別々のファイルを参照する。 それがまだ中途半端に対応してるところが多いってことだわな。

npc_metropolice を3発殴ると必ず死んでしまう。 damage factor とかそんなんあるかと思うが変化なし。 npc.metropolice.cpp のそれらしきパラメータをいじっても変化なし。 もうわけわからん。 あと時々無線通信みたいな声を出すのだが、どこで出してるのかわからん。 わからんことだけだ。

西瓜割師外伝(仮称)

comments 西瓜割師外伝(仮称) はコメントを受け付けていません。
By , 2012年6月23日 (土) 20:13:18

あまりややこしいことはやらず、 npc_metropolice を必要最小限改造 してそれっぽいmodを作ることはできるってところまではきた。 そうすると、モデル作りはすべて学生に任せるってことで、 私としてはモデルはできたという前提で(最悪既存のモデルでやることもできるわな)、 modを作っていくほうに専念すべきかと思う。

一応今考えてるネタは half-life2 single player mod で、 江戸時代初期くらいの日本の農村。 父親を西瓜泥棒に間違われ殺された息子・季兵衛(仮称)が復讐のために荒暮村(仮称)に帰ってくる。 季兵衛は毎日畑を荒らしに来る。 村人は大根とか葱とかクワなどを持って季兵衛を攻撃してくる。 季兵衛はそれをよけながら西瓜をひたすら割り続ける。

村人は「毎日畑を荒らすのはあんたね。」 「なんの恨みがあってうちの畑を荒らすんだい。」 「生きては帰さんぞ。」 などのセリフをしゃべる。 セリフくらいは差し替えられるだろうし、そうでもしないと雰囲気出ないわな。

千個の西瓜を割るとゲームクリア。

とかどうよ。 この程度のゲームなら作れると思う。

或いはあるところに釜底村と藪深村という仲の悪い二つの村があった。 凶作の年、藪深の村民は釜底村の連中に皆殺しに遭い、幼い季兵衛だけが助かった。 成長した季兵衛は真実を聞かされ復讐(以下略)。

これからが本当の地獄だ。

comments これからが本当の地獄だ。 はコメントを受け付けていません。
By , 2012年6月22日 (金) 15:06:24

monster_dummy.cpp をコンパイルしたりそれをマップに出すことはできるようになったが、 そこから先がなかなか進まない。 外見は npc_citizen なのだが npc_metropolice のような行動をする npc_guardian という新しい NPC を作りたいのだけど、 npc_citizen.cpp も npc_metroolice.cpp も異様にながくてしかもわけわからん。 monster_dummy.cpp は単なるダミーだし、 npc_alyx.cpp とか読んでみてもほとんど何も書いてない。 ネットにもほとんど情報がない。 ああもうほんとにこの世は地獄だ。

今日もいつものクイックハック

comments 今日もいつものクイックハック はコメントを受け付けていません。
By , 2012年6月20日 (水) 23:52:14

警告は出るものの、一応 server.dll も client.dll も、debug or release 両方ともできるようになった。 client.dll の release のビルドでは viewport.cpp というやつがどうしてもリンカーエラーを起こす。 ソースを見てみると xbox 関連のコードのようなので、xbox360 は 2005年発売なんで、 後から追加されたコードだもんでエラー吐くんだろうと、さくっとコメントアウトしたら動いた。

で、monster_dummy.cpp を参考にして npc_guardian.cpp というものを書き、 コンパイルにも成功したのだが、 Hammer エディタには出てこない。

七転八倒したあげくFGD というファイルをいじらないと Hammer エディタにはモデルが出てこないのである、てことに気付く。 知らんがな。

まあとりあえず NPC の追加の仕方はマスターしたぞ。

エンティティの追加とかについてはここらも読んでおいたほうがよかろう。

奥が深すぎる。

visual c++ 2005 express にした。

comments visual c++ 2005 express にした。 はコメントを受け付けていません。
By , 2012年6月20日 (水) 20:09:38

うまく動かないので 2005 にした。 それでもリンカーのエラーが出まくってもうダメかと思ったがなんとかできたみたい。

'hl2.exe': Loaded 'C:\Program Files\Steam\steamapps\sourcemods\nogemod\bin\client.dll', Symbols loaded.
'hl2.exe': Loaded 'C:\Program Files\Steam\steamapps\sourcemods\nogemod\bin\server.dll', Symbols loaded.

hl2.exe が自分がビルドした server.dll と client.dll をロードしているからたぶん大丈夫なはずだ。

初代half-life 2 の mod を作る場合、hl2.exe は source sdk base のやつを使わねばならない。 configuration properties -> debugging -> command:

C:\Program Files\Steam\steamapps\(steamid)\source sdk base\hl2.exe

command arguments:

-allowdebug -novid -game "C:\Program Files\Steam\steamapps\SourceMods\(modname)"
1>------ Build started: Project: client_hl2, Configuration: Debug HL2 Win32 ------
1>Linking...
1>   Creating library Debug HL2/client.lib and object Debug HL2/client.exp
1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
1>tier2.lib(MaterialSystemUtil.obj) : warning LNK4204: 'c:\nogemod\src\cl_dll\Debug HL2\vc80.pdb' is missing debugging information for referencing module; linking object as if no debug info
1>tier2.lib(tier2.obj) : warning LNK4204: 'c:\nogemod\src\cl_dll\Debug HL2\vc80.pdb' is missing debugging information for referencing module; linking object as if no debug info
1>Embedding manifest...
1>Copying to destination folder
1>        1 個のファイルをコピーしました。
1>Build log was saved at "file://c:\nogemod\src\cl_dll\Debug HL2\BuildLog.htm"
1>client_hl2 - 0 error(s), 3 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

このLIBCMTがどうのこうのという警告を消そうと/NODEFAULTLIB つけたり(ignore all default libraries を yes)、libcmtd を igonore specific library に付け足したりするとはまるのだ。 うぜえよリンカー。

hl2 mod への遠い道のり

comments hl2 mod への遠い道のり はコメントを受け付けていません。
By , 2012年6月20日 (水) 14:14:41

とりあえず mod は作らざるを得ないような気がするので、 というか mod の作り方くらいはマスターした方が良さそうなので、 まずは visual c++ 2010 express をインストールして、 それから source sdk で hl2 single playper の mod を作る。

game_hl2_2005.sln を開くと 2010用に変換し直す。 別にここで困ることはない。

debug モードで build を開始する前に、

などに書かれていることを良く読んで、solution explorer で solution ‘game_hl2_2005’ の直下にある、 client_hl2 とか server_hl2 を右クリックして properties、そんで書かれた通りに直す。

Configuration Properties > Linker > Input > Ignore Specific Library to libc;libcd;libcmtd

Properties > Configuration Properties > Debugging (All configurations) → Command → browse → C:\Program Files\Steam\steamapps\(steamid)\half-life 2\hl2.exe うんぬん

Configuration Properties (all configurations) > Custom Build Step and in the Additional Dependencies field, type in $(TargetPath).

-allowdebug -novid -game "C:\Program Files\Steam\steamapps\SourceMods\MyMod"

などは必要だが、IsBIK がどうのとか memoverride.cpp がどうのというのはやらなくても動いた。 vc80.pdb というのは警告は出るけど無視して起動すれば良いらしい。 起動すると maplist.txt がないと怒られるが console で map (なんとか) と打てばそのマップがロードされる。 debug モードだとなんかいろいろ重いが一応動くようだ。 half-life 2のマップを読み込むこともできる (d1_trainstation とか)。

hl2.exe エントリポイントがみつかりません。GetCVARIF() Entry Point Not Found in vstdlib.dll などというエラーが出るが、これも無視して起動できる。

オリジナルの hl2.exe を起動しているから、モデルやテクスチャなどは half-life 2のままである。 hl2 の方でまずモデルやテクスチャを作成しておけば mod でも同様に使えるということだな。

npc_citizen というのはプレイヤーの味方で、npc_metropolice というのが敵なのだが、 npc_citizen に npc_metropolice と同様にプレイヤーを攻撃させたいのである。 味方と敵というのはどこで区別しているのだろう。 よくわからん。 とりあえず

あたりとソースを見比べつつ、なんか新しい NPC 作ろうかなと思っている。 new_npc.cpp というのはそもそも無いのだろう。 monster_dummy.cpp はある。これをたとえば new_npc.cpp という名前で新しく保存してうんぬん、 という話ではなかろうか。 new_npc.cpp を作ったとしてこれをプロジェクトに追加するにはどうするんだ。 ただ書いて置いておけばよいというものではあるまい。

source mod をいじったのは今回が初めてではなく C++ もなんとなくわからなくもなく、 開発環境は visual C# で割と慣れたので、 そんな異様に難しくはないのだが。

ところでリンクの色が赤いと wikipedia に慣れた人なら、それがまだ執筆されてないページのように思えてしまうだろうと思うのだが、このページはわざとそういう色にしてあるのだが、どうよ。

大根も作った。

comments 大根も作った。 はコメントを受け付けていません。
By , 2012年6月15日 (金) 21:29:02

精神的にも時間的にも比較的余裕があったので、未来に投資するつもりでいろいろやってみる。 ネギを大根に改造する。 テクスチャは流用。 大根はネギより太いので手の中の位置合わせにけっこう手間取った。

ソースも更新

ついでに wordpress を 3.4 にアップグレード。 get_header_image() てのがよくわからん。 まあいいや。 いろいろランダムにヘッダの画像を表示させるようにした。

wordpress を入れるとついついテーマをいじってしまうな。 どぎつくない程度にどぎつい色調で(笑)

Panorama Theme by Themocracy