Minimizing input latency for multiplayer FPS game

We feel that input latency should be as minimal as possible. Input latency affects the game feel and is especially important when the game requires fast reactions, such as fast-paced multiplayer FPS game.

Hardmatch multiplayer FPS is also fast-paced and competitive. We take input latency seriously and do our best to minimize it. One part of minimizing input latency is to make the frame rendering as fast as possible. Hardmatch tries its best to render frame as possible on low-end PC's too. This way players with both low-end and high-end PC's have fair playing ground.

How to minimize input latency

In order to minimize input latency, the game needs to postpone the frame's input processing as late as possible before frame present. Also the game should only have single buffered present.

By default, games use triple buffering. Triple buffering is best choice when smoothness and larger frametime budget is required. For example, when using single buffered present with 60hz screen, both the CPU and GPU must have computed the frame under 16.6ms to be ready for the next vblank.

When using double or triple buffering, both GPU and CPU have 16.6ms of time to process the frame. Thus single buffered rendering reduces the system parallelization. CPU has to wait for GPU to complete the present and then GPU has to wait for CPU to start pushing rendering commands.

In Hardmatch FPS multiplayer game we use single buffered rendering. We wait for GPU to complete present before processing input for next frame. This achieves theoretical input latency between 16.6ms - 33.2ms.