A brief documentation of the Unreal Package's file format.

Unreal Package File Format

Note: This is Work in Progress, and quite outdated since I've written this long ago! This was originally written for the UnrealWiki but I have decided to put it on my own website instead.

Unreal Engine 3 uses one format for all its own files, every unreal file starts with a signature(0x9E2A83C1) which is used to avoid file extension conflicts.

Package Versions

This is a list of known package versions of Unreal Engine games.

  • 69 - UT99
  • 128 - UT2004
  • 512 - UT3
  • 648 - UDK November
  • 664 - UDK December
  • 678 - UDK January
  • 706 - UDK May

History

This is the history of important version modifications.

  • 178 - CompactIndices are no longer used, instead they have become Int32's.

String

A String in unreal files start with a #index representing the string's length, this also includes the '\0' null char.

Index

NameIndex

Name indexes work the same way as #Index but since Unreal Engine 3 indexes referencing a name, have a another Int32 followed after the index.

ObjectIndex

Object indexes work the same way as #Index, however object indexes are 1 value higher to determine if the reference is NULL e.g. index 0 means the referenced object is NULL while anything higher than 0, means the opposite, the value should always be decremented by 1 if higher than 0.

Array

Arrays in unreal files start with a #index representing the array's length, followed by the data of the array's type for every element.

Header

The header is at the start of the file, the header contains the basic information like GUID and offsets.

Version Type Name Description
  DWORD Signature The signature of this file, the signature is used to verify that this is indeed a unreal file.
  WORD/WORD

Version

LicenseeVersion

The file format version this package was saved with.
>= 249 Int32 HeaderSize  
>= 269 String FolderName  
  DWORD PackageFlags This holds the packageflags such as AllowDownload and ServerSideOnly etc.
  DWORD NameCount  
  DWORD NameOffset  
  DWORD ExportCount
  DWORD ExportOffset  
  DWORD ImportCount  
  DWORD ImportOffset  
>= 415 DWORD DependsOffset  
>= 584 16 bytes Unknown  
>= 68 GUID PackageGUID  
>= 68 FArray GenerationInfoList  
>= 245 Int32 EngineVersion  
>= 277 Int32 CookerVersion  
>= 334, Cooked DWORD CompressionFlag  
>= 334, Cooked FArray CompressedChunksList  

 

See more