ニュース

「Rainbow Six: Siege」、多彩な“突破”を可能にした破壊システム

奥深い戦術プレイの背景に、最新のプロシージャル破壊技術「REALBLAST」あり!

3月14日〜18日開催



会場:San Francisco Moscone Convention Center

講演を行なったUbisoft MontrealのJulien L'Heureux
破壊システムがゲーム性に直結する「Rainbow Six: Siege」のコンセプト

 PS4/Xbox One/PCの3プラットフォームで昨年12月に発売された「Tom Clancy's Rainbow Six: Siege」は、長い歴史を誇る「Rainbow Six」シリーズのタクティカルシューターとしての本質を見事に復興してみせただけでなく、現代的なオンライン対戦ゲームとしても新鮮そのもので、出色の出来を誇るスマッシュヒット作となった。

 戦いのほとんどはインドアで展開する。立てこもるテロリストはそこかしこにバリケードを貼り、壁を強化し、トラップを設置して侵入者に備える。侵入を試みる対テロ部隊はグレネードやブリーチング・チャージといった各種の爆発物、テルミット、あるいは大型ハンマーといった“攻城兵器”で壁をぶち破り、バリケードを破壊して、作戦を遂行する。あるいは銃弾で壁に小さな穴をあけて、それを“銃眼”代わりに敵を狙撃することも可能……。オブジェクトの破壊をこれほどまでに緻密かつ大胆にゲームプレイ要素に融合させた作品は、かつてなかった。

 本作の深みあるタクティカルプレイを実現するための“背骨”となったのは、間違いなく、かつてなく高度な破壊システムだ。GDC 2016で行なわれたセッション「The Art of Destruction in Rainbow Six: Siege」にて、その秘密が詳しく披露されている。開発に5年を要したというこのリアルタイム破壊システム「REALBLAST」はどのようなものか、お伝えしよう。

【Tom Clancy’s Rainbow Six Siege - Gameplay Trailer Fall 2015】

リアルタイムポリゴン分割による本物のプロシージャル破壊システム

プロシージャル破壊システムの研究開発は2012年にスタート
はじめはガラス面の破壊プロトタイプを作成

 本公演を行なったのはUbisoft Montrealでテクニカルリードおよび物理システムのプログラマーを務めるJulien L'Heureux氏だ。Julien氏が属するUbisoftのテクノロジーグループは、各製品の開発からは独立した組織で研究開発に特化し、各分野の専門家が集まっている。その中でも特に破壊システムについてはプログラマー集団による専門チームが存在し、社内製品で活用するためのリアルタイム破壊システム「REALBLAST」を5年にわたって開発してきているという。

 「REALBLAST」は破壊表現のための包括的なソリューションで、ランタイムライブラリ、3Dモデルの分割ツール、属性エディタ、デバッガー等のコンポーネントから成る。初めて活用されたのは2013年に発売された「Assasin's Creed IV: Black Flag」。帆船同士の砲撃戦を描くこの作品で、船体の破壊表現のために活用。その後いくつかのゲームで活用されつつ、本作「Rainbow Six: Siege」でついに、ゲームのコア要素としての活用が行なわれた。

2013年に開発された、包括的なプロシージャル破壊システムのプロトタイプ。現在の本作なみにいろいろなものが破壊できるが、動作が非常に重い

あらゆる表面を破壊して、侵入、視線確保、攻撃ができるというゲーム仕様
リアルタイムでポリゴンの切り抜きを行なう。この処理は2Dで実行
切り抜かれた形状に合わせてポリゴンを分割

 「Rainbow Six: Siege」のために求められた水準はすこぶる高いものだ。まずゲームプレイ要素として、正確かつ無限大の可能性を持つ破壊が可能であること。そして壁の強化やバリケードの設置が可能であること。それを通じて多彩な防衛と攻撃の戦術を取れるようにすること。これを実現するためには壁、バリケード、床、落とし戸など、ありとあらゆる構造がプロシージャルに破壊できるようシステムを構築する必要があった。

 そこで最大の眼目となったのが、ガラス、壁、床などの平らな面に対するプロシージャル破壊システムの実装だ。本作では分厚いコンクリートを除く、ありとあらゆる壁が、どの位置でも破壊可能になっている。破壊する位置の正確な再現も重要で、プレーヤーの意思やテクニックが緻密に再現されなければならない。

 これを実現するために採用されたのが、リアルタイムポリゴン分割によるプロシージャル破壊アルゴリズムだ。

 この方式では、壁はただの1枚ポリゴンとして表現されている。そこに、破壊が及ぶ範囲を示す2Dポリゴンの形状を当てはめて切り抜き、ポリゴンを分割。リアルタイムかつプロシージャルに、破壊後の形状を作り出すという方式になっている。

 このとき切り抜く形状は、破壊の手段や破壊の対象の材質によってどんなパターンでも定義できる。テルミットによる破壊なら四角い境界線を使い、コンクリートが砕けるような場合ならボロノイ図を使って分割形状を算出、ガラスやブロック塀など特徴的な破壊パターンを示す素材にはテクスチャベースでそれぞれの破壊形状を定義する。

 破壊する位置は自由自在だし、複数の材質に跨った破壊、複数レイヤーの構造を持つ壁の破壊も難なく表現できる。問題は大量にメモリをくい、処理に時間がかかることくらいだ。このような方法を組みわせることで、多彩で説得力のある“破壊の形”が表現できるようになっているわけだ。

破壊面をカットする形状には任意のものが使え、多彩な破壊パターンを表現できる

複数の破壊が重なっても常時60fpsのゲームプレイを実現

切断面にポリゴンやテクスチャーによるデコレーションを施してビジュアルクオリティを上げる
破壊に合わせてAIのナビゲーションメッシュも更新する
複雑な破壊には1フレーム以上の時間がかかる

 とはいえ、壁を破壊するたびにフレームレートが激落ちするようではプレイ感覚が著しく悪いものになってしまう。この複雑なアルゴリズムをどうやって常時60fps駆動させればよいだろう。

 ポリゴン分割による壁ポリゴンのアップデートだけならまだ良いが、実際にはビジュアルクオリティの向上のため、破壊後のモデルに対し、破壊で切り抜かれた境界線上にポリゴンによる装飾と、デカールテクスチャによる汚れ表現を加えることで、説得力のある見た目を実現している。

 さらに、破壊形状にあわせて当たり判定用のメッシュ、ナビゲーションメッシュ、サウンドの反響システムのデータも更新。壁一枚壊れるだけでも、ゲーム内のほとんどのサブシステムに影響を与え、様々なデータの更新が必要となり、非常に大きな処理時間を食ってしまう。

 具体的なデータとしては、PS4基準で弾丸の穴1個開けるのに1.1ミリ秒、石積みの壁1枚破壊するのに2.8ミリ秒、2レイヤーの石積み+2レイヤーの木の板で構成される壁を破壊するのに19.5ミリ秒。実際には1度の爆発で複数枚の壁が壊れたり、他の物理オブジェクトも巻き込みながら破壊することもあるし、複数の爆発が同時に起こることも想定しなければ、安定動作は保証できない。

 そこで本作で採られたのが、破壊処理の非同期化だ。グレネードの投擲、ブリーチングチャーチのスイッチを入れるなど、プレーヤーが爆発をトリガーした時点で(つまり実際に爆破が起きる前に)破壊対象のオブジェクトの処理を開始し、1フレームごとにほんの少しづつ破壊シミュレーションをすすめる。それが完了し、爆破アニメーションが実行されたタイミングで破壊シミュレーションの結果をゲームに反映する。こういった仕組みのため、大規模な破壊に繋がるシチュエーションではボタンを押してから壁が破壊されるまでにちょっとした“ラグ”が感じられることもある。

 破壊シミュレーションを時間分割して少しづつすすめる部分はマルチスレッド処理だ。破壊シミュレーションに要する各処理はごく小さな単位の関数に分割され、1フレームで処理が終わらない部分は将来のフレームにリスケジュールされる。この部分はデバッグが非常に難しくなるのがネックだ。

 「Rainbow Six: Siege」ではこのような工夫の上に高度な破壊表現を実現していた。この破壊システムだけで400MB近いメモリを専有するあたり、完全に次世代機向けの技術となっているが、その効果の大きさは本作をプレイした人なら全員が御存知の通りだ。新技術の開発に貪欲な姿勢を見せ、それを見事にゲーム性へ昇華するUbisoftの姿勢を賞賛したい。

非同期および事前破壊のテクニック。ユーザーの入力で破壊予定が確定した時点で処理を始めてしまう
穴が開きすぎて複雑になりすぎた壁については自己崩壊することで最適化している

(佐藤カフジ)