Skip to content

Instantly share code, notes, and snippets.

@Jamsers
Last active October 31, 2023 10:55
Show Gist options
  • Save Jamsers/df49590debfe9041cce4668e657bc9dc to your computer and use it in GitHub Desktop.
Save Jamsers/df49590debfe9041cce4668e657bc9dc to your computer and use it in GitHub Desktop.
How much FPS should your game be running at?

TLDR, assuming adaptive sync with LFC: A good floor for "smooth enough, I guess" is 50 FPS. But if you want the "genuinely smooth" feeling? 70 FPS is ideal. A good "endgame" target is 200 FPS. But the more FPS you can get, the better - there's no "human eye can't percieve above x FPS" - the limits for human perception are so high it's irrelevant to any discussions about FPS.

Gaming has, for as long as we can remember, aimed for the 60 FPS mark as the target. But we know that number isn't based on any biological observation or objective limit but rather is borne out of convenience, since most displays, TVs and monitors alike, maxed out at 60 hz. Not the mention the infeasibility of presenting at arbitrary sub native refresh rates on fixed refresh rate displays.

However, with the advent of cheap high refresh rate monitors (you can get a 144hz Freesync monitor for like $100 at this point) and TVs, and adaptive sync technologies that make it so that sub native refresh rates present just as perfectly as V-synced native refresh rates, now's as good a time as any to reexamine what FPS we should be aiming for when developing our games.

According to Carmack once you're at 20 milliseconds or below delays start to get generally imperceptible. Extrapolating this to refresh rate, this should mean that going down to a 20 ms delay between each refresh should start to feel imperceptible. This is a refresh rate of 50 hz, and my own testing has corroborated 50 FPS as a good floor for making things feel "hmm, smooth enough, I guess".

However, the human brain takes around 13 milliseconds on average to process an image. Which means if you're refreshing at 75 hz, you're displaying a new image just in time for an average relaxed brain to finish processing the last image it saw. Indeed, in my own testing once you hit 70 FPS things start to feel "really smooth".

But, don't make the mistake of thinking that "process an image" means sending a "frame" to the brain in the same way that a monitor displays a frame... the human eye doesn't work like that. (It's closer to a constant stream of data that the brain is constantly processing and even modifying, see saccadic masking) What research papers mean when they say "process an image" is more like "the smallest amount of time an image can linger in your vision that your brain can still comprehend." 13 ms is in average scenarios, with average eyes, and average brains.

But depending on the scenario, and depending on the person, you absolutely can process images that persist a lot lower than 13 ms. In fact, tests with Air Force pilots have shown that they could identify the plane on a picture that was flashed for 1/220th of a second. That's around 4.5 milliseconds. A vast majority of us won't get to that level of alertness even when gaming, but in my own testing, 200 FPS seemed to be the point where the refresh rate was so high that even when doing flicks in CS:GO you could still track enemy heads. Seems to be a good enough endgame/e-sports target.

If you're looking for the literal limits of human perception, that may be as high as 10,000 hz... obviously that isn't a very practical limit to consider at all. If you're looking for as close to perfection as possible right before that impossible 10,000 FPS mark? Blur Busters claims that 1000 hz is the point where you get blurless sample-and-hold with no flicker, no motion blur, and no stroboscopic effects. Which means somehow finding a way to render our games at 1000 FPS. Obviously, there's no way for the average consumer to test this claim quite yet... but the takeaway really should be that while 50/70/200 are good targets, when it comes to FPS the more the better. The ceiling, whether it's 10,000 FPS or 1000 FPS, is well beyond reach, so any reasoning that goes "we have enough FPS" can be safely ignored.

Human visual perception and motor control is an incredibly complex field that even science has not fully comprehended yet, so simplistic statements like "the human eye cannot see above 60 FPS" should always be ignored for the nonsense that it is. However, referring to actual research, and combined with personal testing, we have some practical targets that we can aim for as game developers.

References:

Latency mitigation strategies (by John Carmack): https://danluu.com/latency-mitigation/

Potter, M. C., Wyble, B., Hagmann, C. E., & McCourt, E. S. (2014). Detecting meaning in RSVP at 13 ms per picture. Attention, perception & psychophysics, 76(2), 270–279. https://doi.org/10.3758/s13414-013-0605-z

Saccadic masking: https://en.wikipedia.org/wiki/Saccadic_masking

Ryan, T. A., & Schwartz, C. B. (1956). Speed of Perception as a Function of Mode of Representation. The American Journal of Psychology, 69(1), 60–69. https://doi.org/10.2307/1418115

Alliance for Solid-State Illumination Systems and Technologies (ASSIST). (2012). Flicker Parameters for Reducing Stroboscopic Effects from Solid-state Lighting Systems (Vol. 11, Iss. 1). Troy, NY: Lighting Research Center. http://www.lrc.rpi.edu/programs/solidstate/assist/recommends/flicker.asp

Blur Busters Law: The Amazing Journey To Future 1000Hz Displays: https://blurbusters.com/blur-busters-law-amazing-journey-to-future-1000hz-displays-with-blurfree-sample-and-hold/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment