関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2015.10.29UE4UE/ Cook
前回に引き続き、パッケージングについて書いていきます。
今回は ProjectLauncher を使ったパッケージングと、コンソールコマンドからのパッケージングを紹介します。
ProjectLauncher とは、開発作業やテストを簡素化及び迅速化する「Unreal Frontend」に含まれるツールです。
以下、ProjectLauncher に関する公式ドキュメントからの引用です。
ユーザのゲームをビルド、クック、デプロイ、起動します。UFE はローカルまたはネットワーク上どちらかで接続して、 異なるターゲットプラットフォームで実行される複数のターゲットデバイスへ、同時にデプロイすることができます。単一またはマルチプレイヤー クロス プラットフォームゲーム のテストのワークフローを大幅に迅速化するために、デバイスごと (サポートするプラットフォーム) に複数インスタンスを起動したり、 インスタンスごとに異なった役割を設定します。
UE4.9.2 ではエディタのメニューから「Window」→「Project Launcher」と選択すると表示されます。
ProjectLauncherを使うために、ProjectLauncher の起動オプション設定をまとめたプロファイルを作成する必要があります。
エディタのメニューから「Window」→「Project Launcher」として ProjectLauncher を表示し、プロファイル作成ボタンを押します。
プロファイル設定画面が表示されます。
設定できる項目が多いので、順番に説明していきます。
プロファイル設定はファイルとして出力され、識別するための名前と説明を入力できます。
対象とするプロジェクトを設定できます。
プルダウンを選択し、「Browse…」から対象プロジェクトの uproject ファイルを選択して下さい。
今回はビルドが必要なので、ビルド設定の中にあるチェックボックスを有効にします。
有効にすると Build Configuration がプルダウンで選べるようになるので、Development や Shipping を選んで下さい。
クック設定では右のプルダウンから「By the book」を選択します。
その後、設定画面が追加されるので、各種設定を行っていきます。
下記に主要な設定項目を列挙します。
Cooked Platforms | クック対象のプラットフォームです。 |
Cooked Cultures | クック対象の言語です。 |
Cooked Maps | クック対象のレベルにチェックを入れることができます。
※現状(4.9.2)だとここに表示されるレベルは Content/Maps 以下にあるものだけです。 |
Only cook modified content | 有効にすることで、前回クック時から差分があるものだけがクックされるようになります。
基本的にはクック時間の削減のために有効にしておくのが推奨ですが、こちらにチェックを入れていた場合は使われなくなったアセットでも既にクック済みだった場合は無条件にパッケージに含まれてしまいますのでご注意下さい。 |
Compress content | コンテンツを圧縮するかどうか。 |
Store all content in a single file (UnrealPak) | コンテンツをパックするかどうか。
パックすることで、転送時間を削減することが可能です。 パッケージングにどのコンテンツが含まれているのかを確認したい場合はチェックを外して下さい。 |
Cooker build configuration | ビルド設定(Development、Shipping等)です。 |
今回はローカルにパッケージングされたものを保存するので、右のプルダウンから「Package & store locally」を選択します。
各種デバイスに対してデプロイして確認ができますが、今回はパッケージングが目的なのでデプロイはしません。
右のプルダウンから「Do not deploy」を選択します。
今回は最終的に以下の様な設定にしました。
ProjectLauncher ウィンドウに戻り、作成したプロファイルの右側にある「Launch this profile」ボタンを押すと、パッケージングが始まります。
正常にパッケージングが完了すると、以下の様な画面になります。
パッケージングが成功すると、以下のディレクトリに保存されます。
[プロジェクトディレクトリ]/Saved/StagedBuilds/[プラットフォーム]/[プロジェクト名].exe
実行して正常に遊べれば完了です。
Jenkins等で定期ビルドしたい場合はコンソールからパッケージングができないといけません。
実は ProjectLauncher がパッケージングした際に出力したログの中に、コンソールから実行できるコマンドが含まれています。
該当のコマンドは3行目に出力されています。
Automation.ParseCommandLine: Parsing command line: BuildCookRun -project=D:/Blog/Packaging/Packaging.uproject -noP4 -clientconfig=Shipping -serverconfig=Shipping -nocompile -nocompileeditor -rocket -utf8output -platform=Win64+Win64 -targetplatform=Win64 -build -cook -map=PackagingTest -unversionedcookedcontent -pak -compressed -stage -package -cmdline=PackagingTest -Messaging -addcmdline=-SessionId=085A7C22408059A8EE4ECE8126C08E42 -SessionOwner=rhara -SessionName=’Test Profile’
これを AutomationTool から実行するために加工します。
AutomationTool は下記のディレクトリにあります。
C:\Program Files\Epic Games\4.9\Engine\Binaries\DotNET\AutomationTool.exe
まず、先程のログにはセッション関係のコマンドがあるので、そちらは不必要なので取り除きます。
それから BuildCookRun 以降のものをそのまま引数として使用すれば良いので、最終的には下記のようなコマンドとなります。
AutomationTool.exe BuildCookRun -project=D:/Blog/Packaging/Packaging.uproject -noP4 -clientconfig=Shipping -serverconfig=Shipping -nocompile -nocompileeditor -rocket -utf8output -platform=Win64+Win64 -targetplatform=Win64 -build -cook -map=PackagingTest -unversionedcookedcontent -pak -compressed -stage -package -cmdline=PackagingTest -Messaging
これをコマンドプロンプトから実行し、正常にパッケージングができれば完了です。
先程のコマンドに以下のコマンドを追加して下さい。
-archive -archivedirectory=[出力先ディレクトリ]
できればプロファイルの更新によってコンソールコマンドを変更しなくても良いように、プロファイル指定でコンソールからパッケージングしたかったのですが、そちらは見つけることができませんでした。
AutomationTool や UnrealFrontend のコマンドライン引数も確認してみましたが、それらしきものが見つからず…。
また、プロファイル設定は下記のディレクトリに保存されており、開発者間で共有しにくいのも問題点として挙がっています。
C:\Users\[ユーザー名]\AppData\Local\UnrealEngine\4.9\Saved\Launcher
こちらは将来的に改善されることを願っています。
まだまだパッケージング周りは問題点もありますが、以前のバージョンから比べると確実に機能が揃ってきて安定してきています。
今後もどんどん改善されていくと思うので、情報が新しくなったらまた差分をまとめたりしたいと思います。