Quake2ビルド情報
今回Quake2ではQuakeの時に用いていたprogs.dat形式を廃止し、
直接Cで記述されたソースからgamex86.dllを作成してメインプログラムへリンクさせる方法を導入しています。
gamex86.dllのソースはid社のftpサイトで配布されており、アーカイヴにはプロジェクトファイルが同梱されているのでVC++5.0を持っている人ならすぐに作業へ取り掛かれます。
でも、もう今じゃVC++4.0だろうがBolandだろうが何も持ってなかろうが誰でもQuake2モジュール作成の環境を手に入れられるようになったんでかんけいないも〜んだ!
迷わずソースファイルをダウンロードせよ!
Quake2 3.20対応ソースのダウンロード
q2src320.exe(455kByte)
ミッションパック1 xatrixsrc320.exe(519kByte)
ミッションパック2 roguesrc320.exe(700kByte)
このexeファイルを起動すればインストーラーが立ち上がるので適当なディレクトリを指定して展開します。
しかし、これに含まれているソースファイルはメモ帳で開くと改行コードがバケバケでかなり困りものです。
ですから勝手に改行コードを修正した物を作り...たかったのですが、それを配布してよいのかどうかまだ付属のlisense.txtをよく読んでいないのでわかりません。
ワードパッドやMicrosoft Wordならば正常に表示されるのでそれでしばらく耐えましょう。
ソースをダウンロードしたら早速ビルドしましょう。
●VC++5.0の場合
VC++5.0を起動し、
ファイル(F)-ワークスペースを開く(W)
から\gameディレクトリ内のプロジェクトファイルgame.dspを開けば勝手にワークスペースも作ってくれるので、
それ以後作業を行う時はワークスペースファイルgame.dswを開けばOKです。
あと、最初の設定のままだとgameディレクトリと同レベルの階層に\Releaseディレクトリを作り、そこへDLL
ファイルを吐き出してしまうので
プロジェクト(P)-設定(S)
で好きなように出力先のディレクトリを指定してください。
●VC++4.Xの場合
VC4.X用プロジェクトファイルを新たに3.14対応ソース用に作り直しました。q2vc4prj.zipをダウンロード、
そしてこのプロジェクトファイルを\gameディレクトリへ解凍します。
VC++4.Xを起動し、
ファイル(F)-ワークスペースを開く(W)
から\gameディレクトリ内のプロジェクトファイルgame.mdpを開き
ビルド(B)-プロジェクトの標準設定(F)
で"game - Win32 Release"を選択してください。
他はVC5.0と同じです。多分3.20のソースでもこのプロジェクトファイルで大丈夫だとは思います。ミッションパックのソースはノーマルの
ソース対して追加されたソースファイルを手動で追加してください。
●Boland C++ビルダの場合
以下のサイトでBolandのプロジェクトファイルと共にコンパイル方法が記載されていました。私はBolandユーザーではないので試せません。
誰か試してみてください。
http://www.planetquake.com/qdevels/bccompile.html
●ビルダを持っていない場合
アメリカじゃビルダをもってなけりゃQuake2にはLCCでキマリらしいです。ただ、
出力されるgamex86.dllへちょっと修正が必要ということでMAKEFILEと一緒にパッチ当てプログラムを作りました。
名付けて、ponpokoキット(マジだっせぇ)。古いバージョンをお持ちの方もダウンロード願います。
さらに、3.14になってからソースファイルが1つ増えているようなので、MAKEファイルにちょっと手を加えました。
LCCのリンク先も変わってしまったとのことでリンクを張り直しました。情報をお寄せくださったYosiaki Matumotoさん、ありがとうございます。
Quake2ソースの他に必要なファイル
セットアップ方法、その他はponpokoキットのponkit.txtに記載してあります。
●作ったモジュールを実行させる
ビルドしたら実行してみたいものです。Quake2もQuake同様にモジュールごとにディレクトリを作って実行することが
できます。例えばディレクトリC:\Quake2の下へ\mygameというディレクトリを作りその中へgamex86.dllを置いたと仮定した場合、
MS-DOSのコマンドラインから
C:\Quake2>Quake2 +set game mygame
とすれば自作モジュールでQuake2を実行できます。\mygameでも\ogeeでも\hanakusoでも勝手にしてくれい。
●実験
元のソースをそのままコンパイルしてもゲームがそのまま動くだけですから面白くありません。
ソースの変更がちゃんとゲームに反映される様を実感したい人はソースファイル
p_weapon.c内で以下の部分を探し出し、赤で示した部分の数値を変更してみてください。
これは初期装備であるブラスターのもたらすダメージ値なので、
とりあえず100ぐらいに変更すればブラスターでもザコなら一撃で肉片になります。
void Weapon_Blaster_Fire (edict_t *ent)
{
int damage;
if (deathmatch->value)
damage = 15;
else
damage = 10;
Blaster_Fire (ent, vec3_origin, damage, false, EF_BLASTER);
ent->client->ps.gunframe++;
}
e-mail:ponpoko@axcx.com