Replication filtering is a feature that prevents changes done on a game client from propagating to the server. It can be enabled by changing the value of the
FilteringEnabled property of the Workspace. When the
FilteringEnabled property is set to true, changes done to properties of the DataModel (the game object) and its descendants will only replicate if originating from the server, and otherwise will be ignored. This effectively prevents most exploiting, since players in a game can only modify how the game works and looks for themselves: their changes will not be replicated to the server and then to other players, and remain harmless.
This works by separating the instance between the ROBLOX server and client, and no longer taking any changes done from the client to the server, unless specifically programmed to by the developer so that the server looks for any changes done to the client, usually via RemoteEvents and RemoteFunctions.
Because general exploiting uses the random-access memory's values, and then modifies them so that when the central processing unit queries the random-access memory cards for data values and then sends what it finds to the ROBLOX client and in turn, the ROBLOX Server, an exploiter may change nearly all aspects of a game on ROBLOX by simply modifying his client's interpretation of the game. FilteringEnabled fixes this by simply blocking any future changes to the server from the client, which also causes some scripts to break as they rely on the server taking input from the client.
This is required for users to play a game if the Account Restrictions setting is on, under Security settings.
- When a LocalScript modifies an object in the game, the change will be made on the client, but will not replicate to the server. For example, if a LocalScript creates a part, the part will only exist on that client's data model. The server will reject the change and not replicate it to the other clients. This makes it possible to create local parts.
- Enabling this feature will break the majority of legacy vehicles and gear, because their scripts still depend on replication from client to server. To develop games that still work with FilteringEnabled, you need to have clients communicate with the server through RemoteFunction and RemoteEvent.
- When this property is true, a Player's PlayerGui will not replicate to the server. It will only exist on the client. This means that Scripts within PlayerGui will not run, and the server will be unable to access it.
- Enable "PrintFilters" from Studio Settings > Network > PrintFilters to see what's being filtered. This is very useful for debugging scripts.
How to Enable FilteringEnabled