[UE4]AutomationToolを使ってみる

4 min read読了の目安(約3800字

本記事はUnreal Engine 4 (UE4) その3 Advent Calendar 2020 11日目の記事です。

AutomationToolとは

AutomationToolは便利機能がまとまったコンソールアプリケーションです。

使い方

"C:\Program Files\Epic Games\UE_4.25\Engine\Build\BatchFiles\RunUAT.bat" -list

と入力することでAutomationToolが実行できるコマンド一覧を取得できます。
""(ダブルクォーテーション)でRunUAT.batを囲っておくことで、Program Filesのように間にスペースが入っていても、正しくバッチが実行されます。

サブコマンドはhelpと入れることで詳細が表示されます。

"C:\Program Files\Epic Games\UE_4.25\Engine\Build\BatchFiles\RunUAT.bat" BuildCookRun -help

AutomationToolを実行するのにRunUAT.batを使って書かれている資料と、直接AutomationToolを実行している資料がありますが、RunUAT.batを使っておけば間違いないです。
RunUAT.batでは、AutomationTool.exeがビルド済であるかどうかを確認して、ビルドしてなければビルドを実行し、ビルド済であればすでにあるAutomationToolLauncher.exeを実行するようになっています。

BuildCookRun(ビルドやパッケージ化)

ビルド

Build.bat
"C:\Program Files\Epic Games\UE_4.25\Engine\Build\BatchFiles\RunUAT.bat" ^
BuildCookRun ^
-project="D:/MyProject.uproject" ^
-platform=Win64 ^
-clientconfig=Development ^
-build

https://www.slideshare.net/EpicGamesJapan/press-button-drink-coffee
の受け売りになってしまいますが、一番良く使うコマンドは、ビルドとパッケージ化だと思います。
こちらはパッケージ化を行わずにビルドだけ行います。

パッケージ化

Package.bat
"C:\Program Files\Epic Games\UE_4.25\Engine\Build\BatchFiles\RunUAT.bat" ^ BuildCookRun ^
-project="D:/MyProject.uproject" ^
-noP4 ^
-platform=Win64 ^
-clientconfig=Development ^
-cook ^
-allmap ^
-build ^
-stage ^
-pak ^
-partialgc

よくあるコマンド例では、-archive -archivedirectoryが付いています。
アーカイブをZipで出力したい場合は、アーカイブは行わず、StagedBuildsディレクトリから直接Zipを作るとコピーが1回減らせます。

UE4.25からはIOStoreも加わったので、そのあたりを加えても良いでしょう。

https://youtu.be/i31wSiqt-7w?t=420

Zipファイルの操作

引数 説明
archive 出力先
add 圧縮元のパス
extract 解凍先のパス
compression 圧縮レベル(0はコピー、9が最良圧縮。デフォルトは5)

簡単なZIP圧縮解凍もUATから行えます。各PCにZip解凍ソフトを入れなくてもよいので、簡単なZip作成には良いです。
しかし、細かい調整はできないため、本当に軽くZip化したいときのみ有用です。

zipファイルの圧縮

"C:\Program Files\Epic Games\UE_4.25\Engine\Build\BatchFiles\RunUAT.bat" ZipUtils -archive=E:/Temp.zip -add=E:/Temp

zipファイルの解凍

"C:\Program Files\Epic Games\UE_4.25\Engine\Build\BatchFiles\RunUAT.bat" ZipUtils -archive=E:/Temp.zip -extract=E:/

ライトマップをリビルド

コマンドとして用意されていますが、Perforceが必要らしくエラーとなってしまいました。
P4関連のコマンドは後々試していきたいですね。
どうしてもコマンドラインから実行したい場合は、EPICさんのスライドをご参考ください。

リダイレクタを修正する

エンジン自体にリダイレクタ修正機能がありますが、それをラップした機能です。

上の図のように残ってしまったリダイレクタですが、次のコマンドを入力すると、下の図のように修正してくれます。

"C:\Program Files\Epic Games\UE_4.25\Engine\Build\BatchFiles\RunUAT.bat" FixupRedirects -project="E:/MyProject/MyProject.uproject"

チーム制作では、忘れがちなのでCIツールで自動化しておくと良さそうです。
中身自体は下のコマンドをラップしているだけです。

-run=ResavePackages -unattended -nopause -buildmachine -fixupredirects -autocheckout -autocheckin -projectonly

使用しているライセンスを出力する

"C:\Program Files\Epic Games\UE_4.25\Engine\Build\BatchFiles\RunUAT.bat" ListThirdPartySoftware -Project=D:/MyProject/MyProject.uproject -Target=UE4Game Win64 Development

UE4.25.4環境だとクラッシュしてしまいました。
UE4.26のリリースノートにFix for crash in ListThirdPartySoftware.Automation.csとあるので、ここだけUE4.26を使います。
UE4は外部のライブラリを利用しているとき、ソフトウェアライセンスを.tpsと呼ばれるファイルに格納してます。
このコマンドはその.tpsファイルを一覧表示してくれるコマンドです。
本当にコンソールに表示されるだけで、実際に製品用にライセンスをフォーマットしてくれるわけではないので、これをまとめてくれるツールが必要です。

有志でツールを作ってる方はいるようですが、UE4標準でこの機能を知ってる方がいたら教えてほしいです。

https://github.com/DaedalicEntertainment/ue4-tps-license-tool

まとめ

AutomationToolで利用できるコマンドの一部を解説してみました。
またまだ調べきれてないコマンド有用そうなコマンドは沢山あります。
今回、調べきれなかったPerforceと連携するためのコマンドやUE4.26からはUploadDDCToAWSといったコロナの影響によるものか(?)と思わせるコマンドなど多くあります。

自作コマンドも追加できるようなので拡張し、ゲーム開発をより便利にしていきたいですね。