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

最終日ですよ。5日間、結構な刺激を受けてきましたのであっという間に終わってしまいました。それでは本日のセッションの雑感に入ります。

Skinning with Dual Quaternions

Quaternion(クォータニオン四元数)と、Dual Numberを組み合わせたDual Quaternionsという概念を使うことで、従来回転の記述にしか使えなかったQuaternionをrigid transformation(回転+平行移動)の記述能力まで持たせたというものです。
私が理解した特色としては、

  • 8つのfloatで記述可能(従来の4x4matrixなら16個のfloatが必要だった)
  • Dual Quaternionのまま合成が可能
  • 現在スケーリング要素まではハンドル不可能
  • 計算時間は従来のものと遜色が無い(テストによればわずかに早い)

といったもので、キャラクタのスキニングに適しているとのことでした。小さいメモリ領域で同じことが出来るなら、こっちの方が良いかも知れません。ただし、現在は剛体変換のみでスケーリングをハンドルできないので部分的にパーツのサイズを変更したい場合などには対処はできなさそうでした。ただし、将来的にはこの部分を解決できる数式は発見できそうだ、とスピーカーは述べていたような気がします。
あと、原理は良く分からないのですが、回転中心という概念を使用することで、ねじれによる間接部位の体積縮小も防げるようでした。これ以上は指定された論文を調査するしかなさそうです。
Dual Numberという概念は初めて知ったのですが、定義を良く見ると複素数の事なのかな。複素数はDual Numberに含まれる、ていうところまでは分かるけれど、全くイコールかというと違うっぽい気もします。
http://robotics.technion.ac.il/papers/dual_numbers_dynamics_brodsky.pdf
Dual Quaternionsに関する研究についてのリンク先は次です。
http://www.cgg.cvut.cz/~kavanl1/

Dealing with Destruction

「カンパニーオブヒーローズ(Company of Heroes)」という、最近発売されて非常に評価の高い第二次世界大戦をテーマにしたRTSがあるのですが、ほぼ全ての建物が破壊可能な状態におけるキャラクタのパスプランニングやアルゴリズム構築についてのお話でした。ゲームは日本では2006年12月に発売されていますね。
http://companyofheroes.zoo.co.jp/news.php (日本語サイト)
http://www.4gamer.net/news.php?url=/DataContents/game/2132.html (4Gamer.netのサイト)
マップを1m四方のグリッドに分割し、各グリッドに進入可能不可能情報が埋められているタイプのデータ構造です。ただし、ユニットの大きさには大小存在するので、単純なビットフラグではなくユニットの大きさを考えた情報が埋まっているようです。セッションではこのグリッド情報のことを「Precise Map」と呼んでいました。ユニットはPrecise Mapを元に経路探索をします。A*とかそういうやつです。
あと、建物が壊された時にPrecise Mapが更新され、ユニットのパス検索が再実行され、新しい最適なパスに動き出します。更にグリッドよりも粒度の荒いSectorMapと言うデータ構造(10x10のグリッドくらいを一つの塊でsectorと呼んでいるみたいでした)を元に更に大域的なパスプランニングも行なっているようでした。
ユニット単位の動きはLuaベースのスクリプトエンジンを搭載し、ゲームデザイナがユニットのアルゴリズムを組むことができるようになっていました。例えば次の様な粒度でスクリプトを組めたそうです「攻撃を受けた時には5m以内の遮蔽物を探して、数秒立ち止まった後15m遮蔽物に向かって移動する」。Luaからは「5m以内の遮蔽物を探す」といった等のAPIを呼び出して、エンジン側がそれに対して適切な回答をする、といった仕組みのようでした。スクリプトは動的に編集可能だったそうです。in-Gameでのバランス編集は開発効率を上げるためには重要だと私は考えています。
後は車の挙動もリアルなものにするために、指定した位置に移動するためにどういったハンドルを切るのが適切なのかを検索するアルゴリズムを組んだそうです。車がその場で180度回転するわけにはいきませんからね。車に轢かれそうになったユニットは、つまり車の移動予定パスの上に存在するユニットは、ちゃんと車に引かれないように逃げるというところまで実装されていました(移動予定パスに対して垂直に逃げるそうです)。
グリッドベースのパスプランニングも、Luaベースのアルゴリズム記述も、新規性のある特徴ではありません。ただ、amazonのゲーム評価を読んでいる分にはAIが非常に高く評価されており、これらの要素をゲームに組み込む組み込み方そのものが非常に洗練されていたのではないでしょうか。デモムービーをいくつか見せてもらいましたが、兵士ユニットの思考過程や進入可能不可能情報等を視覚的に表示する機能が非常に優れており、ゲームデザイナがそれを確認しながらしかもゲーム実行中に動的にスクリプトを編集する等、トライアンドエラーを容易にする仕組みを上手く作った、ということがタイトル成功の勝利の秘訣だったのかも知れません。

Applied Physics

PS3タイトルであるMotorStormにおける物理シミュレーションの適用事例についての説明でした。また、最新バージョンでは通信対戦も出来ることから、通信+物理計算をいかに両立させるかという、かなりチャレンジングな分野への挑戦についての解説も行なっていました。
個人的に面白いと思ったのは車への傷をキューブマップで取り扱うことで、これだとゲーム中になにかとこすれた時にテクスチャのどこにデータを書き込めばいいのかがかなり簡単に決定できることになります。ひょっとして私が知らないだけでありきたりな手法だったりするのかな?

CRYTEK Demo

ExhibitionコーナーでCRYTEKの作成するシーンエディタのデモを見ました。CRYTEKは「Crysis」というタイトル開発で今非常に注目を浴びているゲームスタジオです。マップ構築、建物配置、敵配置、アルゴリズムの構築まで全てGUIで設定でき、設定した瞬間にゲームの世界に入ってテストができる、というものでした。かなり気合の入った開発環境でした。ゲームエンジンというよりもCrysis専用エディタの様に見えました。

Punk's Not Dead

花と太陽と雨と(廉価版)
(私にとっては)良くも悪くも生涯忘れることのないであろうアドベンチャーゲーム花と太陽と雨と」を作った須田剛一氏による講演です。
ゲームウォッチに全文が載っていますので、須田氏に興味のある方はご一読ください。
http://www.watch.impress.co.jp/game/docs/20070310/ghm.htm
基本的に経験談と思想をとりとめも無く話すスタイルで、GDCにおける他の講演は話す内容を体系立てて整理して話していたのとはちょっと違うスタイルでしたね。

Technology at Rare

レア社という、日本では64時代にそれなりに有名だった開発会社があります。現在はMSに買収されており、最近開発した「あつまれ!ピニャータ」がとても評判がいいそうです。
レア社はここ数年非常に低迷した状態にあり、最近復活を遂げたわけですが、本セッションでは、なぜそういった低迷状態にあったのか、そして今どうやってそこから復活したのかについて説明されていました。
社内の開発スタイルが、タイトル開発部署と技術研究チームが分かれているもので、上手くタイトル部署と連携が取れなかったり、正しい技術へのフォーカスが出来なかったそうですが、そういった状態から非常な努力を持ってなんとか現状まで持っていくことができた、というお話で、開発スタイルがわりと社内の状態と似ていてかなり参考になりました。開発と研究の間のコミュニケーションは非常に重要だそうです。