-
-
Notifications
You must be signed in to change notification settings - Fork 328
Why you can't (or shouldn't) go faster than 240 FPS
If you're one of those people who are looking to get the highest framerate that you can, you may find that you can't go any higher than 240 FPS. This is Roblox capping the FPS at 240 FPS specifically, and you may also notice that Roblox's built-in framerate cap configurer has 240 FPS as the highest option. They do have a reason for doing this, and it's not completely arbitrary.
Roblox internally makes use of a task scheduler to govern the handling of constant real-time operations. This includes physics simulation, input handling, and network send/receive (i.e. replication). You can read more about that here on the Creator Hub docs.
The rate at which all task scheduler jobs (except for physics simulation) run at is tied to your rendering framerate. Up until early 2024, the task scheduler was designed to target a maximum step rate of 60 Hz, therefore allowing a maximum rendering framerate of 60 FPS. Physics simulation runs at a constant rate of 240 Hz, independent of framerate.
Now, Roblox makes it possible to run at rendering framerates higher than 60 FPS. However, they chose to target 240 Hz the new maximum task scheduler rate, the same rate that physics simulation runs at. So, 240 FPS is the new upper limit.
A problem is that Roblox needs to ensure the task scheduler and its tasks to be able to handle a certain maximum tick rate. You may remember that it took a long, long time for Roblox to add the ability to go faster than 60 FPS, even though they knew years ago that there was big demand for it, and that it was necessary to help Roblox match up to other game engines. Safely increasing it is not easy as just changing some number cap somewhere.
For example, back when Roblox was locked to 60 FPS and did not allow going any higher than that by default, some people unlocking their FPS with Bloxstrap or rbxfpsunlocker faced issues relating to increased ping (e.g. #1149). This happens because, as mentioned before, all task scheduler tasks (except for physics) are tied to the framerate. That includes network send/receive operations. It couldn't handle going faster than 60 Hz under some circumstances, and resulted in ping skyrocketing for some users. Granted, it was rare, but it did happen.
With Roblox now ensuring support for task scheduler rates up to 240 Hz, that shouldn't be a problem anymore. However, similar issues can occur again if you try to push your framerate faster than 240 FPS.
As to why they chose 240 Hz as the new limit, it was probably because they didn't think it was necessary to allow for framerates faster than the physics step rate. Can't say for certain though.
See something here on this page that is incorrect or you otherwise think should be changed? Please open an issue!