[UE5] Installed Build(rocket build)を試してみた
はじめに
UE5(5.1.1) で「Installed Build」を試したのでその備忘録です。
(複数人での作業を想定しています)
参考にさせて頂いた情報
手順
ビルド環境
VisualStudio2022/UE5.1.1/Perforce
基本的な流れ
ドキュメントに沿ってやっていくだけです。
使用したビルドコマンド
UEフォルダのトップディレクトリにバッチファイルを配置して実行しました。
cd Engine/Build/BatchFiles/
RunUAT.bat BuildGraph -target="Make Installed Build Win64" -script=Engine/Build/InstalledEngineBuild.xml -set:HostPlatformOnly=true -set:WithClient=true -set:WithServer=true -set:GameConfigurations="Shipping;Test;Development;DebugGame" -set:WithDDC=false -set:WithFullDebugInfo=true -clean
オプション:HostPlatformOnly
Installed Build をお使いのホスト プラットフォーム向けのみに設定するヘルパー オプションです。これにより、その他のプラットフォームを個別に無効にする必要がなくなります。
オプション:WithClient
ドキュメントには書いてないですけど、ビルドコンフィグレーションの「XXXXClient」を使いたい時に設定するのかなと思います。
オプション:WithServer
ドキュメントには書いてないですけど、ビルドコンフィグレーションの「XXXXServer」を使いたい時に設定するのかなと思います。
オプション:GameConfigurations
パッケージ化されたアプリケーションのコンフィギュレーションを指定します。
デフォルトだと以下になっていたので「Test」を追加「DefaultValue="Shipping;Development;DebugGame"」
オプション:WithDDC
エンジン コンテンツおよびテンプレート用のスタンドアロンの派生データ キャッシュを構築します。
オプション:WithFullDebugInfo
バイナリ エディタおよびパッケージ化されたアプリケーション ビルドの完全なデバック情報を生成します。
ビルドにかかる時間
自分の場合は 7~8 時間かかったと思います。
失敗したらまた1からなので根気との戦いですね。
XXXXClient と XXXXServerは?
デフォルトの状態でのビルドだと、こんな感じのビルド構成が選択できるようになっていると思います。
自分は「Client」「Server」も欲しかったので「Source」フォルダ以下に
「[ProjectName]Client.Target.cs」「[ProjectName]Server.Target.cs」を追加しました。
ドキュメント
デフォルト設定から変更後は、こんな感じになります。
Installed Build を使うメリット
ビルド時間の短縮
エンジン側のビルドが走らなくなるので、ビルド時間の短縮になります。
カスタムエンジンを使う場合のフルビルド
1時間13分ほどかかりました。
「Installed Build」を使用した場合のフルビルド
ゲームプロジェクト側のコードが少ない状況だったので、数秒で終わりました。
ゲームプロジェクト側のバイナリだけ更新すればよい
ちゃんと理解できていないのですが、普通にカスタムエンジンを利用してビルドする際って、エンジン側で更新されるバイナリもアップしないと、PG以外の席でうまく動かなくなりますよね?
「Installed Build」を使用する場合だと、ゲームプロジェクト側のバイナリ更新だけでOKです。
Installed Build を使うデメリット
配布用のエンジンを生成する事になるので、エンジン側に変更があった場合は、再度生成し直す必要があります。
頻繁にエンジン側を変更する場合は、やめておいた方がよさそうです。
その他
サブミットエラー対応
カスタムエンジンのバイナリ等を Perforce にサブミットする際、たまに、サブミットエラーになるファイルがあります。
エラーが起きる際は「拡張子のないファイル」「ファイルタイプが unicode」の際におきがちなのですが、以下のバッチを作成して、拡張子のないファイルを検索しておいて、該当のファイルをサブミットする際は、ファイルタイプを確認し、必要に応じてファイルタイプを変更するようにしてました。
dir /b /a-d /s *.
無駄なファイルは Perforce 管理しない
pdb ファイルとか obj ファイルとか
無いと、デバッグ時にエンジン側のデバッグがしづらくなるのかな?
と思って、サブミットしてたんですけど、容量とエンジン更新時のサブミット量がバカにならんので Perforce からは削除しました。
プロジェクトが起動できない
エンジンを更新した際は、プラグインの方の dll もう更新しないと
こんな感じのエラーが出るかもしれません。
おわりに
以上、備忘録でした。
もしサポート頂けたら いつか個人開発をする時に使わせて頂きます!