Thanks for the report! We’ve filed a ticket to our internal database and we’ll follow up when we have an update for you.
It’s still not working and it’s been more than a month… Can you fix it?
Will be developing a api to redirect players to the most filled server until player number reaches max server. Stay tuned and watch this post for 4 hours!
It typically takes a couple months for issues to be fixed after they have been filed, so I’d probably expect it to be a few more weeks.
Yes! Where is it? We’re waiting haha.
Just going to bump this, it’s been almost a year now.
It has been a year lol, but they’re working on a fix that will hopefully be out soon
Them “filing a report in their internal database” doesn’t guarantee the issue gets solved or that they are working on a fix at all; there are countless bugs with internal reports filed that never end up getting addressed. It is reasonable to assume after a year of it not being addressed that they have ignored the report or at least see it as low priority so letting them know that this is still an issue impacting games is a reasonable thing to do.
FWIW people don’t usually “ignore” reports (this comes across as if it were malicious, which it’s not), the right word to use here is “deprioritized”. If every engineer had infinite bandwidth there would be no bugs.
Yes which is why I said this directly after:
I didn’t note that they “ignore” in a malicious way; to ignore is, by definition, to intentionally disregard. This is exactly what happens when a bug is deprioritized (it gets ignored). Therefore, a followup is reasonable to let them know it’s an issue that still affects many developers and should be prioritized.
This issue seems to have worsened lately for some reason. It is really killing the experience for many new players
Here’s a simple script that will teleport players in-game to the largest server if there is one available.
- It will essentially determine the largest server using messaging service and teleport players to that server, it checks every 5 seconds.
- There’s a
TELEPORT_THRESHOLD
constant that will determine the maxmimum amount of players that the script will act upon. Because if we have two fairly large servers with a few spots, we don’t want the script to constantly teleport players back and fourth. - I’ve tested it in one of my games and it has worked fairly well, though let me know if there are any issues
Obviously this is not a perfect solution but it will help a lot
-- Author: Rae3504
-- Date: 25/04/2021
local TeleportService = game:GetService("TeleportService")
local MessagingService = game:GetService("MessagingService")
local Players = game:GetService("Players")
local ServerList = {}
local TELEPORT_THRESHOLD = 0.5 -- This script will only teleport players if the player count in the server is less than Players.MaxPlayers * TELEPORT_THRESHOLD
local function TeleportPlayers(JobId)
for i,v in pairs(game.Players:GetChildren()) do
TeleportService:TeleportToPlaceInstance(game.PlaceId, JobId, v)
end
end
local function CheckServers()
-- Determine if on the list of servers that we have, there is one with more players
-- If so teleport to the server with the most amount of players making sure there is enough room for all of the players in this server
local playerCount = #Players:GetChildren()
local largestServerCount = 0
local largestServerJobId
for JobId, ServerData in pairs(ServerList) do
if ServerData.PlayerCount > largestServerCount and ServerData.PlayerCount + playerCount < Players.MaxPlayers then
largestServerCount = ServerData.PlayerCount
largestServerJobId = JobId
end
end
if largestServerCount > playerCount and playerCount < Players.MaxPlayers * TELEPORT_THRESHOLD then
TeleportPlayers(largestServerJobId)
end
end
local function Start()
-- We can generate a list of all the running servers with a fairly accurate player count by listening to this topic
local subscribeSuccess, subscribeConnection = pcall(function()
return MessagingService:SubscribeAsync("ServerData", function(message)
if message.Data.JobId ~= game.JobId then
ServerList[message.Data.JobId] = {PlayerCount = message.Data.PlayerCount, LastRecieved = tick()}
CheckServers()
end
end)
end)
spawn(function()
while wait(5) do
-- Every 5 seconds we will publish the amount of players this server has and its JobId.
-- MessagingService request limits I don't think will be an issue here, otherwise we can always increase the delay
local publishSuccess, publishResult = pcall(function()
local message = {PlayerCount = #Players:GetChildren(), JobId = game.JobId}
MessagingService:PublishAsync("ServerData", message)
end)
if not publishSuccess then
print(publishResult)
end
-- Prevent memory leak
for JobId, ServerData in pairs(ServerList) do
if tick() - ServerData.LastRecieved > 60 then
ServerList[JobId] = nil
end
end
end
end)
end
Start()
ServerFillerService.lua (2.5 KB)
This is still an issue:
My game has max 80 slots with 20 slots resevered, as you can see i am nowhere near that but it has already split up into several servers. Is this for regional reasons? If so then that would make perfect sense but it would be nice to have some clarification, it’s hard to tell if this is even a bug or intended behaviour
I would use what @Rae3504 suggested.
I edited his script and made it an optional GUI pop-up instead of an automatic mandatory teleporter that I may open-source in the future if people are interested, and it works pretty well and I have yet to see any empty servers more than a couple times.
The only drawback is that it typically takes around 2-3x longer for servers to update after publishing an update, but it is 100% worth it in my opinion.
When I see 1 server with 15 players and 3 other servers with 5 players… in my server with 99 max players
This is a horrible bug that makes it very very very very very very very very very very very very very very very very very very very very very difficult to grow a server that relies on high player counts.
A year later, roblox, if this is going to function incorrectly without any fix please label it correctly - the setting very very very (this again…) clearly does NOT represent the actual function of this setting.
Everything in this server sums up PERFECTLY my issues with this system. It does not do what it says it should do, and any excuse that it’s performance related is silly - If I cared that a 50 ping player was paired with a 500 ping player, I simply would not have enabled the fill option.
Dear Roblox:
Fill means fill.
“Fill each server s full as possible” means “Fill each server s full as possible”.
It does NOT mean "“very vaguely sort of prioritize filling a server, but in reality, not really do that much at all”
This is an ongoing issue that deserves ongoing attention - There are MANY cases when the number you set as the player count should be adhered to as close as possible. I was going to suggest having a separate setting for adjusting how many slots you WANT to keep open - But I just remembered.
We DO have that setting.
So we have a setting for letting Roblox do what it wants.
We have a setting that tries to force Roblox to fill servers.
…And we have a setting that lets us customize reserved slots.
If the Fill setting doesn’t work, whose willing to bet the custom slots one doesn’t?
This issue has been going on for a long time and it’s been effecting a lot of games… honestly, if they don’t intend on fixing it they should at least change the label to represent it correctly.
when devs tick the “fill as much as possible” option they expect roblox to ignore all parameters and simply send players to the largest server until its full, regardless of their distance from the host…
Why is this still an issue, it’s kind of ridiculous in games that rely on a lot of players to fill the map and spark socialization. It also heavily affects new and small experiences by lowering retention.
I will continue to post on this thread EVERY TIME it happens - Which is every time the playercount falls below 20.
Let me make this perfectly clear.
This is NOT caused by people blocking other people, ping, or anything like that.
If the game manages a single server 90% of the time in my 99 player game when it’s above ~30 players,
but somehow fails to do so at below 20,
Then, statistically speaking, that is WAY more likely to be roblox’s issue. If there’s more players and it’s caused by any one of the excuses listed here, then there should be even more fragmentation. but it ONLY happens at low player count, exclusively.
I saw people talking about it being because people are in different regions, and I think that’s probably the case here. If the server is hosted in NA for example, people connecting on the other side of the world may have a really high ping so it isn’t really an option to put them in that server, rather a server hosted closer to where they are. So I doubt this will be solved anytime soon. I think for now the solution I posted above is really the best option