Math of Freeciv
From Freeciv
Here are formulas that are used by FreeCiv to calculate some things, presented in a form better for mathematicians.
Contents |
[edit] City development
[edit] Food box
The amount of food needed is equal to:?????
When you add a settler the food in the foodbox is kept. With a granary the foodbox will be half full when the city is decreased because of starvation, but when you grow a settler the foodbox will be empty(?). When you add a settler you will not gain half a foodbox
[edit] Production
Gold needed to finish production (
- shields left to produce):
Multiply these values by 2 if there is no shield in the city stock (
- cost in shields):
[edit] City health
[edit] Settings
The health of a city is defined by the possibility of an illness (plague). The following ruleset options are available in game.ruleset, section [civstyle]:
; Whether plagues (illness) are possible illness_on = 0 ; the base factor for illness (of percent) illness_base_factor = 25 ; minimum city size for illness illness_min_size = 3 ; factor for how much trading with a plagued city increases our city's ; chance for plague (in percent) illness_trade_infection = 50 ; factor for how much pollution within a city increases its chance for ; plague (in percent) illness_pollution_factor = 50
Furthermore for the aqueduct and the sewer system an health effect is defined:
[effect_aqueduct_health]
name = "Health"
value = 50
reqs =
{ "type", "name", "range"
"Building", "Aqueduct", "City"
}
[effect_sewer_system_health]
name = "Health"
value = 30
reqs =
{ "type", "name", "range"
"Building", "Aqueduct", "City"
"Building", "Sewer System", "City"
}
The possibility of an illness is reduced by <value> percent defined by the effect Health
[edit] Equations
The possibility of an illness is given by a base value, illness due to trade infection and illness due to pollution.
The base illness value depends on the city size and is given by
This function starts at 0 for size = 0 and goes asymptotic to its maximum value (illness\_base\_factor).
If a trade city had an illness within the last 5 turns the illness is increased by
Pollution also increases the illness:
[edit] Example
Taking into account a city size of 1 to 50, a pollution level which equals six times the city size (pollution = 6 * size) and four trade cities of size 10 the illness possibility of the city is given in the following table (in percent).
| # | (illness) | aqueduct | aqueduct + sewer system | ||||||
|---|---|---|---|---|---|---|---|---|---|
| base | +trade | +pollution | base | +trade | +pollution | base | +trade | +pollution | |
| 5 | 9.800 | 11.200 | 12.700 | 4.900 | 5.600 | 6.350 | 1.960 | 2.240 | 2.540 |
| 10 | 15.800 | 17.800 | 20.800 | 7.900 | 8.900 | 10.400 | 3.160 | 3.560 | 4.160 |
| 15 | 19.400 | 21.800 | 26.300 | 9.700 | 10.900 | 13.150 | 3.880 | 4.360 | 5.260 |
| 20 | 21.600 | 24.400 | 30.400 | 10.800 | 12.200 | 15.200 | 4.320 | 4.880 | 6.080 |
| 25 | 22.900 | 26.100 | 33.600 | 11.450 | 13.050 | 16.800 | 4.580 | 5.220 | 6.720 |
| 30 | 23.800 | 27.300 | 36.300 | 11.900 | 13.650 | 18.150 | 4.760 | 5.460 | 7.260 |
| 35 | 24.200 | 27.900 | 38.400 | 12.100 | 13.950 | 19.200 | 4.840 | 5.580 | 7.680 |
| 40 | 24.500 | 28.500 | 40.500 | 12.250 | 14.250 | 20.250 | 4.900 | 5.700 | 8.100 |
| 45 | 24.700 | 28.900 | 42.400 | 12.350 | 14.450 | 21.200 | 4.940 | 5.780 | 8.480 |
| 50 | 24.800 | 29.300 | 44.300 | 12.400 | 14.650 | 22.150 | 4.960 | 5.860 | 8.860 |
[edit] Migration
[edit] Settings
Migration between cities is controlled by the following game settings. They can be changed by using the set server command. help <setting> will give you more information.
- migration - Whether to enable citizen migration (default: 0 = off)
- mgr_turninterval - Number of turns between migrations from a city (default: 5; min:1; max: 100)
- mgr_foodneeded - Whether migration is limited by food (default: 1 = on)
- mgr_distance - Maximum distance citizens may migrate (default: 3; min: 1; max: 7)
- mgr_nationchance - Percent probability for migration within the same nation (default: 50; min: 0; max: 100)
- mgr_worldchance- Percent probability for migration between foreign cities (default: 10; min:0; max: 100)
[edit] Equations
Helper function to calculate a "score" of a city. The score is used to get an estimate of the "migration desirability" of the city. The higher the score the more likely citizens will migrate to it.
The score depends on the city size, the feeling of its citizens, the cost of all buildings in the city, and the surplus of trade, luxury and science.
The last four factors f have values between 1 and 1.2; the overall factor will be between 1.0 (smaller cities) and 2.0 (bigger cities)
[build shield cost], [city surplus trade], [city surplus luxury] and [city surplus science] must be >= 0!
The score of the source city is multiplied by 3 to take into account the persistence of the citizens.
The score of the target city is weighted by the distance between both cities. The weight factor is calculated as
[edit] Example
For the following three city the migration score is calculated:
| city characteristics | |||
|---|---|---|---|
| city 1 | city 2 | city 3 | |
| city size | 17 | 5 | 3 |
| citizens (happy/content/unhappy/angry) | 7/9/1/0 | 1/4/0/0 | 0/3/0/0 |
| city has a wonder | yes | yes | no |
| city is capital | yes | no | no |
| effect Migration_Pct | 30 | 0 | 0 |
| build shild cost | 2500 | 1000 | 250 |
| city surplus (trade/luxury/science) | 62/16/15 | 10/2/5 | 6/0/6 |
| distance | |||
| city 1 | - | 3 | 5 |
| city 2 | 3 | - | 3 |
| city 3 | 5 | 3 | - |
| calculated values | |||
| city 1 | city 2 | city 3 | |
| city size | 17.000 | 5.000 | 3.000 |
| feeling | 6.750 | 1.000 | 0.000 |
| factor: wonder | 1.250 | 1.250 | 1.000 |
| factor: capital | 1.250 | 1.000 | 1.000 |
| factor: effect Migration_Pct | 1.300 | 1.000 | 1.000 |
| factor: build shield cost | 1.184 | 1.126 | 1.044 |
| factor: surplus trade | 1.092 | 1.019 | 1.012 |
| factor: surplus luxery | 1.030 | 1.004 | 1.000 |
| factor: surplus science | 1.028 | 1.010 | 1.012 |
| basic city score | 66.044 | 8.726 | 3.208 |
| weight: distance city 1 | - | 0.625 | 0.375 |
| weight: distance city 2 | 0.625 | - | 0.625 |
| weight: distance city 3 | 0.375 | 0.625 | - |
| migration checks | |||
| source city / target city | city 1 (source) | city 2 (source) | city 3 (source) |
| city 1 (target) | - | 26.179 / 41.2773 | 9.623 / 24.7664 |
| city 2 (target) | 198.131 / 5.4539 | - | 9.623 / 5.4539 |
| city 3 (target) | 198.131 / 2.0048 | 26.179 / 3.2076 | - |
Migration will take place from city 2 to city 1 and from city 3 to city 1 with the possibility given in the corresponding game settings (mgr_nationchance and mgr_worldchance).
[edit] Trade
Trade route revenue generated every turn in cities: (
= trade production in the city 1,
= trade production in the city 2. These values doesn't include the extra trade revenues from other trade routes
- With yourself, on the same continent:
- With an other player, on the same continent:
- With yourself, on an other continent:
- With an other player, on an other continent:
- With experimental trade route revenues (on Warserver):
Caravan bonus, the gold and science you get when establishing a new trade route: (
= trade production (including trade routes revenues) in the city 1,
= trade production in the city 2,
= real distance between the cities):
The possession of the technologies Railroad and Flight each reduces the bonus by
. Then:
- You have one of this technologies:
- You have two of this technologies:
- With experimental caravan bonus style (on Warserver):
Bonus from a caravan, when it enter in a existent trade place, you get only
of the bonus: (
- trade production in the city 1,
- trade production in the city 2,
- real distance between the cities):
The possession of the technologies Railroad and Flight each reduces the bonus by
. Then:
- You have one of this technologies:
- You have two of this technologies:
- With experimental caravan bonus style (on Warserver):
These formulas are the base of the calculation. Different governments output different amounts of trade in each city. Republic and Democracy get a +1 trade bonus in tiles that are generating trade, so usually, you will make a lot more profit under these governments. Monarchy and Communism get the +1 trade bonus only if they are celebrating.
[edit] Science
Technology cost formula depends on several game settings: techcoststyle, researchcost, techcostdoubleyear, techleackage, techleackagerate. There might be differences between calculated values and real-game ones due to rounding to integers in several places.
- Future techs: calculated like common techs with techcoststyle=0.
- Common techs:
- If techcoststyle=2, ruleset might set its own values, not calculated by FreeCiv. For the techs not overrided by the ruleset, cost is calculated like if techcoststyle=1.
- If techcoststyle=1 (the default case),
, but not less than researchcost.
is number of all (including already researched) technologies required by given tech.
- If techcoststyle=0, to discover nth technology you need
(like in Civilization I/II games).
Additional rules.
- If techcostdoubleyear parameter is not zero, cost doubles starting from this year.
- If techleakage parameter is not zero, you get bonus when other players already have developed the tech. The formula is:
, where
is total number of players and
is:
- number of players that know the technology and you have embassy, when techleakage=1,
- number of players that know the technology, when techleakage=2,
- number of players that know the technology, excluding barbarian players, when techleakage=3 (in this case total number of players is calculated without barbarians too).
- Note:
is a Warserver setting. On standard server,
.
- For AI players there might be a penalty/bonus depending on AI skill.
- If the calculated cost is zero, the real cost is 1 bulb.
[edit] Getting tech without research
You can get techs, when you conquer a city, use a diplomat, or from Great Library. The chances and costs of this is decided by server settings conquercost, diplochance, freecost etc.
[edit] Research
You can research either by science out put from your trade income, or by using Specialists when your cities are at size 5 or above.
| Specialists | Default output | With library | With university |
|---|---|---|---|
| 1 scientists | 3 bulbs | 6 bulbs | 10 bulbs |
| 2 scientists | 6 bulbs | 12 bulbs | 21 bulbs |





















