Whenever a game maker says that their game doesn't "cheat" there is inevitably users who will want to demonstrate that this claim is untrue. There is nothing wrong with that, after all, someone needs to make sure that the manufacturer of a product or good or service is adhering to their claims. So in essence, it's a good thing.
So that we can put this issue to rest, let me put forward the ground rules here:
Galactic Civilizations II's computer AI does not get any special advantages over a human player at AI intelligence levels until after it reaches "intelligent". At "intelligent" it is playing its best game without getting special benefits. At higher levels than that, the AI does get extra money and at the highest level (masochistic I think it's called), the fog of war is simply removed for the most part from the AI. At that point, the player is basically a god and we're just throwing up our hands and saying, fine, you're a god, therefore, your opponents need to be gods too with super human powers.
Some notes:
Now, I'm only going to do this one time because otherwise, I'm constantly going to get people who are going to make pronouncements on AI cheating. So next time, I'll refer them to this.
So a user sent a "Saved game" that "proves" that the AI "cheats" and knows where all the good planets are.
It includes instructions on how to reproduce:
1. Started a new game. 2. Proceeded to Sensor net my sectors. Found one habitable planet in the vicinity on turn 2, had it under constant surveillence by turn 3. 3. Destroyed all scouts with fast interdictors before they got anywhere close to my home system or the nearby system. 4. A Korx colony ship bee-lined directly to the habitable planet. Notes: I gimmicked my ships a little so that I could toss out a Sensor Bouy every turn with max military spending. This means they only had a sensor range of 10, but they moved at a rate of 6. They still detected the second planet on turn 2, had it under total observation within standard scout range by turn 3. My interdictors had a single laser and moved at 12. I used both the sensor bouys and the interdictors to expand my sensor net much more quickly and much farther than my first trial. A backup of debug.err is stored with the save game files. I saved regularly thoughout the game this time. Going back through the saved games and using the cheats to view the events, I can verify that this planet never came under observation by scouts, wormholed flagships or any other method, and that the colony ship was sent on a direct course.
Okay fine. So I load up the debugger and remove the fog of war so I can see what exactly is going on.
This is what I see:
The AI has built various scouts and they're going around the galaxy as they're supposed to.
One of the first things I also noticed is that the player is running an accelerated scenario which makes it a lot tougher to look at since there's a lot of other variables now in than a "clean" default game. But since I have the debugger, no problem.
According to the claim, the Korx (gray) make a "bee line" right for the planet (Korx are in the bottom middle of the shot above and the player's planet is straight north of it).
A few things though I also noticed:
The Korx are building transports and freighters even though I can see two habitable planets. It's doing that because it cannot see those planets. It hasn't explored them yet. So far from making a bee-line, it's stopped building colony ships. Some of the other players are in the same boat.
In June 2225, a scout gets close enough to see the planet:
I had built interceptors and been pretty good at killing scouts as they came in. Now, if I hadn't had fog of war turned off, odds are the planet might have been seen and I wouldn't have ever known.
I keep reloading the auto save and use cheat keys myself in order to eliminate the scouts.
Eventually I build up a screen of interceptors to make sure that no scout gets through:
Bear in mind, I'm killing a lot of scouts.
Using cheat keys, I teleport ships to eliminate the scouts. It's very unlikely that a player with fog of war would even have noticed those scouts. But let's assume they did, they're dead.
Eventually I get tired of doing this, no colony ships are coming so I check the debugger:
So the Drengin and the Altarians know about the planet, the others do not (I did let their scouts pass through unmolested, but not the Korx. The Korx are player 6. They don't know about it.
In fact...if anything, the AI's colonization algorithms need tweaking:
Right by the Torian home world is a class 14 planet.
The Torians know about it. So do the Altarians, which makes sense, they're near by too.
So I'm going to look at the code and see WHY they haven't colonized that planet even though they know about it. The Korx won't colonize it because it's beyond their range.
Answer: more of that no cheating stuff again, the Torians won't colonize it because their ships don't have the range because they're now trying to make faster colonies (I think I'll work on this and put it back to being closer to what it is in the released version).
I also look to make sure the reason it's not sending colony ships isn't due strictly to range.
for(ulIndex=0;ulIndex<g_pGalaxy->ulTotalPlanets;ulIndex++)
{
pPlanet = g_pGalaxy->pPlanetInGalaxy[ulIndex];
if( pPlanet && (pPlanet->IsKnownBy(QueryID()))&&pPlanet->GetQuality() > ulLowerThreshold)
if(!pPlanet->IsColonyColonized())
if( (pPlanet->GetOwner()== CIV_INVALID_PLAYER_ID)||(pPlanet->GetOwner()==this->ulPlayerID))
if(pPlanet->ulAIColonyAssigned[this->ulPlayerID] == FALSE)
if(g_pGalaxy->GetDistanceFromEmpire(this->QueryID(),pPlanet->GetTileX(),pPlanet->GetTileY())<(pColonyShip->GetTileRange()+2))
ulGoodPlanetsAvailable++;}
This is the function that the Korx AI uses to determine whether there are planets available to colonize. The planet in question is Thebes I. And it jumps back out at the pPlanet->IsKnownBy() function because it doesn't know about the planet.
Bottom line, IF the AI is sending colonies somehow to a good planet, it's either [A] a bug that is incredibly subtle that doesn't show up here which is unlikely. OR [B] it could be the AI is making a guess but given that the player is attacking scouts, it wouldn't likely send a colony ship there unless it was CERTAIN. OR [C] The AI scouted it without the player noticing which is what I am inclined to think at this point.
Now those reading this, as much as I do like going through the debugger with saved games from players, I can't do this very often (or more to the point almost never). I could do it tonight because I'm AI testing for 1.0X. But that's a very unusual case. Other times it would be a choice between adding a real feature or proving to some user that the AI isn't cheating and I think most people would prefer we work on features.