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!

43 Likes