I feel like RBXLua can’t open a webhook connection, but I presume it would be easier for data recovery and resetting stats [plus, prevents the outage issue].
As of recommendation, personally I’d stay for Datastores. If it is possible then it might annoy other companies [i.e when Roblox’s useragent got blocked from Discord]
It is possible to use an external database for your games. It’s just at your own expense as opposed to roblox’s free servers. External databases require HTTPService
I used luvit for my Discord proxy, but I’m somewhat good with js.
Rethink-luvit by nameless allows you to access a RethinkDB database, so if you create a server and add endpoints and whatnot, you can accomplish this, but the issue here is player data. I think RethinkDB offers more features than Roblox’s DSS and is why I want to use it, but I’m not sure if 999999 requests a minute or whatnot will cause my server to, well, commit suicide with a note saying for every request to screw off.
If I were to rate how bad it would be on a scale of 10, it would be: 10000/10. How would you even do that? What’s saying that what you use wont become deprecated(the thing you make that stops being supported. So if that type of function breaks Roblox won’t fix it). It would be better just to use datastore service. Plus im pretty sure roblox has a way to recover data. But if you do the custom way im pretty sure wont have a recover data option.
Here’s a tutorial explaining how to use an external database. It comes down to personal preference in most cases. Seeing performance impact would take testing and probably depend on how much data you’re trying to move around.
iirc Rethink has at least a ratelimite queue [might be mongoDB, i get the two mixed up], but its really best to either queue requests to obey to the ratelimit (i.e Roblox datastore)
I too use RethinkDB. I run it on my own server, so all the data is under my control. I use it for a web server rather than holding user data from games.
Using a self-hosted solution obviously has the standard drawbacks of data backup, recovery, outages, etc.
I believe that it would be safer to go with JavaScript if you’re going to use an external database. Have an API between the database to handle all the requests. From my experience with using Luvit, there’s not much out there in terms of using third-party packages, where in Node.js there’s millions of options.
thats a good explanation imo, but my main concern is the drawbacks it could have on a popular game. from your experience, do you think rethinkdb could commit suicide if a popular game used it constantly under the same database?
You would definitely want to have multiple database servers. I would not recommend having all of the requests file into a single one. Bandwidth is a pretty large concern with requests as they pile up. You’ll start getting slower connections to where they pile up and time out.
RethinkDB can handle a lot of requests at once, so it’s up to how much you think the server running your database can handle. On first load, the web panel shows a graph up to 20k queries per second (when blank).
Processing power + bandwidth = More queries that can be handled
For my projects which aren’t that big, I have been using Firestore from the Google Firebase series. I wrote a simple express app that makes an API that I can use from Roblox. Then it’s all about optimizing. There’s a lot of positive things about it.
The reason I choose Firestore is that:
It handles scaling very well if my game gets big
It gets hosted by Google, which means it has a lot of uptime and I don’t need to spend time or resources on maintaining it
it is one of the cheaper databases and offers a free tier, which means I don’t pay anything unless my game grows, and if it does, then I probably earn enough to cover those costs
What’s optimistic about using an external database:
You get more control of your data, giving you more possibilities
It might be easier to handle requests to delete data
You can connect it to stuff such as a discord bot allowing someone to retrieve their in-game stats
You can make a website where users can receive support for the game and where you can easily change data if needed
You can make dashboards showing you statistics of the game, and you can make yourself an online admin panel to add, edit or delete data
What’s negative about using an external database:
You have some extra cost
If something goes wrong, it’s on you, and Roblox can’t fix it
You have to work with the limits of HTTP requests which means you need to optimize your API calls