* 開発/cityrules.tabの解説 [#h37fcf7b]


※ちなみに、現在ではこんな面倒くさいことをせずに簡単に設定できるように、simuconfigと言うソフトがあります。
http://config.japanese.simutrans.com/

configディレクトリに存在するcityrules.tabファイルでは、
都市の建物と道路の生成規則を定義しています。

 例) 建物を生成する規則
 house_1 = ... Hn. sss
 house_1.chance = -2

- "''house_1''" というのは、この規則の名前です。
建物の生成規則には "house_1" から始まる連番を、
道路の生成規則には "road_1" から始まる連番を付けます。

- 右辺の "''... Hn. sss''" の部分が規則の内容です。
ここについては後述します。

- 2行目の "''house_1.chance = -2''" というのは、
この規則が適用される確率を表します。
"-7" が最も高確率で、''数字が大きくなるほど確率が低くなっていきます''。

なお、ファイル中の''#''で始まる行はコメントです。

** 規則の意味 [#e3aa3a48]

1行目の右辺にある "''... Hn. sss''" という部分が、この規則の内容を表します。
これは、以下のように3行3列のパターンを意味しています。

|.|.|.|
|H|n|.|
|s|s|s|

それぞれの文字は、以下のような意味を持っています。

|CENTER:''文字''|CENTER:''意味''|h
|CENTER:s|道路|
|CENTER:S|道路ではない|
|CENTER:h|建物|
|CENTER:H|建物ではない|
|CENTER:t|駅・駅ビル|
|CENTER:T|駅・駅ビルではない|
|CENTER:n|自然 (建物や道路がないという意味)|
|CENTER:.|何でもよい|

3行3列の範囲がこのパターンに合致するとき、
真ん中のマスに建物や道路が (規則の2行目で指定した確率に従って) 発生します。

パターンは90度単位で回転したものを含みます。
たとえば、上の規則は、それを回転して得られる
|s|H|.|
|s|n|.|
|s|.|.|

|s|s|s|
|.|n|H|
|.|.|.|

|.|.|s|
|.|n|s|
|.|H|s|
というパターンにも合致します。

一方、パターンは反転を''含みません''。
つまり、上の規則は
|.|.|.|
|.|n|H|
|s|s|s|
というパターンには''合致しません''。
したがって、非対称な規則では、
反転したパターンを別の規則として定義する必要があるでしょう。
例としてデフォルトのcityrules.tabを見ると、
 house_2 = ... .nH sss
 house_2.chance = -2
と定義されています。