Actual engine state
Bullets from rifles and also machine-guns have set inside config mostly speed 900 m/s. Bullet speed is lowered during transit through object, may be also ricochet or deflected
If the speed is distinctively lower then it will not cause wounds anymore.
For simplification it's possible calculate impact depth value via Newton's formula about impact depth for projectiles at high velocities Penetration at Wikipedia which says, depth will be simply multiple of relative density difference from both objects and lengh of projectile. "For example. 4x denser bullet with length 10mm will penetrate 40mm."
Real bullet 5.56 NATO is approx 1.5cm long, 7.62 NATO then 3cm and .50 browning more than 6cm. Ammunition also got different composition of shell casing and bullet shape. Penetration value of surface is set within material in object's fire geometry. (bulletPenetrability inside *.bisurf at which reference *.rvmat) . This value determine how many millimeters flies bullet with speed 1000m/s fired from rifle before it stops. For setting this value we consider average bullet to be standard 7.62 NATO munition.
By this it's possible very roughly estimate penetration for chosen average caliber.
3cm bullet with density 8 g/cm3 Oak wood with density 0,7 g/cm3 speed on close distance 800m/s = -20% by estimation should penetrate approx 27.5 centimeters of oak wood
ARMA2 engine already distinguishes also caliber. For calculation it is possible by parameter 'caliber take into account differences in penetration in regard to standard bullet. Value caliber simply multiply lengh of trajectory which would bullet penetrate.
It's needed to count that engine till this time counts all components as absolutely homogeneous and theirs volume on models is very often bigger than real material thickness visible ingame on the model. Parameter thickness, which is possible to find in some *.bisurf files started to work since Arrowhead. It defines inhomogeneous component. Plus to keep backward compatibility, arrowhead started to use alternate definition in bulletPenetrabilityWithThickness parameter.
- only first face hit in the component shape is calculated (just one surface)
- thickeness <= 0, component is homogenous
- hit under angle is computed corectly
- if the thickenss is bigger than volume of the component, volume is used