The place that I spawn in-game is out of streaming range from where these models are. Spawning next to where they are doesn’t seem to have any impact on this issue either.
When these models do get reparented, they never stream in as well. There is never any cloning of these models.
The only solution I have found to this is clone the model on the server before parenting to ReplicatedStorage and then it will load just fine.
The specific timing of when the models move around may be important to reproducing this issue. If I add a trivial script in Workspace like so:
game.ReplicatedStorage.Model.Parent = workspace
then the issue doesn’t reproduce when I try locally. Can you please either post a link to a published place id where this happens (it can be closed to the public), or try to make a repro-place that just uses the relevant scripts to copy the model on start?
I set the baseplate to be 2048x2048 and put two models at opposing corners of the map. Then I put a spawn location at the other end of the map across from those models. Set streaming settings to be 100 studs max distance. There is a script in ServerScriptService that parents the model 3 seconds after starting, and then reparents to workspace. Every time I have tested under these circumstances the models are empty.
I haven’t been able to reproduce a situation where the parts never stream in. We stream in the models immediately because models don’t have position information, but they BaseParts are streamed in when the player gets close enough. I see the empty models when the player joins, but if I walk close enough to the two models then their constituent parts are streamed in.
Are you seeing a situation where when you get close enough they never appear?
In Robloxian High School, we reparent models from the server to ReplicatedStorage on server start and then reparent them again locally when the client is nearby. Only caveat here is we destroy and clone these interior models before reparenting to ReplicatedStorage (disabling this logic does not fix the issue though). This was never an issue for us until around sometime last week.
In this screenshot, my “Interior” model is completely empty of any parts when using iPhone 7 emulator in Studio.
Is anyone able to share a repro place and steps to reproduce?
Note that the behavior of stream-out and locally created parts was changed last year:
Note that if you clone something from ReplicatedStorage into the client workspace it will be considered a local part, but if you reparent from ReplicatedStorage into the client workspace it will be treated like a remote part and possibly streamed out.
On server start it will reparent the house to ReplicatedStorage. The client waits for the house model, and then waits 5 more seconds before reparenting it locally. In this scenario the house is not within streaming range when the player loads in. You can see the house model remains empty even when nearby.
What is happening is that the house is loading, then getting streamed out. This is because it is considered a remote part since it is reparented from replicated storage. You can avoid this by changing:
house.Parent = workspace
to something like:
local copy = house:Clone()
copy.Parent = workspace
As I mentioned in my comment yesterday parts that are reparented from ReplicatedStorage into workspace are considered remote parts and subject to stream out.