Weapon accuracy system like CS:GO or Call Of Duty

So today I will be working on this and I feel like there a lot of nuances to getting it even remotely correct. This will be available for free in the next release of Extended First Person Shooter Template.

Any thoughts or advice on this is welcome.

From what I can tell there are quite a few variables to getting a weapon to feel right when you fire it. As far as I can tell I have to have variables for the characters movement, in my case I will be factoring UPS rather than checking just for movement states. But Crouching and aim down sight should probably gain static bonuses. Once I figure out the movement variable I then use that to multiply the accuracy values of the weapon. And then finally weapon kick which is the last value that determines how much the cone of fire grows after each shot. Weapon kick will need to quickly decrease after each shot. I plan to do two sets of cross hairs that grow in size exactly like CS:GO has.

Character movement factors.

  1. Movement modifier based on UPS. (Current state speeds: Crouching/Sneaking 400 UPS, Walking 800 UPS, Sprinting 1200 UPS)
  2. Crouching gains a static bonus.

Weapon accuracy

  1. Base Accuracy (Multiplied by Movement factors)
  2. Aim Down sight gains a static bonus. (Every weapon has its own value)
  3. How much the final value is multiplied after each shot. (Needs to countdown quickly after each shot)

I am thinking about actually adding spray patterns to this so that each weapon can have a unique spray pattern. My plan will be to simply store an array of rotations or vectors and go through them after consecutive shot.

This is definitely a complex topic so any feedback on this is welcome.
Is there anything else that I am missing from this? Am I understanding it correctly?

Your thread reminded me of this
Might give you some ideas

AH, interesting. Though this topic is less about ballistics, penetration and falloff and more about simulating weapon accuracy when moving around. So its about how to modify that cone of accuracy.

This is just the start but should get you in the right direction

Ah this looks good! thanks!