I’m not going to aim this at anyone in particular but you know who you are: stop arguing in public about this. You’ll be embarrassed in a year when you read this.
Roblox takes a cut. That’s undeniable. The question you need to ask yourself is whether your game would be viable off of Roblox. The answer is probably no.
Are you paying for the service, or are you using a service that pays you a reduced amount to cover the cost of operating? Perspective.
I don’t think this argument has any worth if it’s just going in circles. Take it to private DMs or stop interacting with one another. Clearly there’s no interest in changing opinions.
Roblox cuts, whether they’re “fair or not”, are to stay. Move your expertise to another platform if you will, and from there you can see if they pay better for what they offer, compared to Roblox.
ice cold roblox not holding back
The main concern I have with this is that it is going to be very tedious to migrate over full datastores if you ever do manage to reach the limit; you would essentially need to shut down your entire game and run incredibly intensive datastore operations potentially lasting hours or much longer for very large data-structures. That also assumes you’ve planned for the limit which mightn’t be the case for some experiences; meaning you’d need to shut down for longer as you plan out a script to transfer your data to a different provider. Perhaps we as developers could have an easier way to transfer over providers for this scenario?
Do we yet have a concrete error message assigned to hitting the storage limit? It’s the only datastore limit that won’t “fix itself” by just waiting a few minutes and retrying, so I’d at least personally like to account for the edgecase and then either block save operations or throw my data in an external glacier datastore provider for later review; if the limit is ever reached.
Also, will we have a way to disable extended limits for particular requests? I may wish to instead ‘error out’ for certain unneeded datastore requests while be willing to pay extra in-order to store crucial log details, etc.
I know this has been brought up by others but given the info provided by others; this rate is presumably quite expensive in relation to some other providers. Data storage is also charged monthly (which is obviously understandable, since it costs Roblox to maintain the data) but that also means that the more expensive rate is charged to us monthly; making it a bit harder to stomach. I understand if this is maybe a ‘catch all’ rate assuming a worst-case (or average-case) scenario but perhaps if that is the case, we could see other data structures to allow for better (and cheaper) data storage in other scenarios?
I don’t think this is the right comparison to Roblox’s $0.12/GB-month for their storage, here’s some of the costs for other providers, which are much more in line with the initial pricing:
- DynamoDB: $0.25/GB-month
- Cosmos DB: $0.25/GB-month
- Firebase: $0.18/GB-month
- MongoDB Atlas: $0.10-0.25/GB-month depending on tier
I see problems with storage that remain unaddressed. Here’s a hypothetical that I may, or may not have. These require addressing, because they are problems developers may run into. None of this “It won’t happen”, “It’s not you” or “Just optimize” business, it brings me great displeasure in having to mention that I have no interest in ignorance of an issue that will happen to someone, thank you.
The hypothetical
Say your game blows up, for whatever the reason the worst case scenario is every player exceeds 1MB and it’s happened. You subscribe for extra storage because your game blew up. An even worse case scenario stacks on top of that, the game dies. Now all that storage is being “used up” by non-active, and/or non-paying users and you’re being punished for it.
As we can see, paying for extra storage on a recurring basis has problems when we don’t know what happens when you’re over the limit, when you’re unable to pay them and the future of your game. Nor will we ever clear that storage for reasons I should not have to explain.
Imagine having 1M unique visitors with 2MB of data each, but only 5 players daily because your game isn’t what it once was. That would be well over $100/Month. May as well just delete the game and hope there are no repercussions!
This is a hypothetical and a worst case scenario, friendly reminder.
We need answers, acceptable ones at that! To clarify, as to what happens when these cases are met, or what changes and/or decisions will be made. Anyone that actually finds themself exceeding the base storage limits, will be buying a lot of it.
The only feasible suggestion I do have for solving these issues, since there is no current resolution. Is paying for permanent size allocation of each player or permanent storage for the whole game. Recurring has far too many scalability issues. A bonus of this would be giving us the option to allow players to pay for their own storage too, since there’s no way in hell anyone’s going to be willing to pay monthly, nor can we as a developer enforce that.
I’d suggest giving players storage on a per account basis which they actively manage and/or pay for, but that has far too many caveats. Do note that I am not here to magically provide the best idea that works for both the developer and Roblox, I am simply making a suggestion based on my own needs.
Bonus
How the low base storage limits affects my own personal project with 2+ years of development time.
I am working on a procedurally generated voxel sandbox game, akin to Minecraft or Terraria. I want to assume that every player has a single world, with substantial progress and changes that must be recorded. This is an important minimuim, no?
Well this endeavor I’ve already spent 2+ years on is as good as dead under an assumption like that. More than 1 world wouldn’t even be achievable unless I can make a user permanently pay for what they’re using. 1 world alone is already too much based on how much data I will be using as well. I’ve been optimizing like crazy, but there are so many problems that you run into, trade offs and required values for your game.
Now, I don’t want another scenario of people telling me how to make my game, or optimize better without even knowing anything about it. I am aware of many things I could do and the downsides that’ll break my game which you do not, I prefer to optimize for the worst case scenario anyways. There’s always room to improve somewhere, but eventually you hit a limit where you cannot compress any further with how much information you need to store. I am not so ignorant to say that I cannot do more, or that I’ve hit my optimization limit yet. But what I can say is that 1MB is far from enough per player for certain games based on their requirements, and that paying for storage for a game like this on a recurring basis is not feasible at all. My suggestion would solve these issues, to a degree.
In the off chance you want to tell me to “optimize better,” I know what my game entails and you do not, unless you’re willing to be the magician who will do all the work for free and not receive a cent unless you complete the whole thing for me. Please spare me from yourself!
Rant about not being able to actually delete anything.
On another note, I have a huge distaste for how we still cannot truly delete anything on Roblox. Everything we do is saved, to do anything we have to upload something, every version, every asset is permanently saved and there’s nothing we can do about it. Yet here we are about to be charged for extra storage due to “costs”. Quite the narrative they’re running here isn’t it? Seriously though this needs to be changed, I find myself actively avoiding uploading assets and more until they are final and this harmful to the development process since I have to assume it just works. Same goes for uploading a project, unless I make significant progress in which services or features that require publishing (annoying) to use, I find myself not doing so because I am the type to save every few minutes.
I have a few questions:
- What happens if the game exceeds the data limit?
- Will there be alternative ways to pay for storage (ex. Robux)
- Will there be any way to detect unused data for example if a user hasn’t logged in for a while?
- What is the maximum expansion of the storage assuming the storage limit will be calculated using the formula
Total latest version storage limit = 100 MB + 1 MB * lifetime user count.
Oh yes! bots, what about those, wont those take storage away from people that actually need it? idk, seems a bit undercooked to me
Is there any plans to allow devs to reduce the services we use?
The ideal world I imagine is where roblox allows us to configure multiple values like server CPU, RAM, memorystores, datastores. Many experiences need more raw server performance for example to support advanced physics. To offset that cost they can use less datastores.
Pretty cool stuff. Nice to see that we have options to expand more if needed. Though i do hope that roblox will not start removing free benefits only to place them back behind a pay wall.
when will there be a similar service for memorystores?
They mentioned so in the announcement!
Hopefully we wont pay for the basic servers
Remember that the player count is also included in their formular. I am worried that they change the formula, because at the moment there’s nothing to worry about, even for bigger games.
this is just for games with milions of users, and the costs are not even high. if you need to pay 0.08 cents for a game that does hundreds of cash a day, then what is the down side?
It’s obviously so they get a profit, they won’t just use AWS’s prices.
I second this inquiry, and also want to add that further expanding the key throughput limits or/and global rate at the cost of some money would be beneficial for larger games that need to go beyond the write throughput limits applied to servers.
From my findings in that thread the throughput limits seem to be:
Server
- Read Throughput - Limited by the server bandwidth
- Write Throughput - 210 MB / minute (may rely on number of servers, hard to verify)
Per-Key
- Read Throughput - Limited by server bandwidth, one script is 350 MB / minute
- Write Throughput - 105 MB / minute
But it could be Studio-wide limits.
More potential solutions/future Roblox features that could help
Currently
- Use ListKeys to periodically skim and purge the system.
- Change the initial data format, the 1MB one, to be assumed instead of saved. (may not be possible, but if it uses randomization then you could store the seed used instead of the entire 1MB).
- Use MemoryStoreService and MessageService to somehow have a list of users that should have their data deleted. (probably not worth it to implement)
Future (assuming these get added)
- With the ability to limit the output of ListKeys using UpdatedTime (min/max), you can now easily find data to purge that is however old you want.
- With the ability to look for certain values within metadata keys to filter ListKeys, you can now find userIds that hold older versions/formats of the data.
This is only “obvious” to someone like you who is assuming that the backend Roblox uses for DataStores has pricing as cheap as AWS does. Unless you could link us to a source where it is confirmed that Roblox does actually use something like AWS for DataStores?
Here’s an article on The Roblox Stack. They don’t specifically mention AWS here but do mention they use other cloud services where they’re already located as it’s generally more cost efficient than building a whole new cloud computing/data center.
https://www.hashicorp.com/en/resources/how-we-used-the-hashistack-to-transform-the-world-of-roblox
Here’s a recent presentation on AWS https://youtu.be/Md1jBnrmN3g AWS re:Invent 2024 - Scaling GPU infrastructure and using LLMs for Roblox’s metaverse (GAM312)
I couldn’t find anything more concrete with a quick search, but it’s been well known for years that they use AWS for all their cloud, as well they host Roblox client files on AWS, when the old beta/alpha channels were still accessible you could install that Roblox version from the AWS servers.
I’m guessing at least for DataStores, they might not be using AWS - and that’s because in a recent response to a question about the 4MB per key limit it was stated that this was a technical system limit.
While that could just mean that it’s a limit of whatever backend they designed for it, it could also mean this is a limit of the database they are using for it and I don’t know of any AWS service with such a limit and I wouldn’t be surprised if it was some different piece of tech due to how old DataStores are.