cataclysmbnteam / Cataclysm-BN

Cataclysm: Bright Nights, A fork/variant of Cataclysm:DDA by CleverRaven.
https://docs.cataclysmbn.org
Other
660 stars 262 forks source link

Ammo Rebalance Planning #359

Closed chaosvolt closed 1 year ago

chaosvolt commented 3 years ago

Is your feature request related to a problem? Please describe.

This is the tracking issue for my work on the Ammunition Rebalance project, so we can actually hash out how best to tackle things ahead of time instead of my usual method of drunken fumbling to figure how to balance things on a PR-per-PR basis. This started with just the basic thought of ".22 LR is kinda garbage and needs some tweaking to give it an actual niche to fill" and has developed from there.

Describe the solution you'd like

I'll start with an overview on ammunition I've already rebalanced, listing their previous and current damage, as well as changes to armor penetration. This will generally cover only the FMJ, round-nose, etc variants since the JHP stats are typically derived from that.

Piercing values will list the standard/FMJ variants original value, its current value, and its potential value if using a different method of balancing proposed by Coolthulu during a conversation in the modders discord (see below for explanation).

Ammo Damage Pierce
.22 LR 12/16 0/7/9
.32 ACP 16/21 0/7/12
.380 ACP 16/21 0/7/12
.38 Special 20/24 4/10/14
.38 Super 26/32 0/14/18
.357 Magnum 28/34 4/14/19
.357 SIG 28/34 4/14/19

Current trend, as outlined in GAME_BALANCE.md:

  1. If base damage is less than 20, increase by 33.333% (multiplier of 12/9)
  2. If base damage is 20-29, increase by 22.222% (multiplier of 11/9)
  3. If base damage is 30-39, increase by 11.111% (multiplier of 10/9)
  4. If base damage is 40 or higher, no change.

Armor penetration is currently being balanced based on the following assumptions:

  1. Pistol-caliber hollowpont rounds will have zero armor penetration. Rifle-caliber hollowpoint rounds might or might not get some degree of armor penetration, not sure yet, but will definitely be lower than their FMJ variant.
  2. Hollowpoint rounds should have at least 25% higher damage than their standard FMJ variant.
  3. For pistol-caliber rounds not meant to defeat soft body armor, the standard/FMJ variant should have enough armor penetration to do 25% more damage when tested against a value of 16 armor. This was chosen because it's currently the same value as a kevlar vest.
  4. Tentative plan for rifle-caliber rounds will be to perform the same balance recommendation as in step three, but tested against an armor value of 45. This was chosen due to being the current armor value of a ceramic MBR vest.

An alternative formula for determining recommended armor penetration was discussed in the modder's discord, but I'd need to hash out what the values will look like when laid out on a table. If I recall the suggestion was a much simpler method (correct me if I misread):

  1. Hollowpoint variants of pistol rounds have 25% higher damage than FMJ variant, and rifle-caliber JHP rounds will have 12.5% higher damage. Standard pistol-caliber rounds will have no arpen for their FMJ variant, PDW and rifle-caliber rounds will assume their FMJ variant has a 12.5% Functional Damage boost to arpen.
  2. FMJ variant has 25% higher FUNCTIONAL damage (combination of damage plus arpen) than the HP variant's Functional Damage.
  3. Rifle caliber balancing undetermined but will most likely assume the JHP variant has at least some arpen. For now I'm going with a rough bonus of 12.5% Functional Damage for any existing or hypothetical JHP variants, with the Functional Damage of FMJ variants taking that into account.

If this version is implemented, it would have the advantage of not being dependent upon arbitrary armor values for balance. However, depending on how it's calculated, this might mandate giving even higher levels of armor penetration to pistol-caliber ammunition, which may make them completely ignore armor designed to resist those calibers of ammunition.

This could be mitigated by rebalancing the armor in question accordingly, possibly warranting a port-over of the ballistic damage pull request from DDA. Currently DDA's ballistic material balance is woefully inadequate for this task (DDA kevlar vests actually have 15 ballistic protection, making them slightly worse than BN's version and accomplishing the exact opposite of its apparent intent), but we'd then be free to adjust the ballistic resistance of materials independent of its cut protection, letting us improve the balance point further without it affecting melee balance.

And here I'll prepare a table of what ammunition has yet to be balanced, and what values they're likely to be granted. This will list the current damage alongside the projected future damage. Then it will list the current armor penetration, the projected armor penetration using method one, and the projected armor penetration using method two. As usual, these values are for the standard/FMJ variants, properties of the hollowpoint variant (when they exist) can be calculated from the values given.

Ammo Damage Pierce
9x18mm 16/21 2/8/12
9x19mm 22/27 8/12/15
.40 S&W 23/29 6/12/16
.45 LC 25/31 2/14/17
.45 ACP 27/33 6/14/19 (!)
.410 shot 30/33 (41 if shot is treated as HP) 0 (no change)
10mm Auto 31/34 4/15/19
7.62x25mm (JHP) 24/37 (22.222% plus HP bonus) 2/???/0

Side note (!): Should .45 ACP maybe be lumped into the latter category below, or given a separate modifier to alter its arpen relative to 9mm?

Secondary side note, the only in-game FMJ loads for 7.62x25mm are either overpressure or subsonic, which complicates balancing them a bit more.

Extremely high-power pistol and shotgun rounds, those having over 40 base damage to begin with and those that reach 40 after adjustment, will need to have their arpen values calculated differently to avoid having rifle-caliber levels of arpen. These will simply use half the arpen the normal calculation would produce: Ammo Damage Pierce
.44 Magnum 36/40 8/???/11
.454 Casull 48 (no change) 8/???/14
12 gauge (slug) 50 (no change) 6/???/14
.500 Magnum 55 (no change) 8/???/15
PDW rounds, as noted above, could get their arpen values slightly differently. First calculate how much arpen they'd by expected to have by rifle-caliber standards, then add an additional 50% boost to the arpen. Ammo Damage Pierce
4.6x30mm (AP) 18/24 20/???/21
5.7x28mm (SS190) 20/24 18/???/21
And here are projected possible updates to rifle-tier ammunition. Method one values not listed as not yet 100% certain if comparing them to 45 armor value is ideal just yet: Ammo Damage Pierce
5.45x39mm (7N10) 40 (no change) 6/???/23
5.56x45mm (M855A1) 42 (no change) 6/???/24
.300 AAC Blackout (JSP) 43 (no change) 5 (no change)
7.62x39mm (M67) 49 (no change) 10/???/29 (!)
7.62.54mmR 54 (no change) 10/???/31
7.62x51mm (M80) 58 (no change) 6/???/34
.30-06 Springfield (JSP) 62 (no change) 10/???/36
.270 Winchester (JSP) 67 (no change) 4/???/39
.300 Winchester Magnum (JSP) 70 (no change) 8/???/41
.50 BMG (M33 Ball) 131 (no change) 28/???/76

Side note (!): Should 7.62x39mm maybe be lumped into the latter category below, or given a separate multiplier to alter its arpen relative to 5.56mm?

And then I went with the same logic magnum pistol rounds use regarding certain high-power rifle rounds, assuming they have half the arpen the math would spit out otherwise: Ammo Damage Pierce
.45-70 (JSP) 57 (no change) 3/???/17
.700 NX 110 (no change) 30/???/32

Describe alternatives you've considered

Putting off the effort of planning this out until the weird cold snap the US is currently having stops draining my IQ.

Additional context

  1. I've decided to treat JSP rounds as I did .22 LR lead round nose, statting them as I would FMJ rounds instead of hollowpoints. Basically every JSP is high-damage and lacks a FMJ variant to compare against.
  2. The recommendation for overpressure ammo, as brought up in https://github.com/cataclysmbnteam/Cataclysm-BN/pull/265, was to add an additional 25% damage increase in exchange for double the recoil. This is presumably to be applied relative to FMJ or JHP depending on which bullet type the +p ammo is stated to be, which will determine whether it has arpen as well or not.
  3. The armor penetration for rifle-caliber ammunition will be easier to figure out if method two is used. Giving the JHP a 25% boost to Functional Damage via arpen will allow the FMJ variant to have a further boost to arpen to make its Functional Damage higher. This also enables determining desired arpen even if the ammo doesn't have a JHP variant (relevant to point three, below).
  4. 5.7x28mm and 4.6x30mm, being PDW ammunition designed to defeat soft body armor, will have its arpen and Functional Damage balanced as if it were a rifle round. This distinction would be more visible if those ammotypes had hollowpoint variants.
  5. Should .36 and .44 cap and ball ammo, or other pre-cartridge lead-only rounds, have any arpen at all? .22 LR is lead round nose too, but it can also be justified by .22 LR having a much higher muzzle velocity.
  6. .44 Magnum officially reaches the point where, when tested against 16 armor value, it needs to deal more than its base damage to actually be more effective against armor than the JHP variant would be, hence no value given for projected arpen using method one. This seems like valid reason to use method two instead.
  7. .454 Casull is in an odd position. If I balance them as pistol rounds, them being
  8. I've yet to figure out a sensible method for balancing AP variants of rifle-caliber rounds relative to their FMJ variant. Should they have an additional 25% higher Functional Damage bonus via their extra arpen, only 10%, 12.5%, or what? And if so, should they suffer any reduction in base damage beforehand, relative to FMJ?
  9. 5.7x28mm and .38 Special run into an interesting problem: do I count 20 as first tier (33.333% increase) or second tier (22.222 increase)? As seen in the above table I went with the latter but it makes 5.7mm identical stat-wise to 4.6mm. Doing the former makes 5.7mm a lil bit better and gives them more differentiation. This would also beef up .38 Special slightly. An altenrative would be to still use the current logic for which multiplier is used, and simply give 5.7x28mm a different base damage to nudge it towards being slightly different.
  10. The FMJ variants of .30-06 and 7.62 NATO have identical damage, and current balance methods would give them identical arpen too. Should .30-06 be buffed slightly to differentiate, or 7.62x51mm nerfed? Quick search indicates the former would be more sensible, as .30-06 loads teend to have more joules than the M80 7.62x51mm loading.
  11. Should buckshot be treated like hollowpoints and thus subject to a damage bonus over slugs?
Coolthulhu commented 3 years ago

I dislike one thing about the alternative formula: You need to calculate HP damage before AP arpen. I'd rather see it as all 3 values (HP damage, AP damage, AP arpen) calculated from one value.

This is presumably to be applied relative to FMJ or JHP depending on which bullet type the +p ammo is stated to be, which will determine whether it has arpen as well or not.

Overpressure HP would need some different formula. For now, overpressure should have damage of HP and arpen of AP.

Should .36 and .44 cap and ball ammo, or other pre-cartridge lead-only rounds, have any arpen at all?

Not sure, but I'd lean towards treating them as if they were HP.

I've yet to figure out a sensible method for balancing AP variants of rifle-caliber rounds relative to their FMJ variant.

Hard to answer at the moment. FMJ is already "the AP variant", so AP-AP would need something extra. I'm thinking about introducing scaling armor (ie. for example, armor that adds 30% of attack's raw damage to its own resistance) and this would make AP more useful. I'm also adding proper support for armor multiplier right now. But until all common pistol rounds are good, it's not very important.

5.7x28mm and .38 Special run into an interesting problem: do I count 20 as first tier (33.333% increase) or second tier (22.222 increase)?

It exposes some problems with your tier system: it has hard thresholds which break around 9 and 0 and depends on some "earlier value". Dependence on earlier value is hard to fix, but the tiers should be easy to replace with a formula. For example https://www.wolframalpha.com/input/?i=n+*+%281+%2B+%2840+-+n%29+*+0.01%29 with a note that it's only for <40 damage. For now, compare them against "neighbors" and see where it belongs.

Should .30-06 be buffed slightly to differentiate, or 7.62x51mm nerfed?

This will require looking at guns that use them. The one with better guns (burst fire, mods) or worse availability should be stronger.

Should buckshot be treated like hollowpoints and thus subject to a damage bonus over slugs?

Yes. Until there are HP slugs, having buckshot be HP with lower range is fine.

chaosvolt commented 3 years ago

Apologies for the delay on this, internet's finally back.

I'd rather see it as all 3 values (HP damage, AP damage, AP arpen) calculated from one value.

That was what I was trying to do via rolling damage and arpen into a single combined value that I tentatively labeled Functional Damage. For HP rounds it would be purely from damage (base damage plus the hollowpoint bonus) unless being rifle-caliber grants it some bonus arpen, while FMJ/AP would simply have damage plus arpen.

Overpressure HP would need some different formula. For now, overpressure should have damage of HP and arpen of AP.

That works for now then.

Not sure, but I'd lean towards treating them as if they were HP.

Breaks consistency but eh, seems fine to me if you'd prefer that. Makes sense since they're underused cartridges, they have most of the same disadvantages as flintlocks without the same degree of oomph, plus they're only slightly easier to make than standard cartridge ammo.

FMJ is already "the AP variant", so AP-AP would need something extra.

True, though a handful of cartridges do have a standard FMJ variant plus a steel-core one. The main benefit to providing a separate method for handling their AP is so that basing the arpen of PDW rounds off that will spit out a value that's in the neighborhood that seems adequate for its purpose, so I don't have to make up an arbitrary value. XP

It exposes some problems with your tier system: it has hard thresholds which break around 9 and 0 and depends on some "earlier value".

True. Scaling it better would work but would increase complexity, nudging the values as warranted to make them contrast with close neighbors might be a better option for handling edge cases, for now at least.

This will require looking at guns that use them. The one with better guns (burst fire, mods) or worse availability should be stronger.

7.62x51mm has a wider selection of guns with better moddability, while .30-06 is less available, if I recall.

chaosvolt commented 3 years ago

Possible alternative method for deciding arpen of AP rounds: 80% damage, 150% arpen, relative to FMJ variant (extant or hypothetical). Bit simpler that way, not sure...

Coolthulhu commented 3 years ago

If AP ammo is rarer or more expensive, it can just have some extra bonus "for free". Not too much.

chaosvolt commented 3 years ago

Could work too, +25% with no damage penalty. Though this does allow me to make the subsonic ammo in https://github.com/cataclysmbnteam/Cataclysm-BN/pull/369 count as AP since it implies a damage bonus.

Coolthulhu commented 3 years ago

I mean, no damage penalty compared to FMJ, not HP.

chaosvolt commented 3 years ago

That's what I meant, yeah. Currently the "80% damage, 150% arpen" is relative to FMJ which means the arpen ends up being higher than the damage.

chaosvolt commented 3 years ago

From discussion on the modder's discord, what came up:

HP variant is considered 100% (example: 100 damage, 0 arpen)
FMJ variant is considered 125%, 80% damage and 45% arpen (example: 80 damage, 45 arpen)
AP variant is considered 140%, 70% damage and 70% arpen (example: 70 damage, 70 arpen)

Reminder to myself, this means that damage of AP variants is basically 7/8 of FMJ variant's damage, and arpen equals its damage.

chaosvolt commented 3 years ago
From discussion in the modder's discord about making the mulitpliers scale a bit more sanely, also eliminating the issue of what to do with perceived liminal points: Number Multiplier
19 and below 12/9
20-24 11.5/9
25-29 11/9
30-34 10.5/9
35-39 10/9
40-44 9.5/9
45 and up 9/9 (no change)

This seems like it'd reduce the risk of a base damage slightly above or below a "liminal point" ending up at identical to a different number due to differences in multiplier uses.

Example:

  1. A value of 19 would be increased to 25.333, rounded down to 25.
  2. A base damage of 20 would be increased to to 25.556, rounded up to 26.
  3. A value of 21 would be increased to 26.833, rounded up to 27.

Potential alternative is to only apply the 9.5/9 multiplier to 40 and preserve the previous "anything above 40 doesn't get a damage buff" rule, since the cutoff between a small multiplier and no multiplier is still going to produce some weird results (40 damage being buffed to 42, vs 44 damage being buffed to 46).

chaosvolt commented 3 years ago

A non-linear formula was presented as a possible alternative: dmg * (5/6) + 7.5

This makes a multiplier of 1.333x for 15, and a multiplier of 1x for 45. If round-down were used instead of round-to-nearest-integer, it would also have the effect of preserving the other "no buffs for anything at 40 or above" rule without having to change the math.

I'll need to write a lookup table to see exactly how numbers change with this formula, with both rounding methods. Will edit it in here.

Initial Number Result Rounding Down Rounding To Integer
15 20 N/A N/A
16 20.833 20 21
17 21.667 21 22
18 22.5 22 23
19 23.333 23 23
20 24.167 24 24
21 25 N/A N/A
22 25.833 25 26
23 26.667 26 27
24 27.5 27 28
25 28.333 28 28
26 29.167 29 29
27 30 N/A N/A
28 30.833 30 31
29 31.667 31 32
30 32.5 32 33
31 33.333 33 33
32 34.1667 34 34
33 35 N/A N/A
34 35.833 35 36
35 36.667 36 37
36 37.5 37 38
37 38.333 38 38
38 39.167 39 39
39 40 N/A N/A
40 40.833 40 41
41 41.667 41 42
42 42.5 42 43
43 43.333 43 43
44 44.167 44 44
45 45 N/A N/A

The round-down method overlaps at the following initial numbers: 15/16, 21/22, 27/28, 33/34, 39/40.

The round-to-nearest-integer overlaps at the following intial numbers: 18/19, 24/25, 30/31, 36/37, 42/43.

Assuming the multiplier is capped to 1.333x for 15 and below, the lowest number to benefit from round-down is 3, increased to 4 with no rounding. The lowest number to benefit from round-to-nearest-integer is 2 (rounded up to 3).

Values of 15 and below should probably disregard the formula entirely and use a capped multiplier of 4/3 (1.333x). Example of how wacky it'd get at the lowest end: if uncapped, a value of 1 would be buffed to 8.333.

chaosvolt commented 3 years ago

So, what's left for this should be:

  1. Rebalancing piercing for rifle-caliber rounds.
  2. Figuring out whether to use the weird formula or just refine the current one.
  3. Deciding whether to halve arpen for low-velocity rounds (blackpowder rounds set a precedent for this).