AI Idling (no research or buildings)

fish_sticks

Chieftain
Joined
Feb 4, 2006
Messages
72
The last two games that I have played there are a few of the civilizations under the AI that seem to stagnate. In my most recent game I decided to take snoop around on the Kazaad because their score was around 300 when most civilizations where well over a thousand. They had not been in any wars and were friendly with most civs.

I did two things to check this, go into world builder and make them my vassal as well as placing a few Lokis (the hero that can investigate cities) to see what they were doing.

The details:
+3 :commerce: per turn
80% :science:
20% :commerce:
Not researching anything
Not building anything (in any of their 3 cities)

In a previous game I had the same issue with Thessa, simply that she just never seemed to be doing anything. Around turn 400 she asked for Mining so I knew something was up.

-----

I still have the save game if necessary but I think I might now some trigger of the problem. In the game that I am playing I have the religions for FoL, RoK, and OO disabled. I have only seen this problem for those AIs that really prefer one of those religions. I am may be completely off because my sample size is only two though.
 
The last two games that I have played there are a few of the civilizations under the AI that seem to stagnate. In my most recent game I decided to take snoop around on the Kazaad because their score was around 300 when most civilizations where well over a thousand. They had not been in any wars and were friendly with most civs.

I did two things to check this, go into world builder and make them my vassal as well as placing a few Lokis (the hero that can investigate cities) to see what they were doing.

The details:
+3 :commerce: per turn
80% :science:
20% :commerce:
Not researching anything
Not building anything (in any of their 3 cities)

In a previous game I had the same issue with Thessa, simply that she just never seemed to be doing anything. Around turn 400 she asked for Mining so I knew something was up.

-----

I still have the save game if necessary but I think I might now some trigger of the problem. In the game that I am playing I have the religions for FoL, RoK, and OO disabled. I have only seen this problem for those AIs that really prefer one of those religions. I am may be completely off because my sample size is only two though.

That is pretty weird. Post a save and I'll check it out.
 
hey, that might explain why some civs seem to stagnate all the time. I know that I've never seen a Khazad AI doing good, neither a luchuirp or bannor one IIRC. many times they seem to just refuse to build a second city and sit there and get killed..
 
I still have the save game if necessary but I think I might now some trigger of the problem. In the game that I am playing I have the religions for FoL, RoK, and OO disabled. I have only seen this problem for those AIs that really prefer one of those religions. I am may be completely off because my sample size is only two though.

I think that those game options are the cause.

Spoiler :
Code:
	def AI_chooseTech(self,argsList):
		ePlayer = argsList[0]
		bFree = argsList[1]
		pPlayer = gc.getPlayer(ePlayer)
		eTeam = gc.getTeam(pPlayer.getTeam())
		iTech = -1

		if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_BALSERAPHS'):
			iTech = gc.getInfoTypeForString('TECH_FESTIVALS')

		if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_BANNOR'):
			iTech = gc.getInfoTypeForString('TECH_BRONZE_WORKING')

		if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_CALABIM'):
			iTech = gc.getInfoTypeForString('TECH_FEUDALISM')

		if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_DOVIELLO'):
			iTech = gc.getInfoTypeForString('TECH_BRONZE_WORKING')

		if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_HIPPUS'):
			iTech = gc.getInfoTypeForString('TECH_HORSEBACK_RIDING')

		if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_KHAZAD'):
			iTech = gc.getInfoTypeForString('TECH_WAY_OF_THE_EARTHMOTHER')

		if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_LANUN'):
			iTech = gc.getInfoTypeForString('TECH_SAILING')

		if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_LJOSALFAR'):
			iTech = gc.getInfoTypeForString('TECH_WAY_OF_THE_FORESTS')

		if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_LUCHUIRP'):
			iTech = gc.getInfoTypeForString('TECH_CONSTRUCTION')

		if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_SVARTALFAR'):
			iTech = gc.getInfoTypeForString('TECH_HUNTING')

		if eTeam.isHasTech(gc.getInfoTypeForString('TECH_KNOWLEDGE_OF_THE_ETHER')):
			if (pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_AMURITES') or pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_SHEAIM')):
				iTech = gc.getInfoTypeForString('TECH_SORCERY')

		if eTeam.isHasTech(gc.getInfoTypeForString('TECH_EXPLORATION')) == False:
			iTech = gc.getInfoTypeForString('TECH_EXPLORATION')

		if eTeam.isHasTech(gc.getInfoTypeForString('TECH_PHILOSOPHY')):
			if pPlayer.getAlignment() == gc.getInfoTypeForString('ALIGNMENT_EVIL'):
				bAshValid = true
				bEsuValid = true
				for iTeam2 in range(gc.getMAX_PLAYERS()):
					eTeam2 = gc.getTeam(iTeam2)
					if eTeam2.isAlive():
						if eTeam2.isHasTech(gc.getInfoTypeForString('TECH_CORRUPTION_OF_SPIRIT')):
							bAshValid = false
						if eTeam2.isHasTech(gc.getInfoTypeForString('TECH_DECEPTION')):
							bEsuValid = false
				if bEsuValid == true:
					iTech = gc.getInfoTypeForString('TECH_DECEPTION')
				if bAshValid == true:
					iTech = gc.getInfoTypeForString('TECH_CORRUPTION_OF_SPIRIT')

		if eTeam.isHasTech(gc.getInfoTypeForString('TECH_PHILOSOPHY')):
			if pPlayer.getAlignment() == gc.getInfoTypeForString('ALIGNMENT_GOOD'):
				bOrdValid = true
				bEmpValid = true
				for iTeam2 in range(gc.getMAX_TEAMS()):
					eTeam2 = gc.getTeam(iTeam2)
					if eTeam2.isAlive():
						if eTeam2.isHasTech(gc.getInfoTypeForString('TECH_ORDERS_FROM_HEAVEN')):
							bOrdValid = false
						if eTeam2.isHasTech(gc.getInfoTypeForString('TECH_HONOR')):
							bEmpValid = false
				if bEmpValid == true:
					iTech = gc.getInfoTypeForString('TECH_HONOR')
				if bOrdValid == true:
					iTech = gc.getInfoTypeForString('TECH_ORDERS_FROM_HEAVEN')

		if pPlayer.getStateReligion() == gc.getInfoTypeForString('RELIGION_THE_ASHEN_VEIL'):
			bValid = true
			for iTeam2 in range(gc.getMAX_TEAMS()):
				eTeam2 = gc.getTeam(iTeam2)
				if eTeam2.isAlive():
					if eTeam2.isHasTech(gc.getInfoTypeForString('TECH_INFERNAL_PACT')):
						bValid = false
			if bValid == true:
				iTech = gc.getInfoTypeForString('TECH_INFERNAL_PACT')

		if iTech != -1:
			if eTeam.isHasTech(iTech) == False:
				return iTech

		return TechTypes.NO_TECH

The code which forcing civs to research certain techs does not check to see if it is possible to research it. This leads to very stupid AIs who won't research anything if they can't get their favorite religion-founding tech.


Personally, I think that having this code in the game at all is pretty stupid. I'm all for weighting certain civs towards certain religions, but forcing it id dumb and leads to boring games when things don't go wrong. An AI forced to research a tech will take the default route to that tech (what would be selected if you just selected that tech, instead of choosing the wisest path towards it; this is to get the prereqs in the order that they appear in CIV4TechInfos.xml. If nothing else, could you at least make the cheaper basic techs appear sooner in the tech file, instead of arranging it alphabetically?), which is not very efficient. It makes the civ ignore the techs that would let them get resources or to increase their teching rate.
It also pretty much guarantees that the AI will get that religion in advanced start, and deprive all other players who get it in advanced start from being able to get the free disciples.
 
Now I am pretty certain it is the problem after tinkering around. I upgraded to 33f because I was will on 33e which didn't change anything, as expected.

I started a new game with Thessa, Arturus Thorne, and myself. I went ahead and just placed Loki in both of their capitals at the beginning of the game. Around turn 200 (on Epic speed) they are both not doing anything. I went into world builder and game them either their respective techs (which are disabled just like before, but world builder will still let you hand them out). The next turn they started right back up on researching something else and building men again.

So in short, do not disable FoL or RoK if one of the civilization that are crazy about it are playing. This may go for other religions but I have not tested those.
 
That is pretty weird. Post a save and I'll check it out.

I posted this issue in the bug thread a few weeks ago, I didn't have a save then, and I don't remember if I saved one.

My issue was with two consequetive games where the Os Gaballa AI never built more than a single city, and captured one barbarian city.
 
nice to know. so don't disable religions until it is fixed.
i agree with magister, no AI should be forced to do something, weigthing is a lot better.
 
Thast the problem (good catch MC). It will be fixed in 0.34.
 
Back
Top Bottom