Property serialization vs Binary serialization

It seems like there are two different methods of serialization used in the engine:

  • Property serialization which is done automatically for non-transient properties and which is nice because it handles adding and removing properties well.
  • Custom serialization code implemented in Serialize() method override. This presumably provides more flexibility but requires messing with versioning every time something changes. I will refer to this as “Binary serialization”.

Here are my questions:

  1. When it is preferable to use Binary serialization?
  2. My guess is that since Binary serialization uses less space it is preferable for cooked assets while property serialization is preferable during development when properties get added and removed. Is that correct?
  3. Sometimes in the engine code properties get serialized in Serialize() even though they are not transient. Is this by a mistake?


Got the answer on Forums: Redundant serialization in the engine code. - Engine Source & GitHub - Unreal Engine Forums