What makes a weapon balanced?
This means that the recoil and bullet spread of the gun will have an effect on how much damage someone can actually inflict with that gun. Beyond that we also have to look at how many bullets are in the guns magazine, if they run out of bullets they have to reload which means they aren't doing any more damage.
The ultimate answer to that question is, it depends. Which means I have to take a closer look at each variable and determining their effect.
Bullets per Shot
Rounds Per Minute
Why use one gun compared to another?
Now we're going to take a look a few of these weapons and what purpose they were supposed to play. Some of the stats on these guns have been changed by the gaming community but only slightly so they are still very close.
The orange highlighted weapons are the original four guns.
The Scar-M8 is the shotgun weapon which I set attempted to balance with the rest of the guns by removing it's recoil and cone since those stats affect it's usage very differently.
The type of weapon (0,1,2,3) indicate their "class" and the "slot" they take. (0=Pistol, 1=SMG, 2=Rifle, 3=Heavy) You can only carry one weapon per slot, the exception is Rifle and Heavy weapons use the same slot.
Balancing the first 4 weapons
One of the first decisions I made however was whether the type of weapon should effect the total score and if so by how much? It made sense to me that Rifles would be strongest followed by SMG's and then Pistols. The difference would be subtle however by only a 10-15% difference so that there wouldn't be too great of a disparity. (Heavy weapons are not included in this since they are meant to be very rare and therefore incredibly powerful.)
Let C# be an arbitrary constant.
Total Score = (DMG * SHOTS * RPM) - (C1 * RECOIL) - (C2 * CONE)
+ (C3 * CLIP) - (C4 * WEIGHT)
The C# constants are there to adjust the weight of the stat on the total score. You may notice that stats like CONE are in the range of 0.01-0.05 therefore they must be brought up to the same scale as RPM which is in the range of 300-900. (4 powers of 10)
This equation produced scores in the thousands thanks to RPM being such a large number so I multiplied RPM by 0.1 (or divided it by 10) so that it was much closer to values of the other stats (DMG, CLIP, WEIGHT). This resulted in an equation like:
Total Score = (DMG * SHOTS * (RPM * 0.1)) - (C1 * RECOIL) - (C2 * CONE)
+ (C3 * CLIP) - (C4 * WEIGHT)
A few things occurred to me after this, right now i'm only looking at damage on a per-minute level and ignoring the alpha strike potential of a gun. Alpha strike is a term I learned from playing EVE: Online, it is simply the amount of damage done in one shot. Guns like sniper rifles have very high alpha strike potential but poor DPS or DPM since they have a long delay before their next shot. Sniper rifles however are a valid choice in many games however due to their alpha strike potential and therefore I need to account for this somehow.
After adding in alpha strike into the equation I also decided that I should add variables for changing the weight of Damage per minute. I've also renamed the C# variables so that they are more apparent.
Total Score = (DMG * SHOTS * C_ALPHA)
+ (DMG * SHOTS * (RPM * 0.1) * C_DPM)
- (C_RECOIL * RECOIL) - (C_CONE * CONE)
+ (C_CLIP * CLIP) - (C_WEIGHT * WEIGHT)
The equation is getting a bit long now so let's split it up:
ALPHA_SCORE = DMG * SHOTS * C_ALPHA
DPM_SCORE = DMG * SHOTS * (RPM * 0.1) * C_DPM
RECOIL_SCORE = RECOIL * C_RECOIL
CONE_SCORE = CONE * C_CONE
CLIP_SCORE = CLIP * C_CLIP
WEIGHT_SCORE = WEIGHT * C_WEIGHT
ALPHA_SCORE + DPM_SCORE + CLIP_SCORE
- RECOIL_SCORE - CONE_SCORE - WEIGHT_SCORE
Not everything is covered...
As we've said before, the effect of recoil changes based on the RPM. We don't have enough data yet to map this however.
The damage output of a gun per minute also changes based on the size of the magazine and the RPM, the smaller your magazine the more you have to reload which means less shooting.
Deciding the weights
Damage Per Minute (DPM)
The final scores and balancing
In the end these were my results.
So is this accurate at all?
So now it's time to test it.