On the other hand, I see this as a great reason to learn HTTPService. Not only can you send a backup copy of save data to your own database and restore it when Roblox’s datastores come back, you can do several interesting things such as:
Copy model and union data to an external server; a really good upside for when you want to use Roblox as a quick modelling service
Let fans make (filtered, obviously) Twitter posts, which for expensive paid games, can work like quick reviews to draw in those who are on the fence; just link the twitter to the social links so people see it
Interact with other HTTP based services, including RESTful APIs.
Those of you not in the know, if you download a client for a program that works through the internet, it’s probably communicating with the service through a RESTful API. These are HTTP based and incredibly simple to use, needing little more knowledge then requesting a webpage and processing the response. Some are more complex than others – for example, you can’t stream to Twitch because HTTPService doesn’t keep connections open – but you can send a chat message through a bot account.
Of course, it goes without saying that any HTTPService stuff like this should probably be kept in ServerStorage, but it opens more possibilities then most people think.
That usually means they’ll have to learn a new language along with data management, HTTP/S protocols & security, and most importantly, it costs money (if you want a good host that is). The only time I see it being entirely free is using glitch & sqlite3 but you’d still have to learn the basics of sql & nodejs to make it yourself.
You could also use a free mongodb cluster but then again, you still have to learn it’s API. Its a difficult learning curve for most people because of all the technicalities and the severe consequences if you’re not secure about the information or correct about the data structures.
Yes, like Dog2puppy said, this issue is more in general of DataStore data loss and not single instances. DataStore2 may be able to prevent it in some cases but if both the main DataStore and the backup DataStore (I believe this is how DataStore2 works) lose data for the same people then there’s nothing you can do much about it.
Have you tried awarding players a badge after they’ve earned x experience, and checking to see if they own the badge when fetching their data? The way I understand the problem is you save over their datastore table thinking they are brand new when they are not. This would help detect when the service is lying to you about a user’s data not existing.
Unfortunately my game allows people to have multiple save slots, so I cannot use this method. Using the DataStore2 method though I should be able to check for the timestamp of the last save, or at least a timestamp. If I find something that isn’t 0 I’ll make it error.
Yesterday at 5 PM PST we released a fix for this issue. We confirmed with several top developers that they are not seeing further data loss.
Now that the immediate issue is resolved, we are working on a remediation plan in order to help developers restore lost data. We will provide more information in the next day or two once the plan is finalized.
We will also be posting a full incident report explaining how this occurred and what we are doing to prevent future incidents.
Thank you for your patience as we deal with this issue.
I think I speak for everyone here when I say I love how transparent Roblox has been lately when incidents like this occur. Making sure everyone, including developers, stays informed is a policy I could get used to.