Deserializing Unreal Packages - Tables
November 06, 2012In this article I will be explaining the structure of Tables used in Unreal package files such as .upk, and .u files. The structures explained here are only for the Unreal Engine 3. You can also read the previous article.
To understand this article you'll first have to read the previous article on Data Structures.
Names Table
The names table is a UArray consisting of table items that describe a name and its flags.
The structure is as follows:
Name | Type |
Name | String |
Flags | 64Bit Unsigned Integer |
Exports Table
The export table consists of all objects that resist within the package. Each table item will describe the position and size of an object.
The structure is as follows:
Name | Type |
ClassObject | ObjectIndex |
SuperObject | ObjectIndex |
OuterObject | ObjectIndex |
ObjectName | NameIndex |
ArchetypeObject | ObjectIndex |
ObjectFlags | 64Bit Unsigned Integer |
SerialSize | 32Bit Integer |
SerialOffset | 32Bit Integer |
Components | Map of ComponentName(NameIndex) and ComponentObject(ObjectIndex) |
ExportFlags | 32Bit Unsigned Integer |
NetObjects | Array of NetObject(ObjectIndex) |
PackageGUID | 16 Bytes |
PackageFlags | 32Bit Integer |
Imports Table
The imports table describes all objects necessary for the package to function properly. Each table item will describe which package, class, and object the package is dependant on.
The structure is as follows:
Name | Type |
PackageName | NameIndex |
ClassName | NameIndex |
OuterObject | ObjectIndex |
ObjectName | NameIndex |
Generations Table
The generations table describes all the generations of the package. Each time a developer performs the ConformCommandlet on two packages a new generation will be added to the table. The generations table is used to make packages network-compatible.
The structure is as follows:
Name | Type |
ExportsCount | 32Bit Integer |
NamesCount | 32Bit Integer |
NetObjectsCount | 32Bit Integer |
Other Tables
Depends Table, Chunks Table, and the Generations Table are unavailable.