Noticed a flaw in how I laid out my concept above. I didn't adequately consider salvos with no target set. As described above, your ships wouldn't shoot on passively guided missiles that were sent to a waypoint that will let them see and target you themselves, until such time as they actually target you. Possibly a valid approach, but liable to get you killed and opens an AI exploit.
Perhaps have missiles with no target register with every task group they could reach with some weighting for their approach angle, and unregister themselves as time goes by and they no longer have the range to reach that task group, or once they go live and pick a target.
The target ships wouldn't shoot on absurdly distant salvos, they can't even detect them probably, and FC/AMM ranges limit their firing, it adds cost, but minor, and ships which
can engage, will engage missiles that have no targets set yet.
A few other thoughts on the AMM piece:
- I often find myself with groups of AMM ships where one two have fully expended all of their ammo whilst others in the fleet have full mags which I assume is due to some ships always selected as firing first. This isn't much of an issue in VB6 because of instant ordnance transfer but I can see it becoming a real bug in C#. If the firing order could just be switched to whichever ship has the fullest magazines I think that would go a long way to help.
- On wasted AMMs I think I have mentioned before that having a minimum engagement range for AMMs as well as the current maximum would again help with using layered missile and PD fire.
A round robin engagement pattern would smooth that out considerably, with the assumption that ships not ready to fire are skipped over by those who are. You'd still run dry in one ship before others, potentially much earlier if their designs aren't well suited to equal expenditure/endurance, but at least it wouldn't be one empty and others full, they'd all be depleted, and if they were the same class, very nearly all depleted together.
I didn't try to sort out the order in which the FC's were evaluated as able/ready to fire above. If each ship that can engage in missile PD is kept in a queue, then you iterate over the queue, and move any ship which opens fire to the rear, even if its just one FC or many that fired, you could spread the workload across every ship with a capable FC before ever having a ship shoot a second time.
A minimum engagement range would also be very nice, and it would play well with both of my above suggestions, offensive and defensive AI control of weaponry.
I stuck to just the bare minimum I saw to be useful, but the complete set of criteria I'd love to have shared for both PD and offensive firecontrol: Min range, max range, min TCS, max TCS, weapons per engagement. For PD specific FC, the salvo size and quantity settings to effectively attempt a defence against saturation attacks, as well as a priority, changing the round robin firing queue to a priority queue.
You could then limit AMM fire in ASM roles to anti fighter work for example, or prevent your 200 damage ship killers from being spent on fighters, and can layer your defence so long range and short range AMM is a thing the AI FC respects.
With the priority queue, every ship with a defensive missile might not engage, because a high priority FC might be busy as hell keeping the fleet safe, but those low priority FC's will step in if the high priority FC is ever so busy that there is work left over.
Think modern fleet defense. If you have 16 missiles, and a single FC channel, you could certainly engage a lone inbound, but if there is a ship with an even better missile than you carry, and/or with much deeper magazines, and more FC channels, and its in a position to offer a better defense than you, they should shoot, not you. You should save your limited defence for when it really matters, saturation attacks. FC Priorities let the player affect the queue in this way, by causing an 'important' FC to keep cutting in near the front of the line instead of moving to the rear every time it engages, while still spreading the work equally across FC's with equal priorities.