|
会場:明治学院大学 白金キャンパス
今回の講演では「次世代マルチコアおよびPhysXのスケーラビリティのための先進物理」と題打ち、同社のアプリケーションエンジニアであるトーマス・ラサンスキ氏がプレゼンテーションを行なった。Xbox 360やプレイステーション 3、最新PCといったマルチコアプロセッサを複数搭載する次世代ゲームプラットフォームにおいて、いかに効率的な物理シミュレーションとそれに基づいたゲームを実現していくかが主題。完全にプログラマ向けの内容であり、専門用語とプログラム・コードが随時出てくる専門性の高いセッションとなった。
■ ゲーム業界最先端の物理エンジン 同社は世界中のゲームデベロッパの注目を集めている企業だ。今回のセッションも満員御礼の大盛況。なぜこれほど関心を引くのか。その理由は同社の物理エンジンの先進性にある。 同社の開発した「NovodeX」物理エンジンは、従来の物理エンジンのパラダイム「イベント・ドリブン・フィジック (イベント駆動物理)」に対し、「フィジック・ドリブン・イベント (物理駆動イベント)」という新しいパラダイムのもと開発されたエンジンだ。同エンジンが見据えるのは、ゲーム環境を構成するほとんどの物体が物理エンジンによって制御される世界である。 従来のゲームではごく一部の物体が物理制御されるのみであったが、ゲーム環境のほとんどが物理制御されたオブジェクトで満ちている世界では、「箱が転がる」、「板が傾く」といった物理現象が他の物理オブジェクトに干渉せずにいられないので、ある現象が連鎖的に別の現象を引き起こしていく。言い換えると、物理処理をきっかけとしてゲーム上のイベントが発生していくことが世界の基本力学となるわけだ。これが「フィジック・ドリブン・イベント」の基本的な考え方である。 そして同社が開発した「PhysX」チップは、「NovodeX」物理エンジンによる物理処理をハードウェアで高速化する「PPU (Physics Processing Unit)」である。グラフィックレンダリングを高速化する「GPU (Graphics Processing Unit)」の物理処理専用版だと考えればよいだろう。物理処理を高速化する専用のハードウェアというのは、少なくともゲーム業界では初の試み。このチップの能力はなかなかのもので、Pentium 4 3GHz程度のCPUに比べると2桁ほど違うパフォーマンスが発揮されるようだ。
同社の物理エンジンはこのように優れたポテンシャルを持つため、先進ゲームデベロッパから熱い注目を浴びている。同エンジンがEpic-Gamesの開発する「UnrealEngine3.0」に採用されていることは有名だが、国内においてもソニーやセガなどの大手ゲーム企業、あるいはガンホー・オンライン・エンターテイメントのようなオンラインゲームに特化する企業も、同社との業務提携やエンジンのライセンシング契約を結んでいる。同社ウェブサイトのニュースリリースを眺めていると、大手ゲーム企業はのきなみ同エンジンの採用を考えているのではないかと思えるほどだ。一昔前は「Havoc」物理エンジンが主流であったが、業界全体を眺めてみると、その流れが一気に「NovodeX」および「PhysX」に世代交代しているようである。
■ 「物理」に満ちた世界 AGEIAが提唱する次世代ゲームの世界は、「フィジック・ドリブン・イベント」の考え方が代表するように、あらゆる3Dオブジェクトが物理処理によって制御される世界だと思われる。触れるものすべてが、本来あるべき挙動を示す世界である。 想像してみよう。ゲームステージを構成するあらゆる3Dオブジェクトを動かすことができ、破壊することができる世界。たとえば壁を破壊して通れるようにする、あるいは橋を爆破して通れないようにする。部分的にこのような要素を表現したゲームは過去にもあったが、それは「物理処理」によってではなく、ゲームデザイナーがあらかじめ設定した「イベント」によって駆動するものであった。「イベント」によって駆動する環境の変化は、あらかじめデザインされた組み合わせ以上の広がりを持つことはない。 物理制御によってこのような現象が引き起こせる世界では、プレーヤーを取り巻く環境そのものがプレーヤーとの相互作用によってダイナミックに変化していくので、毎回のゲームプレイが全く異なったバリエーションとなる可能性が高くなる。確かに、無秩序に何でも破壊できるようなゲームが優れているとはいえないが、こういった「可能性」を考えられること自体、ゲームデザイナーのインスピレーションを刺激し、全く新しいゲームが生まれる余地を広げていくのである。物理処理の地平が広がっていくことは、開発者とゲームユーザーの双方にとって良いニュースであることは確かだろう。 当然、このような物理処理が基本となる世界を作り出すには、大量の物理オブジェクトを同時に、そして相互に作用するよう処理する必要がある。 従来のゲームプラットフォームはシングルプロセッサのアーキテクチャであり、レンダリング、サウンド処理、ユーザー入力、そしてゲームロジックといった多様な処理をひとつのCPUコアを共有して行なう必要があった。このため物理処理に割けるCPUパワーは僅かで、非常に限られた物理環境しか構築できなかったわけだ。
こういった旧来の物理環境については、「Half-Life2」のような、フィールドを歩いていると時々、物理処理されたオブジェクトを目にするといったものを想像してほしい。ゲーム中にあるシーソーやブランコのような物理駆動するオブジェクトを触ってみて、それがゲーム性にはあまり影響しないことがわかるだろう。気の利いた物理処理の活用法としては、クレーンで物体を吊り上げて移動させるといったもので、「もっとましな使い道あるんじゃないの?」と考えた人も多いと思う。しかし、シングルプロセッサという限られた資源の中では、それで精一杯であったのも事実。ここに物理エンジンの進化に対する確かなニーズがあるわけだ。
■ マルチプロセッサ環境で膨大な物理処理を行なうために
Xbox 360やプレイステーション 3のような次世代プラットフォームでは、CPUパワーが非常に強力な反面、メモリが非常に限られている。このため、グラフィックの表現力を従来より多様性のあるものにするためには、単にデータを増やしていく方法ではなく、計算によってエフェクトや挙動を作り出していくアプローチが必要だ。 実際、ソニーやマイクロソフトはデータを増やすよりも計算によって映像表現を増やしていく事を推奨しているという。これには、ウィル・ライト氏が開発中の「Spore」に見られるプロシージャルなコンテンツ生成や、「PhysX」のような物理エンジンが実現する物理駆動によるイベント発生が含まれるのだろう。 次世代プラットフォームは総じて複数のプロセッサが同時に利用できる環境となっており、あるプロセッサでゲームを動かすために必要なメカニズムを実行しつつ、別のプロセッサでプロシージャルなコンテンツ生成や物理処理を平行して行なうようなプログラムアーキテクチャが効果を発揮する。しかし従来の開発手法では特定のCPUコアにばかり負荷がかかってしまうためうまくいかない。マルチプロセッサに分散処理をさせることを前提として、必要な概念をあらかじめ織り込んだ製品設計をする必要があるのだ。
AGEIAの「PhysX」は、こういったマルチプロセッサ世代のプラットフォームにおいて、効率的なプログラムモデル実現していく仕組みを前提にデザインされているものだそうだ。演台に立つラサンスキ氏は、マルチプロセッサを有効に活用するため求められるプログラミングモデルを、「PhysX SDK」を用いたソースコード例を中心に解説していく。当然ながらハードコアなプログラマ向けの内容となったため、読者の皆さんにそのままお伝えすることは難しい。キモとなる要素をかいつまんで紹介しよう。
■ マルチプロセッサのための物理クラスとゲームループ戦略
物理クラスとは、プレーヤーキャラクタの制御などの「アプリケーション物理」、「Half-Life2」に見られるようなプレーヤーと直接インタラクトすることで駆動する「ゲームプレイ物理」、パーティクルシステムなど映像表現に使われる「エフェクト物理」、衣服や髪の毛の動きのようにダイナミクスが自己完結する「物理アイランド」、そしてフィールドなどゲームロジックを実行するための環境を生成する「準備物理」だという。 これらのカテゴリ分けは、プレーヤーとのインタラクションの頻度や、グラフィックとして表示すべきタイミングによって決定されているようだ。つまり、「アプリケーション物理」は、プレーヤーが入力を行なう機会が来るたびに毎回行なう必要があるが、「ゲームプレイ物理」はプレーヤーが接触した時点で同期すればよく、あとは並列的に実行しても良い。あるいは、髪の毛の動きを制御する「物理アイランド」などに至っては、プレーヤーの挙動如何にかかわらず、自己完結して処理を続けることができる。ここに分散処理のためのヒントがありそうだ。 ラサンスキ氏は続けて、ゲームプログラムでこれらの物理クラスを実際に実装する際にゲームループをどのように設計していかという具体論を説明する。名づけて「ゲームループの設計戦略」というテーマだが、これは以下の分類になるのだそうだ。
・インライン物理
・フルフレーム物理
・フレーム遅延物理
・ジャストインタイム物理
・マルチフレーム物理
いちプログラマとして感想を述べるならば、AGEIAの提案する「物理クラス」、「ゲームループの設計戦略」とその実例は、マルチプロセス処理の特性と快適なゲームプレイの実現といったテーマで考える限り、非常に理にかなった内容である。実際にゲームをプレイする快適さやゲームプレイの充実度といったプレーヤーの都合を十二分に考えた構成であり、かつ、マルチプロセッサという気難しいシステムへの対応としても理想的なソリューションである。
並列処理がバグの温床になりやすい点も問題である。プログラムの流れが非常に複雑なので、一見まともに動いているように見えても、ちょっとしたことで原因不明のバグが発生し、その原因究明のために数週間の開発期間が無駄になったりする。また、設計をどこかで誤るとプロセッサをストールさせてしまい、シングルプロセッサより劣るパフォーマンスになってしまったりする。このため、開発に利用する物理エンジンなどのミドルウェアが並列処理を前提としたデザインになっていることは、プログラマにとって死活問題なのである。
このようなエンジンが普及していけば、ゲーム開発に携わるプログラマはマルチプロセッサを利用したリッチな物理エンジンの活用をどんどん提案していけるだろうし、ゲームデザイナーも、そのポテンシャルを活用したゲームを考案する機会が増えていくだろう。これは全く新しいゲームが生まれる余地を大きく広げることになる。
■ 剛体物理はもう古い!? 流体シミュレーションにこだわったデモセッション では、このような技術を活用した次世代のマルチプロセッサプラットフォームで、一体どのようなゲームシーンが表現できるのだろうか。なんといっても、ゲームユーザにとっては、技術がどうこうよりも「ゲームがスゴいかどうか」が重要なのである。
ラサンスキ氏はこれを実際のデモンストレーションによって示してくれた。
使用されたプログラムは段々畑のような地形を転がり落ちる6,000個の球体をシミュレートするものだが、「PhysX」チップを用いないソフトウェア処理では動きが非常にカクカクしており、CPU利用率は4基のプロセッサとも100%。ここで「PhysX」チップを利用するプログラムに切り替えると動きがいきなりスムーズに。60fpsは出ていたであろうが、CPU利用率は1基が50%程度、残り3基は完全なフリー状態と、処理能力に大変な余裕が生まれた様子を示していた。「PhysX」チップの処理能力が相当に高いことが伺える。 「PhysX」チップはPCでのみ利用できるが、それを搭載しないXbox 360やプレイステーション 3においても、並列処理に特化したコアを持つため、こういった物理シミュレーションを行なえるパワーが得られるとのことだ。これを実際にどのように実装していくかについては詳しい説明はなかったが、次世代機のスペックを考えると十分に期待できる。
さて、この処理能力を生かしてどんな物理シミュレーションを行なうかが問題だが、次にデモンストレーションされたのは流体シミュレーションを行なうプログラム。画面中央に配置された車の上から溶岩や水、ドライアイスの煙のような質感の異なる流体が流れ落ちるというデモだ。物理エンジンのデモでありがちな「ラグドール」のような剛体ではなく、流体であることがポイント。
流体の物理というものは、ラグドールのような剛体物理に比べ計算量が果てしなく多い。複雑に形状を変化させる流体を適切にシミュレートするには、物体を構成する要素を細かいメッシュに分解し、各々を相互作用を計算にいれて全体の挙動を導いていく「有限要素法」的な手法が必要となるが、この方法で説得力のある映像を作るための計算量は、単純な剛体物理に比べて必要な計算量の桁が3つも4つも違ってくるものなのだ。 このデモでは、車体に流れ落ちる流体が非常に滑らかなフレームレートで、かつ、説得力のある動きを示しており、非常にインパクトのある映像を見ることができた。「PhysX」チップのポテンシャルを最も感じ取れる内容といえる。 ラサンスキ氏はさらに、3Dメッシュを「ゴム人形」のように挙動させるデモを紹介。これは、とあるチューリッヒ大学の教授が論文発表を行なったアルゴリズムを実装したものだという。このデモでは、牛や人間といった3Dモデルが作用の力に応じて適切に変形する様子が示された。
デモに使われたモデルにはボーンが設定されておらず、純粋にメッシュ単位の物理処理により伸びたり縮んだりといった動きを見せる。消しゴムのような素材で作られた人形を想像すると良いだろう。硬さパラメータを変えると、牛の形状だったモデルが重力に負け、プリンやスライムのようにドロドロになってしまう状況も再現される。スクリーンショットではわからないが、実際に動いてるところを目撃するとなかなかショッキングな映像である。実際のゲームへの応用は想像することも難しいが、こういった物体を仮想世界でいじくりまわすことが面白そうなことは確かである。
■ 流体物理をも可能にする「PhysX」のポテンシャルに思う
筆者の認識では、現在のフライトシミュレータは、航空機の挙動を「職人芸的」な、謎の変数まみれのプログラムで無理やり再現しているところがある。しかし大気と機体との関係を有限要素法でリアルタイムに解いていくアプローチが可能になれば、フライトシミュレータはもっとリアルにダイナミックに、「本来あるべき」挙動を再現することができるようになるだろう。損害を受けて羽根の一部が吹き飛んだ状態のフライトモデルも無理なく再現することができる。フライトシムファンの筆者としてはいろいろと想像が広がるところだ。ドライビングシミュレータなどでも車体のゆがみやたわみを有限要素法で再現していくアプローチにより、よりリアルで自由度の高いものを実現することが可能になっていくだろう。 極端なことを言えば、この世に存在する物体に「剛体」は存在しない。あらゆる物体には弾性や粘性があり、外力が加えられたり温度が変わったりすると伸びたり縮んだり、たわんだりゆがんだりして変形するものだ。こういった物体の動きは従来のゲームで使われていたような剛体物理では再現できず、膨大な計算を要する方法でしか解くことができない。「PhysX」の活用は、純粋にゲームというよりシミュレータ分野での応用が楽しみな技術であるとの印象を抱いた。 今回このセッションで紹介された物理エンジン、そして「PhysX」チップは、ゲームが物理シミュレーションを活用していける環境を整え、より多くのゲームが高度な物理処理を搭載する世界を拓いていく基本技術になっていくことだろう。現在のところ「PhysX」に対応したゲーム製品はまだ出荷されていないが、Xbox 360、プレイステーション 3といった次世代ゲーム機、そして次世代のPCゲームにおいては標準的なものになっていくかもしれない。そのとき、ゲームはどのような楽しみをプレーヤーに提供してくれるだろうか。きっと、もっとダイナミックで面白い世界を与えてくれるに違いない。
そんな手ごたえを感じさせる、非常にエキサイティングなセッションだった。物理処理とゲームの未来に大きな期待を寄せたい。
(2005年8月31日) [Reported by kaf@ukeru.jp]
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp Copyright (c)2005 Impress Corporation, an Impress Group company. All rights reserved. |
|