I have a game for talking in a voice chat (Russian Place / Русское Место). There are some not-so-friendly players who create a queue for the server using bots. Because of this, instead of going to a regular server, regular players end up on an empty server, and no one can join them either. Is there any way to prevent this?
(and ye, sorry if i selected wrong theme, idk what to select lol, i think it’s possible to prevent with scripts)
Edited: it’s IMPOSSIBLE to fix, players just got the job-id of the server and starting sending bots.
the bots are queuing up for the server, the game, and the server that the players want to enter - it’s IMPOSSIBLE, because of this, the players enter an empty server.
here is a screenshot (there are no bots in the game, only in the queue):
Well, what I know for sure is that this problem has nothing to do with network issues, it’s being caused by exploiters, as I overheard a conversation between the players who were doing it, and I know it was caused by cheats. In any case, thank you for responding! I will continue to search for a solution, if there is one at all.
server size is 50, but I don’t know how people do it, the screenshot wasn’t edited in any way, people sent me videos when they tried to log in to the game, and there was a 960 queue (on video queue is 711):
How does this occur? How can someone achieve this level of exploitation? Wouldn’t this be known from other games? Is it possible this is just an issue with your game?
I know about this, but it happens so often that some of my players start losing their dates because of server restarts, so I’m looking for a different solution.
Oh those are just the bots that Roblox uses to inflate their player count, usually they only appear on the most popular games like Grow a Garden etc. You’ll find these super long queues in every full server that has only default avatars and 1 + the max player count. (see image below)
The reason they make massive queues is to conceal the fact that they are botting games. They don’t want someone to join one of those servers and see that every player is just standing around doing nothing, but also to keep the player count up, since the bots don’t do anything but boost player count they get kicked by the AFK timer after 20 minutes, once a bot gets AFK-kicked a new one joins immediately while preventing legitimate players from joining and finding out that the server is just bots. That is also the reason you commonly see stuff like “6 out of 5 people max.” The second a player gets kicked for being AFK a new one joins from the queue and it appears for a brief second that there’s 1 more than the max player count in the server. You can’t do anything about it because it’s Roblox themselves who are doing this to make it look like more players exist on their platform than there actually are, to get more people to invest their money into Roblox.
Well, I just want to give an idea and how to realize it.
Idea:
If account age is lower than x days, then reserve a private server, teleport this player there, and let him complete a CAPTCHA. The private server should be created for a special place, under the same game. This place will have some kind of CAPTCHA. A player will have to answer any questions (there is up to you how to make this captcha), and the server will have to decide whether to let the player in, or block him from the game for x days. Next time player joins the game you’ll check his status. If the status is nil, then let him complete this captcha, if the status is Verified then let him in the game, if the status is Blocked, then check when was blocked. If he was blocked for more than x days, then set the status to nil and let him complete the captcha once again.
This system will quickly teleport unverified players from the game to pass the verification. By reserving a server, we’re creating a separate server for each player, in order to not make any more queues in the verification place and the main one
Structured plan for joining the main game:
Player joins the main game.
Check for player’s status using StatusStore (data store). StatusStore:GetAsync(userId). Tip: use this structure for status value: {name: string, blocked: number?}, I mean table with a name and a blocked value, but blocked value can be nil (we’ll talk about this more in the 4th step).
status.name == “Verified” (let a player in)
status.name == “Blocked” (the status.blocked value will not be nil, and we’ll set it in the verification place in the verification plan later. We’ll set there a workspace:GetServerTimeNow() value. Now, we should check when the player was blocked. And just for an example, we will have 3 days long block period. Write such statement: if (workspace:GetServerTimeNow() - status.blocked) > (3 * 86400) thenthe player already waited enough time in the block period. Set his status to nil (StatusStore:RemoveAsync(player.UserId)), teleport him to the verification place once again to complete the captcha again (the next step shows how to teleport).elsejust kick the player from the game)
The player should answer or do anything you want him to do. But the main purpose of this, is to make a remote event request from client to server. Use ProximityPrompt, ClickDetector, Touched event, GetPartsInPart, or whatever else, and workspace:GetServerTimeNow(). All these functions can help you make a secure captcha. You should check for timings, because exploiters can easily trigger remote event as they completed captcha. So, make the system smartly.
This step assumes that client sent a request to a server. If the answer is correct and player haven’t answered after 0.0001 seconds (do any checks you want), then we can verify the player. Otherwise block him.
DataStores are shared between all places under a single game. So we can use that StatusStore without any doubt. If the player answered correctly, do this: StatusStore:SetAsync(player.UserId, {name = “Verified”} and teleport him back to the main game. Otherwise, block him by doing this: StatusStore:SetAsync(player.UserId, {name = “Blocked”, blocked = workspace:GetServerTimeNow()}) and kick the player, don’t teleport him anywhere.
This is the main verification system. If you want, you can make verified status as temporate as blocked status.