Hey guys.
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.