Node:New Town Growth Switches (details), Previous:TTD Town Growth, Up:New Town Growth Mechanism
This section describes the switches that apply in "towngrowthratemode 2". They fine tune and control every detail of town growth.
As described in the previous section, TTD internally uses an inverse growth rate, i.e. the number of 70-tick time units between attempts to build a new house. However, the enhanced rate calculation uses a direct growth rate, defined as the average number of new town buildings per 38400 time units, which is approximately 100 years. At the end of calculations this rate is converted to the inverse growth rate. If the inverse growth rate is greater than 255, it's reduced and town growth is blocked randomly to have the same effect on the average.
For comparison, with "towngrowthratemode 0" (TTD's original calculation), the rates are:
number of | average rate
|
active stations | (new houses per 100 years)
|
0 | 20
|
1 | 182
|
2 | 256
|
3 | 349
|
4 | 480
|
or, if a building fund is active, the rate is fixed at 640 new houses per century. These rates are as they're normally in TTD, except that a bug with 5 or more stations (see the previous section) is fixed.
For the new growth rate calculation,
we have the maximum and minimum rate, the towngrowthratemin
and
towngrowthratemax
switches. Let ratediff be the difference between the
maximum and the minimum, i.e.
ratediff = towngrowthratemax - towngrowthratemin
Then the base rate delta multiplier (BRDM) is calculated as follows:
BRDM = (AS*ASW + PO*POW + MO*MOW + PI*PIW + MI*MIW + GI*GIW + FI*FIW + WI*WIW + SI*SIW + DI*DIW) / (ASW + POW + MOW + PIW + MIW + GIW + FIW + WIW + SIW + DIW)
where the two-letter abbreviations represent growth boost components (explained in detail later in this message) depending on, respectively:
AS | the number of active stations
|
PO | percentage of passengers transported (`passengers out')
|
MO | percentage of mail transported (`mail out')
|
PI | incoming passengers (`passengers in')
|
MI | incoming mail (you get the picture...)
|
GI | incoming goods
|
FI | incoming food
|
WI | incoming water
|
SI | incoming sweets/candy
|
DI | incoming fizzy drinks
|
Each component is a number between 0 and 1, so the result (BRDM) is also between 0 and 1. The rest are weighting factors, represented by the following settings in the configuration file:
ASW | tgractstationsweight
|
POW | tgrpassoutweight
|
MOW | tgrmailoutweight
|
PIW | tgrpassinweight
|
MIW | tgrmailinweight
|
GIW | tgrgoodsinweight
|
FIW | tgrfoodinweight
|
WIW | tgrwaterinweight
|
SIW | tgrsweetsinweight
|
DIW | tgrfizzydrinksinweight
|
The higher the weighting factor for some component is relative to the
other weighting factors, the more influence the asociated growth boost
component has on the final growth rate. Note that it's the relation
betwen weighting factors that matters; for instance, if all the other
weighting factors are zero, the following set
tgractstationsweight = 10 tgrpassoutweight = 5
yields exactly the same results as
tgractstationsweight = 2 tgrpassoutweight = 1
The growth boost components are calculated as follows:
tgractstationsweight
is the
only nonzero weighting factor, then the default values,
tgractstations=10
and tgractstationexist=5
result in an approximation of
the standard TTD behaviour. Note that tgractstationexist
can be negative.
tgrgoodsinoptim=20
, then a town with
population of 400 needs (400/20)*2 = 40 crates of goods each month; more
goods will be still accepted but will not contribute to the growth of
the town.
An additional calculation is done for towns in snow and desert areas.
It is presumed that towns above the snow line (or in desert) need some
minimum food to grow at all. This is defined via tgrfoodinmin
, again
as population per 2 tonnes of food. Before FI is calculated, RFI = (P*2)/tgrfoodinmin is subtracted from FILM (which is, remember, the
number of tonnes of food `in' last month); if the result is negative,
the town will not grow at all. Similarly, RWI = (P*2)/tgrwaterinmin is
subtracted from WILM for towns in desert.
The base rate delta multiplier is then used to
calculate the rate delta multiplier:
RDM = BRDM * ((NTB / tgrtownsizebase) * TSF) + (1 - TSF))
where NTB is the number of buildings in the town and TSF=tgrtownsizefactor/255 (i.e. it's a value between 0 and 1, which determines how much of the growth rate depends on the town size, in percent). This can be used to add a bit of `exponentiality' to the growth of towns (remember, the growth rate is expressed in new buildings per time unit, so with a constant rate larger towns will appear to grow more slowly).
Then the real growth rate is calculated:
RGR = towngrowthratemin + ratediff*CRDM
where CDRM=RDM if RDM <= 1, and CRDM=1 otherwise.
Then, if a town building fund is active in this town, 600 is added.
Then, if the town is one of those supposed to be larger (see
the largertowns
switch), the rate is doubled. And this is the final growth
rate, in new houses per century.
As a final note, the real growth of towns is a second- or third-order effect of the final growth rate, so don't expect towns to grow exactly at the rate you've calculated from the formulae above.... But on the average it shouldn't be far off.