Seat and Character streaming out and in again causes Seat.Occupant to be nil

Hi!

For some months, we got reports from our players that the game displays a “Sit” interaction even though the seat is blocked by another player. After some testing, it seems to be an issue with StreamingEnabled.

While it seems to be a general issue, this is the game it’s happening in: Emergency Hamburg - Roblox

Reproduction Steps:

  1. Be near another character while they get seated in a seat.
  2. Move away so that the seat and the other character are streamed out.
  3. Come back and the seats Seat.Occupant will be nil on the client side, even though a player is sitting in the seat and it is set on the server side. This causes the “Sit” interaction to be visible even though the seat is blocked because Seat.Occupant is nil.

Re-entering the seat causes Seat.Occupant to be correct again.

Info: My game sets the character streaming mode to atomic - I am not sure if this could be related to that bug.

Expected behavior

After StreamingEnabled streams in the seat again, Seat.Occupant should still be set to the humanoid of the other character.

8 Likes

Thanks for the report! We’ll follow up when we have an update for you.

2 Likes

Hi Felix, I can’t reproduce this - do you have a repro file?

-:skull:

1 Like

Hey,

sorry for the long delay. I had to test a lot to find a working replication. It seems to depend on the order in which StreamingEnabled streams in the Seat and Character. If the Seat is streamed in first, everything works. If the Character is streamed in first, the bug occurs. To reproduce the bug reliably, I made the seat in a persistent model so it never streams out. But this is not the only way the bug can appear.

ReplicationSeatBug.rbxl (52.8 KB)

The Client-Side Seat.Occupant Status will be shown on the seat with a Script: If Seat.Occupant is nil, the seat is green, otherwise the seat is red.

Replication with the place file:

  1. Start the game in studio with 2 players
  2. Sit the first player into the seat
  3. With the second player, run far away from the first player so they stream out because of the distance
  4. Run near the first player again

The seat will be green again on the client, even though it is occupied and red on the server.

2 Likes