Would you mind explaining the strategy sets in detail?
Yes I mind, but I'll explain anyway just for you...or in all seriousness, let me just explain more how ESAI works:
The core tests three simple conditions, one of which will always be true to the exclusion of the others. It is all about flag balance. The core asks if the number of friendly flags is <,=, or > than the number of enemy flags.
There are 3 families of core strategies, each of which is activated under one of the 3 conditions:
< : counterAttack, counterAttackHarder
= : basicAttack, basicAttackHarder
> : pressAttack, pressAttackHarder
Each family has multiple variants for
*attack and
*attackHarder. The only difference in these is the number of simultaneous attacks, and the time limits for the strategies. This is where organizing the core strategies into Strategy Sets comes into play.
For example, I could cover all possibilities by simply assigning this to both teams:
rem -- Minimalist Map Strategies --
rem Team 1
ai.addSAIStrategy 1 basicAttack2
ai.addSAIStrategy 1 pressAttack3
ai.addSAIStrategy 1 counterAttack4
rem Team2
ai.addSAIStrategy 2 basicAttack2
ai.addSAIStrategy 2 pressAttack3
ai.addSAIStrategy 2 counterAttack4
Note the numbers at the end of each strategy. This number denotes the maximum number of attacks available to the CO when the strat is active.
Note also that the
*attackHarder strats aren't even included in my example. They are not needed to cover the absolute basics.
basicAttack* should usually be chosen so that it has the fewest amount of available attacks compared to the other two strategy families.
pressAttack* should usually be chosen so that it has more attacks available than basicAttack*, but less than counterAttack*
counterAttack* should usually be chosen so that it has more attacks available than pressAttack*
In the default strategy sets, I've simply organized core strategies into groups that seem to work well together, and organized them into different "sizes", where increased size is targeted at maps with greater numbers of CPs, i.e., greater numbers of flags that can come under attack simultaneously.
That is enough about the core and default strats. Now on to the rest of your questions about some of the user space plugins / strategy sets.
FCA (Focused Counter Attack): Is this a strategy to make bots attack whatever flags that is not theirs?
The goal of FCA is to drop the number of max attacks to only one, and gain a flag as soon as possible.
FCA activates when both these conditions are true:
1. The team is behind on flags
2. The team is behind on tickets: 75% or less friendly to enemy ticket ratio.
This combination is the closest I can come to checking for ticket bleedFCA has the following characteristics:
1. One attack at max agression
2. SA Temperature multiplier for all
Fronts, boosting chance that bots will spawn at Fronts
3. SA Temperature multipliers for all
Remotes and
Safes, reducing chance that bots will spawn away from the Front.
4. 3 Minute time limit, so as not to wear down the army going for one flag if it can't be taken.
PF (Push Forward): From your explanation, it is like the bots will attack the front lines, and will not commit "backcapping" (bypassing first line of defense, and capturing whatever flag behind it (depends on the flag neighboring though)). So they will continue attacking in order, the front most flag, then the flag behind it, and so on. Is that right?
I think you are confused about what I mean by "Front". In terms of SAI code, a
Front is an
owned Flag that has one or more Hostile neighbors. The inverse of
Front is
Safe.
Safe Flags are
owned areas that have no Hostile neighbors.
PF merely attempts to spawn bots at the front lines using SA Temp modifiers similar to the ones in FCA, and have them steam ahead with a max of two attacks.
PF activates when the following is true:
1. Friendly is ahead on flags
2. There are no Neutral flags
3. There are more friendly
Safe CPs than friendly CPs that are
FrontsThe third condition is the most important, and when it is true it usually means that the other team is on bleed. PF tries to go in for the kill, but will not necessarily ignore flanks and so on if there are any.
PB (Protect Base): Make bots protect any flags designated as "base" defined in gameplayobjects.con file.
PB doesn't defend anything, it tries to Protect your Base by spawning bots at the
Base, and ordering them to attack (hopefully) the Hostile CP that is closest to the threatened
Base.
You designate a Strategic Area as a
Base in the file StrategicAreas.ai.
PB activates when the following is true:
1. Side is behind on flags
2. Side has more flags that are
Fronts than those that are
Safe3. Side has a
Base that is also a
FrontPB targets Hostile CPs more than Neutral ones, and has a max of 2 attacks at 3/4 Agression.
Does that help somewhat? I would explain more, but I need to get busy doing some real world stuff.