With StreamingEnabled sometimes a SeatWeld is not streamed in to a client

In our game, Aftermath, we are noticing that sometimes when a player is driving a vehicle, and drives in to your streaming radius, there is no SeatWeld replicated to your client. This results in their character (which gets streamed in) falling out of the vehicle, as there’s nothing holding them together.

My friend and I were using an in-game explorer and while playing, someone drove towards us and had this issue. On my client, the VehicleSeat did have a SeatWeld which welded his character to the vehicle. On my friends client, there was no such SeatWeld in the VehicleSeat, so the character was not attached.

My perspective:

Friends perspective:

As you can see, he is experiencing some-kind of desync with the server, and the Weld is not being replicated to his client. We have no way to reliable recreate this, it is entirely random and only happens on online play. The SeatWeld is created with VehicleSeat#Sit() function, so nothing about this is custom. We have tried testing this with a team test but have never been able to reproduce after hours.

Expected behavior

I expect that all objects that exist on the server are replicated to all clients when they are supposed to be streamed in

A private message is associated with this bug report

3 Likes

Is this new behavior? When did you first observe this?

2 Likes

About a year ago, maybe a bit longer. We never made a bug report on this because we never confirmed that the SeatWeld was missing on the client.

How frequently does this occur? More often on some platforms than others?

I assume if you just put the vehicle on a baseplate it doesn’t repro? Is the driver seated well before they are streamed to the clients? If they drive away and come back does it behave the same?

1 Like

We have tried every possible way we can think of to reproduce this. Never happens on a baseplate. Never happens in studio (Even on our giant 16k x 16k map via team test). Once it happens, even if they drive out of radius (for our game its 3000 studs to stream out), the weld does not seem to get streamed in upon re-entering the streaming radius

Online, scenarios like:
(Clients A,B,C)

  • Client A joins game and locates C, then Client C gets in a car
  • Client B joins afterwards, and locates client C
  • Client A and Client B join game at same time, and locate Client C
  • Client A and B join game at same time
  • Client C gets out of car, then back in car, then drives in to streaming distance of both A and B

We have never, not once, reproduced this by ourselves. We have only ever experienced it just after playing the game for awhile. Sometimes it happens pretty quick (~5/10 minutes), sometimes after hours of play, sometimes never at all.

We have no custom logic that touches the seat weld beyond setting the cframe of it for positioning (On the server)

Here’s a video someone took in our discord earlier: