Description

1. Non-Deterministic LastAuthority Serialization

LastAuthority is assigned in USplineComponent::Serialize. Its value depends on the order in which the object and its archetype are serialized, leading to non-deterministic results. When the actor instance is serialized after its archetype. The archetype’s LastAuthority is set to 2. The instance also sets LastAuthority to 2. The unversioned serialization path treats this as “matching archetype” and does not explicitly serialize the value.

In a -diffonly cook, when the serialization order differs, the actor instance sets LastAuthority to 2.The archetype still has LastAuthority 0 (because Serialize with IsSaving has not executed yet). The unversioned serialization path detects a mismatch and explicitly serializes the value.

As a result, the serialized object becomes 3 bytes larger, +2 bytes for the additional header word, +1 byte for the explicit value.

This difference introduces cook non-determinism.

2. USplineComponent::GetUsedMaterials adds the debug materials (LineMaterial / PointMaterial) to the output list depending on whether the corresponding soft object pointers are loaded. This affects UPrimitiveComponent::PreSave, which initializes bHasNoStreamableTextures based on the materials returned by GetUsedMaterials. If the debug materials are not loaded at PreSave time, bHasNoStreamableTextures may remain false. If the debug materials are loaded and they contain no streamable textures, bHasNoStreamableTextures is likely set to true. Because the load state of these soft object pointers can vary between cook runs, the resulting bHasNoStreamableTextures value can differ, leading to additional cook non-determinism.

Steps to Reproduce

1. Create an empty project.

2. Create multiple Blueprint Actor with SplineComponent.

3. Place these actors in a level.

4. Run the cook commandlet twice, with the second run using -diffonly.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-367486 in the post.

0
Login to Vote

Unresolved
Affects Versions5.7
CreatedFeb 25, 2026
UpdatedFeb 25, 2026
View Jira Issue