Import Custom Assets with an Unreal Pak

This guide explains how to package custom Unreal Engine assets into a standard .pak file and make them available to a packaged binary. The workflow uses Unreal Engine’s normal PAK and Asset Manager features and follows the general approach described by SimWorld.

Quick Start

  1. Place custom assets in a UE project, for example YourProject/Content/MyAssets/.

  2. Create a PAK file from those assets.

  3. Copy the PAK into the packaged application’s Content/Paks/ directory.

  4. Start the packaged binary. Applications that support runtime PAK discovery can mount and scan the assets during startup.

Prerequisites

  • Unreal Engine 5.6 or a compatible engine version.

  • A packaged binary whose runtime supports loading external PAK files.

  • Basic familiarity with Unreal Engine asset creation and packaging.

Step 1. Create a PAK File

Use Unreal Engine’s standard PAK loading workflow. See the official Epic tutorial. The general process is:

  1. Create a normal Unreal Engine project.

  2. Import your custom assets.

  3. Cook the assets.

  4. Package them into a .pak file.

Users only need to package their assets into a PAK file and place it in the packaged binary’s PAK directory. The runtime-specific mount and scan behavior depends on the application.

1. Organize Assets

Place all assets that should be exported into a PAK under a dedicated folder.

Example:

Content/
└── MyAssets/
    ├── Meshes/
    ├── Materials/
    ├── Textures/
    └── Characters/

2. Create a Primary Asset Label

In the Content Browser, create a Primary Asset Label:

Right Click
 └── Miscellaneous
      └── Data Asset
           └── PrimaryAssetLabel
Creating a Primary Asset Label from the Content Browser

Create a new asset:

Creating the Primary Asset Label asset

Configure the asset:

Configuring the Primary Asset Label

Choose a unique positive ChunkId greater than zero for each PAK. Chunk IDs must be distinct; ID 0 is reserved.

Add all assets intended for packaging to the Data Asset’s Explicit Asset and Explicit Blueprint fields. Conventional UAsset resources such as levels and meshes go into Explicit Asset. Character blueprints and similar assets go into Explicit Blueprint.

Adding assets to Explicit Asset and Explicit Blueprint

3. Configure Packaging

Open:

Edit
 └── Project Settings
      └── Packaging
Opening Project Settings Packaging

In the Packaging panel, enable:

  • Use Pak File

  • Generate Chunks

Disable:

  • Use Io Store

If Use Io Store is enabled, disable it for this PAK workflow.

Packaging settings for generating PAK chunks

4. Configure Asset Manager

Open:

Edit
 └── Project Settings
      └── Asset Manager

In the Asset Manager panel, disable PrimaryAssetLabel - Is Editor Only.

Asset Manager PrimaryAssetLabel setting

5. Package the Project

Package the project using the normal workflow:

Platforms
 └── Windows
      └── Package Project
Packaging the Windows project

Choose an output directory:

Choosing the package output directory

Wait for packaging to complete. Unreal Editor will report completion:

Unreal Editor packaging completion notification

6. Locate the Generated PAK

After packaging, locate the generated PAK under:

OutputPath/
└── Windows/
    └── YourProject/
        └── Content/
            └── Paks/

Example output:

Generated PAK file in the packaged output

Step 2. Import into a Packaged Binary

Copy the generated .pak file into the packaged binary’s PAK directory:

PackagedBinary/
└── Windows/
    └── YourApplication/
        └── Content/
            └── Paks/
                └── pakchunk111-Windows.pak

Multiple PAK files can be placed in this directory simultaneously.

Copying a generated PAK into the packaged binary

Start the packaged binary normally. If its runtime implements automatic PAK discovery, it will search Content/Paks/, mount discovered PAK files, and scan their assets during startup.

UnrealZoo Optional API

Note

The following TCP commands and C++ helpers are optional UnrealZoo extensions. They are not required by the standard Unreal PAK workflow and are not included in the open-source UnrealCV build.

Mount a Pak

vset /pak/mount D:/Paks/Assets_Win64.pak 0
Mounted: D:/Paks/Assets_Win64.pak (Order: 0)

Optional C++ helper:

const bool bMounted = UPakMountBPLib::MountPakFile(
    TEXT("D:/Paks/Assets_Win64.pak"), 0);

Inspect, Scan, and Load

vget /pak/mounted
vget /pak/files 1
vget /pak/assets_in_pak 1
vset /pak/scan /Game/Assets 1
vget /pak/assets /Game/Assets
vget /pak/load /Game/Assets/BP_Chair.BP_Chair

Optional C++ helpers include ScanMountedAssets, GetAllAssetsInPath, and LoadAssetFromPak.

Unmount a Pak

vset /pak/unmount 1

See Also