For the development of a competitive multiplayer FPS game similar to Quake 3 Arena, Warsow, etc. What would be the most recommended Render Pipeline for Low Input Latency (responsive mouse input and controls)?
I don’t want the massive amount of input lag we get in games such as Overwatch.
Correct me if I’m wrong, but from what I understand, default Forward (multi-pass) and LWRP (single pass) would be the best options. And between those two, which one is better for gameplay?
The render pipeline has no impact on gameplay or input latency beyond the frame rate. Between the built in forward vs LWRP, performance depends more on your content choices and preferred anti-aliasing. Generally LWRP performs better when using MSAA than the built in forward when using multiple dynamic lights, and the LWRP may be better at utilizing multiple cores. If you prefer FXAA, there’s not really a big difference right now, but using the SRPs basically means almost nothing on the asset store will work and there are several features the built in forward renderer can use that the LWRP cannot. Otherwise they’re going to be very similar. If you have a lot of real time lights, they’ll both be much worse than the built in deferred, and if you want to use Temporal AA, deferred will generally perform better overall than the built in forward path.
However for otherwise similar scenes that aren’t render thread or GPU limited (I.e.: your frame rate is the same or better than your monitor can display), they’re all going to be identical when it comes to input latency since that is determined by aspects of the engine unrelated to rendering.
Latency is mostly down to graphics drivers and output devices.
Graphics drivers can buffer multiple frames ahead of what’s actually been rendered+presented, and this is probably the biggest cause of latency (look for the ‘max pre-rendered frames’ setting if you’re using an Nvidia card). Vsync can make this more obvious, by limiting the rate at which the GPU can render frames.
And some LCD TVs can add a lot of input lag for image processing (sometimes ~100ms if not in game mode, and even ~40ms in game mode). PC monitors generally shouldn’t be so bad, though.
If I’m getting perfectly responsive input from older games like Quake 3 Arena, Warsow, Counter-Strike Source, etc. Then clearly the problem is directly linked to the game engine and rendering pipeline.
And I have confirmation from Unreal Slackers that modern games actually have 2-4 times more input lag than older games, because of how graphics are being rendered these days.
Quake 3 Arena feels very responsive and only had 8-12ms input lag.
Most games these days give you 22-70ms input lag.
The absolute minimum latency from USB is around 7 ~ 8ms. Cheap wired gamepads and gaming mice get close to that. 1000 hz polling rates many gaming mice claim only helps reduce the latency over that base 7 ~ 8 ms, it does not mean they have 1 ms of latency. Keyboards, even gaming keyboards, are often between 15 ~ 30 ms of latency, so that’s some extra 8 to 23 ms on top of the base 7 from USB. Old PS/2 keyboards were actually faster! The lowest of low latency LCD is at best 9 ms, even those running at 240 hz. So if you have a game running at 1000 fps, the at best you’re going to be getting is around 20 ms… but no game is running that fast, not even quake 3 arena. More likely you’re going to be around 30 ms for Q3A with the best case hardware.
Modern PC games are all going to be 30ms or more. A 30 hz game using a modern threaded rendering approach and double buffering is going to be 100 ms alone just from the game execution, rendering, and graphics API. Add that base best case of 18 ms on top of that, and you’re at 118 ms.
With a 144 hz monitor and game running at 144 fps or better and with something like Freesync or GSync and double buffering disabled, then you’re looking at somewhere around 30 ~ 40 ms at the best case for modern games running the best hardware around.
Console games are worse. Wireless gamepads are ~20 ms. TVs alone have 30 ~ 150 ms of latency. The actual game code, even running 60 fps, are going to be at the best case around 60 ms total due to various bits of how consoles work. So the best case there is close to 100 ms, but most games are closer to 150 ms, and if people don’t modify their tv settings from default it could be as high as 300 ms.