I am not entirely familiar with Enemy AI Enhancement.
However, from a cursory look/inspection, it would appear that ME and EAE approach the enemy issue from the perspective of quantity vs. quality; this is to say, ME increase challenge by simply numerically scaling the amount of enemies you potentially will face - whereas it would appear the EAE doesn't numerically change the amount of enemies, but rather makes them smarter.
My initial impression is that they should be completely compatible, and likely would work in tandem well (assumed, but yet unconfirmed).
As far as using simultaneously, my initial determination would come down to how do you personally want to scale your enemies? Do want a logistical meat-grinder where supplying your walls/turrets with ammo is the challenge? Or the challenge is an ongoing ever increasing strategic arms-race of identifying weak points in your defensive grid before the enemy does?
tldr; Do you want lots of simple/dumb enemies swarming your walls? Do you want the usual amount of enemies, but making strategic tactical decisions dynamically? Or both a high volume of enemies, and for them to be more intelligent?
This is my understanding at the moment at least. Am downloading EAE presently to test and report back with more precise findings.
In regards to how a selection of Vanilla+ would affect spawners and enemy cloning, it would make the following changes (assuming Vanilla+ for Nauvis, and all other settings remain at default):
spawners: biter and spitter
- max_count_of_owned_units = 7 * 1.75 = 12.25 -> 12
- max_friends_around_to_spawn = 5 * 1.75 = 8.75 -> 8
- max_defensive_friends_around_to_spawn = 5 * 1.75 = 8.75 -> 8
- max_spawning_cooldown = 360 / 1.75 = 205.714... -> 205 ticks (3.1467 seconds)
- min_spawning_cooldown = 150 / 1.75 -> 85.714... = 85 ticks (1.417 seconds)
individual unit cloning:
- (clone_settings[source] * selected_difficulty.value) * (use_evolution_factor ? evolution_multiplier : 1
- evolution_multiplier formula = ((selected_difficulty.value ^ (evolution_factor / (selected_difficulty.value ^ (evolution_factor / selected_difficulty.value)))) * evolution_factor)
e.g. source = "unit" or "unit-group", selected_difficulty.value = 1.75, assuming evolution_factor of 0.5, the overall amount of times a given unit would be cloned when it initially spawns, or the unit group it is a part is created/deployed successfully:
- 1 * 1.75 * (true and ((1.75 ^ (0.5 / (1.75 ^ (0.5 / 1.75)))) * 0.5)) = 1.1106 -> 1
at evolution factor 0.5, each enemy unit would be cloned just once; as it evolution_factor scales up to say 0.95 though, the result would be as follows:
- 1 * 1.75 * (true and ((1.75 ^ (0.95 / (1.75 ^ (0.95 / 1.75)))) * 0.95)) = 2.46127 -> 2
And for for reference, even at max (1.0) evolution, on Vanilla+, without adjusting the runtime clone unit/unit-group setting, the max amount of times any individual unit would be cloned is floor(2.6276) = 2
Lastly, in regards to the proactive attack groups, Vanilla+ would have the following effects:
limit = math_min(max_unit_group_size, 12 + selected_difficulty.value + selected_difficulty.value * selected_difficulty.radius_modifier * (1 + selected_difficulty.radius_modifier * math_random(1 + selected_difficulty.value)))
limit is the maximum size/number of units allowed in a proactive attack group
max_probability = 1 - (1/selected_difficulty.value)
attack_group_probability_modifiers[surface_name] = runtime configurable setting per surface, default value of 1
max_probability = max_probability * (attack_group_probability_modifiers[surface_name] or 0)
local threshold = max_probability * evolution_factor
selected_difficulty.retries = selected_difficulty.retries or math_floor((selected_difficulty.value * 3) ^ 0.5)
local proceed = false
rand = math_random()
for i = 1, selected_difficulty.retries, 1 do
if (rand < threshold) then
proceed = true
break
end
threshold = threshold ^ (0.95 * (1 - math_max((1 - selected_difficulty.inverse_value) * evolution_factor, 1.0)))
end
if (not proceed) then return end
The above is simply to say, that attack groups will not try to process until after the configured peace time has elapsed; after which, based on the periodicity defined by the max/min attack group processing delay settings, an attack group will attempt to form for a given surface based on the above formulas/probability gate.
Even if an attack group finds a valid chunk to target, and it finds appropriate enemies to send, if the evolution factor is low, the difficulty is low, or the math.random calls roll poorly, then the attack group will be skipped and retried again later. The effect of which is few sporadic proactive attacks of small size , that grows in frequency, volume, and intensity as evolution progressively increases.
Apologies for the wall of text - hoping it answers some of your questions.
As always, keep them coming if you have any more, or if there's anything else you would like more detail on!
Edit(s): formatting