✓ Accepted answer
This answer assumes you are using FilteringEnabled. Use FilteringEnabled. There is no down side :)
Read - only
Only a few objects are not "owned" by the server.
Anything owned by the server can only be changed by the server -- clients requests' to change the values will be ignored.
That means that a cheating player can change the way they see the world, but
- those changes won't be visible to other players
- the server will not see the changes and thus will not save them -- cheats will be lost upon rejoining
The objects not owned by the server are
- the local humanoid
- most objects in PlayerGui
Objects in the Player object itself (e.g., the leaderstats) are owned by the server.
Invisible
Even though clients can't change anything in the world, they can read anything sent to them.
Thus, for both performance and security, it's better to not send them more than they need.
ServerStorage and ServerScriptService are not sent to clients at all.
That means information that only exists in those services cannot be directly learned by clients. Only a Script object can convey that information / create those models / etc.
1 comment
Thanks for the insightful answer! And yes, I am using FE.