Why do objects that are client-sided (like body movers) also effect the server?

I’ve been working on a grab mechanic that uses BodyVelocity. Currently, I’ve made it all in a local script and haven’t made it server compatible yet. However, when I was testing it I noticed that everything moves on the server too.

Client is left side
Server is right side

^glass moves in the server as well as the client

I was wondering why this happens, as this would be really easy to exploit. Also, is there a way to disable it somehow?

It’s about who is the network owner. Network ownership is automatically transferred between server and clients for unanchored parts unless you explicitly set the owner. This is how vehicles can be so smooth without needing to be locally created.

You can SetNetworkOwner to nil which should prevent it from being automatically set so it won’t change back. Only unanchored BaseParts can have their ownership changed.


If I was making a vehicle using local scripts to move it, wouldn’t exploits be able to speed hack the vehicle?

Yes, if you just used the default mechanics.

If the speed of your vehicle’s were critical to your game mechanics then you’d want to have some validation on the server.

Otherwise, it’s no big issue if it doesn’t ruin the game, which is why most games don’t put extra checks in place.