本セッションでは講演者として、アトラス コンシューマソフトウェア局 第二プロダクション(ペルソナチーム) チーフプログラマーの埜渡貴裕氏が登壇。
『ペルソナ3 リロード』(以下、『P3R』)の開発で実装された、ゲームの開始からエンディングまでを自動で操作しつつ、不具合チェックを行うことができるシステム“自動プレイ”の概要と、それを運用したことによる効果や実績が語られた。
自動プレイには行動のログを収集する仕組みも実装されており、そのログからゲームを効率的に進め、チェック範囲を広げる行動をネットワーク経由で指示する機能“おすすめ行動サーバー”も搭載。終盤では、こちらの実装および運用により、QA作業の大幅な工数削減&安定性の向上が実現されたことにも触れられた。
自動プレイとは?
昨今のゲームはデータ量が膨大なため、チェックが必要な要素は大幅に増加。人が直接確認する形ではとても対応しきれないため、同シリーズでは『ペルソナ5 ザ・ロイヤル』(以下、『P5R』)より導入されている。自動プレイを実装するに当たり、埜渡氏が心がけていることは以下の3点。
- 自動プレイが原因でゲーム本編作成を妨げないこと
- なるべく汎用的にいろいろなチェックができるようにすること
- データや仕様の変更になるべく影響されない形にすること
実装内容について
- 自動プレイ本体のベースの実装
- 自動プレイのコマンドによる操作の拡張
- 自動プレイ中のログ収集
- 自動プレイを利用した自動テスト
自動プレイ本体のベースの実装
また、自動プレイ自体の信頼性を高めるために、ゲーム進行のための入力は“パッド入力からのみ”で行うなど、独自のこだわりについても言及。
細かい処理はパート単位に分けて個別で実装したそうで、『P3R』の場合はバトル、フィールド、イベントなど、37パートに分けて実装。各パートには優先度を設けており、複数のパートが重なった場合は、もっとも優先度の高いパートを実行する仕様になっているという。今回はその中から、フィールドパートとバトルパートの詳細が語られた。
フィールドパートの実装
キャラクターを自動で移動させるため、あらかじめ移動用のパスを用意し、そちらに従って移動させる方法もあるが、本作では別の手段を模索。コリジョン(3Dモデル同士の衝突)を回避をしつつ目的地を検索し、そちらに向かって移動する操作として、“イベントヒットへのアクセス”が設定されている。
イベントヒットとはNPCや扉といった何らかのアクションが発生する箇所のこと。直線移動で到達できる範囲内にある目的地(イベントヒット)を自動で検索し、そちらに向かって移動できるようになった。
さらにナビゲーションシステムによるパス移動も組み合わせて、フィールドパートでの自動プレイは完成を迎えた。
バトルパートの実装
このたびのセッションでは、数ある行動指示の中から“敵の弱点をつく行動”がピックアップされ、動画とともに紹介された。
自動プレイのコマンドによる操作の拡張
コマンドは“決定ボタンを押す”などの入力単位ではなく、“メニューを開く”、“特定のアイテムを選択する”といった行動単位での実装になったそうだ。まずはコマンド実行を管理するCommandManagerに集積し、パート単位で所持するCommandWorkerで各コマンドを実行する形が取られた。
おすすめ行動サーバーとは?
参考映像では『P3R』の日常パートが例として取り上げられ、数ある行動パターンの中から“コミュイベント”の発生、“人間パラメータ”を上げる行動を優先するといった指示を確認できた。
自動プレイを利用した自動テスト
とくに、同じシチュエーションを何度もくり返してデータを収集しなければならない作業では重宝されたそう。今回は自動テストの実装例として、“全カードを引き当てられるかの確認テスト”が紹介された。
運用結果の報告
かなり初期の段階から実装を行い、ゲーム本編の開発に合わせて仕様などを調整。序盤は開発機3台で回していたが、バグなどを検証するQA期間に入るころには25台で対応した。昼夜問わず稼動させ続けたことで、最終的に412件の問題点を見つけ出すことに成功。そのうちS/Aランクのバグは168件だった。
続けて、自動テストの実装によるQAコスト削減結果についても、チェック項目別に削減できた日数が公開された。
ピックアップされたのは、“コマンドの記録・再生の活用”、“おすすめ行動サーバーのバリエーション”、“収集したログの活用”、“B/Cランクバグの検出”という4つの切り口で、最後にそれぞれの改善点にも触れてセッションは終了した。