The obvious answer is to mimic the armor damage reduction equation but that doesn't work

But exponents do! You're just looking at the wrong exponent. The one we want is natural. Such that we can define a constant percentile change throughout the armor. I.E. going from 100% to 80% is the same reduction as going from 80% to 64%!. We also want this because our armor equation is 1/(1+x) = 1+1/x and the integral of 1+1/x in the area above 0* is a logarithm* (usually defined as log a = area under 1/x between 1 and a). And the inverse of a logarithm is the exponential. So by using the exponential function we are, quite literally, reversing the armor damage reduction equation! Well... we reverse one of them. There is a unique one for every hit strength weapon in the game. So we are just going to have to pick and choose "what looks right"

e^armor doesn't work. Because well. Its not formatted properly. We need this to work for all ships to have the same armor visibility gradient that matches what we want. And also we maybe want to parameterize this so that we can choose the amount of the curve

So here we are! e^(K*armor/max armor-K)

Where K is a constant that we like the curve at.

This scales the value of the graph between zero and 1 because at armor = max armor this is e^k-k= e^0. =1. But we have a problem at armor = 0 this is e^-k and not 0 or a value of our choosing. It does approach zero as k increases. But this gives us a smooth curve that decreases swiftly and for which we can tailor to our particular needs of curvature! Indeed we don't even have to use the natural number here but changing the number is equivalent to changing the exponent so we might as well.

Changing the zero point is a bit harder. We have to add a scalar to our armor value that is not easy to calculate and will change depending on the gradient we want to show at zero armor.

If that number if zero then our equation now looks like... e^(log(1 + e^k)*(armor%)-k)-e^-k

Generalized to any value we want to set as our gradient value when armor is zero this is e^(log(1 + e^k - e^k*n)*x - k) +n-e^-k where n is the gradient value we want to set at armor zero, k is our curvature parameter and x is our armor percentage.

Here is an example curve that scales between .1 and 1. You can play with the numbers to come up with a curve of your choosing. With 80% of armor remaining

Wolfram Alpha basic parameterizationWith 80% of armor remaining this will show 57% of the full gradient!. With 60% armor remaining this will show 34% of the full gradient at 40% armor remaining, 21% of the full gradient, at 20% it will show 14% of the full gradient. And at 0% 10% of the full gradient.

If we wanted a purposeful curve that had like... real numbers attached to it then... I am not going to do this work. Because its late and i have spent far to much time trying to parameterize this already[edit: Alec Baldwin as the narrator "He did do that work"]. But we would probably want to tie it such that the gradient matched the percentage of armor kill time left assuming that the maximum armor hit strength was minimum. This isn't perfect but its... kinda reasonable. Obviously if your hit strength is more than minimum at their maximum armor you will have a different curve... a flatter curve. And if your hit strength is less than minimum you will have... a steeper and segmented curve. So a hit strength at exactly minimum damage for the targets maximum armor is probably best.

A HE beam that does perfectly minimum damage to an enemies maximum armor will theoretically perfectly kill armor that has no minimum armor value[which is important to being able to parameterize this] in about 21.8 seconds. It takes about 6.7 seconds to get through the first 20%, 12.3 to get through the second 20%. So on and so forth. If we parameterize to these percentages we get a graph that looks kind of like this.

Wolfram Alpha theoretical close paramaterizationI am sure this is solvable at the limit but i am fundamentally not that great at math anymore. I got kill times via excel. I chose the parameters by hand. Its good enough. I don't think you could tell the difference if you did solve it.

*

*the* logarithm even

edit: something went wrong with my parameterization. hmmm I am not sure why its no longer scaled correctly. it was 3 AM so you know, mistakes happen

Give me a bit.

fixed: It gets slightly more inaccurate as you get lower down the armor scales (its lower than it should be) but this shouldn't be a terrible problem.