Disabling replication of specific objects or properties

As a developer on Roblox, it’s currently extremely hard to stop specific things- specifically physically simulated objects - from replicating to the client. This feature request is both for disabling the replication of specific, targeted objects entirely, or targeted properties of them.

Why would I want to disable replication of specific objects or properties? Recently I’ve been working on custom humanoids, and they’ve been working very well so far with just player controls. They work using 3 BodyMovers and physics. These BodyMovers are created on the client, and the properties of them are not replicated to other clients because of this. This works just as I need it to.

image

When these BodyMovers are on the server, however, they automatically replicate their values when they get updated. This isn’t good for me because the clients do not need this data at all, and I’d like to be able to handle a lot of enemies at any given time - they spend more than ~1.25KB/s each. This is not good when I want to have at least 30 of these enemies active at a time.

image
~38KB/s with 30 enemies moving in a single direction
It makes sense why it’s so high- 2 Vector values and 1 CFrame value (x30) ‘updating’ at 20Hz

If I were to have the ability to disable the replication of specific objects, I’d disable the BodyMovers replication and would have significantly lowered my network receive, allowing me to have even more active enemies and have a smoother performing game.
This is just one use case, when I’m sure there could be many. Another use case I could think of is disabling the replication of specific users if they are invisible/stealthed- that way, players even with cheats can’t know what they are doing or where they are.

This could probably be implemented in a few ways - it could be with a ReplicationService with a couple of functions, or it could be a property on every Instance.
This could also be implemented alongside @Sharksie’s Selective replication idea.

Tell me what you think, and if you’ve found any other use cases for this (or if you know a solution to my problem! If so, reply on this thread please!). Thanks!

112 Likes

Are we ever going to have this? This would be cool to have

26 Likes

Yo roblox come on vro we need this

I have AI controlled units and they use a custom movement system without physics. Anything above 10 units and my network send and receive skyrockets because roblox is replicating all the properties in real time whereas if I had the option I’d disable the roblox replication and simply replicate the target position and have a verification ping every second or so to confirm the server and client match unit positions during runtime.

4 Likes

This is a pretty good feature request. Bump :+1:

5 Likes

Would be great to have this. Bump :+1:

3 Likes

Still needed. It’s possible to make your own system for this but any system is pretty much always going to be very case specific and be built on top of the existing replication causing additional lag

4 Likes

bump, we need this seriously bad

Custom instance replication will be released at the end of 2025,has been announced in the road map.

2 Likes

Absolutely need this.

My only solution to optimizing projects right now is to do everything completely client-sided and only use remote events and buffers to replicate things on the server.

But making an ENTIRE player character spawn just on the client, is a lot of work.
I literally have to completely re-invent how Roblox characters are handled from scratch because I can’t disable physics replication.

I also found that replicating character physics actually uses a lot of memory and bandwidth.

My replication method can reduce physics replication to just about…

9 to 11 bytes.

Yes, I actually found a way to reduce physics replication to a mere 9 - 11-ish bytes or so.

Position is encoded into 16 bit integers.
Rotation uses only a few bytes since we don’t actually need that much precision just to tell in which direction a player is looking-facing.

It all checks out, with my replication method I can dramatically reduce how much data is used.

Theoretically, replicating a whole group of about 50 players/NPCs with my replication method should consume only about 15 kilobytes per second if they were all moving at the same time,
updating their position roughly 30 times a second.

That’s even less data than Roblox’ baseline data usage (empty baseplate with just a single player).