Nice work. the amount of AI variables exposed makes me hopeful, despite how opaque a lot of them are right now.
I went through your files. in ai_plan_goals I tried a few different things.
to manage manpower a bit better:
Code:is_low_mp = {\ trigger = { manpower_percentage < 25 } aggressive = -50 } is_high_mp = {\ trigger = { manpower_percentage > 75 } aggressive = 50 }
to try to manage attrition (no idea if this actually does anything, could be completely wrong, just copied from the landlocked naval example):
Code:# land land_morale = 10000 land_morale_modifier = 10000 land_unit_attrition = 10000 land_morale_recovery = 10000
I interpret 1 define differently, "STRIKE_TEAM_ADVANTAGE" being an overkill target, which I set lower to 2, thinking it will for example aim to have a 40k stack fight a 20k stack, and not more
do you have any idea what wait_ae is or does? it's in the aiview goal planner all the time under a war declaration
I wish you could better inspect the tactical decisions being made. it seems almost impossible right now to distinguish between different army behaviour. I just ran a long game overnight, which seemed to be avoiding attrition at the beginning, but now at year 820 it's regularly stacking 60k with 10% attrition. that's my biggest problem with this AI, it still ends up with 0 manpower regularly. also is there any way to change the wages paid to max?
are you on any imperator discords? could be useful for further investigation or testing
here's a printmap of my overnight game to 820 - is this considered a game amount of blobbing for this late in the game?
Keep in mind when writing goals that they get updated quite infrequently (lowest guaranteed frequency is once a year, it will also do it on e.g. ruler change).
wait_ae will in 1.1 depend on a concretely moddable value ae_ceiling in goal files.
Type "mapmode ai" in console and select an army. You should see a color coded maps of utility values that (kind of) explaining why AI troops go where they are going. They may do different (hopefully more intelligent) things if pure_weight = yes hasn't been set though.
Last edited: