「超並列処理、次世代のゲームグラフィックスはソフトウェアレンダリングに回帰する」

http://www.watch.impress.co.jp/game/docs/20080911/epic.htm
かなり技術的なお話。
現在CPUがマルチコア化しているが、将来その延長でどんどんコアが増えていくはず。
そうなった時に、シングルコア向けに進化してきた現在のアーキテクチャとは異なる物が必要になってくるというお話。(……ですよね?w)
CPUとGPUの話も冒頭でされてますが、それは記事の方を読んでくださいということでここでは取り上げません。
完全には理解出来てないと思うので、間違ってたらツッコミお願いしますw


現在家庭用のPCでは、コアが2つ(Duo)か4つ(Quad)が主流です。
単純に「4つの方がスピードが出るのでは?」と思いがちですが、1つのタスク(というかスレッド?)での処理速度はほとんど変わりありません。 
というのも、1つのタスクを処理するために動いているコアは、1つだけだから。
複数のコアを積んでいる利点が出てくるのは、複数の処理を同時に走らせたときのみのようです。
よって、あまり同時に処理をさせないようであれば、コアが2つでも4つでも変わらないと聞きました。(多分仕事でなく趣味で使うなら、4つも使うことは少ないかと)

開発言語が変わる?

ゲームに話を戻すと、最新のゲームハードは複数のコア(6つや8つ)を積んでます。
これを上手く活かせるのは並列処理を行っているとき――つまりマルチスレッドで動かしているときです。
実際に「Unreal Engine 3.0」は4つのスレッドで成り立っているとか。
将来コア数が飛躍的に増えるとして、そうなったときに効率よく処理できるのはスレッド数を増やすことなのですが……マルチスレッドを処理するときに必ずと言っていいほど問題になるのが、データの共有部分や同期処理です。
これらの問題はデバッグでバグを取り切るのが難しい分野ということもあり、コアが増えるからと言ってスレッド数を増やすのは現実的ではありません。


そこでそれを解決するために、今後ゲーム開発では現在主流の開発言語であるC++ではなく、純粋関数型言語で開発を行うのがいいのではないかとこの記事では述べてます。
どうやら純粋関数型言語というのは、変数という概念がない(!?)ためわざわざスレッドで分けなくても並列処理を行えるとか。
私も純粋関数型言語はさわったことがないので分かりませんが、最近ちょこっと話題になっているHaskellがそれにあたるようです。
本当にHaskellが使われるかどうかはさておき、とりあえず学んでおくのは悪くないかなぁと思いました。
積んじゃってるHaskellの入門書でも引っ張り出そうかなぁ……。

性能よりも生産性を

現在ゲーム制作のコストが高騰しているのはご存じの通りかと思いますが、ハードの進化に合わせてこのままの調子で創っていると予算がいくらあっても足りません
そこで、性能を犠牲にしてでも生産性を上げた方がいい。という話もここで語られています。


ここでいう性能というのは、クオリティという意味ではなく、プログラムの性能のことです。
たとえば、出力結果は同じでもメモリやCPUをあまり使わないで実現した方がプログラムの性能としては優秀です。
しかし、実際にそれをやると非常に手間がかかります。
わかりやすい例では、C++で記述していた部分をアセンブラで記述すれば性能は上がるけど手間はかかる。といった感じです。
今後もハードが飛躍的に伸びるので、めんどくさいことはハード性能で力押しして行った方が利口だよ、ということのようです。


私も前からそう思っていましたが、すでに現在の最新ハードではその傾向が見られます。
ゲームに限らずIT方面ではもっと早くからその思想で進化しており、C++からJavaやC#に移行していったのなんか、まさにそういうことではないでしょうか。
Xbox360は、C#でも動くことですし……。(とはいえ、多くのゲームプログラマーはどうにもガベージコレクションが嫌いな様子ですが)

企画屋として見たとき

ここまでの流れには非常に同意な訳ですが、企画屋として見たときにちょっと違う視点もあるかなと。
というのも、「スペックを求めるゲームが主流で居続けるかどうか」という視点です。
DS・Wiiの例を挙げるまでもなく、日本では“絵が綺麗なだけのゲーム”はある程度飽きられた感がありました。
世界市場では今のところその現象は確認できませんが、それを考えると可能性の一つとしてはゲーム自体が全然違う方向に進化するということも考えられるのではないでしょうか。


とはいえ、DSやWiiもこのような技術問題と全く関係ない訳ではないですし、背反する訳でもありません。
なので、もしも上で出ていた並列処理問題が関係なくなるとしたら、DSやWii以上の突拍子もない進化になるでしょう。
それこそ40年前はデジタルゲームという物がなかったように、全く新しいエンターテイメントが生まれて、そっちが主流になるとか、そういう突拍子もない進化に……。
まあ、そこまで言ってたらキリがないわけですが、実際に無視できるほど微細な可能性でもないような気がするんです。
このあたりはちゃんとアンテナ張ってないと一気に突き落とされそうなので、しっかり追いかけていこうかと思います。