Selective Replication

As a Roblox developer, it is currently too hard to have the server perform large simulations without unneeded heavy replication traffic.

If using a custom network where Clients have their own copy of a model or where clients are manipulating it locally for uninterupted animation, like platform trains and ships, the Client will still recieve the replication data from the ServerCopy if the developer needs such for verifying network requests and physics behavior.
Even if the client deletes the serverCopy and erases the reference, the server still sends a boatload of replication traffic not knowing better.
It is important to be able to toggle replication of Model CFrame data and other changing properties as to not waste bandwidth, and allow largescale uninterupted model movements and behaviors with little to no traffic by having clients synchronously draw the behavior locally.

If Roblox is able to address this issue, it would improve the development experience by advantaging the replication volume to more vital tasks, allow for greater, more complex and performant front-end client-server architectures while still allowing the server to perform sanity checks for player interaction and events.

29 Likes

If I’m understanding what you’re asking for correctly, could you not just have the Client tell the Server they don’t need the information and have the Server not send the data to those Clients?

Well this is the exact request. We as developer do not have this say with Physics and property changes on the server.
The big thing is having a server copy in-position to verify client requests. CFraming the server model however is automatic replication volume. The solution is to reduce the server copy rate, but then that reduces accuracy.

There’s a whole problem with changing constraints that this could resolve. Much of the noise is caused by the client having to fire off to the server a adjustment on change but not loop on the return change for that property.

1 Like

I thought you were saying you were rendering it on the Client and just having the Server sending the location to the Client.

That’s my bad.

Yeah it is better to think of it in terms of NetworkOwnership. If you want to make a physics block that has absolutely no risk of client interference, you have to make the block unanchored on server, destroy it on client, then manually replicate its info to an anchored clone on the client.
Network Ownership also has wonky shared zones, red in debug, which were causing me problems. So I manually flipped to a extension of that were the server or client becomes authoritative of a unanchored assemblies movement and it replicates accordingly.

Problem is now you have the actual unanchored data still repping for no reason which your custom implementation is adding on to.

Overall replication decisions can be quite arbitrary and so its always generally better to give power to developers.

2 Likes

As an advanced feature, this could be quite useful - however I think the risk is that people start just allowing everything to make their programming easier, which defeats the whole goal of Network Filtering anyway.

Probably would be better to roll out “Respect Filtering Enabled” style properties to individual things like Sounds or Constraints, so that you can control certain properties that would be useful to replicate, but only in specific circumstances for things like physics objects.

I fully agree with this. There are so many applications, such as making a fog of war, where things cannot be passed on to the client because they could start cheating. Fog of war is an aspect of many MOBA games such as League of Legends, where there is something called “Vision” in which you can only see things that you have vision of, anything else becomes empty(it will not replicate, until the area is revealed again). This feature will enable us to do that, as of now, the server cannot selectively replicate objects to clients, totally removing this possibility.

1 Like

Click the dropdown arrow:

1 Like

We are close to this dream. We only need streaming out be not client editable, maybe byfron will enforce this (but I doubt)? But sure zones are better than streaming out.