Persistence Data Rollback Support
Eliteiment
At the moment there is a high risk that a world builder may release an update to their world that ends up breaking everyone's Persistence data in an unrepairable way. This could be caused by bugs within Persistence itself.
When either of these conditions occur, there is zero recourse for the world builder to correct peoples' data beyond telling everyone to wipe their data completely, losing all progress. This can be catastrophic in cases where player progress was enhanced by purchases through the Creator Economy.
This problem isn't unique to VRChat, as it occurs within Roblox as well, and is especially important due to how many transactions are tied to progress in their games. However, Roblox provides a comprehensive interface where the world builder can force a roll back of player saved data to any prior date at any time. This effectively eliminates all risk with releasing world/game updates, giving the builder recourse in the case of irrecoverable corruption.
I brought this to Fax who thought it was a good idea and recommended making a Canny post, so this post is to request that we get a similar feature, so world builders have the option of force rolling back a prior date of saved Persistence data.
An example world is my world: Elite's RNG Land. Players can purchase an upgrade that speeds up progression, however there have been instances where a bug, either through code or API bugs, caused players to completely lose months-worth of progress. The only recourse was to tell people to wipe their player data and start over.
Log In
Invertex
It's unfortunate this isn't at least "Tracked" yet, as it's pretty vital to providing robust experiences that players come back for. If players have a lot of worry they could lose all their progress at any time, it's going to reduce desire to commit time to such worlds.
Ideally such a rollback feature would provide access to a key-value store of previously synchronized data, allowing us to manually handle taking that data and putting it where it needs to go in the event of failure, not just rollback of the date itself.
This can be a major issue if you need to refactor/optimize parts of your world and it involves changing data structures, field locations and/or names, in which case the players now have corrupt data and the world has no way to recover from that since the old structures that would have been synched to, have to now be gone and thus aren't accessible.
So a
PlayerData
backup and a Dictionary
with PlayerObject
names as keys, value as another Dictionary
with prop name keys and their value (maybe value is struct containing value and TypeString
too for conversion purposes) would be great. Avoid the issues of trying to deserialize into a class structure that doesn't exist anymore and lets the creator control how they want to recover.KravenDA
Agree +1
EvolvedAnt
This is incredible useful and important, I know VRChat is implementing something similar for the own developers to use when they accidentally cause harm to a worlds persistence data, but we need a system for world builders as well to rollback. Roblox offers this standard and for good reason.
Now that we have Creator Economy + Persistence, it's especially in my opinion, vital to have for world builders.
It's very very dangerous to update your world if it changes anything with persistence/sync'd vars at the moment, double so if your world has paid for upgrades that enhanced your progress.
syncpulse
I concur. The general lack of durability of persistence data makes it difficult to take seriously as anything other than basic settings storage