You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the problem or limitation you are having in your project
As documented in godotengine/godot-docs#6186, recent research in reducing input lag in games has found two ways to reduce input latency while also reducing GPU power draw:
To lower latency, this is best accomplished with a built-in FPS limiter, rather than an external tool. To this end, Godot should make it easy for project developers to configure this value (and then expose a FPS limit setting for players to configure).
When not using a variable refresh rate monitor, V-Sync can be disabled and the framerate can be limited to a value slightly greater than the monitor's refresh rate. This will lead to tearing, but will have lower latency than with V-Sync enabled, which can be preferable in some games.
Compared to running with no V-Sync and uncapped FPS, this can lower input lag significantly in GPU-bound scenarios by avoiding pipeline stalls while also making the average input lag more consistent (which is important in competitive scenarios). If the FPS limit is well-chosen by the player, sudden framerate jumps will no longer occur depending on scene complexity. Those framerate jumps lead to unexpected variance in input lag.
However, limiting framerate to a set value in Godot is not as obvious as in other engines, due to the project setting and engine property having unintuitive names:
The Debug > Settings > FPS > Force FPS project setting was moved to the Debug section in 3.0 by godotengine/godot@920310e72a.
The Application > Run > Frame Delay Msec is mentioned as an alternative, but it is not designed to provide accurate FPS limiting. Instead, frame delay is only meant to simulate CPU-constrained scenarios (therefore leading to stuttering with values that are close to the monitor's refresh rate in milliseconds-per-frame).
The Engine singleton has a target_fps project setting, but this is actually a maximum framerate, not a target for dynamic resolution or automatic graphics settings adjustment.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
Rename FPS limiting project setting and Engine property to be easier to discover.
Note: This proposal does not propose changing any default settings' values, only their names.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
Rename Debug > Settings > FPS > Force FPS project setting to Application > Run > Max FPS to put it in the same section as Frame Delay Msec.
Rename Engine's target_fps to max_fps, which is consistent with most other engines (Unreal, Source, id Tech, …). Unity does seem to be using targetFrameRate still, but I think this naming would be best left unused to prepare for a future implementation of dynamic resolution scaling.
If this enhancement will not be used often, can it be worked around with a few lines of script?
No.
Is there a reason why this should be core and not an add-on in the asset library?
Developers should have access to ways to minimize input lag in their projects as easily as possible.
The text was updated successfully, but these errors were encountered:
Related to #2001.
Describe the project you are working on
The Godot editor 🙂
Describe the problem or limitation you are having in your project
As documented in godotengine/godot-docs#6186, recent research in reducing input lag in games has found two ways to reduce input latency while also reducing GPU power draw:
However, limiting framerate to a set value in Godot is not as obvious as in other engines, due to the project setting and engine property having unintuitive names:
target_fps
project setting, but this is actually a maximum framerate, not a target for dynamic resolution or automatic graphics settings adjustment.Describe the feature / enhancement and how it helps to overcome the problem or limitation
Rename FPS limiting project setting and Engine property to be easier to discover.
Note: This proposal does not propose changing any default settings' values, only their names.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
target_fps
tomax_fps
, which is consistent with most other engines (Unreal, Source, id Tech, …). Unity does seem to be usingtargetFrameRate
still, but I think this naming would be best left unused to prepare for a future implementation of dynamic resolution scaling.If this enhancement will not be used often, can it be worked around with a few lines of script?
No.
Is there a reason why this should be core and not an add-on in the asset library?
Developers should have access to ways to minimize input lag in their projects as easily as possible.
The text was updated successfully, but these errors were encountered: