What's the problem with diplomatic victory

Hours played of Gods and Kings 257. Hours of Brave New World 20-30. I think that speaks for itself.

Yeah. It says, "Gods and Kings has been out considerably longer than Brave New World".
 
I had a larger army than everyone in the world combined as Venice. It didn't even dent my income, pocket change.

Then your problem isn't diplo victory, it is Venice being OP, or your are a much better civ player than your human opponents.
 
Diplo victory is probably my least favorite in BNW. It always had the problem that it was almost entirely city-state focused, but it seems like BNW has brought the city-state game back to being about who can throw the most gold down a hole.
 
Disable diplo victory or increase difficulty. Or put Greece and Siam into the game.

I was playing immortal, it's a difficulty level that I feel the computer can keep your pace is some way (despite the inability to go culture or the horrible warfare they do, they compensate with the inflated bonuses and oversized armies). But seriously, I randomly like to play as standard as possible, all win options, normal barbs, std speed, etc.

I was working for a late careful domination game with diplomacy to not enter chain denunciations and wars, and I liked my game so much I decided to beat my highest score with a nice domination victory, but the stupidly easy diplomatic vitory ruined my day. I did voted for myself on the world leader just in case, and ruined my game.

I may sound stupid, but this is a game everyone want to archieve their own goals, other try to win as fast as possible, others like to play huge map marathon games and enjoy an ever-lasting game.

Thanks por the comments, is nice to see I'm not alone with the stupidly easy and overlaping diplomatic victory thing.
 
The core problem, if any, is the number of votes required to win. As it is now:

Code:
//	--------------------------------------------------------------------------------
/// Update diplo victory parameters, such as how many votes are needed to win
void CvGame::DoUpdateDiploVictory()
{
	int iVotesForHost = 1;
	int iVotesPerCiv = 1;
	int iVotesPerCityState = 1;
	for (int i = 0; i < GC.getNumLeagueSpecialSessionInfos(); i++)
	{
		LeagueSpecialSessionTypes e = (LeagueSpecialSessionTypes)i;
		CvLeagueSpecialSessionEntry* pInfo = GC.getLeagueSpecialSessionInfo(e);
		CvAssert(pInfo != NULL);
		if (pInfo != NULL)
		{
			if (pInfo->IsUnitedNations())
			{
				iVotesForHost = pInfo->GetHostDelegates();
				iVotesPerCiv = pInfo->GetCivDelegates();
				iVotesPerCityState = pInfo->GetCityStateDelegates();
			}
		}
	}

	float fCivsToCount = 0.0f;
	float fCityStatesToCount = 0.0f;
	for (uint i = 0; i < MAX_CIV_PLAYERS; i++)
	{
		PlayerTypes e = (PlayerTypes)i;
		CvPlayer* pPlayer = &GET_PLAYER(e);
		if (pPlayer != NULL && pPlayer->isEverAlive())
		{
			// Minor civ
			if (pPlayer->isMinorCiv())
			{
				// Bought out does not count (they are no longer in the pool of teams, cannot be liberated, etc.)
				if (!pPlayer->GetMinorCivAI()->IsBoughtOut())
				{
					if (pPlayer->isAlive())
					{
						fCityStatesToCount += 1.0f;
					}
					else
					{
						fCityStatesToCount += 0.5f;
					}
				}
			}
			// Major civ
			else
			{
				if (pPlayer->isAlive())
				{
					fCivsToCount += 1.0f;
				}
				else
				{
					fCivsToCount += 0.5f;
				}
			}
		}
	}

	// Number of delegates needed to win increases the more civs and city-states there are in the game,
	// but these two scale differently since civs' delegates are harder to secure. These functions 
	// are based on a logarithmic regression, with a standard map (8 civs, 16 CS) requiring half of 
	// the base delegates plus one.
	float fCivVotesPortion = (0.798f * (float)log(fCivsToCount)) + 5.447f;
	if (fCivVotesPortion < 0.0f)
	{
		fCivVotesPortion = 0.0f;
	}
	float fCityStateVotesPortion = (12.984f * (float)log(fCityStatesToCount)) - 10.0f;
	if (fCityStateVotesPortion < 0.0f)
	{
		fCityStateVotesPortion = 0.0f;
	}

	int iVotesToWin = (int)floor(fCivVotesPortion + fCityStateVotesPortion);
	iVotesToWin = MAX(iVotesForHost + iVotesPerCiv + 1, iVotesToWin);

	SetVotesNeededForDiploVictory(iVotesToWin);
	GC.GetEngineUserInterface()->setDirty(LeagueScreen_DIRTY_BIT, true);
}

... they came up with a crazy log formula to emulate a standard simple majority definition (half plus one delegates in a standard map). Why they did overcomplicate the issue is past any of my suspicions, but it is what it is (notice that in BNW not one of the extracted XML variables are being used anymore, so no point in trying to change those).

What we could do, is change the above code to something that represents more what it would be to "elect a world leader" in real life; I would think at least 2/3 majority of the delegates.

Notice also that dead CS and dead Civs still count as half for the calculations... logic of this, I don't know.

Notice, also, that iVotesPerCityState is not being used for the calculations at any point, although it is being fetched. That sounds like a bug, because they clearly try to incorporate the CS delegates in their logarithmic model.

What I would do is change the line

Code:
iVotesToWin = MAX(iVotesForHost + iVotesPerCiv + 1, iVotesToWin);

to

Code:
iVotesToWin = MAX( (iVotesForHost + iVotesPerCiv*fCivsToCount + iVotesPerCityState*fCityStatesToCount) * 0.67 + 1, iVotesToWin);

and see what happens.
 
I had a larger army than everyone in the world combined as Venice. It didn't even dent my income, pocket change.

I know what you mean.
I just finished my first game as Venice a few minutes ago. I had six cities (One capital, two city state, three Ottoman trophies), a large navy (12-18 ships (Which were used to obtain the aforementioned Ottoman trophies)), around two Infantry units per city, either a Machine Gun or Artillery in each city, and two planes (One fighter, one bomber) in each city. With all that, I was still making around 800-1100 gold per turn.

I can only imagine how much more ridiculous it would have been, had I been going for a domination victory, and had an army sized for it.
 
... they came up with a crazy log formula to emulate a standard simple majority definition (half plus one delegates in a standard map). Why they did overcomplicate the issue is past any of my suspicions, but it is what it is (notice that in BNW not one of the extracted XML variables are being used anymore, so no point in trying to change those).

What we could do, is change the above code to something that represents more what it would be to "elect a world leader" in real life; I would think at least 2/3 majority of the delegates.

Notice also that dead CS and dead Civs still count as half for the calculations... logic of this, I don't know.

Notice, also, that iVotesPerCityState is not being used for the calculations at any point, although it is being fetched. That sounds like a bug, because they clearly try to incorporate the CS delegates in their logarithmic model.

What I would do is change the line

.

The dead=1/2 is meant to reduce the "Diplo victory by elimination" situation.. ie eliminating an opponent is only going to help a little. (mostly by stopping them voting for someone else than lowering the level much.)

My guess is that the Crazy log formula is to make it easier in a large number v. harder in a small number (of civs/CS)

And they are right that civ votes are harder to get.
 
The dead=1/2 is meant to reduce the "Diplo victory by elimination" situation.. ie eliminating an opponent is only going to help a little. (mostly by stopping them voting for someone else than lowering the level much.)

Yes, that is what I thought, but to me it does not make sense. In the end, Domination is the ultimate diplo victory: if there is no one left, you are in effect the World Leader. If the voting gets "easier" by eliminating opponents (which is not true given the diplo penalties associated with that), then that should be a valid strategy.

My guess is that the Crazy log formula is to make it easier in a large number v. harder in a small number (of civs/CS)

And they are right that civ votes are harder to get.

Well, it shouldn't be easier when there are a large number of competitors. There is a reason why the CS is always double the number of civs: so that each civ has in average 2 CS at their disposal.

I still think the number required to win should be a fixed percentage of the existing delegates (2/3). Easy, simple, direct, and harder.
 
I think the only change needed to fix Diplo Victory is to make the AI more competitive with it. They should be spending all their gold outbuying your city states when possible.
 
Yes, that is what I thought, but to me it does not make sense. In the end, Domination is the ultimate diplo victory: if there is no one left, you are in effect the World Leader. If the voting gets "easier" by eliminating opponents (which is not true given the diplo penalties associated with that), then that should be a valid strategy.
By that logic, domination is also the ultimate science and cultural victory too.

Actually...this might be less silly than it sounds at first. What if there were actually no domination victory condition at all, and you really were just choosing whether or not to use your military as a means to one of the other victory conditions?
 
By that logic, domination is also the ultimate science and cultural victory too.

Actually...this might be less silly than it sounds at first. What if there were actually no domination victory condition at all, and you really were just choosing whether or not to use your military as a means to one of the other victory conditions?

That logic is THE logic of the game, not mine. Yes, Domination is the ultimate victory period. That is why they made it much more difficult in BNW (which is good).

My point was: it shouldn't be limited even more by keeping half of the voting power of dead civs/CS... eliminating voting opponents is a valid strategy; even eliminating ALL voting opponents.
 
I think the only change needed to fix Diplo Victory is to make the AI more competitive with it. They should be spending all their gold outbuying your city states when possible.

This is indeed a good point, and made me search inside the code, and unless I am missing something, there might be a pseudo-bug related to this:

Code:
////////////////////////////////////
	// DIPLO GRAND STRATEGY
	////////////////////////////////////

	if(IsGoingForDiploVictory())
	{
		viApproachWeights[MINOR_CIV_APPROACH_CONQUEST] += /*-20*/ GC.getMINOR_APPROACH_WAR_DIPLO_GRAND_STRATEGY();
		viApproachWeights[MINOR_CIV_APPROACH_IGNORE] += /*-15*/ GC.getMINOR_APPROACH_IGNORE_DIPLO_GRAND_STRATEGY();
		viApproachWeights[MINOR_CIV_APPROACH_BULLY] += -15; //antonjs: todo: constant/XML

		// Neighbors and Close: +5 to Protective
		if(GetPlayer()->GetProximityToPlayer(ePlayer) >= PLAYER_PROXIMITY_CLOSE)
			viApproachWeights[MINOR_CIV_APPROACH_PROTECTIVE] += /*5*/ GC.getMINOR_APPROACH_PROTECTIVE_DIPLO_GRAND_STRATEGY_NEIGHBORS();
	}

Here the Diplo AI modifies the weights for different approaches to each Minor civ (CS) according to their grand strategy; if it is going for diplo, it decreases the weights (likelihood) of CONQUEST,IGNORE and BULLY, and if the CS is a neighbour, increases the weight of PROTECTIVE.


Now:

Code:
// Calculate desirability to give this minor gold
			if(bWantsToMakeGoldGift && !bWantsToBuyoutThisMinor)
			{
				int iValue = /*100*/ GC.getMC_GIFT_WEIGHT_THRESHOLD();
				// If we're not protective or friendly, then don't bother with minor diplo
				if(eApproach == MINOR_CIV_APPROACH_PROTECTIVE || eApproach == MINOR_CIV_APPROACH_FRIENDLY)
				{
......

// Diplo victory makes us more likely to spend gold
					if(IsGoingForDiploVictory())
						iValue += /*100*/ GC.getMC_GIFT_WEIGHT_DIPLO_VICTORY();
					// double up if this is the home stretch
					if(GC.getGame().IsUnitedNationsActive())
					{
						iValue += /*100*/ GC.getMC_GIFT_WEIGHT_DIPLO_VICTORY();
					}

Later in the same file, the diplo AI processes the "use money gift" logic for each CS; the IF condition is troublesome (and reflected by the comment). The Diplo AI will only process the money gift logic if its approach to the specific CS is either FRIENDLY or PROTECTIVE; there is no other provision. The test for the AI going for diplo victory is INSIDE the initial IF condition, meaning that it is considered ONLY if the approach to the CS is either FRIENDLY or PROTECTIVE.

Now, couple both code snippets together, and you can see that the end result of this logic is that the AI will only consider neighbours as potential customers for the diplo victory, or some other CS that have been tagged with the FRIENDLY approach by some other reasons and not by the going for diplo victory logic. A human approach is "buy whatever CS is cheaper to buy and easier to sustain until vote for diplo, regardless of proximity or even protection".

That's why it is too easy for us right now.

That looks like a faulty (maybe "incomplete" is a better word) logic, a pseudo bug.
 
With how much gold the AI can make at higher difficulty levels, I honestly don't think the solution is as simple as making the AI spend more gold on city-states. That would make it a nightmare to compete against and still not fix the problem that the VC just comes too early.
 
Diplo victory simply comes too easily, and too soon compared to other VC.
Now that i cant let go can i?
Can you get Diplo victory on large Pangaea map with 10 other civs at 1500ADcan you?
On king and emperor i often win even before votes are available.
 
Now that i cant let go can i?
Can you get Diplo victory on large Pangaea map with 10 other civs at 1500ADcan you?
On king and emperor i often win even before votes are available.

That, and making it easier for the AI to win a diplomatic victory doesn't just make it harder for the player to win a diplomatic victory, it makes it harder for the player to win every victory.

If I'm going for a diplomatic win, I'm also in the running against players going for domination, science and culture victories. People tend to forget that sometimes.
 
I find the weirdest thing about diplo victory's is that 90% of the time you basically vote yourself the winner. Who isn't going to vote for themselves, and in that case, why even have a vote?

Which brings me to another point, I have yet to see the AI vote for anyone but themselves to determine host of congress. You'd think they'd be smart and vote for anyone but the guy with the most delegates, but no, they vote for themselves.
 
Don't mean to be persnickety here, but we can not have a new thread about diplo victory every day or so?

This is even more annoying than the "I got a Merchant of Venice from a CS" threads because at those have that air of ingenuousness about them.
 
I find the weirdest thing about diplo victory's is that 90% of the time you basically vote yourself the winner. Who isn't going to vote for themselves, and in that case, why even have a vote?

Which brings me to another point, I have yet to see the AI vote for anyone but themselves to determine host of congress. You'd think they'd be smart and vote for anyone but the guy with the most delegates, but no, they vote for themselves.
If you recall a civ to life, they will vote for you as world leader (even if they don't like you, and even if you vote for someone else). I've seen mention both here and on Reddit of people getting other civs' votes even without doing that, but none of them has been able to pinpoint exactly why.
 
Yes, that is what I thought, but to me it does not make sense. In the end, Domination is the ultimate diplo victory: if there is no one left, you are in effect the World Leader. If the voting gets "easier" by eliminating opponents (which is not true given the diplo penalties associated with that), then that should be a valid strategy.
Domination is a separate victory.

Moving one step further in Domination Victory helping you in a totally separate Victory would be a bit of a problem. (Like if getting Dominant culture over someone means you get their capital city....This is a bit of a problem right now as Eliminating someone Does count as get Cultural Victory over them.)
Perhaps if it still counted Dead players, but allowed you to still put tourism into their 'culture' as long as you have vision of their original capital.

(So even if they are wiped out, their Culture is still hanging around for you to influence... maybe even still causing ideological unhappiness untill your culture wipes out the lingering influence of their tourism... and vice versa)

As is, there is Some benefit to eliminating someone, but it is much smaller than the benefit of allying them. (or liberating them*)

This is the big issue for Some points for the dead... liberating another player/CS will increase the delegates needed, but it gives you even more delegates than that.

Well, it shouldn't be easier when there are a large number of competitors. There is a reason why the CS is always double the number of civs: so that each civ has in average 2 CS at their disposal.

I still think the number required to win should be a fixed percentage of the existing delegates (2/3). Easy, simple, direct, and harder.

I think the issue is that in a straight 1/2 or 2/3 vote, it is Easier with a smaller number and harder with a larger number.

With 2 players (and 4 CS) you already control ~25% of the vote.. even not being host.
With 12 players (and 24 CS) you only control ~4% of the total vote

And each CS (most of the votes) costs a basically fixed amount of gpt to buy off... you don't get more money just because there are more players. (you do get more money by playing on a bigger map and having a bigger empire.. but that isn't necessarily equal to # of civs or CS)

Also each round that you are near the top gives 1 vote...which is a big % of the total votes with 2 players, but a tiny % of the result with 12 players.
(because the way it works, Someone will eventually win, it is just a matter of time. There is no reason it should take much longer with a large # of players than with a small # of players)

Al those make it easier to get a fixed % of votes with small # of players, and harder with a large # of players

So I can Understand that Issue.

It might be easier to say Votes needed=
Your votes (ie civ votes+Host votes)
+1/3 of all civ votes (civ votes*# civs/3)
+2/3 of all CS votes (cs votes*#CS *2/3)

[and still use the 0.5 for 'dead but revivable' civs/CS]

That would be ~1/2 of all votes if everyone was alive (for 1 civ / 2CS and civs) + the votes the host civ gets

So for certain player # (with 2 CS/civ): total votes: delegates needed
2:18:14
4:34:22
8:66:38
12:98:54

And the amount needed would be easier to calculate

6+(Living civs or CS)*4/3+(Dead civs or CS)*2/3
 
Top Bottom