OK, so I'm not done with improving the armor formula, but it turns out resistance is actually very easy to fix. This is because resistance, unlike armor, is much easier to predict. I sampled many many characters from the repository and from the 'Show your Characters' thread, collecting resistance data. What I found was that resistance barely increases with level for the most part. Even level 100 characters usually have at most 180 resistances. Over 200 is extremely rare and means the character really invested in specific resistances, which should be rewarded.
Please see my updated excel sheet
for reference. The relevant pages are ResOld and ResNon.
The current function is:
% = resistance / (resistance + 6 * attacker level + 12)
People who have read my armor fixing thread should see the problem here right away. The constant (12) is very low, which means we'll experience the function's fast part in the very beginning, and then immediately transition to the slow growth (unrewarding) stage. This is why 5 points of resistance at level 1 already give you 22% resistance. But the blissful state lasts a very short while, because the attacker level factor is too strong relative to the constant, causing our resistance to drop to 10% within 5 levels.
The attacker level factor needs to be much weaker, since characters don't really get much more resistance as they progress in levels. Also, the constant needs to be larger so that the good, linear part of the function is dominant for longer.
I recommend something close to these values:
% = ( resistance / (resistance + 1.7 * attacker level + 120) ) * 1.5
Notice my added factor of 1.5. The reason for this is to maximize the linear part of the function. The larger constant flattens the function out (while making it more linear) so the added factor raises the line back up, making the slope more interesting to advance along. The values can be capped to whatever maximum percentage is desired.