FPSにおける射撃のシミュレーションはどのように発展したのか?
ファーストパーソン・シューティングゲーム(FPS)は、Wolfenstein 3Dが発売されて以来、ゲームにおける主要なジャンルのひとつとなりました。FPSというゲームそのものは、グラフィックの向上やeスポーツなどによって発展してきましたが、射撃における物理法則のシミュレーションはどのように発展してきたのかを、ソフトウェアエンジニアであるトリスタン・ユング氏が語っています。
Gamasutra: Tristan Jung's Blog - How Do Bullets Work in Video Games?
https://www.gamasutra.com/blogs/TristanJung/20191206/355250/How_Do_Bullets_Work_in_Video_Games.php
◆ヒットスキャン
FPSが登場して間もない1990年代頃は、レイキャスティングと呼ばれる手法で3D環境をレンダリングし、オブジェクト同士の交差を判断することが主流でした。
以下の画像はレイキャスティングで生成された3Dマップの例(クリックでGIFアニメを再生:約229KB)
そして開発者たちの「銃口から光線のような弾丸が発せられたら?」というアイデアから「ヒットスキャン」と呼ばれる手法が生まれました。
ヒットスキャンでは、プレーヤーが弾丸を発射すると、物理エンジンは以下のように動作します。
1:銃が向いている方向を特定。
2:発砲した際、銃口から規定の範囲まで光線を放つ。
3:レイキャスティングを使用して、レイ(壁や敵など)がオブジェクト(弾道)と交差したかどうかを判定。
4:レイとオブジェクトが交差し、「当たった」と判定されたターゲットは、壊れたりダメージを受けたりするなどの計算が実行される。
以下の画像の場合、点Aが銃だとしたら、点Bまで光線を放ちます。光線と立方体が交差すると衝突と判定されます。
ヒットスキャンは単純な手法ですが、さまざまな攻撃パターンに応用できます。たとえば、光線がオブジェクトを貫通する場合、複数のオブジェクトを同時に破壊することができたり、光線の最大範囲を無限にして、何かに当たるまで永遠に続くレーザーを発射したりすることができます。
また、レイキャスティングのメリットとして、処理が高速であることが挙げられます。サーバー側は光線の方向を追跡するだけでよいため、複数のユーザーが同期する際に必要な処理も最小限で済むとのこと。
そのため、FPSの多くのゲームがヒットスキャンを使用してるとユング氏は述べています。「Wolfenstein 3D」や「DOOM」をはじめ、2019年時点でも多くのゲームがヒットスキャンを使っており、「Overwatch」や、「Call of Duty」に登場する銃でもヒットスキャンの手法が取り入れられています。
Wolfenstein 3Dでヒットスキャンが使用されているシーンは以下(クリックでGIFアニメを再生:約204KB)
オーバーウォッチで使用されているシーンは以下(クリックでGIFアニメを再生:約2.28MB)
ヒットスキャンのデメリットは、銃から放たれる光線が無限大の移動速度を持っているため、弾丸が一瞬で目的地に到達してしまうという点です。つまり、射線上にターゲットがあれば、何百km離れていようと発砲した瞬間に弾丸がターゲットに当たってしまうわけです。加えて、ヒットスキャンの弾道は直線であるため、いったん弾丸が発射されると、風圧、重力などが弾丸に影響を与えることはありません。
初心者向けのカジュアルなFPSではヒットスキャン方式が使用される傾向にあるとのこと。ユング氏は、「没入的でリアルな」射撃体験を作り出すことを目的としたゲームであれば、ヒットスキャンでは満足な体験を生むことはできないと語っています。
◆プロジェクタイル
武器から発射される弾丸や発射体すべてを、新しい物理オブジェクトとして生成する手法がプロジェクタイルです。物理エンジンによって弾の質量や速度、発砲後に弾が受ける風圧・摩擦・重力・温度などを計算することができます。プロジェクタイルの登場により、弾道が直線的ではない銃火器を再現できるようになり、手榴弾やロケット弾といった武器が登場するようになりました。
プロジェクタイルが使用されているゲームとして、ユング氏は「マックスペイン3」や「Superhot」を挙げています。
以下は「マックスペイン3」で、キャラクターの動作などに合わせて弾道が変化するシーン(クリックでGIFアニメを再生:約7.1MB)
以下は「Superhot」で跳ね返る弾道が描かれているシーン(クリックでGIFアニメを再生:約3.47MB)
プロジェクタイルは物理エンジンの計算が増えるため、ヒットスキャンよりも処理に負荷がかかります。サーバー側でも、すべてのオブジェクトが同期していることを確認したり、同じサーバー上のプレイヤーの間でラグなどが生じないように、プレイヤー間の動作の不一致や競合を解決したりする処理が必要になります。
多くの人はプロジェクタイルを比較的新しい方法だと思いがちですが、実際にはヒットスキャンよりも前にプロジェクタイルは誕生していたとユング氏は述べています。FPSが生まれる前の1970年代頃から、「Asteroids」や「スペースインベーダー」、「ギャラクシアン」といったアーケードのシューティングゲームで使用されていました。
以下はAsteroidsでプロジェクタイルが取り入れられているシーン(クリックでGIFアニメを再生:約4.97MB)
◆ハイブリッドシステム
ユング氏によると、記事作成時点ではほとんどのゲームエンジンでヒットスキャンとプロジェクタイルの両方が取り入れられているとのこと。「HALO」や「グランド・セフト・オート」シリーズなどのゲームには、ヒットスキャンとプロジェクタイルの両方をサポートする武器があります。
以下は「HALO」でハイブリッドシステムが使用されているシーン(クリックでGIFアニメを再生:約3.68MB)
ゲーム開発者は、ヒットスキャンとプロジェクタイルそれぞれのシステムが持つ弱点をカバーするため、2つの手法を組み合わせて、より現実に近い銃の動作を作り出しました。たとえば、弾道に生じるずれを修正するために、各弾道に光線を描画し、物理エンジンは、光線が交差して空中で衝突するかどうかを判定します。
また、「Sniper Elite」シリーズでは、トリガーを引いた後、物理エンジンはヒットスキャンを使用して、弾丸が検出可能なターゲットに接近しているかどうかを判断し、ターゲットに接近していると判定された場合、弾道を持つ弾丸を発射するというシステムを採用しています。(クリックでGIFアニメを再生:約1.93MB)
「ゲームにおける弾丸の基本的な描画は、大規模な変化ではなく、小規模な改良に重点を置いているのは興味深い」とユング氏は語っています。今後はハイブリッドのアプローチによる手法に追加機能が加えられる形で射撃のシミュレーションが進化し、CPUパワーの増加などにより、より現実に近い射撃体験ができるとユング氏は予測しています。
・関連記事
ゲーム史に残る傑作FPS「DOOM」生みの親が語る「最近のFPSの問題点」とは? - GIGAZINE
「現実の車の動きをゲームで再現する方法」を実際のゲーム開発スタッフに直撃したムービーが公開中 - GIGAZINE
FPSを現実世界でしかもリアルタイムで再現するとこうなる - GIGAZINE
体をひねって着地するネコの動きを物理演算で作ってガンダムで解説 - GIGAZINE
マインクラフトで量子物理学の概念を体験できるGoogleとNASA製のMOD「qCraft」 - GIGAZINE
・関連コンテンツ