UE3 Property Types - thethiny/NRS-Asset-Manager GitHub Wiki

UE3 Property Types

Both games serialize object data as UE3 properties. Each property has a name, type, size, and data.

Property Header Format

name_index (FName: u32 index + u32 suffix)   — Name table lookup
type_index (FName: u32 index + u32 suffix)   — Property type name
size (u32)                                    — Data size in bytes
array_index (u32)                             — Array element index (IJ2 only, MK11 packs into u64 size)
[type-specific headers]                       — e.g., struct_type for StructProperty
data (size bytes)                             — Property value

Supported Types

Type Size Description
StrProperty 4 + N Length-prefixed ASCII string
NameProperty 8 FName (u64 name table index)
IntProperty variable Signed integer (size from header)
DWordProperty variable Unsigned integer
QWordProperty variable Unsigned 64-bit integer
FloatProperty 4 IEEE 32-bit float
BoolProperty 4 u32 (0 or 1)
EnumProperty variable Integer mapped to enum name
ObjectProperty variable Signed object reference
ByteProperty variable Unsigned byte value
StructProperty variable Nested property container (recursive)
ArrayProperty variable Count + elements (type inferred from key name)
MapProperty variable Count + key-value pairs

IJ2-Specific Types

Type Size Description
WeakUObjectHandleProperty 16 GUID weak object reference

Known Struct Types (StructPropertyMap)

These struct types have fixed binary layouts instead of nested properties:

Struct Size Fields
FGuid 16 A(u32), B(u16), C(u16), D(u8[8])
FVector2D 8 X(f32), Y(f32)
FLinearColor 16 R(f32), G(f32), B(f32), A(f32)

Array Element Type Inference

Since UE3 doesn't serialize array element types, they must be inferred from the property name:

String Arrays (TArray<FString>)

mAssets, mCompletionUnlock, mCompletionUnlockAfterComplete, mItemHashes, TextureNames

Name Arrays (TArray<FName>)

BaseLayerNames

Int Arrays (TArray<int>)

WorstCaseItems, Meshes

Struct Arrays (default)

All other array keys — elements parsed as StructProperty until None sentinel.

Map Key Type Inference

String Key Maps (TMap<FString, Struct>)

mIntroTracks, mPresets

Name Key Maps (TMap<FName, Struct>)

mColorPaletteTable

Struct Key Maps (TMap<Struct, Struct>)

mCAPInfoTable, mHellboyHeadIndexTable, MD5HashToItemMap

⚠️ **GitHub.com Fallback** ⚠️