However the downside of a bot is that he has no common sense. If you specify good warlight play not precise enough then your bot will stick to your specification even in situations where a human sees without problems that this is nonsense. I specified my bot in a way that if he has no chance defending a certain spot he doesen't even try. However in a situation where you have a huge income advantage + stack advantage and the opponent is facing elimination you have to play differently than when the game is still open.
I realized this flaw in my own bot and gave it some conditions to try to solve it. My bot has an attackratio variable it uses in its attack checks to see whether or not to attack such that I only attack when it is advantageous to do so (generally). However I realized my bot would be stupid and I'd see games where I'm surrounding an enemy with stacks of armies. Enemy is pretty much defeated, but none of my stacks attack because they're all to small individually to attack to individual advantage even though if they all attacked together they could take the spot. So I actually coded in some conditions to change the attack ratio such that it's substantially lower in the main case which then allows my bot to make all the attacks it can with minimal check for strict advantage. I called it 'panic attack' mode. I was thinking 'I'm winning but haven't won, hurry up and attack everything and kill it quick!' Not sure how many games that has come into effect, but it's one of the things I was glad I had time to put in.
My bot has a lot of hardcoding, but it also has a fair amount of general coding that would work regardless of map or spot. It deploys randomly most of the time too in a controlled randomness. I use various means to define which spots can be deployed to and then it randomly deploys among them with +2s/1. Although I also added in some checks late that checked threat level for standoff situations to determine when I need more armies to keep a spot so you'll occasionally see larger deployments. Also there is a check to see when I can spare armies to take a bonus. Although I hardcode which bonuses to go for given various situations. Which basically doesn't tell it to attack the bonus, but allows it to.
I think random maps will make things a lot more challenging and interesting and people will be forced to program more general behaviors if they're going to do well in the next competition (assuming it's setup well). I was too much of a noob programmer and had too little time to make my bot I figured hardcoding a lot was my only chance of getting something reasonably decent up in time. But I built it around that random core of the starter bot. Not sure if I'll participate in the next one, but I might. I'm trying to learn how to program in the mean time for other reasons which may then help me if I do decide to do it.
I was thinking after the next competition Randy should get someone to 'donate' their bot to Warlight and make it an official AI to play against in the game. It could finally be the challenge after insane that I've wanted. For the final (new) single player challenge, you must beat this evil SupremeDalek bot! And then he will devour them all and make them cry and things will be right with the universe. You'll have your true victory then! Because really, what is SupremeDalek if it's only killing bots? It needs some non-bots to truly release its hatred upon the world.