Tutorial  Updated

How to unpack/pack utoc+ucas in Unreal Engine 4 & 5 games

This tutorial will explain how to unpack Zen Packages (utoc + ucas + pak) that can be found sometimes in Unreal Engine 4.26 & 4.27 games and all Unreal Engine 5 games, also how to pack modified files so they are detected by game correctly.

This was tested on:
- The Dark Pictures Anthology: Little Hope 1.0.0 (Unreal Engine 4.26.2)
- Life is Strange: Double Exposure 1.0.3 (Unreal Engine 5.4.4)

UnpackingPacking


  1. Prerequisites:
    On first boot:
    1. Run FModel.exe
    2. Press OK (ignore it's Fortnite listed)
    3. If you will get window that new version is available, press "Download latest release", press Yes
    To add new game to list:
    1. Press "Directory" tab in the top left corner, and click on Selector.
    2. Click on arrow button (↑↓) below "ADD UNDETECTED GAME"
    3. Write whatever name you want, for example game title
    4. Next to "Directory" at the bottom of window press "...", go inside romfs of unpacked game and press "Choose folder"
    5. Press "+" next to ...
      1738435754098.png
    6. Change "UE Versions" to match game's engine version.
      • You can find which engine is used by game with ue4cfgdumper. Just run game, wait for main menu to appear and open ue4cfgdumper homebrew, engine version will be printed at the top of screen immediately (on screenshot below you can see it's 5.4.4, so we are choosing in FModel GAME_UE5_4).
        2025020222051100.jpg
    7. Now press OK, tool will be restarted.
    8. Go to Settings, change "Output directory" where files will be unpacked, change "Texture Platform" to "Nintendo Switch", press OK, tool will be restarted.
    9. To change to game that was already added, again go to Directory->Selector and choose game
    After loading game:
    1. It should list now all your pak/ucas/utoc your folder stores. Press "Load" to list files inside them.
      1738435961202.png1738435995944.png
    2. To unpack any folder click right on folder and choose "Export Folder Packages Raw Data (.uasset)", or to unpack any file click right on file and choose "Export Raw Data (.uasset)".
      Other ways to export file won't be able to be packed, but they may output file in human readable format helpful for understanding raw data.
      Files will be unpacked to "Export" folder that is inside path listed in Settings as "Output Directory"
      1738436415144.png



  2. Prerequisites:
    • Windows 10 or 11
    • UnrealReZen - https://github.com/rm-NoobInCoding/UnrealReZen/releases
    • Unpacked WHOLE romfs of game (I am personally using DBI)
    • Game's engine version as detected by ue4cfgdumper
    • Download THIS FILE and save it in the same folder where you unpacked UnrealReZen, so "UnrealReZen.exe" and "DropHere.cmd" are in the same folder

    Tool is not supporting packing files that are not originally inside utoc/ucas, so if you will try to pack f.e. ini files, it will result in crash. This was fixed in source code, but it's not a part of latest release yet as of 05 Feb 2025.
    Use tools for packing .pak files like u4pak. You can then pair it with created ucas/utoc since .pak is not in any way linked to those files, UnrealReZen creates just empty .pak file because without it ucas/utoc are not detected.

    As an example I will pack file "en-US.uasset" that is available in "SMG024\Content\Locale"
    1. Create new folder which only purpose will be to store modified files, name it f.e. "ModifiedFiles". Those files must be stored in the same folders as they were extracted by FModel, so if "en-US.uasset" was in "Export\SMG024\Content\Locale", it must be in "ModifiedFiles\SMG024\Content\Locale"
    2. Go to folder where you have unpacked UnrealReZen
    3. Drag&Drop our "ModifiedFiles" folder on "DropHere.cmd"
    4. New window will popup with "Drop here romfs folder and press ENTER:", do it as requested.
      1738441352268.png
    5. Next you will be asked about engine version, do it as requested
      1738446882254.png
    6. In UnrealReZen folder you will get 3 new files: zzz_newpak_p.pak, zzz_newpak_p.utoc, zzz_newpak_p.ucas
    7. You can rename those files, but there are 3 requirements that you must follow:
      • Name must be in alphanumerical order AFTER original .pak/.utoc/.ucas files, so adding "zzz_" at the beginning of name is the most universal way to pass this.
      • Some games may require from you to have "_p" at the end of filename otherwise they won't override original files.
      • .pak, .utoc and .ucas MUST have the same main name



Credits to NoobInCoding and 4sval for making both tools.
 
Last edited by masagrator,
I spent considerable time figuring out the correct way to make this work, so I hope this guide helps you avoid the same frustrations.
What This Does:

This process creates Zen archive patches (.utoc/.ucas) for Unreal Engine games that use the newer Zen loading system (UE4.26+, UE5+). It lets you modify existing game files without repacking entire archives.
Requirements:
Windows 10/11
UnrealReZen from GitHub
Unpacked game files (romfs/Content/Paks)
Modified files with same folder structure as original

Key Points Learned:
Structure Matters: Modified files must maintain the exact folder hierarchy as the original game files
Path Selection: The game directory should point to where original .utoc/.ucas files are located
Engine Version: Critical for compatibility - use ue4cfgdumper to determine
File Priority: Patch files must load after originals (use naming conventions like zzz_ prefix)

Quick Process:
Prepare ModifiedFiles folder with your changes
Drag it onto the script below
Follow prompts for game path and engine version
Optional: Configure compression, AES key, or mount point if needed
Copy generated files to game's Paks folder

DropHere.cmd
Code:
@echo off
setlocal EnableDelayedExpansion
title UnrealReZen Packer (Fixed)
color 0A

if not exist "%~dp0UnrealReZen.exe" (
    color 0C
    echo [ERROR] UnrealReZen.exe not found in current folder!
    echo Please put this script next to UnrealReZen.exe.
    pause
    exit /b
)

set "CONTENT_PATH=%~1"

if "%CONTENT_PATH%"=="" (
    color 0E
    echo ==========================================
    echo      UNREAL REZEN PACKING ASSISTANT
    echo ==========================================
    echo.
    echo Usage:
    echo Drag and drop your "ModifiedFiles" folder onto this icon.
    echo.
    pause
    exit /b
)

set "CONTENT_PATH=%CONTENT_PATH:"=%"

if not exist "%CONTENT_PATH%" (
    echo [ERROR] Folder does not exist: "%CONTENT_PATH%"
    pause
    exit /b
)

echo [SOURCE]: "%CONTENT_PATH%"
echo.

:AskGameDir
echo [INPUT] Enter the path to the game's Paks folder.
echo Example: C:\Games\Game\Content\Paks
echo (You can drag and drop the Paks folder here)
echo.
set /p "GAME_DIR=Path: "
set "GAME_DIR=%GAME_DIR:"=%"

if not exist "%GAME_DIR%" (
    echo [ERROR] Path not found. Try again.
    goto AskGameDir
)
echo [GAME DIR]: "%GAME_DIR%"
echo.

:AskEngine
echo [INPUT] Enter Unreal Engine Version (e.g. GAME_UE5_2)
echo Press Enter to use default: GAME_UE5_2
set "ENGINE_VER=GAME_UE5_2"
set /p "ENGINE_VER=Version: "
echo [VERSION]: %ENGINE_VER%
echo.

echo [INPUT] Enter AES Key (starting with 0x...)
echo Press Enter if not encrypted.
set "AES_KEY="
set /p "AES_KEY=Key: "

echo.
echo [INPUT] Enter output filename (without extension).
echo Example: zzz_Patch_P
echo Press Enter to use default: zzz_Patch_P
set "OUT_NAME=zzz_Patch_P"
set /p "OUT_NAME=Name: "

set "OUTPUT_FULL=%GAME_DIR%\%OUT_NAME%.utoc"

cls
echo ==========================================
echo           STARTING PACKING...
echo ==========================================
echo Source:  "%CONTENT_PATH%"
echo Target:  "%OUTPUT_FULL%"
echo Engine:  %ENGINE_VER%
echo.

set "CMD_LINE="%~dp0UnrealReZen.exe" --content-path "%CONTENT_PATH%" --game-dir "%GAME_DIR%" --output-path "%OUTPUT_FULL%" --engine-version %ENGINE_VER% --compression-format Oodle --mount-point "../../../""

if not "%AES_KEY%"=="" (
    set "CMD_LINE=!CMD_LINE! --aes-key %AES_KEY%"
)

echo Running command:
echo !CMD_LINE!
echo.

!CMD_LINE!

echo.
if exist "%OUTPUT_FULL%" (
    color 0A
    echo [SUCCESS] Patch created successfully!
    echo Check folder: "%GAME_DIR%"
) else (
    color 0C
    echo [ERROR] Failed to create patch. Check the error message above.
)

pause
 
Last edited by PromiX,
Why are you forcing zlib when it's inferior to Oodle which is a default compression algorithm for Zen packages?
 
  • Like
Reactions: PromiX
How can I "uncook" the files exported by FModel so I can edit them?

In other words: How can I edit .uasset files?

Edit: I've asked Gemini

UAssetGUI: This is the most popular tool for low-level editing. It allows you to open a .uasset, view its internal data tree, and change values (like health stats, movement speed, or item references)
So I've downloaded UAssetGUI, which of course, threw me an error, because why should changing a simple singular texture be easy. So it told me to go to ZenTools-UE4 which I did, and I've followed the instructions.

Anyway, long story short, the example provided there is lacking and the output is basically empty.

Needless to say, I'm livid. F-ck that.
 
Last edited by lextra,
How can I "uncook" the files exported by FModel so I can edit them?
You can't, the same way you can't uncook a dish. Some informations that make it human readable are lost forever.

In other words: How can I edit .uasset files?
Uasset is a format that adjusts to data defined by devs. There are not that many common stuff between them, you need to figure out it yourself on game by game basis. FModel supports parsing only some common informations and some unique informations for specific games.
 
Uasset is a format that adjusts to data defined by devs. There are not that many common stuff between them, you need to figure out it yourself on game by game basis. FModel supports parsing only some common informations and some unique informations for specific games.
The only type of game modding I'll be doing from now on is simple config tweaks IF the game supports it (.pak only)
I won't be wasting any more time on this needlessly obscured garbage.

Thanks for the quick response though. I appreciate it.
 
this tool have issue with some games in unreal engnine 5 , some game crashes and same games meshes skeleton being corrupted and appear as t-pose
Post automatically merged:

this tool have issue with some games in unreal engnine 5 , some game crashes and same games meshes skeleton being corrupted and appear as t-pose
 

Site & Scene News

New Hot Discussed User Submitted