Game Developers Conference 2009現地レポート

Game Developers Conference 2009、AI Summitレポート
AIのサミットは初の開催。活発な知識共有が行なわれる

3月23~27日開催(現地時間)

会場:サンフランシスコ Moscone Center

 

サンフランシスコのMoscone Convention Centerにて3月23日より開催されているGame Developers Conference 2009(GDC09)。初日と2日目は、例年通りTutorial Dayとして、ゲーム開発に関する特定のテーマを掘り下げていくチュートリアルセッションが設けられている。その中で、今年はじめてAI(人工知能)に関するトラック“AI Summit”が開催された。

 “AI Summit”は、ゲーム開発者や研究者など、ゲームAIに関心を持つ専門家や学習者を対象とするトラックで、業界の第一線で活躍する人々がAIに関する様々な議論を繰り広げていくというもの。ゲームAIを定義してその技術史を確認する基本セッションを皮切りに、初日と2日目にかけて総計15本のセッションが設けられた。

 本稿ではその中から、興味深いセッションをピックアップしてお伝えしたい。



■ Nintendo of America、Steve Rabin氏のセッション“#define GAME_AI”
 AIとはゲームの内容を決定づける重要な存在

Nintendo of Americaの主任ソフトウェアエンジニアであり、AIのスペシャリストであるSteve Rabin氏

 “AI Summit”の冒頭を飾ったのは、Nintendo of Americaの主任ソフトウェアエンジニアであるSteve Rabin氏による講演だ。Rabin氏はおもにゲームAIを専門として活躍するエンジニアで、Gas Powered Games、WizBang Software Productions、Surreal Softwareといったデベロッパーを経て、現在ではNintendo of Americaで次世代テクノロジーの研究開発に従事する人物だ。

 ゲームAIに関する多数の著書(代表作は『AI Game Programming Wisdom』シリーズ)もあるRabin氏は、今回、“AI Summit”全体のアドバイザーとして代表的な役割を果たしているだけでなく、ゲームAIの開発・研究者の集い、“AI Game Programmers Guild”を新たに立ち上げ、ゲームAI技術の集約と情報交換を呼びかけている。

 そのRabin氏によるセッションは、その題名を“#define GAME_AI”、つまり「ゲームAIを定義する」として、2日間にわたって続くサミット全体の方向性を印象付けるものとなった。このセッションでは、ゲームAIそのものの基本的な定義にはじまり、1980年の「パックマン」以降、ゲームAI技術がたどってきた歴史を振り返るなど、続くセッションで議論を深めていくための基礎的な情報が固められた。

 ゲームAIを定義するためにまずRabin氏は、「ただ単純に移動するだけのロジックはAIだろうか?」、「ランダム選択はAIだろうか?」と、AIとAIでないものを区別することを試みる。基本的にはプレーヤーや外界の作用に関係なく動作するものや、決まったパターンに従うだけのものは「AIではない」ということになる。すくなくともAIには、情報を収集する、考える、動作するという、3つの基本的な要素が必須であり、それにより見かけ上の「知性」が生まれる。

 

ゲームAIが影響する範囲は広く、ゲーム全体の内容を決定づけることにもなる
 Rabin氏は、AIの包括的な定義を「プレーヤーに対して、その存在に知性、賢さを感じさせるために役立つ何らかの技術」と表現した。また同時にそれは「通常はゲーム開発者が制作する様々な要素(ステージ環境、レイアウト、ストーリー、音楽、モデル、アニメーション、テクスチャ、その他)を生成する技術」にもなりうるという。

 つまり、一口にゲームAIと言っても、それが影響する範囲はとても広い。一般的なゲームAIはキャラクタの移動、経路探索をその核に持つが、影響範囲はそれだけでなく、スクリプトシステム、アニメーションシステム、物理・衝突のシステムと密接に関連しながら、ゲームの振る舞いを決定づける。さらに、プレーヤーが直接何かをする対象も、ほとんどはAIに制御された何か(NPCなど)である。

 例えば、「シムシティ」では、ゲーム環境(都市)そのものがAIで制御されているし、「Left 4 Dead」では、AIがゲーム進行を強くコントロールしている。また、NPCやモンスターといった一般的なAI制御のオブジェクトに関しても、その質がゲームそのもののシステムや良し悪しに大きく影響することは具体例をあげるまでもないだろう。AIはゲームの内容を決定づける、極めて重要な要素なのである。

 Rabin氏が続けて披露したのは、ゲームAI開発者がもつべき基本的な心得だ。箇条書きでまとめると以下のようになる。

  • AIの機能は、与えられた状況に強く依存する。万能な知性は必要ない。
  • ある問題を上手に解決するには、可能になるまで対象範囲を狭めればよい。
  • 逆に、ひとつのAI技術は特定の狭い範囲の問題しか解決できない。
  • したがって、すべてのゲームが異なるAIを必要とする。

     

     

    AIを効果的にゲームの面白さに生かした最初期の作品「パックマン」
     上記の自然な帰結として、ゲームAIのプログラムは、タイトル毎、またはその中の問題ごとに特化したコードを大量に持つことになる。AIのミドルウェアがつくり難いというのも、こういった特性に起因するようだ。とはいえ、他のゲームに学ぶことが無駄になるわけではない。同じものを再発明するよりは、ゲームAIにおける過去の成功例を参考にするほうが、より大きく前進することができる。そこでRabin氏は、セッションのおわりに、ゲームAI技術の面で大きな成果をあげたタイトルを時代順に挙げ、それぞれのタイトルが達成した要素を解説した。

     その筆頭として紹介されたのは、1980年に登場したナムコの「パックマン」。敵キャラクタのそれぞれに明確な性格付けがされ、AIと呼べる水準の制御がなされている一方で、ゲームにランダム性が一切含まれていない点を、Rabin氏は高く評価している。そのほか、紹介は「シムシティ」、「たまごっち」と続き、近年の成果としても「SPORE」、「Fable II」、「Left 4 Dead」などが挙げられている。それぞれについては下図でご紹介しよう。

     そしてRabin氏は、ゲームAI技術者が、より密接にゲームデザイナーと連携していくことが、新たなゲーム性を生み出す上でとても大切であるとし、またそれによって新たな市場を開拓することができるはずだとして講演をまとめた。そういった試みの理解者、あるいは先駆者の例として、Rabin氏はウィル・ライト(最新作は『SPORE』)と、ピータ・モリニュー(最新作は『Fable II』)の名前を挙げている。両タイトルとも、AI技術がゲームのユニークな体験に不可欠である点で共通している。

    「シムシティ」は、セル・オートマタを本格的にゲームに応用した最初の例「たまごっち」は、仮想ペットの先駆となった「Half-Life」は大量のスクリプトをAI制御に組み合わせ、効果的な演出を実現

    「シムズ」はオブジェクトに「役割」の情報を持たせることで、NPCとの自然なインタラクションを実現「Black&White」のペットは学習によって性格が変わるという試みがなされていた「EyeToy」は動き認識、ヘッドトラッキングといった映像処理を大規模に実験した例と言える

    「Halo 2」は、後に主流となるBehavior Tree AIアルゴリズムの最初の成功例「Forza Mortorport」はプレーヤーの走行を学習する人工知能を搭載した「SPORE」のクリーチャークリエーターには、すぐれた制作支援AIの例を見ることができる

    「GTA IV」は、AIによって都市のリアルな生活感が演出されている「Fable II」では、ペットの犬、家族、町の人々が、プレーヤーに対して多様な反応を示す「Left 4 Dead」では、AI監督がゲームの展開を制御し、毎回異なるゲーム体験を提供する



    ■ ジャンルを問わずに使えるAI技術は可能なのか?
     Rockstar Leedsのエンジニアが提案する、AIプログラムの汎用デザインパターン

    Rockstar LeedsスタジオのBrett Laming氏
    ここからの議論の基礎となるAI処理ループ。プレーヤー操作と同じ構造をもつ

     前節のSteve Rabin氏によるセッションでは、「すべてのゲームが異なるAIを必要とする」ことが語られていた。これはゲームAIにかかわる開発者を等しく悩ませる問題であるようで、この“AI Summit”全体を通じ、「共通の部品はありうるのか?」、「再利用可能な技術は?」といった生産性をテーマとするディスカッションが多くみられた。

     その中で、比較的明確な提案をしてみせたのが、Rockstar LeedsスタジオのBrett Laming氏だ。Laming氏は、「GTA Vice City」や、最新作の「GTA Chinatown Wars」といった作品の教訓を生かし、再利用可能なゲームAIの設計方法について議論を展開した。「GTA」シリーズは多彩な動きが存在するアクションゲームであり、移動だけを見ても、徒歩から車、飛行機まで、さまざまな形態があるため、汎用性の高いアルゴリズム設計が必須であったのだろう。

     本セッションで対象となるのは、おもにNPCの制御に使われるAIだ。Laming氏はここで、、ジャンルを問わずに利用できるAI設計の提案を試みる。そのために前提となるAI処理の基本的な構造として、「情報を集める」、「考える」、「操作を入力する」、「動作する」という4つのステップを設定。これは、プレーヤーがキャラクタを操作する手順ととまったく変わらない構造だ。これにより、AI制御にまつわる特殊性が薄れ、可搬性が高まるということのようだ。

     では、それぞれのステップをどのように処理するか。まず情報の収集については、一定角度範囲の視野、一定距離範囲の聴覚といった、限定的な能力の「センサー」で外界の情報をとらえ、記憶領域に保持するという手法を基本とする。メモリから直接ターゲットの位置や状態を取得してしまうのではなく、人間のように外界の情報を得て、それをもとに各種の判断を下すことで、たいていのゲームで自然な反応が可能になるわけである。

     次に「操作を入力する」という部分。Laming氏は、プレーヤー操作のキャラクターと、AI操作のキャラクターとで全く同じ手順を使えるよう、キャラクターの操作情報を「Virtual Yoke(仮想の操縦桿)」という形にまとめている。これは、加速や方向転換といったごくプリミティブな操作の入力をまとめたデータクラスで、人間型のキャラクターだけでなく、車両に、船舶にと、あらゆる対象に対して同じものが使えるのがポイントだ。

     操作情報が与えられたら、あとはそれをもとにキャラクターを動作させるだけなので、話は簡単である。これで、AIがキャラクターを動作させるための基本的なインターフェイスが揃った。残るは、キャラクターにどのような動作をさせるかを決める、つまり「考える」という部分だ。これこそがゲームAIのキモであり、本セッションの多くの時間が割かれた。

    情報の収集フェーズでは、人間の能力とおなじく、可視範囲と可聴範囲のターゲット情報を集め、記憶する。AIに対して「自然な」判断基準が提供される「仮想の操縦桿」をAIに与え、人間と同じようにキャラクターを操作させる。これにより、どのような対象も同じ構造で動かすことができる実際に動作させるには、「仮想の操縦桿」によるコマンドをオブジェクトに適用できればよい。AIのための特別な処理はほとんど必要ない

     

    思考プロセスに「明示的な命令」のフェーズを噛ませることで、スクリプトによる制御や、プレーヤーやAIによる命令が可能となっている
    「行動計画」のフェーズは、AIの具体的なふるまいを決定する重要なパートだ
     汎用性の高いAIを実現するためには、「考える」ためのロジックが、さまざまなシチュエーションに応用できるだけの能力を備えている必要がある。つまり、特定の条件下でうまく動くように作られたAIは、他の条件下では追加のコーディングが必要となり汎用的とはいえない。複数のジャンルにまたがって使えるAIを実現するためには、非常に柔軟なシステムが必要となる。Laming氏はそのために、思考のプロセスを「Ambient Controller(環境による制御)」、「Planning(行動計画)」、「Explicit Order(明示的な命令)」の3フェーズに分類している。

     「環境による制御」は、言い換えればスケジュールのようなもので、1日単位の長い時間系の中で、その時々において何をすべきかを既定するものだ。内容としては「朝起きて仕事に行く」、「お腹が空いたので食事をする」という感じになる。「行動計画」は、そういった大目標を達成するための、具体的な行動内容を決定する部分だ。プレーヤーが目にするAIの振る舞いは、おもにこのレベルとなる。最後の「明示的な命令」は、スクリプトによる直接制御や、プレーヤーによるAIへの命令などを実現する、割り込み制御である。

     これらの要素のうち、最も具体性の高い「行動計画」をどう実装するかが、AIの質を決める上で決定的になる。Laming氏は、単純なゲームAIの実装でよくつかわれてきた有限状態マシン(FSM)や、階層型有限状態マシン(HFSM)、あるいは「Halo 3」や「SPORE」などの新しいゲームで使われたBihaviour Tree(振る舞いツリー)の構造を例にしつつ、そのすべてに共通する問題点として「ある行動中に、別の行動を割り込ませることの難しさ」を挙げている。

     どういうことかというと、たとえば「家に帰る」という行動をしている最中に、「敵に遭遇」という事件が発生し、「敵と戦う」という行動が割り込んだ場合、敵との戦闘をやりおおせた後に、「家に帰る」という、以前の行動状態への復帰がうまくできないのである。「行動の文脈」に相当する構造がないためだ。対応するためには、大方、特別なデータ構造と特別なコーディングが必要になってしまう。

     

     

    「MARPO」アルゴリズムでは、行動の粒度に応じて異なるスタックを持つ。いかなる状態からでも、上位の行動に立ち戻ることができる
     そこで、Laming氏は、「以前の行動状態への復帰」を構造的に簡単に実現する、新しい手法を提案している。それは「MARPO」と呼ばれるAIアルゴリズムで、「Long-Term(長期行動)」、「Reactive(その場の対応)」、「Immediate(瞬間の動作)」といった形で、行動の粒度に応じて別の行動スタックを持つものだ。

     上記の例では、「家に帰る」は「長期行動」のスタックに、「敵と戦う」というのは「その場の対応」のスタックに分類される。さらに具体的なアクションは「瞬間の動作」内に積み上げられる。この構造では、どのようなタイミングでも、元々目指していた目標を忘れることなく、「家に帰る」という原状に復帰することができるわけだ。これは、遠大な計画に基づいて行動する「賢いAI」を実現するために、有効な手段となりそうだ。

     この「MARPO」法については、Laming氏が技術書「AI Game Programming Wisdom 4」に詳細を寄稿しているので、さらに関心のある方は同書を当たってみるといいだろう。Laming氏はその他、AIの経路探索、移動アルゴリズムについても議論を広げていった。そこでのポイントも、やはり汎用性の高さとなっており、人間にも車にも使える手法となっていたのが印象的だった。

     このセッションのほか、“AI Summit”では、ゲームAI技術に関して様々な角度から議論が行なわれた。全体的には、最新ゲームでの新しい技術が披露され拍手喝采、というような派手さはなく、純粋に知識を共有することを目的とするセッションや、現状におけるAI技術の課題と解決策を模索するパネルディスカッションなど、業界全体の技術レベルを向上させるような、手堅い内容が主流を占めていたように思う。いずれにせよ、このような形で情報交換が行なわれ知識が共有されることは、今後ますます質の高いゲームが生まれる土壌を育むことになりそうだ。

    有限状態マシンやBehavior TreeによるAI表現では、その構造上「行動の割り込みと原状への復帰」の実現が難しい。「MARPO」では、その問題をうまく解決している




    【その他のセッション】
    “Beyond the Behavior: An Introduction to Knowledge Representation”というセッションでは、MITメディアラボのPeter Gorniak氏と、Game AI and Design ConsultantのDamian Isla氏による、Knowledge Representation(オブジェクトの知識表現)の紹介と解説が行なわれた。この手法は、オブジェクトを、そのものではなく、キャラクターの持つ「知識」として表現するもので、実際のゲームとしては、「シムズ」シリーズで似た方法が使われている。この方法では、AIが欲求をベースに行動を選択するが、「知識」が不完全なときには、人間くさく行動を間違えることもある。

    “Toward Solving Pathfinding”というセッションでは、Rockstar New EnglandスタジオのKevin Dill氏とRelic EntertaimentのChris Jurney氏による、経路探索関連の話題が展開した。Jurney氏は、ゲームの内部処理で必ず使用する距離評価関数を並行利用して、AIの戦略判断の精度を高める方法や、フォーメーション制御における応用案を提示した。またDill氏は、経路探索に用いられるナビゲーションメッシュの作成方法、また、ゲーム的な戦略価値判断を経路探索に織り交ぜて活用するアイディアなど、いくつかの研究成果を披露した。“AI Summit”は、このような知識を共有しようとするセッションが多かったように思える



  • (2009年 3月 25日)

    [Reported by 佐藤カフジ ]