8月26日に開催されたゲーム開発者向けイベントの中から、バンナム、スクエニ、東ロボ、MSなどによる人工知能や機械学習、データ解析における取り組みについての講演内容をまとめてお伝えする。
3D CGやバーチャルリアリティ(VR)、データ解析に機械学習、クラウド――ゲーム/エンターテイメント開発の最前線では次々に新しい技術が採用され、新たなユーザーエクスペリエンス(以下、UX)を生み出すために活用されている。そして今、注目を集めているのが人工知能(以下、AI)技術だ。
2015年8月26〜28日にパシフィコ横浜で開催された「CEDEC 2015」では、AIや機械学習、データ解析を開発現場で活用する先進的な試みが紹介されるとともに、今後に向けた課題を示すセッションが行われた。本稿では、下記四つのセッションの模様をまとめてお伝えする。
例えばゲームをプレーしていて、敵がすぐ近くにやってきたのになぜか素通りしていったり、貴重なアイテムに目もくれなかったりしたら、いくらビジュアルがリアルでも興ざめしてしまうだろう。そこで、敵キャラクターなどゲームに登場するプレーヤーの行動を理にかなったものにし、ゲームの世界にリアリティをもたらすために活用されているのがAI技術だ。
バンダイナムコスタジオ AM開発統括本部 AM第1開発本部 コンテンツ開発1部 AMプログラム1課 プログラマの長谷洋平氏は、「複数タイトルで使われた柔軟性の高いAIエンジン」と題するセッションで、ガンシューティングゲームの『タイムクライシス5』やWii U用協力型アクションゲーム『LOST REAVERS』に用いられたAIエンジンを例に、その取り組みを紹介した。
「AIエンジンは一般にゲームごとに実装されており、共有されることはあまりない。しかし、出張などで最新のAI技術について学ぶ中で、『エージェントシミュレーションやロボットなど他分野も含む最新の知見を用いればゲーム向けの汎用的なAIエンジンが実現でき、他のゲームにも流用できるのではないか』と考え、個人的に挑戦してみた」(長谷氏)という。
同氏が取り組んだAIには、主に二つの目標があった。
一つは「柔軟で、かつ決まった動きをしてほしいという一見矛盾したニーズを満たすこと」(長谷氏)。タイムクライシス5では新たに、プレーヤーの移動という要素が加わった。従って、これまでのように敵の動きがスクリプトで決め打ちされていては制御が困難だ。一方で、ガンシューティングゲームならではの気持ち良さを満たすには、ある程度決まった動きをしてくれる必要がある。そこで「自律的に動き、かつゲーム進行とも協調できる柔軟なAIが必要だった」(同氏)
一方、四人一組で協力してゲームを進めていくLOST REAVERSには多種多様なAIが必要で、リリース後もアップデートしていくことになる。そこで、「AIデザイナーが一人で多種多様なAIを効率良く作成できるようにしたいというニーズがあった」(長谷氏)
この二つの目標を満たすため、敵などを動かす「Agent AI」、個々のAIグループを管理する「Squad AI」、ゲーム全体を制御する「AI Director」で構成されるAIエンジンを開発した。中でも中核となるのはAgent AIだ。「機能ごとに柔軟に分割し、モジュールの組み合わせとパラメーターによってAIを定義できるようになっている。これによって異なるジャンルのゲームでも再利用が可能になる」という。
Agent AIは主に三つのカテゴリのモジュールで構成されている。キャラクターの認識をつかさどる「Perception」、Perceptionの情報に基づいて意思決定を行う「Brain」、Brainの下した結果をキャラクターに反映させる「Action」だ。別途AIの記憶を担当する「ブラックボード」があり、各モジュールはブラックボードを介して情報をやりとりする。
Perceptionは、ゲーム中の環境の情報を受け取り、認識を担当するモジュールだ。AIは、静的に埋め込まれているオブジェクトや、敵や味方、アイテムなどの動的なオブジェクト、さらには自分自身が動的に生成する情報を、そのまま利用するのではなく、それぞれの価値観で取捨選択、加工した上で使用する。その役割を担うのがPerceptionだ。Perceptionそのものをプログラムで書くこと自体はそれほど難しくない。だが、「AIデザイナーによる定義を可能にするために、『Layer-based Perception System』(LPS)を作成した」と長谷氏は言う。
LPSは、ちょうど画像処理におけるレイヤーと同じような働きをする。視覚や聴覚などを模した「ソースレイヤー」の情報が基となり、そこにフィルタリングなどを行う「加工レイヤー」、情報選択のアルゴリズムを持たせた「選択レイヤー」を組み合わせ、重ねることでPerceptionを定義する仕組みだ。この際、各レイヤーにプライオリティを割り当て、それに応じてソートを行うことで意図しないバグや高負荷の発生を避けているという。
この仕組みは、理解しやすく、配列を順次実行するだけなので実装しやすい点がメリットだ。「範囲内の敵をリストアップし、脅威をスコアリングして、危険な敵から狙う」「同じく範囲内の敵をリストアップし、残りの体力が少ないものから狙う」「距離と残りの体力の両方を加味して選ぶ」といった設計を柔軟に行える。敵以外のキャラクターに適用し、「残りの体力を見て傷ついた味方を守る」「防衛対象を守る」といったAIを作ることも可能だ。
「これらレイヤーの組み合わせとプロパティの変更によって、いろいろなAIのPerceptionを、プログラムを書かずにAIデザイナーだけで構築できる」(長谷氏)
Perceptionから得られた情報を基に意思決定を下す「Brain」の部分にも工夫を凝らした。
Brainの実装方法としては「ステートマシン」がよく知られているが、これには複雑化するにつれ全体像が把握しにくくなり、管理しきれなくなったり、再利用性が低かったりするという課題があった。そこで長谷氏は「Behavior Tree」と「HTN(Hierarchical Task Network )プランニング」のハイブリッドモデルを採用したという。
Behavior Treeは、ステータス情報を持ったノードが文字通りツリー構造を取っており、判定に基づいて次のタスクを実行していくものだ。シンプルで分かりやすく、AIの振る舞い全体を俯瞰できるというメリットがある一方、AIが複雑化するとツリーが巨大化し、開発効率が落ちるという課題がある。一方HTNプランニングは、複数の選択肢の中から状況に合わせて自ら最適なものを選ぶことができ、行動に一貫性があること、複雑なAIを低コストで実現できることが特徴だが、タスクの集合であるためAIの全体像を把握しにくく、ゲームの進行上必要な演出的な行動もさせにくいことがデメリットだ。
そこで長谷氏は、Behavior Treeで決めた目標を達成するプランを、HTNプランニングによって求めるというハイブリッドシステムを構築した。重みをBehavior Tree寄りにすればAIデザイナーによる細かな制御が可能となるし、逆にHTNプランニング寄りにすればAIによる自律的な行動が可能になる。これらを状況によって使い分けることにより、スクリプト的なものから自律的なものまで、多様なAIを柔軟に構築できる。
さらに、アーキテクチャのベースに、「信念」(Belief)や「願望」(Desire)によって形成される「意図」(Intention)に基づく、「BDIモデル」を適用することによって、「合理性の高い人間らしいAIを、プログラムを書かずにAIデザイナーが一人で構築することができる。これが今回のAIエンジンの特徴だ」(長谷氏)。
長谷氏はまた、他のBehavior Treeを参照できる「リンクノード」を用いることで、多数のBehavior Treeを作成し、いろいろなAIで共有できるようにした。さらに、Behavior Treeの「部品」をあらかじめ多数作成しておき、リンクテーブルを介してそれらを参照し、必要に応じて組み合わせることによって、異なるバリエーションのAIを作成することも可能になったという。
HTNプランニングによって求めるタスクの分岐、並列も、「よくよく見てみるとBehavior Treeの各ノードに置き換えられることが分かる。つまり、HTNプランニングによって求めるプランをBehavior Treeで生成すればいいのではないかと考え、実装してみた」(長谷氏)。この結果、柔軟なプランニングが可能になった上、新たなプランを組み込む際には手動でBehavior Treeを生成して動作確認を行ったり、デバッグをしたりすることができ、作業が効率化するといったメリットも生まれた。
最後の「Action」部分では、同じ行動でもAIの意図によって見せ方を変えるよう工夫した。例えば同じ移動でも、隠れるために退避しているのか、次の攻撃に移るための行動なのかによってアニメーションを変えることで、より自然な表現が実現できるという。
また、キャラクターの移動を制御する「ステアリング」モジュールでは、「人」「乗り物」用など複数のモジュールを用意した。敵が乗る乗り物の制御にはPID(Proportional Integral Derivative)制御を採用したが、そのパラメーターの微調整を手作業で行う代わりに、AIに機械学習をさせて行ったという。シンプルな練習コースを用意してAIに何度も走行させてスコアリングし、焼きなまし法を適用して最適なパラメーターを求めた。
この結果、プレーヤーの移動に応じて適宜車線を変更し、かつ他の敵ともぶつからず道路からもはみ出さないような、説得力のある動きを実現できたという。
長谷氏は、LPSやBehavior Tree、HTNプランニングを組み合わせることによって、「AIデザイナーだけで柔軟にAIを開発できる環境が整い、しかも『人間らしい』AIが実現可能となった。その上、モジュール分割によってコードの再利用も可能になった」と述べた。デバッグ用BOTを実装する際、AI自体の構築作業は数時間で収まっているという。
一方で課題もある。「AIデザイナーにもある程度AIの知識が必要になるが、まだあまり広まっていない。プログラマーでも『Behavior TreeやHTNプランニングってナニソレ』という人が多い」と述べ、この部分を改善していく必要があるだろうと講演を締めくくった。
Copyright © ITmedia, Inc. All Rights Reserved.