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

ゲームプログラミング界の巨人、Tim Sweeneyが「未来のゲーム開発テクノロジー」を語る
超並列処理、次世代のゲームグラフィックスはソフトウェアレンダリングに回帰する

9月9日~11日開催

会場:昭和女子大学


 「CEDEC 2008」の最終日、海外トラックの目玉となるセッションが開催された。講演者は米Epic GamesのCEO、Tim Sweeney氏。Sweeney氏はEpic Gamesの創設者であると同時に、1997年にリリースされたFPS「Unreal」のメイン開発者であり、また現在では同社の技術ディレクターを兼任して研究開発を続けているという現役の最先端テクノロジストだ。

 「未来のゲーム開発テクノロジー」と題されたこの講演では、Sweeney氏が予測するゲーム開発の将来像が提示された。Sweeney氏は評論家やアナリストではなく、その将来像を具現化する最前線に立っている人物である。したがって、講演内容は単なる予測ではなく、極めて説得力に溢れたものとなった。現在のゲーム開発技術が向かう先に何があるのか、Sweeney氏の講演内容をご紹介したい。


■ 「CPUとGPUのアーキテクチャは収束しつつある」
 ハードウェアプラットフォームは超並列処理の時代へ 

演台に立つEpic GamesのCEO、Tim Sweeney氏
 本誌の読者ならば、Epic Gamesについてのご紹介はほとんど必要ないだろう。GPUがまだ存在しない時代にソフトウェアレンダリングによる見事なFPSゲーム「Unreal」を作り上げ、その基盤技術を「Unreal Engine」としてゲーム業界に供給してきた企業だ。最新バージョンの「Unreal Engine 3.0」はハイエンドゲームプラットフォームにおける最新技術の象徴であり、開発中のタイトルを含めればあらゆるジャンルで150本以上の最新ゲームが採用している。

 その技術基盤を生み出した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に近づいている。

CPUは並列化が進み、GPUは汎用化が進む。両者のアーキテクチャは収束しつつあり、将来的には超並列処理がゲーム技術の基盤になる
 Sweeney氏は、こういったプロセッサの最新動向を取り上げて「つまり、CPUとGPUのアーキテクチャは収束しつつある」と表現した。そこでスライドに表示された「未来のグラフィックスハードウェア」の画像が面白い。映像信号用のソケットのほかには何もない、指先ほどの板なのである。Sweeney氏は何を言おうとしているのだろうか。

 Sweeneyが言うには、2012年から2020年に登場しうるハードウェアは、これまではグラフィックスチップが得意としていたベクタ型の演算と、CPUが得意としてきたスカラ型の演算を統合したアーキテクチャを採用するという。

 つまり、CPUのように巨大で複雑なプログラムを実行するパートと、GPUのように膨大なデータをストリーム処理するパートが混在するようになるということだ。その合算で実現する計算力は、2012年に4テラフロップス級という膨大なものになる。

 しかもこの方向性は更にコア数を増やす方向で拡張されていくことが見込まれる。Sweeney氏はこれについて、従来的なクロック数の概念ではあまり変わらないものの、マルチコア、メニーコア化が進むことで、2020年までに現在の1,000倍のマルチスレッド及びベクタ処理性能が得られるという展望を示した。

将来のグラフィックスハードウェアの図。プロセッサの並列化が進み、一般的な処理とグラフィックス処理の本質的な違いが消えていくことで、専用のハードウェアは必要なくなるのではないか、という展望を象徴的に表している


■ ゲームグラフィックスはソフトウェアレンダリングに回帰する

将来のゲームグラフィックスは、「Unreal」以来のソフトウェアレンダリングに回帰するという
 そこでSweeney氏は、将来のゲームグラフィックスでは、100%のソフトウェアレンダリングへの回帰が成されると述べた。“回帰”というのは、GPU登場直前にソフトウェアレンダリングで3Dを表現した「Unreal」や、それ以前にソフトウェア3Dレンダリングの道を切り開いた「DOOM」、「Quake」といった世代への原点回帰を意識したものだろう。

 レンダリング処理をソフトウェアで行なうということは、もはやDirect3DやOpen GLといったAPIを通じたハードウェア処理が無用になるということだ。アンチエイリアシング、ラスタライズといった固定機能のレンダリングパイプラインは完全にバイパスされ、グラフィックスプログラマが全てのピクセルをソフトウェア的に打ち出す。

 Sweeney氏がほとんどのプログラムを行なったという「Unreal」では、全てのレンダリングをCPUでソフトウェア的に行なっていた。そして、Sweeney氏が今後開発するであろう次世代のレンダリングエンジンでは、やはり全てのレンダリングをCPUあるいはGPU上で走るソフトウェアで行なうようになると見られる。

1ピクセルを描くために使える命令の数は、「Unreal」時代の1,000倍に拡大され、様々なレンダリング手法が利用可能になる
 Sweeney氏によると、「Unreal」の時代、60MhzのPentiumは1ピクセルあたり16命令で320x200ドット、30fpsの映像を描き出していたという。そして2012年に想定される4テラフロップス級のプロセッサでは、1,920x1,080ドットのフルHD解像度、60Hzにて、1ピクセルあたり16,000命令を使えるようになる。

 その計算力で実現可能になるリアルタイムのレンダリング処理は、これまでのポリゴンベースのラスタライザの考えとは大きく異なったものになる。ひとつの可能性はレイトレーシング。各ピクセルに対して、ゲームシーン内の光の動きをトレースする方法である。物理学的に正しいライティングが得られるものの膨大な計算量が必要であり、これまではリアルタイム処理が難しかった手法だ。

 Sweeney氏が想定するもうひとつの方法は、“REYES(レジェス)”と呼ばれるレンダリングモデルだ。これは全てのオブジェクトを画面上のピクセルよりも小さい(サブピクセル)サイズのポリゴンまで切り刻み、それをフラットシェーディングで描画するというもの。

 “REYES”は、映画業界でも使われている手法で、文字通り映画品質のグラフィックスを描くために使われてきた。しかし、従来は1フレームレンダリングするのに数分~十数分かかっていたというべらぼうな代物である。これを将来のCPU/GPU上にソフトウェア実装し、リアルタイムに動かそうというのだ。

 Sweeney氏は、このレンダリングモデルにより、現在は法線マップで細部の凹凸を再現している400万ポリゴンの高詳細キャラクタを、そのままゲーム内で描画することが可能になってしまうという。こういったレンダリング手法のパラダイムチェンジにより、ゲームグラフィックは真の映画品質に迫ることができる。

 GPUがはじめて登場したときにゲームグラフィックスの技術が革新されたように、今度はGPUから離れることで再び革命が起きる、それがSweeney氏のビジョンだ。

将来のグラフィックスレンダリング手法についてのスライド。この中で「解析的アンチエイリアシング」と言われているのは、サブピクセルサイズの三角形がピクセル内に占める面積をもとにピクセルの色を算出する方法だと見られる


■ 超並列処理時代に備え、ゲーム開発はどう変わっていくべきか?
 開発者が最重要視するべきは「生産性」であり、Epicは既に投資を始めている─

「Gears of War」開発にかかった人員とコスト。ゲーム規模がこれ以上大きくなっても、開発規模を大きくすることは難しい
「Unreal Engine 3.0」のスレッド構成。メニーコアには対応するには根本からの設計変更が必要
 Sweeney氏はこの議論を進めていくなかで、Epic Gamesがこれまでに取り組んだゲーム開発を取り上げ、規模の拡大、プログラムが複雑になりすぎていることを、メニーコア時代を迎える上での最大の課題として指摘した。

 「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氏に言わせるとそれは「シングルスレッドのプログラムをアセンブラで書くようなもの」であり、生産性が悪いのである。

Sweeney氏が注目する純粋関数型言語は、並列処理を安全に実行でき、メニーコア時代の生産性に寄与するという
 ややプログラマ向けの説明となってしまうが、ここでの議論を簡単にご紹介しよう。Sweeney氏は、この問題を解決するためには、ゲーム開発言語として純粋関数型の言語が必要になるだろうと言う。純粋関数型言語とは、プログラム中の関数が、戻り値のみによって作用する構造の処理系だ。

 この種の処理系では、C++のような共有メモリのアクセスや、I/O操作は基本的に行なえない。その引き替えとして、各関数のアトミック性が構造的に保証されており、安全に並列実行できるのだ。しかも、コンパイラが対応さえすれば、関数を自動的に多数のコアに分散処理させることができるというスケーラブルな実行バイナリを作り出せる。

 Sweeney氏は純粋関数型言語のもつ並列処理安全性に着目しており、将来的にゲームプログラミングはそういった処理系に移行していくべきだとした。Sweeney氏はそのひな形として言語“Haskel”を挙げているが、ゲーム開発のメインストリームたり得る言語はまだ登場しておらず、将来に期待しているという。

C++でマルチスレッドプログラムを書くのは、シングルスレッドをアセンブラで書くようなものだとSweeney氏は言う。その抜本的解決になりそうな言語は純粋関数型の言語特性を持たなければならないが、現在のところゲーム開発に使えるレベルの処理系は存在しない。次善の策としてC++の“ソフトウェアトランザクショナルメモリ”拡張にも期待できるというが、Sweeney氏は将来、ゲーム開発に使える純粋関数型言語が開発されることを期待している


■ ハードウェアは何倍も高速化するが、予算は何倍も増やせない。ゲーム開発者は生産性を重視すべき

パフォーマンスが落ちてもハードウェアが牽引してくれる。ゲーム開発では生産性を最優先すべき、というのがSweeney氏の原則論だ
 Sweeney氏の開発言語に関する議論を聞く限り、ゲーム開発者が必ず気にするであろう問題がひとつある。そのような「高級な」言語を使ってゲームを開発すれば、C++のような低レベルメモリアクセスも可能な言語に比べて潜在的な実行速度は低下してしまうだろう。この問題はどう捉えればよいのか。

 そこで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」が登場した時点のそれとは次元が異なってきそうだ。来るべきパラダイムシフトにゲーム業界がどう備えるべきか、大いに考えさせられるセッションだった。

Tim Sweeney氏は、Epic GamesのCEOとして会社を経営する立場にありながら、同時に、先進技術を研究開発する立場にもある。そのSweeney氏が今回展開した議論は、将来起こりうる爆発的なプロセッサコア数の増加にどう業界が対応すべきか、ということをひとつのテーマにするものだった。多くのゲーム開発者に対して重要なメッセージが伝えられたセッションだった


□「CEDEC 2008」のホームページ
http://cedec.cesa.or.jp/

(2008年9月11日)

[Reported by 佐藤カフジ]



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

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

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