Unexpected behavior with atomically loaded characters

Hi! I’ve encountered an issue with characters that are loaded atomically, and the behavior happens on the client side. When another player’s character is outside the streaming area (and thus completely unloaded), and that player equips a tool, their character briefly loads for a millisecond without any children, then immediately unloads. I observed this because ChildAdded records this behavior.

Reproduction Steps:

  1. Characters must load atomically on the server.
  2. There should be at least 2 players.
  3. The distance between characters should be such that they are outside each other’s streaming areas.
  4. The behavior isn’t visible directly, so add a workspace.ChildAdded event on the client to log all objects added under workspace.
  5. Each time Player 1 equips a tool, Player 2’s ChildAdded event logs Player 1’s character, but checking under workspace on the explorer shows that Player 1’s character isn’t there.

Expected behavior:
Equipping a tool should not load a character that is outside of the streaming area, even for a single frame.

Reproduction File: Reproduction File.rbxl (61.3 KB)
Note: Load 2 players into the game, and equip a tool

2 Likes

Thanks for reporting this issue and including a repro file. We will investigate.

Thank you for the report, we’re able to reproduce the behavior you described 100% of the time with the attached place file.

The behavior of Player 1 appearing briefly then quickly disappearing again is definitely caused by streaming and is unexpected. However, we don’t currently plan to fix this since the behavior seems low impact and all available options for fixes would likely break other legitimate streaming gameplay logic.

Please let us know if this behavior is causing gameplay issues or breaking anything in your development experience and we can take another look at this.

1 Like

Hi @SpeedyHotdog4. Thank you for your response.
Personally I wouldn’t call this bug insignificant.

Firsty, I’ll state 2 facts.

  1. When an atomic character appears for a single frame, due to this behavior, it has no descendants.
  2. Most developers who use streaming and have atomic objects with some kind of logic use events to detect when these objects are streamed in and out.

Knowing all this the bug leads to a quite big numbers of different unexpected errors in the error reports. Errors that are very difficult to trace back to this bug. It happens beacuse, we as developers, do not expect atomic objects to have no descendants.

Any assembly that is connected to the character is also affected (appears outside the streaming area and with no descendants). In my case, this includes vehicles that players sits in and “shared emotes” - involve 2 players (e.g. one player holding a baby player).

As a result, I’ve had to stop using atomic characters and vehicles entirely, switching everything to persistent. This is unfortunate because one of the main advantages of streaming is the ability to use non-persistent characters for performance optimization. For example, my experience can support up to 50 players in a single server, so the performance gains from only rendering and updating nearby characters and vehicles can be substantial.

I rarely see experiences using non-persistent characters, and this bug may be one of the contributing factors.

Also, I can’t think of any valid reason why anyone would rely on this bug’s behavior.

I kindly suggest reconsidering this issue. Thank you!

1 Like

As mentioned on this related thread, Game-killing levels of lag caused by tools forcing streaming, we are investigating options for addressing this issue.

1 Like