Possible nondeterministic serialization of LevelSequence / MovieScene assets during cooking

We are currently using Unreal Engine 4.26 and are investigating a recurring issue related to LevelSequence / MovieScene assets, where binary cooking outputs change between builds even when source assets and engine revision remain unchanged.

Our observations include:

  • LevelSequence (MovieScene-based) assets produce different serialized results across multiple full cooks on UE 4.26.
  • This occurs without modifying the source .uasset files.
  • In some cases, this behavior leads to mismatches between asset headers and export data (e.g. .uasset/.umap vs .uexp), and may result in runtime errors such as:
MovieScene3DTransformSection
Serial size mismatch: Got X, Expected Y

During investigation, we noticed that MovieScene-related data such as UMovieSceneSignedObject::Signature may be regenerated or modified during the cooking process, which could introduce non-deterministic serialization output for LevelSequence assets in UE 4.26.

Questions for Epic:

  1. Is nondeterministic serialization of LevelSequence / MovieScene assets a known issue in UE 4.26?
  2. Specifically, are there known cases where MovieScene data (such as signatures, compiled data, or GUIDs) may change between cooks even when assets are unchanged?
  3. Has this issue been fixed or mitigated in later engine versions?
  • If so, which versions (for example UE 4.27 or UE 5.x)?
  • Is there a specific changelist (CL) or commit that addresses this behavior?
  1. Are there recommended best practices for UE 4.26 to ensure deterministic cooking of LevelSequence assets?
  2. For example:
  • Required resave or upgrade workflows
  • Specific cook or packaging settings
  • Avoiding certain editor-time or cook-time mutations
  1. Is it expected behavior in UE 4.26 for UMovieSceneSignedObject::Signature (or related MovieScene fields) to change during cooking, or should this data remain stable once assets are saved?

[Attachment Removed]

重现步骤
no

[Attachment Removed]

Hello,

Unfortunately, the cooked data in UE4 is known to not be deterministic. We did invest a lots of effort on UE5 to remove sources of non-determinism. You should be able to find fixes by looking at the code history on the UE5\Main stream or the GitHub UE5-Main repo.

Version 4.26 does contain some code that helps investigate sources of non-determinism at cook time. The feature requires that you do a normal cook first and you following with a second cook that has the -diffonly argument. This will result in comparing the 2nd cook result with the first one and generates a report under the Saved folder for each different assets. That mode was improved since version 4.26 so you could find some interesting new code in newer releases. Usual sources of non-determinism are mutation of the data (often GUIDs), uninitialized files, structure padding…

Regards,

Martin

[Attachment Removed]