Motivation:
The gold hurrycost formula is a bit complicated and consists of 4 different factors which are then multiplied together. It has some unexplained mechanics and becomes very powerful late game when combined with bonuses from Banks, Stock Exchanges, or Imperialism. The intent of this proposal is twofold
Gold Cost = 0.8 * (30 *
)0.68 * (1 + Tech%/2) * (1 + HurryCostModifier/100)
(All units have 0 HurryCostModifier except Spaceship Parts which have +25)
And for building/wonder investment:
Gold Cost = 0.6 * (30 *
)0.68 * (1 + Tech%/3) * (1 + HurryCostModifier/100)
(All buildings have -20 HurryCostModifier; all Wonders have -5)
What this essentially means is a few things
Proposal:
All purchase costs no longer scale with techs discovered. This mechanic is opaque, unintuitive, and is meant to act as an increaser for late game costs but is ineffective due to the nonlinear exponential costs of the "base price" formula
HurryCostModifiers for all buildings and wonders are changed to 0 (no increase or decrease). Another opaque mechanic that should be handled by the base price formula and not handled separately. Spaceship parts should also be reduced to 0 (they will be significantly more expensive without the sublinear scaling already).
Unit Purchase cost discount (aka arbitrary constant) changed from 0.8 to 1. There's no reason for all units to have an arbitrary 0.8x purchase cost modifier that doesn't even use the HurryCostModifier mechanic.
Building Purchase cost discount (aka arbitrary constant) changed from 0.6 to 0.5. This should be 0.5, since building investment reduces the cost in hammers by 50%.
Base hurry cost formula changed from (30 *
)0.68 to (2 *
). Linear cost scaling will negate the significantly increased efficiency of late game purchases. This is a very minor change for most early and midgame units, but starts to kick up to around +50% increase in industrial and eventually about +100% increase in Information era.
Graphs and data:
Since these changes are a bit difficult to understand without concrete numbers, I attached some graphs and data. Let me know if there are further questions on the existing mechanics, I can continue to provide clarification in the comments.
*Spaceship part less increased because of removed hurry cost modifier
Implementation Notes:
This consists of both SQL and DLL changes, but code changes are < 10 lines and I can sponsor implementation.
The affected files will be
The gold hurrycost formula is a bit complicated and consists of 4 different factors which are then multiplied together. It has some unexplained mechanics and becomes very powerful late game when combined with bonuses from Banks, Stock Exchanges, or Imperialism. The intent of this proposal is twofold
- Simplify the number of factors going into the calculation of how much it costs to rush buy something
- Rework the cost scaling to increase the costs for late game rush-buying.
Gold Cost = 0.8 * (30 *
)0.68 * (1 + Tech%/2) * (1 + HurryCostModifier/100)(All units have 0 HurryCostModifier except Spaceship Parts which have +25)
And for building/wonder investment:
Gold Cost = 0.6 * (30 *
)0.68 * (1 + Tech%/3) * (1 + HurryCostModifier/100)(All buildings have -20 HurryCostModifier; all Wonders have -5)
What this essentially means is a few things
- Researching new technologies increases purchase prices, but at a different rate for units and buildings
- Purchase prices for units are multiplied by 0.8 in almost all cases, but investment costs for buildings are multiplied by 0.48 in most cases
- The 0.68 exponent makes larger purchases significantly more efficient in terms of gold spent per production earned
- Wonders and buildings have different hurrycost modifiers, though wonders only invest 25%, and buildings 50%. Wonders also benefit from the nonlinear cost scaling above
Proposal:
All purchase costs no longer scale with techs discovered. This mechanic is opaque, unintuitive, and is meant to act as an increaser for late game costs but is ineffective due to the nonlinear exponential costs of the "base price" formula
HurryCostModifiers for all buildings and wonders are changed to 0 (no increase or decrease). Another opaque mechanic that should be handled by the base price formula and not handled separately. Spaceship parts should also be reduced to 0 (they will be significantly more expensive without the sublinear scaling already).
Unit Purchase cost discount (aka arbitrary constant) changed from 0.8 to 1. There's no reason for all units to have an arbitrary 0.8x purchase cost modifier that doesn't even use the HurryCostModifier mechanic.
Building Purchase cost discount (aka arbitrary constant) changed from 0.6 to 0.5. This should be 0.5, since building investment reduces the cost in hammers by 50%.
Base hurry cost formula changed from (30 *
)0.68 to (2 *
). Linear cost scaling will negate the significantly increased efficiency of late game purchases. This is a very minor change for most early and midgame units, but starts to kick up to around +50% increase in industrial and eventually about +100% increase in Information era.Graphs and data:
Since these changes are a bit difficult to understand without concrete numbers, I attached some graphs and data. Let me know if there are further questions on the existing mechanics, I can continue to provide clarification in the comments.
| Unit | Production | Old Cost | New Cost | Approximate Δ |
| Warrior/Slinger | 40 | 90-110 | 80 | -19.4% |
| Worker | 80 | 150-190 | 160 | -4.2% |
| Comp Bow | 110 | 230-250 | 220 | 1.2% |
| Knight/Galleas | 175 | 270-300 | 350 | 12.3% |
| Tercio | 300 | 470-500 | 600 | 27.9% |
| Fusilier | 625 | 820-860 | 1250 | 55.3% |
| Landship | 1000 | 1130-1170 | 2000 | 73.6% |
| Infantry | 1300 | 1440-1520 | 2600 | 75.3% |
| Tank | 1800 | 1940-2030 | 3600 | 81.6% |
| Modern Armor | 2500 | 2550-2750 | 5000 | 89.1% |
| Spaceship Part* | 8000 | 8600-8800 | 16000 | 84.9% |
*Spaceship part less increased because of removed hurry cost modifier
Implementation Notes:
This consists of both SQL and DLL changes, but code changes are < 10 lines and I can sponsor implementation.
The affected files will be
(2) Vox Populi/Database Changes/City/Buildings/BuildingSweeps.sql(2) Vox Populi/Database Changes/Units/UnitSweeps.sqlCvGameCoreDLL_Expansion2/CvCity.cpp( specificallyCvCity::GetPurchaseCost(...)(1) Community Patch/Database Changes/NewCustomModOptions.xml(for rewording the custom purchase cost balance options)
Last edited: