That was an older version of the bot which played against AI. The new version would move those 2 armies in Illyricum around before any moves which the both thinks should happen late.
Yes, I had a clear idea how multiattack can get formulated. The bot basically works like this:
- The bot knows about 2 "tasks" namely completing a bonus and breaking a bonus.
- The bot calculates then for each task (breaking or taking a bonus) the necessary moves in order to fulfill it. More precisely the bot calculates the necessary moves for each combination of bonuses on the map. Here is where the heavy calculations are happening and due to performance reasons the bot has some limitations on how deep to search.
- Each of the calculated combination of tasks lead to a certain board outcome at the end of the turn. The bot evaluates each of the outcomes and picks the one which gives it the highest value. Here are the criteria:
-- Own income - opponent income (main criteria)
-- Own bonuses close to the opponent get a malus. Else the bot might expand right next to the opponent instead of taking the bonus far away.
-- Own armies - opponent armies. This helps the bot to take more efficient bonuses where it loses less armies taking them.
It's written in C#. You can create your own fork of mine or Fizzers github repository. Apart from my WarLight bots I have no experience in C# however getting up and running wasn't too hard and Fizzers guide works perfectly: https://www.warzone.com/blog/index.php/2016/02/the-warlight-ai-goes-open-source/