Although I promised myself to give up making all action AIs, I couldn't resist and not try to exploit some new possibilities that are given by new filters. I tried many all action AIs, most of them stayed in the Diamond League, but two of them were lucky enough to get to Master and stay there for a few dozens of matches. Here they are:
What's so interesting of it? I think some filters can simplify the code in quite surprising way and be useful for both beginners and advanced players, so I think it would be nice to share what I've found. I hope you find it interesting.
One of my favorite filters usage is this action:
"ATTACK ENEMY at short or medium range from me AND at short or medium range from ally"
(Of course it's simplified description, but I don't want it to be very long and hope you get the meaning.)
Actually this is the action that made me experiment more with filters. It makes the first bot aproaching the enemy wait a while for an ally to come. As soon as it comes they both start attacking and together are much more powerful. Two assault bots at medium range give 55%+55%=110% damage, which can terrify enemy a bit. Actually there is a bit higher chance that the enemy would start retreating (especially if it has "IF attacking me ENEMIES >= 2" condition in its code) and (last but not least) the first bot is usually a bit closer to the enemy, so it would keep attacking a bit longer if the enemy retreated.
There is another version of this action:
"ATTACK ENEMY at short or medium or long range from me AND at short range from ally"
which seems even be more useful in both offensive and defensive situations. I mean if there was an enemy at short range from your ally, there was a danger it would attack the ally succesfully, right? So it seems reasonable to attack even if it would not kill him (and looking at my matches I can say it works). Actually one assault at short range and another assualt at long range together give also 95%+15%=110% damage, so it's not worse than previous action node.
The only blue node in both above AIs is quite tricky way to retreat at the border. It makes my bots flee from allies, but it makes sense. The biggest problem at the border seems to be that some bots push the wall when attacked, thus losing many shield and health points. It would be good to make them move along the border a bit. Right now there is no good fixed reference point to move towards (corners would be nice - next alpha maybe?), but if there is an ally somewhere near, we can try to split this group of bots. The problem is not to make it more important than attacking or fleeing from the enemy, so I decided to split the team only if there are many allies that are running away from the enemy. The adequate action is:
"FLEE FROM ALLY at short or medium range from me AND at short range from border AND fleeing from enemy"
As my bots don't flee too much it seems to be a nice compromise and actually it saved my ass in many matches. Simple and effective.
People who played against me recently could see some quite complex behaviour of my bots. I.e. after pushing enemies close to the border bots start to gather the resources. No conditions here, it's because some of my "MOVE TOWARDS ENEMY" actions have "out of range from border" filter. They simply ignore the enemies that are to close to the border and if all the enemies meet this condition... (or filter )... my bots simply goes to next nodes which are "catch the resource".
Similar situation with a single assault gathering resources when other bots keep pushing enemies. No conditions, just "not attacked by ally" filter to "MOVE TOWARDS ENEMY" action. It means that if number of my bots was higher than the number of enemy bots, there was quite high chance that all the enemies were attacked at the same moment by allies, so one of my bots would skip "move towards enemy" action and start to gather the resources.
OK, so these were the examples of useful filters in all action AI. I have also few more examples of not so useful, but still interesting filters, which are not in the AIs above.
"FLEE FROM ALLY not out of range from me AND at short range from ally"
splits a group of four bots into two groups two bots each. Using some other filters you one make it in a certain situation and using tags one can do it for a limited number of times.
"SCORE RESOURCE TO farthest from enemies ALLY BASE at short or medium or long or out of range from enemy"
seems to be a mad idea, but followed by simple
"SCORE RESOURCE TO closest to me ALLY BASE"
makes the bot move to the farthest from enemies base if any of enemies exists and to the closest base if they don't.
Speaking of scoring - the main disadvantage of all action AI is that I've found no way to make the bot drop the resource using filters only. I mean you could probably make the bot drop and pick up the resource in the shotgun exploit way using only actions, but it doesn't seem to be the way I want it to be. So all my bots that have already catched the resource have only two options: run to the base or run away from the enemy. The latter usually doesn't end well and I think it's the main reason why all my all action AIs have ELO around 1500, not higher.
And you? What is your experience with filters? Have you tried something similar?