Packaging in UE5: Turning Your Game into Something Playable on Windows

Created: 2026-07-20Last updated: 2026-09-05

How to package a UE5 game for Windows. Explains the startup map and included maps, Development versus Shipping, distributing the whole folder, and reading logs when it fails.

The character moves in editor Play and can jump. You want a friend to try it, but their PC does not have Unreal Engine. This is where you need packaging — gathering the game into a distributable form.

For Windows, it outputs a .exe for launching plus the data the game needs. That output is a separate product from the project open in the editor, so the work includes launching the exported game and confirming it .

This article uses the Third Person template to build a package that runs locally, then ZIPs the whole folder. Doing one pass while your prototype is still small saves preparation right before distribution.

Exporting the game built in the editor for Windows, handing over the exe and required data as a whole folder

What You'll Learn

  • The roles of Build, Cook, Stage, and Package inside packaging
  • Setting the map that launches and the maps included in the game
  • Verifying in Development and producing Shipping
  • The folder you distribute, and how to investigate failures

Sponsored

What happens during packaging?

You choose "Package Project" once in the menu, but several stages run inside.

Build converts code, Cook converts assets for the target environment, Stage gathers them, and Package bundles them for distribution
StageRole
BuildConverts the needed code into a program the target OS can run
CookConverts maps, images, audio, and so on into data usable in the target environment
StageGathers the executable and converted data into the output location
PackageBundles the gathered files into something distributable

Converting code into a runnable form is also called compiling . Cook is also "converting", but on the asset side. Windows and phones handle images and rendering differently, for instance, so it adapts to the environment you use.

The first run takes time for code and shader preparation, cooking, and so on. Some data can be reused afterwards, but the time depends on what changed and on your settings. Do not decide it failed from the wait alone; watch progress and the log.

Tools needed on the development side

If you need to compile C++ code or plugins on Windows, you need a supported compiler and the Windows SDK . An SDK is the set of tools for building programs for that OS.

Using Visual Studio, add "Game development with C++" and the required SDK in the Installer. Supported versions differ by UE version, so check the row for your UE in Epic's official table.

Blueprint templates on Launcher UE can have setups that proceed without an extra C++ development environment. Plugins vary too, depending on whether they need compiling or ship prebuilt. "Adding a plugin always requires Visual Studio" is not a fixed rule.

The map that launches and the maps you include

A packaged build does not look at the level you last had open in the editor. Settings decide which map opens first.

Check Game Default Map

Open "Edit → Project Settings → Maps & Modes".

ItemWhen it applies
Editor Startup MapThe map opened when the editor launches
Game Default MapThe map opened by default when the game launches

Point Game Default Map at your title level to start there, or at the first stage to drop players straight in. Templates sometimes come preset, but confirm it is what you want to launch.

Leaving it unset, or pointing it at an unintended level, is one cause of a black screen. Even with the right map, though, the visuals will not match your expectations without a camera or player. If fixing the setting changes nothing, move to the troubleshooting section later on.

Include the maps you need

Next find "List of maps to include in a packaged build" under "Project Settings → Packaging" and register the maps you use. Using title, stage, and results levels means including all three (see the level transition article).

Game Default Map specifies where it opens first ; the map list specifies what to include in the game . Separating the two makes "the first screen appeared but I cannot reach the next stage" easier to investigate. Custom build pipelines may use different map specifications, so do the final check with the exported game.

Setting Game Default Map to L_Title on launch and including L_Title, L_Stage01, and L_Result in the packaged maps

Asset "references" matter for inclusion too

A reference is a connection such as "this map uses this character". Cook gathers the assets it needs from maps and code, but additional specifications and exclusion settings matter too. "Only what is reachable from the startup map" is not a fixed rule.

Watch out especially for logic that builds a string at runtime to decide an asset's location. If the usage is unknown at cook time, the needed data may not be included. Simply choosing an asset for a Blueprint variable does not erase the reference.

To include a group of assets deliberately, specify folders in "Additional Asset Directories to Cook". Confirm why something is missing, then add the range you need. Starting with "Cook everything" tends to pull in unnecessary data as well (see organizing assets and references).

Sponsored

Choosing between Development and Shipping

Build Configuration decides which optimizations and investigation features go into the program. Start by alternating between these two.

SettingSuited stageDifference when verifying
DevelopmentVerifying during developmentEasy to investigate with logs, the console, and debug displays
ShippingFinal distributionEnables optimizations and usually removes the console and many investigation features

The console is a field for entering commands while the game runs. Print String and debug lines help during development, but what you show players in Shipping is built with UMG and the like (see the UMG introduction).

Investigating with logs and debug displays in Development, then confirming the same actions in Shipping before distributing

You can design separate Shipping log output, but with standard settings you cannot expect the same clues as Development. Investigate problems in Development first, then produce Shipping and confirm the same actions in the build you distribute .

Differences in size and speed depend on the project and settings. Do not judge success by "it got N MB smaller".

Hands-On: export the template for Windows

We make a Windows package from the Third Person template where the character walks and jumps. The project is named PackTest here.

Setting the startup map, exporting in Development and checking controls, then confirming Shipping before ZIPping

1. Prepare a practice level

  1. Create a Blueprint project with "Games → Third Person". When a Variant is offered, use the basic "None"; extra Starter Content is unnecessary.
  2. Play the template level and confirm movement and jumping.
  3. Stop Play and save under a new name as Content/Maps/L_PackPractice with "File → Save Current Level As". Carry over the template's floor, Player Start, and GameMode settings.
  4. Place one marker Cube near the player's front and "Save All".

Saving somewhere short and clear such as D:\UE\PackTest also makes paths in the log easier to follow.

2. Set the map and build configuration

Configure the following in "Project Settings".

LocationItemValue here
Maps & ModesGame Default MapL_PackPractice
Maps & ModesEditor Startup MapL_PackPractice (convenient during practice)
PackagingList of maps to include in a packaged buildAdd L_PackPractice
PackagingBuild ConfigurationDevelopment
PackagingInclude Prerequisites InstallerOn. Confirm what actually ships when distributing

Prerequisites are the shared components needed to run the game. They differ from development-side Visual Studio; the player's PC may need runtime components too.

3. Run Package Project

  1. Open "Platforms → Windows" in the toolbar.
  2. In the build configuration field, confirm "Use Project Setting (Development)" or an explicit "Development" is selected.
  3. Choose "Package Project".
  4. Set an output location outside the project, such as D:\UEBuilds\PackTest\Development .

Item names and ordering shift a little between UE versions. Note whether it uses the project setting or the menu is overriding the configuration.

The notification at bottom right shows progress. On failure, open "Show Output Log". Do not treat it as finished until it completes, even if an exe is visible in the output location.

4. Play outside the editor

Open the finished output location and launch PackTest.exe inside the Windows folder or similar. Folder names can change with the configuration.

  • L_PackPractice opens and the Cube you placed is visible.
  • Directing input at the game window lets you move with WASD and jump with Space.
  • Alt + F4 exits.

Confirming those three means you have a game running separately from editor Play. Windowed versus fullscreen depends on settings, so do not judge success from the display mode.

As a small experiment, move the Cube elsewhere in the editor, save, and launch the old exe again. Until you re-export, the distributed Cube stays where it was. Package again with the same Development settings and it moves to the new position, confirming that "saving the project" and "updating the distributed build" are separate tasks.

5. Launch and confirm Shipping too

Change Build Configuration to Shipping and confirm Shipping is selected in the Platforms menu too. This time package to a different output location from Development, such as D:\UEBuilds\PackTest\Shipping .

Confirm the Cube, movement, jumping, and exiting in the Shipping exe as well. For your own game, also run a full loop of starting from the title, reaching results, and retrying. Do not confuse "Print String does not appear" with "the game logic is not running".

Sponsored

You distribute the whole folder

Standard Windows output looks roughly like this. Actual folder names and file counts vary with settings.

ZIPping PackTest.exe, Engine, and the PackTest folder inside the Windows folder together. The Paks file format varies with settings
Windows/
├─ PackTest.exe             for launching
├─ Engine/                 engine-side runtime files
└─ PackTest/
   ├─ Binaries/            the game's executables and so on
   └─ Content/
      └─ Paks/             .pak, .utoc, .ucas, and so on

A .pak is a container that bundles data. Setups using "Use Io Store" line up .utoc and .ucas too. Rather than memorizing what each does, what matters first is handling the output as a whole without breaking it up .

Pulling out just the launcher exe leaves the needed data behind. ZIP the entire Windows folder and have the recipient extract all of it before opening the exe. Add a short instruction so they do not run the exe directly from inside the ZIP.

Try it on a PC without UE

Playing the game does not need the UE editor, but it does need supported Windows, GPU, and runtime components. Your development PC may have them while the other person's does not.

After enabling "Include Prerequisites Installer", confirm the installer for the required components is actually in the output. If the other side shows a message about something missing, install it from the bundled installer or another source depending on the message. Checking the setting does not complete the installation on their machine.

Finally, extract the ZIP into another folder and launch it, and if possible try another PC without UE. Adding a short note about "which exe to launch" and "how to move, jump, and exit" keeps first-time recipients from getting lost.

Where to look when it fails

First separate whether the export failed or the exported game misbehaves . You read different logs.

Investigating export failures in Packaging Results and the Output Log, and runtime problems in the Development build's runtime log

Packaging stopped partway

  1. Check the failing items under "Message Log → Packaging Results".
  2. Open the detail from "Show Output Log" or similar and read around the error.
  3. To read back later, open the original project's Saved/Logs/ or the build log the Output Log points to.

A trailing Unknown Error is a summary meaning "the process failed"; it is not itself the cause. Look before it for SDK names, Blueprint names, or paths to missing files. Search using those specific names plus your UE version.

Clue in the logWhat to check first
SDK or compiler not foundDevelopment tools and SDK matching your UE
Blueprint compile errorOpen the named Blueprint, compile, and fix the error site
Asset not foundReferences after moving or deleting, the specified path, required plugins
Writing or saving a file failedFree space, the output location, permissions, the path in the log

Packaging completed but the game does not play

Confirm reproduction in the Development build first.

SymptomWhat to check first
Black screenGame Default Map and inclusion. If correct, camera, player spawning, lighting
Visible but not controllableWhether input reaches the game, GameMode and input settings
Cannot advance to another levelThe destination specification and whether the map is included
Some sounds or objects missingLoad errors, references and Cook settings. Also volume and display conditions
Exits immediately after launchThe runtime log, messages about missing components, the target PC's supported environment
Only Print String is missingWhether it is Shipping. Production UI display is built separately

Distinguish the runtime log from the source project's editor log. On Windows, check PackTest/Saved/Logs/ inside the package or %LOCALAPPDATA%\PackTest\Saved\Logs\ . The output location varies with build configuration and how you launch it.

If you cannot find it, open PowerShell in the folder containing the Development exe and launch it while specifying where to save.

.\PackTest.exe -log "-ABSLOG=D:\UEBuilds\PackTest\PackTest-run.log"

Create the folder first and replace it with somewhere you can write. This specifies the runtime log; it does not enable logging features disabled in Shipping. If it stops before logging is ready, no file may appear (see using Print String and logs).

Bonus: getting ready before distribution

Name, icon, and how to exit

The name shown on the window is "Project Displayed Title" under "Project Settings → Description", and the Windows icon is "Game Icon" under "Platforms → Windows". This practice ends with Alt+F4, but a product also needs an exit button and menu.

Output location and rebuild settings

Placing the project and the distributed build in separate folders keeps you from mixing up source data with the finished product. It also avoids accidentally adding the build to your development history (see the Git management article).

"Full Rebuild" redoes the code build from scratch. It is not an all-purpose repair button that clears cooked data or every file in the output location. When something fails, investigate the stage and cause in the log first, then choose what to rebuild.

A full loop, and checking on the destination

Try not just launching but exiting, relaunching, and retrying. If you have automated tests, run them before packaging too and combine them with hands-on checks of the exported game (see the automated testing introduction).

Run through packaging after updating UE or plugins as well. Update procedures are covered in the version upgrade article. Publishing to a store also needs that destination's own registration and upload steps.

Summary

Decide the map that opens first, include the maps and assets you need, and export for Windows. Investigate in Development, confirm the controls in Shipping too, then ZIP the entire output folder.

Once the character moves outside the editor, next confirm it in the recipient's environment. Connecting "I built it on my PC" to "they can play it" completes the first step of distribution.

Further Reading

Unreal Engine Notes in this section98