
Quake II
Buy Gameエンハンスド版『Quake II』の技術的改良点の紹介
Quake II
Buy Game再リリース版『Quake II』には多数の改良が施されています。
その多くはダイナミックシャドーなど、最新技術を活用して新たに追加されたものですが、1997年の発売当時の技術に手を加えることによって実現できたものもあります。
『Quake II』を新たな世代のプレイヤーの皆さんにお届けするにあたって、1990年代当時のゲームプレイを完璧に維持しつつ、私たちが手がけた技術的な追加点、改良点、さらにはコミュニティとの共同作業の主な一覧をご説明します。古参のMOD制作者の方でも、レトロゲーム愛好家の方でも、再リリース版『Quake II』に興味のある方なら必見の内容となっています!
マップのコンパイル用ツール
『Quake II』のライティングの大部分は、1997年のオリジナル版のリリースと同様に、コンパイル時にBSPファイルにベイクされています。ライティングは、ライティングツールと、BPSファイルに保存されたライティングのみのパック済みテクスチャによって事前に計算されているのです。
『Quake II』のBSPへのサポートを改良するにあたっては、有名な「ericw-tool」の開発者であるEric Wasylishen氏とJonathan Barkley氏との共同作業を行いました。またオリジナル版のゲームのサポート範囲を拡張し、オリジナルマップとユーザーマップの両方においてより高度なライティングが可能になりました。
ベイクドライティングは完全にCPU依存のプロセスであることに変わりはなく、GPUを一切搭載していない旧世代のマシンでも動作します。1997年当時のPCで、オリジナル版のマップのライティングを行う時には、最終的なベイクには何時間もかかり、ときには一晩中かかることさえありました。対してメガヘルツあたりの効率性が大幅に向上し、大量のコアを使えるようになった現代のPCでは、マップをライティングする作業は数分で完了してしまいます。
ルクセル密度の向上
難解な専門用語を抜きにすると、このマップコンパイラの改良は単純明快です。オリジナル版のゲームでは、ワールドが16:1の比率でライティングにより照らされていました。すなわちゲーム内の16ユニットが1つのライトサンプルに対応しているのです。エンハンスド版では全マップを作り直して、この比率を8:1に上昇させ、ライティングを4倍細かくしました。拡散ライティングが多用されているエリアでは、この変化はあまり実感できませんが、スポットライトにより濃い影が生まれているエリアでは、演出が大幅に向上しています。
ライトグリッドのサポート
このマップコンパイラ機能は『Quake III Arena』から輸入されたものです。オリジナル版の『Quake II』におけるライティングの欠点として、エンティティの地面上の位置を基準にしてそのエンティティが照らされることが挙げられます。これは地面に近い位置のアイテムや敵の場合は問題なくても、飛行型モンスターの場合はシステムの限界が露呈してしまいました。ローアングルの影などの上空を通過する際に、空中の敵が暗く表示されてしまう現象が多発していたのです。

ライトマップの保存に加えて、ワールド内の密閉空間にボクセルグリッドが保存されるようになりました。このボクセルグリッドには、当該のエリア内に投射される全ての光線のライティングのサンプルが含まれています。これは非常に単純なシステムですが、マップのファイル容量とメモリが増加するために『Quake III Arena』まで使われなかったものと思われます。
テクスチャ非依存型ライティング
『Quake III Arena』から輸入されたもうひとつのコンセプトは、サーフェスに対応したライトマップの保存方法です。オリジナル版の『Quake II』では、テクスチャの変形や拡大縮小を行うと、ライトマップにも同様に変形や拡大縮小が行われました。エンハンスド版では、ライトマップはテクスチャのサイズではなく、ブラシのサイズに応じて保存されるようになります。

アンビエントオクルージョンのベイク化
「ericw-tools」で最初期に実装された拡張機能のひとつがアンビエントオクルージョン(別名ダートマッピング)です。これは面同士が隣接する部分を暗くして、そのような場所では通常反射光が少ないことを再現するもので、ワールドに深みを与える効果があります。

フォンシェーディング
『Quake II』の発売後に「ArghRad」というツールがリリースされました。これはライティング強化用のツールであり、フォンシェーディングをサポートしていました。フォンシェーディングとは1970年代にさかのぼる古典的な技術で、低ポリゴン面におけるライティングを調整するものです。これにより、立体を再構築してそのポリゴン数を増やすことなく、その立体をより滑らかに見せることができるのです。アップデートされたマップでは、必要に応じてこの技術が使われています。

半透明材質
空間内のライティングを大幅に向上させる変更も施しました。半透明テクスチャは、投射された光線を透過させ、そのテクスチャの色を光の投影先にある程度反映するようになりました。つまり、色付きのガラスや、ホログラム、端末、その他のブラシは光を透過させ、その透過光に適切なエフェクトを付与するようになったのです。

発光する液体
あらゆる大きさの液体があるマップの作成が大幅に改良されるため、『Quake』マップ制作者コミュニティから好評の機能です。オリジナル版では、液体は発光せず常に最大の輝度で表示されました。エンハンスド版では、液体は下側の光線をさえぎることなく、他の表面と同様にライトマップが適用されます。

グラフィック
『Quake II』発売当時の画期的な新機能は色付きのライティングでした。今となっては、これは当たり前の機能です。とはいえ再リリース版『Quake II』では、オリジナル版のアートスタイルを忠実に守りつつ、元々の素材をさらに生かすための軽微なアップグレードをいくつか施しています。
アニメーション
『Quake II』でPaul Steedが手がけたアニメーションは、ゲーム内のキャラクターに非常な深みを与えています。敵が微かに動いたり、待機しているアニメーションから、派手な宙返りやダイブのアニメーションに至るまで、敵の動作はとにかく予測不能です。私たちがリリース当時の本作を始めてプレイしたとき、ブラスターの攻撃を避けるためにGuardが伏せるのを見て驚いたものでした。とはいえ、当時の技術には限界があったために、これらのアニメーションは本来持っていた力を最大限に発揮できていませんでした。
まず、MD2モデル形式は頂点の正確さという点において限界がありました。特に一人称視点での銃器のモデルに顕著な「ぐねぐね」する現象はこれが原因です。エンハンスド版では、ゲーム内に存在するほとんどのモデル用の元々のアニメーションファイルを復元し、これらの高解像度のアニメーションを使ってエンハンスド版モデル用の骨格アニメーションを生成することで上記のような現象を解消できました。

骨格アニメーションに切り替えることで、一部の状況下で線形補間に失敗していた問題も解消できました。最も顕著な例がParasiteの死亡アニメーションで、非常に高速で宙返りと回転を行うために線形補間に失敗しており、Parasiteがグチャグチャのポリゴンの塊と化してしまっていたのです。

グローマップ
『Quake II』のテクスチャには、スクリーンやライト(武器の発光部分など)が多数含まれています。ただしこれらのテクスチャは、元々のエンジンでは他のテクスチャと同様に光と影の影響を受けていました。そこでグローマップへのサポートを追加し、テクスチャに重ねるマスクとして発光部分を指定できるようになりました。これにより、敵に付いているライトが暗い場所で光るようになり、武器も光るようになります。これが既存のスキンに描き込まれたライティングのディテールを引き立たせてくれます。

ハイトフォグ
フォグのサポートを拡張し、マップ製作者が異なる2色を指定できる高さベースのフォグへのサポートを追加しました。これはマップ内のボリュームではなくポストプロセスのエフェクトとして実装されています。この方式には多少の欠点もあるものの、空間に変化を付けたいマップ制作者にとってはうってつけのエフェクトです。

マズルフラッシュ
正確には技術的な追加要素ではありませんが、ゲームプレイを大幅に改良する変更点なので、ここで紹介しても差し支えないでしょう! プレイヤーと敵双方の武器の攻撃時に、ダイナミックライトに加えてマズルフラッシュが発生するようになりました。これで誰から攻撃を受けているのかを速やかに判別しやすくなります。特に、明るい屋内においてダイナミックライトが見えにくい場合に効果的です。

オーディオ
エンハンスド版の『Quake II』のリリースにあたってオーディオを改良しました。元々のオーディオコードにあったバグを修正しただけでなく、高速CPUにおけるボイスのサポート数上限を引き上げたことにより、各テクスチャに材質名を付与できるようになりました。
これには2つの目的があります。1つ目は、当たり判定が生じた表面の材質をトレースしてその結果を返すことで、それぞれの表面に合った個別の足音を鳴らせるようにすることです。2つ目は、部屋のサイズと材質の大まかな推定値を計算し、それに基づいてリバーブのプリセットを選択できるようにすることです。これにより、地下の下水路での音響と、屋外の草原での音響は異なったものになります。
人工知能(AI)
『Quake II』のAIは、開発過程において大きな変更を経てきました。『Quake II』では元々QuakeCという言語が使用される予定でしたが、開発後半においてインタプリタ方式のコードからネイティブライブラリに変更するという決断が下されたのです。これにより、既存のQuakeCを全てC言語へとポートする必要が生じ、その過程でAIは簡略化されて初代『Quake』に近いものとなりました。この再リリース版では、BOTに追加の機能を構築し、その内部ロジックをさらに表面化させて、敵AIで活用できるようにしました。
ナビゲーションの改良
本作のDLLにおいてBOTのナビゲーション機能の多数を表面化させ、ゲーム内において任意の地点間のルートを管理できるようにしました。ただし、AIは今まで通りの手動配置されたナビゲーションポイントを必要とします。当初、ナビゲーションメッシュ生成のためにRecastなどのソリューションを検討したのですが、この作業は開発スケジュール内に収められないと判断し、代わりに既存のBOT用ツールを改良することを選びました。

オリジナル版の『Quake II』のAIは、環境内の移動経路を認識するための非常に基本的な機能を備えていました。エンハンスド版では、AIはプレイヤーに接近するための目標を設定して、複雑な室内や階段を通り抜けたり、地形を利用して飛び降りたりできるようになりました。
意思決定の改良
AIの意思決定を改良し、敵はオリジナル版よりも複雑に行動するようになりました。敵がプレイヤーに攻撃を当てられる状況下でのタイミング判断が大幅に改良されます。これは複数の攻撃手段を持つ敵において顕著です。
例えば、Gunnerのチェインガン・アームの射線が曲がり角の壁で遮られている場合、Gunnerは壁に向かって無駄撃ちするのではなく、グレネードを使うようになりました。また、接近中の敵は、移動目標地点に到達する前に射撃してくる場合があります。これらの変更により、AIの挙動や戦闘を大幅に変化させることなく、AIが適切でない判断を下すことを避けられるようになりました。
新しい飛行AI
飛行AIは、挙動をもっと自然にするために完全に作り直されました。突然停止するのではなく、減速して滑空しながら方向転換するようになります。Flyerドローンの大群が一箇所を目がけて突進していく際には、互いに衝突して跳ね返るようになります。
未使用コンテンツの復活
オリジナル版の『Quake II』のファイルを探ったことがある方は、当時のリリース時には使用されなかったアニメーションがあることに気付いたはずです。これらのアニメーションを確認して改良を加え、ゲームに再び追加しました。例えば、Technicianは奇襲の予備動作として凶悪な鉤爪を伸ばすようになり、Berzerkerのジャンプ攻撃はさらに恐ろしいものとなりました。

Parasiteには複数の変更を加え、より戦闘が楽しくなるようにしました。Parasiteの長い吻は投射物扱いとなり、回避すると壁にめり込みます。この挙動を追加することで、Parasiteが身体を引っ張ってひっくり返るアニメーションを活用し、またParasiteが攻撃に失敗した後の隙を作ることができました。

BOT
エンハンスド版『Quake II』で実装されたBOTの新機能の一部をご紹介します。
- BOTは行きにくいエリアにも到達できるようになりました。例えば、The EdgeにあるMegahealthにロケットジャンプを使用して到達できるようになりました。
- BOTはゲーム内の全ての武器、アイテム、パワーアップを理解し、適切な状況下で使用するようになりました。
- BOTは全ての敵を理解し、敵対する場合は攻撃するようになりました。
- BOTはジャンプしたり、しゃがんだり、エレベーターや足場に乗ったり、ハシゴを使ったり、敵を狙うトラップを仕掛けて、そのトラップを回避できるようになりました。
- MOD作者がゲームDLLから高位コマンドを与えることで、BOTの移動と行動を制御できるようになりました。
- MODに新しいアイテム、武器、敵を追加した際に、シンプルテキストファイルにエントリを追加するだけで、BOTがそれらの新要素を認識し理解できるようになりました*(詳細は以下を参照)*。
MODサポート用のデータドリブンBOT
各エンティティがBOTにとってどのような関係にあり、それらのエンティティがどのように機能するかを説明したデータファイル群によって、BOTは可能な限り迅速かつ簡単にMODをサポートできるように設計されています。MOD制作者にとっては、MOD固有の武器、アイテム、モンスターなどが記載されたMOD用定義ファイルを作成するのと同じぐらい簡単なことです。
利用可能なファイルの一覧と、アイテムファイルの例を以下に掲載します。

ナビゲーションエディターの改良
エンハンスド版『Quake II』では、どのマップにおいてもエディターでナビゲーションをセットアップでき、有用な情報とフィードバックも提供されます。エディターによって作成されたNAVファイルは個別のファイルとして保存されるので、MOD内に同梱したり、友人と共有できます。

デバッグツールの改良
様々なBOT用デバッグツールにより、特定のBOTをデバッグして、そのBOTに指示を与えたり、その思考を表示することが可能になりました。
これらのデバッグツールでは以下の操作を行えます。
- BOTの全般的状態や目標についての情報を表示する
- BOTの行動システムの現在状況を表示する
- BOTが考慮するゲームモードおよびアイテム/エンティティについての情報を表示する
- ナビゲーションテストのために、BOTにワールド内の移動目標を与える
- BOTが視認可能な敵および攻撃中の敵を表示する
- BOTの武器システムおよびBOTが利用可能なインベントリの現在状況を表示する

デバッグ用ライン
ゲームコードから単純なプリミティブを描画できるようになりました。これにより、エンティティの位置、ワールドテキスト、物体の移動方向などを描画することが可能になり、デバッグに役立ちます。
利用可能なデバッグ用レンダープリミティブは以下の通りです。
- 線
- 点
- 円
- 境界
- 球体
- 指向性ワールドテキスト*(テキストが常にローカルクライアントの視点の方を向きます)*
- 静的ワールドテキスト
- 円柱
- 光線
