A section of my game suddenly got deleted?!

I just got in studio and for some reason a whole pipe just got deleted alongside a roof?? Why? I did not change anything nor did team members.
image
image
Logs:


Is this normal?!

5 Likes

More screenshots:
image
image
This is a really urgent matter…

Are they unions? I remember a few years ago unions used to just disappear randomly and I’m not sure if it ever got fixed. I managed to find a supposed fix if this is the problem: Here.

1 Like

You should close and reopen studio, it looks like the service that loads meshes is not working. Trying to open the game again later should work.

3 Likes

This should fix it, but what about during live runtime? Sometimes I’m afraid meshes wont load if player is laggy causing them to be invisible and gain gameplay advantage, is there a way to reload them?

1 Like

I think I have a method to attempt this but I haven’t verified if it works yet, not sure if it’s for this specific error either. Client logs suggest it works but I haven’t observed it firsthand. It attempts to reload the asset using a cache busting parameter a few times when an asset load failure log is printed to the console. Was suggested by a staff member a while ago.

DM me about it to remind me and I’ll post the code here later, I’m about to board a flight.

Overall though I wouldn’t worry much about it. This is Roblox’s problem. If this is happening most likely it’s a site wide issue, or the player will rejoin. The impact is probably small.

1 Like

Here is the code I mentioned for retrying an asset fetch. I cannot confirm if this works as it hasn’t been my priority since writing it a few years ago, but I’ve seen client logs that report a retry ending in success. This will only retry once because if the second time fails, it probably won’t work at all, e.g. in the event of a Roblox outage.

local LogService = game:GetService("LogService")
local ContentProvider = game:GetService("ContentProvider")

--------------------------

LogService.MessageOut:Connect(function(message, messageType)
	if messageType ~= Enum.MessageType.MessageError then return end
	
	if string.find(message, "MeshContentProvider failed to process") then
		local _,_,id = string.find(message, "id=(%d+)")
		id = tonumber(id)
		
		if id ~= nil then
			task.wait(2) -- Wait a few seconds before trying to reload the asset
			local mesh = Instance.new("SpecialMesh")
			mesh.MeshId = string.format("http://www.roblox.com/asset/?id=%d&bustCache=%d", id, math.random(1,9999))
			
			task.wait(1)
			ContentProvider:PreloadAsync({mesh}, function(contentId, status)
				if status == Enum.AssetFetchStatus.Success then
					print(string.format("[MeshContentProviderRetryer] Successfully retried fetch for asset %s", contentId))
				else
					warn(string.format("[MeshContentProviderRetryer] Failed to retry fetching asset %s", contentId))
				end
				
				mesh:Destroy()
			end)
		end
	end
end)
2 Likes

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