Allow access to datastores across multiple experiences/universes

Problem

As a Roblox developer, it is currently too hard to share data across multiple experiences.

Use Cases

Although the following use cases are presented, there are more use cases that I can think of.

Use Case 1

This use case is more or less moot since the creation of the player banning API. However, a player that cheats or exploits can be banned in one game which will ban them from all games for a publisher.

Use Case 2

A player who earns in-game currency in one game can carry their currency into another game. The same can be said for player levels, and other stats.

Use Case 3

Certain common data such as notes on the player, alts, etc… for game master (moderator) use can be stored in a common location for access to those individuals within all games from a publisher.

Use Case 4

(Provided by @mastawba)

When one makes a game that contains mature content (17+) and also has the same game which is for younger audiences, sharing player save data between games becomes paramount. Since it’s different versions of the same game with separate experience identifiers, it is an issue not being able to do this.

Additional Information

Currently, the only way to do this involves the use of Cloud APIs and storing the data off the Roblox platform, or looping the request back to the Roblox platform with the new destination.
Both methods create additional headaches with security and reliability. The big issue here is once the player’s data leaves the platform, Roblox has lost control of it.

Proposed Solution

One implementation that I thought of is having a separate API for a global datastore which can share data across multiple experiences and/or universes.

You would have a web interface for the specific datastore in which one could add or remove the experiences which are allowed to access it, similar to the current sound permissions. Unlike the sound permissions, you can revoke access for security reasons. This would also allow the creation and deletion of said datastore. You would have to create the datastore first in the web interface to use it. Upon creation, you would be given a system generated identifier for that specific datastore. The identifiers are unique across the platform.

Within the experiences, you can create sub-datastores like you do now with the APIs. Alternatively, the identifier is used to create a datastore instance similar to DataStoreService:GetDataStore() which will make it easier for developers to adopt such a system. However, this would use a new API which could be called GlobalDataStoreService or something along those lines.

Conclusion

If Roblox is able to address this issue, it would improve my development experience because then I will be able to share common data across experiences to facilitate and improve the user experience in related games. It would also allow for the improvement of game management by the publisher. Furthermore, it would improve security since the data is not leaving the Roblox platform. Once the data leave the platform, it’s vulnerable to tampering and theft by a threat actor. By keeping the data on the platform, these issues are mitigated.

11 Likes

Frrrr

Especially when you want to make a separate 17+ game from the original game where shared data is really necessary across both games for their levels, items, and etc.

2 Likes

One thing that would be really cool is that for context, I live in France and big french streamers are apart of a ban group and if you get banned on one’s stream, you are banned on all other streams and it would be cool to see the same thing into Roblox (only invite trusted game into the pool tho)

The games which are in the pool should be from the same publisher/studio/developer as all the other games. So trust here isn’t an issue.

In my opinion, this is a useless feature. There is currently some ability to exchange data between different experiences, and adding something like this, even if it helps someone, will only help a very small number of developers.

So you would rather have developers go through the hassle of using Cloud API services to send the data off the platform to be either stored or have it loop back onto the platform? Did you read the part about the security implications that I pointed out when doing this?

  • If the data leaves the platform, Roblox has lost control of it.
  • Storing/transmitting the data on/to a server outside Roblox means that Roblox cannot be responsible if the data is modified or stolen.
  • If the data is looped back, there is a possibility that the data can be modified or stolen while in transit.

So basically, you WANT developers to be open to security issues when dealing with player data. An external server is not Roblox’s responsibility, it’s the developer’s responsibility to secure and maintain it. It’s also the developer’s responsibility to host it on the internet which costs actual money.

Remember, anything can be hacked, including HTTPS. It isn’t foolproof even when using RSA Elliptical Curve Cryptography with the 256-Bit SHA hashing algorithm. Yes, I know about that. In fact, there’s some talk in security circles which indicate that the numbers used to generate the curves might be backdoored by the NSA. Remember the mud storm that hit the fan years ago when Edward Snowden reveled that the NSA was recording everyone’s internet traffic and spying on people? That’s when HTTPS became widely adopted.

I just posted the feature request a few hours ago. Let’s just see how much interest there actually is before we get ahead of ourselves. Besides, this is actually a useful infrastructure feature that will benefit everyone, unlike that avatar facial expression or the video chat with avatars feature they came out with.

3 Likes

I just expressed my point of view. I don’t care about anything else. A skilled programmer can overcome all these troubles.

Not without paying for a webserver to handle the requests and a database (if you need more than 300 requests/minute), relying on teleport join-data isn’t reliable enough as it assumes the player won’t leave during transit.

1 Like

I repeat, this is useless junk and garbage. Do any of you use multi-layered 3D clothing in your game? The correct answer is no. This useless innovation on the platform has only brought more damage to the developers than good. Most places disable the ability to display these things, thereby making them useless. I almost do not know of any places that use this “mechanics”. This was the first thing I remembered. There are many such things that Roblox adds. And this is one of them, no one needs it and no one will use it, except for a couple of places.

So you’re saying that people who do not want to deal with these issues are not skilled programmers? Seriously? I think you should stop before you dig your hole any deeper. But you are right, it is your opinion. It is also my opinion that I think you are trolling my feature request.

I’m going to use it if it gets implemented, hence the reason why I posted the feature request in the first place. Furthermore, someone else on here expressed interest in using it. So that’s 2.

Running your own server is a hassle. I know, I’ve done it.

same over here. Hosting your own server with an own database just to create a public datastore is pretty painful.
This feature is indeed needed for bigger game-nets where you want to share certain things like currency

I use external databases to achieve this, i can also view all the data, which helps loads too

Admittedly, that is one benefit of having an external database. However, you can do this with Roblox datastores too.

For me, external database are more useful, as i have other sites like my discord bot and so on which also access this data

You know, I’ve been wanting to mess around with Discord bots, but haven’t had the time lately. What language does it use?

i use python on repl.it ,i think u can also use js