Should I use ProfileService, DataStore2, or DataStoreService?

I have a concern, and it is the datastore provider selection, and I don’t know which one to choose (ProfileService, DataStore2 or DataStoreService).

I would like to know for which games category each datastore provider is ideal?

4 Likes

ProfileService - i didn’t use
DataStore2 - is more efficient and prevents data loss
DataStoreService - is not good and can lose any date in any time, I experienced it in my game when the players complained that all the money was lost just like that

5 Likes

It depends on your skill level, those with less might want to try ProfileService, but in my experience datastore2 is outdated and doesn’t work very well.

If you’re confident, you can try making your own module, as they all use DatastoreService, just have well coded protection from loss

@Daeny1000 DatastoreService issues are due to poor coding, datastores work perfectly fine for tons of games, you just need a good module.

11 Likes

I used ProfileService in my game, which made it really easy to save player data and I have not run into any player data loss as of now. Can’t tell you out of how many unique players, but around 800k visits as of now and no data loss seems to be good.

6 Likes

Datastore2 doesn’t do session-locking, ProfileService does. If you want to use DataStore2 for a game, you will need to implement session-locking yourself.

I started out with DataStore2 but switched to ProfileService for this reason. It just is the better option IMHO.

Starting from scratch is a good option if you know what you’re doing. But it is a lot of work.

4 Likes

I personally prefer DataStoreService since I hadn’t yet used DataStore2 and ProfileService.

2 Likes

I think that ProfileService can fit the job for any category of game. What I mean by that is it’s easy to setup, efficient (in the case I don’t usually see throttling errors), and has things like session locking.

For those of you that don’t know what session-locking is, basically think of games that have things like trading and duping is an issue. This module solves that by preventing data from being loaded in 2 servers at once, (session-locking) so if you’re trying to dupe an item by joining another server quickly it wouldn’t work.

It’s just an all around great module that I use in all of my late work. It also has a relatively extensive API for developers to interact with meaningfully.

And then the most helpful thing for me truly is the way it saves data as “Profiles” and it just assigns a table that saves any data you put in it is so much easier than having to do methods like “:Set()”.

I didn’t like the other alternatives, such as DS2 which has just always confused me.

For the record I have experience in all 3 of the things you mentioned and this is my opinion on them.

I think you should try all of them for yourself and see which one you like the most instead of asking people what to use when the results are so varying. What I mean by that is some of these people haven’t used any of the alternatives listed and just post what they think of the only one they’ve used.

20 Likes

ProfileService sure does look like a great replacement for DataStoreService. I might try implementing that in some of my own scripts!

2 Likes

Go for it! I usually make a module with some events that fire so I can connect things like when their data loads in different scripts so I don’t have 1 massive game script that’s hard to categorize and navigate.

I saw someone post one of their modules for profile service to code review but then it vanished so I’m not sure if they deleted it or not. They said they’d probably release it soon so I guess keep checking resources?

1 Like

Well, Currently I am trying to resolve a conversion error in my DataStore. (Link in my featured topic) And so I need to do that first before I do an entire DataManager Rescript.

1 Like

I think my knowledge so far is not very good for creating my own module that will help save data. About what you say about DatastoreService and how it can work perfectly if I faced such a problem that data was lost?

1 Like

Eithier because you were saving it too often, didn’t have a good/correct key, or didn’t pcall it.
DataStoreService is very simple. Those are pretty much the only causes for problems with it - and of-course bad code will cause problems.

1 Like

I only get and save the date when the player comes in and leaves that’s all. I occasionally had an error when getting the date (I don’t remember exactly what the error was), and this led to the data being to nil. but all the settings in game settings > security were enabled

1 Like

Then when the player is removing, put their data in a table (or number if you only store 1 variable) and then pcall the save. If there is an error, then try to save the data again.

1 Like