I'll use this post to keep track of discussions.
To answer @BlackYps , the latest log of changes (before / after) can be found here:
List of units that have SPECIALHIGHPRI
and SPECIALLOWPRI
as their categories:
I'd also like to note that the discussion is not about whether we're going to do this. It is about how we're going to do this. We're going to have to think in solutions. The performance we'd leave on the table by not doing this is unacceptable.
Issues
(1) Weapons have a lower reaction time, this is particularly noticeable with the delayed vision updates. As an example: a t1 scout can pass a t1 interceptor if they fly towards each other to some degree. The interceptor does not have the reaction time to take it down because there is a delay on the vision being updated and there's an (additional) delay on the weapon checking for targets (0.3 -> 0.7). This is not an issue when there is radar coverage.
(2) Some weapons have an extensive list of target priorities. It is not unusual to find more than ten different target priorities for a single weapon. These should be reduced to 4 - 8 elements each, depending on the expected instance count of a unit and its attack radius. As an example: an experimental can have 8 because you can count the number of active instances on one hand. A Mantis should have at most 4, as we can have hundreds of those walking around.
Solutions
(1) After a suggestion of BlackYps the approach to compute the target check interval has changed slightly. All interceptors happen to have the same target check interval as before.
(2) We could remove the SPECIALLOWPRI
, SPECIALHIGHPRI
and ALLUNITS
categories from all weapon target priorities lists. These are either operation related, improperly used or out of place. As an example, take the target priorities of an Aeon T4 Rapid Fire Artillery:
TargetPriorities = {
'EXPERIMENTAL MASSFABRICATION',
'(EXPERIMENTAL * ARTILLERY - FACTORY)', -- don't include fatboy
'TECH3 ANTIMISSILE',
'NUKE STRUCTURE',
'TECH3 STRUCTURE ARTILLERY',
'TECH3 ENERGYPRODUCTION',
'ORBITALSYSTEM',
'EXPERIMENTAL MOBILE',
'TECH3 STRUCTURE',
'TECH3 MOBILE',
'STRUCTURE',
'(ALLUNITS - SPECIALLOWPRI)',
},
Even though storages are set to SPECIALLOWPRI
, they are also a STRUCTURE
and therefore they still have a higher priority than all the other units.
Impossibilities
(a) We can not change the logic that is used to determine viable targets. That is part of the engine. We can only change the parameters.