Map size scaling

Gazebo, is it possible to incorporate the war weariness mechanic into the combat penalty?

Something like:
iResistance = warWeariness/totalHappiness*(1+GetFractionOriginalCapitalsUnderControl())

I guess this would also need some getTotalHappiness function though to get the total happiness produced for a civ(not nethappiness!). Surely, there is a function like that? I don't know enough syntax to make this code :cringe:

The idea is to make war weariness a factor that would scale in all maps and sizes through the use of a ratio to total happiness. Still, it probably needs a constant somewhere and some plotting to make it better, but I would really love an implementation of this sort. This makes war weariness a bigger problem than capitals, so that there is some leeway with capital capturing (but something to be really wary of!).

Because right now the combat penalty just from capitals is more annoying than an actual thing to worry about as CrazyG said about vassaling.
 
Last edited:
Gazebo, is it possible to incorporate the war weariness mechanic into the combat penalty?

Something like:
iResistance = warWeariness/totalHappiness*(1+GetFractionOriginalCapitalsUnderControl())

I guess this would also need some getTotalHappiness function though to get the total happiness produced for a civ(not nethappiness!). Surely, there is a function like that? I don't know enough syntax to make this code :cringe:

The idea is to make war weariness a factor that would scale in all maps and sizes through the use of a ratio to total happiness. Still, it probably needs a constant somewhere and some plotting to make it better, but I would really love an implementation of this sort. This makes war weariness a bigger problem than capitals, so that there is some leeway with capital capturing (but something to be really wary of!).

Because right now the combat penalty just from capitals is more annoying than an actual thing to worry about as CrazyG said about vassaling.

I'm extremely wary of calling happiness functions any more than I absolutely have to. Very expensive.

G
 
That will actually increase the penalty, just to note, as you don't count your _own_ capital (so the value will even higher, making @CrazyG sad).
It went without saying, iHandicap needs to lower its multiplier to get the same end penalty. Currently, it is multiplied by 10.

In standard map, currently by the last fight, iFraction is 6/8, and iHandicap is multiplied by a flat 10, among other variables. So the last fight has a multiplied constant value of 60/8.

If we change iFraction in a way that the final penalty is the same for all map sizes (in order to achieve this, iFraction = iOCCount / (iCivCount - 2), one for our capital, one for the last standing opponent), in standard map it will be 6/6. For iHandicap to value the same in standard, it needs to be multiplied by 60/8. (instead of the current 10).

So, for standard nothing changes. The other map sizes will scale better.
 
Last edited:
It went without saying, iHandicap needs to lower its multiplier to get the same end penalty. Currently, it is multiplied by 10.

In standard map, currently by the last fight, iFraction is 6/8, and iHandicap is multiplied by a flat 10, among other variables. So the last fight has a multiplied constant value of 60/8.

If we change iFraction in a way that the final penalty is the same for all map sizes (in order to achieve this, iFraction = iOCCount / (iCivCount - 2), one for our capital, one for the last standing opponent), in standard map it will be 6/6. For iHandicap to value the same in standard, it needs to be multiplied by 60/8. (instead of the current 10).

So, for standard nothing changes. The other map sizes will scale better.

I don't understand how you got your values. ihandicap raises combat penalty like a percentage. I'm not sure of the specific values of getAIdifficultybonus(), but a value like 8 will raise iResistance by 180%, not a 1000%. iResistance also halves
GetFractionOriginalCapitalsUnderControl(), so a value like 6/8 will be 3/8 and then iHandicap of something like 180% will then make it like 67.5% penalty.

Why do you want the final penalty to be the same in all maps and sizes? That is just too problematic with all these variables. iFraction = iOCCount / (iCivCount - 2) probably will cause a divide by 0 when taking the enemy capital in a duel map, which is not good.
 
I don't understand how you got your values. ihandicap raises combat penalty like a percentage. I'm not sure of the specific values of getAIdifficultybonus(), but a value like 8 will raise iResistance by 180%, not a 1000%. iResistance also halves
GetFractionOriginalCapitalsUnderControl(), so a value like 6/8 will be 3/8 and then iHandicap of something like 180% will then make it like 67.5% penalty.

Why do you want the final penalty to be the same in all maps and sizes? That is just too problematic with all these variables. iFraction = iOCCount / (iCivCount - 2) probably will cause a divide by 0 when taking the enemy capital in a duel map, which is not good.

Well I'd control for a divide by zero with a Max(1, x) statement, so don't worry about that. :D

G
 
I don't understand how you got your values. ihandicap raises combat penalty like a percentage. I'm not sure of the specific values of getAIdifficultybonus(), but a value like 8 will raise iResistance by 180%, not a 1000%. iResistance also halves
GetFractionOriginalCapitalsUnderControl(), so a value like 6/8 will be 3/8 and then iHandicap of something like 180% will then make it like 67.5% penalty.

Why do you want the final penalty to be the same in all maps and sizes? That is just too problematic with all these variables. iFraction = iOCCount / (iCivCount - 2) probably will cause a divide by 0 when taking the enemy capital in a duel map, which is not good.
If you read how iHandicap is calculated, there's iFraction * other variables * 10. And then it's multiplied by another variable.
If iFraction is going to be higher in order to scale properly, that 10 can be downscaled in the same proportion to make the end combat penalty the same among different map sizes (I think this number is 60/8, if you like it integer it could be 7 or 8). Just changing how that proportion is calculated. In a standard map nothing changes.

Why, you ask? Because extension is already controlled by the science and culture cost per city penalty, so any advantages due to size are already taken into account. The combat penalty is there just to make up for the combat ability of players, and their skills don't vary among maps, then combat penalties should be comparable.
If ever, you could argue that smaller maps need stronger penalties, but others argue that the bigger the map, the bigger the army you can gather, but again, there are more cities to conquer, more unhappiness to endure. Currently, bigger maps have bigger penalties. What I'm proposing is making the starting and ending combat penalty the same across all map sizes. (it varies with difficulty too, but it's the same). I believe this will balance authority among map sizes too.

About division by zero, that's avoidable with a if (IOCCount) then...
Meaning that you only do the division when number of captured cities is different than zero.
Or simply making cases
If iCivCount < 3 then iFraction = arbitrary number #proportion set just for duel#
else iFraction = iOCCount / (iCivCount - 2)

I know it's a bit obscure to explain. This is taking much longer than I expected.

Edit. Perhaps it's more clear (clearer?) to modify in iResistance = XXX / 2.
Change it for
iResistance = XXX * 6 / 16.
Lowering iResistance the same as iFraction is increased.
 
Last edited:
Let's recapitulate.

How do you guys feel about the following?

1. Culture and science costs per owned city:
1.a All map sizes 8%
1.b Duel to Standard 8%; Large 9%; Huge 10%
1.c Duel to Standard 8%; Large 10%; Huge 12%

a is ok if players are going to increase density manually to equate other map sizes. c is appropiate for the default. b is in between.
@ElliotS. I owe you an apology. It seems that your intuition was right. Sorry for doubting.

2. Combat penalty per captured capital (it also scales on difficulty):
2.a Current. Smaller maps have smaller penalties in the last fight.
2.b Scale penalty so all map sizes have the same penalty in the last fight.
2.c Smaller maps should have bigger penalties (?).
I was advocating for b.

3. Just for Duel against AI, what should be the combat penalty proportion?
3.a Nothing
3.b Half
3.c Full

I think it should be b at least, or there would never be a combat penalty, regardless of difficulty.
 
a b a for me
(a because map script can change density anyway, let the player decide what is best. It's more a 'map script config / default options' conflict imo)
(b because i like scaling)
(a because the player has done nothing to warrant a malus)
 
1a (map script can change density too much, and not scaling is simpler to understand)
2b
3a
 
1- I'm going to go with A and settle for a slight buff to wide on huge maps without hurting tall too much. Also Science victory is better on huge.
2- b
3- a
 
1 - a (I'm already used to scaling # of Civs to match Standard density for Large and Huge maps)
2 - b
3 - No opinion, as I never play Duel, but I understand why people would prefer 'a' as it requires no additional explanation for new players
 
After playing multiplayer on Tiny maps a few times, I'm 100% sure that the scaler needs to be reduced to 8%.

Deity-level players playing authority consistently leave good city locations unsettled after hitting 4-6 cities on Tiny. (12% currently.) This is just dumb. We're going to correct it on our own for next week, but I feel certain that it's very wrong right now.
 
Now that it's been 5 months, how is everyone feeling the map size scaling? This thread had a consensus for flat scaling, although Gazebo decided against it.

How has turns-to-victory changed with map size? One would think that larger maps leading to more cities per civ (specifically warring civs, given proportional 12 civs in Large and 24 civs in Huge, all civs with standard settings), leading to more raw and instant yields, leads to faster bucket filling and faster than anticipated games, even accounting for the idea that Large pairs with Epic speed, and Huge with Marathon speed. I guess that the main difference is that in order for a given civ to control the same percentage of land on a larger map, more effort needs to be put into building and maintaining a larger military force? Are there any other mitigating factors?
 
Last edited:
The expectation for large and huge map sizes is for each civ to have more cities, right? The issue with this is that each additional city increases the speed at which culture and science is gained. ElliotS wanted to, therefore, increase the cost per additional city to counteract this. However, this has the side effect that civs won't want to have additional cities do to the steep extra costs.

Wouldn't a better idea be that research and culture base costs increase with map size? This way, tech and culture cost increases-per-city can be reduced with the larger map sizes, encouraging more cities while turns-to-victory remains constant. You would, of course, increase the cost per city for the smaller city sizes while decreasing the base cost.
 
Last edited:
while turns-to-victory remains constant.
I don't think this is a worthwhile balance concern as long as it's not SUPER off (I don't think it is.)

The question is tall vs. wide. While in Standard size tall is at a slight disadvantage (as it should be) in huge it feels near-suicidal. Large/Huge maps make expansionist gameplay required and reduce gameplay variety.
 
I don't think this is a worthwhile balance concern as long as it's not SUPER off (I don't think it is.)

The question is tall vs. wide. While in Standard size tall is at a slight disadvantage (as it should be) in huge it feels near-suicidal. Large/Huge maps make expansionist gameplay required and reduce gameplay variety.

Would you say that small is the map size where tall and wide are most balanced then? Assuming a peaceful game - I understand that warmongering is what benefits the most from smaller maps. Or is tall at an advantage on small maps? Personally I don't like large maps and would prefer a good tall-wide balance. Tradition tall feels a bit too weak on standard maps, the AI runaways are nearly always wide progress empires in my games.
 
Would you say that small is the map size where tall and wide are most balanced then? Assuming a peaceful game - I understand that warmongering is what benefits the most from smaller maps. Or is tall at an advantage on small maps? Personally I don't like large maps and would prefer a good tall-wide balance. Tradition tall feels a bit too weak on standard maps, the AI runaways are nearly always wide progress empires in my games.
Standard-Standard seems to work best.
 
Top Bottom