SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ゲームAI連続セミナー「ゲームAIを読み解く」レポート

ゲームAI連続セミナー「ゲームAIを読み解く」 第3回 レポート

第3回「Chrome Hounds におけるチームAI」レポート


  • X ポスト
  • このエントリーをはてなブックマークに追加

人工知能(AI)をゲームに応用しようとするのが「ゲームAI」である。ゲームAIへの理解を深めるために連続セミナーが開催されている。本稿では、同セミナーのコーディネータが、第3回の模様をお伝えする。

  • X ポスト
  • このエントリーをはてなブックマークに追加

 IGDA日本は、株式会社フロム・ソフトウェアの協力、日本デジタルゲーム学会(DiGRA JAPAN)の後援の下、5月12日(土)に東京大学本郷キャンパス工学部新2号館(東京都文京区)にて、ゲームAI連続セミナー「ゲームAIを読み解く」の第3回「Chrome Hounds におけるチームAI」を開催しました。本セミナーのコーディネータを務めました筆者がレポートをお届けします。

 なお、本連続セミナーの概要などについては、第1回のレポート第2回のレポートを参照して下さい。

Chrome HoundsにおけるチームAI

講演の様子
講演の様子

 第3回は「Chrome HoundsにおけるチームAI」と題して、集団として知性を発揮するAI技術を取り上げました。具体的なテーマは、「群知能」「マルチエージェント」「チームAI」です。第1回、第2回では、個として機能するAIを想定してきましたが、今回はそれらを集団として見た時、全体として知性を発揮するために、どのような手段が使えるかを考えました。

 個としての知性を発揮するAIだけでなく、なぜ集団全体が知性的に見えなければならないかと言えば、そうした方が本物っぽく見えるからです。目的の共有などによって生じる集団では、個々にゴールを目指すだけでなく、互いにコミュニケーションをとり、協力してゴールを目指すことがよく観察されます。個の知能を連携させ、個にはなかった新しい能力を、集団のものとして発揮しています。これをAIでも表現しようというわけです。

 どんな「個の知能」と「連携」があると、どんな新しい能力を実現できるのでしょうか?

群知能

 「個の知能」として単純な反射型AIを持ち、それらが相互に情報をやり取りして動く様子を大局的に見ると、知性を発揮しているように見えるのが「群知能」です。

 反射型AIは、外部からの刺激によって、取るべき行動を選択します。外部からの刺激に、他の個体からの情報伝達も含まれるとすると、情報伝達と行動の「連携」が構築できます。一連の行動が知的に最適戦略をとっているように見えれば、「群知能」というわけです。

 例えば、ボールを拾って仲間に届けようとするキャラクタ、ボールを受け取ってトスを上げ続けるキャラクタ、バットを振り回すキャラクタ、がいると、行動の連鎖によって、落ちているボールを遠くに飛ばすことができるようになります。個にはなかった新しい能力を、集団のものとして発揮できるわけです。

群知能の例
群知能の例

マルチエージェント

 状況を解釈する知識を使って、自らの果たすべき役割や、明確なゴールを持って行動をとるのが「エージェント」と呼ばれるAIです。エージェントという「個の知能」が役割分担しながら、ゴールに向かって協調行動をとるのが「マルチエージェント」です。

 エージェントと反射型AIの区別は分かり難いのですが、1つの目安として、ゴールを知っているかどうか、を挙げることができます。群知能の例で出てきた「ボールを拾って仲間に届けようとするキャラクタ」は、自分がボールを拾うのが、ボールを遠くに飛ばすためだと知りません。「マルチエージェント」では、個々のエージェントはゴールを知っていて、状況に応じて、ゴールを達成するためにやるべき役割を判断し、行動します。エージェント間の情報伝達による直接的な「連携」だけでなく、各エージェントの判断による役割分担により、暗黙的な「連携」も存在することになります。

 例えば、全てのエージェントが「拾う」「上げる」「打つ」の機能を持っているとしましょう。ただし、「上げる」と「打つ」を同時に行うトスバッティングはできないものとします。この時、ボールの近くにいるエージェントはボールを拾う行動を起こし、そうでないエージェントは、ボールを持つエージェントとの距離を調整しつつ、バットを構え、ボールを要求することにします。「ボールを遠くに飛ばす」という目的のために、状況に応じて役割を分担し、行動をとることができます。

マルチエージェントの例
マルチエージェントの例

チームAI

 より強い「連携」のためには、情報の共有や、行動の同期が必要となる場合があります。情報伝達によって、そうしたことは可能ですが、個々のAIの記憶領域に同じ情報を保持したり、情報更新のコストが高くつくなど、あまり効率が良いとは言えません。

 そこで、全てのAIが共有すべき情報や判断を、個々のAIから独立させて用意し、個々のAIの負担や複雑度を軽減させる実装を考えることができます。司令部をおいて、大局的な判断は司令部に任せるという考え方です。この司令部のことを「チームAI」と呼びます。

 チームAIを置くことで、個々のAI間の情報伝達を、チームAIへの通知と、チームAIから全AIへの通知に置き換えることができます。個々のAIはチームAIのみを情報伝達相手とすればよくなるので、個々のAIの情報伝達処理の複雑度は抑えられます。チームAIが持つような、共有情報の保持領域を通じて、個々のAI間の情報伝達を置き換える仕組みを「黒板システム」と呼びます。

 例えば、先ほどのマルチエージェントの例は、全てのエージェントが同じ思考方法をとり、過去の記憶など、エージェントによって異なる要因もないので、全ての判断をチームAIに委ねることが可能です。位置関係からボールを拾いに行く個体を決め、どの個体にトスを上げて打たせるか、全ての判断をチームAIで行い、各個体はその指示で行動させることができます。

 チームAIは強力な集団の知性を効率良く実現できます。しかし、頼り過ぎてしまうと、1人の知性が駒を動かしているような雰囲気になってしまいます。チームAIの持つ情報収集能力をどの程度に設定するか、チームAIと個々の判断のバランスをどう設定するか、ゲームのルールとのバランスも含めて、十分な検討が必要です。

チームAIの例
チームAIの例

Chrome Hounds の事例

 「Chrome Hounds」では、ゴール指向型プランニングを行うエージェントに、チームAIを組み合わせた実装が採用されています。講演では、AIの協調関係を作り出すのに使われた3つの方法が紹介されました。

 1つめは、ゴール指向型プランニングの枠組で実現できる方法で、協調をゴールに設定するというものです。例えば、状況に応じて、仲間を守ったり、助けに行くことが、ゴールとして設定されれば、その行動は協調的なものとなります。

 2つめは、個のAIの機能として判断を行う演算処理の中で、他の個体を参照したり、処理方法を共有するという方法です。遭遇した敵と交戦するかどうかを周囲の仲間の状況を参照して決めたり、攻撃目標を共有して集中砲火を実現するなどを実現しています。

 3つめは、チームAIの利用です。特に、終盤では、行動の精度が甘いと詰め切れない状況があるので、統制された行動が必要になります。終盤では、考慮すべき敵が減るので、各自が判断するよりも、最終攻撃目標や、攻撃開始時刻をチームAIの指示に合わせることで、効率の良い戦力運用が行えます。将棋のAIでも、詰将棋を解く終盤専用のアルゴリズムを持つものがあります。局面に応じて使用するAIを変えるのも、有効な戦略です。

グループワーク

 講演に続いてのグループワークでは、6~9名の9つのグループに分かれ、集団として知性を発揮する手法を、既存のゲームに付け加えることを考えました。「群知能」もしくは「マルチエージェント」のいずれかに「チームAI」を組み合わせたり、講演で取り上げた手法を、実際に使うことを考えてみて、理解の確認と相補を行おうとしました。前回とは異なり、対象となるゲームタイトルを事前に指定した上で実施したので、具体的に考えやすかったのではないかと思います。

 グループワークの流れとしては、まず、どのようなやり方が思い浮かんだかを、メンバー全員で挙げていきました。こうしたら使えそうだという意見だけでなく、これはダメそうだという意見も挙げてもらいました。ゲームタイトルを指定し、さらに面も指定し、出てくる敵の種類も4種類に限定されている中で考えてもらい、使えそう、ダメそうの評価が行えるように配慮しました。

 次に、使えそうとされたアイデアを整理して、その中から1つ選ぶ、もしくは、いくつかを組み合わせて、具体的にゲームがどうなるか考えてもらいました。さらに、そのアイデアを入れることで、具体的に、ゲーム内でどのようなシチュエーションの発生が期待できるかイメージしてもらいました。実際のゲーム制作においても、続編をどのように作るかは重要なテーマであり、もっと大きい話であれば、既にジャンルの確立されたゲームを作る場合には、新作であっても、差別化された続編を作るのと同じと見なせます。

 続いて、考えたAIの設計を行ってもらいました。「個の知能」をどう作るか、どう「連携」させるか。「連携」については、集団の構造、流通する情報、コミュニケーションの方法、の3つを、具体的に図を描いて考えてもらいました。

 時間の余裕がでたグループについては、設計に基づいたシミュレーションを行って穴を見つけ塞ぐことを考えてもらったり、実際の開発を行う場合のワークフローを考えてもらったりしました。

 グループワークのまとめでは、いくつかのグループの成果を発表してもらいました。設定が、ルールのシンプルな古典的名作だったためか、「群知能」のアプローチをとるグループが大半でした。前回同様、グループ討論のレポートを作成する予定です。

今後の展開

 講演に関する資料は、IGDA日本のサイトで配布が予定されています。

 本セミナーの第4回は2007年6月末を予定しています。詳細な日時、場所などは、まだ確定していません。テーマとしては、「Halo2」を題材に、有限状態機械について取り上げる予定です。5月末からIGDA日本のサイトにて参加申し込みを受け付ける予定ですので、興味を持たれた方はぜひご参加ください。

 また、本セミナーを手伝って下さるボランティアも募集しています。会場の設営や懇親会の準備など、ちょっとした事でも手伝って頂けると助かります。参加者全員で作っていくセミナーを目指して、4回目以降の準備も進めていきます。皆さんのお力添えを宜しくお願い致します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ゲームAI連続セミナー「ゲームAIを読み解く」レポート連載記事一覧

もっと読む

この記事の著者

長久 勝(ナガク マサル)

1972年1月10日生まれ。京都府出身。1994年龍谷大学理工学部数理情報学科卒業。ゲーム会社に入社。「ワンダースワンゲームプログラミング」「Javaゲームプログラミング」等を執筆。早稲田大学MNC非常勤講師。神楽坂酔っ払い研究所所長。ホームページはhttp://www6.plala.or.jp/mnagaku/。blog「mnagakuのx86_64地獄」も毎日更新中。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1344 2008/09/03 13:55

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング