・はじめに
・WadCraft
・WAD 関連ユーティリティ
・GLDoom2007
・MacDoom2007
・GLQuake2006
・QUAKE U
・WinDoom2005
・WadView
・play@



はじめに

このページでは、主に DOOM や QUAKE に関する、自作のソースポートやユーティリティプログラムを掲載しています。


ライセンスについて

QUAKE をはじめ、少し古いゲームなどのソースコードが公開される時は、多くが GPL(GNU General Public License) というライセンスに 基づいて公開されています。
私は、GPL の文書はほとんど読んでいませんが、QUAKE のソースに付随する John Carmack のコメントによれば、元のソースコードに 何らかの変更を加えて、プログラムを公開する時は、そのソースコードも一緒に公開しなければならないとの事です。 ソースコードも一緒に公開している限りは、自由に配布したり、売ったりする事も出来るようです。


プロジェクトについて

ここに掲載されているプログラムのソースのプロジェクトは、(一部を除いて) VC++ 6.0 の形式になっています。 多分、6.0 以降のヴァージョンの VC++ で開けば、変換されて、読み込む事が出来ると思います。




WadCraft

WadCraft は、DOOMU 専用のシンプルなレベルエディタです。
(初代)DOOM と DOOMU のレベルでは、DOOMU の方がモンスターが多い事など以外はさほど違いは ありませんが、WadCraft では、少しでも単純化するために、DOOMU に特化しています。
WadCraft を使うには、DOOM2.WAD が必要になります。

Ver.1.1 実行ファイル
Ver.0.95 ソースコード




WAD 関連ユーティリティ

WAD 関連ユーティリティは、WadCraft には無い機能などを補うために作った、WAD に関する ユーティリティプログラム群です。
具体的に言うと、DOOM 用のグラフィックやサウンドを作るための変換ツールである resconv、 複数のWADファイルやlumpファイルを一つのWADファイルにまとめる wadmerg、 WADファイルの中のマップデータを WadCraft で使うマップファイルに変換する WAD2WCM の三つがあります。
最初の二つは、コマンドプロンプト上で使うコンソールアプリケーションで、WAD2WCM だけは 通常のWindowsアプリケーションです。

[追記]
WAD2WCMでWADファイルをWCMファイルに変換する時に、BSP分割の時に出来る余計なVERTEXが含まれていた 不具合を修正しました。(6/18 2009)

Ver.1.01 実行ファイル
Ver.1.01 ソースコード




GLDoom2007

1920x1200

GLDoom2007 は、レンダリングに OpenGL を使った DOOM のソースポートです。
Ver.1.6 での主な変更点は、まず前ヴァージョンに続いて subsector のポリゴン化の精度を上げるように改良した事。 次に、スプライトなどの非矩形の画像にフィルターをかけても境界が黒く滲まないように処理を付け加えた事などです。

Ver.1.6 実行ファイル
Ver.1.6 ソースコード




MacDoom2007

MacDoom2007 は、基本的には GLDoom2007 の MacOS X 版です。ただし、現在のところ、GLDoom2007 のようなコマンドライン引数 でのオプションの選択が出来ませんので、機能的にやや劣ります。
Ver.1.4 では、レンダリングの部分を GLDoom2007 Ver.1.6 と同等になるように直しました。また、以前は OpenGL のバージョン が 2.0 未満の時はテクスチャを 2 の累乗になるようにサンプリングし直していましたが、今回実際に試してみたところ、 2.0 未満のバージョンでも 2 の累乗以外のテクスチャが使えるようなので(少なくとも自分が持っている、ビデオ機能に Intel GMA950 を使った Mac mini では大丈夫でした)、テクスチャは常に元画像のサイズのままで作成しています。
動作環境は OS X 10.4 以上で、一応ユニバーサルバイナリとして作ってあります。ソースコードは、Xcode 2.4 のプロジェクト になっています。

Ver.1.4 実行ファイル
Ver.1.4 ソースコード




GLQuake2006

1920x1200

公開された QUAKE のソースは、VC++ 6.0 のプロジェクトとして提供されていたので、Linux 版として提供されていた DOOM の ソースよりは、やり易くなりましたが、最初に、アセンブラのコードを MASM でコンパイルしないといけないなど、そのままでは ビルド出来ませんでした。GLQuake2006 では、条件コンパイル文を少し変更して、アセンブラを使わないようにしています。 さらに、元のプロジェクトにあった、DirectDraw を使ったソフトウェアによるレンダリングの構成(winquake)を省いて、 glquake でのみ使うファイルだけを集めて再構成しています。
Ver.1.1 での変更点は、細かいところでは、デフォルトでスクリーン解像度が現在のデスクトップと同じになる事、 ワイド画面での比率を考慮した事、マウスの上下の動きを、視線の上下の向きに割り当てている事などです。 レンダリング面では、おそらく QUAKE で最も必要と思われる改良である、キャラクターの動きの滑らかな補間を行っています。 これについては、以前 Planet Quake の 中にあった Quake Engine Resources というサイトのチュートリアルを参考にさせてもらい、かつ、そのチュートリアルに 書いてあるままの事を実践しただけです。
プログラムは、シェアウェア版 でも動作しますが、シェアウェアの QUAKE は DOS 用なので、Windows XP 以降では、ゲーム自体は、正常に動作する可能性は少ないので、 とりあえず、インストールだけをコマンドプロンプト等から行って(XP 以前の DOS 窓の場合は、us コマンドで英語環境にしてから install.bat を実行した方がいいです。Vista の場合は、us コマンド自体が無いようですが、私の環境では、インストール プログラムだけは正常に動作しました)、作成された、quake.exe があるディレクトリの中に、GLQuake2006.exe を置いて起動すれば プレイ出来ます。あるいは、ゲームに必要なのは ID1 フォルダ(とその中の PAK0.PAK) だけなので、インストールを実行しなくても、resource.1 というファイルを(圧縮プログラムには LHA が使われている ようなので) .lzh ファイルを解凍出来るプログラムで開いて、ID1フォルダだけを取り出しても構いません。(下の画像は Lhaz という プログラムを使った時の様子)



Ver.1.1 実行ファイル
Ver.1.11 ソースコード




QUAKE U

QUAKE U のソースコードも、VC++ 6.0 のプロジェクトとして公開されていますが、QUAKE の時のような手間をかけなくても、 そのままでビルド出来るようです。ただし、DirectX を使っている部分があるので、あらかじめ DirectX 5 SDK が付いていた 6.0 以外 の VC++、 または違うヴァージョンの DirectX SDK がインストールされている開発環境では、うまくビルド出来ないかもしれません。 今回の QUAKE U のソースは、単にビルド出来るかどうかを確認した程度なので、特に名前は 付けていません。QUAKE に較べて、レンダリング部分などは、大幅に改良できる所はあまり無いと思います。ただ、一つの欠点と して、メニューの中から選べるスクリーン解像度が、いくつかの用意されているモードからしか選べないという事がありました。 従って、非常に高い解像度が表示できるディスプレイや、ワイド画面のディスプレイなどでは、ネイティブな解像度でプレイ する事が出来ませんでした。 何故か、QUAKE U 以降の id のゲームでは、起動時のコマンドライン引数などで解像度を指定する事が出来ないようです。 今回、ソースに手を加えた唯一の部分は、選択できる解像度の中に現在のデスクトップと同じモードが現れるようにした事です。 初回の起動時は、オリジナルのまま 320 x 240 のソフトウェアレンダリングモードになりますが、VIDEO メニューの中の Video Mode の所で、一番最後(11 番目)にゲーム起動前のデスクトップの解像度が現れて選べるようになります。
私は、製品版の QUAKE U は持っていませんが、 デモ版では動作を確認しています。 プレイするには、quake2.exe を置き換えて実行するだけです。

Ver.1.0 実行ファイル
Ver.1.01 ソースコード




WinDoom2005

WinDoom2005 は、Bruce Lewis 氏の WinDoom を元にして、DirectX に関する部分を通常の Win32 API (GDI 関数等) で置き換えた ものです。もちろん、速度的には DirectX を使った方がいいのですが、DirectX はヴァージョンが上がるごとによく仕様が 変わるので、長く取り組めるように、最も汎用性が高い Win32 API を使いました。 現在、開発はほとんど止まっていますが、オリジナルの DOOM の再現性は高いので、暇があったら改良を続けて いきたいと思います。

Ver.1.4 実行ファイル
Ver.1.4 ソースコード




WadView


WadView は、DOOM/DOOMUの WAD ファイル、及び Duke Nukem 3D や Shadow Warrior 等の GRP ファイルの中のデータを 閲覧・保存するためのソフトです。
前回 Ver.3.0 では、Windows XP 上では動作しないと書きましたが、私の勘違いで、実際には私の使っている XP に 該当するバージョンの .NET Framework がインストールされていなかっただけでした。また今回、音楽データの再生 には Windows Media Player 10 以上がインストールされていないといけない事が分かりました。
Ver.3.1 は、一応 Visual C# 2008 Standard Edition を使って XP 上でビルドし直しただけで内容的には変わりは ありません。
WadView で使われている WAD の要素を表す用語の意味については、WAD 用語解説のページ を参照して下さい。

Ver.3.1 実行ファイル
Ver.3.0 ソースコード




play@


play@ は、動画やオーディオファイルを再生出来るマルチメディアプレイヤーです。DOOM/QUAKE とは何の関係もありませんが、 個人的に再生位置を記憶出来るムービープレイヤーが欲しかったのと、DirectShow の勉強のためにと思い作りました。

Ver.1.4 実行ファイル
Ver.1.4 ソースコード