[UE4]AutomationToolを使ってみる
本記事は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(ビルドやパッケージ化)
ビルド
"C:\Program Files\Epic Games\UE_4.25\Engine\Build\BatchFiles\RunUAT.bat" ^
BuildCookRun ^
-project="D:/MyProject.uproject" ^
-platform=Win64 ^
-clientconfig=Development ^
-build
こちらはパッケージ化を行わずにビルドだけ行います。
パッケージ化
"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が付いています。
Windowsの場合、アーカイブは行わず、StagedBuildsディレクトリから直接Zipを作るとコピーが1回減らせます。
UE4.25からはIOStoreも加わったので、そのあたりを加えても良いでしょう。
YouTubeのvideoIDが不正です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標準でこの機能を知ってる方がいたら教えてほしいです。
まとめ
AutomationToolで利用できるコマンドの一部を解説してみました。
またまだ調べきれてないコマンド有用そうなコマンドは沢山あります。
今回、調べきれなかったPerforceと連携するためのコマンドやUE4.26からはUploadDDCToAWSといったコロナの影響によるものか(?)と思わせるコマンドなど多くあります。
自作コマンドも追加できるようなので拡張し、ゲーム開発をより便利にしていきたいですね。
Discussion