30 FPS cap option in Escape Menu

This is a feature suggestion for both players and developers.

As a Roblox player, it’s currently impossible to properly play old Roblox games that expected the FPS cap to be 30 FPS, such as this one, resulting in the walkspeed and firing rate being extremely high.

As a Roblox developer, it’s currently too difficult to properly gauge how your game acts when the FPS is low w/o slowing your game down manually.

While it’s a small thing, I think it would help a lot with preserving old games that are otherwise fully functional 12 years later, and it would also help developers with gauging their game’s responsiveness at low frame rates (for example, fire rate, in-game timers, etc.)

30 Likes

vouch!!!

4 Likes

For a smoother experience in games that would otherwise have inconsistent framerates, I would like this to be an option again.
I don’t think your reasoning with old games is something roblox would ever act on though.

7 Likes

why not just use a script to set the max fps to 30? or even 2 if you’re evil

or do I misunderstand. are you saying cap old roblox games at 30?

3 Likes

An option in the escape menu for 30 fps.

8 Likes

I would love to see the 30 FPS cap option return as it was in the beta for the feature. I don’t know why they removed it as it would make the hacky method of getting 30 FPS in games obsolete and built into the client without having to purposely lag the client

7 Likes

Having it global option will break games the moment you forget to switch it to 60 when you join another game (unless you have good memory to uncap it, then be my guest), but i can see this being an option you can set within Workspace, maybe like

workspace.Is30FPSCapEnabled

That way devs don’t need to add a local script to lock the FPS to specific framerate, and it can all be handled directly within the engine, plus being a map-specific override, you don’t have to remind yourself to uncap it when you play another game

4 Likes

Vouch for this. Definitely a good setting to have, though I know Roblox is striving to 60 FPS for all.

1 Like

The title is “30 FPS Cap Option in the ESC Menu”, for the Roblox Client

1 Like

I do not understand why it would break games. It is possible to have a device lag under 60 FPS if it isn’t strong enough. If a cap of 30 FPS breaks your game; I’d look into what could be causing it to break and fix it using RunService events with deltatime or using the return values of wait() and task.wait(). Always make sure that you can account for all framerates as Roblox supports framerates other than 60 FPS. One of my old phones can only handle 45 FPS and Roblox accounts for that and limits it at that framerate.

Roblox also mentions accounting for this in their post here

2 Likes

actually you’re right, below 60 FPS should be an option now that you mention it, idk why it wasn’t considered

2 Likes

it used to exist in a very early version before they removed it

2 Likes

In what date you screenshoted the tiny chunk of screen?

This above the old graphics controller ,With more levels than now

Now is replaced with the modern one because 30 fps are quite useless for now

I’d really like to see the 30 fps cap option added. Here’s a temp solution I made which will hopefully work as a temporary solution in the mean time.

local Heartbeat = game:GetService("RunService").Heartbeat
local Thread do
    local LastThread

    local function FPSHandler(FPS : number)
        if LastThread then
            local TempLastThread = LastThread
            LastThread = Thread
            coroutine.close(TempLastThread)
        end
        
        LastThread, Thread = Thread, coroutine.create(FPSHandler)
        local Stamp = os.clock()

        repeat
            repeat
            until os.clock() - Stamp >= 1/FPS

            Stamp = os.clock()
        until not Heartbeat:Wait()
    end

    Thread = coroutine.create(FPSHandler)
end

function SetFpsCap(FPS : number)
    assert(type(FPS) == "number", "number expected, got: "..typeof(FPS))

    coroutine.resume(Thread, FPS)
end

SetFpsCap(30)

I will admit the recursive threading took me longer than I’m willing to admit

1 Like

Feburary 2024 when it was still in development

Thank you ,published FPS limiter

This is what we did

  • It really works , Without the script it renders into almost the fps limit ,So my monitor is 165 hz and really are an Samsung Odyssey G3 ,They render 165 frames per seconds

  • If i disable the script ,they works fluid

  • I had to put in serverscriptservice

  • Also if i edit SetFpsCap to 1000 ,looks like they render at the MAX HZ if my monitor is 165 hz ,without overclocking or optimizing your monitor

I think I saw someone do something like this using runservice

This unfortunately won’t work in older games unless a developer manually updates their game to add it.

This is still a neat thing for developers though!

Correct it was mostly supposed to be a temporary solution (in this case for studio)

1 Like