How to STOP player character physics from replicating?

So this might perhaps be a bit of a weird question, but I’ve been sorta looking for a way to completely stop player character physics or network-owned objects from replicating.

I still want characters to have physics but have them not replicate at all.
I might want to implement my own replication system with player position prediction and everything.

I know how to implement and script most of the stuff but there just doesn’t seem to be a simple way to just tell the Roblox client to completely stop replicating any position properties.

I want to reduce network bandwidth usage and replicate every property change manually and only with the information I need.

I’m not sure if simply anchoring the player’s character on the server and unanchoring on client does the trick because even though it might be anchored on the server and all.

The client might still be attempting to send player position data to the server but the server might just be denying it while still using bandwidth for sending the data.

3 Likes

I’m honestly not sure it’s even possible to stop that replication.
Maybe you could make an alternative character that is not the player’s but actually controlled by player’s keyboard if you know what I mean :thinking: although it seems a bit overcomplicated…

1 Like

I’ve considered the idea of rewriting the way player characters are spawned so I can control all replication.
The downside to it though is that it’s a very hacky and complex solution to a problem that should be simple.

I COULD do it but I feel like it might just end up making my projects a pain to maintain and not to mention all the potential bugs that could occur if a player decides to do something weird or unexpected.

I might give it a try since I’m already rewriting camera and character controls anyways.
Though a better and more clean solution is preferred.

Why exactly do you need that ?

I wish to do replication of physics and whatnot manually since there is just a lot of data that often comes with it that I don’t need.

One of my projects is a top-down shooter and I want to reduce data and bandwidth by possibly manually replicating all player movement.
In a top-down shooter I can discard a lot of information like axes from vectors and rotations.

Players only move on the X and Z axis and only need their Y rotation replicated.

On top of that, Roblox usually uses 32 bit numbers but this is way too much precision.
By using buffers with 24-bit numbers for position and 2 bytes for rotation I can shave off a lot of data.

All of this I can implement myself, I just need to figure out how to make player characters fully stop replicating automatically.

There’s a bunch of other things I want to replicate manually using custom methods as well but the details of that aren’t relevant.

I just need some way to make Roblox client stop sending physics and animation data to the server.

Some people might argue that such extreme optimizations might be unnecessary but trust me on it that I KNOW what I want and know why I need it.
The only thing holding me back right now is the lack of control over some things that are replicated by default.

1 Like

You have to basically just clone the player from the client. You can still use humanoids I think, but you just need to clone the model containing it then reparent it to the workspace via a localscript so it’s not automatically done for you and automatically replicated and all that. From there, send the simplified & serialized data you want to the server then back to the clients.

Coming back to this topic I’ve found something that might work.

I’ve considered attaching the player to an anchored part using a Motor6D, place something like a invisible rolling ball on the client and let that be the player’s client-simulated physics.

To update a player’s position I would then change the Motor6D’s transform property.

The upside this also has is that in theory I should be able to update the Motor6D’s transform on the server as well and it still should not replicate.

Using this I could also implement things such as player position prediction and reduce the jankiness of say… hitboxes and projectiles.