I have a game on Steam, and did spend a long time wondering if it would be ok to change the shape of the save game. I mean, how does is manage that?
Apparently, the serialization can work out from the names and the types, which variables are which, even if you move them around, or remove some / add some.
Feeling a bit shifty about changing my save game, I did some tests to see how far I could push this.
I did notice that it can’t handle changing the name of the save game in the content browser ( or only sometimes ). I didn’t try it, but maybe that extends to variables. Did you rename the old float array and give the new struct array the old name.
Bit of a long shot, but it’s the only thing I can think of.
This is a pretty specific issue with a LOT of moving parts, so it’s difficult to pin down what’s wrong here.
We recently released a huge update to our game on Steam and noticed an equally huge bug just before launch. We rerolled our skill system and moved from an array of floats to an array of structs to store more info about each player skill and their associated level. We’re using Blueprints mainly (Using GAS, though the skill system is completely separate and simply numbers and associated enum values)
Before pushing this update live we made sure that the system grabbed the deprecated skill list and converted it to the new one if it was lower level than the new skill. This seemed to work great in the editor and and so did saving the new skills and loading them into the game. We tested between multiple character swaps and restarts of PIE and had no issues with saving or loading existing skills.
But as soon as we pushed the update live, we realized that every player lost their existing skills and had to start over. We apologized to our audience and went back to work assuming something went wrong and the new skill system would simply work even though the old skills weren’t retained.
But when we pushed a test patch we realized our new skills acquired after the wipe were gone once again. Yet, players have been playing after the wipe and having no issues with saving and loading skills within their build. Not a single bug report about lost skills other than the initial wipe.
Like I said, there’s a lot to dig into here and it could be anything, but the fact that it’s not happening between game restarts or trips back to the lobby to select a new character, and ONLY happening when the Steam build has been updated tells me that there’s something fishy going on here that may not be a problem in our blueprint logic. It’s important to note that players’ inventory, their equipped gear, hairstyles, outfits and even quests are all also saved locally in the SAME player data struct and loaded at the same time in the same place, yet all of that is stored and saved just fine with no data loss. It’s simply the new struct. (And potentially the deprecated array of floats)
Anyone experience anything like this? Any idea where to even start? We’ve been struggling for two days trying to find a solution so we can patch some other nasty bugs. It’s very difficult to test as well because we have to package a new build each time and then we have to gain more skills in that build in order to test if it was saved in the next packaged build.
Thanks for the response. Your comment helped us narrow it down.
We DID change the name of a couple variables when we rerolled the skills and as you predicted, we’re pretty sure that’s what caused them to reserialize when the player updates to a new build.
So for anyone else who’s running into this… do not change the name of a variable that’s being saved once you’ve shipped your game. Unless you want to wipe your player’s data for that variable, in which case this is a great way to do it. -_-
Sorry it is off the topic but I wanted to ask you about uploading games on steam:
When I upload my game and have to patch it(like HOTFIX) do people have to download the whole thing again or is it just gonna push the changes?
Also, just a request coz idk anything about steam, can you please tell me how to upload games on steam or like in a video. I would highly appreciate it (also to someone else if he/she sees this page)