Original title: “Recoil Compensation”, 04.02.2013
Now there is one phrase which you hear a lot this days in a few places. It’s “Recoil Compensation”. So let´s start a boring and very theoretical thread to explain it to everyone…yeeeeeeeeeey!
Ok, so what is RC:
Pretty simple, it´s moving your mouse or pushing your control stick in the opposite direction of the one your gun is moving while firing. You can compensate for vertical recoil and to some extend for drift caused by asymetrical horizontal recoil (like 0.2 left and 0.5 right…the gun has the tendency to move to the right). Let´s check out some plots:
Note: For all following plots i will use a fictional gun with 900 rpm, 0.25up/0.3left/0.5right and x2.5 FSM which is pretty much an average AR. I added a constant 0.15 spread to make the results better visible (no spread increase). Plots made with SymPlot by Aimdrol.
Ok, so that´s how it would look like if you can compensate perfectly.
But why can I compensate for vertical recoil but not for horizontal recoil?
Let´s do some maths!
The average human reaction time is ca. 200 ms or 0.2 s. Our fictional gun has 900 rpm or one bullet every 66 ms. That means every 66 ms the gun will kick to the left or to the right somewhere in between 0.3 left and 0.5 right. RANDOMLY. Your chances on compensating this recoil with a reaction time of 200 ms are pretty much non-existent. There is no way you could predict the randomness of the recoil. It´s a game-mechanic we have to deal with. No compensating here.
But why can I compensate for drift then if it´s created by horizontal recoil?
The drift our gun shows is predictable and fairly consistent to the right. You can learn the average (you will see why I said ‘average’ later)speed a gun drifts in a certain direction. It won´t follow the same exact path every time, but it pull in an approximate direction. In our case it would be a 0.1 drift to the right. (average between 0.3 and 0.5 = 0.4, distract the average recoil from the higher recoil value (0.5 to the right) => 0.5 - 0.4 = 0.1 drift to the right)
And what about vertical recoil?
Vertical recoil moves the gun straight upwards at a constant average speed (again ‘average’). It´s pretty easy to learn how fast you need to ‘aim down’ in order to compensate for it. This should be pretty obvious.
What´s up with the average speed?
Your gun kicks up every time it fires and does not move upwards at a set speed. In our case with our fictional gun this happens 900 times per minute or every 66 ms. But you can´t move compensate for 0.25 recoil every 66 ms, can you? Instead you will compensate for the recoil at a certain speed, the average speed your gun recoils up (resulting from moving up 0.25 degrees every 66 ms = 225 degrees/minute). This way you will stay on target quite precisely.
What affects my recoil compensation in a bad way?
Well there are a couple of things:
1.) Nobody is perfect
It´s almost impossible to compensate in the right direction with the right speed while in battle. I even doubt you could achieve this while firing against a wall on a private server.
Your first shot will recoil more then the following shots. Keep that in mind. So you will pretty much never be able to compensate perfectly the first shot by moving your mouse down faster and then slow down for the rest of your burst. It´s hard to compensate for it and only few manage to do it. It requires some training.
Remember what I said about horizontal recoil? The faster you fire, the more your gun will shake in the same amount of time.
4.) Human reaction time
Every input is affected by your own reaction time. We can´t compensate for the first shot on our fictional gun ( -> 2. ). So the second shot will be already off our initial aiming point. With our fictional fun we will fire 3 more shots before we can react ( 3 x 66 ms + 66 ms (first shot) = 264 ms). And it´s unlikely that you compensation will be even close to perfect after those 264 ms.
Ok that should be it. If I messed up terrible somewhere or it´s hard to understand, feel free to kill me (or just correct me/ask for help)
Credits for the numbers to timminator and Cheapnub.