ロゴジャック広告

『ペルソナ3 リロード』エンディングまで自動プレイでバトル、フィールド、イベントなど37パートを試してバグを検出。人の手なら300日かかる作業コストを削減【CEDEC2024】

byソムタム田井

更新
『ペルソナ3 リロード』エンディングまで自動プレイでバトル、フィールド、イベントなど37パートを試してバグを検出。人の手なら300日かかる作業コストを削減【CEDEC2024】
 2024年8月21日(水)から23日(金)にかけて開催された、日本最大のコンピュータエンターテインメント開発者向けカンファレンス“CEDEC2024(Computer Entertainment Developers Conference 2024)”。その3日目に実施されたセッション、“ペルソナ3 リロードでの自動プレイの実装と運用”の内容をお伝えする。

 本セッションでは講演者として、アトラス コンシューマソフトウェア局 第二プロダクション(ペルソナチーム) チーフプログラマーの埜渡貴裕氏が登壇。
広告
[IMAGE]

 『ペルソナ3 リロード』(以下、『P3R』)の開発で実装された、ゲームの開始からエンディングまでを自動で操作しつつ、不具合チェックを行うことができるシステム“自動プレイ”の概要と、それを運用したことによる効果や実績が語られた。
[IMAGE]

 自動プレイには行動のログを収集する仕組みも実装されており、そのログからゲームを効率的に進め、チェック範囲を広げる行動をネットワーク経由で指示する機能“おすすめ行動サーバー”も搭載。終盤では、こちらの実装および運用により、QA作業の大幅な工数削減&安定性の向上が実現されたことにも触れられた。

自動プレイとは?

[IMAGE]
 人手を介さず、AIが入力を肩代わりすることで、ゲームを通しでプレイしつつ不具合をチェックしてくれる自動プレイ。

 昨今のゲームはデータ量が膨大なため、チェックが必要な要素は大幅に増加。人が直接確認する形ではとても対応しきれないため、同シリーズでは『ペルソナ5 ザ・ロイヤル』(以下、
『P5R』)より導入されている。自動プレイを実装するに当たり、埜渡氏が心がけていることは以下の3点。
  • 自動プレイが原因でゲーム本編作成を妨げないこと
  • なるべく汎用的にいろいろなチェックができるようにすること
  • データや仕様の変更になるべく影響されない形にすること
[IMAGE][IMAGE][IMAGE]

実装内容について

 続いて埜渡氏は、『P3R』で実装された自動プレイについて、以下の4項目を解説した。
  • 自動プレイ本体のベースの実装
  • 自動プレイのコマンドによる操作の拡張
  • 自動プレイ中のログ収集
  • 自動プレイを利用した自動テスト

自動プレイ本体のベースの実装

[IMAGE]
 まずは自動プレイの実装設計について。基本的には“そのタイトルでしか使えない”仕様にはせず、ほかのタイトルや次回作以降でも利用できるように、アプリケーションに依存しない形で作成したという。

 また、自動プレイ自体の信頼性を高めるために、ゲーム進行のための入力は“パッド入力からのみ”で行うなど、独自のこだわりについても言及。

 細かい処理はパート単位に分けて個別で実装したそうで、
『P3R』の場合はバトル、フィールド、イベントなど、37パートに分けて実装。各パートには優先度を設けており、複数のパートが重なった場合は、もっとも優先度の高いパートを実行する仕様になっているという。今回はその中から、フィールドパートとバトルパートの詳細が語られた。
[IMAGE]

フィールドパートの実装

[IMAGE]

 キャラクターを自動で移動させるため、あらかじめ移動用のパスを用意し、そちらに従って移動させる方法もあるが、本作では別の手段を模索。コリジョン(3Dモデル同士の衝突)を回避をしつつ目的地を検索し、そちらに向かって移動する操作として、“イベントヒットへのアクセス”が設定されている。

 イベントヒットとはNPCや扉といった何らかのアクションが発生する箇所のこと。直線移動で到達できる範囲内にある目的地(イベントヒット)を自動で検索し、そちらに向かって移動できるようになった。
[IMAGE][IMAGE]
 そしてもう1点、“ヒートマップ”の導入も自動プレイの精度を上げるうえで重要な役割を果たしたという。ヒートマップとはプレイヤーが移動した履歴を残すシステムで、プレイヤーが直近で歩いた場所や少し前にいた場所、まだ歩いていない場所を色分けして、細かく表示するといったもの。
[IMAGE]
 イベントヒットが検索できなかった場合は、ヒートマップで“まだ歩いていない場所”を見つけ出し、そちらに向かって操作キャラを移動させる。これらの組み合わせにより、そのエリアで発生するイベントやNPCとの会話をくまなくチェックできるようになったという。

 さらにナビゲーションシステムによるパス移動も組み合わせて、フィールドパートでの自動プレイは完成を迎えた。
[IMAGE][IMAGE]

バトルパートの実装

[IMAGE]
 ランダムな操作でも、レベルを上げたり難度を下げたりすれば、ゲームオーバーにならずに進めることはできる。だがそれでは、行動パターンが限定的になるため、あらかじめ動作のバリエーション(行動指示)を複数用意。“HPが少なくなれば回復スキルやアイテムを使う”など、各行動には優先順位も設けて、さまざまなパターンでの自動プレイを実施したという。

 このたびのセッションでは、数ある行動指示の中から“敵の弱点をつく行動”がピックアップされ、動画とともに紹介された。

自動プレイのコマンドによる操作の拡張

[IMAGE]
 『P3R』の自動プレイは基本的にランダム操作で各パートに対応するものだったが、それだけだと複雑な操作は行えず、“狙わないとできないような特殊な行動”まではカバーできない状況だった。そうした特殊な行動も再現できるように、あらかじめコマンドを設定→操作の拡張を行ったことは、今回の自動プレイにおいて重要なポイントといえる。

 コマンドは“決定ボタンを押す”などの入力単位ではなく、“メニューを開く”、“特定のアイテムを選択する”といった行動単位での実装になったそうだ。まずはコマンド実行を管理するCommandManagerに集積し、パート単位で所持するCommandWorkerで各コマンドを実行する形が取られた。
[IMAGE]

おすすめ行動サーバーとは?

[IMAGE]
 埜渡氏が『P5R』で自動プレイを担当していたころから構想していたのが“おすすめ行動サーバー”。自動プレイで得た膨大なログから、ゲームをスムーズにプレイするうえでオススメの行動をサーバー自身が考え、コマンドとして自動プレイに指示を出すシステムだ。

  参考映像では『P3R』の日常パートが例として取り上げられ、数ある行動パターンの中から“コミュイベント”の発生、“人間パラメータ”を上げる行動を優先するといった指示を確認できた。
[IMAGE][IMAGE][IMAGE][IMAGE]

自動プレイを利用した自動テスト

[IMAGE]
 自動プレイ自体は、ゲーム本編をクリアーに向けて進めるためのもの。その中のコマンド操作を組み合わせることで、いままで手作業で行っていた各種確認作業も自動プレイで代行できるようになった。本セッションではこちらを“自動テスト”として紹介。

 とくに、同じシチュエーションを何度もくり返してデータを収集しなければならない作業では重宝されたそう。今回は自動テストの実装例として、“全カードを引き当てられるかの確認テスト”が紹介された。
[IMAGE]

運用結果の報告

[IMAGE]
 『P3R』における自動プレイおよび自動テストの実装は、プログラマー2人で担当したそうで作業工数は人の手で換算すると約300日分になるという。

 かなり初期の段階から実装を行い、ゲーム本編の開発に合わせて仕様などを調整。序盤は開発機3台で回していたが、バグなどを検証するQA期間に入るころには25台で対応した。昼夜問わず稼動させ続けたことで、最終的に412件の問題点を見つけ出すことに成功。そのうちS/Aランクのバグは168件だった。
[IMAGE]
 埜渡氏いわく「すべてが自動プレイのおかげではない」とのことだが、『P5R』の開発時はQA期間中に見つかったS/Aランクバグは693件もあった。今回はかなり初期から自動プレイを実装したこともあり、これだけの数に抑えられたようだ。

 続けて、自動テストの実装によるQAコスト削減結果についても、チェック項目別に削減できた日数が公開された。
[IMAGE]
 セッションの終盤では“今後の課題”と題して、今回実現できなかった要素についても言及する流れに。

 ピックアップされたのは、“コマンドの記録・再生の活用”、“おすすめ行動サーバーのバリエーション”、“収集したログの活用”、“B/Cランクバグの検出”という4つの切り口で、最後にそれぞれの改善点にも触れてセッションは終了した。
[IMAGE][IMAGE]
      この記事を共有

      本記事はアフィリエイトプログラムによる収益を得ている場合があります

      週刊ファミ通
      購入する
      電子版を購入