Client-Only Parts still Send Network Data

Creating BaseParts on the client and locally simulating physics sends physics replication for those BaseParts to the server despite the server having no concept of those particular BaseParts.
This adds tons of unneeded overhead and clogs the network with useless packets and can delay more valuable packets.

This is very easily reproducible 100% of the time, and I have provided a file to do so below.

PhysicsClientNetworkBug_ReproFile.rbxl (28.8 KB)

For those of you currently unable to run this file yourselves, I have recorded it for you to view here.


Bug was noticed and brought up in this thread:

54 Likes

I’d have to check but this might be something I’ve experienced as well when using a lot of parts and physics. Posting here to help this gain attention.

6 Likes

I think this is partially due to the fact that the engine has no knowledge that the part was created locally, and such is not replicated, meaning it will send physics data over the network regardless.

I assume a fix would be extremely easy here, just tag the part saying it was created locally.

Its probably just an artefact of Roblox’s RCC client from when before FilteringEnabled was added.

also yes can we get this fixed

7 Likes

Hey boatbomber, thank you for the report and repro! You’re right these updates are pointless and use up bandwidth, this looks like a simple fix (we already do this when streaming is enabled). I’ll update when it’s fixed, or if there’s some problem preventing it from being fixed.

44 Likes

I merged in a fix for this yesterday, will edit this post when it’s enabled (should be next week).
Edit: There was a bit of a delay waiting for all platforms to get the fix, but it should be live everywhere now.

15 Likes

Sorry for bumping this, but one of my old projects that only uses client created parts has started replicating a lot of data to the server (20kb/s!)

I can prove that deleting the parts locally stops the upload.

Are there some other tools available for figuring out what is going on?

Is this fix still in progress?

This specific issue was fixed, I just double checked to make sure.

You can take a look at some network stats in Studio by going to View > Network (far right side of the View section). There should be four categories (Data, Physics, Touches, Clusters). In which category are you seeing the 20kb/s?

1 Like

These little guys, who only exist on the client, are generating upload.

networkIssue.rbxl (45.5 KB)

I’ve attached a place with some simplified code that reproduces the issue.

So to clarify the core of what I’m doing…

The client is cloning a model out of replicated storage, attaching a bodyposition and bodygyro, and then moving it around.

For some reason the sequence of events that I am doing causes this to replicate upstream?

Ah I was talking about a different stats widget – on my (Mac) laptop it’s Shift+⌘+F3.

image

I see, so it is physics data being sent. Could you post the place file here or DM it to me?

Yup, here you go:
(Please forgive the awful code, this is stripped out of a bigger project!)
networkIssue.rbxl (45.5 KB)

The client isn’t doing any cloning in your example – the server is. The client just reparents the models to be under proxy.Parent, but never actually makes a local copy. If you want a local copy I’d probably change this line
local model = game.ReplicatedStorage.clientmodels:FindFirstChild(modelName)
to:
local model = game.ReplicatedStorage.clientmodels:FindFirstChild(modelName):Clone()

1 Like

Oh! Well that’s half the mystery solved!

Actually cloning the model out of replicated storage works. No more upload! Thank you.

So is the bug if you just reparent something out of replicated storage, it tries to upload its physics?

1 Like

Digging around I’ve found something that might be unexpected.

image

See the 61 parts inside of “Parts”? Those are all inside of ReplicatedStorage! They’re the only parts in the scene besides the spawn and baseplate - the game isn’t even executing. Not sure this is what was intended for that counter - maybe it’s indicating something is happening that shouldn’t be?

It’s a bit complicated since the model that was reparented isn’t actually local so the client doesn’t know it shouldn’t be sending physics updates. We don’t have any immediate plans to change that behavior, so if you’re worried about Client → Server bandwidth then I would suggest creating a local copy (with :Clone()).

Your second screenshot is not a bug, that counter tracks how many parts there are in the DataModel (i.e. everything under game), not just the Workspace.

Thank you! Appreciate the feedback and help!

2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.