Loading maps in pieces?

I am currently running into an issue where when I clone a map and put it into Workspace the game stutters a bit and/or crashes low end (or mostly apple) devices. I was wondering what is the best way to load my maps in pieces, specially since all the maps are basically one model filled with parts…

In the past I’ve found putting a few wait()'s in the code can help with crashes. Loading the map in pieces could definitely work. It could be done in 3-5 lines of code. Is the map big or just super detailed? If it’s big then you may consider streaming the map in and out as the player moves across the world.

1 Like

The maps vary in size, I did try streaming the maps before however that caused issues with other systems in the game.

Though loading the map in pieces is a pretty good idea, here is the code I just thought up with @BusyCityGuy

local newMap = workspace.Maps

local selectedMap = game.ReplicatedStorage.Folder.Apocolypse
local totalParts = 0 -- just to see how many parts i went through
local function LoadMap(prt, parent)
	if prt:IsA("Model") then
		if #prt:GetChildren() > 0 then
			print("Model:", prt.Name, "Children:", #prt:GetChildren())
			local newModel = Instance.new("Model")
			newModel.Name = prt.Name
			newModel.Parent = parent
			local searched = 0
			for _, prtChild in pairs(prt:GetChildren()) do
				totalParts = totalParts+1
				if searched % 300 == 0 then wait() end searched = searched + 1
				LoadMap(prtChild, newModel)
		prt:Clone().Parent = parent
		print("Cloned:", parent.Name)

local t = os.time()

LoadMap(selectedMap, newMap)

print("Map loaded:", os.time()-t, ":", totalParts)

What I do is basically If the child I am looking at is a model I just recreate the model with Instance.new() cus cloning would take its children.

but if its not a model it’ll take a clone of the one in rep storage and parent it to the one in workspace.

I’ll have to play with the % 300 part as I don’t want it to be super fast where it still lags and be slow where it takes ages…

But yea :stuck_out_tongue: anyone who stumbles upon this thread feel free to use the code.