I've been deep-diving in the large space vessels' XML files for a project of my own and trying to figure out exactly what each XML tag does. Turns out, a good number of them do nothing whatsoever that I've been able to figure out. I would guess that the <Damage> tag is a leftover from a phase of development before projectiles had their own <Projectile_Damage> tags. No idea why the <Autoresolve_Health> is in there, since you can set it to some really wacky values and not see a difference in autoresolve results. The same thing happens in term of autoresolve outcome when I set these tag values to 0 as when I set them to 99999 (or when I comment them out entirely), so either they don't do anything or I'm not performing the right test.
The tags you pointed out in GameConstants might be related here. When I did a quick search through the rest of the file I also dug up <Auto_Resolve_Tactical_Multiplier>, which could also be relevant. Your idea about the fighter complement on the Acclamators messing with my results is a good one. I'll see what happens when I comment out their garrisons. It looks like various projectile types have their own <AI_Combat_Power> values as well, which doesn't make a whole lot of sense to me. Let's see what happens when I comment them out...
You mentioned that in some cases the AI count carried fighters towards fleet composition - what case is that? Is this part of the "assemble taskforce" AI?
---- Results of diddling with the tags in GameConstants.XML:
Dialing it down to 0 had no visible effect, but dialing it up to 1, 10, 20, and 100 definitely did. It looks like this is a static value added to the total amount of "damage" points handed out to both sides at the end of the battle. It does not appear to be a multiplier, though its default value of 0.333333 makes it look like one. Evidence: when this is 10, I kill 10 more Interdictors and lose 10 more Corvettes than default, when this is 20 see 20s, and when it's 100 I see all the Interdictors die and lose all but 1 Corvette. I suspect the game won't let you lose literally your entire force if you "won" the battle. For future tests I dialed this down to 0.
This is a multiplier that appears to be applied to the winning side's total AICP. If you increase this to 1.0 when attacking with 75AICP, you deal 75 points of "damage." If you decrease this to 0, you don't destroy any enemy ships even when you "win" the battle. Combining this with the previous tag could set a casualty floor for autoresolved battles.
Second verse, inverse of the first. Interesting fact, it looks like there is a hidden static 0.5 multiplier that this stacks with to determine attacking losses. The default value of 0.75 causes the expected loss of 37 Corvettes against 100 Interdictors, and dialing it up to 1.0 increases losses to 50, so there's obviously another 0.5 involved here somewhere. It doesn't involve winning or losing, because I get the losses I expect on both sides based on pure AICP regardless of winner. It looks like there is just a flat hardcoded "attackers take 50% losses" in the game. That's quite an incentive not to autoresolve a defense!
Has a very slight effect on casualties when you enter a tactical battle and then choose "auto-resolve" from the retreat menu. The default casualties for the usual matchup were 53 corvettes and 78 Interdictors and increasing this from the default to 1 and then all the way to 10 only raised the casualties to 79 Interdictors. It seems like entering tactical mode at all enforces a +3 floor to the casualties on both sides as if you had increased <AutoResolveAttritionAllowanceFactor> by 3.
I discovered to much lol that AICP from units in transports is
included in the calculations for winner/loser. Whoopsie. Five Gallofrees full of Rebel infantry put to flight a hundred Interdictors. Zero casualties on both sides, so not sure at all how this is calculated. If you hop into tactical and then autoresolve, you lose all 5 transports and take out 14 Interdictors(!?). There's clearly something totally different at work when it comes to calculations involving land units brought to space.
This is interesting. The lower this is it appears to tilt battles more strongly in favor of attackers. Has no effect on normal autoresolve, but autoresolve from tactical is affected. As this value rises from 0, defending casualties appear to decrease and attacking casualties first increase, then also decrease (or maybe setting it to 10 just glitches it out). When you set it to 2, each side takes half of the expected casualties, but setting it to 0.5 doesn't double them, so I have no idea what exactly is going on with this one.
aaaand, finally, to wrap it up:
Removing the fighters from the Acclamators doesn't make a difference to the weird patterns I'm seeing. The best guess I have for what's going on is as follows:
When the game is picking casualties, it will never pick as a casualty a ship that will cause the amount of AICP damage inflicted to exceed the formula amount. It does, however, seem to stop evaluating for casualties as soon as it attempts to evaluate a ship it doesn't have enough AICP to destroy, even if it could apply enough of its remaining AICP to inflict at least 2/3 damage on it, UNLESS there is only one ship in the force to begin with... This would explain why in my tests where I got a "wrong" number of casualties, it was always lighter instead of heavier, except versus one enemy ship. Admittedly, even I don't think this is a guaranteed explanation for what is going on here.
Whatever order it works in, it obviously doesn't pick strictly in order of descending AICP, since in that case you would preferentially lose big ships like Star Destroyers (it doesn't appear that you do). There might be some kind of cycle of descending AICP it goes through with exceptions for cases where the opposing force couldn't generate enough damage to harm your largest ships... who knows. The order it does pick in is still a mystery to me, and at this point frankly I'm tired of wrestling with it. I have a good enough grasp on the overall situation with autoresolve for my purposes and I don't see any need to sweat the details. Still, I think we all learned something here today.