Since it was brought up in the initial post here, we’ll just use this thread for AI discussion.
I have some ideas, but I’m not a programmer and don’t know how easy/hard it would be to implement or try various ideas.
1 - What should the AI attack with?
I think a good baseline for an “Aggressive AI” would be to attack with equal force (+1) in both number of units and hitpoints (think LL). Units should be classified in three categories: 1) Fodder [read infantry] 2) Heavy Land [rt and arm], and 3) Heavy Air [ftr and bom]
So, when an AI is picking what to bring in, it should bring in equal “fodder” + 1 plus minimum air needed to achieve victory. If air is not available it should cyle to just enough rt, then just enough arm.
Example - R1 (Russia attacks 3 inf, 1 rt, 1 arm in Wrus).
The minimum the AI should bring would be 6 “fodder” since the Germans have 5 units and then it would need two 3’s (starting with air in range) so that you have an advantage of 12 hp to 11 hp.
Or a typical trade when attacking 1 inf would be 2 fodder inf plus 1 air (if in range).
2 - How to determine attacks?
I think the board should be renumbered from 1 to (whatever) with 1 being the most important territory, then 2, then…. X (least important)
The initial renumbering takes place prior to the start and might look something like this (only including Russia and Germany):
1 - Berlin
2 - Moscow
3 - Wrus
4 - Cauc
5 - Ukr
6 - EE
7 - Kar
8 - SE
9 - WE
10 - Kaz
11 - Novo
12 - Balk
13 - Arch
14 - Belo
I’m not sure if renumber should take place at the start of each players turn of if these numbers would hold throughout the game.
Anyway, here on Russia 1, the AI would look for the lowest number (best target) it could attack and then decide what it needs to bring in. In this case Wrus would be first (ranked #3 overall). Once it can be determined it can safely move units from 13th ranked Arch and 7th ranked Kar etc. it would now be free to look for the next highest priority target and calculate if it had enough units and hitpoints to try an attack here. That would be 5th ranked Ukr.
I still have to think about how it would decide when to deadzone and not. Obviously you wouldn’t want it deadzoning Wrus on R1.
Anyway, by giving all the territories a default ranking you can give the AI a way to easily determine that Wrus is way more inportant that Man for example.
And now that I’m thinking about it, you can probably renumber at the start of each players turn and eliminate all territories it holds and its Allies hold as well as those that don’t have a hostile boarder. For example there isn’t much point to rank Safr high if Germany doesn’t have units that can attack there, BUT Egy may be ranked high as a means to get to Safr.
The renumbering would be based on the initial defualt rankings you give so then on G1, Wrus, Ukr, Kar would still be ranked very high while Mos, Nov, Kaz would not since they are no longer in hostile territory.
Also by renumbering territories you could have several different default rankings, one KGF, one KJF, and a few (or several) “Random” setups so that R1 isn’t always the same.
For example you could have one where the AI views Belo more important than Ukr, this would give you the Wrus/Belo open instead of the Wrus/Ukr.
Anyway, there’s a lot to think about and I’m still kicking things around but wanted to just jot some things down before I forget.