ゲームにおけるAI技術の活用

こんにちは、けんご(@N30nnnn)です。

 最近ゲームに用いられるAIの調査をしました。 調査した結果、概観としてデバッグ用の自動プレイAIへの取り組みがめちゃくちゃ多いなといった感じでした。 また対人プレイAIについて発表された記事はまだまだ少なく、 その中では囲碁や将棋、 ポーカーなど枠組みがある程度決まっているゲームへの技術応用が目立っています。

 概観として技術の応用先は次の4つにまとめられます。

  • 市場動向調査分析
  • ゲームバランスのためのパラメータチューニング
  • 自動プレイデバッグ
  • チート検出

 ここではいくつかの取り組みの要約を紹介したいと思います。 ただし、市場動向調査分析はいわゆるマーケティングそのものなので省略します。

強化学習を用いたゲームバランス調整

逆転オセロニアでの事例 @DeNA

目的

次の様な利用のために自動プレイAIを作成したい。

  • バグ検知
  • 週に2,3種類のペースで増やしているキャラクターのパラメータチューニング
  • 初心者の戦略学習支援

アプローチ

自動プレイAIに対するアプローチは, 教師あり学習強化学習強化学習+ゲーム木予測 の様に変遷してきた。

  1. 教師あり学習: 盤面の状態, 手持ちの駒, 取りうる行動, 自分・相手の現ステータスを入力として次手を予測
  2. 強化学習: 上記の予測機を状態行動価値関数として、自己対戦によるエージェントの作成
  3. ゲーム木予測: 上記に加えて, モンテカルロ木探索を用いた先読みによる行動評価

また上記アプローチの過程で、数千種類あるキャラクターの表現学習に取り組み、 入力情報を低次元・抽象化した。

結果と功績

教師あり学習ベースの自動プレイAIに対して、強化学習+ゲーム木予測ベースの自動プレイAIの勝率が9割を超えた。
また表現学習により、One-Hotベクトルで表現していたキャラクターのベクトル ~2000次元を数次元に落とした(具体的な数値は非公開)。

強化学習をバランス調整に活用。『逆転オセロニア』が目指す、ゲーム開発の近未来 | フルスイング - DeNA

www.slideshare.net

www.slideshare.net

遺伝的アルゴリズムを用いたゲームバランス調整

グリムノーツでの事例 @SQUARE ENIX

目的

QA(Quality Assurance: 品質保証)のための自動プレイAIを作成したい。

アプローチ

遺伝的アルゴリズムで、 指定されたバトルに最適なキャラクター・装備品・スキルを探索する。
特定の遺伝子(キャラクター・装備品・スキル)を持つプレイヤーAIを対戦させ、 そのバトルがどれだけ良いバトルだったかを評価。
評価関数は『勝利時: バトル時間の短さ / 敗北時: 与ダメージの多さ』→ 次の世代に繋げる。
プレイヤーAIの行動選択アルゴリズムは非公開。

結果と功績

上記の様にして集めた対戦ログに対して統計的分析も行った。(むしろこっちがメイン?) 具体的には使用頻度の高いキャラクター・装備品・スキルの可視化。 アソシエーション分析による価値の高い組み合わせの可視化。 プレイヤーレベルごとのキャラクター・装備品・スキルの使用傾向の可視化。 これらをゲームのバランシングに繋げた。

遺伝的アルゴリズムによる人工知能を用いたゲームバランス調整

AIによるゲームアプリ運用の課題解決へのアプローチ

Final Fantasy Record Keeperでの事例 @DeNA

目的

デバッグのための自動プレイNPCを作りたい。

アプローチ

アプローチは2つ。

ニューラルネットワーク × 遺伝的アルゴリズム

いわゆる NeuroEvolution of Augmenting Topologies (通称: NEAT)。 動的にニューラルネットワークアーキテクチャを変えて学習するアルゴリズム
ただし評価可関数は非公開。

ニューラルネットワーク × 強化学習

明記されてはいないが、おそらくDeep Q Networt (通称: DQN)。 強化学習の枠組みにおける行動選択関数をニューラルネットワークで表現する。 こちらも報酬の与え方は非公開。(「敵のHPや味方のHPから算出される」とだけ記述されている。)

いずれも入出力は次の通り。 入力

  • 各キャラクタのステータス
  • 残HP
  • 状態異常
  • 各キャラクタのアビリティ残数
  • 必殺ゲージ
  • 敵のステータス
  • 残HP
  • 状態異常
  • アクション履歴

出力

  • キャラクタが次にとるべき行動

結果と功績

AIによるゲームアプリ運用の課題解決へのアプローチ

チート検出のための機械学習応用

jp.automaton.am

jp.automaton.am

パッケージゲームにおけるNPCのリアルタイム パラメータチューニング

(編集中)
1998年発売 『アストロノーカ』 での事例: 森川幸人氏

目的

ゲームの良し悪しに直結するパラメータのチューニングを職人芸に基づく手動から自動にしたい。

アプローチ

遺伝的アルゴリズム(GA)を用いて、 各ステージ毎に20世代イテレーションを進めた中で最良な個体を次のステージで出すと言うアプローチ。

結果と功績

パラメータの手動チューニングから開放された。
常に各ユーザーのその時の強さにフィットしたNPCの調整が行える様になった。
ユーザーが特定の戦略のみを使ってプレイした場合、 NPCがその戦略への耐性を持つように進化し、 ゲームが単調になるのを防いだ。

3DアクションゲームにおけるNPCの行動選択

アーマード・コアⅤでの事例: 三宅陽一郎氏

目的

アーマードコア(3Dアクション・ロボット対戦ゲーム)におけるNPCの行動選択を行いたい。 このアーマード・コアVは前作に比べてマップが複雑に設計されているため、 局所に陥ることなく最短な経路選択を空間内から選択したい。 ここで行う行動選択は移動に関する動作のみで、 その他の行動選択は行わない。

アプローチ

3次元空間における最短経路問題とし、 焼きなまし法(SA)による空間の圧縮を行った後、 A*(a-star)アルゴリズムによる最短経路問題をヒューリスティックに解いた。

  1. まずは空間をボクセルに分割する。
  2. ボクセルだとデータサイズが大きいため、 BBox(矩形: Bounding Box) を3次元に拡張した AABB(Axis Aligned Bounding Box)に直す。 この時保持する情報は 中心座標と3次元方向への広がりの長さを保持。
  3. 特性が類似しているAABBらを共通の部分集合とし、 マップ全体をAABBの集合として表現する。

こうして得られたAABBの集合に対して、 部分集合をノードとするグラフ表現に直して最短経路問題に落とし込み、 A*(a-star)アルゴリズムを用いて解いた。 この際、 上記AABBを統合する時と同様の評価関数を用いてグラフの圧縮も行い高速化を図った。

結果と功績

3Dアクションゲームに現実的な3Dパス検索を導入することができた。

3ページ目

www.slideshare.net

ARMORED CORE Vのパス検索