Since this issue came up several times I'd like to explain what exactly makes the AI decide if and in what order buildings shall be built.

This is without doing stunts in the AIPathRequirements!



As far as I can tell there is a total of 5 files connected to that:



1. AIParametersBuilding.xml

Each building has a value in one or several categories.



2. Registry.xml

Stg+F for "Modifiers".

The values here are multiplied with the Values from AIParametersBuilding.xml.



3. Personality.xml

Stg+F for "Modifiers".

The values here are also multiplied with the Values from AIParametersBuilding.xml.



4. StarSystemAssignation.xml

Yet another set of Modifiers that the original Values are multiplied with! The AI actually uses this if it feels that it lacks something.



One thing is missing. It was a hidden mystery for me but it actually is pretty straightforward afterall:

The sum of the values for a building gets divided by the number of turns it takes to build and probably some minor unknown factor.



All buildings that are not blocked by a Prerq are sortet by their value after all the above calculations.



Note: If the value of a building drops below 0.1 due to a too long build-time it will not be built because that is the value for Ind=>Dust.



It has been argued about wheater and when the AI should build specific buildings.

I suggest altering the buildings individual values if you want to bring it in line. For example increasing the value of the 2nd Science-Building makes sense because it is so powerfull. Or decreasing the value of Influence buildings instead of blocking them off completely. So they won't get build early on but later when it doesn't matter anymore they still get build.



If you want a complete selection of buildings, like the dust stuff for example to be build later, it might make sense to decrease the modifier in Registry.xml.



And of course if you have a specific buildorders for different races in mind it can be easily realized by playing around with these values.



Note that most of the values already are quite okay as they are, with some exceptions of course.