関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2015.10.21UE4UE/ Cook
皆様、アンリアルフェスはお疲れ様でした。
懇親会等で多くの方と交流でき、とても有意義な時間を過ごすことができました。
日に日にUE4の勢いが増していっているので、ヒストリアとしても負けないように良いコンテンツを作っていきたいですね。
さて今回はUE4.9におけるパッケージング方法についてまとめてみました。
UE4ではレベルを起点に、紐付くアセットをかき集めてパッケージングするという方式を取っています。
ちなみにレベルや各アセットに関して、具体的にどのアセットが紐付いているのかを確認したい場合、「アセットを右クリック」→「Asset Actions」→「Migrate」をすることで簡単に確認ができます。
以下は StarterContent に含まれている「Minimal_Default」レベルに紐付くアセットのリストです。
エディタ上からパッケージングする方法がオススメです。
以前はエディタ上からのパッケージングだと強制的に全レベルを内包するようになってしまっていたため、外部アセット等に含まれている使用していないレベルですらパッケージング対象となってしまい、Migrate等を駆使してプロジェクト内の不要アセットを削除していく作業がほぼ必須となり使いにくいものでした。
どのバージョンからなのかは確認できていませんが、UE4.9ではパッケージングに含むレベルを明示的に指定できるようになっています。
プロジェクト設定を開き、Packagingタブから以下の項目を設定します。
これらの設定を行った後、「File」→「Package Project」から任意のプラットフォームを選ぶとパッケージングできます。
以下の条件でパッケージングし、パッケージのサイズを比較してみました。
結果は以下の通りです。
Development | Shipping | |
全レベル | 1106 MB | 1065 MB |
Minimal_Default のみ | 297 MB | 253 MB |
サイズが大きく違っており、設定が有効になっていることが確認できます。
また、パッケージングにかかる時間も短縮することができるため、パッケージング時のみに発生するバグの確認等をする場合に、テストレベルを作って繰り返し検証することもやりやすいかと思います。
当たり前ですが、正常な挙動にはなりませんのでご注意下さい。
例えばレベルAにてレベルBを OpenLevel していた場合、パッケージにレベルBを含んでいなかったらレベルAが再読み込みされるようになります。
「Config」ディレクトリ内の「DefaultGame.ini」内にエディタ上から設定された内容が反映されています。
[/Script/UnrealEd.ProjectPackagingSettings]
BuildConfiguration=PPBC_Development
StagingDirectory=(Path=”D:/Blog/PackagingTest/Package”)
FullRebuild=False
ForDistribution=False
IncludeDebugFiles=False
UsePakFile=True
bGenerateChunks=False
bBuildHttpChunkInstallData=False
HttpChunkInstallDataDirectory=(Path=)
HttpChunkInstallDataVersion=
IncludePrerequisites=True
IncludeCrashReporter=True
InternationalizationPreset=English
-CulturesToStage=en
+CulturesToStage=en
DefaultCulture=en
bCookAll=False
bCookMapsOnly=True ←指定のレベルのみを含むかどうか
bCompressed=False
+MapsToCook=(FilePath=”/Game/StarterContent/Maps/Minimal_Default”) ←パッケージに含むレベル
+MapsToCook=(FilePath=”/Game/StarterContent/Maps/Advanced_Lighting”)←パッケージに含むレベル
このように設定は ini ファイルとして管理されているため、例えば指定のディレクトリ以下に含まれる全レベルを集め、ini ファイルの中身を書き換えるようにすることでパッケージ設定への追加漏れを防ぐツール等も作ることは可能です。
次回は ProjectLauncher からのパッケージングや、Jenkins等からも実行できるようにバッチ化の方法について書く予定です。