2020年9月2日~4日まで、CEDEC公式サイトのオンライン上にて開催された日本最大のコンピュータエンターテインメント開発者向けのカンファレンスCEDEC 2020。

 本記事では、1日目におこなわれた『ファイナルファンタジーVII リメイク』(以下、『FFVII リメイク』)のデバッグに関するセッション“"FINAL FANTASY VII REMAKE"における自動QAシステムの構築と運用”をリポート。

 本セッションで語られたのは自動QAシステムについて。まずQAとは、Quality Assuranceの略称で、日本語で言えば、品質保証。ゲーム開発においては、ゲームが正しく動作しているか、バグが発生しないか、検証する仕事・部門・チームのことを指す。ゲームファンにとっては、デバッグと言ったほうが伝わりやすいかもしれない。つまり、自動QAシステムとは、自動でデバッグをおこなうシステムということだ。

 セッションには、スクウェア・エニックスのAIエンジニアを務める太田健一郎氏が登壇した。

01 (1)
太田健一郎氏
01 (2)

ゲームに最適化した自動QAシステムを目指して

 ゲームというのは、そもそもランダム要素の塊である。プレイヤーがどこへ行くのか、敵が出現しどこで倒されるのかなど、それはプレイヤーの操作によるものであり、出される結果はすべてランダムだ。また、開発中タイトルというものは、ゲームデザイン自体もバランス調整や仕様変更にともない、ゲーム自体が日々変わっていくもの。

 従来も存在する、基本的な自動QAシステムであるキャプチャ&リプレイという方法は、人が操作したものを記録して、その再生をくり返すというものだ。従来トライ&エラーをくり返すシステムでは、『FFVII リメイク』の多岐に渡るランダム要素や、日々開発が進むゲームの変化への対応が難しいということから、内製のシステムを構築することに決定した。

 今回『FFVII リメイク』で自動QAシステムは、各章と全章の通しプレイを記録・再生でき、その中から、バグなどを検知できるシステムを構築し、プログラマーなどでなくとも使用できるものを目指した。また、技術的にはゲーム的な部分を検証する記録・生成と、汎用的な自動リプレイの記録・再生を分離。汎用自動リプレイで検証が難しいところは、そのシーン専用にカスタマイズした記録・再生機能を利用する方向性を目指したという。

01 (3)
01 (4)
01 (5)
01 (6)

 セッションでは実際にプレイ映像を通して記録・再生する映像が披露された。バトルはすべてダメージが9999になるので、バトル自体の検証は関与していない様子。ただし、最後の1体を倒すとゲームがクラッシュしてしまう、ということも少なくないため、すべての敵を倒すようにしているのだとか。

01 (7)
01 (8)
01 (9)

 この自動QAシステムで、記録・再生に関するバグが出た場合は、自動QAシステム自体のバグなので、自動QAシステムチームが対応。ただしそれが解析の結果、ゲームに関するバグが関与していた場合は、『FFVII リメイク』開発チームへバグを報告。また、ゲーム進行が止まってしまうなど直接的なバグは、そのまま『FFVII リメイク』開発チームへと報告される。

01 (10)

 自動QAシステムで再現性の高いバグに遭遇すると、自動でメール通知が送られるようになっているそうだ。メールには該当箇所のスクリーンショットと、動画へのリンクが張られるようになっているため、すぐに確認ができるとのこと。

01 (11)

 もうひとつの機能として、無限に該当する章を無限にリプレイし続けるという機能があるそうで、これは頻度の低いバグが出るまで無限にプレイし続けるというもの。実際の成果として、4日間ずっとリプレイをさせて、2回/260回の確率で出現するバグを発見できたという。

01 (12)
01 (13)

 すべてのリプレイ時におけるアクションは、すべてサーバー側からの判断と命令で下されているそうで、たとえばカットシーンが出たらスキップ、記録時に出現したものが再生時に出現しなくても、それはランダム要素なのでエラー報告をしないなど、細かな要素で制御しているそうだ。

 また、たとえばクラウドが通路を走っている際に、もし記録されたルートにキャラクターが立ち、道などを塞いでしまった場合は、正しい経路を辿るように自動で経路に戻ろうとするようになっているとのこと。

01 (14)
01 (15)

 宝箱を開けたり、敵を倒したりとゲームを進め、各章の通しプレイを記録。それをそのまま再生するのではなく、バトル時にはバトル専用でオートで戦う機能が働き、宝箱の周辺では自動的に宝箱を探して開けるというシステムが組み込まれているそうで、通しプレイの操作がすべてそのまま反映されるというわけではない。

 たとえばバトルは近づいて攻撃し9999ダメージが出るようにはなっているが、魔法しか通用しない敵も出現するため、ときどき魔法でも攻撃するという。また、物語を進めるのに必要な調べる場所やキャラクターとの会話は、周囲を検索してインタラクトするようになっているとのこと。

 そのほかにも、キャラクターについて行く必要がある場所では、そのキャラクターを追跡するシステムが働いたり、バレットが通路を破壊しながら進む場所では、バレットが先に破壊が必要な場所をすべて破壊し、それから経路を進むというシステムを用意。ほかにも各ミニゲームなども、専用のシステムで対応しているとのこと。

01 (16)
01 (17)
01 (18)

構築したシステムの結果は?

 自動QAシステムを使用し、実際の成果はどうだったのか、というまとめに。バグチェックというのはゲームが完成してからではないとすべて試すことができない。マスターROMを提出するまでのあいだに、すべての章を試すことはできなかったそうだ。

 1日あたり300回の通しテストプレイを自動でおこない、マスター提出直前にはゲーム全体の安定性向上を狙った自動テストプレイを実施。マスター提出後に、11章~18章の後半の自動テストプレイ、全章通しリプレイができるようになったそうだ。そのおかげもあってか、ゲーム発売後にいくつかのパッチが配布されている。

 なお、重要な問題がないかつねに知らべる必要があるため、全章通しのリプレイはいまでも続けているという。

01 (19)
01 (20)
01 (21)

 成果はあったものの、運用上にはいくつか問題があったそうだ。今回新規に制作した自動QAシステムは、『FFVII リメイク』と同時進行で開発を進めたもの。そのため、『FFVII リメイク』のバグか、自動QAシステム自体のバグなのか見極めるのが難しかったそうだ。

 また、一部対応していない機能があるそうで、たとえば坂を滑り降りるシーンでは、落下してしまうと元の場所に戻るようになっている。しかし自動QAシステムでは、もし落ちてしまった場合に対応できないという。ほかにも、ミニゲームが豊富なため専用システムをイチイチ構築する必要があったり、『FFVII リメイク』の内部構造自体がかなり複雑なので、当初の目標通りとはいかず、解析自体はプログラマー以外には難しいものになってしまったのだとか。

01 (22)
01 (23)

 総評としては、QAスタッフの稼働時間外、休日、夜間だろうと1日最高600回の全章通しプレイを保証できることや、人間では見つけにくいレアなバグの検出や再現も可能となった。また、ゲームの操作自体は会社で動いているが、システムの命令自体は外部から可能なので、昨今の新型コロナウイルス問題の中でも、リモートワークで対応できたそうだ。

01 (24)

 ゲームの規模が膨大になるにつれ、デバッグもさらに大変になっていくゲーム業界。もはや自動QAシステムはなくてはならない存在になるだろう。この記事を読んでいる最中にも、自動QAシステムはつねに『FFVII リメイク』をプレイし続けているはず……。自動QAシステムさん、お疲れ様です。

※画像は配信映像をキャプチャーしたものです。