UE4 パッケージ化設定のポイントを押さえる【初心者向け】Windows

:::note warn
[≫UE5.0の場合に必要なVisualStudio の設定を追記しました](https://qiita.com/O_Y_G/items/8bc60efe54f9aefafd38#visual-studio-%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)
:::


# はじめに
初心者の時に、チュートリアルで作ったゲームや、[__UE4ぷちコン__](https://historia.co.jp/ue4petitcon/)などで作ったゲームを友達にプレイしてもらいたい時などに、__パッケージ化の設定__ をどうしたらいいか、悩む事があると思います。

今回は、Windows用のパッケージ化設定の __「ポイント」__ を押さえていきたいと思います。

解説環境：Windows　Unreal Engine 4.27.2

<iframe width="560" height="315" src="https://www.youtube.com/embed/wL8q1VhTouM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

[≫動画版](https://youtu.be/wL8q1VhTouM)

サードパーソンテンプレートをベースに、設定の要点をまとめます。

- 参考資料
  - [公式ドキュメント - プロジェクトをパッケージ化する](https://docs.unrealengine.com/4.27/ja/Basics/Projects/Packaging/)
  - [公式ドキュメント - パッケージ化したゲームのサイズを小さくする](https://docs.unrealengine.com/4.27/ja/TestingAndOptimization/PerformanceAndProfiling/ReducingPackageSize/)
  - [公式ドキュメント - ビルド コンフィギュレーションのリファレンス](https://docs.unrealengine.com/4.27/ja/ProductionPipelines/DevelopmentSetup/BuildConfigurations/)
  - [公式ドキュメント - Unreal Engine 用に Visual Studio をセットアップする](https://docs.unrealengine.com/4.27/ja/ProductionPipelines/DevelopmentSetup/VisualStudioSetup/)
  - [Let's Enjoy Unreal Engine - UE4 リリース向けパッケージを作る際にやるべきこと](https://unrealengine.hatenablog.com/entry/2015/08/14/211733)
  - [Let's Enjoy Unreal Engine - UE4 一番お手軽にパッケージング時のサイズを最適化する方法](https://unrealengine.hatenablog.com/entry/2015/10/13/220000)
  - [Let's Enjoy Unreal Engine - UE4 実行ファイルに自作アイコンを設定する](https://unrealengine.hatenablog.com/entry/2016/08/09/234919)
  - [historia - [UE4] 4.9におけるパッケージングまとめ ～小規模タイトル編～](https://historia.co.jp/archives/3658/)
  - [AUTODESK AREA JAPAN - 第12回：パッケージングしよう](https://area.autodesk.jp/column/tutorial/3dsmax-ue4-viz/12-packaging/)
  - [へきらくおきらく - Tinyなパッケージに挑戦してみよう](https://wakanya.hatenablog.com/entry/TinyPackage)
  - [Qiita - [UE4] ビルドコンフィギュレーション Test構成とは](https://qiita.com/donbutsu17/items/401c1fa1037a99e14b03)
  - [Qiita - SteamにUE4のゲームをリリースする為の設定をまとめる](https://qiita.com/O_Y_G/items/d20fbac9f6b666e617b2)
  - [ひよっこ創作ブログ@Rwi -【UE4】パッケージング後だけ動作がおかしい？！](https://rwiiug.hatenablog.com/entry/2020/06/13/084539)
  - [SHOWFLAG_FIXED_IN_SHIPPING で宣言されているパラメーターはShippingでランタイム変更不可](https://twitter.com/com04/status/1361238825519882240?s=20)
  - [4.27から入ったOpenImageDenoise兄貴が47.5MBでゴツいですね…！](https://twitter.com/seiko_dev/status/1473596222489636865?s=20)
  - [UE5攻略 - Unreal Engine パッケージ化 | Packaging](https://ue5study.com/unrealengine-packaging/)

参考にさせて頂きましたm(_ _)m

# パッケージ化（Packaging）
:::note
パッケージ化とは
Unreal Engine で作ったゲームなどを、配布できる状態に仕上げることを言います。
（英：Packaging project）
:::

[公式ドキュメント≫「プロジェクトをパッケージ化する」](https://docs.unrealengine.com/4.27/ja/Basics/Projects/Packaging/)

単純にWindows環境へのパッケージ化をする場合は、下図の様に __選択__ をするだけで、パッケージ化は出来ます。
![Qiita_Package_01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/4a530aa0-1197-1521-c205-c5fd2dcedbcb.jpeg)

:::note warn
[Visual Studio が必要](https://qiita.com/O_Y_G/items/8bc60efe54f9aefafd38#visual-studio-%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)な場合。
プラグインの追加や、削除をする場合は、Visual Studio がインストールされていない状態だと、パッケージ化エラーになります。また、UE5.0では、プラグイン等の変更をしていなくても、Visual Studio を設定する必要があります。
:::


ただ、何も設定しないと、

- __容量__ が大きくなりがちだったり、
- 処理が __重く__ なりがちだったり、
- 環境によって __プレイできなく__ なってしまっていたり、
- 処理が軽いゲームなのに、プレイ中パソコンが __唸る__ ようになってしまったりする場合があります。

少し設定することで、プレイしやすいパッケージデータになるので、設定していきます。

# プロジェクト設定（Project Settings）
__「設定」__ のボタンから、__「プロジェクト設定」__ を選択します。
![Qiita_Package_02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/aad39ae9-7f4b-d892-afb9-7a89e4946c7d.jpeg)

## プロジェクト - パッケージ化（Packaging）

__「パッケージ化」__ を選んで、__「プロジェクト-パッケージ化」__ の設定画面を出します。
![Qiita_Package_03.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/71e21a74-3dcc-251e-2385-71d85c2e0482.jpeg)
以下の4カ所を確認してください。

![Qiita_Package_05.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/8c22ff10-ed12-e3cb-e884-844818fd8a99.jpeg)

- __圧縮およびクック済みのパッケージを作成（Create compressed cooked packages）__
  - 4.27では、最初からチェックが付いていますが、4.26以前はチェックが付いていないので、確認したい項目です。チェック状態でデータ容量がかなり圧縮されます。

![Qiita_Package_06.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/facf16b7-7a75-4e4e-9448-78e279d720f0.jpeg)

- __ビルドコンフィギュレーション（Build Configuration）__
  - 基本は、__「Shipping」__ にします。
  - 詳細説明は、[公式ドキュメント ビルド コンフィギュレーションのリファレンス を参照](https://docs.unrealengine.com/4.27/ja/ProductionPipelines/DevelopmentSetup/BuildConfigurations/)
  - [参考：[UE4] ビルドコンフィギュレーション Test構成とは](https://qiita.com/donbutsu17/items/401c1fa1037a99e14b03)
  - __Development__
     - デフォルトは、この設定になっています。エディターの状態に近い形で扱いたい場合に使います。
     - ショートカットキーやコンソールコマンドがエディターと同様に機能します。
     - デメリットとしては、データサイズが少し大きくなる。処理が少し重い。
  - __Shipping__
     - 配布用は基本的にShippingに設定します。
     - エディターでプレイしている時とは、挙動やライティングの明るさ等が若干変わる場合があります。
     - [一部コンソールコマンドなどが機能しないもの](https://twitter.com/com04/status/1361238825519882240?s=20)があるので、制作時に気を付けてください。
     

![Qiita_Package_07.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/29adc744-31c9-f483-4312-5b0b735148cc.jpeg)

- __完全に再ビルド（Full Rebuild）__
  - 完成版はチェックを入れます。バグの発生する可能性を下げます。
  - 一分でも早くパッケージ化を済ませる必要があり、多少のバグは許容する場合は、チェックを外してください。

![Qiita_Package_08.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/98918b0f-804e-c375-5b7e-40aaa13f5b69.jpeg)


- __前提条件のインストーラを含む（Include prerequisites installer）__
  - ゲームをプレイする為に必要なツール（まっさらなWindowsでも動くようにする。）を含むかどうか。
  - 不特定多数に配布するような場合は、チェックを入れておいた方が良いです。
  - 配布相手が、Unreal Engine のゲームをやった事がある場合は、チェックを外すと、データが39MB程小さくなります。
  - なお、[Steamへアップロードする際](https://qiita.com/O_Y_G/items/d20fbac9f6b666e617b2)は、このチェックは外すように言われました。

## プロジェクト - マップ＆モード（Maps&Modes）
パッケージ化する際は、 __「マップ＆モード」__ の __「ゲームのデフォルトマップ（Game Default Map）」__ に最初に開きたいレベルが指定されているか確認します。
![Qiita_Package_12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/65b9c9d8-034a-3a4b-c84f-362c1e0597b0.jpeg)
一応確認した方がいいです。

## プロジェクト - 説明（Description）
__「説明」__ を確認します。
![Qiita_Package_21.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/0e4eeb61-a71f-a6ff-777f-7a8dc0251cf5.jpeg)
急ぎのパッケージの場合は、触れる必要はないですが、一応確認しておきたい項目です。
目安が無いと、何を書いていいのかわからないので、[__「AcrionRPG」__](https://www.unrealengine.com/marketplace/ja/product/action-rpg#)を、参考にしてみます。
![Qiita_Package_24.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/9c585445-2f5c-8f2d-1f5a-98da83095c06.jpeg)
フルスクリーンだと、あまり気になりませんが、ウィンドウモードの場合、タイトル名が枠の上に出るので、気を付けたいと思います。
完成版の場合は、書くようにした方が良いと思います。（書かなくてもゲームはできます。）

## エンジン - 基本設定　フレームレート
__「基本設定（General Settings）」__ に確認しておくべき点があります。
![Qiita_Package_13.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/23737d7a-d447-b646-823a-bb9032b5c77c.jpeg)
__「フレームレート（Framerate）」__ の項目
![Qiita_Package_14.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/0b568914-189a-6b3e-dacf-2034dbb0c0c2.jpeg)

- __フレームをスムージング（Smooth Frame Rate）__
  - 可変フレームレート。ハイスペックなら滑らかに、ロースペックでも一応動くようにしたい場合。
  - 1フレームのずれが問題にならないゲームや、初心者の作ったゲームは、こちらで良いと思います。
- __固定フレームレートを使用（Use Fixed Frame Rate）__
  - 固定フレームレート。格闘ゲームや、アクションゲームは、こちらで60fpsにするのが良いと思います。
  - RPGなどは30fpsのものが多いようです。
- 4.23までは、デフォルトで「フレームをスムージング」にチェックが入っていましたが、4.24以降は両方チェックが入っていません。
- 両方のチェックが無いと、PCの限界までfpsを出そうと、__フル稼働状態__ になり、PCが唸ります。

:::note
フレームレート（fps）とは
1秒間に何回処理を行うかの設定で、家庭用のアクションゲームは、60fpsが基本になっています。
場合によっては30fpsで作られているゲームも多く、ゲーム性によっても、適切なfpsは異なるようです。
fpsは「frames per second」の略
:::



## プラットフォーム - Windows
次に、プラットフォームの __「Windows」__ の項目
![Qiita_Package_15.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/1d847fa4-3a92-e2ed-fb39-975c78814768.jpeg)
__「Splash」__ の欄に、ゲームを立ち上げた時に、表示される画像を指定できます。
![Qiita_Package_16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/0223c816-b60c-be09-b7ff-a15e6942f3b9.jpeg)
この辺を設定すると、自分のゲームを作った気分が出やすい気がします。
ただ、デフォルトだと、ゲームスプラッシュは、ゲーム起動時に表示されない気がします。出し方情報求ム。
また、エディタスプラッシュは、プレイヤーには関係ないので、指定しなくても良いです。
ゲームアイコン.icoの作り方などは、[≫alwei先生の記事をご参照ください。](https://unrealengine.hatenablog.com/entry/2016/08/09/234919)

設定しなくても問題ないですが、完成版の場合は、設定したい項目です。

プロジェクト設定で確認したい点は以上になります。


# 不要なプラグインの整理
__「設定」__ ＞ __「プラグイン」__
![Qiita_Package_25.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/24c19c69-a693-ae1c-6a2d-d015c92d7332.jpeg)
不要なプラグインの判断ができれば、不要なプラグインを全部外すのがいいですが、数が多く、判断が難しいので、最低限として、__「VRゲームじゃない場合」__ は、__「vr」__ で検索して、VR関連のプラグインを外すのをお勧めします。
![Qiita_12.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/a97ff5ca-4f64-94bb-3b41-72415b67f119.jpeg)
VR機器が起動してしまい、普通にプレイができないという報告が結構ありました・・・。
容量以外の観点でも、VRプラグインは、切っておいた方がいいです。

- __4.27.2 限定__ の話ですが、パッケージ化時に、
  - プラグイン __「OpenImageDenois」__ を切っておくべきです。[≫参考 恒吉星光先生ありがとうございます！！](https://twitter.com/seiko_dev/status/1473596222489636865?s=20)

4.27.2のプラグインの容量の検証をしてみました。

https://qiita.com/O_Y_G/items/b74f54205cfe4c6cf8f0

- 参考資料
  - [公式ドキュメント - パッケージ化したゲームのサイズを小さくする](https://docs.unrealengine.com/4.27/ja/TestingAndOptimization/PerformanceAndProfiling/ReducingPackageSize/)
  - [Let's Enjoy Unreal Engine - UE4 リリース向けパッケージを作る際にやるべきこと](https://unrealengine.hatenablog.com/entry/2015/08/14/211733)
  - [へきらくおきらく - Tinyなパッケージに挑戦してみよう　●使用しないPluginの無効化](https://wakanya.hatenablog.com/entry/TinyPackage#25-%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%AA%E3%81%84Plugin%E3%81%AE%E7%84%A1%E5%8A%B9%E5%8C%96)

:::note warn
Visual Studio が必要。
プラグインの追加や、削除をする場合は、Visual Studio がインストールされていない状態の場合、パッケージ化エラーになります。
:::

## Visual Studio のインストール
新規プロジェクト作成時に、C++プロジェクトを作ろうとすると、Visual Studio のインストールボタンが出ます。
![Qiita_Package_27.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/a2a39a00-7d5a-3196-eb6f-ae52bcb31ce4.jpeg)
このボタンからインストールを進めると、必要なオプションなどにチェックが付いた状態で、インストールが進むので、何も考えずにインストールを進めるだけで大丈夫です。

追加すべきオプションなどに関しては、公式ドキュメントを参考にするとよいと思います。
[__公式ドキュメント「Unreal Engine 用に Visual Studio をセットアップする」__](https://docs.unrealengine.com/4.27/ja/ProductionPipelines/DevelopmentSetup/VisualStudioSetup/)

### UE5.0
加筆時点で、UE5.0.3 ですが、[UE4.27の時に必要だった設定](https://docs.unrealengine.com/4.27/ja/ProductionPipelines/DevelopmentSetup/VisualStudioSetup/) に加え、
![Qiita_Package_28.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/0bd7410e-66ff-9bbe-7ad8-9b51fb383e56.jpeg)
Visual Studio 2019 のインストール時、 __「.NET デスクトップ開発」__ にチェックを入れないとパッケージ化が行えないようです。

Visual Studio 2022 の場合は、 __「.NET デスクトップ開発」__ + __「（個別のコンポーネント）.NET Core 3.1 ランタイム(LTS)」__ にチェックを入れる必要があります。

5.0になってから、ホットフィックスが何回か行われましたが、必要なのは変わらないようなので、追記しておきます。
[≫より詳しくVisual Studio の設定について書いてみたので、つまづいた際にご確認ください。](https://ue5study.com/unrealengine-packaging-visualstudio-setting/)

# 設定後　パッケージ化
プロジェクト設定、プラグインの整理が済んだら、パッケージ化します。
![Qiita_Package_01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/4a530aa0-1197-1521-c205-c5fd2dcedbcb.jpeg)
出来たフォルダーの __「.exe」__ のファイルをダブルクリックで、ゲームが起動します。
![Qiita_Package_26.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/193ed2bd-3b7b-8167-926d-229b57f3ef37.jpeg)


# データが大きすぎる場合
マーケットプレイスのアセットなどを大量に読み込んでいる場合などは、データが大きくなりがちです。
まだ作業途中などで、整理できない場合に、部分的にパッケージ化する方法があります。
![Qiita_Package_10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/46248e2b-483b-e90f-cd9f-44d95e5918ac.jpeg)

- __マップのみをクック（cookallのみに影響） Cook only maps（this only affects cookall）__
  - このチェックを入れることで、特定のマップ（レベル）だけをパッケージ化することができます。
- __パッケージ化されたビルドに含めるマップのリスト（List of maps to inclede in a packaged build）__
  - ここに、パッケージ化に含めたいレベルを指定します。
  - Windowsのエクスプローラーから、__.umap__（レベルデータ）を指定します。
  - 特定のレベルだけをパッケージ化する為、データは小さくなります。

![Qiita_Package_09.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906226/0c357bb5-1b9b-470f-b64c-262b7da18974.jpeg)
また、特定のフォルダーだけをパッケージに含めない方法など、[≫碧樂クーさんが解説してくれているのでリンク](https://wakanya.hatenablog.com/entry/TinyPackage#33-%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AB%E5%90%AB%E3%82%81%E3%82%8B%E5%90%AB%E3%82%81%E3%81%AA%E3%81%84%E3%83%9E%E3%83%83%E3%83%97%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AE%E6%8C%87%E5%AE%9A)


- 参考
  - [へきらくおきらく - Tinyなパッケージに挑戦してみよう](https://wakanya.hatenablog.com/entry/TinyPackage#33-%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AB%E5%90%AB%E3%82%81%E3%82%8B%E5%90%AB%E3%82%81%E3%81%AA%E3%81%84%E3%83%9E%E3%83%83%E3%83%97%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AE%E6%8C%87%E5%AE%9A)
  - [公式ドキュメント - パッケージ化したゲームのサイズを小さくする](https://docs.unrealengine.com/4.27/ja/TestingAndOptimization/PerformanceAndProfiling/ReducingPackageSize/)
  - [historia - [UE4] 4.9におけるパッケージングまとめ ～小規模タイトル編～](https://historia.co.jp/archives/3658/)

## データ整理をする
ちゃんとデータ整理する場合は、以下の情報を参照するといいと思います。

- [Let's Enjoy Unreal Engine - UE4 一番お手軽にパッケージング時のサイズを最適化する方法](https://unrealengine.hatenablog.com/entry/2015/10/13/220000)
  - がっつり整理する方法を、alwei先生が解説してくれています。
- [へきらくおきらく - Tinyなパッケージに挑戦してみよう](https://wakanya.hatenablog.com/entry/TinyPackage)
  - 碧樂クーさんの記事も最小化の方法が非常に詳しく解説してくれているので、一読すべき内容です。
- [Assets Cleaner - Project Cleaning Tool | The Tool Shed](https://www.unrealengine.com/marketplace/ja/product/assets-cleaner-project-cleaning-tool)
  - データ整理する際に、アセットを一覧表示するプラグインが評判がいいので、紹介しておきます。[（2021年11月の無料マーケットプレイスコンテンツ）](https://www.unrealengine.com/ja/blog/featured-free-marketplace-content-november-2021)

個人的には、アセット厳選用のプロジェクトを用意して、必要なアセットだけを、メインのプロジェクトに送るようにしています。

# パッケージ化エラー
初心者の時によく起こる問題は、

- Visual Studio がインストールされていない。
  - プラグインの項目でもあげましたが、Visual Studioがインストールされていない状態で、プラグインの追加や削除を行うと、パッケージ化に失敗します。
- Visual Studio に [__必要なオプション__](https://docs.unrealengine.com/4.27/ja/ProductionPipelines/DevelopmentSetup/VisualStudioSetup/) がインストールされていない。
  - Visual Studio がインストールされていても、[必要なバージョンでなかったり、オプションが足りなかったりする場合、追加する必要があります。](https://docs.unrealengine.com/4.27/ja/ProductionPipelines/DevelopmentSetup/VisualStudioSetup/)
- __日本語__ フォルダー、日本語ファイル名を使っている。
  - Unreal Engine は、日本語対応していますが、バージョンによっては、日本語を使っていることによるバグに遭遇する可能性があります。
  - 外部プラグインが日本語でバグを起こす可能性もあります。
  - __Windowsのユーザー名が日本語__ で、ドキュメントフォルダーにプロジェクトデータがある場合に、パッケージ化エラーが起こっている場面を、AnswerHubなどで度々見かけます。
  - フォルダー名、ファイル名などに、日本語や記号は使わない方が賢明です。
- 外部プラグインを使っている。
  - プラグインのマニュアルにパッケージ化の際に気を付ける点などが書いてある場合があります。
     - C++プロジェクト下でないとパッケージ化できない等。

よく見かけるエラー内容はこのあたりが多い気がします。


# おわりに
意外と、パッケージ化に関する情報が多くなかったので、
改めてという形で、パッケージ化に関してまとめてみました。

Windows以外のパッケージ化は、いろいろ試してみてから、またまとめてみたいなと思います。
間違っている個所などありましたら、ご指摘していただけると助かります。

https://twitter.com/O_Y_G/status/1478196988264914944?s=20

[≫動画版もよろしくね☆](https://youtu.be/wL8q1VhTouM)