情報は力ではない

UE4 とか Blender とか。

Packaging についてのメモ

先日、第 13 回 UE4 ぷちコンに作品を応募しました。

historia.co.jp

6回ほど参加していて、今回初めて応募作品を公開しました。itch.io で公開しています。

https://0xuma.itch.io/butterfly-bloosom

初めてちゃんと Packaging したので、その際に実施したことを自分用のメモとして記載しておきます。間違いやこうしたほうがよい等があれば知りたいです。

基本的には以下を参照しました。

プロジェクトのパッケージ化 | Unreal Engine ドキュメント How to package the right way - reduce .pak size - Unreal Tournament Forums

Packaging の実施について

Packaging の実施自体は簡単で File > Package Project でどのプラットフォーム用に Packaging するかを選択します。画像は Windows 64-bit を選択している場面です。 f:id:masahiro8080:20200405153637p:plain

パッケージサイズの削減について

Packaging 自体は簡単にできるのですが、最初に作成したパッケージのサイズが 3 GiB 弱あり、配布するには大きすぎるので、パッケージサイズを削減していくことにしました(最終的には 700 MiB 程になりましたが、それでも大きい...)。

Project Settings での設定について

Project Settings で Project > Packaging を選択し、パッケージに関する設定を行います。

Project カテゴリ

  • Build Configuration は Shipping にしておく
  • Packaging 実施ごとにビルドを走らせるために Full Rebuild をチェックしておく
  • Include Debug Files にチェックが入ってないことを確認する

f:id:masahiro8080:20200405134933p:plain

Packaging カテゴリ

  • Use Pak File にチェックしてることを確認する

f:id:masahiro8080:20200405135354p:plain

Packaging カテゴリの▼を押下して、設定を開いて、さらに設定していく。

  • 指定したレベルのみ Packaging するために Cook only maps にチェックする。Packaging 対象のマップは Lists of maps to include in a packaged build で指定する
  • パッケージサイズを減らすために Create compressed cooked package にもチェックしておく
  • 削減の作業とは違うが、アセット以外のテキストファイル等を package 対象にしたい場合は Additional Non-Asset Directories to Package でディレクトリを指定する

f:id:masahiro8080:20200405135510p:plain

アセット関連

今回の場合、基本的にテクスチャが容量を食っていたので、テクスチャサイズの削減を実施しました。

テクスチャグループの設定

<Project Directory>/Config に DefaultDeviceProfiles.ini を作成し、テクスチャグループの設定を上書きする。今回はマーケットプレイスのテクスチャで 4K のものが多かったので World、World Normal Map の LODBias の設定を 1 に設定し、1段階テクスチャのサイズを下げました。その上でテクスチャアセット側の設定でよりサイズを下げていくという方法にしました。

[/Script/Engine.TextureLODSettings]
@TextureLODGroups=Group
+TextureLODGroups=(Group=TEXTUREGROUP_World,MinLODSize=1,MaxLODSize=8192,LODBias=1,MinMagFilter=aniso,MipFilter=point,MipGenSettings=TMGS_SimpleAverage)
+TextureLODGroups=(Group=TEXTUREGROUP_WorldNormalMap,MinLODSize=1,MaxLODSize=8192,LODBias=1,MinMagFilter=aniso,MipFilter=point,MipGenSettings=TMGS_SimpleAverage)

テクスチャアセットの設定

Maximum Texture Size で最大サイズを設定します。 f:id:masahiro8080:20200405140849p:plain

ゲーム内で使用されるテクスチャのサイズは Details タブ上部の Max In-Game でわかります。Resource Size はおそらく pak 内でのサイズだと思います。 f:id:masahiro8080:20200405150318p:plain

ライトマップ関連

ライトマップの容量の減らし方はよくわかってないけど以下を実施しました。

  • Static Mesh 等の Light Map Resolution を調整する
  • World Settings で Packed Light and Shadow Map Texture Size を調整する(パッケージサイズの削減とは違う気がする)

その他

コンテンツブラウザでアセットを右クリック > Size Map... で、選択したアセットの容量を確認できます。画像はレベルの Size Map です。 f:id:masahiro8080:20200405151508p:plain

プラグイン関連

不要なプラグインは Enabled にチェックを入れないようにする

最後に

<project directory>/Saved/Cooked の下に pak に含まれる Cook 後の各アセットが配置されるので各アセットサイズを見ることができる。ls -l とかで容量を食ってるアセットを見つける。