Error Texture on Map

Hello,

I recently noticed a “bug” where purple/black boxes appear. However, they are not visible in the studio.

InGame

Studio


How can this be fixed?

6 Likes

It would appear to be a bug that seems to be occuring in many games at the moment.

I would suggest you wait it out.

No necessary action is needed.

1 Like

This is present in a game I work on, and they only appear on Models not inside other Models (i.e. under Workspace or Folders within it). It appears to affect seemingly random Models, potentially indicating a mesh of some sorts is not loading within it (nothing stands out inside it).

I would say this is a major issue, but it only seems to be affecting smaller games (under 2M), and I couldn’t find many examples.

1 Like

minecraft

7 Likes

We are looking into this. Some screenshots from people (multiple threads) show studio Beta. Are people seeing this in Studio Beta only or also outside of that?

(same issue reported here: StreamingEnabled: Models turn into purple untextured boxes when streamed out [with/without LOD])

Hi, assuming that someone was enrolled in the SLIM early access program and had ImprovedModelLod enabled in that early-access, this might happen for some models with respect to StreamingMesh.

A quick fix should be something along the lines of:

local s = {}
for _, d in ipairs(workspace:GetDescendants()) do
	if d.ClassName == "Model" and d.LevelOfDetail == Enum.ModelLevelOfDetail.StreamingMesh then
		table.insert(s, d)
		d.LevelOfDetail = Enum.ModelLevelOfDetail.Disabled
	end
end

task.delay(5, function()
	for _, m in ipairs(s) do
		if m and m.Parent then
			m.LevelOfDetail = Enum.ModelLevelOfDetail.StreamingMesh
		end
	end
end)

and then save the experience to Roblox.

If that doesn’t work, just in case please make sure in the early access that ImprovedModelLoD has been disabled for the same experience so there is no weird inconsistent state.

In the worst case, you may have to temporarily disable streaming (though we are actively working on a fix).

Please let us know if that doesn’t fix the issue, we apologize for the inconvenience.

EDIT: Added more context to Early Access Program

Could you specify what you mean by an experience being enrolled in the early-access? None of our Developers even published the game before this issue started appearing.

Additionally, I don’t think the post should be marked as Closed if the issue isn’t fixed, I can still see these boxes in-game and running some code is not an acceptable fix if this is affecting unmodified games.

Sorry, I’m not sure where we marked it as closed. For what it’s worth, we are still treating this issue as open.

Were any of the developers working on your experience enrolled in the SLIM Early Access Program?

I attempted this, it did not fix the issue.

It seems someone found a work around, can people try this? StreamingMesh broken in-game but working in Studio

Hey guys, we’re really sorry about the inconveniences caused by the current situation.

To provide a summary of fixes:

  1. Running this script and then saving to Roblox fixed the issue for our team (while making sure anyone who was enrolled in the SLIM early access program saved a version of the experience with UseImprovedModelLod to false):
local s = {}
for _, d in ipairs(workspace:GetDescendants()) do
	if d.ClassName == "Model" and d.LevelOfDetail == Enum.ModelLevelOfDetail.StreamingMesh then
		table.insert(s, d)
		d.LevelOfDetail = Enum.ModelLevelOfDetail.Disabled
	end
end

task.delay(5, function()
	for _, m in ipairs(s) do
		if m and m.Parent then
			m.LevelOfDetail = Enum.ModelLevelOfDetail.StreamingMesh
		end
	end
end)
  1. If this doesn’t work we recommend following the solution posted by another dev here, which is to essentially force the broken models to recreate StreamingMesh data by bringing them into a new experience.

  2. If this still doesn’t work, we recommend either temporarily disabling streaming or streamingmesh (streaming will work without streamingmesh, models will just stream out) as a catch-all fix until we are able to provide a better solution.

We’ve also disabled the feature on servers so that should also help alleviate some issues in terms of inconsistency in data expected.

Again, we’re really sorry.

2 Likes

Thanks.

None of our devs are enrolled in the SLIM program, no. The place ID is 12018816388 if you want to manually check anything.

I tried to run the script you provided but it crashed my Studio since it was trying to change 3600 parts.

For the link @TigerRabbit2 provided, that solution is simply not viable as the game is huge and has hundreds of models where this issue is occuring. I would try it on one or two, but currently Studio is refusing to let me join the Team Create with some generic error.

I’m really sorry about how inconvenient this whole situation is.

Unfortunately I can’t do much with just the PlaceID.

That being said, if there are too many models being changed, it might work to do a more piecemeal approach, here is some starter code to help. I tested this in an experience with ~17,000 models and it seems to have gone through without crashing (albeit a bit slow, but that’s because we’re throwing in a wait):

local CHUNK_SIZE = 500
local BREAK_DURATION_SECONDS = 5	

local streamingModels = {}
for _, descendant in ipairs(workspace:GetDescendants()) do
	if descendant:IsA("Model") and descendant.LevelOfDetail == Enum.ModelLevelOfDetail.StreamingMesh then
		table.insert(streamingModels, descendant)
	end
end

if #streamingModels == 0 then
	return
end

for i = 1, #streamingModels, CHUNK_SIZE do
	local endIndex = math.min(i + CHUNK_SIZE - 1, #streamingModels)
	for j = i, endIndex do
		local model = streamingModels[j]
		if model and model.Parent then
			model.LevelOfDetail = Enum.ModelLevelOfDetail.Disabled
		end
	end
	print("Streamingmesh disabling chunk done")
	if endIndex < #streamingModels then
		task.wait(BREAK_DURATION_SECONDS)
	end
end
print("Disabled all streamingmesh models")

for i = 1, #streamingModels, CHUNK_SIZE do
	local endIndex = math.min(i + CHUNK_SIZE - 1, #streamingModels)
	for j = i, endIndex do
		local model = streamingModels[j]
		if model and model.Parent then
			model.LevelOfDetail = Enum.ModelLevelOfDetail.StreamingMesh
		end
	end

	print("Streamingmesh enabling chunk done")
	if endIndex < #streamingModels then
		task.wait(BREAK_DURATION_SECONDS)
	end
end
print("Enabled all streamingmesh models")

RE: Teamcreate not letting you join, if you are unable to join after trying a few times, there are autosaves periodically generated by studio that you might be able to open. If that doesn’t work, it might help (though I’m not 100% sure) to also use the version history rollback to retry.

https://create.roblox.com/dashboard/creations/experiences/{experience_id}/places/{place_id}/version-history

Thanks for this, I didn’t get a chance to use Studio for a while but in the meantime the issue has disappeared and none of these error models are appearing anymore.

Still a bit weird but is resolved now, thanks very much for the support!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.