Skip to content

Entities and groups

AnvilData modelApplies toRRSWS

An Entity combines placement, components, bounds, layer actions and optional reset data. EntityGroup adds a member list to that same prefix. The structural census reads all 615,110 Entity and 56,837 EntityGroup records when bodies without length rules are retained between recognized headers. This measures framing coverage, not complete component interpretation. Observed

The common prefix is 01 03. In 830 bodies, 01 00 introduces an inline Hierarchy (u64 + type 0x788BAA0D + 64 bytes) and HierarchyHandle (u64 + type 0x709FB9D4 + u32 + 9 bytes) before the matrix. Observed

Entity body with null HierarchyvarRR100% known

Little-endian. Mechanical framing is proven on the strict six-archive profile: 585,234 Entity bodies consumed exactly, 29,876 refused; 38,825 EntityGroup bodies consumed exactly, 18,012 refused. Metadata-derived meanings and newer link variants retain their separate confidence.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x01u8 = 01tagProven
0x11u8 = 03tagProven
0x264matrix4placementObservedcolumn-major; translation at 50..61; last row 0 0 0 1
0x424u32component count nProven
0x46CbytescomponentsProvenn × the Component box, in order
70+C43bytesrunProventhe Run box
113+C4u32FakeCellIndexObservedEntity.FakeCellIndex (registry u32): 0xFFFFFFFF on 18,913 of 21,000, a cell index on 2,087
117+C4f32ScaleObserveduniform (registry Scale)
121+C40bytesboundsObservedBoundingVolume, relative to the translation
161+C8u64 = 0EntityDescriptor idProven
169+C4u32 = 0x60121A9EEntityDescriptor typeProven
173+C4u32DescriptorTypeObservedEntityDescriptor.DescriptorType (enum, table not found): 0 on 20,995 of 21,000 sampled, 1 on 3, 3 on 1
177+C4u32SubDescriptorTypeObservedEntityDescriptor.SubDescriptorType (u32): 0 on 20,999, 3 on 1
181+C4u32NetworkTypeObservedEntityDescriptor.NetworkType (enum, table not found): 0 on 15,214, 1 on 5,781, 2 on 1
185+C1u8IsPickableByPlayerObservedEntityDescriptor.IsPickableByPlayer (bool): 0 on all sampled
186+C8u64 = 0DataLayerFilter idProven
194+C4u32 = 0xDB1D406EDataLayerFilter typeProven
198+C4u32action count kProven
202+C25·kbytesDataLayerActionsProventhe DataLayerAction box: the event or season layers it belongs to
202+C+25k4u32UIVisualsDisplayOrder link count MObservedM nine-byte links follow; offsets below assume M = 0.
206+C+25kvarbytestailObservedResetData pointer: 03 null, or inline GameStateData.

The count after DataLayer actions counts links: tag 00 or 01 plus u64. Nonzero counts shift ResetData beyond the zero-link offsets above. Observed

Component (×n)13 + body bytesRR100% known

Little-endian. Mechanical framing is proven on the strict six-archive profile: 585,234 Entity bodies consumed exactly, 29,876 refused; 38,825 EntityGroup bodies consumed exactly, 18,012 refused. Metadata-derived meanings and newer link variants retain their separate confidence.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x01u8 = 04 or 00tagProven
0x18u64idProven
0x94u32typeProven
0xDvarbytesbodyProvenType-specific grammar; no universal stored component length.

Component headers normally use 04, with 00 on some UI and embedded objects. The registry identifies 291 Component-derived classes. Ids need not be consecutive and can use high-bit encodings; proximity to the Entity id is not a valid boundary rule. Component ids are 41-bit numbers, a few stored as bit63 | number << 20 | small index, and ids within one Entity differ by up to about 1.8e12. Because 00-tagged embedded objects inside payloads look like headers, counts and the first component’s tag are needed to tell them apart. Observed

135 component types comprising 105,315 instances remain opaque in the full structural census. Header-delimited coverage does not establish a sequential length rule for them. Observed

EntityGroup bodyvariableRR

Little-endian. Mechanical framing is proven on the strict six-archive profile: 585,234 Entity bodies consumed exactly, 29,876 refused; 38,825 EntityGroup bodies consumed exactly, 18,012 refused. Metadata-derived meanings and newer link variants retain their separate confidence.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x0EbytesEntity prefixProven
E4u32member count CProven
E+410CreferencesmembersProven
E+4+10C4u32link count MObserved
E+8+10C9Mlinksmember linksObserved
E+8+10C+9M4u32GroupOptimizationStateObserved0 NotOptimized, 1 OptimizedAndEditable, 2 OptimizedAndSealed.

In the USNAT group census, 16,743 groups own Visuals; 1,485 groups list 3,847 members. Members also occur in checked cell listings, so membership alone does not establish another placement or a parent transform. A second counted link list can follow the members before the final group-optimization word; the early zero-link formula 12 + 10 × members is not universal. Observed

See visual instances, flags, component grammars and DataLayers.

What do opaque and nested components contribute?

Retaining their bytes does not establish their behavior. An embedded Entity header alone does not prove an independently rendered placement. Unknown

The strict sequential profile consumes exactly 585,234 Entity and 38,825 EntityGroup bodies from the complete six-archive census, refusing 29,876 and 18,012 respectively. That proves the accepted framing only. The later header-delimited opaque-body census above does not establish those missing component grammars. Proven · accepted strict profile

only in SWS

A level cell holds Entity objects that carry a world matrix, a list of components and a bounding volume. The layout has no layer actions and no 64-bit ids; it follows the Assassin’s Creed II generation. Inferred · from the AC2-profile reader fitting its data

Shaun White Entity bodyvariableSWS100% known

Little-endian. Sequential decoding reaches the last byte for 3,316 of 6,861 entities of level 01 and 15,889 of 31,577 in all forges; the flag bytes through the tail verify on 6,758 of level 01.

ProvenObservedSourcedInferredUnknownNot described
OffsetSizeTypeFieldConfidenceNotes
0x01u8managedObserved
0x14u32idObserved
0x54u32 = 0x0984415EclassProvenCRC-32 of Entity
0x964f32[16]GlobalMatrixObserved
0x49varpointerHierarchyObservednull (tag 3) on 6,857 of the 6,861 entities of level 01, inline on 4
73+hvaru32 + objectsComponentsObservedcount, then for each a pointer tag 0 and the inline object
var34u8[34]flag bytesUnknownnamed only by position
varvarBoundingVolumeboundsObservedMin v3, Max v3, enum; world axes, relative to the origin
var12bytesEntityDescriptorUnknown
var2u8[2] = 03 03null pointersObserved
varvarGameStateDataResetDataObservedu32, then two byte arrays
var16bytestailUnknown

The matrix is applied as world = v_local * M, with the 16 f32 of M stored as rows 0 to 2 for the local X, Y and Z axes in world space and row 3 for the origin. Z is up. For 178 entities turned 90 degrees, the entity’s bounding volume equals the box of its mesh bounds transformed this way to within 0.5 m, where the transposed reading fits none. Observed · 178 rotated entities of level 01

The translations of the entities of one cell cluster in 32 m squares. Observed

Coverage is partial: components of classes with no known layout stop sequential decoding of the other 3,545 entities of level 01. The classes that stop the most are 0x5CDCA222 (661 entities; the skate guidance system), 0xE7E3A114 (524), 0x0873AE87 (300), 0x19D48AF6 (255) and 0xA0933257 (246). Observed · level 01

Which components remain without a layout?

Components of the classes 0xE7E3A114, 0x0873AE87, 0x19D48AF6, 0xA0933257, 0x089D59CA, 0x734E7ADA and 0x51734E21, and classes such as Scene, Trajectory and TriggerComponent, do not decode field by field. The 34 flag bytes, the 12-byte descriptor and the 16-byte tail of the Entity are not interpreted. Unknown