Environment:
- Unreal Engine Version: 5.5.4 (source build)
- Project Type: Large-scale multiplayer project, uses World Partition
- Cooking: Iterative Cooking (-iterate)
- Serialization: Default Unversioned Property Serialization (UPS)
- Assets: Thousands of DataAssets referencing USTRUCT and UCLASS
- Platform: Windows / Android (same issue on both)
- CI: Automated BuildCookRun pipeline
Steps to Reproduce:
1. Create a USTRUCT and a UDataAsset referencing it.
2. Save the DataAsset and perform a full cook.
3. Add a new UPROPERTY to the struct and compile.
4. Run BuildCookRun with -iterate (iterative cooking).
5. Launch the cooked build.
Actual Result:
- Iterative cook does NOT re-save or re-cook the DataAsset.
- Cooked data still contains the old schema (missing the new property).
- At runtime, UPS attempts to deserialize using the new schema and crashes:
- Serial size mismatch
- Bad export index
Expected Result:
- Iterative cook should detect schema/class layout changes and either:
* Mark dependent assets as dirty and re-cook them
* OR at least emit a warning that the asset schema is outdated and must be re-saved
Questions for Epic:
1. Is there a recommended way to make iterative cooking detect UPROPERTY schema changes and re-cook dependent assets?
2. Can the cooker emit a warning or error when a package’s serialized layout does not match the current class CRC?
3. Are there plans to improve dependency tracking so that C++ property changes invalidate assets automatically?