As a roblox developer it is currently hard to make a good looking ban system, yes you can have fancy guis and all. But how about IP bans or internet bans? The players not even being able to click play with a little message “You are currently banned from this game for n days, n hours, n minutes.”
bans:BanPlayer(int userID, int duration (in seconds.), bantype bantype) - Obviously developers would not see the IP or the internet IP or HWID only roblox would and they would ban player based on the enum.
bans:UnBanPlayer(int userID) - Unbans that player no matter their ban.
bans:UnBanAllPlayers(bantype bantype) - Would unban all players based on their ban and the bantype the dev chooses in case an admin script banned everyone. CAN NOT BE USED BY SCRIPTS.
This would make banning systems look alot more clean and reduce the use of :Set/GetAsync() and datastores.
I would prefer a generic method to prevent a player from connecting rather than just banning. This would be useful for server white lists and server shutdowns.
The reason why some devs create a ban list for their games is because they might think its necessary as simply reporting the player with the report abuse button is not a quick enough response because you will be surprised how malicious some people can be to the game’s community, so having a fast and effective method like an in-game ban list is sometimes necessary to deal with a very bad situation as swiftly as possible. But with that being said, ban lists can easily be prevented by players making an alt account. I have witnessed people making tons and tons of alts to target players and staff for a game just because their main account was banned or just because they were having fun causing trouble like it was some entertainment for them to bully others so banning them was obviously necessary for breaking one or more of the rules that Roblox has in place, and/or rules that developers have in place for their community. Games that have their own staff team are there to make sure the community for the game is safe for everyone and the developers. They deal with the community while the developers focus on updating the game because most of the time the developers are so busy they don’t have time to deal with trouble makers in their own community. Lots of players will always go to a higher rank or the developer if they need help in said games before bringing it to Roblox themselves because to be honest I don’t think Roblox should have to deal with every single communities problems, so having a dedicated staff for the game helps the developer even if its voluntary or paid service. One time it got so bad that a couple players threatened to completely quit playing that particular game and/or Roblox entirely because another player wouldn’t leave them alone in said game and even followed this player to other games they played. Other reasons to ban are for things like exploiting and other malicious activity that unfairly gives the player an edge over others, effectively shooting up the leaderboards in the game at an obvious rate that couldn’t normally be possible. Of course there is a rule I have heard that if the game is having an official Roblox Event that the ban lists need to be disabled because everyone should have a chance at getting a Roblox item from the event but once that event is over the ban list can be enabled again. The only issues I have noticed so far with custom ban lists is the fact that its impossible to prevent a player completely just because they can make alts with ease and continue causing trouble in less than a minute. So I guess I have made my point on why I think ban lists are necessary and why I think it should be expanded upon to help make communities on Roblox safer for everyone.
I feel like the last thing you want to do is entrust novice game developers to have such power. If you mess up your code, you might start banning lots of players on accident. Then those players get mad and don’t want to play Roblox anymore. It’s a lose-lose situation.
I know people will disagree with me, but I think that banning players is pretty harsh and should only be done in the worst scenarios. And of those worst scenarios, it would probably be more appropriate to use the Report service built-in. Perhaps try to program your game to prevent bannable offenses first.
Exploits are hard to prevent even with FE enabled as it is, because not all devs know how to prevent even the simple stuff and even the best of the best can’t prevent everything.
Banning is a bad practice in general. Your system should be robust enough to handle exploiters while ensuring others can continue to enjoy the game fairly. Games always try to avoid banning players until it’s absolutely necessary and if that’s the case then this is something Roblox should be handling directly.
Unfortunately if you don’t know how to design your system in such a way, then learn. You’re a member of the developer forum after all so use that to your advantage. There’s plenty of more talented developers here that you can ask for advice on how they deal with situations like this.
Furthermore, if you can design a system that’s reliable enough to detect and hand out bans fairly, then you’re more than capable of designing a system to prevent these actions. If you’re suggesting you’d ban players manually then enjoy dealing with rapid scalability.
No serious game developer should use this feature unless there’s no better alternative, in which case implementing it through datastores should be simple enough.
Of course security should be a developers top priority. But I still have to support this post because sometimes reporting and exploit prevention is not enough. I have a group of haters who are extremely toxic against me and are doing everything to ruin my game on Roblox, trying to steal it, copy it and are being extremely hateful towards me and my community. I have reported them multiple times and sent an email to Roblox, but they are not doing anything helpful so the last best thing I could do would be to just ip ban them from my game so they wouldn’t create alts to harrass me even further.
AAA games ban players, I see no reason why we should not be able to do the same with our games. “Get better security” is a bad excuse for not having a ban system.
Banning is not only for exploiters; it is also for trolls and harassment. In a game I had someone would come into the game everyday for like two weeks and just complain about the game and call my userbase “dumb” among other things. It would have been nice if I could have just ip banned them from the game, since admin commands just resulted in them pulling out an alt, and reports did nothing.
IP bans are a good idea in theory but terrible in practice.
If the network they are on is shared, you’re not just banning them, you’re banning other people on their network. Imagine if they were playing at school. Worse yet, what if they’re on an ISPs subnet?
Not everybody has a static IP address which means in some cases this is entirely redundant.
What stops them from joining your game on another network?
If a user is harassing your user base and yourself it sounds like you should be taking advantage of the Roblox report system and not attempting to ban them from your game. Furthermore, you’ve suggested a system that requires manually banning your players, this doesn’t scale well at all…
If there were any sort of IP banning implemented it should be on Roblox’s end and not ours.
While HWID is a significant improvement it still doesn’t take into account users that share a workstation.
Regardless, this should be handled by Roblox and not developers directly.
Let’s assume I really enjoy playing this game but the developer is not the most proficient scripter. They design an anti-exploit system which penalizes exploiters quite heavily. It turns out their anti-exploit actually throws false positives for high ping players. One day I’ve got a really poor connection, and suddenly I’m banned.
Now imagine that three of my five favorite games to play on Roblox share that anti-exploit system… What is the likelihood I continue to play on the platform?
I am not saying that banning is never the solution, just that it should only be done in the most extreme cases, and consistent across the entire platform. Moreover most of the problems users have discussed in this thread can be overcome through other means.
In regards to AAA games, bans are used to deter a certain player from repeating their actions, not to improve the experience of other players. Your game should be designed to stop exploits reaching other players in the first place so that other users never have a bad experience.
The harsh reality is a system like this would do more damage to Roblox and developers who use it than to exploiters themselves.
I feel that this is a bad idea, and the problem presented can be solved in other ways which are better for the users and the developers.
Security:
A hacker will easily be able to circumvent the ban by switching accounts and masking their ip. You should rather focus on using FilteringEnabled and ensuring that all your events are secure.
Trolls:
This is a task for the Roblox Report System. Contrary to popular belief it does work and is very useful. If you want to keep trolls from your game then I would suggest a vote kick system.
As other people have mentioned there is also the possibility of a script error or a rogue developer banning thousands of players from your game. It’s for a similar reason that DataStores can’t be deleted.
Currently a game I work at has a banning system, to immediately stop users who are bypassing the filter, being obnoxious to other players or otherwise engaging in rulebreaking activities, with a bit of a log so far.
As mentioned by other users in this thread, making a BanService isn’t quite the ideal way - banning players tells them they’re banned, and they’ll know they can bypass this by using an alternative account - if they can’t do that, they can tarnish the game and harass the developers and game staff for banning them.
The better solution, as I see it, is to make a shadowbanning system - this can’t just be a one-solution-fits-all, though, as you have to make sure your features, chat, etc. doesn’t break, and that the target of the shadowban won’t be able to notice that they’re shadowbanned - only that other players cannot see, interact with or receive messages by the target user.