GDC 3日目(1) 色んなセッション

海外でも浅いバスタブにお湯を溜めて20分くらい本を読んでいます。体が温まってとても良いです。
先日までの1日をかけたtutorialは終了し、今日からは1コマ1時間のセッションから興味のあるものを選んでいくことになります。

C++の話

TR1(Technical Report 1)という標準C++ライブラリの拡張についてのお話でした。boostから使えるものが標準に取り込まれるという話で、どんな面白い話を聞けるのかと期待して行ったのですが、セッションの内容はまんまboostから取り込まれるライブラリの説明でした。「std::tr1::arrayはね、こうやて使うんだよ」みたいな。
確かに看板に偽りは無いので、そもそもセッションの内容を予測した地点で選択から外すべきでしたね。一体自分は何を期待して行ったのでしょう(´・ω・`)

SCEkeynote

Phil Harrison (フィル・ハリソン)氏の基調講演です。C++の話がちょっと退屈だったので早い目に抜けてここに言ったのですが、開始40分前で既に長打の列でした。
ちなみにPS3のあっと驚く発表とは、もう既にGameWatchでも記事になっていますが、3D空間のアバタシステムでしたね。Wiiアバターキャラ製作をリアルにして、住む家もリアルに作りこまれていて、物理法則にしたがって家具も配置される、という感じのバーチャルワールドです。後、その世界の中に「Hall of Fame」という部屋もあって、これは360で実現している「実績」システムのアイコン等を3Dポリゴン化したものと考えれば良いでしょう。解説にわりと毒が含まれているような気もしますが気のせいです(´・ω・`) 。
仮想空間は企業も提供できるらしく(SDKを使って開発する、と言っていたような気もします)、それが企業ごとのコミュニティになるのではないか、と言う風に話していたような気もします。会話は半分も聞こえなかったので妄想が含まれている気もします。
そっかー、メーカーが仮想空間を用意して、実績アイコンの代わりに3Dモデルを用意すればいいのね。SCEはメーカーを殺 す 気 か ! !とはちょこっとだけ思いましたけどやっぱり妄想かも知れません。文句を言っているけれど、なんだか楽しげな空間ですね。ハイデフテレビでもないとごちゃごちゃして分かりにくそうですけれど。
プラットフォームホルダーとしては視線はユーザの方を向いていて不思議は無いので、まあ後はこれにどれだけの企業が付いてこれるか、ですね。なんだかんだいっても空間一部屋作るだけならなんとかなりそうな気もしますし。メーカーに向けての鞭はこんな感じで、飴としては、便利なプロファイラの提供等の話題が挙がっていました。
最後に発表されたゲーム(?)「LittleBigPlanet」は凄くいい感じの世界観でした。物理エンジンをばりばり使いつつ、誰でも楽しめそうな朗らかな雰囲気のゲームになっていました。みんなでマップを作って遊んだりできるみたいです。みんなで集まってわいわい楽しみたいタイプのゲーム(?)でした。あれ、物理エンジンの挙動がほぼ完全に平面に限定されてたのですが、世界はちゃんと3Dの計算をしているっぽい。どうやってるのかな。単にコリジョンレスポンスのアルゴリズムに細工を施しているだけなのかな。遊ぶ分には挙動が分かりやすくて正解だと思います。

動的環境でのエージェント移動の話

2つの話題がありました。
1つ目の話は、普通の押し戻しアルゴリズムを使って壁ずりするのはださいよね、建物から反発する磁力みたいなのを出して事前検知して避けているような挙動をさせようぜ。という話です。Vortex Fieldという名前で説明していました。結構面白い動きをします。
えーと、これ、この前実装してみたやつじゃん!!球体フィールドから磁力を出すところまでは全く同じで、磁力を元にどう避けさせるかという部分が違いましたが、まあ基本的には誰だって考えるのね、残念(´・ω・`) 。まあ私の場合はアイデアを頂いたのはCG部のJさんの何気ない一言だったりするのですけど(超感謝です)。セッション冒頭で多数のキャラクタへの、と言っているのにパフォーマンスデモが無かったのは残念。
2つ目の話は、パスファインドアルゴのA*に対して、途中で地形情報が変化した時にどうやって効率的に再計算を行なうかという話でした。D*(Dynamic A*)というアルゴが有って、それがどうこうという話で結構興味深かったのですが…無念。

COLLADAの話

4人くらいの人がテーブルに座っていて、司会者らしき人が「へいお前らcollada使ってる?どう使ってる?」というのを口頭で延々と話していました。分からない…意識が飛んでいたのでなんとも言えず。

マルチスレッド技術の話

Intelさんが、PCのスレッド数はこれから上がっていくよ。4つくらいのスレッドが走ることを考えたらマルチスレッド必須だよね、じゃあどんなモデルでスレッド化していく?どんなことに気をつけたらいい?というお話でした。
現在のアプリがCPU律速かどうか調べる割と有名なフローチャート(GPUのせいじゃないのかを調べる手法)や、マルチスレッドの為のデザインの鉄則(プロファイラ必須というのは分かりますがVTuneの宣伝という気もしてしまいますがやはり必須だと思います)、スレッドモデル(Data forking,pipeline,consumer,work crew)についてのおさらいをした後、現在主流となっているスレッド化の分割方法についての紹介、マルチスレッド中に(パフォーマンスの問題で)やってはいけないこと、扱うデータ量にスケーラブルなスレッド実装の勧めとか、1時間で話す分には十分なテーマを広く浅く取り扱っていました。ホットスポットではなくクリティカルパスという概念でアプリケーションを見る(スレッド化した上で、一番遅い処理パスに対して次の改善の1手を打つ、という意味)、とういうのは私的に新鮮でした。確かにそうだ。意味のあることをしなくては。