Wargame: Inferno

Moderators: Eugen Team, Focus Team

Pyro
Sergeant First-Class
Posts: 102
Joined: Mon 1 Sep 2014 23:56
Contact:

Re: Wargame: Inferno

Postby Pyro » Mon 7 Dec 2015 13:15

Inferno - Critical Hits, Armour Classes and P KO Resolution

This will take a while to explain. I have built upon the simple example outlined above, and used it in the Inferno mod. Each tank has it's own critical damage module, and they are all different, so I can tailor actual armour class for each unit. Not only that, but I can specify different armour in different locations.

A few basics: Inferno uses 25 mm per armour step. The WAB armour classes are used as follows:

Spoiler : :
WAB AC 1 = Inferno 1 = 25 mm RHAe
WAB AC 2 = Inferno 2
WAB AC 3 = Inferno 3
WAB AC 4 = Inferno 3+B
WAB AC 5 = Inferno 4
WAB AC 6 = Inferno 4+B
WAB AC 7 = Inferno 6+A
WAB AC 8 = Inferno 6+B
WAB AC 9 = Inferno 8.5+A
WAB AC10 = Inferno 8.5+B
WAB AC11 = Inferno 8.5+C
WAB AC12 = Inferno 11+A
WAB AC13 = Inferno 11+B
WAB AC14 = Inferno 11+C
WAB AC15 = Inferno 14+A
WAB AC16 = Inferno 14+B
WAB AC17 = Inferno 14+C
WAB AC18 = Inferno 18+B
WAB AC19 = Inferno 18+C
WAB AC20 = Inferno 23 = 575 mm RHAe

+A +13% vs CE warheads (HEAT, etc.)
+B +32%
+C +55%

"Buckets" and modifiers for CE warheads are not random; they have been specifically optimised to fit the actual armour used on vehicles 1980-1989. So vehicles outside that era may not fit into the list properly.

So Inferno uses quite broad "buckets" for determining the general armour for a unit. When a hit occurs, the critical damage system is used to specify the exact armour at the appropriate randomised position of the hit. The resolution between different armour levels is less than 25 mm even at the top end, although this is invisible to the user; I display armour to within 25 mm per step for sanity reasons (and because it is not possible to determine actual armour quite so accurately, even for historical tanks).

The different armour levels against CE warheads (HEAT, etc.) are an important game dynamic, and it works quite well. Using the Maps in 237: TGameplayArmeArmureContainer you can define a different response vs CE warheads to KE. I'm going to assume this is well understood so I won't dwell on it further.

Formula

This is quite lengthy so hidden in a spoiler:

Spoiler : :
Inferno assumes the following to determine a KO: if the attack A equals the defense D, then a KO occurs; or:

A = D

To add a random function we modify A by r, which is a number determined by statistical variation of ammunition penetration. I used a result close to actual Soviet data from World War Two - a bit old, admittedly, but all that I have. It doesn't really matter because we are attempting to include a randomised element to the theoretical peacetime test results.

rA = D

Now I also modify D to take into account the fact that all hits aren't square on to the target face, cos (a) where a is the angle. There is no way to find the actual angle of hit (it is either a front hit, side hit or rear hit) so I randomise the angle of hit.

rA = D/cos(a)

Purists will argue that D is not affected by such a simple relationship as inverse cos (a). However, long thin penetrators such as modern APFSDS, and HEAT warheads (that form their own long thin penetrator out of plasma), do follow closely to an inverse cos relationship. Since this covers most penetrators used in the game, I am happy to keep it simple - it's a randomised function in addition to the random r factor. We can rearrange the formula to show:

[r cos(a)] A = D

[r cos (a)] [A/D] = 1

We know the value in the first square brackets - it's a random function. We know A - it is set by the firing gun/missile. What is D? Well, D is the defence value at the point of impact. I'm going to expand the second square bracket term - it looks more complicated but is exactly the same as the above formula:

[r cos(a)] [A / D_avg] [D_avg / D_max] [D_max / D] = 1

D_avg is the average armour for each bucket; e.g., the last bucket has D_avg = 23 = 575 mm RHAe. D_max is the maximum armour anywhere on the face of the specific tank. D is the armour at the specific point of impact.

Now W:AB won't multiply, it can only add/subtract using critical effect AddDamages. To convert from multiplication to addition we take the natural logarithm of both sides:

ln[r cos(a)] + ln[A / D_avg] + ln[D_avg / D_max] + ln[D_max / D] = 0

Multiply both sides by 2.5 to make the numbers easier:

2.5 ln[r cos(a)] + 2.5 ln[A / D_avg] + 2.5 ln[D_avg / D_max] + 2.5 ln[D_max / D] = 0

Add 10 to both sides. Why? Because a KO is scored when the HPs reach 10. Notice that I don't add a straight 10 to the left side; I add a 5.5 and a 4.5 to different terms:

2.5 ln[r cos(a)] + {2.5 ln[A / D_avg] + 5.5} + 2.5 ln[D_avg / D_max] + 2.5 ln[D_max / D] + 4.5 = 10

Rearrange slightly:

{2.5 ln[A / D_avg] + 5.5} + 2.5 ln[D_avg / D_max] + 2.5 ln[r cos(a)] + 2.5 ln[D_max / D] + 4.5 = 10

OK, by now you think this is crazy - but let me explain. I'll go term by term on the left side: there are four terms plus the 4.5 at the end.

First term {2.5 ln[A / D_avg] + 5.5} - this is the attacking A versus the average defence of the bucket D_avg. This is found by looking up the map tables in 237: TGameplayArmeArmureContainer. So this is the first damage scored on each hit - it is the damage scored against an approximation of the defence armour.

Second term 2.5 ln[D_avg / D_max] - this is the first critical AddDamages. It corrects the average defence value of the bucket to the maximum defence value anywhere on the target face for a specific tank. As a percentage chance it fires 100% of the time, ie the correction is always made. This is specific to each unit type, so this is how I can have many different armour classes using only a few buckets.

Third term 2.5 ln[r cos(a)] - this is our random term to account for different angles of attack and different possible variations in attacking munition (tumble, wind, poor propellant, etc.)

Fourth term 2.5 ln[D_max / D] - this is a series of AddDamages that randomise the actual position that is hit on the target face, and corrects the attack for the actual defence value used.

It is important to carry out the formula in strict order from left to right, to avoid exceeding 10 momentarily (which would immediately KO the target) and to avoid going below zero (which is rounded to zero). Therefore there are strict requirements mathematically to avoid an inadvertent <0 or >=10:

Second term must be zero or negative, and has a minimum of -2.2. Armour class bucket values should be chosen to keep this as close to zero as possible, ie the average bucket value should be as close a match as possible.

Third term varies from -2.3 to +1.0.

The minimum of the third term (-2.3) when added to the minimum of the first term (-2.2) must correspond to the last addition (4.5) in the formula. This ensures that an auto-KO occurs even if the worst randomised roll is made if the attacking value is 10.

The fourth term must be positive, and has a maximum of +4.4.

The sum of the fourth term maximum (4.4) plus the maximum of the third term (1.0) plus the last constant (4.5) must add up to less than 10. This ensures that on multiple critical rolls, the second and subsequent rolls can only score a maximum of 9.9, avoiding an inadvertent KO when we are just rolling for the normal, ordinary criticals.


...continued below
Last edited by Pyro on Mon 7 Dec 2015 13:25, edited 3 times in total.

Pyro
Sergeant First-Class
Posts: 102
Joined: Mon 1 Sep 2014 23:56
Contact:

Re: Wargame: Inferno

Postby Pyro » Mon 7 Dec 2015 13:17

Practical Example

Consider two tanks in the topmost bucket: the Leopard 2A4 and the T-80U, being fired upon by a KE round with a penetration of 22 (550mm penetration - a 120 mm US M829 DU APFSDS at 2,000m) (or 560mm penetration - a 125 mm SU BM-32 DU APFSDS at 2,000m). The data that I use for their front face is as follows:

Leopard 2A4
W:AB AC 20
Inferno D bucket average 23

T-80U with K-5
W:AB AC 20
Inferno D bucket average 23

Effect: Same damage. The damage is given by the Maps in 237: TGameplayArmeArmureContainer, calculated by the first term in the formula to be 5.4

The criticals are now rolled. The first step is to correct to the maximum armour value on each face - the second term in the formula:

Leopard 2A4
Maximum armour: 30
Correction for maximum armour: -0.7
Cumulative damage: 4.7

T-80U with K-5
Maximum armour: 28
Correction for maximum armour: -1.1
Cumulative damage: 4.3

The next step is to randomise. So this says, assume you've hit the most protected spot on the target, can you kill it? If so, we don't have to check for specific location hits. The randomisation is from -2.3 to +1.0 and is a skewed bell curve (skewed because of the effect of a randomised angle of attack; i.e. it may not be square on). Assuming a dice roll of 48% (-0.2) we get this:

Leopard 2A4
Correction for randomised attack: -0.2 (48%)
Cumulative damage: 4.5

T-80U with K-5
Correction for randomised attack: -0.2 (48%)
Cumulative damage: 4.1

Still no KO, because the value has not exceeded 10. So now we randomise the hit location. Here are the possibilities:

Leopard 2A4
Turret hit, mantlet: armour 24, damage adjustment 0.6 (5% chance to hit this location)
Turret hit, centre: armour 30, damage adjustment 0.0 (5%)
Turret hit, centre on gunsight*: armour 28, damage adjustment 0.2 (5%)
Turret hit, outer: armour 26, damage adjustment 0.4 (35%)
Hull hit, glacis: armour 24, damage adjustment 0.6 (30%)
Hull hit, lower: armour 24, damage adjustment 0.6 (20%)

T-80U with K-5
Turret hit, upper: armour 12, damage adjustment 2.1 (5% chance to hit this location)
Turret hit, upper ERA**: armour 15, damage adjustment 1.6 (5%)
Turret hit, mantlet: armour 19, damage adjustment 1.0 (5%)
Turret hit, centre: armour 15, damage adjustment 1.6 (5%)
Turret hit, centre ERA: armour 26, damage adjustment 0.2 (5%)
Turret hit, outer: armour 17, damage adjustment 1.3 (5%)
Turret hit, outer ERA: armour 27, damage adjustment 0.1 (20%)
Hull hit, glacis: armour 19, damage adjustment 0.9 (5%)
Hull hit, glacis ERA: armour 28, damage adjustment 0.0 (25%)
Hull hit, lower: armour 9, damage adjustment 2.8 (20%)

*Only the Leopard 2 has a spot for a hit on the gunsight - it is a large noticeable weak spot that you can see in photos.

**ERA - explosive reactive armour, useful mostly against CE (eg HEAT) rounds but also effective against KE. Coverage on Soviet tanks in this period is less than 100%, so I have reflected that using different percentages in locations.

See here how some AFVs (e.g., Leopard 2, Challenger and M1) are quite homogeneous in their armour protection, not varying much from the average. Most tanks however, and all Soviet tanks in this time period, have quite a large variation in armour protection across a particular face. In Inferno, this is modelled quite accurately, so you can notice that tanks such as Leopard 2, Challenger and M1 are KO'd within narrow bands of attacking AP, but other tanks can be KO'd with a hit on a weak location with a much lower attacking AP.

Continuing the example, let's assume a hit on the hull lower (a 20% chance):

Leopard 2A4
Correction for Hull hit, lower: 0.6 (20% chance to hit this location)
Cumulative damage: 5.1

T-80U with K-5
Correction for Hull hit, lower: 2.8 (20% chance to hit this location)
Cumulative damage: 6.9

Now the last term is added, a fixed constant of 4.5. Remember, we added 10 to the formula because it takes 10 to KO. We added 5.5 at the beginning, the first term which is the damage is given by the Maps in 237: TGameplayArmeArmureContainer. Now we must add the 4.5 to make the sum correct. See the discussion under "Formula" above if this is not clear. Once this is done, if the vehicle is not destroyed then a "healing" AddDamages of -10 is added, to bring the HPs back to zero.

Leopard 2A4
Correction for constant: 4.5
Cumulative damage: 9.6 - no KO
Healing damages added: -10
Cumulative damage: 0 (rounded up to zero always by game engine)

T-80U with K-5
Correction for constant: 4.5
Cumulative damage: 11.4 - destroyed

At this point the T-80U is KO'd, but the Leopard 2A4 survived. Had the dice roll been a little luckier, or if the attack occurred at a closer range, the Leopard 2A4 would also be destroyed.

It is a characteristic of the period that Inferno models (1980-1989) that the rise in defensive armour outstripped the rise in attacking power as the decade progressed. Tanks available in 1980 were much weaker compared to the ones available in 1989. This makes it a very interesting period to model. I have built the Inferno mod with the ability to battle with early '80s, mid-80s or late-80s equipment, and I suspect there will be very different tactics and results in each period. I also think the Soviets have the edge in equipment in the early 80s, and NATO in the late 80s, which makes the mid-80s possibly quite evenly balanced.

User avatar
General Mig
Sergeant Major
Posts: 262
Joined: Fri 12 Jun 2015 12:20
Location: In the shadows
Contact:

Re: Wargame: Inferno

Postby General Mig » Mon 7 Dec 2015 19:23

how are you planing on editing the models?

Pyro
Sergeant First-Class
Posts: 102
Joined: Mon 1 Sep 2014 23:56
Contact:

Re: Wargame: Inferno

Postby Pyro » Mon 7 Dec 2015 20:03

General Mig wrote:how are you planing on editing the models?


If you are referring to the visual models, I don't intend to. I'll use the closest looking model to the vehicle that I require. If there are skins made by others that can help, I'd be happy to use them (with permission), but I don't intend to make any myself.

Too much to do.

User avatar
The W:AB Noob
Lieutenant General
Posts: 4538
Joined: Fri 12 Jul 2013 22:29
Location: United States, Central Time Zone
Contact:

Re: Wargame: Inferno

Postby The W:AB Noob » Tue 8 Dec 2015 00:25

Wouldn't even be possible to edit models.

About helping Pyro, I can test with you on "boring" stuff. After 2 years of being in the modding community, you get used to helping others test out new concepts for hours - making tiny tweaks each time. It's not very boring for me, more exciting.
W:RD Sandbox Mod 5.4.2, the Final and Ultimate Patch Click -> Image

User avatar
captain biggles
Warrant Officer
Posts: 433
Joined: Sun 15 Sep 2013 14:23
Location: Sea Base 005 Planet Neptune
Contact:

Re: Wargame: Inferno

Postby captain biggles » Fri 11 Dec 2015 01:51

This is incredible work.
Britain doesn't need better SEAD - it has the Challenger 2 for that.
Spoiler : :
Image
Image
Special thanks to kiheerSEDMAN for the sigs.

Pyro
Sergeant First-Class
Posts: 102
Joined: Mon 1 Sep 2014 23:56
Contact:

Re: Wargame: Inferno

Postby Pyro » Sat 12 Dec 2015 00:36

The W:AB Noob wrote:About helping Pyro, I can test with you on "boring" stuff. After 2 years of being in the modding community, you get used to helping others test out new concepts for hours - making tiny tweaks each time. It's not very boring for me, more exciting.

Check your PM, W:AB Noob

User avatar
The W:AB Noob
Lieutenant General
Posts: 4538
Joined: Fri 12 Jul 2013 22:29
Location: United States, Central Time Zone
Contact:

Re: Wargame: Inferno

Postby The W:AB Noob » Sat 12 Dec 2015 00:37

Pyro wrote:
The W:AB Noob wrote:About helping Pyro, I can test with you on "boring" stuff. After 2 years of being in the modding community, you get used to helping others test out new concepts for hours - making tiny tweaks each time. It's not very boring for me, more exciting.

Check your PM, W:AB Noob

Yep, I did.
W:RD Sandbox Mod 5.4.2, the Final and Ultimate Patch Click -> Image

Pyro
Sergeant First-Class
Posts: 102
Joined: Mon 1 Sep 2014 23:56
Contact:

Re: Wargame: Inferno

Postby Pyro » Tue 5 Jan 2016 11:10

Look for this to appear on the Red Dragon modding forum sometime early in the New Year...

Who is online

Users browsing this forum: No registered users and 1 guest

cron