Best practices for asset versioning

For renaming or performing a transformation, we usually do this in a 2 phase process. The first phase is to mark the old UPROPERTYs as deprecated and add the new property that is to replace them. Then in PostLoad() you copy the data in the case of a rename or transform it in the case of 3 floats to a FVector. Once you have that in place, you run the ResavePackages commandlet to upgrade all of the data. Phase 2: you can safely delete the deprecated UPROPERTYs without data loss.

For native serialization, we use the Archive version information to fix the data up. There are tons of examples in the source for this. Search for things like

if (Ar.IsLoading() && Ar.Ver()
1 Like