Hello Creators,
We know that many of you use an external tool to run Roblox at their display’s native refresh rate by removing the client 60Hz frame render lock. That’s why today, we are excited to introduce PC support for modern displays that support refresh rates above 60Hz without any external downloads required!
Players can change the maximum framerate on the app through a newly introduced game setting. PC players that can achieve those higher framerates will get a smoother experience on monitors with higher refresh rates by increasing this setting. For now, this setting is limited to Windows devices but will come to Mac at a later date.
For developers, this means that the RunService events can provide smaller delta times in local scripts, and task.wait can wait for less than 1/60th of a second, returning a smaller value. You must always make sure that you are properly handling delta time values, not just for users changing their framerates to be higher, but also for players on slower PCs (producing larger delta times), as well as VR players, who have had a higher framerate before this update.
As an example:
-- BAD CODE!
local RunService = game:GetService("RunService")
RunService.PostSimulation:Connect(function()
script.Parent.CFrame *= CFrame.Angles(0, math.rad(1), 0)
end)
This script inside a part will rotate it by 1 degree every frame. At 60Hz, this will rotate the part by 60 degrees a second, but it will rotate slower on weaker devices, and faster both for players that increase their local maximum framerate, or for those on VR.
If your intent is 60 degrees per second, then this code should instead be:
local RunService = game:GetService("RunService")
local DEGREES_PER_SECOND = 60
-- delta is the number of seconds since the last PostSimulation call
RunService.PostSimulation:Connect(function(delta)
script.Parent.CFrame *= CFrame.Angles(0, math.rad(DEGREES_PER_SECOND) * delta, 0)
end)
We are thrilled to finally get this in your hands! Please let us know if you have any questions.
Thank you.
FAQ
What can players set their maximum framerate to?
- The current values are Default (60 FPS, not your refresh rate), 60 FPS, 120 FPS, 144 FPS, and 240 FPS. We are open to adding more settings in the future for those in between.
What if a player’s device can’t reach the higher values?
- If a player has their maximum framerate set higher than what can be outputted by their device, then they shouldn’t notice any difference. Think of it like a speed limit on a street. If you raise the speed limit from 60 to 80, then the cars will move faster, but the slower bikes will move at the same speed they were before.
Is the server going to run at a higher framerate?
- No, but you should still make sure you are using the delta time values appropriately even outside of clients.
As a player, I already use an external framerate unlocker. Will that break anything?
- External unlockers currently work by changing an internal dynamic flag on the client that was never meant to be a stable public API and may change without prior notice. We recommend using the in-game setting instead of using an external unlocker.
Why only Windows?
- There is some nuance in supporting other devices, like Mac, that we would like to put more thought into. Shipping now on Windows only is a good first step and Mac support will be coming at a later date.