Writing a Server Filling Algorithm. Any Ideas?

So first - the problem. My game Project: Hood has just released recently and it’s doing pretty well - just that we have a big issue with people we dub “solo grinders” - people who purposefully get into their own one player server to grind money. We’re all about fairness on my team (I made it so that you can’t even gain money in VIP servers unless it’s from another person), but solo grinders abuse an internal feature by Roblox to make their own servers.

The feature is that where if you have someone blocked in a server, Roblox repulses you from it. And since the player count is still relatively low, people are able to abuse it simply by blocking people in every server (since there aren’t that many) to where it creates an entirely new one.

Now I’m planning to solve this by making a server hub (was planning to do this anyway for a while), and have people “queue” for servers (which would be completely created by server hub servers using ReserveServer). Obviously I would do some cool stuff to where you can see who’s playing on your friends list and cross-server party queueing (to where it teleports you all to the same server) even if you and your friends are in different server hub servers.

But for general public queueing, my goal is to make servers as full as possible while at the same time choosing the best picks possible for players and their friends, so I’m going to need to write a good algorithm for picking servers. The idea I have so far would be to have an algorithm which chooses servers based on what I would call “server points.” Server points would be added to a server for things like how many slots open are left in it, how many of a player’s friends are in it, its region matching with local player, etc.

I’m obviously going to flesh out this thought, but what are some of your ideas/ things I should add or account for with the algorithm?

3 Likes

Cool ideas! This would be great for solo-grinders, and is a well thought out solution.
The part I like the most is the server points, great solution. Maybe deduct a max of 5-10 server points for blocked players? They’re still annoying. But it can still solve solo-grinders.

1 Like

I’ve experienced a similar issue as you have - my players snag a limited item only present once per server with this same clever trick.

For sending information on the player slot availability of the one of the servers to the main server, I believe that this could be accomplished using MessagingService. You can read more about that service here: MessagingService | Documentation - Roblox Creator Hub

In regards to making the best matching system possible, I would implement some sort of Elo or other XP system, even if it runs behind the scenes, then put players with other similarly skilled or progressed players. You can read more about the Elo System here: Elo rating system - Wikipedia

Assuming your game is getting enough traffic, I would first match players with servers that have room for them and their friends. From there, compare the average Elo rating of each of those servers that have room, or a similar matchmaking method.

Finally, a complete alternative to these methods: You could set a variable equal to the percent of how filled the server is which affects the amount of cash or rewards players receive in that server.
Example: 10/20 Players, all players only earn 50% cash

This is a bit vague, but you said you would put some deeper thought into this yourself, so I hope this was helpful.

3 Likes

Good ideas. I’m definitely going to add some sort of “elo” to help servers match out better.

1 Like