Network ownership replication only works for unanchored parts, this behavior is annoying.
One solution I found is setting the root part’s linear and angular velocities to Vector3.zero every frame and unanchoring it, but it doesn’t look very good in the server because the client and server have different frame rates, doing this every frame looks fine in the client, but the server sees the client’s character being affected by gravity, especially if the client has a low framerate.
What are some ways around it?
Also, searching about this in the devForum I didn’t see anyone discuss using remote events, is this bad practice? Or is the replication just worse?
You could try fiddling with Constraints/Welds, or maybe give them AlignPositions and AlignOrientations with their forces maxed out.
Just change the goalpoint for your Welds/Aligns each time the player places them down, or deactivate/tweak them if you want the Player to be able to knock them around or drag them.
To counter the gravity, I used to put LinearVelocity (well, BodyVelocity but thats deprecated now) to lock the velocity to 0 and it seemed to work great for my use case
And for the Remote events, they’re too slow and memory-intensive to fire every frame so they’re usually not preferred
But Roblox did add a new Unreliable Remote instance that’s more suitable for this so you could take a look at that:
I’ll try all the suggestions and come back later, thanks to both of you!
I just thought about this because for character rotation based on client inputs (i.g torso pointing up or down based on the camera angle), I’ve always seen people use remote events.
But I’ll avoid them and take a look at the unreliable remotes, thanks for the insight.