|
会場:昭和女子大学 「未来のゲーム開発テクノロジー」と題されたこの講演では、Sweeney氏が予測するゲーム開発の将来像が提示された。Sweeney氏は評論家やアナリストではなく、その将来像を具現化する最前線に立っている人物である。したがって、講演内容は単なる予測ではなく、極めて説得力に溢れたものとなった。現在のゲーム開発技術が向かう先に何があるのか、Sweeney氏の講演内容をご紹介したい。
■ 「CPUとGPUのアーキテクチャは収束しつつある」
その技術基盤を生み出したTim Sweeney氏の、ゲーム開発技術トレンドへの影響は計り知れないものがある。今回の講演では、Sweeney氏が現在Epic Gamesで取り組んでいる次世代ゲーム開発技術について、具体的で本質的な展望が語られた。まず自己紹介から話を起こしたSweeney氏は、本題に入るや現行のプロセッサアーキテクチャが向かっている方向性に触れた。 CPUの世界では近年急激な勢いでマルチコア化が進んでいる。今日における一般的なPC用CPUは2コアないし4コアを搭載しており、最新ゲーム機では6コア、8コアといった状況になった。この方向性はさらに勢いを増しており、Intelが2009年~2010年に出荷を予定しているCPU「Larrabee」(コードネーム)では10コアの汎用プロセッサが実現される見込みであり、各コアが1クロックで16個の32bit浮動小数点演算を行えるというGPUライクなベクタ処理をサポートするようになる。 一方、グラフィックスプロセッシングのメインストリームを担ってきたGPU分野では、従来はピクセルシェーダー、バーテックスシェーダーと呼ばれてきた処理機構が汎用性を増し、100コアを超えるプロセッサとして機能するようになってきている。NVIDIAのC言語ライクな処理系「CUDA」の登場もあって、これらのコアで一般的なデータ処理もできるようになり、GPUはどんどんCPUに近づいている。
Sweeneyが言うには、2012年から2020年に登場しうるハードウェアは、これまではグラフィックスチップが得意としていたベクタ型の演算と、CPUが得意としてきたスカラ型の演算を統合したアーキテクチャを採用するという。 つまり、CPUのように巨大で複雑なプログラムを実行するパートと、GPUのように膨大なデータをストリーム処理するパートが混在するようになるということだ。その合算で実現する計算力は、2012年に4テラフロップス級という膨大なものになる。 しかもこの方向性は更にコア数を増やす方向で拡張されていくことが見込まれる。Sweeney氏はこれについて、従来的なクロック数の概念ではあまり変わらないものの、マルチコア、メニーコア化が進むことで、2020年までに現在の1,000倍のマルチスレッド及びベクタ処理性能が得られるという展望を示した。
■ ゲームグラフィックスはソフトウェアレンダリングに回帰する
レンダリング処理をソフトウェアで行なうということは、もはやDirect3DやOpen GLといったAPIを通じたハードウェア処理が無用になるということだ。アンチエイリアシング、ラスタライズといった固定機能のレンダリングパイプラインは完全にバイパスされ、グラフィックスプログラマが全てのピクセルをソフトウェア的に打ち出す。 Sweeney氏がほとんどのプログラムを行なったという「Unreal」では、全てのレンダリングをCPUでソフトウェア的に行なっていた。そして、Sweeney氏が今後開発するであろう次世代のレンダリングエンジンでは、やはり全てのレンダリングをCPUあるいはGPU上で走るソフトウェアで行なうようになると見られる。
その計算力で実現可能になるリアルタイムのレンダリング処理は、これまでのポリゴンベースのラスタライザの考えとは大きく異なったものになる。ひとつの可能性はレイトレーシング。各ピクセルに対して、ゲームシーン内の光の動きをトレースする方法である。物理学的に正しいライティングが得られるものの膨大な計算量が必要であり、これまではリアルタイム処理が難しかった手法だ。 Sweeney氏が想定するもうひとつの方法は、“REYES(レジェス)”と呼ばれるレンダリングモデルだ。これは全てのオブジェクトを画面上のピクセルよりも小さい(サブピクセル)サイズのポリゴンまで切り刻み、それをフラットシェーディングで描画するというもの。 “REYES”は、映画業界でも使われている手法で、文字通り映画品質のグラフィックスを描くために使われてきた。しかし、従来は1フレームレンダリングするのに数分~十数分かかっていたというべらぼうな代物である。これを将来のCPU/GPU上にソフトウェア実装し、リアルタイムに動かそうというのだ。 Sweeney氏は、このレンダリングモデルにより、現在は法線マップで細部の凹凸を再現している400万ポリゴンの高詳細キャラクタを、そのままゲーム内で描画することが可能になってしまうという。こういったレンダリング手法のパラダイムチェンジにより、ゲームグラフィックは真の映画品質に迫ることができる。 GPUがはじめて登場したときにゲームグラフィックスの技術が革新されたように、今度はGPUから離れることで再び革命が起きる、それがSweeney氏のビジョンだ。
■ 超並列処理時代に備え、ゲーム開発はどう変わっていくべきか?
「Unreal Engine 3.0」のローンチタイトルとなった「Gears of War」では、15人のプログラマ、45人のアーティストが2年間開発に取り組み、およそ13億円の開発費をかけている。ゲームプログラムは25万行ほどのC++とスクリプトコードでかかれており、そのベースとなるエンジンは200万行ほどのC++コードである。その下にはさらに20ほどのミドルウェアライブラリがある。 「Unreal Engine 3.0」はマルチコア世代のゲームエンジンであり、4つのスレッドで動作している。キャラクタやスクリプトを動かすゲームプレイスレッド、映像を作り出す描画スレッド、それから物理処理やアニメーションのためのヘルパースレッドが2つである。 この4スレッド構成は、現在のマルチコア世代のプラットフォームにはよくなじむ。しかし、将来想定される数十、数百のコアを持つメニーコア、マッシブコア世代のプラットフォームでは非効率的だ。したがって、次世代を見据える上では、メニーコアのプロセッサを充分に活用できる大量のスレッドに分割されたゲームエンジンを作らなければならない。 しかし、現状でさえマルチスレッドプログラミングは開発の困難さが指摘されている分野である。同時並列的に動作するプログラムがモデルデータやゲーム内状態などの共有情報にアクセスしようとするとき、そこには必ずデータ競合によるバグの発生や、デッドロックによるプログラムの停止というリスクがつきものである。しかも、それを効率的にデバッグすることは非常に難しく、開発規模の拡大や期間の長大化を招いているのだ。 Sweeney氏は、これは現在主流の開発言語であるC++の手続き型言語としての特性に由来すると指摘する。マルチスレッドにおける問題を避けるためのテクニックは各種あるが、Sweeney氏に言わせるとそれは「シングルスレッドのプログラムをアセンブラで書くようなもの」であり、生産性が悪いのである。
この種の処理系では、C++のような共有メモリのアクセスや、I/O操作は基本的に行なえない。その引き替えとして、各関数のアトミック性が構造的に保証されており、安全に並列実行できるのだ。しかも、コンパイラが対応さえすれば、関数を自動的に多数のコアに分散処理させることができるというスケーラブルな実行バイナリを作り出せる。 Sweeney氏は純粋関数型言語のもつ並列処理安全性に着目しており、将来的にゲームプログラミングはそういった処理系に移行していくべきだとした。Sweeney氏はそのひな形として言語“Haskel”を挙げているが、ゲーム開発のメインストリームたり得る言語はまだ登場しておらず、将来に期待しているという。
■ ハードウェアは何倍も高速化するが、予算は何倍も増やせない。ゲーム開発者は生産性を重視すべき
そこでSweeney氏が語ったのが、将来のゲーム開発における原則論だ。曰く、「生産性は必須」。前述したように、プラットフォームの処理能力は数年で2倍、10年で1,000倍になることができる。しかし、ゲーム開発の予算を10倍、1,000倍にすることはできない。だから、生産性のために性能を犠牲にするしかないし、それで良いのだ。 それにプラスして、Sweeney氏は現在のゲームプラットフォームハードウェアが複雑すぎることも指摘した。もし、Sweeney氏のいう純粋関数型言語によるゲーム開発が実現したとして、それを基準とするならば、C++によるプログラム開発コストは、マルチスレッド版で2倍、プレイステーション 3版において5倍、シェーダー言語で記述するGPGPU版において10倍かそれ以上にもなるという。2倍以上のコストはゲーム会社のビジネスにとって合理的とは言えない。 従って、6コア、8コアどころでは済まないメニーコア世代のプラットフォームに備えて、ゲーム会社は開発基盤を備える必要がある。このような議論を踏まえた上で、Sweeney氏は最後にこう述べた。「『Unreal Engine 3.0』の開発には3年の期間を要しました。そして、次世代のエンジンを開発するには5年くらいはかかるでしょう。つまり、今年開発をはじめたなら、出荷可能になるのは2013年です。だから、今はじめるべきなのです。我々は既に、次世代への投資をはじめています」。 Epic Gamesの「次世代エンジン」は、おそらく、Tim Sweeney氏が述べた議論をベースとする設計を持つことになるだろう。そして2013年には、Sweeney氏が述べた通り、数十コアから数百コアクラスのゲームプラットフォームが登場している可能性がある。Sweeney氏自身がゲーム開発技術をリードする実践者であることを鑑みれば、これは単なる予測ではなく、確実性のある予定事項と捉えるべきかもしれない。 それがグラフィックスレンダリングモデルに及ぼす影響を踏まえれば、「次世代エンジン」登場によるインパクトは、「Unreal Engine 3.0」が登場した時点のそれとは次元が異なってきそうだ。来るべきパラダイムシフトにゲーム業界がどう備えるべきか、大いに考えさせられるセッションだった。
(2008年9月11日) [Reported by 佐藤カフジ]
また、弊誌に掲載された写真、文章の転載、使用に関しましては一切お断わりいたします ウォッチ編集部内GAME Watch担当game-watch@impress.co.jp Copyright (c)2008 Impress Watch Corporation, an Impress Group company. All rights reserved. |
|