sinbad / SPUD

Steve's Persistent Unreal Data library
MIT License
300 stars 44 forks source link

Byte arrays maximum elements count limit #71

Closed YeNov closed 3 months ago

YeNov commented 3 months ago

Hey. We recently encountered an issue while trying to save an array of bytes (TArray). This is a field marked with SaveGame if that matters. Apparently, there's a limit in a number of elements LogSpudProps: Error: Array property XXX/YYYSaveGameBinaryData has 88306 elements, exceeds maximum of 65535, will be truncated

Is there a reason of that limitation? can it be uint32 limit instead of uint16?

sinbad commented 3 months ago

The reason for the limitation is that all arrays are written as <count><content> and <count> is a 16-bit value. Changing that requires a change to the SPUD save format; not impossible but compatibility breaking. It's that big because a) otherwise you're storing 4 bytes instead of 2 every time you use an array, and almost no-one uses arrays that large for save game data and b) if you really need to do something like that you have SpudStoreCustomData.

YeNov commented 3 months ago

Okay, thanks. That makes everything a little bit more clear