[quote who="Annatar11" reply="24" id="2115290"]
The others are less so. The other issue of course is cpu load, which usually isn't thought of as a limiter. You know how large games start slowing down that has nothing to do with graphics? Making autocast smarter will require adding extra instructions for the cpu to execute. Pretty much everything would require a bunch of extra comparisons, per ability, per ship (in most cases). At full fleets and 10 player games, it does add up.
[/quote]
Some more IF-THEN-ELSE don't cost that much, even with lots of units: assume an IF-THEN-ELSE cost 100 cycles (in reality it is much faster but throw in some cache misses for variables read... and a missed jump prediction 100 cycles sounds reasonable for something between average and worst case) and you have 10.000 Units = 1.000.000 cycles = 1 Mhz. 1 Mhz more or less don't count in a world with cpus > 1 Ghz.
But, what you often may see in other games are slow downs when there is a path finding algorithm involved for each unit. This shouldn't be a problem with Sins and abilities, because a simple compare (IF ability.range >=distance(source, target) DO something) does the trick. Calculating the distance is simple math - and very fast on current cpus.
and for that strange autocast behaviour...
I assume that currently the Units inside a group don't know each other (= they are not linked or part of a list), and so are all targeting the same unit, because they don't know who ist targeting what. If you have them in a list or linked, a unit could check the list to see what the other units are currently targeting and then decide to aquire a new target or wait when there is a reason for waiting (time penalty for ability use > ability running time). In this case that unit could simply state "i am waiting for this unit" so other units would see that and then decide to aquire a new target instead.
Another simple implementation would be to create some enemy-arrays for each enemy ship class in grav well. Then simply step through that array and assign the next array entry (or the next that match (threshold for healing or something else)) to the next friendly ship. Doing this wouldn't need all your units knowing each other and cpu cylce-cost would scale linear (enemy ships + friendly ships). If you include unit distribution inside the grav well it would be a little bit more complicated - but in that case you could use a tree instead of a list.
And the leveling up problem with caps :
in single-player you could simply pause the game, then level up, then deactivate autocast, then continue. I put pause on a side mouse button, because I use it frequently, playing Sins more like a turn-based game.