What does FE-compatible mean? Someone mentioned it in one of my previous questions and I'm curious.
FE --> Filtering enabled
There can be a lot said about it but you just need to know the basics...
Filtering enabled (the option in workspace) makes it so the** client and server cannot talk to each other** (Setting a part from a client script will result in local parts, I'll tell more about that later) You cannot access the contents of the playergui from a serverscript for example.
The real question is, why would you use it if it makes your life a lot harder (because of needing to rescript a lot if you didn't make it FE compatible)
--> Answer: Filtering enabled is a great way to prevent people from exploiting. When the client (the player) can change anything inside the server, it will change it for all players, wich means that you can destroy other peoples saves, destroy the world, shutdown the server,...
The other question would be, how can I communicate between the server and the client.
--> Answer: Remote events and Remote functions, what these do is sending an event to the server (or client).
Another problem, remote events still talk to the server wich means exploiters can use them to break your game.
You should therefore, always test if a remote event sends the right values and never use them to give someone money, remember, tools can have both local and server scripts.
What won't work when you turn on that Filtering Enabled button --> Client scripts inside server areas (like workspace), and reversed, server scripts inside client areas (like the playergui).
What you also need to know
--> Selecting a player can be done from a localscript like this
local player = game.Players.LocalPlayer
--> From a serverscript you have multiple ways
1) game.Players.PlayerAdded:Connect(function(player) -- Code end) 2) for i,v in pairs(game.Players:GetPlayers()) do end
So, local parts
If you do try and create a part/ change a setting using a local script, you will get 'local parts', basicly,** things created by the client, so only the player can see it,** if you change a value, only the player would know it, and datastore wouldn't, that's a big problem sometimes.
Another thing, some services don't work inside the client/server and only work inside the server/client, you can find that on the wiki wich ones you can use where (datastore for example is server only)
You should get used to remote events, read about them here
So FE compatible basicly means that your code/script works using FE enabled.
This is always highly recommended so I mostly post a comment on a question/answer when someone forgets to use it.
Hackers and exploiters can ruin games.. so get started using it real quick!
If you have more questions, just ask :)
It is a built-in networking filtering feature provided by Roblox. It is deemed mandatory in game development.
Network filtering is the process of filtering requests created by the client to the server. This is due to the lack of trust between client-server communication.
When Filtering Enabled is turned on, you will have to script appropriately in order to communicate between server and client (vice versa).
To switch on FE mode you will have to check whether the option in the Workspace service is ticked. Thanks please have any more questions.
FE stands for FilteringEnabled
FE-compatible means that your script will work fine even if your game has FilteringEnabled
turned on.
Oversimplified, what FilteringEnabled
does is prevents LocalScripts
from changing anything but stuff related to own player such as position. So if you create a part with a LocalScript
when FilteringEnabled
is on, only you will see it.
This is to prevent exploiters from modifying your game.
Read further here.