Recently there has been a massive amount of hate towards Roblox for their experimental mode changes. Most recently not allowing anyone apart from friends of the game owner play the game. While there are some good arguments as to what Roblox could’ve done differently, I’ve noticed that a large number of extremely negative views exist because people don’t really understand the reasoning behind it, or how FilteringEnabled works.
As I said on the most recent thread, I believe that Roblox could have handled this much better by making it clearer to non-programmers and less skilled programmers why this change is so important.
Nearly every other web-based service uses the same system that Roblox does in FilteringEnabled
Roblox is not adopting something new here; every single website on the internet uses the Client - Server model, otherwise known as FilteringEnabled on Roblox. Also, most games you play use it too; Fortnite, Pubg, Counter-Strike and many others all use Client > Server > Client communications, in other words, they all have dedicated servers for each play session online.
On the other side of things, games that are extremely heavily exploited such as GTA 5, Red Dead Redemption, Destiny 2 and CoD Advanced warfare all do not have a central server which replicates, validates and processes information. This results in a massive amount of exploiting in these games.
FilteringEnabled prevents nearly every replicated exploit
Ever been in a game where you’ve been teleported, killed, forced to play certain animations in your character by an exploiter, the game plays inappropriate music universally or inappropriate images are placed near to you? FilteringEnabled prevents this entirely.
If you load a baseplate with FilteringEnabled ticked right now, the only things any exploiter will be able to do is no-clip, teleport and anything else to do with their own character, but they will not be able to do ANYTHING to any objects in the game, the characters of others, or even their stats (so long as they are leaderstats).
What this means is that unless your scripts are programmed in a way that makes them insecure, exploiters essentially cannot do anything which makes the game unplayable for others, or even affects their gameplay experience. They wont be able to change stats, get weapons they’re not supposed to have or any other common exploit which doesn’t just involve their character.
How does FilteringEnabled prevent exploits?
Well, it’s very simple. In an experimental mode game, players are free to edit anything at all in the entire place, and that change will be replicated (i.e. shown to every other player) to everyone else in the game. What this has meant in the past is that things scripted for Experimental mode, such as guns, will kill other players and change stats directly from the client scripts (local scripts) in the guns, which is essentially the same as one player having the absolute power to kill any other player and change any leaderstat in the entire game.
On the other hand, in a FilteringEnabled game, players must ask the server, which is a completely seperate entity (it’s actually a real life computer in a completely different place to all the players in the game) to kill the other player, this means that exploiters can no longer edit anything in the game without asking the server to do it for them; and if the server says no, there is no method of killing them at all.
You can literally make Experimental Mode in a FilteringEnabled game.
Converting your scripts to work with FilteringEnabled isn’t actually that hard, if you want to, you can convert them to FilteringEnabled while maintaining the same weaknesses that Experimental mode has simply by putting RemoteEvents and RemoteFunctions where you need to do something which can only be done on the server.
Here's a video I made a while ago which tells you the basics of how FilteringEnabled works.
Please note that there are a few mistakes in this, but they don’t change the overall validity of the video:
In the end, it’s annoying, sure, but it’s definitely worth it if you ask me.