Jump to content
olds

Armor & Penetration: how it works & how it could work

Recommended Posts

I've been scratching my head trying to figure out how the damage & penetration system works for vehicles. So I ran a few tests with modified weapons fired at a Slammer MBT.

In short: Arma 3 has all the makings of a good armor-damage system and could be fixed by correcting just one underlying flaw.

Here are my conclusions:

1. The "caliber" value works fine against armor--"caliber" in CfgAmmo is used to mean penetration (the units are 12mm RHAe @ 50m). Higher "caliber" weapons penetrate armor while low "calibers" can fire all day and not penetrate. **This is realistic and exactly how it should be**

2. High "caliber" weapons with (very) low "hit" values will penetrate armor but do little or no damage. **This is not technically realistic, but it is acceptable since weak-but-high-penetration weapons are hard to imagine**

So far, so good, but here is the problem:

3. Almost every "hit" will cause damage through armor regardless of "caliber" (you'll notice missiles and rockets tend not to have "caliber" values at all). **Oops! This totally breaks the realism!** :eek:

#3 is the critical flaw that brings down what is otherwise a quite nice ballistics simulation: plunk away long enough at a tank with even a weak RPG and you will destroy it!. This is simply not how armor works.

But don't give up! Fixing this flaw in the damage calculation may not be very difficult! A day of coding and a couple of hours adding "caliber" values to missiles and rockets might be all it takes. BIS has already done the hard work by modeling penetration quite nicely via the "caliber" value and vehicle Fire Geometry. Simply put, any weapon with a "caliber" value should respect that value before passing on its "hit" damage to a target. If you want to simulate giant explosive weapons, just omit the "caliber" and you get the same results you have now. But the vast majority of weapons should have a "caliber".

This relatively simple fix would get Arma 80% of the way to a decent armor-damage model. No, it wouldn't be perfect, but it would be pretty darned good! :cool:

I've created an Issue in the Feedback Tracker. Upvote if you agree, although this is currently being superseded by the Real Armor Mod.

Edited by Olds
  • Like 1

Share this post


Link to post
Share on other sites

This thread is in the wrong section, I believe the mods will move it soon.

You also need to take the explosive, indirectHit and indirectHitRange values into consideration. A high explosive value coupled with a high hit value ignores armor, for example a RPG-32 which has 650mm RHA penetration IRL will cause major damage to the front of a MBT due to the high hit and explosive combo, when it should do almost nothing if penetration is not achieved. The other major issue is that adding a caliber value to explosives results in exploding rounds that penetrate objects and explodes every single time on contact. I made a post about this problem here with a possible solution.

The mod I made solves this issue reasonably well by changing the RPG-32 (with HEAT) into a two stage duel purpose round. In the first stage the RPG explodes on contact with a high explosive and low hit value. In the second stage the copper jet is formed with a high hit, high caliber (penetration) and a zero explosive value. With the mod enabled RPGs will do close to zero damage to non-critical parts of a tank from the front, however a RPG will penetrate any low armor sections. In other words the RPG will only do damage if it can penetrate the armor which is exactly like it should be.

Another issue that is solved with the mod is HE ammo. High explosive fragmenting rounds should have some penetrating ability right? So the ammunition is once again given two stage treatment. The round disintegrates upon impact with zero penetration and with high explosive & hit values, then in the second stage fragments are formed which do not explode but can penetrate objects. So with the mod HE ammo explodes only once but can still penetrate light armor.

Bohemia can solve this issue with an easy fix. We already have the ShotDeployBase and SubmunitionBase classes which allows ammo to change characteristics in-flight and upon impact. If they improve ShotDeployBase to inherit the velocity of the parent ammo then we can have proper duel stage ammo without the need for a mod with complex tracking scripts.

TL;DR Adding this one class inheritance to ShotDeployBase can drastically improve the game. A3 has had good armor and the penetration simulation all along. All we need is proper simulation of certain ammo types and we are good to go.

Share this post


Link to post
Share on other sites

You also need to take the explosive, indirectHit and indirectHitRange values into consideration. A high explosive value coupled with a high hit value ignores armor, for example a RPG-32 which has 650mm RHA penetration IRL will cause major damage to the front of a MBT due to the high hit and explosive combo, when it should do almost nothing if penetration is not achieved.

Agreed, that's exactly what I said/meant. Indirect, explosive or not, the vast majority of projectiles on the battlefield need to penetrate armor to do damage. Indirect effects are significant only for very large explosives (giant bombs, very large IED's, etc.)

However, IMHO turning everything into a 2-stage weapon is unduly complex when a much simpler solution would serve. Why make mods when a simple code change would suffice (provided BIS actually makes the change;))? You can still add extra detail with your mod if the damage model is changed to respect "caliber" values. Large-scale HE damage could then still be modeled by 1) giving a caliber with an estimate of penetration OR even more simply by 2) excluding the caliber value altogether and getting the current damage model results.

To be honest, I'm not interested in fixing/tweaking the small number of weapons available in Arma 3, but porting a realistic set of contemporary weapons.

Apologies for putting this in the wrong forum, thanks Bakerman, I'm an Arma/forums newb.

Share this post


Link to post
Share on other sites

I have to disagree.

Simulating munitions that are two stage in real life is very simple, all the hard work has been done and is in the game already. The only complex part of it is the tracking script needed due to the current limitations. With an improved ShotDeployBase we can have a much better penetration model with one tiny change. That's it, nothing special like a rewrite of the damage model, just one extension to a class. Giving HE a caliber is not the solution, unless you want rounds that can explode an infinite number of times. You can test the mod for yourself and see what you think of this method.

Honestly I would much rather have this be part of the game rather than modding away for countless hours. It will spare me quite a few headaches.

Share this post


Link to post
Share on other sites
Indirect effects are significant only for very large explosives (giant bombs, very large IED's, etc.)

And HEAT or KE rounds that come close to penetrating and cause the inside of the vehicle to be shredded with spall.

Share this post


Link to post
Share on other sites

What about correct implementation of Angles on a tank? For instance, the T-100 around the gunner has plates of armor angled up, and around. What someone shot, missed, and hit that plating at an angle. Now, this is where either the round has a possibility of bouncing due to Caliber, and what kind of round it is.

NOTE: This should be in General Discussion.

Share this post


Link to post
Share on other sites

DarkSideSixOfficial, you took the very words out of my mouth. In ww2 tanks depended on not only the armour they had but the angles of the armour also, many tank commanders learned very quickly that they had to start angling their tanks when engaging enemy tanks due to the fact that at certain angles of armour the rounds would gain a chance to 'Bounce' as they called it. This enabled tank commanders to potentially negate several dangerous shots, also the fact that the tanks tracks counted as spaced armor also, this and the pre-angled design of future tanks throughout the war of 1939-1945 kick started the design features of future tanks to this day.

Share this post


Link to post
Share on other sites

Maturin:

Agreed. This could be easily accomplished by assigning/tweaking "caliber" values slightly in excess of their real world penetration performance.

DarkSide & Yoshi:

Believe it or not, penetration, flight trajectory, armor angle, and even deflection appear to be very nicely modeled already. Try this brilliant scenario if you haven't already to see it all in action.

The only real problem is that damage is not correctly assigned based on the ballistics simulation. If just that part gets fixed, I think we will see all the results you are describing.

Edited by Olds

Share this post


Link to post
Share on other sites

I've seen that already, what I mean is adding the effect so that instead of just penetrating the armor and losing velocity, it has a chance to bounce off instead of doing any damage... Or is that sort of already covered also. I'm not to well versed in ArmA 3's physics but from what I've seen of it already, I'd like more of a World of Tanks version.

Share this post


Link to post
Share on other sites

i was going to post a similar thread about armour, might as well post what I found here. My experiments were with wheeled APCs. I modified the wheels so you couldn't take them out with small arms fire, but I learned a few things about the armour system that are not so good.

First of all, the passthrough variable in the hit class either does not work, or there is some other damage calculation going on. For example, on the AAF wheeled APC (Gorgon?), there is a high mounted commander's turret/rangefinder. You can set up it's armour values nicely so it takes realistic damage, but no matter what values you set, it will still pass damage to the total vehicle damage EVEN IF YOU MAKE THAT PART INVINCIBLE. To put it in perspective, if you fire armour piercing 30mm (from the same apc type) at the little turret, which is about the size of a basketball and protrudes a foot above the turret, the tank will still take 1% total damage with each shot. Shooting anti-personnel rounds at the tires won't destroy the wheels, but the total damage still takes 1% damage for every 2 shots. You should be able to empty any number of rounds into the (visible) turret or wheels without affecting the vehicle's overall structure.

Secondly, the hitfuel entry seems to have strange effects on the total damage. It may be realistic actually, I'm not really sure. Basically if the fuel system (hitfuel) is fully damaged it will destroy the whole vehicle. I noticed that you could blow up the apc even when its total damage was at 15%. From what I can tell the fuel system is actually used as more of a simulation of volatile internals like ammo or shells. Shoot the 30mm armour piercing into the front or rear of the apc from a side aspect and it drops the total damage 3% per shot. The total damage goes up to 100% before the apc explodes. Aim directly under the turret and you can destroy it at around 18-30% total damage (at least 6 shots).

In conclusion, anytime you shoot an armoured vehicle, it affects the total damage. The different parts of the vehicle should be able to independently be destroyed without affecting anything else. It should work like this:

Hit a turret (ei the visible part, not the mechanism) -> disable the turret's rotation (currently works) -> shouldn't affect total damage (currently does affect total damage)

Hit a turret's barrel -> disable the gun's elevation (currently works) -> shouldn't affect total damage (currently does affect total damage)

Hit the engine -> disable the drive system without explosion/destruction (currently works), maybe reduce performance below 50%

Hit the hull/body -> shouldn't be considered. The hull itself is irrelevant, it is just there to protect the internals. You can blow up a tank by shooting a fender.

Hit fuel -> maybe the current system is okay, I'm sure it represents things that would explode and destroy the tank if damaged.

Hit a wheel -> current system is okay but again it shouldn't affect total damage or make the tank explode ever.

The main feature that's missing is crew penetration. currently the crew seems to take the same % damage as the total vehicle damage. I believe this has to do with the forcehidegunner/commander/driver commands because you can kill the crew with penetration hits when they are turned out.

Anyways, that's my assessment of the hitpoint system, as the OP said it should be fixable and is almost usable.

Share this post


Link to post
Share on other sites

I completely agree, the hit point system needs work. I'm doing a Tank mod and the first thing I looked at adding with it was a new damage system, most of my ideas you have literally just described. I want the damage localized to the areas of the tank and there being a more in depth damage interface, I've not got any experience in these areas, but I would have the hip point system work like you described, but with one exception.

The hull is actually a viable point of any armored or even non armored vehicle, due to the fact that it is the first line of defense so to speak for the internal parts. So in retrospect the hull will count only because it has the armor value of any vehicle, you whittle that down and you create holes in defense I should think. I also think the fuel is a good area you mentioned, as you know on any vehicle fuel is that catch 22 area. you shoot the tank you kiss your behind before it goes to heaven.

As for the small arms fire and stuff like that effecting overall damage, I agree it is indeed some what unrealistic. Attacking any armored vehicle with a assault rifle or what not isn't going to do anything other than make the crews laugh while sitting back and drinking tea. I think that either Bohemia, or the modding community itself need to sit back and think about how to make it more realistic.

Share this post


Link to post
Share on other sites
I've seen that already, what I mean is adding the effect so that instead of just penetrating the armor and losing velocity, it has a chance to bounce off instead of doing any damage... Or is that sort of already covered also. I'm not to well versed in ArmA 3's physics but from what I've seen of it already, I'd like more of a World of Tanks version.

That's WWII stuff. Modern KE rounds and HEAT warheads very rarely bounce unless you are shooting the tank at a uselessly low angle of impact. Modern tanks have sloped armor primarily because it effectively thickens the armor against most hits.

Share this post


Link to post
Share on other sites

Yes, but the fact that pre-angled armor still is a key design feature on every tank you see today proves that it still has a very real effect on ballistics, that's all I mean.

Share this post


Link to post
Share on other sites

It proves it has an effect. But the effect relates more to geometry, not ballistics.

DU or Tungsten penetrators don't really care what angle they hit at (to a certain degree).

Share this post


Link to post
Share on other sites

I know that, but we agree on the fact that the possibility still remains for those lucky chances. It might be a good thing to see just what we can do in terms of damage localization, but I also wonder if it's more agreeable/ beneficial to take it slow, start with negating overall damage dealt by lesser weapons and stuff like that.... Then move on to damage localization.

Share this post


Link to post
Share on other sites

Sakura-Chan:

Thank you for adding your research. As you found, the passthrough issue seems to be a symptom of the same underlying problem we're having with penetration: all hits damage overall vehicle 'health'* regardless of penetration or passthrough (or any other property)**. And this basically ruins what is otherwise a rather good ballistics & damage simulation.

I'm going through every weapon & armor property with a fine-toothed comb trying to figure out if there is a workaround, but it's pretty hard. Fixing one aspect breaks another. Barring a fix from BIS, you have to find a way to negate the "global-damage" effect without getting rid of damage altogether!

Yoshi:

Deflection is in there, is tweakable, and it works quite nicely. You can get complex results like shallow hits bouncing off one armored plate and into another. The key variables being "caliber" (aka penetration), "deflecting", and vehicle armor (as modeled in the p3d file).

* (rather unhelpfully) termed "armor" in vehicle configs, even though there is a per-location "armor" value that does something totally different.

** minimalHit might work here but it's not a very useful workaround as it is per-location and unrelated to armor; e.g. a "fix" for the front hull would make the rear hull just about as invulnerable.

Edited by Olds

Share this post


Link to post
Share on other sites

Okay now that this has all been put into perspective, I believe I have found a nice solution!

there is one armor value, called "armorStructural". The wiki defines it as, "the higher value the lower structural damage. Number divides each hit that is passed to total damage". It does just that, it takes every hit, divides it by the armorstructural number and applies it to total damage regardless of penetration or minimalHit! The apc I was using used a value of 12, so I bumped it up to 1200 and now I can shoot at turrets all day without damaging the total damage, and the AI is unaffected by it! As far as I can tell this solves the problems I was having.

*edit

I suppose this applies to man class as well, perhaps this could eliminate the "kill a soldier by shooting him in the foot" stuff?

Edited by Sakura_Chan

Share this post


Link to post
Share on other sites

That sounds promising Sakura-Chan! I must admit I have a hard time parsing the czinglish in the documentation sometimes and I missed that armorStructural is (apparently) limited to restricting global damage. (No offense BIS, English is not everyone's first language - although I wish they would name model elements in English since I'm guessing precious few modders speak Czech ;))

If it does what you think it does, it would fit the 'negate-global-damage' bill. Let me try to reproduce the effect...

-------------------------

Sadly this doesn't completely work. It's very confusing, because it sort of works. I increased armorStructural on a Slammer to 100000:

--It mostly limited non-penetrating damage to the tank front hull: **Awesome! Sort of what you'd expect!**

--It does not consistently block indirectHit damage: **Oops! Confusing!**

--Every other location and angle was still vulnerable to non-penetrating damage: **Not cool! Very confusing!**

So, yet again, the actual damage formula remains a bizarre, buggy mystery.

The search continues...

-------------------------

OK, further update: this can actually work (I think). Apparently the trick is to keep "hit" values modest. You can get semi-realistic results if you reduce AT hit values to the 200-300 range (down from the current 500-800 range). Also, you need to add a caliber value to AT weapons that don't have one (missiles & rockets)--but that really was the desired outcome anyway.

So to reiterate the workaround:

1. Vehicle configs: increase "armorStructural" to some ridiculously huge number (100000).

1b. (Reduce explosionShielding or indirectHit weapons will bypass armor).

2. Weapon configs: Tweak high-end "hit" values down to around 300 or so. High hit values (e.g. 500+) seem to ignore "caliber" restrictions and cause location damage anyway. (You can consider this a "feature" that preserves the ability of giant explosives to damage armor without having to give them a "caliber" value).

3. Weapon configs: Use "caliber" wisely for armor penetration and add it to AT weapons that don't have it.

Voila! There's your ACE for Arma 3 :rolleyes:. Anyway, I'll keep testing and hope there aren't any flaws...

Assuming BIS doesn't fix the underlying formula problem, I look forward to using this workaround to help port the Arma 2 vehicles over to Arma 3. Thank you for your help Sakura-Chan!

Edited by Olds

Share this post


Link to post
Share on other sites

I was looking at this as well. I really hate the hitpoint game.

I mainly looked at armor, but armor seems to be both a combination of the HP value (Which is fine. That means you could just put it up to 5000 so you have a lot of HP), but it seemed to result in less penetration, which I didn't want. I guess Olds workaround is what I should go for then. Yay, adjusting all the rocket and missiles damage values (again). What type of caliber values are we looking at here? Another thing I did was upgrading the armor on the fuel tank, because a random spray at the bottom of any MRAP would instantly let it explode..

Now for something not-so-realistic: How would you go about making sure you don't instantly lose your wheels when you hit one of the million fences in Altis? It would be nice to not also lose your engine either. Man, Arma really needs proper damage stages. Right now it's either fully working, or fully destroyed. It would be nice to only able to go half speed with a damaged engine. The same goes for turret. One hit to the turret? Turn around slower. Another hit to the turret? Turret disabled.

Share this post


Link to post
Share on other sites
I guess Olds workaround is what I should go for then. Yay, adjusting all the rocket and missiles damage values (again). What type of caliber values are we looking at here?

Well, I plan on raking over this in some detail as part of porting Arma 2 weapons & vehicles into Arma 3. What is needed is a comprehensive review because the current armor & weapon values are (I believe) kind of hacked in to work with the original damage formula--resulting in some pretty weird numbers. But let me share some tips from my current level of knowledge:

*One "caliber" of penetration is a mysterious value chosen by BIS to be the RHAe(?) equivalent of a 7.62mm NATO round at point blank(?) range. So depending on what kind of round and range they're actually talking about (never made clear), figure anywhere from 5 to 20mm of RHAe. As I said, many of the caliber values currently in the game (including Arma 2) are downright weird, so it's necessary to standardize and then revamp everything (yay!). So why don't we just simplify matters and say 1 caliber = 1cm of RHAe at point blank range. (It sort-of works for the current config values until you get to large caliber weapons).

* The problem is that current armor and AT weapon values are absurdly low by that standard (by more than half). I believe this is because BIS has been relying on the global "hit point" effect to do most of the damage. So here is my best guess:

1. If you are adding a new weapon and you want to use the current unrealistically armored vehicles, take the weapons RHAe penetration at point blank range and cut it in half. Then divide by 10 to get cm (or Arma "calibers").

2. If you are adjusting current weapons without a caliber, go into the various weapons config.cpp's and assign them a corresponding "caliber" value. i.e. start with their actual penetration in RHAe/20.

3. Don't forget to tune down high "hit" values as these will defeat the workaround by some deviltry unknown to me. Cut large values in half and then some. i.e. the top end for AT weapon "hit" values should be in the 250-350 range, not the current 500-800 range. If you don't do this, the weapon will ignore armor penetration and cause damage anyway.

I'm sorry I rambled on :lecture:, but I've been wracking my brain over this all weekend (and then some) and as you can see it's a little convoluted:thud:. I promise you I will iron this out and document thoroughly when I get around to porting the Arma 2 stuff. I'm new to modding so I haven't tackled the whole p3d modeling issue yet and I'm almost sure that the vehicle armor models will have to be fixed in addition to the much easier weapon config edits we're talking about here.

-----------Correction-------------

Arma 2 vehicles don't really have armor models, so it's not a matter of "fixing", it's a matter of creating in the first place. The sample T-72 tank (that I missed in the tools folder b/c I'm an idiot) appears to adhere to real world RHAe, and of course that's the model to follow with any ported vehicles.

Edited by Olds

Share this post


Link to post
Share on other sites

Hey Olds, did you tweak the minimalHit value on the slammer? On my apc I set it to 0.2 instead of 0.02 and it ignores even non-penetrating 30mm anti-personel rounds. Something is definitely wrong with the A3 MBTs because you can easily destroy them with the 30mm.

Share this post


Link to post
Share on other sites
This thread is interesting, hopefully zGuba can weigh in on it.

There is nothing new in here for me. Regarding penetration values, data is self-consistent and doesn't require more tweaking.

Obviously main vehicle class misses minimalHit and explosionShielding params when compared to hitpoints, but our programmers have more important tasks.

Sakura_Chan, HitHull and HitFuel classes for tracked and wheeled vehicles respectively are handling internal damage. This is the reason why there is ability to destroy tank even with weaker rounds like 30mm APFSDS, if you know where to shoot and at which angle.

I invite you to my Arma 3 tanks config guidelines thread, instead of trying to reinvent the wheel.

You can always release a mod with your tweaks, I encourage you to do so :)

Share this post


Link to post
Share on other sites
Regarding penetration values, data is self-consistent and doesn't require more tweaking.

Hmm... OK. Well, zGuba I for one would find it helpful to know what the "caliber" penetration is in more detail. Since tankx describes vehicle armor as based on RHAe, can you tell us modders what BIS interprets a "standard NATO 7.62mm" round penetration to be in RHAe? I'm also curious at what range the penetrations are calibrated. Point blank?

Many thanks!

Share this post


Link to post
Share on other sites
Hmm... OK. Well, zGuba I for one would find it helpful to know what the "caliber" penetration is in more detail. Since tankx describes vehicle armor as based on RHAe, can you tell us modders what BIS interprets a "standard NATO 7.62mm" round penetration to be in RHAe? I'm also curious at what range the penetrations are calibrated. Point blank?

Many thanks!

As straight as I can:

- caliber determines how good bullet is good at penetrating surfaces at typicalSpeed. TypicalSpeed ^ 2 will be reference value for calculating kinetic energy, so 10% increase of velocity leads to 21% increase of kinetic energy - or I should have payed more attention during physics classes.

- The BIS 7.62x51 can pierce up to around 12mm RHA (armour.rvmat surface) 50 meters away, but don't expect it to retain much energy afterwards. However armor piercing capability decreases rapidly with range.

My calibration routines consist of:

- apply muzzle velocity,

- tune ballistic trajectory up to available data,

- empirical testing of penetrability - shooting at various armoured objects using our debug output,

- applying necessary tweaks.

Hope it's useful info. If you're curious, we are able to achieve perfect fidelity of penetrability we want given round to achieve ;)

Edited by zGuba

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×