BLOGブログ

2015.10.29UE4UE/ Cook

[UE4] 4.9におけるパッケージングまとめ ~ProjectLauncher & Console編~

前回に引き続き、パッケージングについて書いていきます。

今回は ProjectLauncher を使ったパッケージングと、コンソールコマンドからのパッケージングを紹介します。

 

ProjectLauncher とは

ProjectLauncher とは、開発作業やテストを簡素化及び迅速化する「Unreal Frontend」に含まれるツールです。

Unreal Frontend

以下、ProjectLauncher に関する公式ドキュメントからの引用です。

ユーザのゲームをビルド、クック、デプロイ、起動します。UFE はローカルまたはネットワーク上どちらかで接続して、 異なるターゲットプラットフォームで実行される複数のターゲットデバイスへ、同時にデプロイすることができます。単一またはマルチプレイヤー クロス プラットフォームゲーム のテストのワークフローを大幅に迅速化するために、デバイスごと (サポートするプラットフォーム) に複数インスタンスを起動したり、 インスタンスごとに異なった役割を設定します。

 

UE4.9.2 ではエディタのメニューから「Window」→「Project Launcher」と選択すると表示されます。

 

プロファイルを作成する

ProjectLauncherを使うために、ProjectLauncher の起動オプション設定をまとめたプロファイルを作成する必要があります。

エディタのメニューから「Window」→「Project Launcher」として ProjectLauncher を表示し、プロファイル作成ボタンを押します。

Packaging10

 

 

プロファイル設定画面が表示されます。

Packaging11

設定できる項目が多いので、順番に説明していきます。

 

1.プロファイル設定名と説明

プロファイル設定はファイルとして出力され、識別するための名前と説明を入力できます。

 

2.プロジェクト設定

対象とするプロジェクトを設定できます。

プルダウンを選択し、「Browse…」から対象プロジェクトの uproject ファイルを選択して下さい。

 

3.ビルド設定

今回はビルドが必要なので、ビルド設定の中にあるチェックボックスを有効にします。

有効にすると Build Configuration がプルダウンで選べるようになるので、Development や Shipping を選んで下さい。

 

4.クック設定

クック設定では右のプルダウンから「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等)です。

 

5.パッケージ設定

今回はローカルにパッケージングされたものを保存するので、右のプルダウンから「Package & store locally」を選択します。

 

6.デプロイ設定

各種デバイスに対してデプロイして確認ができますが、今回はパッケージングが目的なのでデプロイはしません。

右のプルダウンから「Do not deploy」を選択します。

 

今回は最終的に以下の様な設定にしました。

Packaging12

Packaging13

 

パッケージングする

ProjectLauncher ウィンドウに戻り、作成したプロファイルの右側にある「Launch this profile」ボタンを押すと、パッケージングが始まります。

正常にパッケージングが完了すると、以下の様な画面になります。

Packaging14

 

パッケージの格納場所

パッケージングが成功すると、以下のディレクトリに保存されます。

[プロジェクトディレクトリ]/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

こちらは将来的に改善されることを願っています。

 

終わりに

まだまだパッケージング周りは問題点もありますが、以前のバージョンから比べると確実に機能が揃ってきて安定してきています。

今後もどんどん改善されていくと思うので、情報が新しくなったらまた差分をまとめたりしたいと思います。