This is an issue with 5.5. The saving/archiving has been optimized to default to delta saving, such that when a savegame variable is at its default, it isn’t serialized in the archive.
There’s a bug in that during load, it can get the wrong default somehow and reset to zero (most likely the base class’s default rather than the child/inherited class’s overridden default).
This breaks save and load pretty badly on my application. Turning off the delta behavior fixes it at the expense of a larger save file.
Look at bDense in Archive.cpp for where the problem comes from.
MySaveGameArchive(FArchive& InInnerArchive)
: FObjectAndNameAsStringProxyArchive(InInnerArchive, false)
{
ArIsSaveGame = true;
// This fixes it
ArNoDelta = true;
}