Bluetracker
Tracks Blizzard employees across various accounts.
Your mouse input is being buffered to the next frame, shifting your shot from where you actually fired
Please watch this brief ten-second demonstration.
For the purpose of testing, I wrote a simple mouse script using Logitech Gaming Software's Lua functionality.
One button executes the sequence demonstrated at the start of the clip: move mouse right by 126 counts, click and release button, then move mouse right by 126 counts again.
Another button is bound to simply move left by 126 counts, in order to reset the position.
This script imitates what you would normally do when you are executing a fast one-way flick shot.
Intuitively, you would think that the game should process the input in sequence -- move your crosshair over the Training Bot's head, fire the shot, then move the crosshair further.
Yet this is not actually the case -- the game is currently bundling together all of your inputs executed within one frame, only processing them at the start of the next frame.
As a result, your shot will land at the end of all your mouse movement during that frame, instead of somewhere in the middle where you actually fired.
This cause the sequence of your input to be lost, and depending on the framerate and how fast you're aiming, your shot will actually land in different spots.
The lower the framerate and the faster you're aiming, the wider you will miss your shot by.
Basically, the game is punishing people who aim too quickly.
The issue is somewhat less affecting of people who move their mouse slowly, but it is still present and will actually depend heavily on the framerate.
This is the case both for both "Reduce Buffering" ON and OFF. In fact, this would affect people using reduce buffering ON a little more than those with it OFF, since this issue depends on the raw framerate.
EDIT: Here is a video demonstration of what should happen. The game is Reflex Arena, an arena FPS made by a small indie developer. Notice how it's running at a much lower FPS compared to my Overwatch clip (I'm running 4x OW's resolution to lower the framerate), yet it's processing the order of the inputs correctly. This is because it implements a framerate-independent input polling thread that samples your mouse input at 1000Hz (cl_input_subframe 1). What this means is that running this game at 50 FPS would have the same responsiveness as running Overwatch at 1000 FPS.
CSGO and Quake Live also have this issue.
Bill Warnecke
Hey everythingllbeok, the programmer in me loves this post, it's really awesome to see you dig in and experiment with a piece of the Overwatch engine! It seems you're passionate and enthusiastic about this stuff which is awesome. My only ask, if I may, is for patience and diligence in your research; your bolded statements have the potential to mislead.
Input delay is absolutely real. Action starts with the player physically, sensors on your hardware devices, layers of indirection and buffers in the operating system, finally into the Overwatch engine. Even through the fastest path nothing is instant, and most importantly not everything is happening at the same time.
Overwatch uses unbuffered raw input.aspx), this has always been the case.
We're heavily multithreaded, our engine folks work hard to perform the work of one game "frame" as optimally as is possible. At some point however we have to know certain things so they're able to affect the game, your input is one of those things. There are dozens of systems that comprise the game, the input system is one of those and is very early in the frame.
In a game against other players this problem quickly becomes lumped in with overall discussion that's often just called "netcode". Compensation for players with different latency, the rate at which the server can authoritatively process your inputs, etc. Really we're talking about how good it feels and how fair it is.
So while I'll challenge your statement that we punish people who aim too quickly, I will encourage players to configure their client settings to give a stable frame rate. A pro player may want that constant 250+ fps (which is 4ms per frame, think of how crazy fast that is), I believe the game feels great and plays fair at much, much lower fps. Making the game playable on minimum spec computers was important to us too, which is why there is a "lock at 30 fps" option.
I hope this helps! Cheers, and thanks again for the post.