Excellent input, I like that my post has generated some thoughts. Let me clarify on some of the things I'm implying though. I'd personally like to see the AI mimic a human player as much as possible. I think that (with an ideal AI) if you recorded a game and watched the AI go, it would pass the 'Turing Test.' Hence my virtual mouse idea. The human player is limited in what they can do per command with the current UI (which I'm not complaining about) whereas the AI can issue commands for the women to hunt, 2 men to chop wood, 2 men to mine, and the cavalry to start scouting all in one frame! This ability is what I believe will make AIs hard to beat, and implementing the virtual mouse idea might bring it down to our level even with a great interface. But that's for an ideal world. As for the placement of the buildings, I wouldn't want them just randomly placed, I'd want their placement to be based on a random number. In impractical demonstrative pseudocode: double rand = randomMinMax(0,6);//make trained champions gather at a randomly-based point (somewhere East between 0-60 units of the CC) until ready for attackPoint championGatherPoint = Point(rand*10, CivilCenter.y); //build the first house 30 units North of the CC, and 0-30 units to the WestfindClosestCitizen().buildHouse(CivilCenter.x - (rand*5), CivilCenter.y - 30);//skip a lotif(population.needsHouses){ findClosestCitizen().buildHouse(lastHouse.x, lastHouse.y - (house.width/2) - (rand*5) ); //build houses along a straight line Northwards with spacing of 0-30 units between houses (assuming the houses local origin is in the center)}This random-based spacing will change the rate at which units traverse through the city. If the spacing between the houses is zero, it'll take just that little bit longer for the unit to go around the houses, if the spacing is 30, then units can traverse faster, but any wall building may require more stone and build time to fit them in. Add a bunch more little values like this based off the same random number iterated over thousands of frames, and you have yourself an AI that you'll never know what to expect from, and a unique game almost every time. And I feel that the virtual mouse idea will add predictability to the difficulty while maintaining this random-based strategy. EDIT: or you could skip the mouse thing and just have a command timer that's high in easy, low in medium, and non-existent in hard.