Difference between revisions of "NewTownGrowthSwitchesdetails"

From TTWiki
Jump to navigationJump to search
m (3 revisions)
m (Bot: Automated text replacement (--= +==))
Line 1: Line 1:
   
'''''How the new town growth switches work'''''
 
   
 
=New Town Growth Switches (details)=
 
=New Town Growth Switches (details)=
Line 6: Line 5:
 
How the new town growth switches work
 
How the new town growth switches work
   
This section describes the switches that apply in "towngrowthratemode 2".  They fine tune and control every detail of town growth.
+
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.
+
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:
+
For comparison, with "towngrowthratemode 0" (TTD's original calculation), the rates are:
   
  +
{|
||number of active stations|average rate (new houses per 100 years)
+
!number of active stations!!average rate (new houses per 100 years)
   
  +
|-
   0                 |20
 
  +
| 0 ||20
   
  +
|-
   1                 |182
 
  +
| 1 ||182
   
  +
|-
   2                 |256
 
  +
| 2 ||256
   
  +
|-
   3                 |349
 
  +
| 3 ||349
   
  +
|-
   4                 |480||
 
  +
| 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.
+
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 &nbsp;towngrowthratemax switches. &nbsp;Let -+''ratediff''+- be the difference between the &nbsp;maximum and the minimum, i.e.<pre>-+ &nbsp; ratediff = towngrowthratemax - towngrowthratemin+-</pre>
+
For the new growth rate calculation, we have the maximum and minimum rate, the towngrowthratemin and towngrowthratemax switches. Let <tt>''ratediff''</tt> be the difference between the maximum and the minimum, i.e. ratediff = towngrowthratemax - towngrowthratemin</pre>
   
Then the '''base rate delta multiplier''' (BRDM) is calculated as follows:<pre>-+ &nbsp;BRDM = (AS*ASW + PO*POW + MO*MOW + PI*PIW + MI*MIW + GI*GIW + FI*FIW + WI*WIW + SI*SIW + DI*DIW)+-
+
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)</tt>
   
-+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/ (ASW + POW + MOW + PIW + MIW + GIW + FIW + WIW + SIW + DIW)+-</pre>
+
<tt> / (ASW + POW + MOW + PIW + MIW + GIW + FIW + WIW + SIW + DIW)</pre>
   
 
where the two-letter abbreviations represent '''growth boost components''' (explained in detail below) depending on, respectively:
 
where the two-letter abbreviations represent '''growth boost components''' (explained in detail below) depending on, respectively:
   
  +
{|
||-+''AS''+- |the number of active stations
+
!<tt>''AS''</tt> !!the number of active stations
   
  +
|-
-+''PO''+- |percentage of passengers transported (`passengers out')
+
|<tt>''PO''</tt> ||percentage of passengers transported (`passengers out')
   
  +
|-
-+''MO''+- |percentage of mail transported (`mail out')
+
|<tt>''MO''</tt> ||percentage of mail transported (`mail out')
   
  +
|-
-+''PI''+- |incoming passengers (`passengers in')
+
|<tt>''PI''</tt> ||incoming passengers (`passengers in')
   
  +
|-
-+''MI''+- |incoming mail (you get the picture...)
+
|<tt>''MI''</tt> ||incoming mail (you get the picture...)
   
  +
|-
-+''GI''+- |incoming goods
+
|<tt>''GI''</tt> ||incoming goods
   
  +
|-
-+''FI''+- |incoming food
+
|<tt>''FI''</tt> ||incoming food
   
  +
|-
-+''WI''+- |incoming water
+
|<tt>''WI''</tt> ||incoming water
   
  +
|-
-+''SI''+- |incoming sweets/candy
+
|<tt>''SI''</tt> ||incoming sweets/candy
   
  +
|-
-+''DI''+- |incoming fizzy drinks||
+
|<tt>''DI''</tt> ||incoming fizzy drinks
  +
|}
   
Each component is a number between 0 and 1, so the result (BRDM) is also &nbsp;between 0 and 1. &nbsp;The rest are weighting factors, represented by the &nbsp;following settings in the configuration file:
+
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
+
!<tt>''ASW''</tt> !!tgractstationsweight
   
  +
|-
-+''POW''+- |tgrpassoutweight
+
|<tt>''POW''</tt> ||tgrpassoutweight
   
  +
|-
-+''MOW''+- |tgrmailoutweight
+
|<tt>''MOW''</tt> ||tgrmailoutweight
   
  +
|-
-+''PIW''+- |tgrpassinweight
+
|<tt>''PIW''</tt> ||tgrpassinweight
   
  +
|-
-+''MIW''+- |tgrmailinweight
+
|<tt>''MIW''</tt> ||tgrmailinweight
   
  +
|-
-+''GIW''+- |tgrgoodsinweight
+
|<tt>''GIW''</tt> ||tgrgoodsinweight
   
  +
|-
-+''FIW''+- |tgrfoodinweight
+
|<tt>''FIW''</tt> ||tgrfoodinweight
   
  +
|-
-+''WIW''+- |tgrwaterinweight
+
|<tt>''WIW''</tt> ||tgrwaterinweight
   
  +
|-
-+''SIW''+- |tgrsweetsinweight
+
|<tt>''SIW''</tt> ||tgrsweetsinweight
   
  +
|-
-+''DIW''+- |tgrfizzydrinksinweight||
+
|<tt>''DIW''</tt> ||tgrfizzydrinksinweight
  +
|}
   
The higher the weighting factor for some component is relative to the &nbsp;other weighting factors, the more influence the asociated growth boost &nbsp;component has on the final growth rate. &nbsp;Note that it's the relation &nbsp;betwen weighting factors that matters; for instance, if all the other &nbsp;weighting factors are zero, the following set<pre>-+ &nbsp;tgractstationsweight = 10+-
+
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</tt>
   
-+ &nbsp;tgrpassoutweight = 5+-</pre>
+
<tt> tgrpassoutweight = 5</pre>
   
yields exactly the same results as<pre>-+ &nbsp;tgractstationsweight = 2+-
+
yields exactly the same results as tgractstationsweight = 2</tt>
   
-+ &nbsp;tgrpassoutweight = 1+-</pre>
+
<tt> tgrpassoutweight = 1</pre>
   
 
The growth boost components are calculated as follows:
 
The growth boost components are calculated as follows:
   
;-+''AS''+- = [[NTB / tgrtownsizebase) * TSF) + (1 - TSF]]+-</pre>
+
;<tt>''AS''</tt> = [[NTB / tgrtownsizebase) * TSF) + (1 - TSF]]</pre>
   
where -+''NTB''+- is the number of buildings in the town and &nbsp;-+''TSF''+-=tgrtownsizefactor/255 (i.e. it's a value between 0 and 1, which &nbsp;determines how much of the growth rate depends on the town size, in &nbsp;percent). &nbsp;This can be used to add a bit of `exponentiality' to the &nbsp;growth of towns (remember, the growth rate is expressed in new buildings &nbsp;per time unit, so with a constant rate larger towns will appear to grow &nbsp;more slowly).
+
where <tt>''NTB''</tt> is the number of buildings in the town and <tt>''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:<pre>-+ &nbsp; RGR = towngrowthratemin + ratediff*CRDM+-</pre>
+
Then the '''real growth rate''' is calculated: RGR = towngrowthratemin + ratediff*CRDM</pre>
   
where -+''CDRM''+-=-+''RDM''+- if -+''RDM''+- &lt;= 1, and -+''CRDM=1''+- otherwise.
+
where <tt>''CDRM''+===+''RDM''</tt> if <tt>''RDM''</tt> <= 1, and <tt>''CRDM=1''</tt> otherwise.
   
Then, if a town building fund is active in this town, 600 is added. &nbsp;Then, if the town is one of those supposed to be larger (see &nbsp;the largertowns switch), the rate is doubled. &nbsp;And ''this'' is the final growth &nbsp;rate, in new houses per century.
+
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 &nbsp;effect of the final growth rate, so don't expect towns to grow exactly &nbsp;at the rate you've calculated from the formulae above.... &nbsp;But on the &nbsp;average it shouldn't be far off.
+
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.

Revision as of 11:27, 15 June 2011


New Town Growth Switches (details)

How the new town growth switches work

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 active stations average rate (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 below) 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:

AS = 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.