New Version - December 1st (12/1)

Status
Not open for further replies.
Every X turns is the most neutral thing I've heard so far. It only needs to be tuned for different game speeds.

So I'd support making the bonus for every X turns, if it can be adjusted for different paces.
Does it? If it was tuned for game-speeds you'd have to increase the yields by just as much, so you could just leave it untuned instead for the same average value
 
Does it? If it was tuned for game-speeds you'd have to increase the yields by just as much, so you could just leave it untuned instead for the same average value
You sure?

Let's say X turns is 10 turns in standard.
They are receiving iYieldHandicap every 10 turns. So for era =1 and 2, if it's around 4 * iHandicapBase, 20 yields in Deity.
If you can get to classical era in 80 turns in standard, and you reach there in 100 turns in epic, that's 40 yields more that every AI is receiving...

Now that I think of it, you all are always saying that the slower the pace, the easier for the player. So maybe it's not that bad that slower speeds give more help to AI.
 
You sure?

Let's say X turns is 10 turns in standard.
They are receiving iYieldHandicap every 10 turns. So for era =1 and 2, if it's around 4 * iHandicapBase, 20 yields in Deity.
If you can get to classical era in 80 turns in standard, and you reach there in 100 turns in epic, that's 40 yields more that every AI is receiving...

Now that I think of it, you all are always saying that the slower the pace, the easier for the player. So maybe it's not that bad that slower speeds give more help to AI.
And if it scaled with gamespeed you'd instead get 30 yields every 15 turn on epic pace, that averages out the same.
On one hand the AI gets the yields earlier, so that's better for them, on the other hand delayed yields means you're more likely to get a bigger payoff from the increase by era. Which would be more valuable?
 
And if it scaled with gamespeed you'd instead get 30 yields every 15 turn on epic pace, that averages out the same.
On one hand the AI gets the yields earlier, so that's better for them, on the other hand delayed yields means you're more likely to get a bigger payoff from the increase by era. Which would be more valuable?
I see.

So no further scaling. Actually, this is pretty clean, isn't it? Trigger this bonus every 5 or 10 or 20 turns. A bonus that scales on era by a quadratic rule, following human progress. I hope that it scales well on different settings.
 
I think a bonus every X turns would make the game much less interesting, as it is very predictable by the player (e. g., never declare war on an AI in the turn before it gets a bonus, so that the bonus runs into his buildings and not into the units he might change his production to upon entering war, or time the research of Printing Press just before an AI bonus turn to have a higher chance to found the world congress). Also, the good thing about the current "trigger" system is that it somewhat scales with general game pace: E. g. on water-heavy maps, overall development is slower due to less good settling space, and this is reflected by the AI handicap because it can found less cities, reaches new eras slower etc. With a constant bonus system, AI handicap would be constant, regardless if it doubles their income or gives only +20%. Of course, the current system still allows for easier and harder map types and settings, but I think the proposed one would make it worse.
 
I see.

So no further scaling. Actually, this is pretty clean, isn't it? Trigger this bonus every 5 or 10 or 20 turns. A bonus that scales on era by a quadratic rule, following human progress. I hope that it scales well on different settings.
The problem with this method is that it artificially keeps the AI in the game. A civ doing nothing gets the same yields as a civ doing well. I like the triggers, and just think they should be tuned. Triggers should be either playstyle neutral or balanced (some wide some tall) but the AI should need to do SOMETHING to get it's bonuses.
 
I don't think I understand the code and equations that are being tweaked well enough to chime in on them, and I certainly trust that you guys will figure those out. However, I do want to chime in on the end-goal of making these tweaks:

I think the biggest thing that ruins games currently are single run-aways, which can be both a crazy AI runaway or a player runaway. The best games are the ones where you really aren't sure you will win until you finally do (or don't) on the last few turns. Games where you finally meet all the civs of another continent to find that Ghengis has eaten half the AI and is 15 techs and 4 policies ahead of everyone else aren't terribly satisfying, nor are games where the player is able to do the same. So if anything I would say to include more rubber-band effects for the AI to catch up if they are behind and to reduce the number of bonuses that a runaway AI can get.

For instance, if you have a bonus that is given to the AI for advancing to a new era I would suggest that the bonus scales with how many other civs have already advanced such that the civs that are behind get increasing rewards to help them stay competitive. I would also suggest tamping down on bonuses for things that a runaway civ tends to do, like completing wonders, completing policies, etc. I know that there are already many ways for civs that are behind to catch up (tech costs get cheaper the more other civs have researched them, spying, trade routes, world congress resolutions, etc) and ways to try to slow down runaways (ever increasing policy costs, increasing wonder productions costs, etc) but it seems like runaways are still a pretty common occurrence. I think a game where there are multiple relevant civs in the end game are way way way more interesting and dynamic than when it comes down to just the player and maybe a runaway that the player is trying to catch (or worse, when the player is the runaway in which case the game is just over).

I also wonder if some of the catch-up mechanics currently don't work quite as intended if there is just a single big runaway. For instance, I could see the tech cost reduction the more other civs have researched a tech not quite working as intended. If just a single runaway is, say, 10 techs ahead of everyone else then for the most part all of the other civs are usually just getting a tech cost reduction for just a single civ being ahead of them, whereas if there is a single civ that is 10 techs behind everyone else then that single civ will constantly have a huge reduction. I don't think it matters all that much if one single civ has become irrelevant, I think the bigger problem is when one single civ has become a huge runaway. And yet, the tech cost reduction probably doesn't help alleviate the 1 runaway situation very well.

So long story short, I think I dislike the idea of purposely creating a single runaway AI civ to push the player. I would much prefer a game where most of the civs are clustered together and even a civ that starts slow or has initial setbacks can still be somewhat relevant (maybe not win, but maybe still have an impact on the game).

Also, while I would agree that using real history isn't always the best idea when making game play choices, our own history shows that empires/countries can rise, fall, and rise again. Runaways in history don't stay runaways forever (Rome, Mongols, England, Germany, etc etc etc).
 
About the trigger every X turns, keep in mind that it isn't mutually exclusive with other possible triggers. You can have a hybrid system, yields dilluted as needed.

I think a bonus every X turns would make the game much less interesting, as it is very predictable by the player (e. g., never declare war on an AI in the turn before it gets a bonus, so that the bonus runs into his buildings and not into the units he might change his production to upon entering war, or time the research of Printing Press just before an AI bonus turn to have a higher chance to found the world congress). Also, the good thing about the current "trigger" system is that it somewhat scales with general game pace: E. g. on water-heavy maps, overall development is slower due to less good settling space, and this is reflected by the AI handicap because it can found less cities, reaches new eras slower etc. With a constant bonus system, AI handicap would be constant, regardless if it doubles their income or gives only +20%. Of course, the current system still allows for easier and harder map types and settings, but I think the proposed one would make it worse.

About the player exploting timing, the current system has bigger ways to exploit. Right now, wonderwhoring is powerful for the player, especially those like Uffizi and Globe Theather, even if we aren't aiming at a cultural victory. And that's because completing them means denying historic event triggers, especially if the wonder triggers multiple with free great people. You also assume that X has to be a large interval, which can be adjusted by toning down the yields per trigger as needed.

Having the trigger be every X turns doesn't mean it has to be exactly at that specific turn either; you could have it as a "trigger planned every X, activate randomly at plus or minus Y, plan next trigger as if Y had been 0", to add some unpredictability for a player trying to time his or her decisions around the trigger system.

Agree on the map part.

The problem with this method is that it artificially keeps the AI in the game. A civ doing nothing gets the same yields as a civ doing well. I like the triggers, and just think they should be tuned. Triggers should be either playstyle neutral or balanced (some wide some tall) but the AI should need to do SOMETHING to get it's bonuses.

Gazebo tests the AI without handicaps, so we can assume every AI is always trying to do something without bonuses in mind. I don't expect any AI to be actively chasing the bonuses of the current triggers; as far as I know, they just treat trigger bonuses as some random event that dropped from nowhere.

That could also explain why many AI seem to fail to recover from the bottom. They have no idea that whatever path they're doing now does not take advantage of the trigger system (e.g. aggressively spread their religion, compete for city-states), while the runaway may just happen to have decided for a path that does (e.g. reckless expansion, tall wonderwhoring, annexing city-states).
 
The problem with this method is that it artificially keeps the AI in the game. A civ doing nothing gets the same yields as a civ doing well. I like the triggers, and just think they should be tuned. Triggers should be either playstyle neutral or balanced (some wide some tall) but the AI should need to do SOMETHING to get it's bonuses.

I disagree. The AI is getting those bonuses for not having human-level foresight. It doesn't suddenly stop not having human-level foresight because it doesn't do well. The bonuses should be success neutral. The point of the bonuses is to compensate for the difference between having human-level foresight and not having it. They should be largest for where human-level foresight is most advantageous (war and diplomatic matters), and smallest where human-level foresight has no real advantage or only limited advantage (assigning Citizens to work tiles, arguably).

Several people have raised the idea of just rewards every X turns. I've thought about this and I think it has problems, because it isn't playstyle neutral. If I have 10 cities, a bonus 600 Gold Yield is a lot less useful than if I have 4 cities. A fixed yield considering only era and difficulty that triggers every few turns is not playstyle neutral, it favours tall.

I also think it sort of misses the point. Some stuff the AI is very good at and doesn't need bonuses for. The intent of the bonuses is to help them where they're less good. That's why there are bonuses on founding a City.

Consider a Tall AI and a Tall Player. The Tall Player won't found many cities. The Tall AI won't found many cities either. So the Tall AI isn't losing much relative to thee Tall Player for poor city placement. They don't need a bonus (for this specific thing), or at least, it only needs to be relatively small.

Consider a Wide AI and a Wide Player. The Wide Player will found a lot of cities. The Wide AI will also found a lot of cities. Players are much better at city placement than AI. So the Wide AI is losing a lot relative to the Wide Player, and they do need a fair amount of bonuses.

That's why it is good to have bonuses for specific actions, and not per turn. Founding a City is an example of one of those specific actions. We are targeting those bonuses at areas wher ethe AI's decision-making is not on par with the player's.

I agree with @Gazebo's concerns about snowballing, but this is only helping the AI match the player. If the AI can snowball with these bonuses, which are intended to restore them to player-level, then the player must be capable of snowballing without those bonuses but using that playstyle. That's clearly a separate problem which needs fixing.
 
Things, as usual, are getting way too complicated. Scaling quadratic yields over turns while compensating for game speed and event triggers or opportunity cost models? That’s too much. If the AI understood opportunity costs it would already be a human.

Let’s stick with the model I already posted. The formula was transcribed wrong (I haven’t even put it in code yet). I’ll fix it.

G
 
Nice!
I would go with a little over 1.0, like 1.1 or even 1.2 and negative b (-0.4 to -0.7). That way it is more or less the same in mid-eras, but will speed up in late game. From my games I see that AI really must speed up in late-game.

Decimals don't play well with yields, as yields aren't measured in decimals. There'd be a lot of rounding and it just won't create the numbers you want.

G
 
Decimals don't play well with yields, as yields aren't measured in decimals. There'd be a lot of rounding and it just won't create the numbers you want.
G
I'd be ready for future tuning, and I'm guessing it will require decimals anyway, especially a. It is a huge impact between 1 and 2, and 3.
Simple trick to minimize rounding errors: change the formula to: d * (a * era^2 + b * era + c) / 100 and define all params as *100. You can use integers all around. Initially, with small numbers, that not matter, but in time they will have desired impact on the final result.
 
The problem with this method is that it artificially keeps the AI in the game. A civ doing nothing gets the same yields as a civ doing well. I like the triggers, and just think they should be tuned. Triggers should be either playstyle neutral or balanced (some wide some tall) but the AI should need to do SOMETHING to get it's bonuses.
A civ not doing well is not going to be artificially kept in the game. There are other AI playing too, you are playing too. If you do better that the civ that is not doing well, it will fail.
Several people have raised the idea of just rewards every X turns. I've thought about this and I think it has problems, because it isn't playstyle neutral. If I have 10 cities, a bonus 600 Gold Yield is a lot less useful than if I have 4 cities. A fixed yield considering only era and difficulty that triggers every few turns is not playstyle neutral, it favours tall.
Could be. Then it makes sense to be added to some wide bonuses.
 
Last edited:
I'd be ready for future tuning, and I'm guessing it will require decimals anyway, especially a. It is a huge impact between 1 and 2, and 3.
Simple trick to minimize rounding errors: change the formula to: d * (a * era^2 + b * era + c) / 100 and define all params as *100. You can use integers all around. Initially, with small numbers, that not matter, but in time they will have desired impact on the final result.

I know. That’s how the entire DLL is built (scaling off of hundreds). I’m just trying the easiest solution first.

G
 
Scaling quadratic yields over turns while compensating for game speed and event triggers or opportunity cost models? That’s too much.
You're right. Problem is that if you later change the triggers, the values will have to be changed again.
I’ll fix it.
Nice!
Leader has 12 techs, 5 policies, 5 cities, 42 citizens, 1 wonder, +35GPT
Worst has 9 techs, 4 policies, 3 cities, 18 citizens, 0 wonders, +2 GPT
Could I ask which values you are using for this?
 
You're right. Problem is that if you later change the triggers, the values will have to be changed again.

Nice!

Could I ask which values you are using for this?

The values in that desmos calculator.

Turn 152 (840AD) - leader has 36 techs, 15 policies, 5 wonder, 5 cities, 96 citizens.
Loser has 27 techs, 9 policies, 1 wonder, 3 cities, 48 citizens

G
 
Status
Not open for further replies.
Back
Top Bottom