War weariness

Amask

Oogala Boogala
Joined
Feb 7, 2002
Messages
873
Location
Toronto
I took a look at how war weariness works.
My conclusion is that the whole system is very poorly designed, with many surprising and peculiar consequences, and needs an overhaul, or at least some major adjustments.

In rough terms, this is how it works.

war_weariness = war_damage * longest_war

war_damage is the highest damage you took in any current war.
It increases when:
- you lose military units, trade routes, cities, and tiles (to citadels, maybe also to America)
- when your tiles are pillaged
- when your cities are being razed
It's probably the same thing as war score, though this is just a guess.
It decays at 2% per turn while at war, and at 10% per turn while at peace.

longest_war is just the length of your longest current war, in turns.
Note that this can be any current war, not necessarily the one in which you lost the most.


The biggest problem I see with this has to do with "longest_war".
Until it reaches 50 turns, your war weariness will not go down, even if you stop taking losses entirely.
Not only will it not go down, it'll keep rising, and doing so very quickly if you're still early in the war.
For example between turn 10 and 11 of the war war weariness will increase by about 8%, even if you don't take any additional losses.
After 50 turns, the rate at which "longest_war" grows becomes less than 2% / turn, so war_damage decay starts outpacing it.

I did some math, and if you stop taking losses on turn 20 of the war, war weariness will not drop below the current value until turn 100.
This is a particularly big problem for multiplayer.
I guarantee that you will take more losses in one war against a strong human opponent than you will in an entire game against the AI.
This opponent can then lock you into essentially permanent war weariness even if your war reaches a stalemate and you both stop fighting.
There are a lot of legitimate reasons to avoid signing peace.
Maintaining control of city states is a big one.
So "just sign peace" isn't really a valid argument.
My contention is that "war_damage" should decay much much quicker than it does.

As of this writing, about 33% of respondents to a recent poll fall into the category that plays at least as much multiplayer as they do single player.
As multiplayer gets more stable, I expect that number to rise.
I hope that's a big enough fraction that balance decisions take multiplayer into account.


The fact that there is no connection between which two wars "war_damage" and "longest_war" come from also produces silly consequences.
- you have been in a fake war with civ A for 30 turns, and in a real war (in which you took losses) with civ B for 10 turns
signing peace with civ A will reduce your war weariness
I see absolutely no reason why it should, if all losses you took came from the war with B
- you declare war on some civ and quickly take some losses
your war weariness will be much higher if you have already been in a fake war with some other civ for many turns
again, I see no reason whatsoever why the length of one war should affect the effect on war weariness of damage sustained in any other war


There's actually more to the mechanics, but most of it doesn't really matter for this discussion, except one more thing.
Your current war weariness isn't actually just war_damage*longest_war.
That value is called "target war weariness".
Your actual war weariness is previous turn's war weariness plus about 30% of the difference to reach this turn's "target_war_weariness".
For example if target is 30 and your current war weariness is 10, next turn it'll be 16, then 20, then 23, etc.
Ignoring other changes like longest_war and war_damage decay, actual war weariness will get very close to target in no more than 10 turns, no matter how far away it is now.

What this does is prevent extreme sudden changes from turn to turn.
This doesn't really matter too much, except for one final mechanic.
Signing peace with a major civ immediately halves your current war weariness.
If there was no smoothing, it would jump back up to "target" immediately next turn, but instead it gives you a bit of breathing room.

If you're in a permanent war with an opponent who inflicted a lot of damage to you, signing peace with random unrelated enemies is really your only option of ever bringing war weariness down.
This is completely ridiculous.
There are frequently situations where some civ is sanctioned and the whole world fights them on and off forever.
I see no reason at all why these fake wars and fake peace treaties should have any effect at all on a real war you might be fighting.

The more I think about this system, the more issues I notice.
Here's a final example:
You're at war with two civs, taking similar losses from both.
Because only the highest war_damage counts, you're suffering from only half the war weariness that you would if you took the same total losses but from only one opponent.
I see absolutely no good reason to justify this.
Extend the logic to multiple opponents and it makes even less sense.
Losing 10 tanks to one guy is 5 times worse than losing 2 tanks each to 5 guys.
And when you're fighting 5 guys, you might be able to sign up to 5 peace treaties, halving your current war weariness each time.
Against one guy, you can only halve it once, IF they even let you.

The reasons that most of these issues aren't really that noticeable in single player:
- you generally don't lose too much
- you can generally peace out whenever you want
- you're often in a bunch of fake wars that have no real consequences, but give you a chance to halve your war weariness

In multiplayer most of those reasons fly out the window. You WILL lose a ton. You will NOT be given a peace treaty if they know you're hurting.


The current system is pretty big and complicated.
I don't have the time or expertise to design a new one from the ground up, nor to suggest concrete numeric tweaks for all the variables that go into the current system.
Given the sad state of it, perhaps it could be viewed as a "bug" and a lead developer can embark on fixing it without the whole formal proposal process.


My main suggestions would be:
- count total war damage from all wars, not just the highest
- much faster war damage decay even while at war
if we stop sending our men into the meatgrinder for 10 turns, shouldn't they be happy?
- get rid of multiplying by "longest_war" completely
- signing peace shouldn't affect war weariness from other wars


I think a big part of what the current system is trying to achieve is to prevent forever-wars.
A more elegant approach would be that losses taken later in the war contribute more to war_damage.
Note that this isn't the same thing as the current system.
Here we would multiply the damage caused by a unit loss by some factor only once, on the turn that it happens, instead of multiplying by a rising factor every single turn.
This way if your war has lasted 40 turns already, losing a handful of units will hurt more than if the war lasted 20.
But it wouldn't magically start hurting even more on turn 41.


PS:
There's actually more to war_damage.
Besides the losses inflicted on us, it also includes 50% of the losses we inflicted on the enemy.
This needs to go.
Why are we punishing successful warmongers so severely?
 
War weariness needs to grow passively without damage, or else you can stay in a winning war indefinitely. That said, the current implementation has a lot of room for improvement.

A rough draft without numbers for how it should work:

Define a "war weariness score" for each team you're warring (the enemy).
  • This score increases when you suffer loss, or half as much when you inflict loss to the enemy. The Hunnic UA modifier applies here.
  • The score also increases by a tiny bit every turn.
  • These increments scale with the number of turns you've been in war with the enemy. Doesn't have to be linear.
  • This score never decays while you're still at war with the enemy, and is immediately reset to 0 when you make peace.
  • Display this on the UI alongside war score.
Now that we have a score for each player, we can calculate our "target war weariness" as follows:
  • Ignore the war weariness scores with teams we can't make peace with, or if they're AI major civ, ignore the scores if they haven't offered peace (or however that works currently).
  • Pick the highest war weariness score to use as our "target war weariness", modified by the number of teams at war with us
  • Display this somewhere on the UI so you know which team to make peace with if you want to reduce war weariness the most.
  • "War weariness reduction" from policies or other sources applies here.
Our "war weariness" gradually approaches our "target war weariness" using the current mechanism.
 
Last edited:
There's actually more to war_damage.
Besides the losses inflicted on us, it also includes 50% of the losses we inflicted on the enemy.
This needs to go.
Why are we punishing successful warmongers so severely?
For one, to make them take a breather and actually settle for peace.

This implementation was discussed extensively on these forums. Go take a look. Understand why it was implemented before unilaterally declaring that it needs to be changed.
 
My main suggestions would be:
- count total war damage from all wars, not just the highest
- much faster war damage decay even while at war
if we stop sending our men into the meatgrinder for 10 turns, shouldn't they be happy?
- get rid of multiplying by "longest_war" completely
- signing peace shouldn't affect war weariness from other wars
Yeah, completely agree.

War weariness needs to grow passively without damage, or else you can stay in a winning war indefinitely.
Why is that a problem?
 
Why is that a problem?
Name me a nation that has been in a long time period of a "winning war"

I think the only issue with War Weariness at the moment is the lack of UI (seeing). I quite frankly don't know the right way to measure war weariness. Maybe 1 score = 1 war protester? xd war weariness unhappiness should never outweight the number of citizens in empire...? idk there's so much things we can probably roleplay it to make it easier to see and visualize.

You get war weariness with each Civilization separately, but you eat the largest penalty of war weariness.
 
The reasons that most of these issues aren't really that noticeable in single player:
- you generally don't lose too much
- you can generally peace out whenever you want
- you're often in a bunch of fake wars that have no real consequences, but give you a chance to halve your war weariness

I would love if we could stop the AI from doing fake wars... and starting wars that serve no real advantage to them. Though it has improved somewhat, the AI still has a certain "random dice" aspect of them, that causes them to start wars that seem totally random and serve no reason. "I hate you, so I will declare war, even though I have zero chance of causing you harm, and in fact, you will be able to level up your units now without any negative effect on your end"

Making peace with the AI is still really gamey, anyone with a dozen games under their belt can play the AI to make peace. Most AI will peace out at some point if you just wait it out, while, like you said, a human would force a never ending war that would cripple you.

My suggestion:

The AI should never attack anyone with more military strength then themselves, UNLESS it's a co-op war OR the civ is already in a war with someone else.
The AI should never attack anyone if it's currently winning it's victory condition, unless that victory condition is conquest.
The AI should never enter war with someone it cannot realistically reach.
When war is decarded AGAINST you, your war weariness should decrease by 25%, and not increase for 5 turns + more by game speed.
If you declare war, your current war score should increase by 25%, and increase twice as much from all sources for 5 turns + more by game speed.
 
Last edited:
Why is that a problem?

From a realism and a game stand point, it's stupid.

If two nations are at war with each other in name only, for decades without any real combat, both sides wouldn't be crippled with negative war weariness. Both side would pretty much stop caring. A real life example of this is the Korean War. North and South Korea are still in war, though there has been no real combat for decades.
Right now, the AI is made to seek peace out at some point. If it was made to never seek peace or accept it if it is even slightly winning, the game wouldn't work, as we would have several never ending wars that would last for a hundred turns. The problem is, this is what a smart human would do with the current system.
 
If the player winning the war does not accrue war weariness, then there is no need for that player to ever make peace. We want the winning player to win, take their gains, then make peace..
 
who will eventually be filled with enough war weariness that he will feel compelled to stop.

Yes, but we are discussing changing how war weariness works, and how it's currently working.

Right now, if you don't do war things in a war (either side), it pretty much stays the same. (it decays in theory, but it's so slight not really), if you pound another nation into the ground it's weariness will be super high, while your own not so much.

You could pull back and wait it out for most of the game if you wanted to. The other natation's unhappiness will make the rest of the game unplayable for it.

The only reason this doesn't occur now, is because an AI, even a winning AI, will usually seek out peace at some point. The OP point is that humans don't seek out peace just because the game thinks it's time to do so.
 
What I am responding to is the complaint that the winning player takes war weariness for dealing damage in addition to receiving it.
 
Name me a nation that has been in a long time period of a "winning war"
So that's just a flavor. Not a strong argument in a gameplay discussion imho.
the game wouldn't work, as we would have several never ending wars that would last for a hundred turns.
How is that game not working? They could just attack each other freely and it would prevent them from trading. The rest of the game would just carry on. Making a peace would be to prevent attacking and to enable trading, but it's not needed to artificially force for a peace.

We want the winning player to win, take their gains, then make peace.
Why is that? Besides flavor mentioned earlier.

The OP point is that humans don't seek out peace just because the game thinks it's time to do so.
Yep. If a player want a forever war then why prevent him?
 
Last edited:
I don't see the point of artificially forcing peace.
Consider that currently warmongers are underperfoming.
I frequently see situations where an AI can take a good city but instead signs peace.
There is absolutely nothing a defeated enemy can offer me that's better than a core city.
I'm assuming the AI takes war weariness into account when considering peace.
If so, all we're doing here is hampering warmongers for no reason.
They can just resume the war in 10 turns, and what was accomplished by forcing the peace?
For an AI this can be a hurdle, 'cause they aren't always smart enough to attack the same weak target. They might attack a different, stronger neighbor instead.
For humans this is nothing but an annoyance.


If the community is adamant that even the enemy's losses should contribute to our war weariness, can we at least reduce it?
50% is way too high.
You're telling me that a soldier is equally upset about killing two bad guys as he is about seeing hiw own buddy blown up?
Your citizens at home can be upset about enemy casualties (especially civilians), but not even remotely close to how upset they are about their own sons and daughters being killed.


Another idea to consider is for war damage to increase not just from having units killed, but from units taking damage.
For example losing 99% hp would give you, say, 1/4 of war damage that losing that unit would.
This way you keep accumulating war damage even if you're crushing, but it's not as artificial.
The only situation where you wouldn't take any damage at all is if the enemy has literally no units at all and you're pounding their cities with range-promoted artillery.
Obviously the numbers might need some adjustment.

If you combine this with my other suggestion that damage taken later in the war hurts more, we start to see a system that actually makes logical sense, instead of things just magically getting worse and worse for no reason other than that you're crushing your mortal enemy.
And then magically starting to get better after turn 50!


So far only one person has acknowledged that the system is broken in multiplayer. Interesting.
No one has commented on the nonsensical situations either, like 5 wars magically hurting only 20% as much as one big war despite identical losses.
 
Name me a nation that stopped conquering because they felt bad for their enemies.
Not America that didn't want any more "overseas American territory"
So far only one person has acknowledged that the system is broken in multiplayer. Interesting.
No one has commented on the nonsensical situations either, like 5 wars magically hurting only 20% as much as one big war despite identical losses.
Yeah War Weariness isn't tested in multiplayer very often for someone to chime in.
 
Yep. If a player want a forever war then why prevent him?

In single player games, go for it. The OP was brining up multiplayer.

I know CPP isn't being balanced around multiplayer, though I think that seems to be changing?

Also, we are supposed to be making the AI play as much like how a player would, if the AI is playing to win it shouldn't seek peace out unless it's losing, in a long term stalemate, or the losing civ is offering vassalization. Right now the AI will usually seek out peace, even if winning, for game reasons, not for "optimal play" reasons.

I'm not saying it should be changed, but the point stands.
 
It is possible there simply isn't an option that works for both SP and MP. Although that doesn't mean it isn't worth trying.
 
Name me a nation that has been in a long time period of a "winning war"
1690917893985.png
 
They can just resume the war in 10 turns, and what was accomplished by forcing the peace?
10 turns is a lifetime. I can rebuild my pillaged forts and citadels, heal all of my troops back to full, rebuild an army, set up new forts and citadels, switch some CS over to my side for the next attack, let my cities heal back up.

Its a big deal.
 
I can say there is an alternative approach to war weariness we could consider. Instead of making it a happiness thing, make it purely a supply thing (which is already a factor of weariness). Have it so that as you war your supply starts to shrink more and more, eventually meaning you either can't field a full army anymore, or you suffer the big growth and production penalties. This already happens now just make it a stronger effect and remove the happiness part.

And while the defender would lose supply as well, ultimately defenders generally need less supply than the offense does, so there is a balance there.

That removes some of the thematic concern (aka why are my people upset for my people killing the enemy). Its more "war exhaustion", it just reflects that wars are very expensive and at some point your supplies start to dwindle, and you have to stop fighting to rebuild.
 
Top Bottom