Shannon V. OKeets
From: Honolulu, Hawaii
Yes and Yes (to both of you).
I think using a minimax simulation is easier and probably better, mostly because there are very, very many things that *could* play in significantly for minor setups. Trying to guess and then properly program and evaluate every possible factor that could affect a setup IMHO involves a huge amount of labour, and there is a high risk some key conditition will be left out (simply because it was to obvious, for instance). One example, what if the weather was Storm? Many of the AI recipies/setups we've made so far does not account for this, they assume fine weather.
Furthermore, the mechanism chosen seems to me to be separate form how the main AIO would have to function. The main AIO would need a way to determine every impulse where it wants its units, both longterm (where do I want my defence to be in several moves), and immediately (where do I want my defence *now*). Since the AI will need to be capable of this on a continous basis, it seems to me the same mechanism should be used for setup too. It would be bad to have two separate mechanisms (which would probably lead to the AI changing it's mind about where it preferred its units immediately after setup)
So what we need is a mechanism that can apply to any situation, at any time. But note that it could differ for different powers/countries (most easily by giving a single 'standard AI' a power sepcific map of valuable places/desired objectives/priorities/settings/whatever). I fear a rule based mechanism is not a good choice, because I'm sure it would requires a large amount of rules for a huge number of very specific palces/situations. But still there will always remain plases & situations that are not well defined as a rule set, and thus we're back at square one again, requiring a generic mechanism to handle everything that does not fit nicely into an identifiable ruleset (and again we get sudden changes in the AI as we move form one AI mechanism to a separate and different one).
So I'd rather see a AIO based on simulation/calculation, and that all we provide is heuristics. I.e. we tell the AI what it's goals should be and try to weigh those goals. This could be goals on many levels, and we would want standard ways of embedding goals into the game engine. Then the AIO simulates/calculates the best way to achive as many goals as possible as well as possible.
If we do this the recipies we're making must be different, they must *not* telle the AI how to achieve something, they must only tell the AIO what it wants done.
-rather than telling the portugese AIO where it should place its units so that key hexes won't be easily invaded, we should let the AIO know what hexes are important to protect, and then let the AI figure out by itself where to place units to achieve that. Note that we'd have to do this in some sort of dynamic way. Coastal hexes, for instance, are much more valuable if no nearby hexes are enemy held, removing the need for the enemy to invade.
-rather than instructing the AIO on how to implement marauder setups, we should tell the AIO where key enemy hexes are and how much they're worth, and then the AI can calculate the odds of capturing each objective by simulating moves and/or through specialised sub-AI's suited to evaluate this problem.
While the AIO could do what you describe, more or less, for setting up the minors, it is a heavy handed approach. I don't blieve it is necessary to run through a complicated set of code to decide where to place one or two units.
For example, the AIO will usually be making decisions about movement and the positions of units during play (not during setup of a minor) based on an overall evaluation of the worldwide situation, the balance of power in each of the branches of the armed forces for each side within each theater of operations. Besides this assessment, it will also be using strategic plans about where to attack/defend, both immediately and within the next year.
To go through all this analysis to place a couple of units on the map is excessive. Furthermore, I do not want to integrate additional logic into the master routine to handle the task of placing units on the map. In fact, bringing in reinforcements will be handled separately as well.
I guess my point here is that a single general purpose routine is not always the best solution. As the problem space expands to include different/unique situations, such as setting up minor countries and bringing in reinforcements, the logic grows more complex. It is better to cut the problem into separate pieces whenever possible. If the need arises to perform similar calculations in different places in the logic, then a 'subroutine' can be created to process the common logic.
To strain an analogy, there is no need for a large commercial airplane when a piper cub can do the job just as well.
Weather for movement is handled by the logic within a LAIO routine called 'Reach'. This tests whether a unit can 'reach' a given hex, and allows for such fine points as maybe being disorganized upon arrival, and having to skirt neutral hexes. This is easy to do since there are routines within the MWIF code that already perform these calculations. LAIO simply converts the Reach function into a call to the comparable existing function in MWIF code (e.g., for land, air, and naval units).
Perfection is an elusive goal.