【Watch記事検索】
最新ニュース
【11月30日】
【11月29日】
【11月28日】
【11月27日】
【11月26日】

Game Developers Conference 2008現地レポート

西川善司の3Dゲームファンのための「GDC 2008最新ゲームエンジン」講座(前編)
和製CAE対応「オクターブエンジン」、ソニー製なのにXbox 360対応「PHYRE ENGINE」、Valve「Team Fortress 2」

2月18~22日 開催(現地時間)

会場:サンフランシスコ Moscone Convention Center

■ プロメテックソフトウェア「OCTAVE ENGINE」

 プロメテックソフトウェアは、物理シミュレーションベースのミドルウェアやCAE (Computer Aided Engineering) ソフトウェアの開発を専門とするソフトウェアメーカーだ。最近では、エンターテインメント分野への進出が著しい。ゲーム向けのミドルウェアとしては自然現象シミュレーションをリアルタイム向けに実装した「OCTAVE ENGINE」が高い評価を受けており、昨年秋にはOCTAVE ENGINEに含まれる「WATER SURFACE BEAT」エンジンがバンダイナムコゲームスの3D格闘ゲーム「鉄拳6」に採用されたことが話題になった。

 GDC 2008ではプロメテックソフトウェアは初めてエクスポフロアにブースを出展、同社の新作ミドルウェアとシミュレーションエンジンを披露していた。

・「OCTAVE ENGINE CASUAL」
  XNA版も開発中のカジュアルゲーム向け本格物理シミュレーションエンジン!

 ブース内で来場者の人気を最も集めていたのは「OCTAVE ENGINE CASUAL」と呼ばれる2Dベースのパーティクルベースの物理シミュレーションエンジンだ。各パーティクルは密度、速度、質量、粘性といった物理パラメータを持っており、リアルタイムに相互干渉に配慮した物理シミュレーションを行なって、次の状態を決定している。そのため、剛体物理だけでなく柔体、塑性体 (そせいたい:変形しやすい材質)、流体、気体などの物理シミュレーションが行なえるようになっている。ただし、あくまでも2次元。だから「Casual:カジュアル」なのだ。

描いたものがその場で物理シミュレーション! 異なる材質を描いて組み合わせることで複雑なキャラクタアクションも実現可能 描いた素材に任意のテクスチャを適用することも可能

 ユニークなのは完全リアルタイムでフルインタラクティブなところ。

 公開されていたデモはペイントソフトライクなインターフェイスを採用しており、操作性も直感的でおもしろい。ペイントソフトで色を選択するような感覚で、パレットからマテリアル(材質特性)を選択してマウスを動かせばその材質で線分を描くことができる。描いた瞬間から物理シミュレーションが適用されてその材質ごとのユニークな挙動を示し出す。

水を流して、火のマテリアルを描き足せば水は沸騰して噴き出す
描けるのは流体っぽいものばかりではなく、剛体もOK。画面は剛体でドミノ倒しを再現 しかし、ご覧のようにシミュレーションは全てパーティクルベース。全ての材質をパーティクルベースの物理シミュレーションで統合しているのがOCTAVE ENGINE CASUALの特徴

 適当に壁を描き、そこに水を描くとザバーっと壁に沿って水が流れるし、水の流れる先にコップを描けばそこに水がたまる。モチのような粘着性のあるものをコップにくっつけるように描けばちゃんとくっつく。ここにさらに水流せばしばらく頑張ってくっついているが、次第に水流の強さに負けて流れてしまう。コップの底に穴を開ければ水がそこから流れ出て、モチがこの穴に詰まったりする。

 文書ではなかなかおもしろさが伝わらないので、実際のインタラクションの様子はプロメテックソフトウェアから提供していただいた下の映像の方を見て欲しい。

【「OCTAVE ENGINE CASUAL」のデモ映像】
[WMV形式: 33.0MB 3分33秒] ZIP圧縮
※クリックするとダウンロードが始まります

 「動きは超リアル、見た目はカジュアル」というギャップがユニークなこのエンジンは、そのエンジン名の通り、カジュアルゲームでの活用を前提に開発が進められている。

 名前も見た目もカジュアルだが、実はまともなデータ並列処理型のパーティクルベースの物理シミュレーションを実装しており、意外にもプロセッサ負荷は高い。「プロセッサパワー的にはWiiで何とかこなせる。携帯ゲーム機でいうとPSPはなんとかいけそうだが、ニンテンドーDSでは結構大変そう」(担当者) という。もちろんPS3やXbox 360ならば問題はないそうで、現在はXNA版も開発中らしい。XNAはカジュアルゲームプラットフォームとしてMicrosoftが力を入れつつあるのでXNA版の登場は待ち遠しいところだ。

設定したマテリアルにテクスチャ(画像)を適用し、これに物理シミュレーションを適用するとユニークなインタラクティブシーンに変身する。「ムンクの叫び」調の人物が塑性体設定になっておりブルブルと揺れるが、ここにナイフを入れるとプチっと切れてしまう
落書き感覚で物理シミュレーション!
何から何までパーティクルベースの物理シミュレーション!

 「OCTAVE ENGINE CASUAL」は現在も開発中とのことで、何件か実際の製品採用に向けての問い合わせが来ているそうだ。個人的な意見だが、こうしたリアル系物理シミュレーション型のカジュアルゲームは、WiiリモコンやPS3のSIXAXISコントローラでプレイしたら楽しそうだと感じた。

実際、現在、WiiリモコンをPCに接続し、この「OCATVE ENGINE CASUAL」をWiiリモコンでインタラクティブ操作させるデモンストレーションも披露していた MAC版の「OCTAVE ENGINE CASUAL」はMac Book内蔵の3軸加速度センサにも対応

・「OCTAVE ENGINE HONGO」
  CAEのための大局物理シミュレーションエンジンはGPGPUで!

 「OCTAVE ENGINE HONGO」もパーティクルベースの物理シミュレーションエンジンだが、こちらは3Dベースのものになる。また、パフォーマンスはもちろんだが、大局物理シミュレーションを正確にこなすことを前提として開発されているため、ゲームでの活用というよりはCAE (Computer Aided Engineering) 用途をターゲットにして開発が進められたものだという。CAEは、製品設計をする際にコンピュータ上でその製品の性能や耐久性を評価する仕組みの1つで、これまでは、その計算量の多さからシミュレーションを高速に行なうには高価な超高性能コンピュータ (ハイパフォーマンス・コンピュータやスーパーコンピュータ) が必要であった。「OCTAVE ENGINE HONGO」は、このCAEレベルの大局物理シミュレーションを比較的リーズナブルでコストで導入できるGPUにて実装したものだ。

6GPUを使った100万パーティクルのシミュレーションを披露。画面は歯車がオイルをかき混ぜている様子をシミュレーション中

 開発にはNVIDIAのGPGPU向け開発プラットフォーム「CUDA」を採用しており、GPUを増やせば増やすほどパフォーマンスが向上するスケーラブル設計になっているという。なお、プロメテックソフトウェアでは4GPUのPCシステムで100万パーティクルの大局物理シミュレーションを30fpsで処理できたと発表。CAEレベルの大規模物理シミュレーションをPCシステムで、なおかつインタラクティブ性を維持した形で提供できたことの優位性を強く訴求していた。

 今回の展示においてはNVIDIAの協力があったとのことで、QUADRO PLEX-モデルIV (Quadro FX 5600×2) が2台と、TESLA S870 (Tesla C870×2) が1台、デモ実演用として提供されたという。このシステムを用い、プロメテックソフトウェアとしても初挑戦(?)となった6GPUによる300万パーティクルの大局物理シミュレーションのリアルタイム実演も行なっていた。

画面下。6GPUを認識している点に注目 上がTESLA S870、下2つがQUADRO PLEX-モデルIV どのパーティクル群がどのGPUで処理されているかを色分けして明示。このデモではレンダリングはGeForce 8800 GTS(512MB)で行なっていた

 各GPUは自分の管理範囲を持っており、その範囲のパーティクルを管轄下に置いて計算を行なっている。シミュレーションの結果で各パーティクルは各GPU管理範囲を飛び越えることがあるが、この際にはパーティクルの情報の交換が行なわれる。このGPU間データ伝送にはPCI-Expressバスが利用されているとのこと。

 現在も「OCTAVE ENGINE HONGO」は開発中で、2008年夏に正式発表を予定している。コンセプトとしては、プロメテックソフトウェアが提供しているCAE向けの物理シミュレーションシステム「FLUIDSISTA」のGPGPUバージョンという位置付けで開発が進められているようだ。

「OCTAVE ENGINE HONGO」ではシミュレーション結果をパーティクル状のままで表示する以外に、このようにシェーディングした3Dグラフィックスとして表示するソリューションも提供する。画面はパーティクルを水(水面)としてレンダリングした例になる

・プロメテックソフトウェアが採用するパーティクルベースの物理シミュレーションとは?

 ところで、プロメテックソフトウェアが「OCTAVE ENGINE CASUAL」と「OCTAVE ENGINE HONGO」の双方で採用しているパーティクルベースの物理シミュレーションとはどんなものなのか。

格子ベースの物理シミュレーション。NVIDIAのGeForce 8000シリーズ用のデモはこの方式の実装だった

 流体物理シミュレーションをGPUで実装する際、一般的なのはシミュレーション対象空間を格子化して、複数枚のテクスチャに割り当てる……すなわちボリュームテクスチャ化してシミュレーションを行なうことが一般的だ。NVIDIAのGeForce 8000シリーズ用のデモの煙のデモなどはまさしくこの方式の実装であった。

 こうした格子法は相互作用の計算範囲を隣接する格子同士に限定することができるので、局所性の高いデータ並列計算を得意とするGPUとの相性はいい。しかし、シミュレーション結果がこの格子解像度に依存してしまう弱点がついて回る。また、激しいエネルギー伝搬を伴った運動があった場合には、隣接する格子同士の計算だけでは破綻する危険性がある。

左が格子法、右がパーティクル法
 これに対してプロテックソフトウェアではパーティクル法……正確には「MPS法」(Moving Particle Semi-Implicit Method) を用いており、この方法にはシミュレーション単位を空間格子解像度に限定されない、自在な運動が許容されるパーティクル単位にできる利点がある。水面を取り扱うような流体物理シミュレーションでいえば、水面の格子法では追い切れない微妙な変化や、波から離れて生じる水しぶきの生成までを正確に追うことができる。

 もちろん、この方法ではシミュレーションの正確性はパーティクルの個数に依存する。パーティクル同士は相互作用する可能性があるためパーティクルの個数が多ければ多いほど計算量は爆発的に増加する。こうした計算モデルも、データ並列コンピューティングを得意とするGPUが向いているのではないか、というわけでGPU実装に挑戦したわけだ。ちなみに、GPUを用いたパーティクルベースの物理シミュレーションとはいえ、パーティクル同士の相互作用の可能性の探索などの処理にはCPUの処理も介入する。トータルなパフォーマンスを出すためにはGPU性能だけでなくCPU性能も高いものが要求されるのだ。

プロメテックソフトウェアはMPS法による物理シミュレーション実装を得意としている

・「OCTAVE ENGINE NATURE」
  ゲーム向け和製物理シミュレーションエンジンがさらに進化!?

 ブース内では、東京ゲームショウ2007で公開され、なおかつバンダイナムコゲームスの「鉄拳6」に採用された「OCTAVE ENGINE NATURE」も展示していた。

「鉄拳6」に採用されたプロメテックソフトウェアの水面シミュレーション
(C) 1994-2006 NBGI

 「OCTAVE ENGINE NATURE」の基本情報については本連載のこちらを参照して欲しいが、この「OCTAVE ENGINE NATURE」のうち、「Sand Surface Beat」(SSB) がPS3の“某ゲームタイトル”で採用されることが決定し、SSBのPS3実装が完了したことが公開された。なお、そのSSB採用ゲームタイトルについては3月に発表があるとのことだが、詳細は2月末時点では非公開。Sand Surface Beatがゲームにおいて重要な役割を果たしているとのこと。

SSBは一言でいうならば砂の地形のリアルタイムシミュレーションエンジン

 SSBは一言でいうならば砂の地形のリアルタイムシミュレーションエンジンだ。細かく解説すると、細かい粒子が積み重なって形成される面の動きを算出するシミュレーションを行なう。だから砂だけでなく、雪面もシミュレーションできる。

砂面のシミュレーションは実はグリッドベースで行なわれている

 シミュレーションは、グリッドベース (頂点ベース)。砂の面の高さや傾斜に配慮し、流体物理的な計算を行なう。穴を掘っても穴の外周から砂が流れ込み、砂を盛りつければ穴をだんだん埋めることもできる。砂を積み上げていくと、その斜面が維持できなくなり、崩壊もする。

 SSBの現在のPS3向け実装では、開発期間やゲームへの実装などの都合もあってCellプロセッサのSPE (Synergistc Processor Element) を1個だけ活用した実装になっているとのことだ。しかし、今後は汎用性を高めるため、スケーラブルに複数のSPEに対応させられるバージョンの開発に乗り出したとのこと。

【Sand Surface Beatのデモ映像】
[WMV形式: 15.9MB 2分13秒] ZIP圧縮
※クリックするとダウンロードが始まります

 さて、「OCTAVE ENGINE NATURE」には、「鉄拳6」にも採用された、水面のシミュレーションを行なう「Water Surface Beat」(WSB) がある。今回の展示では、このWSBのシミュレーションの様子をパラメータの可視化付きで見られるデモも披露していた。

水面シミュレーションのWater SurfaceBeatはグリッドベースのシミュレーション
水流速度のパラメータを棒線で表現。棒線の長さが流速の速さ、棒線の向きは流れの方向を表わしている 突然地面を凹ませればそこに水が流れ込んでくる。その様子をシミュレーションして表示

 WSBでは「OVTAVE ENGINE HONGO」とは違い、パーティクルベースではなく、格子ベースの水面のシミュレーションを行なっている。詳細を言えば、WSBでは波の高さ、方向、粘性に加えて流速の情報に配慮したシミュレーションを行なっており、公開されたデモでは、水面の各頂点における速度と向きを可視化していた。

 このデモでは、リアルタイムに地形を上げ下げすることができ、その上げ下げで波が立つだけでなく、出来た地形の凹凸に沿って水が流れたり、渦を巻いたりする様子が観察できて面白い。デモ自体はシンプルなものであったが、シミュレーションの結果がわかりやすく可視化されているのが興味深かった。「ポピュラス」のような、地形造形がキーポイントになるゴッドシム系のゲームに使えばかなり面白くなりそうな印象を持った。

【Water Surface Engine】【Sky Engine】
Water surface Engineのデモ映像
[WMV形式: 16.9MB 2分21秒] ZIP圧縮
動的光散乱シミュレーションエンジンのSky Engineのデモ映像
[WMV形式: 3.07MB 26秒] ZIP圧縮
※クリックするとダウンロードが始まります


■ ソニー謹製なのにPCとXbox 360にも対応した謎のマルチプラットフォーム対応エンジン「PHYRE ENGINE」

SCEE R&D、Senior Engineer、Richard Forster氏
 GDC 2008の開催期間中に、開発ミドルウェアとしてはとてもユニークなものが発表された。それがソニー・コンピュータエンタテインメント・ヨーロッパ (SCEE) が発表した「PHYRE ENGINE」だ。

 GDC 2008の会期中、SCEE R&DのSenior EngineerのRichard Forster氏は「PHYRE ENGINE-The New Hotness」と題したセッションにて、この新しいエンジンの紹介を行なった。

 「PHYRE ENGINE」の発音は「ファイヤー・エンジン」であり、FIRE (火) を洒落て綴った感じになっている。

 エンジンスタイルとしてはフルソースサポートのモジュールタイプのエンジンで、アートデータ作成/処理のパイプラインまでが整備されている。サンプルゲームはアートセット付きのフルソース/フルデータセットで提供され、ドキュメントも付属。後発なだけにサービス精神旺盛の本格的な3Dゲームエンジンとなっているようだ。

 日本では、あまり知られていないエンジンだが、ヨーロッパでは既にライセンシー・タイトルがリリースされている。実例を挙げるとXbox LIVE Arcadeで配信中の「Grip Shift」(Xbox 360用、開発Sidhe Interactive)、PLAYSTATION Networkで配信中の「flOw+Expansion pack」(PS3用、開発Jenova Chen氏他)、「Colin McRae: DiRT」(PS3/Xbox360/PC用、開発codemasters) にて採用されている。

 そう、ソニー製なのに「PHYRE ENGINE」はPS3だけでなく、Xbox 360とPCにも対応したタイトル開発に使用可能なエンジンなのだ。

「Grip Shift」 「flOw」 「Colin McRae: DiRT」

・「PHYRE ENGINE」はソニー製なのにXbox 360に対応してる?

「PHYRE ENGINE」ランタイム
 とにかく驚かされるのがSCEE製なのに「クロスプラットフォーム」をウリにしているという部分。正確には「WindowsやXbox 360といった他プラットフォームに極力移植しやすく設計してある」という表現になっている。

 エンジンコアはマルチコアCPUに対応した設計になっており、特にPS3のCellプロセッサへの最適化が深いとのこと。これはまあSCEEなので当然といえば当然だ。

 エンジンの各機能はモジュール設計になっており、使いたい部分は自由に取り出して利用することができる。例えば自社ゲームエンジンに使える部分を「PHYRE ENGINE」から持ってくるといったことも可能だということだ。

 「PHYRE ENGINE」は、「低予算プロジェクト向け」をスローガンにして開発されてきたのでどちらかといえば既存のテクノロジーを組み合わせて使いやすくラッピングして提供するようなスタイルになっている。

 グラフィックスAPIは、PSSG (プレイステーション・シーングラフ) をコアにしており、物理エンジンはオープンソースの無料エンジン「Bullet」、あるいはライセンシー締結様式によっては「Havok」、「Ageia」のものが利用できる。

 そして「PHYRE ENGINE」は、実際のSCEE R&Dやソニー系ゲームスタジオが携わったゲームタイル開発でのノウハウがフィードバックされ、定期的かつスピーディにアップデートされる進化方針をとる。

「PHYRE ENGINE」のグラフィックスコアはPSSGベースなのがちょっと変わっている? エンジンモジュールはフルソース提供

 エンジンそのものがソースで提供されるので、どのように動いているか、どのようにしたら自分達のゲームに向いているかを自前でエンジンを改造しつつ実験が可能となっている。それこそ、SCEE R&Dからの正式バージョンアップを待たずに「PHYRE ENGINE」を独自方式にアップグレードして使っていくことも可能なのだ。

 3Dシーン作成やテクスチャなどのアートデータ作成のサポートも「PHYRE ENGINE」は行なう。「Maya」、「3DsMAX」などのDCCツール向けのデータエクスポーターは基本的なものが「PHYRE ENGINE」と一緒に提供される。具体的にはコンテンツデータの標準的なやりとり手法である「COLLADA」に対応したツールがコアとなるようだ。各種データを「PHYRE ENGINE」向けに実装するためのトータルツールとしては「PHYRE STATION」も提供される(後述)。

アートパイプラインもサポート 「PHYRE ENGINE」のブロックダイアグラム。データのやりとりの根幹を担っているのは「COLLADA」であることがわかる。3DグラフィックスAPIはOpenGL、Direct3D、LibGCMなど。LibGCMはRSXをハードウェアレベルで叩くためのローレベル・ライブラリのこと

・サンプルプロジェクトはフルソース、フルアートセットで提供される

3つのサンプルゲームはプログラムコード、データ、ドキュメント付きで実際にビルドしてプレイ可能
 ソース付きのサンプルゲームは3タイプが用意されており、1つは「トゥームレイダー」タイプの三人称アクション「DONKEY TRADER」、残り2つは一人称3Dシューティングタイプのゲームだ。

 ソースとデータは実際にビルドできるサンプルであり、プログラムを改造してエンジンの挙動変化を実際のサンプルゲームのプレイ結果として確認することができる。

 またソースコードのドキュメントや技術解説書も付属し、さらにソースレベルにはインラインのコメントまでが挿入されているという。

 そして、面白いのは、開発をWindows PCベースで、しかもMicrosoftのVisualStudioで開発できるというところ。グラフィックスAPIはOpenGL、Direct3Dを用いて開発することができ、PC上で動作させて動作確認もできる。最終段階でPS3用にコンフィギュレーションを変えてビルドすればPS3上で動作できるオブジェクトが生成できる。

 だから、PS3版だけでなく、Xbox 360版やPC版の開発も実質できてしまうわけだ。

「PHYRE ENGINE」はいわばプロフェッショナル向けのXNA?

・今世代のゲームエンジンの要求仕様を一通り網羅する「PHYRE ENGINE」

 「PHYRE ENGINE」は今世代のゲーム機に対応したエンジンであるため、マルチスレッド前提の設計になっている。それも、SCEE主導開発なので当然PS3にフォーカスした設計になっている。

 関心が高いCellプロセッサに7基内蔵されている128ビットSIMDプロセッサのSPU (SPU:Synergistic Processor Unit、SPE:Synergistic Processor Elementと呼ぶこともある) は、やはりジオメトリ処理にも活用される。具体的にはスキニング、モーフィング、カリング、アニメーション処理などで、このあたりの方向性は昨年、発表されたミドルウェア「Playstation Edge」とよく似ている。

 この他、「PHYRE ENGINE」では、SPUをストリーミングプロセッサ的に活用する仕組みや、シーンマネージメントも実装されているとのこと。また、エンジン利用開発者のオリジナルタスクをSPUに実行させる仕組みも使いやすい形で提供される。

「PHYRE ENGINE」はマルチスレッド前提設計

 グラフィックスエンジン部については、一通りの今世代のトレンドを網羅している。

 ライティングはHDRレンダリングに対応。RGB各8ビットの疑似ハイダイナミックレンジ (HDR) レンダリングに加え、RGB各16ビットのリアルHDRレンダリングにも対応する。影生成についてもデプスシャドウ系、シャドウボリューム系のメジャー技法2タイプに対応している。

 LOD (Leve of Detail) システムはジオメトリとシェーダに対して効かせられる仕組みを実装。パーティクルシステムで利用するパーティクル設計は、先ほど少し触れた「PHYRE STATION」というオーサリングツールで行なうことが可能。

 物理シミュレーションエンジンは、好みやライセンシー状況に応じて自在に組み替え可能な仕組みを実装している。オープンソースの「Bullet」や、商業エンジンの「Havok」、「Ageia」などに対応しており、これらは開発途中でもVisual Studioのコンフィギュレーションを切り換えることで自由に切り換えることができるという。

3Dグラフィックスエンジンは今世代の要求仕様を一通り網羅する

 今世代のゲーム開発ではプログラム開発も大変だが、アートワークに掛かる負荷も大きい。そこで「PHYRE ENGINE」では、「PHYRE ENGINE」に特化した様々なデータセットを処理するための統合ツールとして「PHYRE STATION」を開発して提供している。

 様々なデータ作成ツール、コンバートツールなどが含まれており、細かなツールをとっかえひっかえして使わなくても「PHYRE STATION」だけで事足りるようになっているという。

「PHYRE ENGINE」の強力なサポートツール「PHYRE STATION」。ジオメトリ設計やアクションやアニメーションの繋ぎ編集などにおいてはわかりやすいビジュアルインターフェイスを採用。ちなみに英語で「FIRE STATION」は「消防署」の意味

・次期「PHYRE ENGINE」に実装されるフリーフォーム地形エンジンとは?

 「PHYRE ENGINE」は、近々新しい地形処理エンジン (Terrain Engine) を内蔵してバージョンアップを図るという。

 新地形処理エンジンは、高低データによる地形生成だけではなく、完全なフリーフォームな地形処理に対応しており、穴があいていたり、せり出していたりという複雑な形状の地形にも対応できるとしている。地形やそれに対応するテクスチャはストリーミング処理され、プレーヤーキャラクタがゲーム世界をシームレスに移動できる仕組みが提供される。

このような説得力ある地形処理エンジンを新版「PHYRE ENGINE」では内蔵する

 LODシステムは、与えられた地形データを自動的にテッセレーションして視点に近いところは多ポリゴンに、遠いところは低ポリゴンにしてくれる。地形作成は、1エリア (1クワッド) を最大100ポリゴン程度とした部品を組み合わせて基本形状を作成し、そこから地形エディタを用いて細部を作り込んでいく方式をとる。

地形処理エンジンではLODシステムの品質が重要になる。「PHYRE ENGINE」では連続型LODを実装しLOD切り換えによるポッピング (LOD切り替えで地形が揺れるような現象) が見えないように配慮されている

 この地形処理エンジンの開発はWindowsベースで行なわれ、わずか5分程度の作業でCellプロセッサのSPUバージョンへの移植が完了したとのことだが、パフォーマンスは十分高速で、1SPUあたり2億個のクワッドを処理できるスループットを達成したとしている。

「PHYRE ENGINE」では地形処理エンジンにSPUを効果的に活用できる!?

 今世代のゲーム機はハイデフ化したことで何もかもが高解像度化している。オープンフィールド型のゲームではどうしても地形に目がいってしまう。この時、敵キャラクタは多ポリゴンなのに、地形モデルだけ前世代的な低ポリゴンでは見た目のバランスも悪いしビジュアル面での説得力も欠ける。しかし、広大なフィールドの地形を説得力のある形で多ポリゴンで全てモデリングしていくにはコストが掛かりすぎるし、かといって、最近注目集められている自動生成 (プロシージャル生成) に頼りすぎるのも、ゲーム性設計との関係性を考えると全面採用は難しい。

 この「PHYRE ENGINE」のような地形部品を組み合わせて低解像度地形を造り、ディテール部表現やLOD生成をシステム側にやらせるというのは今世代の地形処理エンジンの在り方としてはリーズナブルな手法だといえそうだ。

手作業と自動生成のいいとこ取りが「PHYRE ENGINE」の地形処理エンジン

・「PHYRE ENGINE」のロードマップ

 「PHYRE ENGINE」のロードマップも公開された。2008年2月現在、PS3ライセンシーに提供されているのはバージョン2.0になる。バージョン2.0では「PHYRE STATION」にパーティクルシステムのデザインツール機能が実装されており、GUIベースでパーティクルアニメーションやエンジン内描画時の物理パラメーターからの影響などをプレビューしながら設定できる。

 また、SPUをジオメトリアクセラレーション以外の、具体的には映像のポストプロセスに活用できる仕組みも実装されている。例を挙げるとSSAO (Screen-Space Ambient Occlusion:シーンの深度値を見ながら画像処理的アプローチで陰影を付加する最近流行のポストプロセス) や被写界深度のシミュレーションなど。

「PHYRE ENGINE 2.0」が現在提供されているバージョン

 そして2008年4月には、バージョン2.0にマイナーバージョンアップが施され2.01となる予定だ。こちらは、前出の地形エンジンを利用したサンプルプログラム、オープンソースの物理シミュレーションミドルウェア「Bullet」の統合、Direct3D環境下での開発のためのHLSLサンプル集などが含まれる。

 また、これまで「PHYRE ENGINE」開発チームが蓄積した開発ノウハウをまとめたドキュメントも多数含まれる予定だ。具体的には、ポリゴンカリングの方法、デバッグツールGCMを活用したメモリマネージメント手法、また難易度の高いと言われるSPUプログラミングノウハウをまとめたものも含まれる。

「PHYRE ENGINE 2.01」は2008年4月より提供開始。実質的にはバージョン2.0系のファイナル

 2008年5月にはバージョン2.1の提供を予定している。こちらは前出の地形処理エンジンを本格利用したサンプルゲームのフルセットが提供されることがホットトピックだ。また、地形処理エンジンを活用するためのサポートツール群と、地形エンジンと組み合わせて使うと威力を発揮するプロシージャル生成対応の植物生成エンジンも提供される。「PHYRE ENGINE」はこのバージョン2.1で、オープンフィールド型のレースゲーム、フライトゲーム、RPGなどの開発に対応するためのポテンシャルを得ると見られる。

「PHYRE ENGINE 2.1」は2008年5月より提供開始。地形処理エンジンの本格活用が始まるバージョンといえそうだ

 2008年8月には植物生成エンジンとのさらなる統合を進め、「PHYRE STATION」にはシェーダーのオーサリングシステムや最適化システムの実装を行なったバージョン2.2を提供する予定。さらに2008年11月にはシナリオ制御などに活用できるスクリプトエンジンを実装したバージョン2.3の提供を予定している。ユニークなのはこのスクリプトエンジンをSPUで実装したバーチャルマシンで実行させようとしている点。SPUの新たなる使い道となるか、そういった視点でも興味深い試みだといえる。

着実に進化を進めていく予定の「PHYRE ENGINE」

・「PHYRE ENGINE」はソニー版XNAなのか

 「PHYRE ENGINE」はテクノロジー的な視点で見ると「よくある3Dゲームエンジン」というものだが、その生い立ち、コンセプト、進化のプロセスを見るとかなり特殊で興味深い。

 まず、開発をソニー (SCEE) が行なっているのにもかかわらず、PCとXbox 360を暗黙のうちにサポートしているという点が面白い。

「PHYRE ENGINE」はPS3ライセンシー開発者に無料で提供される
 1つのプログラムコードがリコンパイルでPS3/Xbox 360/PCで相互動作できてしまうというコンセプトは、MicrosoftのXNAに通ずるものがある。もちろん、「PHYRE ENGINE」を利用するにはプレイステーション 3ソフトウェア開発のライセンス締結をする必要があるので、アマチュアが利用できるXNAとは根本的に異質なものだが、それでも「PS3をメインに。ただし開発コスト回収のためにPC版やXbox 360版も出したい」というサードパーティ系ゲームスタジオにとっては非常に魅力的なソリューションに見えることだろう。

 また、各ゲームスタジオからの要望を聞いて、なおかつ「PHYRE ENGINE」を利用したスタジオからのノウハウをどんどんフィードバックさせていくという進化方針も面白い。PS3ライセンシーを締結する必要はあるにせよ、追加金なしの無償で提供されるので、いうなれば「PS3開発者達で行なわれるオープンソースプロジェクト」といえなくもない。あえて言いきるならば「ソニー製のプロ用途限定のXNA」といった感じだろうか。

 うがった見方をすれば、「ゲームタイトル開発がPS3オンリー向けでは、なかなかビジネスにはなりにくい」と尻込み気味なサードパーティ向けゲームスタジオへのSCEEのなりふり構わないアクロバット戦略なのかもしれないが、いずれにせよ、今後の動向には注目していかねばならないだろう。


■ Jason Mitchell氏、Valve「Team Fortress 2」のシェーディング技術を解説

Valve SoftwareのJason Mitchell氏
 8年間、ATIで3DアプリケーションやAPI開発に携わってきた伝説の男、Jason Mitchell氏がValve Softwareに 2005年に電撃移籍してからもう3年。すっかりValveの社員服もなじんできたMitchell氏がGDC 2008で講演したのはチーム戦専用FPS「Team Fortress 2」(TF2) の非写実系 (NPR:Non Photo Realistic) グラフィックスの仕組みについて。

 「Stylization with a Purpose: The Illustrative World of “Team Fortress 2”」と題して、Mitchell氏が行なったセッション全体の詳細についてはこちらのレポートを参照してもらうとして、ここでは、そのNPR技法について切り出して紹介をしたいと思う。

 Mitchell氏は、わかりやすく、「TF2」におけるライティングを、視線に依存しない拡散反射系と、視線に依存する鏡面反射のライティングとに切り分けて解説した。

・「TF2」における拡散反射照明

環境光ライティング
左がランバート照明の定義通り。右がハーフランバート・ライティングによるもの
 拡散反射ではまず環境光のライティングを行なう。

 Valveではただの明るさを持ち上げるだけの環境光ではなく、放射輝度ボリューム (Irradiance Volume) というちょっとだけ進んだ環境光の概念を導入している。名前こそ大げさだが、そのシーンの各地点における6方向の環境光の分布を数値テーブル化しており、これを用いて環境光としてライティングを行なうのだ。以前、本連載で取り扱った「ヴァルキリープロファイル2」編の半球ライティングの拡張版のようなもので、よりそのシーンに溶け込んだ環境ライティングが可能になるのだ。

 そして「TF2」での基本的な拡散反射のライティングは、Valveが'98年の「Half-Life」から採用しているValve独自の疑似ラジオシティライティング技法である「ハーフ・ランバート・ライティング」(Half Lamber Lighting) を用いている。

 ランバート・ライティングは拡散反射照明計算の一般系で、視線方向に依存しない光源の入射方向と面の向き (法線) だけで算出される陰影処理技法になる。この技法は「そのピクセルの明るさは、ピクセルの向き (法線) と光の入射方向が織りなす角度θのCOSθに比例する」という「ランバートの余弦則」で定義される。この技法をそのまま適用すると明暗がかなり強烈に出てしまうきらいがある。そこでValveでは、急激に変化するコサインカーブに細工をして緩やかにして、さらに暗部階調を持ち上げる工夫をした。具体的にはランバートの余弦則のコサインカーブが半分になるように“1/2”を掛け、さらに“1/2”を足して、さらにこれを2乗している。

ハーフ・ランバート・ライティング
漫画調に変換するトゥーンシェーダーの適用
 つまり、“半分”緩やかなカーブに変換して陰影処理を行なうから「“ハーフ”・ランバート照明」というわけだ。これはまったく物理的に正しくないライティングだが、空気中で散乱した光が間接照明をしたような味わいになるので、Valveではこのライティング技法をよく用いている。実は「Half-Life 2」シリーズも実はこのライティング技法を採用している。

 そして「TF2」の漫画っぽいライティング技法のミソとなるのが、この1Dテクスチャによるライティング結果の変換だ。

 せっかくナチュラルにライティングされた結果をあえて大ざっぱに漫画調にする変換をここでしているのだ。これは、よく言われる「セルシェーダー」、「トゥーンシェーダー」と呼ばれる技法に相当するものだ。

 ここまでを全部合成すると下の画像のようになる。ここまでが「TF2」の拡散反射系ライティングの全てになる。

環境光+ハーフランバート+トゥーンシェイダーまでを合成するとこうなる テクスチャはこんな感じ 拡散反射照明の結果とテクスチャまでを全て適用するとこんな感じに

・「TF2」における鏡面反射照明

 鏡面反射の照明は視線方向に依存した結果になり、より具体的に言えば視線の移動と共に陰影や光沢の出方が変化する照明のこと。鏡面反射……というと金属のライティングのイメージがあるが、濡れている材質やツルツルとした材質もこの鏡面反射モデルがよくはまる。

スペキュラーマップ
フレネル反射項のスペキュラーマップ
 さて、「TF2」では、そのキャラクタのどの部分はどのくらいの光沢を出るかの分布図をテクスチャとして設定したスペキュラーマップを用いて、鏡面反射照明の計算結果の光沢の出具合を決定している。

 「TF2」ではさらに複雑な陰影を出すために、複数の異方性の鏡面反射光のスペキュラーマップを用意している。

 1つはフレネル反射表現のためのスペキュラーマップだ。これは視線と面 (ピクセル) の向き (法線) がどういう位置関係になったときにどう反射するかを決定する項目。例えばそのピクセルを視線が掠めているような位置関係の時には、そこにハイライトを強めに出すというような陰影結果を促す。

 さらに、逆光気味になったときにどういう光沢を出すのかを記載したリムライト・フレネルのスペキュラーマップも適用する。

 リムライト処理は輪郭付近に逆光 (リムライト) があるとその光が滲み出てくるような処理をする異方性な光沢陰影処理。光が浸透して再び出てくるような人間の皮膚のような材質を擬似的に表現するのに使われている (疑似表面下散乱)。身近なところではWiiの「スーパーマリオギャラクシー」のマリオにはわかりやすく積極的に使われているので見てみるといい。

 さらにスペキュラー効果を調整するマスクテクスチャも適用して光沢の出具合を調整する。

リムライト・フレネル反射のためのスペキュラーマップ スペキュラー効果を調整するマスクテクスチャも適用して光沢の出具合を調整

 実際にこのシーンで、ここまでを項目別に適用した例はこんな感じになる。

 まず、スペキュラーとフレネル反射を考慮するとこんな感じに表示される。黒い部分は黒くなると言うことではなくて、光沢がないということを意味しているので勘違いしないように。逆に、明るい部分は実際に出る光沢の様子を表している。

 一方でリムライト・フレネル反射は計算するとこんな感じになる。ここも黒は黒くなると言うことではなくて光沢がないということを意味している。逆に、明るい部分は実際に出る光沢の様子を表している。

 ここで両者を比較して強く出た光沢の方を結果とするという処理を適用する。

 天球光や環境光からのリムライトの効果を出すために、同じリムライト・フレネル反射のスペキュラーマップを別扱いでもう一度処理する。

このシーンでのスペキュラー(光沢)の出方はこんな感じ このシーンでのリムライト・フレネル反射による光沢の出方はこんな感じ 通常のスペキュラーとリムライトの効果の美味しいどこ取りの処理をする
天球光や環境光からのリムライトの効果を出すために、同じリムライト・フレネル反射のスペキュラーマップを別扱いでもう一度処理 天球光から照らされるとこんな感じ 天球光と環境光の両方から得られたリムライト・フレネル反射の光沢はこんな感じ

 ここまでの全ての光沢を総合すると下の画像のような感じになる。

 そして前段の拡散反射の結果までを合成して、最終ライティング結果となる。

全ての光沢を合成 最終ライティング結果

・「TF2」のNPR表現はアイディアと基本技でできていた

 なお、ライティング計算はHDR次元で行なわれ、動的なトーンマッピング処理も行なわれる。NPRレンダリングの映像なのにリアリスティックなHDRレンダリングも行なわれるのも、ユニークなビジュアル表現に貢献している。

「TF2」はNPRレンダリングの映像だがHDRレンダリングベース

 PIXARアニメライクの独特な「TF2」のライティングは、意外にも基本ライティングのモディファイの組み合わせで実現されていたのだった。

 スペシャルなシェーダーがなくても、基本技とアイディア次第でユニークなビジュアルは作り出せる……そんなメッセージを感じた解説であった。

「Team Fortress 2」は「The Orange Box」に同梱されている。PC向け日本語版はサイバーフロントより発売中。海外ではPS3版とXbox 360版が発売されている


□Game Developers Conference(英語)のホームページ
http://www.gdconf.com/
□Game Developers Conference(日本語)のホームページ
http://japan.gdconf.com/
□関連情報
【2008年2月】Game Developers Conference 2008 記事リンク集
http://game.watch.impress.co.jp/docs/20080221/gdclink.htm
3Dゲームファンのためのグラフィックス講座 バックナンバー
http://game.watch.impress.co.jp/docs/backno/rensai/3dg.htm

(2008年2月28日)

[Reported by トライゼット西川善司]



Q&A、ゲームの攻略などに関する質問はお受けしておりません
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします

ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp

Copyright (c)2008 Impress Watch Corporation, an Impress Group company. All rights reserved.