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
- Unreal Package file format described by Epic Games
- Unreal Package file format described by Antonio Cordero Balcázar