ゲームＡＩ連続セミナー
第３回事前資料 グループワーク資料「集団における知能を用いてゲームを組み立てる」
企画・原案

長久 勝
作画監督

三宅 陽一郎2007.5.12

グループワークでは、参加者がグループを組んで、テーマとなるＡＩ技術を用いて実際のゲームを組み立てる、という作業を行います。
グループワークを通して、ゲームＡＩの技術をより身近なものにし、これからのゲーム開発へ役立てて頂こう、という主旨があります。
セミナーではグループワークの時間には限りがあります。
その貴重な時間をお互い充実したものにするために、事前に議題について考えておいて頂ければと思います。
議題に沿って歩けば、自然と「集団における知能」の作り方や知識が身に付くように設計されています。

前回はなるべく自由にゲームアイデアを考えて頂きたいという主旨のもとに、さまざまなアイデアが提案されました。
一方で、議論を始めにくい、収束させにくい、ＡＩの議論のためのゲームの土台を共有できるまで時間がかかりすぎる、という意見をアンケートで頂きました。
そこで、今回は皆がよく知っているゲームを題材として、「集団における知能」をゲームデザインの中で考えよう、という方向で進めたいと思います。

今回の主人公（ＡＩ）たち

作画：みやけ

クリボー

ノコノコ

パタパタ

パックンフラワー

今回、協力して頂ける人（プレイヤー）たち
ＭＭＭ

作画：みやけプレイヤーから見てインタラクティブに実感できる「集団における知能」を考えてみよう。

集団の知能の作り方 議題（１） 集団における知能によって、ゲームに何を改善できるか、新しい要素を持ち込めるかを考えてみよう。
（２） （１）のために、どんなグループを作って、どんな機能や能力が実現できればよいか考えてみよう。
（３） （１）（２）でデザインしたことを実現するために必要な技術を考えてみよう。
（４）以上のコンセプトを、実際に動かしてみることを考えます。
どんな問題点（ゲーム、技術）が出てくるかを予想しよう。
（５）（１）〜（４）を実装するための開発ラインにおけるワークフロー（設計からデバッグ、フィードバックまで含めた）を設計してみよう。

では、これらの課題を、ＮＰＣの立場に立って、「 プレイヤーからどう見えるか？ どう感じられるか？」を常に問題として意識しながら、進めて行きましょう！

（１） 集団における知能によって、ゲームにどんな新しい要素を持ち込めるかを考えてみよう。

Ｍどちらがよいかは別として、ここでは、一体一体が独立にプレイヤーに向かう、というよりはＭチームを組んで、プレイヤーに対抗することを考えてみましょう。
一体、どんなことをさせれば、プレイヤーを楽しませ、そして、驚かすことができるでしょうか？

（２） （１）のために、どんなグループを作って、どんな機能や能力が実現できればよいか考えてみよう。

個人としての能力というのはわかりやすい。
足が速い、攻撃力がある、守備が堅い。

では、集団としての能力って何ですか？
（１）で決めたイメージを実現するために必要な集団としての機能ってなんでしょう？

（３） （１）（２）でデザインしたことを実現するために必要な技術を考えてみよう。

チームにさせたいことが決まりましたか？
複数のチームを組み合わせても構いません。
では、今度は、チームで実現するべき目標へ向かって、「チーム全体がまるで一つの知能であるようにふるまう」
ため、チーム内にどんな構造を導入すればよいでしょうか？

階層型

集中管理型

分散型

チームＡＩ
（全体を制御するＡＩ）

チーム内の構造、それはいわば、チームの骨格です。

チームの構造を決めたら、それが目的を達成する「一つの知能」として振舞うために、以下の３つの問題を考えてみましょう。
分散型

一体一体は、チームとして実現するべき機能のために、どのようなＡＩを持つべきだろうか？
＝ どのように世界から情報を取得して、記憶し、行動を決定するべきだろうか？

ゲームセンサー
世界

条件１

行動１

条件２

行動２

条件３

行動３

エフェクター ゲーム
世界

反射型ＡＩ（条件反射からなるＡＩ）

ゲームセンサー
世界

記憶

意志決定

行動 エフェクター ゲーム
世界

エージェント（自分で判断するＡＩ）（注）センサーとはＡＩが「情報を取得するための感覚」、エフェクターは「世界へ影響を及ぼすための機関」のことを言います。
例えばセンサーは視覚など、エフェクターは体の機関などのことです。詳しくは第２回の資料で「エージェント」の項をご覧ください。

さて、それが決まれば、チーム全体として、（１） どんな記憶を共有するべきか？
（２） 全員の行動のタイミングをどうあわせるべきか？
を考えましょう。つまり、（１） コミュニケーション（２） 行動の連携（同期）の問題です。
まず 「（１） コミュニケーション」の問題から。
この問題は、さらに、「如何に」「何を」という問題へ分かれます。
どのような情報を、如何にに共有するべきでしょうか？

記憶

記憶

記憶

知識交換モデル（お互いの足りない記憶を伝え合う）

共有メモリ、或いは黒板モデル（同じ場所で記憶を共有することで情報を伝え合う）

次に 「（２） 行動の連携（同期）」の問題です。
どのようにして連携を取らせるべきでしょうか？

その（１） 特に狭いフィールドなので、行動のタイミングなんて考えてもしょうがないので、特に考えないことにする。
フィールドが広くなったり、ＡＩの行動時間が長くなると、この問題はかなり真剣に考えなくてはいけなくなりますが、そうでない場合もあります。

Ｍ

その（２） 反射型ＡＩでは、お互いの相対位置などから、行動が決まるので、同期の問題は特にない。 しかし、うまく、プレイヤーを翻弄するように、反射のアルゴリズムを組んでおく必要がある。

チームＡＩによるチームのためのプラン
敵の前から急襲せよ

敵の後ろから攻撃せよ
成功？失敗？

前から急襲

成功

敵の後ろへまわるこむ

後ろから急襲高い位置へ移動する

上から攻撃
成功？失敗？

前から攻撃失敗

後ろから急襲成功
上から攻撃

その（３） 「結果共有」の方法。マルチエージェント・プランニング（チーム全体の行動プラン）がある場合には、今、どういった小目標を達成したかを共有して、それをトリガーとして各ＮＰＣが次の段階の行動に移る。

ＮＰＣ一体一体の知能の形は決まりましたか？
ＮＰＣたちに共有させる記憶と、共有のさせ方は決まりましたか？
ＮＰＣたちの行動の連携のさせ方は決まりましたか？とすると、チーム全体としては、次のいずれかのモデルか、二つのモデルを応用させた形になっているはずですね！

ゲームセンサー
世界

条件１

行動１

条件２

行動２

条件３

行動３

エフェクター ゲーム
世界

反射型ＡＩ
（条件反射からなるＡＩ）

センサー
ゲームセンサー
世界
センサー

エフェクターゲーム
エフェクター行動
世界
エフェクター

反射型ＡＩを連携させる「群知能」の方法

ゲームセンサー
世界

記憶

意志決定

行動 エフェクター ゲーム
世界

記憶

意志決定

行動

記憶

意志決定

記憶

意志決定

エージェント（自分で判断するＡＩ）

センサー
ゲームセンサー
世界
センサー

エフェクター
エフェクターゲーム
世界
行動エフェクター
行動

エージェントを連携させる「マルチエージェント」の方法

（４）以上のコンセプトを、実際に動かしてみることを考えます。
どんな問題点（ゲーム、技術）が出てくるかを予想しよう。

さて（３）までで設計は終わりですが、何か問題があるたびに、或いは、もっと別にさせたいことが出るたびに、（１）〜（３）に戻りましょう。
なぜならば「全体としての知能」とは、個の能力が高くなればチームとして出来ることが広がるし、また、チームとしてしたいことがあれば、それに合わせて個の能力を上げて行くという、全体と個の間の相互作用の内にあるからです！
サッカーチームを思い出せば、このことは自明ですね。

以上の設計をもとに、実際にＮＰＣたちを頭の中でシミュレーションしてみましょう。
企画の方は、プレイヤーの視点に立って、自分が設計したＮＰＣたちが、プレイヤーにどう見えるか、どう感じられるか、という点に主眼をおいてシミュレートしましょう。
プログラマーは、ＮＰＣたちを、特定のハードウエアの上で、メモリーやＣＰＵの動作を想定しながらシミュレーションしてみましょう。
処理はスムーズに流れているでしょうか？
多数のＮＰＣを制御に付随するデッドロックの問題はありませんか？

課題や問題を発見したら、グループ内で問題を共有して、話合いましょう。

Ｍ

プレイヤー

インターフェース

メモリ

ＣＰＵ

プレイヤーから見て、そのＡＩは本当に面白いだろうか？

（５）（１）〜（４）を実装するための開発ラインにおけるワークフロー（設計からデバッグ、フィードバックまで含めた）を設計してみよう。

ここからは、とても現実的な話となります。
（１）〜（４）でイメージし設計して来たアイデアを実装するための、開発ラインにおけるワークフローをデザインして下さい。
特に、以下の点を支点として考えて見てください。
（１） 企画、技術者に、どのような仕事を定義するか？
（２） 定義した仕事をどう一つの流れとしてつなぐか？
（３） テスト、デバッグはどのように行うか？
（４） 開発におけるフィードバックをどのように行うか？
（５） 開発工程はどの程度かかるか？

（例）クロムハウンズにおけるチームＡＩ製作ワークフロー（略式）企画

プログラマー

企画、仕様書を作成
開発メンバーに説明
デバッグ工程指示書作成

技術調査
プログラム作成
テスト結果シート作成

仕様書修正

プログラム修正

開発ラインのみんな
テスト工程
ビデオ録画
テスト結果シート記入
社内ＷＥＢに情報提示

課題、問題点小会議（検討、課題抽出）

制作管理ＯＫ！

デバッグ工程週会議

ビデオ録画
デバッグシート記入表
社内ＷＥＢに情報提示

録画資料検討
テスト、デバッグ結果検討
デバッガーさんの感想を直接聞きに行く

デバッガーさん

まとめＭ

ゲーム開発者のチームのための知能企画はプログラマーに「新しく価値のある課題」を与えてエンジニアとしての能力を引き出してあげましょう。
プログラマーは自分の能力と技術情報をわかりやすく見せることで、企画が散策できるゲーム空間の可能性の領野を拡げてあげましょう。
研究者は、企画とプログラマーに新しい技術の開発のフィールドを提供しましょう。
企画

技術者

Ｍ

コミュニケーションと相互作用！

研究者

解答例

（１） 集団における知能によって、ゲームに何を改善できるか、新しい要素を持ち込めるかを考えてみよう。

Ｍ

仲間がやられると、報復する。

（２） （１）のために、どんなグループを作って、どんな機能や能力が実現できればよいか考えてみよう。

仲間がやっつけられたことを知る指定された地点に集合する仲間がやっつけられたこと、地点を知り、その地点へ集合する

（３） （１）（２）でデザインしたことを実現するために必要な技術を考えてみよう。

移動

メッセージ「やられた〜」をチームに伝える

ＮＰＣ同士のインタラクションはいらない

メッセージ伝達、移動の能力

チームの構造
集中管理型
チームＡＩ（全体を制御するＡＩ）

集中管理型。チームＡＩがメッセージを受け取って、各ＡＩに指示。

各ＡＩの能力と構造なし

パターン行動

仲間がやられたゲームセンサー 待機せよ
世界
やられた

報復
エフェクターゲーム
静止世界
メッセージを出す

反射型ＡＩ（条件反射からなるＡＩ）

反射型ＡＩで、報復の指示が来たら仲間がやられたポイントへ向かう。

チームの情報共有

チームＡＩ（全体を制御するＡＩ）

記憶記憶

記憶

チームＡＩがイベントの全ての記憶を持つ。各ＡＩは、チームＡＩから与えられた戦闘ポイントの座標だけを持つ。

行動の同期
戦闘ポイント速度 520/sec

チームＡＩ
3240msec後にポイント（240,328）へ集合せよ

速度 223/sec

速度 720/sec

できるだけ同じタイミングで戦闘ポイントへ到着する。

集団としてのＡＩの構造

センサー
ゲームセンサー
世界
センサー

エフェクターゲーム
エフェクター行動
世界
エフェクター

反射型ＡＩを連携させる「群知能」の方法

（４）以上のコンセプトを、実際に動かしてみることを考えます。
どんな問題点（ゲーム、技術）が出てくるかを予想しよう。

Ｍ

イメージ① 仲間がやられた

チームＡＩ

メッセージ「やられた〜」をチームに伝えるＭ

イメージ② メッセージをチームＡＩへ伝達

チームＡＩ

イメージ③ メッセージをチームＡＩへ伝達イメージ④ 戦闘ポイントへ近付くＭ

イメージ④ しかし、到着したときには、プレイヤーは既に移動している

問題点発見

問題点
到着したときには、プレイヤーは既に移動している

解決案
近付く間に、プレイヤーを視野へ入れたら、プレイヤーを追いかける

もう一度イメージしてみよう！

もう一度イメージしてみよう！

Ｍ

イメージ④ 戦闘ポイントへ近付く。パタパタはプレイヤーを発見。

もう一度イメージしてみよう！

Ｍ

イメージ⑤ パタパタはプレイヤーを追跡する。
ノコノコもプレイヤーを発見して追跡。

各ＡＩの能力と構造＜修正＞なし

パターン行動

仲間がやられたゲームセンサー 待機せよ
世界
やられたプレイヤーを見た

報復
エフェクターゲーム
静止世界
メッセージを出す

追跡

反射型ＡＩ（条件反射からなるＡＩ）

個のＡＩの設計を変更。「プレイヤーを目撃したら追跡」を追加。

（５） （１）〜（４）を実装するための開発ラインにおけるワークフロー（設計からデバッグ、フィードバックまで含めた）を設計してみよう。

Ｍ

プレイヤー

インターフェース

メモリＣＰＵ
初期配置、条件を変えてオートシミュレーションでテストを行う

あとがき
グループワークは限られた時間の中で、初めて出会う人たちと、新しいテーマでゲームを語り合う時間です。
その貴重な時間を充実したものにするために、あらかじめグループワークの議題と指針をまとめることにしました。
セミナーまでに、考え初めて頂ければ、きっと得るものも大きくなると思っています。
ＮＰＣたちは相互作用しあうことで、チームとして新しい能力を創造します。
「開発者同士の相互作用もまた、ゲーム開発者のために新しい能力を創発する。」
このセミナーのグループワークは、そういった方針のもとに行われています。