Model Unloaded When StreamingEnabled Upon Exiting Seat

Reproduction Steps
I can only get this to happen in one spot in my game, so I do not have a repro. Exiting any seat in the area causes the area to be unloaded and reloaded a frame later. If you’d like to see it for yourself, you’ll have to purchase access to my game here: Windy City '99: Alpha - Roblox

It only happens in the seats inside the casino.

EDIT
Anyone exiting a seat nearby will also trigger this.

https://puu.sh/HYHVM/3ce8389453.mp4

Expected Behavior
I expect models to not be streamed out simply because a seat was exited.

Actual Behavior
Nearby models are streamed out then back in a frame later.

Issue Area: Engine
Issue Type: Display
Impact: Moderate
Frequency: Constantly
Date First Experienced: 2021-07-23 23:07:00 (-04:00)

1 Like

Anything special about these seats versus seats where the problem doesn’t occur?

Also can you share where on the map these seats are so we can test?

There’s nothing special about them, this started happening after the addition of the casino in that area. I’ll send you a PM with the map so you can hopefully see for yourself. I haven’t tested if this occurs in studio though.

This appears to be due to the casino having streaming LOD enabled and having the seats be descendants of the casino model. When the player leaves the seats it is causing an unexpected LOD transition.

We are investigating the underlying cause, but as a workaround you could move all the seats out of the casino model and into a separate model.

Thanks for the bug report and we’ll keep this thread updated on our investigations.

2 Likes

Thanks for the workaround, my players will definitely appreciate it!

1 Like

I am experiencing what seems to be the same. When the character jumps/exits a seat, the building Model near the character seems to display its “StreamingMesh” version for a split moment, as it is meant to display when the character is at a distance.

Visually it happens to some seats in the game, but not all, though the ones affected all share a common Model ancestor

Certain instance hierarchy structures may cause this but I’m not sure

I was able to replicate the bug in a new template game, and also allowed edit access to it. You may need to sit a few times before noticing the house streaming out for quick moment right in front of you

Thanks for reporting this and providing a clear repro place.

Unfortunately we still don’t have a fix for this transient visual issue. I want to make it clear that the house isn’t actually streaming out and back in, what is happening is that the LOD version is being incorrectly rendered for a couple frames. So this is only a visual bug, not a behavioral bug that could result in broken scripts or similar problems.

Our recommendation for now is to not store seats inside models that have LOD enabled. Hopefully you are able to move the seats out of the model that has StreamingMesh enabled.

1 Like

We have 500+ seats and all inside models, which is 500+ models, which are inside other models, it is all organized. The fast solution is running a command line to disable the LOD on every Model in the game, but that would be throwing away so much work because every Model has different LOD. The other solution would be to manually move all 500+ seat models one by one outside their parent model, edit the LOD on the seat models and reorganize everything, including our back-end.

Unlike the repro place, in our game it happens first try and every time. It’s a very ugly bug but we will need to deal with it until it is fixed because it would take too much time to reorganize everything. Hopefully you guys find a fix soon, and thank you for your response.

We are looking into fixing the underlying issue. Sorry to hear the workaround isn’t practical for your situation.

1 Like

We have implemented a fix for this issue. Unfortunately it will be a few weeks before we can enable the fix on all clients.

Thanks again for providing the simple repro place.

2 Likes

I don’t know your game architecture, but if all of your seats are part of the static world, can you just move them out programmatically on server start? Would just be a single script that scoops out all of the seats and puts them into a folder in workspace at runtime. Easy to delete when the fix is enabled.

1 Like

I’m happy to have helped in any way, and thank you and everyone involved for finding a fix. I look forward to it being enabled.

This is a good idea I didn’t think about. As far as I can remember, it shouldn’t break anything in our game, worth a try! Thank you

1 Like