#author("2024-12-10T10:29:44+00:00","","") //cache #contents RIGHT: &size(10){''更新履歴''}; &size(10){現在はsimuconf.tabで設定するminimum_city_distanceとindustry_increase_everyをコメントアウト 2024/12/10}; &size(10){cluster_factor追加 2013/08/18}; &size(10){いろいろ追加・整理 2010/05/09}; * 設定ファイル/cityrules.tab [#h37fcf7b] ファイル中の''#''で始まる行はコメントです。 ''&color(blue){青色};''のキーワードは、110.0以降セーブゲームごとに保存される設定です。''新規ゲームにのみ反映されます。''新規ゲーム作成後にゲーム途中で変更することはできません。 ''&color(maroon){臙脂色};''のキーワードは、110.0以降オンラインゲームでのみセーブゲームごとに保存される設定です。''新規ゲームにのみ反映されます。'' &imgfolder(16/info.png); cityrules.tabの設定はセーブゲームには保存されません。変更後にsimutransを起動すると、すべてのゲームに変更が適用されます。 ただし、ネットワークゲームの場合のみ、すべての設定がセーブゲームに保存され、後から変更できません。(2010/12/05 追記) :&color(blue){minimum_city_distance}; = 32| 新規マップ作成時の都市間の最低距離 //:&color(blue){minimum_city_distance}; = 32| 新規マップ作成時の都市間の最低距離 :&color(maroon){renovation_percentage}; = 12| 都市の発展時に、新規建物を多く建設するか、既存の建物をレベルアップさせるかの判断に使用されます。&br;値を大きくすると新規建物が建設されなくなり、逆に値を小さくすると都市が広がりやすくなります。 :&color(maroon){minimum_building_density}; (minimum_building_desity) = 25| (100.0以降)都市の発展時に、市域を拡張するかどうかの閾値。市域全体のうち、建物の比率が数値より低いときには拡張せず、数値より高いときは拡張します。&br;後方互換性のため''minimum_building_desity''も使用できます。 :&color(gray){industry_increase_every}; = 2000| [102.2.2まで] 新規産業チェーンが作られるタイミング、人口条件を設定します。pak64のデフォルトは2000で、各都市の人口が2,000、4,000、8,000、1,6000、32,000、64,000、128,000、256,000に達した場合に建設または拡張されます。(ただし、情報ウィンドウに表示されている人口と、実際に建設される時期との間には、ずれがあります)&br;0を指定すると、人口増加で新規産業チェーンは建設されません。 &imgfolder(16/light_off.png); 建設時期は設定値の倍々で8回までです。デフォルトの2000ですと、8回目の256,000が最後で、それ以上人口が増えても建設されません。 &imgfolder(16/exclamation.png); nightly版、110.0以降では、industry_increase_everyはsimuconf.tab内で設定します。 //:&color(gray){industry_increase_every}; = 2000| [102.2.2まで] 新規産業チェーンが作られるタイミング、人口条件を設定します。pak64のデフォルトは2000で、各都市の人口が2,000、4,000、8,000、1,6000、32,000、64,000、128,000、256,000に達した場合に建設または拡張されます。(ただし、情報ウィンドウに表示されている人口と、実際に建設される時期との間には、ずれがあります)&br;0を指定すると、人口増加で新規産業チェーンは建設されません。 //&imgfolder(16/light_off.png); 建設時期は設定値の倍々で8回までです。デフォルトの2000ですと、8回目の256,000が最後で、それ以上人口が増えても建設されません。 //&imgfolder(16/exclamation.png); nightly版、110.0以降では、industry_increase_everyはsimuconf.tab内で設定します。 *エリアルール [#r5c31567] 市内建築物が建つ場合に、どの種類の建物が建つかという計算に使われます。ルールは新築、建て替えの両方に適用されます。 計算の結果最も期待値の高いものが建設されます。 &imgfolder(16/pencil.png); 工場とは産業施設ではなく、市内建築物の工場です。 :&color(maroon){res_start_score}; = 0|住宅が建つ期待値 :&color(maroon){res_near_ind}; = -8|工場の近くに住宅が建つ期待値 :&color(maroon){res_near_com}; = 0|商店の近くに住宅が建つ期待値 :&color(maroon){res_near_res}; = 8|住宅の近くに住宅が建つ期待値 :&color(maroon){com_start_score}; = -10|商店が建つ期待値 :&color(maroon){com_near_ind}; = 1|工場の近くに商店が建つ期待値 :&color(maroon){com_near_com}; = 8|商店の近くに商店が建つ期待値 :&color(maroon){com_near_res}; = 1|住宅の近くに商店が建つ期待値 :&color(maroon){ind_start_score}; = 0|工場が建つ期待値 :&color(maroon){ind_near_ind}; = 8|工場の近くに工場が建つ期待値 :&color(maroon){ind_near_com}; = 0|商店の近くに工場が建つ期待値 :&color(maroon){ind_near_res}; = -8|住宅の近くに工場が建つ期待値 ---- :cluster_factor = 10|[112.3以降]市内建築物を新築、建て替えする場合に、隣接した建物が同じクラスタ(集団)の値を持っていれば、建物の出現確率(chance)がcluster_factor倍になります。(複数指定されている場合でも一つが一致すればよい) 逆に隣接した建物が異なるクラスタ値しか持っていない場合は出現確率がcluster_factor分の一に減ります。 隣接した建物のいずれもにクラスタ値が設定されていない場合はこの値は無視されます デフォルトでは10倍と1/10 注: 市内建築物にclustersが設定されている必要があります **計算方法 [#tacb9462] +住宅、商店、工場が建つ期待値をそれぞれの初期値とします +建設予定地の周囲2タイル、(-2,-2)-(+2,+2)の計25タイルのタイルを調べます +見つかった住宅、商店、工場の数だけ、その周囲に建つ期待値をそれぞれ加えます +商店、工場の期待値に無職者の数÷4を加えます +住宅の期待値に浮浪者の数を加えます +最も期待値の高い建物が建ちます(建てられる建物があった場合) *市道/建物生成ルール [#gc4be9e9] configディレクトリに存在するcityrules.tabファイルでは、 都市の建物と道路の生成規則を定義しています。 例) 市道を生成する規則 road_1 = .H. SnS .sS road_1.chance = 8 例) 建物を生成する規則 house_1 = ... Hn. sss house_1.chance = -2 - "''house_1''" というのは、この規則の名前です。 建物の生成規則には "house_1" から始まる連番を、 道路の生成規則には "road_1" から始まる連番を付けます。 - 右辺の "''... Hn. sss''" の部分が規則の内容です。 ここについては後述します。 - 2行目の "''house_1.chance = -2''" というのは、 この規則が適用される確率を表します。 "-7" が最も高確率で、''数字が大きくなるほど確率が低くなっていきます''。 |~chance|-7|-6|-5|-4|-3|-2|-1|0|1|2|3|4|...|8|h |~確率|1/1|1/2|1/3|1/4|1/5|1/6|1/7|1/8|1/9|1/10|1/11|1/12|...|1/16| **アルゴリズム [#jcff96b9] +市域の中からランダムに1タイルを選択します +空地でなければ終了します +最初は道路ルールです。ランダムな道路ルールを選びます +ルールを適用する確率を試し、はずれたら次の番号のルールを選びます +ルールに一致するかを試し、一致すれば、道路を建設して終了します +一致しなければ次の番号のルールを選び、繰り返します(最後まで行ったら最初に戻り、一巡するまですべてのルールを試します) +どれも一致しなければ、次は建物ルールです。ランダムな建物ルールを選びます +ルールを適用する確率を試し、はずれたら次の番号のルールを選びます +ルールに一致するかを試し、一致すれば、建物を建てて終了します +一致しなければ次の番号のルールを選び、繰り返します(最後まで行ったら最初に戻り、一巡するまですべてのルールを試します) ** 規則の意味 [#e3aa3a48] 1行目の右辺にある "''... Hn. sss''" という部分が、この規則の内容を表します。 これは、以下のように3行3列のパターンを意味しています。 |.|.|.| |H|n|.| |s|s|s| &imgfolder(16/info.png); ルールは3x3、5x5、7x7の3通りが使えます。ルールごとに違うサイズを使用しても構いません。 それぞれの文字は、以下のような意味を持っています。 |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 と定義されています。