Frame Rate Considerations

The frame rate is the number of frames rendered per second (fps), and determines the 'smoothness' of game play. It is dependent on five factors:

However, the frame rate is not just determined by the sum of the above factors - they can influence each other. The fps contribution of certain level elements can be seen in the [F11] panel in ms per frame. The additional delay added by the system for synchronizing the frame rate is reflected by the 'screen refresh' time. In some cases it can be larger than the real rendering time by the engine and hardware, especially in fullscreen mode in which the frame rate is limited by the monitor frequency (mostly 60 Hz on LCD screens and 70..80 Hz on CRT monitors).

Updates and fps

Engine updates normally render faster than their predecessors - and no update ever was slower. Nevertheless, whenever a new engine update comes out or a new video driver is released, some users complain about having 'less fps' than before. Why is that?

Every subtle change in the system can affect the frame rate in a different way, depending on hardware and software components. So it's normal that even when a newer engine renders faster on most systems, it can be slower on a few. Video drivers, especially by nVidia, often use optimizations for performing better with benchmarks. Those optimizations also change with every driver release and with every DirectX version the engine uses. In the last time nVidia tended to remove those optimizations from their drivers due to their side effects.

Even if you think that the new update runs 'slower' on your PC than it's predecessor, use it if you want to distribute your game. It's the end user's frame rate that matters.

Monitor frequency and fps

In fullscreen mode, DirectX keeps the frame rate always in sync with the monitor frequency between 60 and 80 Hz in order to avoid tearing artifacts. The screen refresh is artificially delayed for matching the time when the monitor has finished its video cycle. Thus you'll never get a higher frame rate than your monitor can display. Your frame rate will be an integer division of the monitor frequency (such as 60, 30, 20, or 15 Hz when the monitor frequency is 60 Hz). When the frame rate is close to the monitor frequency, a small change of the rendering time will cause the frame rate to suddenly jump from 60 to 30 fps or vice versa.

Some tips for increasing the frame rate in your games

Some tips for decreasing the frame rate in your games

Why would you want to decrease the frame rate? There are three reasons. Your movement functions might only work properly within a certain frame rate range, and fail at 1000 fps. You won't want your application to consume all the CPU cycles. And most important, you want to avoid stuttering. Stuttering means a camera and actor movement that appears unsteady. It won't be noticeable in a game with complex levels and medium frame rate, but mostly in games with almost empty levels, little content, and consequently very high frame rate that is then capped by fps_max.

The main reason for stuttering is a coarse PC scheduler resolution that leads to inaccurate task start times, especially when many tasks are running on a particular PC. This problem can be avoided by limiting the frame rate not only with fps_max that just gives task time back to the Windows task scheduler, but by really burning CPU cycles in some or the other way. Fortunately, this is easily done. If your game experiences stuttering, just place some more details in your levels for avoiding a too-high frame rate.

► latest version online