Chrome Hounds におけるチームAI


~ 「ゲームAI連続セミナー第3回」レポート ~






■はじめに

長久さんや三宅さんがやっている「ゲームAI連続セミナー」 の第3回に行ってみました。 今回のテーマは、チームAIです。
今回も三宅さんとグループワークの2部構成です。

基本的にセミナー中にメモったものを起こし直したので、 聞き漏らしたり、勘違いしているところがあると思います。すいません。


■最初

最初に、定番のゲームAIセミナーの概要紹介。
しゃべる人募集中。

反省点、改善点。
 議論が抽象過ぎた->マリオを題材にしてみた
 資料を事前に配布


■集団における知性

全体として知性を持つ
人工知能の流行の分野であるが、ゲームではユーザーに感じさせるのが大事
プレイヤーを楽しませるAI
それぞれの人に大切なこと
 プログラマ:以下にして知性を持たせるか
 企画;いかにしてユーザーに知らせるか

集団の知性=個々の知識+連携
仕掛けを作って、シミュレーションして結果が「全体の新しい機能」になってればOK
試行錯誤する必要がある。

2つのアプローチ
 群知能
  単純な機能しかないAIを連携
 マルチエージェント
  高度な知識を持つAIをコミュニケーションをとらせて連携させる
  賢い。役割を認識する
 境目は難しい。群知能は自然の模倣、マルチエージェントは社会の模倣に使われる


■群知能

亀ががけの上に残されたとき、どうやって助けられるか?
 ○巨大ロボ?
 ○空を飛ぶ?
 ●小さなロボットを使って連携
  ブロックを作る
  ブロックを運ぶ
  ブロックを積む
 3つめのような単純なものを組み合わせるのが群機能

ex.
 自動計測ロボット
 自然全体(蜂の社会:働き蜂+女王蜂)

 シミュレーションが盛んな分野


■マルチエージェント

ロボットチームを作ってワールドカップで優勝したチームに勝つには
 ○群知能:それぞれが反射的に行動
 ○FSM:用意した状況に応じて行動
 ●人間の役割を模倣
  フォワード
  キーパー
  ミッドフィールダー
 各AIに高度な知識が必要

ex.
 ロボカップサッカー
  シミュレーションリーグ(コンピュータ上で再現)
  本当のロボット
   車、4足歩行(アイボ)、2足歩行
  具体的な技術例:フォーメーションプレイ
   フォーメーションできる条件を持ち
   トリガが立ったら、最適なプレイヤーを選ぶ
 チンパンジーの群れ(リアル猿)
  偵察、先陣、見張り、しんがりの役割をつけて道路を安全にわたる
 ザトウクジラの群れ
  連携して魚をとる
  声を出して連携
 交通シミュレーター
  相互回避システム
   自分が通る道を知らせておいて、他の車に避けてもらう

Q&A

Q. 亀の例はマルチエージェントと違うの?
A. そういう人もいないことはない。行動が反射的なので、役割を認識しているわけではない。
Q. 交通シミュレータは群知能でない?
A. 反射なら半径?mとかで処理するが、メッセージを送っているのが知性的
Q. ストーカーってゲームがあって、それは生態系をシミュレートしているらしいが
A. しらない
Q. 鯨の例は役割が同じなので、群知能ではないのでは?
A. タイミングを合わせるのは役割分担では?
Q. 鳥の群れの軌跡は集団の合意で決まっている?先頭についていく?
A. 例で出したのは、自然とは違う


■集団の知能のゲームへの応用

タイトルに組み込まれた例
あまり多くない
なぜ?
 一体のAIなら何とか作りこめる。集団はごまかせない
 どの技術を使ってよいか分からない(まとまりがない)
 調整方法が分からないので不安(ノウハウが少ない)
可能性はあるので、これからのフロンティア

何をもたらすか?
 群知能:リアリティ
 マルチージェント:敵、見方、プレイヤーに近い位置でチームを組める
 (キャラクタに登場させやすい)

群知能の応用:
 群制御:クローズアップされすぎているくらい(ビジュアルに訴える)
  鳥の運動の制御(ボイド)
  自然界の生物の動きをシミュレート
 進化:用例があまり無い
  アウトロノーカ
  遺伝的アルゴリズム
 知性:群知能を生み出す立場にプレイヤーを置く
  レミングス:回数制限のある命令
   実際は群知能ではない(自分たちで協調しているわけではない)
  ピクミン:
   これも違う(ピクミン同士の連携が無い)
  ブラックアンドホワイト
   AIは自立的に行動。障害を取り除くのがプレイヤーの仕事

  戦略シミュレーションで勝手にやってくれるのも考えられるがゲーム性と衝突
   プレイヤーの見ていないところで何かされているのは困る
  クロムハウンズでも勝手にクリアされるのは困るというのが出た。
  自分たちで判断できるが、能力を抑えておいて、プレイヤーが指示してから本気を出す

Q&A

Q. ピクミンは群制御はしているのでは。
A. Yes. 群の知性が無いということ


■クロムハウンズ(プラチナ版が出て、安く手に入るよ)

プレイヤーと戦うCOMのチーム
マルチエージェント
記憶、意思決定、行動のそれぞれに協調が必要
プレイヤーの協調と対等に戦う(のが目標)
技術ありきではなくて、プレイヤーができていることをすべてやれるようにしよう
 プログラマ、企画と検討(デバッガの意見も)

個々のAI(第2回の資料を見てね)
 プランニング(目的に対して行動を積み上げる)
 ゴール思考(何をするか自分で判断する)
 階層化して、小さなゴールを積み重ねる
 コンセプト:人間の知性を真似する
  人間:複数の要求を持って、そのなかで最適な行動を選択
  AI:複数のゴールを持って、最適なゴールを選択する
 →意思決定機構を追加(評価関数)
  見返りとリスクを考えて意思決定
  自律型エージェント(個としてのAI)が完成する

連携  チームAIを入れないと、個別撃破されて帰ってくる
 見方を救援することを入れる
  足が遅いやつは、やられやすいので護衛をつける
  体力が無いやつを助けに行く。
   おとりに使われる可能性もあるので、あまりにも遠かったらいかない
 なかなか人間にかてない
  人間は、多対一で戦っている。
  出会った時に戦力を分析して、敵が1.4倍強そうなら退却(群知能的アプローチ)
  もっとも弱い敵を集中的に攻撃
 まだ勝てない
  ゲームの流れを読む(時間的戦略)
   終盤に勝利条件を見越した行動をとってくる
   組織の葛藤を取り込む(組織の利益と個人の利益は一致しない)
    対立関係にある
     組織としての合理性
     個人としての合理性
    敵をたたくときは多対一
    ゲーム後半では目標をあわせる
    勝負をかけるタイミングを合わせる
   チームAI(全体を見渡して意思決定する人)を作る
    チームとしての戦略
    ただし、この判断はあるときは正しくてあるときは間違っている
     評価関数で実際の行動を決定
 これでも勝てない
  人間の終盤の決断力がすごい
  チームに対する評価値は後半になるほど影響力が強い
  プレイヤーから、ゲームメーキングをしているように見える
 柔軟な計画性(複数のプランを考える)ができてない。
 言わなくても分かるがまだできていない。

Q&A

Q.初心者の相手になった?
A.yes. 人間を圧倒するのは作れない。人間は学習できる(初心者の学習曲線の制御)。
Q.パラメータを調整するのに工夫した?
A.デバッガさんがたくさん確保できてたので、意見をもらっていた(企画の宮崎)。

休憩時間に聞いたこと

Q.チームAIと個人の意思決定の評価関数による選択は、実際の世界に成り立つの?人工知能?社会学的に正しいの?
A.そういうことをやっている人はいる。実装したときは知らなかった。チームAIを完璧に作りこむことができなかったので、自分との判断とで選択させるようにした。無能な上司(三宅さんはこの言葉を使ってません)のときは、自分で判断して行動するのは一般に成り立つのかも。部下が上司を評価する仕組みを入れていくのはAIとしても面白いかも。


■集団の知能のつくり方

知性
 条件反射
 エージェントで作るのがありある
知識
 知識交換型
 黒板モデルがありうる
行動
 階層型
 分散型
 管理型(チームAI)
コミュニケーション
 互いに通信
 チームAIから指示
 黒板
行動の同期
 反射型は特に考えなくて良い
 結果共有(他の人が成功したら実行)
 エージェントがマルチエージェントを制御

グループワークでリアリティのあるNPCのチームを作ってね


■グループワーク

テーマ: Super Mario Brothers

今、作っているゲームでのSMBで作られている工夫があるはず
60分で、ひとつの意見を纏め上げよう(成果物を作る)。

参加者(2番テーブル(全9テーブル))

どの技術をどのように入れていけばよい?

意見だし(上のならび順でそれぞれの意見(実際の発言順ではない))
□フォーメーション。地形の利用。乗っかろうとするところに敵がいる。パタパタのあたりに集まって迎え撃つ。土管の後ろを狙うとか。マリオの状態を見て、死なないようにふるまう(ファイアになったら誰かが犠牲になって攻撃)
□SMB AIいじっても面白くない:キャラが一緒に行動しない。群集管理で強くなるのでは?とりあえず強いやつが先に攻撃すればよい。
□遺伝的アルゴリズム(マリオに向かうけど、とまってみたら?)。勝ちパターンの学習
□階層型AI(親分の指示した行動をとる)。親分は動かない。親分が死んだら元のに戻る。
□パックンフラワーは移動できない援護役。クリボーがやられそうなタイミングで火を吐く。
□火を吐くのは方向を決めているが連携して弾幕を吐く。集中管理型。
□ノコノコが上、パタパタが下とかフォーメーション。
□きのこの下とか行きやすい場所があるので、メリハリをつけていっせいに襲い掛かる

地形だと、レベルデザイン。動的な方が面白いのでは?
いや、地形でも自動デザインという点では面白い。
フォーメーションはどんなメンバー?
 数に物言わすとか
 時系列を考える
 まずははめ方を考えて、地形を考えて組むのかなぁ。司令官が考える。階層化するんでしょう。
数に物を言わせるのあり?ルールがあってまとめるのが正しいのでは?
 何か制限をつけていかないと面白くないでしょう。
■1面の密度で、考えるのはいかが?1対20ぐらい。
遺伝的は1つの面で?
 面が進めば難しくなる。
遊び方によって難易度が変わる?
ユーザーが気づけるかが大事では?

具体的にSMBを考えて

数に制限があるとするとフォーメーション?

敵って、一度画面外に出たらもう出なくなるんだっけ?
違う、戻ってくる。
パックンフラワーが踏んでるとき出てこない制限もなしでは?

どんなフォーメーションが組める?
強いのは、多分パタパタ。
マリオの状態を見るとか考えられると思う。

役割が大事になってくると考えられる。
偵察
おとり
鉄砲玉
しんがり?
ノコノコがひっくり帰ったときに助けに行く?
ノコノコが自分でひっくり返って攻撃。
クリボーは方向転換がありでは
ぱたぱたをどう援護するか?
壁が行動範囲。
フォーメーションは、1つのマップの中に何個かで良いよね。OK.
勝てないと思ったら、逃げる。
ノコノコがひっくり返ったら逃げる。
SMBって、ノコノコどうだっけ?
 踏めばひっくり返って、横からあたると飛んでいく。
 ノコノコ:エリート
 クリボー:ザコ
 みんな横が強くて上から弱い

パタパタの下にユニット
フラワー:炎で援護射撃
パタパタ:上から
ノコノコ:
クリボー:

地形を考えて、いかないとだめそう?
地形情報から、フォーメーションを決める?
 見方の有利かどうかを判断して組む、行動させる。
チームAIが地形を判断して配置?
毎回プレイで変化があると面白い
個別っぽい感じがする。
 役割と組み合わせになりがち。
うまくやっていれば組んでやっているように見せられるのでは?
集まっていってやらないといけない。
地形の評価係数をつけて、攻撃か待つかを考えれられる。
 結局フォーメーションでは無い。
それっぽく見えればよい。

ディレイをかける(タイミングをずらして落ちてくる)
 おなじようなことをしようとするやつはずらす。
マリオの行動を見るのあり?
 ジャンプしてからの行動で判断。
ジャンプの行動の対応は遺伝的にやるのはありかも。
違う役割の組み合わせが価値があるのでは?

何を考えればよい?どう連携をとればよい?

フラワーの援護射撃にあわせて何か考えるのがいけそう?
 接近してジャンプしたときに出てくる。
 囮としてジャンプさせたくなるのを配置するのがあり?
 土管の裏にノコノコを置いといて、意識を集中させていきなり出てくる。
 フラワー強いね。ファイヤの時は引っ込む。
 「クリボーは踏むか」という意識が強い。囮役ならクリボーかな。
 クリボーが近くにいたら察知してファイアを出しておく。

パタパタの活用法(上から踏む、ファイア、逃げるしか手が無い)
 マリオの頭の上に置いたら最強(ジャンプできない)。
 そこに他のやつを寄らせる。
 最初は上にして、だんだん下に出てくる。
 逃げるためにスピードだしがちになるから、ノコノコで緩急つける。
 飛びにくいから、下に何かつける。
 仲間の上にいるのも手かも。

ノコノコ
 基本、クリボーの後ろ
 土管の手前にあるのは有利。
 土管の近くで待つ?
  そういえば、マリオのキャラで、待つのって無いね。
   強くなるからやらないのでは?
   とまっていると色々な情報が手に入ってくる。
 ひっくり返るとどうしようもない。
 とりあえず蹴りたくなるので、誘導に使える。

クリボー
 意外と最初のクリボーでうっかりする
 気の緩みを誘う
 逃げて有利な場所に行く
 団体で来ると1UPの餌食になる
 横移動が自由になるが強くなる。
  出ないと出現させるタイミングだけ。
  心理的な駆け引きを狙える
  出し方もチームAIで制御させるのでは。

チームの構造

分散型で考える?
チームAIを使うとしたら、
 配置
 マリオの振る舞いを見てどう攻めるか指示
結論:チームAI

伝えあう行動

死んだ情報
ファイアーマリオの情報は?何ができる?
ファイアーだと、パタパタやパックンが死に安いのでほかのが行く
ノコノコがひっくり返ったときにマリオが近くにいあるか
地形の評価点?キャラの行動を考えてチームAIが指示

コミュニケーションの仕方

下から上。自分の情報を伝える。
マリオの動きは誰が伝える?
チームAIが指示する。(ファイアになりそうになる前に攻撃)

問題点ある?

AI使っているように見えない?
ただ単に配置ジャン!
地形が変わったときに配置が換わる。
チームAIが大変だよね?
 配置の問題にしか落ち着かない?
結局難易度を決めているのは地形
手加減加えないと最適解に落ち込む
 結局配置に持ち込まれる?
面白く感じられそうか?
 結局配置ジャン!
 個別の反射で何とかなってないかとかなりそう。
やるたびに変われば?
ガントレットがランダム性で変化をつけてる。
自由度の少ないゲームは重要でない?
コストに対するリターンが悪い
あえてメッセージ出すとか
 みんな逃げろ!
 クリボーお前が行け!俺は行きたくない
 パックンが土管の中で「まだこないかなー」
むしろそっちが面白い?
罪悪感を感じそう。


■他のグループ

1番テーブル

割と瞑想
狭い世界なので、ここのキャラに独自性があっても…
「マルチエージェントは上手くいかない」から始まった。
チームAIでいろいろ工夫するのが面白そう?
どういじられたら見当がつかない。
群知能系で、削っていったら資料で出ているものになってった

5番テーブル

敵の性能が低い
集団で襲い掛かる
ファイアにならないように反射的に動かす
 はてなブロックに集まるとか
チームAIではいきつまる
 3人チームでタッグを組む(黒板やマルチエージェント)
 先頭がジャンプを誘う役。マリオの着地点が無防備になる。よけたときに突っ込む。

6番テーブル

最小限の労力で最大限の効果
 反射型
 黒板モデル(マリオの位置、着地予想地点)
 マリオの様子を見て全体で行動
 パックマンのモンスター的
 連続して踏まれないようにする。
 あな、パックンフラワー、?の周りがキーポイントなので、その周りを見る
 強いやつから弱いやつまで優先度をつけて、順番に出す。

9番テーブル

マルチエージェント
マリオの位置、仲間の位置を考えてポジショニング
 裏にあるのは、順番に並ぶと上手そうだが、最後に穴に落とさせてはめる
シナリオを作る的
地形情報と周りの情報から自分の行動を考える
やられた情報をチームAIに集めといて、アンチパターンをためる


■さいごに

グループワークは少しなれた感じ。
でも、脊髄反射で分けわかんないこといってしまうときがあるなぁ…





もどる

imagire@gmail.com