Zophos
Greater Ape of Antics
Interesting behaviour by the AI in my latest game.
Parameters: 12/2 Build, Noble, Standard Size, Fractal Map, Me + 7 AI
I always play Random leaders and this time I got Montezuma. Started on a smallish continent with just me and Frederick. Soon became clear there was not enough room for us both when he founded a city that was going to block me off from much of the land. So war was inevitable.
I razed two of his cities fairly quickly and then paused to amass a Jaguar SOD for his capital. His response...
He kept building and sending out Settler/Archer pairs to refound the closest of the razed cities. I must have razed the city 3-4 times in the same spot. The thing was that the spot he chose was far more vulnerable than other sites available to him, even sites one tile away from his chosen site would have afforded better protection in the form of hills, but he kept on sending those Settlers to certain doom in the exact same location wasting vast amounts of resources and gifting me some welcome XPs in the process.
I realise that building an AI that learns from its mistakes is outside the goals of this project, (having worked on expert systems, constraint engines and limited AIs professionally I know how difficult this is!), but perhaps some limited checking that prevents repeating the exact same mistake every 20 turns would be possible and make the AI appear less suicidal in cases like this.
It ought to be possible to fix this without building any real 'learning' into the AI.
The city-site-rating code already has a term in it for the distance to each neighboring civ's borders/nearest city. And there's a term for the defensive value of settling on a hill (as noted by RJ). Just have the AI scale these terms based on some of the diplomatic modifiers. Then, if you've declared war, razed cities, etc., the AI will give your borders more respect and/or be more likely to settle on hills when near you. And that tendency will get stronger the more badly you behave.
No learning involved, and it should be fairly easy to code. Tweaking the scaling factors would be the hardest part.
Thoughts?