Ties... who wins?

Honestly - I remember the same points and posts being made 10 years ago for Civ 2!! :D

History repeating itself! :lol:
 
This isn't simultaneous turns. You know that wait after your turn thats says "Waiting For Other Civs"? That's you not taking turns simultaneously.

There is no turn order for play in Simultaneous turns mode, so why should there be an order letting some people have an advantage to getting all wonders and religions?
 
:confused:

You and I are playing different games sir! ;)

That's most definitely not how it works on my computer.... nor for what I know, on anyone elses! :D Perhaps you are playing a simultaneous turn version?

Either that or your explanation isn't clear..... bit confused here!! :crazyeye: ;)

I play the very normal version of BTS, but it has been like this forever.

Maybe because i generally multiplay with a friend of mine?
Chances are, that 2 humans who ARE taking simultaneous turns are disrupting the natural turn order.

But i can say, 100% sure, that the above happens 100% of the time.
 
I play the very normal version of BTS, but it has been like this forever.

Maybe because i generally multiplay with a friend of mine?
Chances are, that 2 humans who ARE taking simultaneous turns are disrupting the natural turn order.

But i can say, 100% sure, that the above happens 100% of the time.

That would be it.
 
Aye, that would indeed be it - you can watch the turn order clearly when playing with multiple human players in a MP game.
 
As best as I can figure out, higher production always wins ties. While turns look sequential, and they are as far as moving goes (unless multiplayer simultaneous of course), production seems simultaneous. For an obvious example, the units you are building are completed before the AI gets to attack you.

So for things like Wonders and Techs which give unique benefits, whoever has the most extra production for the thing wins the race.

I could be wrong, but it would be obviously more fair if it worked like this.
 
Inky said:
So for things like Wonders and Techs which give unique benefits, whoever has the most extra production for the thing wins the race.

I could be wrong, but it would be obviously more fair if it worked like this.

Yes, it would be more fair, but basic experiments have shown that overflow is irrelevant in a tie. The first civ on the setup list wins, period. The production phases are never simultaneous; they proceed in a specific order. It just isn't as obvious because they require no input from the player, and so only last a few seconds in total.
 
For various reasons it is not true that ties are impossible nor is it true that the first player always wins.
The doturn code for simultaneous turns prevents the former (CvGame.cpp):
Code:
	if (isMPOption(MPOPTION_SIMULTANEOUS_TURNS))
	{
		shuffleArray(aiShuffle, MAX_PLAYERS, getSorenRand());

		for (iI = 0; iI < MAX_PLAYERS; iI++)
		{
			iLoopPlayer = aiShuffle[iI];

			if (GET_PLAYER((PlayerTypes)iLoopPlayer).isAlive())
			{
				GET_PLAYER((PlayerTypes)iLoopPlayer).setTurnActive(true);
			}
		}
	}
Basically for those things that require an order in simultaneous turns the order is shuffled every turn (of course if that for some reasons does not work its a bug - but the code should shuffle the turn order every turn).
Now about ties I had the impression as well that overflow determines who wins wonders and techs, but I cannot find the code for wonders or techs, so I cannot dispute what people say about turn order (see above for MP though).
The founding of religion is done via the doholycity code which is only called once per turn and looks at what players have the prereq tech (it does not care about overflow) all players that discover/acquire the tech during that turn can found the religion and it is essentially a random dice roll (note that pre BtS there was a bonus for the human player who would always win the first tie for a religion this seems to be gone now).
Spoiler cvgame.cpp :

Code:
void CvGame::doHolyCity()
{
	PlayerTypes eBestPlayer;
	TeamTypes eBestTeam;
	long lResult;
	int iValue;
	int iBestValue;
	int iI, iJ, iK;

	lResult = 0;
	gDLL->getPythonIFace()->callFunction(PYGameModule, "doHolyCity", NULL, &lResult);
	if (lResult == 1)
	{
		return;
	}

	if (getElapsedGameTurns() < 5 && !isOption(GAMEOPTION_ADVANCED_START))
	{
		return;
	}

	int iRandOffset = getSorenRandNum(GC.getNumReligionInfos(), "Holy City religion offset");
	for (int iLoop = 0; iLoop < GC.getNumReligionInfos(); ++iLoop)
	{
		iI = ((iLoop + iRandOffset) % GC.getNumReligionInfos());

		if (!isReligionSlotTaken((ReligionTypes)iI))
		{
			iBestValue = MAX_INT;
			eBestTeam = NO_TEAM;

			for (iJ = 0; iJ < MAX_TEAMS; iJ++)
			{
				if (GET_TEAM((TeamTypes)iJ).isAlive())
				{
					if (GET_TEAM((TeamTypes)iJ).isHasTech((TechTypes)(GC.getReligionInfo((ReligionTypes)iI).getTechPrereq())))
					{
						if (GET_TEAM((TeamTypes)iJ).getNumCities() > 0)
						{
							iValue = getSorenRandNum(10, "Found Religion (Team)");

							for (iK = 0; iK < GC.getNumReligionInfos(); iK++)
							{
								int iReligionCount = GET_TEAM((TeamTypes)iJ).getHasReligionCount((ReligionTypes)iK);

								if (iReligionCount > 0)
								{
									iValue += iReligionCount * 20;
								}
							}

							if (iValue < iBestValue)
							{
								iBestValue = iValue;
								eBestTeam = ((TeamTypes)iJ);
							}
						}
					}
				}
			}

			if (eBestTeam != NO_TEAM)
			{
				iBestValue = MAX_INT;
				eBestPlayer = NO_PLAYER;

				for (iJ = 0; iJ < MAX_PLAYERS; iJ++)
				{
					if (GET_PLAYER((PlayerTypes)iJ).isAlive())
					{
						if (GET_PLAYER((PlayerTypes)iJ).getTeam() == eBestTeam)
						{
							if (GET_PLAYER((PlayerTypes)iJ).getNumCities() > 0)
							{
								iValue = getSorenRandNum(10, "Found Religion (Player)");

								if (!(GET_PLAYER((PlayerTypes)iJ).isHuman()))
								{
									iValue += 10;
								}

								for (iK = 0; iK < GC.getNumReligionInfos(); iK++)
								{
									int iReligionCount = GET_PLAYER((PlayerTypes)iJ).getHasReligionCount((ReligionTypes)iK);

									if (iReligionCount > 0)
									{
										iValue += iReligionCount * 20;
									}
								}

								if (iValue < iBestValue)
								{
									iBestValue = iValue;
									eBestPlayer = ((PlayerTypes)iJ);
								}
							}
						}
					}
				}

				if (eBestPlayer != NO_PLAYER)
				{
					ReligionTypes eReligion = (ReligionTypes)iI;

					if (isOption(GAMEOPTION_PICK_RELIGION))
					{
						eReligion = GET_PLAYER(eBestPlayer).AI_chooseReligion();
					}

					if (NO_RELIGION != eReligion)
					{
						GET_PLAYER(eBestPlayer).foundReligion(eReligion, (ReligionTypes)iI, false);
					}
				}
			}
		}
	}
}
 
Iam playing every weeks with my friends (4 players) on multi and this problem appears almost at all the games ... It is random to what we know.
 
Code:
void CvGame::doHolyCity()
iValue = getSorenRandNum(10, "Found Religion (Team)");
if (iReligionCount > 0)
								{
iValue += iReligionCount * 20;
                                                                                          }
if (!(GET_PLAYER((PlayerTypes)iJ).isHuman()))
								{
iValue += 10;
								}
Each player, who discover required technology gets random number of points from 1 to 10.
If player founded any other religion earlier, gets extra 20 pts for every founded religion.
AI gets additional 10 pts.
Player, who have less pts, found religion :)

Sorry for my english ;)
 
That would be it.

Which sucks hardcore, since my units have to survive 2 rounds of combat before given the opportunity to upgrade.

But, i can reinforce the city while under attack, so i guess that evens out.
 
Top Bottom