ooo
This commit is contained in:
parent
e2d2dfcb66
commit
8f80997b0d
256 changed files with 4044 additions and 966 deletions
321
MODIFICATION_NOTES.md
Normal file
321
MODIFICATION_NOTES.md
Normal file
|
|
@ -0,0 +1,321 @@
|
|||
# 文明シミュレータ 改修記録
|
||||
|
||||
## 目的
|
||||
|
||||
ユーザー指定の操作系・反乱・交易路・戦争損害・地形計算の変更を、既存シミュレーションの構造を維持したまま追加する。
|
||||
|
||||
## 実装した変更
|
||||
|
||||
- 「1週進める」ボタンを削除。
|
||||
- 初期人口スライダーを削除。初期人口は標準値 50,000 に固定。
|
||||
- 「再生成」を押すとダイアログを開き、その時点で世界サイズ(128 / 160 / 220 / 280)を選択する方式に変更。
|
||||
- 反乱ロジックを変更。
|
||||
- 忠誠度 30% 未満の都市が1つでもあれば反乱を自動発生。
|
||||
- 反乱が発生した場合、首都を除く忠誠度 50% 未満の全都市が同時に同一反乱勢力へ参加。
|
||||
- 30〜50%の範囲では従来のランダム性を残しつつ、忠誠度・不安定度・国家年齢から年次発生確率を算出。
|
||||
- 「災害発生」「都市建設」「交通接続」の3ボタンを追加。
|
||||
- 災害発生: 地図上の指定地点を中心に即時発生。
|
||||
- 都市建設: 地図上のクリック地点へ都市を即時建設。ユーザー建設都市は都市間隔・自動都市数上限を無視するが、水域には建設できない。
|
||||
- 交通接続: 都市を2つ順にクリックして交易路を作成。
|
||||
- ユーザー作成交易路に内部保護期間を追加し、期間終了後は通常管理へ戻るよう変更。
|
||||
- 戦争による都市人口損失と戦場タイル人口損失を従来の約 65% に軽減。
|
||||
- 戦争発生頻度・勝敗・占領判定そのものは変更していない。
|
||||
- 水域の肥沃度を計算対象外にし、常に 0 とするよう変更。
|
||||
- 既存コードの堅牢性修正。
|
||||
- `getCityById` / `getPolityById` がキャッシュ未初期化のテスト・部分実行でも動作するよう修正。
|
||||
- 完全に囲まれた小さな中立穴を領土平滑化で埋められるよう修正。
|
||||
|
||||
## 追加修正(連続介入・ヘルプ)
|
||||
|
||||
- 災害発生・都市建設・交通接続が、1回成功するたびに解除されていた挙動を修正。選択した介入は同じボタンを再度押すまで継続する。
|
||||
- 交通接続は1本作成後、同じモードのまま次の1つ目の都市選択へ戻る。
|
||||
- ヘルプを現行仕様に合わせて更新し、説明量を圧縮。
|
||||
- 交通接続完了メッセージから保護期間に関する説明を削除。
|
||||
|
||||
## 追加修正(砂漠交易路・手動都市民族・征服後反乱)
|
||||
|
||||
- 砂漠横断交易路の成立条件を改善。
|
||||
- 交易路経路探索では砂漠の移動コストを通常移動より軽く評価し、隊商路として横断しやすくした。
|
||||
- 都市間の直線上に砂漠が多い場合、交易路の有効距離上限を段階的に拡張する。
|
||||
- 砂漠を多く通る経路では、新規交易路に必要なフェロモン閾値と建設コストを緩和する。
|
||||
- 水域は従来どおり交易路不可。山地の高コストも維持。
|
||||
- ユーザー建設都市の民族構成を修正。
|
||||
- 建設地点の民族構成を優先して継承。
|
||||
- 地点に民族が存在しない場合は最寄りの民族構成を継承。
|
||||
- 世界内に参照可能な民族がない場合も、新しい現地民族を生成して民族構成が空にならないようにした。
|
||||
- 征服された都市に20年間の反乱猶予期間を追加。
|
||||
- 戦争占領、国境戦争、軍事併合、講和による都市移譲、遊牧民征服を対象とする。
|
||||
- 猶予期間中は忠誠度が30%未満でも反乱を自動発生せず、他都市の反乱にも参加しない。
|
||||
- 猶予終了後は通常の反乱判定へ戻る。
|
||||
|
||||
## 追加修正(国家ツールチップ・制度老朽化・制度改革)
|
||||
|
||||
- 国家領土または国家所属都市にカーソルを合わせた際、ツールチップに「国家データ」を表示。
|
||||
- 国力、人口、都市数、国庫、正統性 / 結束、制度老朽化、忠誠度上限を表示する。
|
||||
- 国家に `institutionalAging`(制度老朽化度、0~1)を追加。
|
||||
- 国家成立後、年次更新ごとに徐々に増加する。
|
||||
- 忠誠度上限を `1 - institutionalAging` とし、首都を含む所属都市の忠誠度はこの上限を超えない。
|
||||
- 「制度改革」イベントを追加。
|
||||
- 老朽化度が30%を超えてから発生候補となり、老朽化が高いほど年次発生確率が上昇する。
|
||||
- 発生時は現在の老朽化度に対して -50%~+30% の相対変化をランダムに適用する。改革が逆効果になる場合もある。
|
||||
- 同一国家での連続発生を抑えるため8年間のクールダウンを設ける。
|
||||
- 国家興亡グラフへ専用の「制度改革」マーカーを記録し、老朽化度の変化前後と変化率を表示する。
|
||||
- 国家履歴サンプルにも制度老朽化度と忠誠度上限を保存する。
|
||||
|
||||
## 追加整理(不要処理・ツールチップ・回帰試験)
|
||||
|
||||
- 都市ツールチップを「都市データ」と「国家データ」に分離し、民族構成の割合表示を都市データ内へ移動。
|
||||
- 国家人口表示は既存の `totalPolityPopulation()` を利用し、ツールチップ独自の人口集計を廃止。
|
||||
- 未参照の設定値11個を `config.js` から削除。
|
||||
- 人口: `softCapStart`, `hardCapScale`, `pressurePenaltyBase`, `pressureReproductionPenalty`
|
||||
- 都市: `agingRestoreMinWear`, `agingRestoreCostPerWear`, `agingRestoreBudgetShare`
|
||||
- 技術: `cityDiffusion`
|
||||
- 文化: `spreadRadius`, `cityWeight`, `routeWeight`
|
||||
- 未参照の描画/共通ヘルパー6個を削除。
|
||||
- 未参照または明示的に停止済みだったSimulationメソッド12個と、それ専用だった文化スクラッチ状態を削除。
|
||||
- 特に先頭で `return` していた旧 `expandPolities()` / `absorbIndependentCities()` を完全削除。
|
||||
- 旧地域文化更新・旧収容力単発計算・旧都市老朽化補助など、現行処理と責務が重複したコードを除去。
|
||||
- `annexation_policy_probe.html` を削除。内容は `tests/simulation.test.cjs` のNode回帰試験へ統合し、ブラウザ専用の古いモックを廃止。
|
||||
- 静的棚卸しで、`SimConfig` の未参照leaf設定値と明白な未参照関数/メソッドが0件であることを確認。
|
||||
- 制度改革の発生開始を「制度老朽化30%超」に変更。30%ちょうどでは発生しない。
|
||||
|
||||
|
||||
## 追加修正(ヘルプ・国庫上限・性能)
|
||||
|
||||
- ヘルプに主要パラメータの短い説明を追加。
|
||||
- 人口 / 人口圧力、資源 / 肥沃度、農業 / 冶金、交通量、忠誠度、国庫、正統性 / 結束、制度老朽化、国力を対象とする。
|
||||
- 国家国庫に人口比例の動的上限を追加。
|
||||
- 上限は `国家人口 × 0.30`。人口増減に応じて毎年再評価する。
|
||||
- 国家ツールチップは重複表示を避けるため国庫残高のみを1行で表示する。動的上限は内部会計ロジックとヘルプで説明する。
|
||||
- 反乱時は、反乱人口比に応じて旧国家の国庫の一部を反乱国へ移す。移転額は `旧国庫 × 反乱人口比 × 0.65`。
|
||||
- 反乱後は旧国家・反乱国家とも、それぞれの新しい人口に応じた国庫上限へ収める。
|
||||
- 計算負荷をプロファイルし、結果を変えない範囲を優先して軽量化。
|
||||
- 世界生成の湿度計算を、各タイル半径10の総当たり探索から2パスのマンハッタン距離変換へ変更。旧方式との比較で浮動小数点誤差範囲まで一致することを確認。
|
||||
- 沿岸肥沃度補正は49マスの矩形走査から、実際に寄与するマンハッタン距離3以内のオフセットだけを走査する方式へ変更。
|
||||
- 人口収容力のうち、地形・肥沃度・鉱物由来の静的成分を初期化時にキャッシュ。年次処理で不要な全マップ再計算も削減し、人口だけが変わる段階では収容力の再計算をせず、圧力更新に限定。
|
||||
|
||||
## 追加修正(表示整理・都市間隔・追加軽量化)
|
||||
|
||||
- 国家ツールチップの国庫表示を1行へ統一し、同じ国庫情報が二重に見える表示を解消。
|
||||
- 国家興亡グラフに「出来事アイコン」切替を追加。制度改革を含むイベントマーカーと凡例をまとめて表示 / 非表示にできる。
|
||||
- 自然生成都市の既存都市からの必要距離を従来のおおむね半分へ縮小。
|
||||
- 自然生成の最小都市間隔は `6`、競合評価半径は `9` とする。
|
||||
- ユーザー建設都市は通常の都市間隔・自動都市数上限制限を無視する。
|
||||
- ただし水域への建設は禁止し、陸地の指定座標へ直接建設する。
|
||||
- 追加プロファイルに基づき、通常進行をさらに軽量化。
|
||||
- 毎週相当で全世界を走査していた世界フィールド処理を月次へ集約。
|
||||
- 交易フェロモンは全タイル走査をやめ、値が存在するタイルと隣接域だけを疎更新。
|
||||
- 資源再生は四半期ごとにまとめ、年間再生量を維持。
|
||||
- 人口収容力は必要な変化時と年次処理に限定して再計算。
|
||||
- 民族統計の毎週更新を廃止し、履歴記録・年次処理で必要な時だけ更新。
|
||||
- 旧互換用で実利用されていなかった人口 `pressure` 配列と更新処理を削除。
|
||||
- 年次更新で重複呼び出しされていた国家危機判定を1回へ整理し、負荷とイベント判定回数の重複を解消。
|
||||
|
||||
## 追加修正(都市数上限・手動都市の水域制限)
|
||||
|
||||
- 自動生成都市数の上限を `300` から `1200` へ引き上げ。
|
||||
- 自然発生都市・遠征による前哨都市など、自動生成側の共通上限として適用する。
|
||||
- ユーザー建設都市はこの自動上限を引き続き無視する。
|
||||
- ユーザー建設都市の水域建設を禁止。
|
||||
- 水域をクリックした場合は都市を生成せず、陸地を選択するようUIへ案内する。
|
||||
- 都市間隔制限は引き続き無視できるため、陸地上では既存都市の隣接地点にも建設可能。
|
||||
|
||||
## v9: 自然都市数の成長停滞を修正
|
||||
|
||||
### 原因
|
||||
|
||||
自然都市の創設判定が20年に1回で、1000年までは1回につき最大1都市に固定されていた。最大280×280マップでも創設流量が面積に比例せず、都市上限を1200へ増やしても約60都市前後で成長が鈍化しやすかった。
|
||||
|
||||
### 変更
|
||||
|
||||
- 自然都市の創設判定周期を20年から5年へ短縮。
|
||||
- 1回の創設可能数を世界面積に応じて増加。160×160で1、220×220で2、280×280で4都市まで。
|
||||
- 人口・定住性・資源・地形・既存都市との距離・創設確率は従来どおり判定し、無条件生成にはしない。
|
||||
- 面積スケーリングは `naturalCityFoundingLimit()` に集約し、設定値から調整できるようにした。
|
||||
|
||||
最大280×280では、同じ期間あたりの理論上の自然都市創設流量は旧仕様の最大16倍になる。実際の都市数は候補地、人口、都市消滅、戦争などで変動する。
|
||||
|
||||
|
||||
## v10: 都市人口・都市アイコン・民族動態の調整
|
||||
|
||||
- 再生成ダイアログから不要になった初期人口固定の案内を削除。
|
||||
- 新規都市の初期人口を自然生成・ユーザー建設ともに400へ統一。
|
||||
- 都市は人口200未満で消滅する。200ちょうどは存続可能。
|
||||
- 都市アイコンを人口帯で4段階に固定。
|
||||
- 200–999: 最小
|
||||
- 1000–3999: 中
|
||||
- 4000–5999: 大
|
||||
- 6000以上: 最大
|
||||
- 民族の新規分化速度を従来の1/4へ低下。分化判定間隔を4倍にし、分化条件そのものは維持する。
|
||||
- 総人口30未満の極小民族は年次処理で周辺民族へ吸収する。
|
||||
- 同一地点・隣接地点・同一都市で接触している民族を優先する。
|
||||
- 周辺に候補がない場合は親系統、さらに最寄りの存続民族へ統合する。
|
||||
- タイル人口、都市民族構成、遊牧集団の所属を移し替えるため、吸収によって総人口は減らない。
|
||||
- 旧仕様の「都市人口を populationScale に合わせて10倍化する」ことだけを確認していた回帰試験を削除し、現行仕様を直接検査する試験へ置換。
|
||||
|
||||
## v11: 都市表示・制度改革クールダウン・国庫都市建設
|
||||
|
||||
- 都市アイコンの人口帯を変更。
|
||||
- 200–999: 最小
|
||||
- 1000–4999: 中
|
||||
- 5000–9999: 大
|
||||
- 10000以上: 最大
|
||||
- 制度改革の再発クールダウンを50年へ変更。制度老朽化30%超という発生開始条件は維持する。
|
||||
- 国庫が人口比例上限に達した国家は、年次14%の確率で都市建設を試みる。
|
||||
- 建設成功時は、その時点の国庫上限の35%を消費する。
|
||||
- 建設候補は自国領土内の陸地に限定し、自然都市と同じ最小都市間隔を維持する。
|
||||
- 候補探索は全世界走査ではなく既存都市の周辺領土に限定し、国家数増加時の追加負荷を抑える。
|
||||
- 新都市は人口400で成立し、周辺の民族構成を継承する。
|
||||
- ヘルプの国庫・制度老朽化説明を新仕様へ同期。
|
||||
|
||||
## 主な設定値
|
||||
|
||||
`config.js` で変更可能。
|
||||
|
||||
- `SimConfig.world.initialPopulation`: 50000
|
||||
- `SimConfig.world.defaultSize`: 160
|
||||
- `SimConfig.city.maxCities`: 1200
|
||||
- `SimConfig.city.initialPopulation`: 400
|
||||
- `SimConfig.city.abandonmentPopulation`: 200
|
||||
- `SimConfig.city.naturalFoundingMinDistance`: 6
|
||||
- `SimConfig.city.naturalFoundingStartYears`: 160
|
||||
- `SimConfig.city.naturalFoundingIntervalYears`: 5
|
||||
- `SimConfig.city.naturalFoundingReferenceArea`: 25600
|
||||
- `SimConfig.city.naturalFoundingMaxPerCycle`: 8
|
||||
- `SimConfig.city.foundingCompetitionRadius`: 9
|
||||
- `SimConfig.culture.divergenceRateMultiplier`: 0.25
|
||||
- `SimConfig.culture.absorptionPopulationThreshold`: 30
|
||||
- `SimConfig.rebellion.participationLoyalty`: 0.50
|
||||
- `SimConfig.rebellion.automaticLoyalty`: 0.30
|
||||
- `SimConfig.rebellion.conquestGraceYears`: 20
|
||||
- `SimConfig.rebellion.treasuryTransferRate`: 0.65
|
||||
- `SimConfig.route.manualProtectionYears`: 25
|
||||
- `SimConfig.route.manualRouteMaxLength`: 120
|
||||
- `SimConfig.route.desertTraversalCostFactor`: 0.68
|
||||
- `SimConfig.route.desertRouteLengthBonus`: 30
|
||||
- `SimConfig.route.desertAdaptiveMaxRouteLength`: 96
|
||||
- `SimConfig.war.damageMultiplier`: 0.65
|
||||
- `SimConfig.polity.institutionalAgingAnnualIncrease`: 0.0015
|
||||
- `SimConfig.polity.institutionalReformThreshold`: 0.30
|
||||
- `SimConfig.polity.institutionalReformBaseChance`: 0.008
|
||||
- `SimConfig.polity.institutionalReformChanceScale`: 0.10
|
||||
- `SimConfig.polity.institutionalReformMaxChance`: 0.12
|
||||
- `SimConfig.polity.institutionalReformCooldownYears`: 50
|
||||
- `SimConfig.polity.institutionalReformMinChange`: -0.50
|
||||
- `SimConfig.polity.institutionalReformMaxChange`: 0.30
|
||||
- `SimConfig.polity.treasuryCapPerPopulation`: 0.30
|
||||
- `SimConfig.polity.treasuryCityFoundingChance`: 0.14
|
||||
- `SimConfig.polity.treasuryCityFoundingCostRatio`: 0.35
|
||||
- `SimConfig.polity.treasuryCityFoundingSearchRadius`: 20
|
||||
|
||||
## 検査結果
|
||||
|
||||
### 構文検査
|
||||
|
||||
`config.js`, `app-state.js`, `engine.js`, `render.js`, `boot.js` を `node --check` で確認し、構文エラーなし。
|
||||
|
||||
### 自動テスト
|
||||
|
||||
実行コマンド:
|
||||
|
||||
```bash
|
||||
node --test tests/simulation.test.cjs tests/modifications.test.cjs
|
||||
```
|
||||
|
||||
結果: **48 / 48 PASS**。
|
||||
|
||||
追加テストでは以下を個別確認した。
|
||||
|
||||
- 1週進行・初期人口スライダーがUIから削除されていること。
|
||||
- 再生成ダイアログと3種の介入ボタンが存在すること。
|
||||
- 水域肥沃度が全て0であること。
|
||||
- 忠誠度30%未満による自動反乱と50%未満都市の同時参加。
|
||||
- 手動都市建設。
|
||||
- 手動交易路の保護期間と保護終了。
|
||||
- 戦争人口損害が約65%へ軽減されていること。
|
||||
- 手動災害が履歴へ記録されること。
|
||||
- 砂漠横断交易路の距離上限・通行コスト・建設コストが緩和されること。
|
||||
- ユーザー建設都市に必ず民族構成が設定されること。
|
||||
- 征服都市が20年間反乱から保護され、期間終了後に通常判定へ戻ること。
|
||||
- 他都市で反乱が発生しても、征服保護中の都市が参加しないこと。
|
||||
- 制度老朽化が年次で増加し、同じ割合だけ忠誠度上限が低下すること。
|
||||
- 制度改革が老朽化度を -50%~+30% の範囲で相対変化させ、国家履歴イベントへ記録すること。
|
||||
- 国家ツールチップに制度老朽化・忠誠度上限を含む国家データが存在すること。
|
||||
- 国家興亡グラフに制度改革イベント種別と説明が存在すること。
|
||||
- 制度改革が30%ちょうどでは発生せず、30%超でのみ候補になること。
|
||||
- 都市の民族構成割合が「都市データ」内かつ「国家データ」より前に表示されること。
|
||||
- 旧ブラウザ併合試験をNode回帰試験へ統合し、平和併合/武力併合/他国所属都市拒否を確認すること。
|
||||
- ヘルプに主要パラメータの簡単な説明が存在すること。
|
||||
- 国庫上限が国家人口に比例し、人口減少時も上限へ収まること。
|
||||
- 反乱人口比に応じて国庫の一部が反乱国へ移転すること。
|
||||
- 国家ツールチップの国庫表示が1回だけであること。
|
||||
- 国家興亡グラフの出来事アイコンを表示 / 非表示に切り替えられること。
|
||||
- 自然生成都市の最小間隔が縮小されていること。
|
||||
- ユーザー建設都市が都市間隔・自動都市数上限を無視でき、水域では拒否されること。
|
||||
- 疎フェロモン更新が減衰・伝播を維持し、不要な全世界走査を行わないこと。
|
||||
- 自然都市の創設周期が5年となり、世界面積に応じて1回あたりの創設可能数が増えること。
|
||||
- 新規都市が人口400で成立し、199では消滅、200では存続すること。
|
||||
- 都市アイコンが指定された4つの人口帯で切り替わること。
|
||||
- 民族分化の時間スケールが1/4になり、総人口30未満の民族が隣接民族へ人口を失わず統合されること。
|
||||
- 再生成ダイアログに旧「初期人口は標準値で固定」案内が残っていないこと。
|
||||
- 都市アイコンが1000/5000/10000の新しい境界で切り替わること。
|
||||
- 制度改革が前回改革から50年間再発せず、50年経過後に再び候補になること。
|
||||
- 国庫が上限未満では都市を建設せず、上限到達時は確率判定後に上限の35%を都市建設へ投資すること。
|
||||
- 国家都市建設の投資額が大きいほど、初期人口と初期備蓄が単調に増えること。
|
||||
- 国家都市建設の候補地が広い適地群から加重抽選され、特定地点へ固定されないこと。
|
||||
- 都市老朽化のパラメータ・収容力ペナルティ・経年摩耗処理が残っていないこと。
|
||||
- 人口が過去ピークから落ちた都市ほど、食料余力がある場合に回復成長率が上がること。
|
||||
|
||||
### 長期スモークテスト
|
||||
|
||||
280×280 / 初期人口50,000で180年進行し、例外なし。終了時は都市16、最小都市人口442、民族9、総人口30未満の存続民族0を確認した。都市創設は160年以降に始まるため、この試験は主に新しい消滅閾値と民族吸収処理の長期整合性確認を目的とする。
|
||||
|
||||
### 簡易性能計測
|
||||
|
||||
同一実行環境・固定乱数シードでの参考値。ブラウザ・CPUにより変動する。
|
||||
|
||||
| 計測 | v6 | v7 | 変化 |
|
||||
| --- | ---: | ---: | ---: |
|
||||
| 160×160 / 初期人口50,000 / 240週(通常状態) | 約 1.93 秒 | 約 0.19 秒 | 約 90%短縮 |
|
||||
| 160×160 / 240週(交易フェロモン120地点を事前投入) | 約 1.91 秒 | 約 0.51 秒 | 約 73%短縮 |
|
||||
| 160×160 初期化 | 約 0.66 秒 | 約 0.65 秒 | ほぼ同等 |
|
||||
|
||||
今回の追加軽量化では、`updateWorldFields()` を毎週の全タイル走査から月次・疎更新へ変更した。交易フェロモンは値が存在するタイルと隣接域のみ更新し、資源再生は年間総量を維持したまま四半期単位へ集約した。人口収容力は毎回の全再計算を避け、必要な月次変化時と年次処理に限定した。民族統計も履歴記録・年次処理に必要な時点だけ更新する。
|
||||
|
||||
現状の残存コストは主に `updateCities()` と `updatePopulationCapacity()`、四半期の `regenerateResources()`。これ以上の更新頻度低下は都市成立・人口圧力・資源変動の時間解像度を変えるため、今回は行っていない。
|
||||
|
||||
### v11 追加スモーク / 性能確認
|
||||
|
||||
- 160×160 / 初期人口50,000で220年進行し、例外なし。終了時の都市人口に非有限値・負値なし。
|
||||
- 160×160 / 240週の参考計測は初期化約0.68秒、進行約0.19秒で、v7以降の軽量化水準を維持。
|
||||
- 国庫都市建設の候補探索は国庫上限到達・確率判定通過時のみ行い、通常年次では追加の全マップ走査を行わない。
|
||||
|
||||
|
||||
## v12 追加修正(都市建設分散・投資規模・長期人口)
|
||||
|
||||
- 国庫都市建設の投資額を初期状態へ反映。
|
||||
- 初期人口は標準400人を下限に、投資額に比例して増加する。
|
||||
- 初期備蓄も投資額と増加した初期人口に比例して増加する。
|
||||
- 現在の係数は `treasuryCityPopulationPerCost = 0.18`、`treasuryCityReservePerCost = 0.45`。
|
||||
- 都市建設候補の偏りを緩和。
|
||||
- 自然都市は最上位付近の適地をランダム化して順位付けする。
|
||||
- 国家による国庫都市建設は、最高点から6.0点以内の適地を固定件数で切らず、候補全体から適性加重抽選する。
|
||||
- 適地評価そのもの(肥沃度、資源、人口圧力、農地、統制、交易、移動コスト)は維持する。
|
||||
- **都市老朽化を削除**。
|
||||
- `ageWear`、経年摩耗更新、老朽化による収容力低下、関連設定値を削除した。
|
||||
- 国家の「制度老朽化」は別概念なので維持する。
|
||||
- 長期都市人口の一方向減少を抑制。
|
||||
- 災害・戦争などで過去ピーク人口から落ちた都市に回復成長を付与する。
|
||||
- 回復中のみ必要備蓄・供給ストレス条件を緩めるが、人口は都市収容力を超えて増えない。
|
||||
- `postShockRecoveryGrowth = 0.045`、過剰収容時の減衰率は `overCapacityAttrition = 0.020`。
|
||||
|
||||
### v12 長期確認
|
||||
|
||||
固定乱数・32×32・初期人口8,000で500年進行した参考値:
|
||||
|
||||
- 200年: 7都市 / 都市人口3,306
|
||||
- 300年: 23都市 / 都市人口14,478
|
||||
- 400年: 23都市 / 都市人口13,646
|
||||
- 500年: 28都市 / 都市人口18,545
|
||||
|
||||
短期的な減少は災害・戦争により残るが、都市老朽化による恒久的な下押しはなく、被害後に再成長できることを確認した。
|
||||
Loading…
Add table
Add a link
Reference in a new issue