こんにちは!おもろいプログラマです。
今回はちょっと技術的な話です。
ゲーム開発の現場でたまに話題に上がるテストの自動化。 自動化できれば便利と思いつつも、ハードルを高く感じていないでしょうか。
今回はUEの自動化ツールである「Gauntlet Automation Framework」について記載します。
このツール、色々な発表で名前は上がっているのですが資料がほぼ見当たらないです。 公式ページは英語版は辛うじてGauntletControllerにまで触れていますが、日本語版の当該ページはそもそも存在すらしておらず、 使い方の部分については自己流で調べないとわからない形です。
調べた限り一番詳しく乗せているサイトはこちらです。 qiita.com qiita.com
こちらのサイトで基本的な内容は詳しく記載されているので、ここでは自分が調べて発見した小技についてを記載します。
①GauntletController単体での起動
このツール、基本的にはRunUATを通しStagedBuildsの内容を使用した稼働が想定されているのですが、実行ファイルでもコマンドラインを通して指定することでGauntletController単体のみを起動することが可能です。
-gauntlet=(コントローラー名)
RunUATからの実行時のログを詳しく見ると、RunUATからの実行時、
-ExecCmds="-gauntlet=(コントローラー名)"
で指定した内容を元に、実行ファイル側に-gauntlet=(コントローラー名)
の形で値が渡されています。
ですので、その部分をそのまま実行ファイルやROMなどで起動時にコマンドラインから渡すことで、コントローラー単体での起動ができるというわけです。
実は、制作中のゲームをとあるプラットフォーム上で稼働するように調整していた際、-ExecCmds="-gauntlet=(コントローラー名)"
で指定するコマンド部分が適切に伝わらない問題がありました。
UDNなどで問題提起なども考えましたが、ひたすら時間がない状態だったので何か方法が無いかと調査したところ、この方法を見つけた形となります。
(余談:それ以外にもプロジェクト指定のパスが通らないとか諸々ありましたが…。)
このツールが本来想定していた使い方ではありませんが、実行ファイル外部からコマンドラインを通して実行するテストを指定するという仕組みをそのまま使えるだけでも浮くコストはかなり大きく、 またゲームテスト内容の出力についてもPC上の出力先が指定できる環境では問題なく行えるため、十二分に活用できました。
この辺り、プラットフォーム対応の資料が全く無いので同じところで挫けた方もいたのではないのかと思います。 正式な対応ではないですが、抜け穴として試していただければ幸いです。
②エディタ上でのGauntletController単体での起動
①の内容でコマンドラインから実行できるということはUE上でも起動時にコマンドが設定できれば実行できるということです。
エディタ上でコマンドラインを指定して起動する方法は以下のサイトが参考になります。
kagring.blog.fc2.com
これをすることで、エディタ上でも自動化テストができますし、GauntletControllerを実装/修正する際に都度パッケージを作成して試す必要がなくなります。
と、解説させていただきましたが、自分も触り始めたばかりです。 本来想定されいている使い方ではないですし、この使い方ではGauntlet本来の良さを殺している部分もあるかと思います。 そのあたり、知見のある方はご連絡頂けると助かります。
資料不足から埋もれるにはもったいない機能と思いますので、これからも色々広げていけたらと思います。
今回はこんなところでー。 では、またー。