Can I have more than 100 players using Data Store Service & Run Service?

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!

I want to make a big world with more than 100 players in the server.

  1. What is the issue? Include screenshots / videos if possible!

No issue, I’m just wondering if it’s possible.

  1. What solutions have you tried so far? Did you look for solutions on the Developer Hub?

No solutions, I want to ask other people before trying this.

  1. Any details you want to add?

Yes, I was wondering if I can use the Run Service & Data Store Service so that every 1/60 of a second (Run Service) I can save every player who is playing the game’s CFrame, avatar aesthetics, animations & chat data. After I receive every player’s data, I will clone all their data onto every server that they are not in and it will seem as if there are more than 100 players in the server when in reality there’s not. So basically, there can be up to 100 players and an unlimited amount of fake players in a server.

1 Like

First things first, I would highly, highly advise against saving that much data (for 100 players!) every 1/60th of a second. You would absolutely be throttled by the DataStoreService. According to the Data Stores page, SetAsync()/UpdateAsync() both have request limits per minute of:

60 + numPlayers × 10

That means, every minute, you can ONLY call SetAsync()/UpdateAsync() about 1,060 times a minute, 17.66 times a second, and you still would not be able to save every 1/60 of a second.

Realistically, I would say it’s a good idea to save roughly every 5 minutes or so (make sure to spread out player saves, don’t try saving all of the players at once). You can cache a player’s older save and use that until the save updates. If you need live data to try to imitate a player being on multiple servers, you have a few options.

1.) You can program your own AI to make player characters appear as if they are alive. From a performance perspective, this is probably the best option.

2.) Maybe you could check out the MessagingService. This seems to be what you need. It allows you to communicate between servers in real time (<1 second times). However, do know the MessagingService also has request limits and its delivery is NOT guaranteed. If a request fails, you would have to have some AI system in place to take control of the fake player until a valid response is received.

I hope that helps!

3 Likes

Why do you need to save all of those things so often? Why not just save it when accessories change, and then when the player leaves the game, save their CFrame. When a player enters the game, just use messaging service like @Shadowskull1247 said to update the other servers.

1 Like

Also, I’m pretty sure there is a better way to fit more than 100 players in one server anyway. There’s a beta you can apply for to allow you to set ypur Max Players up to 700.

1 Like

I think what they are trying to do is make it appear as if the player is on every server. So, for instance, say if the player moves in their server, their player character’s position updates in every other server. It’s possible, but you have to make compromises to make sure you don’t exceed any API request limits.

1 Like

Thank you for the help, so there are definitely limitations.

1 Like