イベント
AIが腕前を分析し,難度を自動調節してくれる日も近い? その手法とレベル自動生成への応用が語られたセッションをレポート[CEDEC 2024]
●「プレイヤーの『上手さ』とゲームの『難しさ』を分析する手法とレベル自動生成への応用」登壇者
- 宋 亜成氏(スクウェア・エニックス AI&エンジン開発ディビジョン プログラマー)
- 城所 憲氏(スクウェア・エニックス AI&エンジン開発ディビジョン AIプログラマー)
AIがプレイヤーの腕前を分析し,心地よい難しさを演出する
ゲームを遊ぶにあたり,プレイヤーには攻撃を当てたり回避したりといったさまざまな能力が求められる。プレイヤーごとに得意な分野と苦手な分野があるものの,現在のゲームでは難度設定が画一的であり,個々のプレイヤーに合わせたものにはなっていない,と宋氏は指摘する。
こうした状態では難度を変えるとすべての要素が一律で上下してしまい,齟齬が発生しかねない。例えば,回避が苦手で攻撃が得意な人が難度を下げて回避が容易になると,攻撃についてはもともと高いスキルを持っているので,簡単になりすぎてしまうといった具合だ。
そこで,宋氏は「分野ごとの難度を動的に調整できれば,プレイヤーそれぞれの得意や苦手にフィットした体験を与えられるのではないか」と考えたという。そのためには,あらかじめプレイヤーの能力を分類したうえで,AIに判定と分析を行わせる仕組みが必要となる。
こうして作られたのが「アビリティグラフ」による「アビリティ分析」の仕組みだ。「ゲームマスターAI」がプレイを監視して能力の判定を行うだけでなく,これを分析してゲームの展開にも干渉,プレイヤーの腕前を見て手助けをしたり,敵を増やしたりするのである。
これを縦スクロールシューティングの技術デモ(プレイヤーは陸を歩き,移動の際は地形からの干渉を受ける。地形は破壊でき,そのなかからアイテムが出現する)に適用した事例が語られた。
アビリティグラフには,「アビリティノード」が「エッジ(矢印)」でリンクされたグラフ構造を持つ。アビリティノードは分析したい能力を示しており,「基本(移動や攻撃などの基本をこなす能力)」「行動(敵を倒す,アイテムを拾うなど,複数の基本能力を駆使して目標を達成する能力)」「戦術(脅威を減らす,ダメージを防ぐ,ステータスを伸ばすなど,ゲームプレイの方針を表す能力)」の3カテゴリが存在する。
それぞれにプレイヤー自身の熟練度を示す「マスタリーレート(以下,MR)」と,ゲーム側から要求する能力である「チャレンジレート(以下,CR)」といった尺度があり,アビリティノードどうしのリンクにはウェイト(関連度)の数値が設定されており,高いほど重視されることになる。
実際にゲームをプレイすると,ゲームマスターAIがアビリティグラフを基準として,アビリティノードそれぞれの項目でプレイヤーの腕前のチェックを行う。得意←→苦手と困難←→容易の2軸を持つグラフで「アビリティ特性」を判断するのだが,MRが高いと得意(低いと苦手)で,CRとMRの差分が高いと困難(低いと容易)というわけだ。
これを見てゲームマスターAIは,ゲームの展開に干渉する。得意分野だが難しいと感じている場合は味方NPCに協力させ,苦手だが課題自体は易しい場合はTIPSを表示して上達を支援するといった,きめ細かなフォローをしていくのだ。また,演出にも応用でき,苦戦しているなら背景をボロボロにしたうえで雨を降らせて不穏な雰囲気を表現することもできる。
プレイヤーが苦戦するようであればその支援をすればいいし,逆に難度が不足しているようなら敵や障害物を増やせばいいといったように,プレイヤーが歯ごたえを感じる「心地よい難しさ」を表現することが可能になるという。
このアビリティノード方式では,評価に用いるMRとCRの算出が重要になるため,さまざまな工夫が凝らされている。アビリティノードのなかには,直接評価できるものとそうでないものがある。例えば「敵を倒す」場合は,敵を倒した数と倒せなかった数からMR,レベル状に配置されている敵の種類や数からCRが算出できる。
しかし,戦術系アビリティは「ステータスを伸ばす」「ステージを上手にクリア」など抽象的なため,グラフ上で親になっているアビリティのMRやCRからウェイトを用いて推定する。この考え方自体はFPSやターン制RPG,FPSなどジャンルやマップの形式を問わず使えるものであるとのことだ。
将来的にはプレイがうまくいった理由やそうでない理由を推定し,原因となったアビリティの練習になるコンテンツを提示できるようにしたい,と宋氏は今後の展望を語った。
AIを用い,プレイヤーの腕前に合わせたステージを自動生成する
講演の後半では城所氏がアビリティノードやCRをレベルの自動生成に活用した例,つまりAIがプレイヤーの腕前に応じたステージを作り出す取り組みについて語った。
Procedural Content Generation(手続き型コンテンツ生成,以下PCG)をレベル生成に使う場合,この例だとそれぞれのCRに応じたPCGのアルゴリズムが必要になるが,CRが仕様変更するとアルゴリズムも使えなくなるし,複数のCRを考慮したアルゴリズムとした場合は複雑になりすぎるという弱点がある。
これを解決すべく用いられたのが,Procedural Content Generation via. Reinforcement Learning(強化学習によるレベル生成,以下PCGRL)だ。人間が設定した報酬に基づいてレベル生成ができるというもので,このケースではCRを報酬にすればAIがレベルの作り方を学習してくれる。
強化学習とはエージェントが報酬に基づいて最良の方策を学習していくというもので,より多くの報酬を得られる方法を模索していく。PCGRLではエージェントが編集中のレベルに障害物などを配置すると報酬をもらえるので,より高い報酬(ステージ設計の意図に合致した配置)を目指して学習していく。
PCGRLとひとくちにいってもさまざまな手法があり,それぞれに制約がある。例えば,「クレートをゴールに押し込むパズルゲーム(いわゆる“倉庫番”だろう)」の自動生成にPCGRLを用いる場合,報酬を調整することである程度の難度を持ったレベルは作れるが,クレートやゴールの数をコントロールするなどパラメータに応じたレベルは作れない。
つまり,目標であるCRに応じたレベル生成は不可能ということだ。この問題を解決するのがControllable PCGRLとなる。先に挙げた例だとクレートやゴールの数,最短手順の手数といった部分を制御できるPCGRLだが,今回作りたいシューティングのような複雑なゲームのレベルは生成できない。
Multi-layer PCGRLなら敵や地形などの「レベルレイヤー」と,CRなどの情報を持つ「情報レイヤー」といったレイヤーや地形生成モジュール,敵配置モジュールなどを組み合わせることで,複雑なゲームのレベルも自動生成できる。地形生成モジュールが地形を作り,これに基づいて敵配置モジュールが敵を配置,さらにアイテム配置モジュールがアイテムを置くことで,レベルが完成するのだ。
講演では地形の破壊というアビリティについて,Multi-layer PCGRLがどのようにレベルを自動生成するかも説明された。Multi-layer PCGRLでは1画面ずつ自動生成を行っていく。その際の目標となるのが1画面分20行×16列のCRの平均を取った「平均20行CR」。Multi-layer PCGRLは,生成したレベルの平均CRが,平均20行CRになるように試行錯誤を繰り返す。つまり,どんなレベルを生成したいかの方針が平均20行CRであり,合致しているほど高い報酬をもらえるわけだ。
今回の例では約4日間で2000万ステップを学習させ,ランダムなCRを指定して100のレベル(この場合は100画面分のマップ)を作るというテストを行っている。普通に生成するのであれば平均0.62秒,道などプレイヤーを誘導する地形を生成させても0.46秒,障害物を追加させるなら0.74秒といずれも高速で,しかも生成したレベルのすべてが平均20行CRという基準を満たすものになっていたという。
フラットな地形に敵やアイテムを平均20行CR基準で配置した場合,敵は平均0.32秒,アイテムは0.48秒で配置でき,100%が平均20行CRをものになっていたとのこと。既存レベルをPCGRLに編集させることで,最初は簡単だが後半は難しいといったメリハリのあるものを生成することも可能だという。また,プレイ中にリアルタイムでPCGRLにレベル生成させるテストを実施したところ,良好な結果が得られたそうだ。
最後に宋氏はアビリティ分析手法について,コンテンツやクエストを動的生成したり,プレイヤーが作りかけたマップをAIが完成させるほか,プレイヤーVS.ゲームマスターAIといったシングルプレイなのにマルチプレイを思わせる新たなゲーム性に応用できるのではないかと,今後の展望について語り,講演を締めくくった。
AIによる難度の自動調整は昔から取り組みが続く,ゲーム開発者にとっての夢のひとつだ。現代のAI研究とマシンパワーにより,その夢はより現実的かつ広範なものとなったと言えるだろう。プレイヤーとしても,自分の腕前に合ったゲームを楽しめ,レベルの自動生成で展開がよりバラエティに富んだものになるのだから願ったり叶ったりといったところだ。広い層に向けてプレイしやすい環境を整えていくという近年のトレンドもあり,強いニーズがあると思われる難度自動調整やレベルの自動生成だが,本講演ではその可能性を強く感じられた。
4Gamer「CEDEC 2024」記事一覧
- この記事のURL: