Hi everyone!
I’ve been having an issue with my latest game, where whenever I have a low graphics quality, everything starts going invisible. I don’t want this to happen, I would like for people to be able to play and enjoy the game with low graphics quality, but I truly don’t know how to fix this. Any ideas?
Thats literally how it should be working. Low graphics level is supposed to make gameplay smoother by removing parts, shadows and other graphical effects. What you are trying to do is to force players with bad devices to play at highter graphics level, which, of course, won’t help them at all.
The only thing I could possibly think of as causing this is a script I used from a YouTube tutorial. It is an over the shoulder camera script, so it is manipulating the player’s camera. I don’t think this is the issue, but in case it is, here’s the script:
-- LOCALS --
local UIS = game:GetService("UserInputService")
local GuiService = game:GetService("GuiService")
-- Services
local uis = game:GetService("UserInputService")
local rs = game:GetService("RunService")
local context = game:GetService("ContextActionService")
-- Player & Character
local plr = game:GetService("Players").LocalPlayer
-- Other
local Camera = game:GetService("Workspace").CurrentCamera
local mouse = plr:GetMouse()
local cameraDB = false
local zoomDB = false
-- Values
local xAngle = 0
local yAngle = 0
local cameraPos = Vector3.new(2,0,8.5)
-- CAMERA SETTING --
-- FUNCTIONS --
if UIS.TouchEnabled and not UIS.KeyboardEnabled and not UIS.MouseEnabled
and not UIS.GamepadEnabled and not GuiService:IsTenFootInterface() then
-- mobile device
rs.RenderStepped:Connect(function()
local character = plr.Character or plr.CharacterAdded:Wait()
Camera.CameraSubject = plr.Character:WaitForChild("Humanoid")
Camera.CameraType = Enum.CameraType.Custom
Camera.CFrame = plr.Character:WaitForChild("Head").CFrame
end)
else
wait(0.01)
Camera.CameraType = Enum.CameraType.Scriptable
context:BindAction("CameraMovement", function(_,_,input)
xAngle = xAngle - input.Delta.x*0.4
yAngle = math.clamp(yAngle - input.Delta.y*0.4,-80,80)
end, false, Enum.UserInputType.MouseMovement)
rs.RenderStepped:Connect(function()
local c = plr.Character or plr.CharacterAdded:Wait()
local rootPart = c:FindFirstChild("HumanoidRootPart")
if c and rootPart then
local startCFrame = CFrame.new((rootPart.CFrame.p + Vector3.new(0,2,0)))*CFrame.Angles(0, math.rad(xAngle), 0)*CFrame.Angles(math.rad(yAngle), 0, 0)
local cameraCFrame = startCFrame + startCFrame:VectorToWorldSpace(Vector3.new(cameraPos.X,cameraPos.Y,cameraPos.Z))
local cameraFocus = startCFrame + startCFrame:VectorToWorldSpace(Vector3.new(cameraPos.X,cameraPos.Y,-50000))
Camera.CFrame = CFrame.new(cameraCFrame.p,cameraFocus.p)
end
end)
end
That’s most likely not the issue. You can always disable the script and see if everything works right, though. (I’m assuming that there is really something wrong as I can’t see the video)
Well, it appears to have been the terrain in my game. Once I got rid of it, it was fine. Super weird, still not quite sure why, but that seems to have been the issue.
Roblox do that for more performance even if streaming enabled is not there. Terrain has many voxels which can not be rendered at certain distance but for big parts they can be rendered.
It just like rendering terrain after removal which in low graphics can be little slow
I incorrectly marked solution, the problem is still there even after the terrain is gone. I disabled all the scripts, removed the terrain, still didn’t fix it. Any ideas?