JediClemente
Prince
Have you ever, having more than 10 cities, conquered another city (not always to keep it; maybe for enforcing capitulation and giving it back) and seen your research cost increase dramatically?
While a 3 or 4-cities Netherlands is 5 techs ahead of you, and increasing?
This is what I refer to as the "static" part of the research penalty system: it doesn't matter if some or a lot of your cities give out a poor research. A war of conquest, even not to keep the cities a few turns later, having more than 13 cities, is a nightmare.
My idea: the penalty should depend on your research rate: the higher it gets, the more the research cost should be increased.
To begin with, the penalty will be calculated for having a research rate higher than 5 times (iMargin parameter) the base research on the capital.
The modifier (iMultiplier) will be 5 for the AI and 8 for the human player, as before. This is the extra % cost for techs.
Hm?
This means having as research rate for the total of your cities more than 2 times "5 * base research in capital", but less than 3 times that, will add an extra 16% to the current tech cost.
This penalty depends on having a lot of developed cities. Also, having Bureaucracy as civic won't affect, as it's the base research considered (or so I think, anyway, may be mistaken ).
With the idea introduced, it's a question of finding the optimal value for the iMargin parameter.
And that means testing. So if any voluntaries can put the edited DLL on the Assets folder (after making a backup of the older one!) of RFC and run some games (esp. American games, to see the tech level of all civs by 1775), it'd be great.
I also attach the edited CvTeam.cpp (the function is CvTeam::getResearchCost(TechTypes eTech)).
Edit1: the new DLL crashes the game. So I take it out until figuring out why.
Edit2: solved. Also, now the "more than 10 cities" is again taken into account, but just previously to apply the penalty, and doesn't influence it.
While a 3 or 4-cities Netherlands is 5 techs ahead of you, and increasing?
This is what I refer to as the "static" part of the research penalty system: it doesn't matter if some or a lot of your cities give out a poor research. A war of conquest, even not to keep the cities a few turns later, having more than 13 cities, is a nightmare.
Spoiler :
Looking at the actual code, let's make an example, because you may not notice completely during the game: it's worse for the human player than for the AI.
For 10 cities, you'd get your actual base cost for the tech (although other parameters affect it: namely the era, having certain techs already, or being in the last turns of the game).
For 11 cities: 8% extra cost for the human player, 5% for the AI.
For 13 cities: 24% extra cost for the human player, 15% for the AI.
For 18 cities: 64% extra cost for the human player, 40% for the AI.
As I remarked earlier, the problem isn't penalizing the higher number of cities, but doing so regardless of the nature of the cities; they may be unproductive.
And remember the more cities, the higher maintenance costs and civic upkeep = less money = less science.
For 10 cities, you'd get your actual base cost for the tech (although other parameters affect it: namely the era, having certain techs already, or being in the last turns of the game).
For 11 cities: 8% extra cost for the human player, 5% for the AI.
For 13 cities: 24% extra cost for the human player, 15% for the AI.
For 18 cities: 64% extra cost for the human player, 40% for the AI.
As I remarked earlier, the problem isn't penalizing the higher number of cities, but doing so regardless of the nature of the cities; they may be unproductive.
And remember the more cities, the higher maintenance costs and civic upkeep = less money = less science.
My idea: the penalty should depend on your research rate: the higher it gets, the more the research cost should be increased.
To begin with, the penalty will be calculated for having a research rate higher than 5 times (iMargin parameter) the base research on the capital.
The modifier (iMultiplier) will be 5 for the AI and 8 for the human player, as before. This is the extra % cost for techs.
Hm?
Code:
int iNumCities = GET_PLAYER((PlayerTypes)getID()).getNumCities();
int iMultiplier = 5;
if (GET_PLAYER((PlayerTypes)getID()).isHuman())
iMultiplier = 8;
int iMargin = 5;
int iResearchRate;
int iCapitalBaseResearch;
if (getID() < NUM_MAJOR_PLAYERS)
if(iNumCities > 10){
iCapitalBaseResearch = GET_PLAYER((PlayerTypes)getID()).getCapitalCity()->getBaseCommerceRate(COMMERCE_RESEARCH);
iResearchRate = GET_PLAYER((PlayerTypes)getID()).calculateResearchRate(eTech);
if( iResearchRate > iMargin * iCapitalBaseResearch){
iCost *= 100 + iMultiplier*( iResearchRate / (iMargin * iCapitalBaseResearch) );
iCost /= 100;
}
}
This means having as research rate for the total of your cities more than 2 times "5 * base research in capital", but less than 3 times that, will add an extra 16% to the current tech cost.
This penalty depends on having a lot of developed cities. Also, having Bureaucracy as civic won't affect, as it's the base research considered (or so I think, anyway, may be mistaken ).
With the idea introduced, it's a question of finding the optimal value for the iMargin parameter.
And that means testing. So if any voluntaries can put the edited DLL on the Assets folder (after making a backup of the older one!) of RFC and run some games (esp. American games, to see the tech level of all civs by 1775), it'd be great.
I also attach the edited CvTeam.cpp (the function is CvTeam::getResearchCost(TechTypes eTech)).
Edit1: the new DLL crashes the game. So I take it out until figuring out why.
Edit2: solved. Also, now the "more than 10 cities" is again taken into account, but just previously to apply the penalty, and doesn't influence it.