2020220

開発者ブログ: Y5S1における爆発と破片について

「レインボーシックス シージ」で爆発が発生した際、何が起きているのでしょうか?爆発のダメージを計算する際、どんな要素が入っているのでしょうか?その仕組みはどんなものなのでしょうか?

爆発は、「レインボーシックス シージ」のゲームプレイで重要な役割を担っています。ただ爆発するだけではありません。防衛網を無力化し、進入路を作り出し、情報と実用性をもたらし、勝利を手にする助けにもなります。この開発者ブログではこの爆発について、どのように機能し、どのように展開していくのかを掘り下げてみたいと思います。

爆発の分析

「レインボーシックス シージ」における破壊は独特で、同じ爆発は2度と起こりません。

一度爆発が起こると、ダメージと破壊は数ミリ秒で計算されます。プレイヤーにはそのグラフィックと効果音が表現され、爆発に巻き込まれた場合はダメージを受けます。これを可能とするために、爆発エンジンの処理はいくつかのステップに分かれているのです。

爆発の半径と形状

爆発のタイプは複数のデータポイントで決定され、これが爆発の形状と効果の半径を決めます。爆発の形状は爆発のタイプによって様々です。例えば、フラググレネードは放射状で、クレイモアは楕円状となっています。

爆発が起こると、ゲームは爆発の形状を測定し、物理エンジンにクエリ(処理要求)を送ります。その後、元の爆発とその形状をもとにして、爆発範囲内に存在する対象物(オペレーターやオブジェクト)のリストと共にクエリを返します。このリストこそが、爆発に影響される想定対象物のリストなのです。

[R6S] Explosions:R6 AOE Animated

*爆発が影響を及ぼす対象物として、範囲内のバリケードとオペレーターが選択される。*

レイキャストで爆発を受ける対象物を特定

爆発効果範囲内の想定対象物のリストをもとに、物理エンジンが「レイキャスト」を実行します。これは爆発の中心点から、影響範囲内の対象物とそのクエリ点までに情報探索用の線を投射することです。

全ての対象物はダメージを受けるかどうかを決定する、「クエリ点」というものを多数持っています。スケルトンのボーンをターゲットにしたり、オペレーターに任意のターゲットポイントを設定する代わりに、クエリ点でオペレーターが爆発ダメージを受けるかどうかを決定することで、より効率的にダメージ判定ができるだけでなく、パフォーマンスの最適化および処理遅延の最小化もできるのです。

レイキャストがターゲットにするクエリ点は特殊なパラメータがベースになっており、後に発生ダメージの計算をする上で必要なデータポイントを作成します。例えば、レイキャストは爆発中心点からオペレーターの持つ最も近い点の物理カプセルと、繋がった4つの点(オペレーターのグラフィックを取り囲んでいるもの)をターゲットとします。また、壁のクエリ点をターゲットにする場合には、別のルールが適用されます。

[R6S] Explosions:R6 Raycast Animated

*対象物が爆発に影響されるかどうかを決定するレイキャストの結果。*

ダメージを計算する前に、もう1つの変数を算入しなければなりません。周りにあるオブジェクトが爆発の効果範囲に影響を与え、プレイヤーのダメージを軽減する可能性があります。

あなたを救うメタデータ

レイキャストで爆発の効果を受ける対象物が決定されたところで、戻されたデータは爆発の発生を処理します。 「レインボーシックス シージ」には、爆発ダメージをブロックできるオブジェクトがあります。__全てのオブジェクトには、それが何であるか、ゲーム内の他の要因によってどのように働くかといったメタデータが設定されています。金属製のバリケード、城壁、展開型シールドなどのオブジェクトは、爆発ダメージをブロックできるメタデータを持っています。

レイキャストが爆発範囲内にいるオペレーターのクエリ点に到達する前に、爆発ダメージをブロックできるメタデータを持つオブジェクトの中を通っていた場合は、オペレーターは安全です。レイキャストが何にも当たらなかった場合、またはダメージをブロックできるメタデータを持っていないオブジェクトを通った場合は、ダメージを受けます。ThatcherのEMPのような、爆発範囲内に効果を与えるガジェットにもこれが適用されます。

[R6S] Explosions:R6 Results Animated

*爆発ダメージをブロックできるメタデータ入りのオブジェクト対Realblastの入っていないオブジェクト*

最後に、これらのデータポイントを総合して爆発ダメージが計算され、処理されるのです。

ダメージ量の決定

発生ダメージを計算する際、爆発の中心点からどれだけ離れていたかによって、ダメージが減少します。爆発の種類が違えばダメージの減少する割合はそれぞれ異なりますが、通常は中心点が最もダメージが大きくなります。レイキャストの結果により、最終的な発生ダメージは、爆発からの距離にダメージ減少割合を補間して決定されます。

破壊とダメージ

「レインボーシックス シージ」の爆発は、私たちが開発した破壊エンジン「Realblast」によって処理されています。これはプレイヤーの皆さんが「レインボーシックス シージ」でご存知のように、ユニークでダイナミックなゲームプレイを展開するために生み出された、一定の法則に従ってリアルに破壊を引き起こすためのシステムです。Julien L’HeureuxがGDCで行ったRealblastに関する講演は、こちらからご視聴いただけます。

一般的に爆発には2つの効果があります - 破壊とダメージです。ダメージはプレイヤーにダメージを与え、破壊は周りにあるものを破壊します。爆発ごとに影響のある範囲や爆発の形状は異なります。

[R6S] Explosions:R6 DamageVsDestruction Animated

*破壊範囲(Realblast)とダメージ範囲。*

「レインボーシックス シージ」では現在、最初のレイキャスト探索とクエリが返ってきた後で、ダメージと破壊の効果が発生する範囲を決定しています。レイキャストが障害物に当たった場合、ダメージを受ける範囲はRealblastの半径に限られます。

しかしながら、爆発の効果とその範囲に対する現在の処理方法は理想的なものではなく、爆発がリアルさに欠けることもあります。例えば現在の爆発システムでは、屋内でC4を使うと壁でダメージ範囲が制限されるため、屋外でC4を使った方がずっと殺傷能力が高くなります。

Y5S1の破片の変更について

Y5S1では爆発に対して、わずかながらも非常に重要な改善が行われ、これによって爆発によるダメージがよりリアルで自然なものになります。「レインボーシックス シージ」の爆発には、破片の概念を取り入れる予定です。__つまり破壊可能なオブジェクトによって爆発ダメージの範囲が制限されなくなり、先ほど述べた「破壊」対「ダメージ範囲」の問題が解決することになります。

プレイヤーが受けるダメージは、レイキャストが途中でぶつかった破壊可能なオブジェクトの数に基づいて軽減されるので、爆発ダメージは破片によって一層リアルになります。爆発ダメージの起点になった場所から爆発の影響のあった方向へ、破片による穴ができるようになり、これによって今まで以上に視覚的なリアルさが増し、爆発はより自然なものとなります。

[R6S] Explosions:Shrapnel Animated

*破片の変更。*

要約すると

「レインボーシックス シージ」で破壊に使用されている技術は、このゲームでしか体験できないリアルな結果と反応をもたらします。破片によるダメージが加わると、爆発の効果とダメージが今まで以上にリアルになり、それと同時に爆発の影響をより視覚的に分かりやすく、自然なものになります。

爆発と破片についてのさらなる情報は、より、Logic Bomb Podcastの独占先行プレイとディスカッションをご覧ください。