by Schlangster and Kai Hohiro
Spread is the value that determines by how much your shots can deviate from your intended target (the center of your cross hair). The higher your spread, the more inaccurate you are. For the sake of powergamers, modders and the good of mankind we’ll explain in-depth how this mechanic works.
1. Spread Calculation
2. Spread in-game
3. Testing Methods
1. Spread Calculation
A lot of you probably know the http://geck.gamesas.com/index.php/Gun_Spread_Formula from the GECK wiki. Now forget all about it, because none of the settings or formulas are used in Fallout New Vegas. (And just to point out here again, FNV is a full of data and settings that are legacies from Oblivion and FO3, so just because something exists in the data files, doesn’t mean it’s actually used anywhere).
Instead we are presented with the following new settings in FNV:
fRunningSpreadPenalty (Default: 0.2)
fStandingSpreadPenalty (Default: 0.1)
fUnaimedSpreadPenalty (Default: 0.2)
fWalkingSpreadPenalty (Default: 0.1)
fCrippledArm1HSpreadPenalty (Default: 0.2)
fCrippledArm2HSpreadPenalty (Default: 0.4)
fCrippledArms1HSpreadPenalty (Default: 0.4)
fCrippledArms2HSpreadPenalty (Default: 0.6)
fWobbleToSkillConversion (Default: 0.5)
fMinGunSpreadValue (Default: 0.01)
These settings all affect the player’s spread. Now the total spread consists of two major factors, the player’s spread (from here on referred to as PSp) and the weapon’s spread (referred to as WSp).
The PSp is very variable, being affected by the players weapon skill, movement, arms and much more. Here is an overview of all the factors that affect PSp:
- Weapon Skill
- Perks/Traits/Chems (even those that say modify WSp, actually modify PSp)
- Crouching
- Using Scope/Iron Sights
- Standing/Walking/Running
- Using a 1 or 2 handed weapon and having 1 or 2 arms crippled
- Weapon’s required strength
- Weapon’s required skill
- Ammo (this actually surprised me)
The WSp is completely static and consists solely of the weapon’s ‘Min Spread’ value. The only thing that affects this are weapon mods, nothing else does. Many people probably have also noticed the ‘Spread’ value in weapon tabs. That value does nothing at all. It didn’t do anything in FO3 either, unless you re-enabled spread penalties based on weapon conditions. I’m not sure if it’s possible to enable that in FNV, haven’t really looked into that.
Now what the PSp does is influence your character’s hand sway. The higher the PSp the more your hand will sway around, causing your shots to go off target. The sway you experience while using a weapon’s scope is exactly the same as your hand sway. The WSp on the other hand simply influence at what angle your bullet will leave the gun barrel, it will not cause any sway of the scope or player’s hand.
Following are the calculations that are used to determinate the player’s exact spread:
UnaimedPenalty
fUnaimedSpreadPenalty * !isUsingIronSights
RunningPenalty
fRunningSpreadPenalty * isRunning * isMoving
WalkingPenalty
fWalkingSpreadPenalty * !isRunning * isMoving
(Walking and Running Penalties are exclusive to each other)
StandingPenalty
fStandingSpreadPenalty * !isSneaking
ArmConditionPenalty
if 1ArmCrippled
fCrippledArm1HSpreadPenalty * isUsing1HWeapon
fCrippledArm2HSpreadPenalty * isUsing2HWeapon
if 2ArmsCrippled
fCrippledArms1HSpreadPenalty * isUsing1HWeapon
fCrippledArms2HSpreadPenalty * isUsing2HWeapon
(ArmConditionPenalties are all exclusive to each other)
StrReqPenalty
If Weapon Required Strength > Player Strength
(Weapon Required Strength - Player Strength) * 0.025
SkillReqPenalty
If Weapon Required Skill > Player Skill
(Weapon Required Skill - Player Skill) * 0.0025
SkillBonusMultiplier
1.00 - Player Skill/100 * fWobbleToSkillConversion
PlayerSpread = Perks * Ammo * SkillBonusMult * (UnaimedPenalty + WalkingPenalty + RunningPenalty + StandingPenalty + ArmConditionPenalty + SkillReqPenalty + StrReqPenalty)
if PlayerSpread < fMinGunSpreadValue
set PlayerSpread to fMinGunSpreadValue
WeaponSpread = WeaponMinSpread - WeaponModBonus
TotalSpread = PlayerSpread + WeaponSpread
And there you have your spread value. A few noteworthy things:
- I wrote Player everywhere, however that’s interchangable with Actor
- Many people assumed player skill didn’t matter as long as you meet the minimum skill requirements of a weapon. That is incorrect, as soon as you have any kind of penalty, skill will matter.
- As long as you have the weapon’s required strength and skill values, and no crippled arms, you will have the best possible accuracy while crouching, not moving and using IronSights. Perks and ammo will not improve that.
- Trigger Discipline is only useful for Run’n'Gun players(or characters that otherwise have a lot of penalties), Fast Shot is FAR more useful for careful sniper characters that usually crouch and aren't moving.
- Shotgun slugs are less useful then expected. The Sawed-Off for example has a WSp of 7(!) which is not reduced in any way by using slugs, so that makes it incredibly hard to hit anything with a slug over a moderate distance, since you fire only 1(2) projectile instead of 7(14). Slugs are only useful at very very close range(or with more accurate shotguns).
- With the default values there is always a minimal amount of spread (fMinGunSpreadValue). It’s a nice touch for immersion, since it prevents the player’s weapon and scope to become completely static.
2. Spread in-game
Now the spread numbers are only arbitrary values and were fairly easy to figure out. We went one step further and calculated the actual degrees of deviation that spread causes.
These are approximations and may not be 100.00% correct, since we had little to work with here, however we did plenty of tests and these numbers fit into the calculations:
PSp was actually surprisingly straight forward:
1.00 PSp = 5.955 degrees of deviation.
WSp however not at all because it didn’t follow a straight linear progression. Ultimately the following formula fit the debug values for different weaponspreads
1.00 WSp = ((0.0125 * WeaponSpread2) + (0.125 * WeaponSpread)) * 5.955
TotalDeviationDegree = (PlayerSpread + ((0.0125 * WeaponSpread2) + (0.125 * WeaponSpread)) ) * 5.955
What’s noteworthy:
- PSp actually causes a much bigger degree in deviation than an equal number of WSp. So 2 PSp is a much bigger penalty to the players accuracy than 2 WSp.
- However most of the time players, especially those that use automatic weapons and shotguns, have alot higher WSp than PSp. In those cases a weapon's Min Spread will be a way bigger factor in your overall accuracy than anything else.
3. Testing Methods
The PSp again was actually fairly easy to figure out, thanks to the fact that in the default settings the scope sway follows exactly the player’s hand sway.
All we had to do was record all the extremes of the scope sway, then we could simply calculate the diameter of the sway circle with 3 xy coordinates via the following formula (where getAngle X is Y and getAngle Z is x)
A + B(-x1) + C(-y1) = -(x12 + y12)
A + B(-x2) + C(-y2) = -(x22 + y22)
A + B(-x3) + C(-y3) = -(x32 + y32)
xm = B/2, ym = C/2, and r2 = xm2 + ym2 - A
If you want to try this yourself you can simply write a script that records player.getAngle X and player.getAngle Z, while you are using a scope, have it record the 3 extreme points it will find during a 20 second duration) and input them into a circle calculator.
What initially threw us off was that no matter what gamesettings we changed, the sway wouldnt alter one bit. That was because we were using the old calculation from FO3 and eventually realized they didn’t do anything at all. We then found the new spread GMSTs, and their effect was immidiately apparent.
Calculating the PSp is fairly trivial since FNV uses a much much more straight forward calculation (that makes a lot more sense too) than what was used in FO3.
In the end all we had to do was input various test circles into a spreadsheet and the common multiplier of 5.955 for the spread values became very apparent.
Like mentioned the degrees of deviation caused by Weapon Spread were far more tricky to find out, since weapon spread doesn’t cause any kind of sway.
In this case what we did was build a test room with a shooting range. Our test methods were fairly...brute force. We created a circle in the center of the HUD that we could expand and contract manually. Then we fired thousands of rounds into a wall and contracted the circle to fit the shot impacts, then we would use the diameters of those circles in our weapon spread calculations. It became quickly apparent that the deviation wasn’t a linear progression as it was for player spread, ie 4 MinSpread didn’t have twice the deviation of 2 MinSpread.
In this case we simply had to rely on a lot of trial and error and approximations until we reached the above mentioned formula for WeaponSpread deviation.
And that concludes our explanation of Spread. Hope these findings will prove helpful to people out there.