-- this ensures that parts in a specific area are loaded before continueing execution
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local position = character.PrimaryPart.Position
game.Workspace:RequestStreamAroundAsync(position)
2
local contentprovider = game:GetService("ContentProvider")
local objects = game.Workspace:GetDescendants()
contentprovider:PreloadAsync(objects)
print("pre-loading, completed")
there are few more you can try if these don’t suit you
i already tried preloading, it took 1 second to load barely anything (because the parts didnt replicate yet) and you cant see it
i need a way to detect when the place is loaded so i can disable something like a loading screen so when you can actually see parts, they arent invisible
Increase the StreamingMinRadius so that everything within that radius loads in
Put the things you want to always be loaded in in a model with ModelStreamingMode set to Persistent (optionally also wait for Workspace.PersistentLoaded)
The reason loading in happens so slowly is because you have a small min radius then a very large target radius, so it makes sure to load in a small area then lazily loads in a very large area.
If you set the city to persistent, it should load in a ton sooner because it’s not being loaded lazily. (Instead of the game thinking can load in the city whenever, this would be telling the game you want the city loaded in immediately.)
To answer your question directly though, if you want to wait until the city loads in, you can have client code check whether the city exists and send a RemoteEvent to the server when it’s added on the client. However, because the city is outside your StreamingMinRadius, it’s not guaranteed to load (unless it’s set to persistent), so I wouldn’t recommend this because it’s possible for the game to never decide to load the city.