エディタのPlayボタンでは問題なく遊べるゲームができました。友達に見せたいので、そのままプロジェクトフォルダを圧縮して渡す。ところが相手はUnreal Engineを持っていないので開けません。
人に渡す形にする作業を パッケージ化(Packaging) と呼びます。UE5には専用のメニューが用意されていて、押すだけで .exe が出来上がります。ただし初回は、起動しても真っ暗な画面が出るか、そもそもビルドが途中で止まるかのどちらかになりがちです。この記事では、パッケージ化の手順と、初めての人がほぼ確実に踏む3つの落とし穴の直し方を解説します。
この記事でわかること
- パッケージ化が実際にやっていること(Cook と Package)
- 起動して真っ暗になる原因は Game Default Map の設定漏れ
- Development と Shipping の違いと、使う順番
- 出力されたフォルダの中身と、人に渡すときに何を渡すか
- 参照していないアセットは入らない という仕様と回避策
- 実践: テンプレートを起動できるexeにするまでを通しで
パッケージ化がやっていること
メニューを押してから .exe が出るまでに、UEは大きく2つの作業をしています。
| 段階 | 呼び名 | 内容 |
|---|---|---|
| 1 | Cook(クック) | .uasset を、実行する環境で直接読める形式へ変換する |
| 2 | Package(パッケージ) | 変換したデータと実行ファイルを、1つのフォルダにまとめる |

エディタで扱っている .uasset は、編集のための情報を大量に持っています。そのままでは実行時に重いので、必要な形へ焼き直す作業がCookです。 初回のパッケージ化に何十分もかかるのは、ほぼこのCookの時間 です。2回目以降は変換済みのデータが再利用されるため、大幅に短くなります。
ここで重要なのが、 Cookの対象は「起動レベルから参照をたどって到達できたアセット」だけ という点 です。フォルダに置いてあるだけのアセットは、原則としてパッケージに含まれません。この仕様が後述する落とし穴につながります。
先に済ませる3つの設定
パッケージ化を押す前に、必ず確認しておく設定が3つあります。
1. Game Default Map(これが最大の落とし穴)
Edit > Project Settings > Project > Maps & Modes を開きます。
| 項目 | 意味 |
|---|---|
| Editor Startup Map | エディタを開いたときに読み込むレベル |
| Game Default Map | パッケージ化したゲームが起動時に開くレベル |

エディタでは常に自分でレベルを開いているため、この項目を触る機会がありません。そのまま出荷すると、起動したexeは既定の空レベルを開きます。 床も光もプレイヤーもない空間 が表示されるので、画面は真っ暗に なります。
ここに、タイトル画面なり最初のステージなりのレベルを指定してください。 「exeを起動したら真っ暗」の原因は、ほぼこれです。
2. ビルドツール(Visual Studio)
C++コードを含むプロジェクトや、C++を含むプラグインを入れている場合、パッケージ化にはコンパイラが要ります。Windowsでは Visual Studio をインストールし、インストーラーで次を選びます。
- C++によるゲーム開発(Game development with C++)ワークロード
- Windows 10/11 SDK
これが無いと、パッケージ化の途中で Missing required SDK や、コンパイル関連のエラーで停止します。Blueprintだけのプロジェクトなら不要なこともありますが、プラグインを1つ入れた瞬間に必要になるため、先に入れておくほうが結局早く済みます。
3. Packagingの設定を覗いておく
Project Settings > Project > Packaging に、出力内容を決める項目が並んでいます。最初に見ておくべきものだけ挙げます。
| 項目 | 既定 | 意味 |
|---|---|---|
| Use Pak File | オン | アセットを1つの .pak にまとめる。オフにすると個別ファイルが大量に並ぶ |
| Full Rebuild | オフ | オンにすると毎回すべて作り直す。時間がかかる代わりに古い残骸が消える |
| Cook everything in the project content directory | オフ | オンにする と、参照されていないアセットも全部含める |
| Additional Asset Directories to Cook | 空 | 特定のフォルダだけ強制的に含めたいときに指定する |
3つ目の項目が、先ほど触れた「参照をたどれないアセットは入らない」問題への直接の対処です。ただし 全部入りにすると容量も時間も膨らむ ので、原因の分かっている一部フォルダだけを Additional Asset Directories to Cook に足すほうが健全です。
補足: 特に消えやすいのは、Blueprintから
Spawn Actor from Classなどで名前指定・変数指定で呼び出しているアセットです。エディタでは動くのに、パッケージ版では何も出てこない場合はここを疑ってください。アセットの参照関係の見方はアセット管理の記事で扱っています。
DevelopmentとShippingの違い
パッケージ化のときに選ぶ Build Configuration は、同じゲームを「どんな性格の実行ファイルにするか」の指定です。個人開発で使うのは実質2つです。
| 設定 | 速度・容量 | ログ | コンソール(~キー) | 用途 |
|---|---|---|---|---|
| Development | やや遅い・大きい | 出る | 使える | 動作確認・テスト配布 |
| Shipping | 最速・最小 | 出ない | 使えない | 公開・最終配布 |

Shippingでは、デバッグ用の仕組みがコンパイル時点で取り除かれます。 Print String の表示も、Line Traceの Draw Debug Type で描いていた線も出ません。速く小さくなる代わりに、 不具合が起きたときの手がかりが何も残らない ということです。
そのため順番が決まっています。 まずDevelopmentでパッケージして起動確認し、問題が無くなってからShippingで作り直す。 いきなりShippingで作ると、真っ暗な画面を前に何も情報が得られない状態になります。
選ぶ場所は、パッケージ化のメニューと同じ Platforms > Windows > Build Configuration です。ここで選んだ設定が、次のPackage Projectに適用されます。
出力されたフォルダの中身
パッケージ化が終わると、指定した出力先に Windows フォルダができます。中身はこうなっています。

Windows/
├─ MyGame.exe ← 起動するのはこれ
├─ Engine/ ← エンジン側の実行時ファイル
└─ MyGame/
├─ Binaries/ ← 実際の本体(DLL等)
└─ Content/
└─ Paks/ ← Cookしたアセットが入った .pak
MyGame.exe は、実質的にランチャーです。 単体で取り出しても動きません。 Engine フォルダと MyGame フォルダが同じ階層に揃っていて初めて起動します。
したがって 人に渡すときは Windows フォルダごとZIPにします。 相手はそれを展開して、中の .exe をダブルクリックするだけです。「exeだけ送ったら起動しないと言われた」は、この構造を知らないと必ず一度は起こります。
実践:テンプレートを渡せるexeにする
アクションでもパズルでもホラーでも、公開の直前に必ず通る道です。Third Personテンプレートを題材に、 エディタで動くプロジェクトが、別のPCで起動するZIPになるまで を通しでやります。
完成形
ZIPを展開して .exe をダブルクリックすると、Unreal Engineの入っていないPCでもキャラクターを操作できる状態になります。

再現条件
新規プロジェクトを次の構成で作ります。
| 項目 | 値 |
|---|---|
| テンプレート | Third Person |
| Project Type | Blueprint |
| Target Platform | Desktop |
| Starter Content | 含めない(容量を抑えるため) |
| プロジェクト名 | PackTest |
保存先は、 日本語やスペースを含まないパス にしてください(例: D:\UE\PackTest )。パスに日本語が入っていると、Cookの途中で失敗することがあります。
手順1:Game Default Mapを設定する
Edit > Project Settings > Project > Maps & Modes を開き、次の2つを設定します。
| 項目 | 設定する値 |
|---|---|
| Editor Startup Map | ThirdPersonMap |
| Game Default Map | ThirdPersonMap |
Third Personテンプレートでは既に入っていることが多いですが、 空欄になっていないかを必ず自分の目で確認してください。 ここを飛ばすと手順3で真っ暗な画面に出会います。
手順2:Developmentでパッケージする
- ツールバーの Platforms をクリックする
- Windows > Build Configuration > Development を選ぶ
- もう一度 Platforms を開き、 Windows > Package Project をクリックする
- 出力先フォルダを選ぶ(例:
D:\UE\Build)
エディタ右下に進捗が出ます。 初回は5〜20分程度 かかります(PCの性能とプロジェクト規模による)。完了すると右下に緑の通知が出ます。
失敗した場合は、通知の Show Output Log から詳細が見られます。 error の文字を含む行を上から探してください。
手順3:起動して確認する
出力先の Windows フォルダを開き、 PackTest.exe をダブルクリックします。
フルスクリーンでThird Personのレベルが開き、WASDでキャラクターが動き、スペースでジャンプできれば成功です。 終了は Alt + F4 です。
- 真っ暗な画面のまま何も出ない → Game Default Mapが未設定(手順1へ戻る)
- 一瞬ウィンドウが出て即座に閉じる →
%LOCALAPPDATA%\PackTest\Saved\Logs\のログを確認する - そもそもパッケージ化が完了しない → Output Logのerror行を確認。SDK関連ならVisual Studioの構成を見直す
- 音や一部のオブジェクトだけ出ない → 参照されていないアセットが落ちている(
Additional Asset Directories to Cookへ追加)
ここで わざとGame Default Mapを空にして、もう一度パッケージしてみる と理解が早まります。同じプロジェクトが、設定1つで起動不能に見える状態になります。
手順4:Shippingで作り直してZIPにする
Developmentで問題が無ければ、 Platforms > Windows > Build Configuration > Shipping に切り替えて、もう一度 Package Project を実行します。出力先は別のフォルダにしてください。
出来上がった Windows フォルダを右クリックし、そのままZIPに圧縮します。これが配布物です。Developmentの版と比べると、 容量が数十MB単位で小さくなっている はずです。
ポイントは2つです。
- 確認はDevelopment、配布はShipping: ログが出る版で先に通してから、最終版を作ります。逆順にすると、起きた不具合の原因を調べる手段がありません
- 渡すのはフォルダごと:
.exeは単独では動きません。Engineフォルダと同階層に置かれた状態を崩さずZIPにします
アセットが入らない問題の根本的な予防は、参照関係を整理しておくことです。アセット管理の記事へ続きます。
パッケージ後にしか出ない不具合
「エディタでは動くのに、exeだと動かない」は珍しくありません。エディタとパッケージ版では、環境が違うからです。
| 症状 | よくある原因 |
|---|---|
| 特定のアセットだけ出てこない | 参照をたどれず、Cookされていない |
| 起動直後に落ちる | Game Default Mapが壊れている、または存在しないレベルを指している |
| 動作が明らかに重い | エディタのPlayでは効いていた設定が違う。まずStatコマンドで計測する |
| デバッグ表示が出ない | Shippingでは正常な挙動。Developmentで確認する |
| 日本語が文字化け・表示されない | フォントアセットに該当文字が含まれていない |
調べる入口は ログ です。パッケージ版のログは、プロジェクトフォルダではなく次の場所に出ます。
%LOCALAPPDATA%\<プロジェクト名>\Saved\Logs\<プロジェクト名>.log
エクスプローラーのアドレス欄に %LOCALAPPDATA% と入力すれば開けます。Developmentでパッケージしていれば、 Print String や UE_LOG の内容もここに残ります。ログの読み方はPrint Stringの記事で扱っています。
おまけ:先に知っておくと良いこと
- ゲーム名とアイコンは別の場所で変える: ウィンドウタイトルは Project Settings > Project > Description の
Project Displayed Title、アイコンは Platforms > Windows のGame Iconで.icoを指定します。プロジェクト名をそのまま出すと、開発中の仮名が公開されてしまいます - 出力先はプロジェクトフォルダの外に: プロジェクト内に出力すると、次のCookでその出力自体を含めようとして肥大化します
- 2回目以降は速い: 初回だけCookの全量が走ります。「毎回20分かかる」と身構える必要はありません
- 配布前にテストを走らせる: 自動テストを書いてあるなら、パッケージ前に一度走らせておくと「配布してから気づく」を減らせます(→ UEの自動テスト入門)
- エンジンを上げたら、もう一度パッケージを通す: バージョンを上げた直後は、エディタで動いてもパッケージで初めて出る不具合があります。上げる手順そのものは バージョンアップの手順 を参照してください
- Full Rebuildは詰まったときの手段: 古い残骸が原因で失敗しているときは、
Full Rebuildをオンにすると通ることがあります。ただし所要時間は初回並みに戻ります - 配布先で必要な設定が増える: itch.ioやBOOTHはZIPをそのまま置けますが、Steamは専用のプラグインとアプリID設定が別途必要になります。まずはZIP配布から始めるのが確実です。Steamのオンライン機能まで使う場合の下準備は オンラインマルチプレイとセッ ション にまとめています
まとめ
- パッケージ化は Cook(変換)+ Package(まとめ) 。初回が長いのはCookのため
- Game Default Map の設定漏れが「起動したら真っ暗」の最大原因
- C++やC++プラグインを使うなら Visual Studioの「C++によるゲーム開発」 が要る
- Developmentで確認し、Shippingで配布する 。Shippingはログもコンソールも出ない
- 渡すのは
WindowsフォルダごとZIP 。.exe単体では起動しない - 参照をたどれないアセットはパッケージに入らない 。消えたら
Additional Asset Directories to Cookを疑う
いま作っているプロジェクトの Game Default Map は、何を指しているでしょうか。エディタを開いて確認するところから始めてみてください。