# アーキテクチャ ゲームルールの正本は [GAME_SPECIFICATION.md](GAME_SPECIFICATION.md)、状態遷移・処理順・不変条件は [SYSTEM_SPECIFICATION.md](SYSTEM_SPECIFICATION.md)、重要な判断理由は [DESIGN_DECISIONS.md](DESIGN_DECISIONS.md) を参照する。本書はその仕様を現在のGodotプロジェクトへ配置するための技術構成を扱う。 ## 責務 - `autoload/game_clock.gd`: 1分固定Tick、11段階の処理順、速度変更、一時停止 - `autoload/game_state.gd`: 非Gold資源とUI向けGoldミラー、世界樹Rankなどの全体状態 - `autoload/simulation_runtime.gd`: Command、各Service、Domain Event、Snapshotの唯一の実行時配線 - `autoload/event_bus.gd`: UIとシミュレーション間の疎結合な通知 - `scripts/core/`: Command Queue、Transaction、決定的RNG、ID、Save、Digest - `scripts/world/`、`scripts/construction/`: Cell正本、主要占有と独立した副占有、ROUTEからPathへの原子投影、密度・動的Cost付きPath Graph、Connector Queue、掘削・建築Job - `scripts/facility/`: 稼働状態、Queue、Service Slot、サービス境界 - `scripts/inventory/`: Stack、Reservation、物流Request、Dispatcher - `scripts/mana/`: 歩行経路と独立した供給Network、蓄電、停電 - `scripts/economy/`: Goldの正本となる複式台帳と資源Adapter - `scripts/guest/`、`scripts/staff/`: Need/Utility、実経路移動、Shift、Task Dispatcher - `scripts/relationship/`、`scripts/events/`: 関係指標、Shield、Route Lock、データ駆動EventとActor Lock - `scripts/authority/`: Heat、Incident、Evidence、監査巡回と処分境界 - `scripts/defense/`: Raid Wave、戦闘参加者、扉・設備・目的物、Active Skill、撤退と結果境界 - `scripts/operations/`: 06:00営業日締め・朝境界、需要と30分ごとの来客計画、未払・破綻をまとめる14日運営Coordinator - `scripts/progression/`: 累計条件、逐次Rank昇格、Map Bounds派生値、World拡張の原子境界 - `scripts/core/save_service.gd`: 原子的Save、Autosave世代、Checksum検証、Migration/Recovery入口 - `scripts/core/performance_budget.gd`: Simulation、Path、Save/Loadの診断用性能予算 - `scripts/data/`、`data/facilities/`、`data/characters/`: MVP施設16種、客8クラス×4種族、雇用候補20人、ユニーク人物の厳密な静的定義境界 - `scenes/`: 実Worldを表示する運営Dashboardと入力。ゲームルールを直接持たせない Runtime Snapshot v6はWorldとPathに加え、`excavation`、`spatial_subslots`、`route_projection`、`facility_infrastructure`を独立した正本として保持する。復元時はSpatial、base+ROUTE、Path、Adapter、Projectorの順に候補を組み立て、全crosslinkが成立してからlive stateへ切り替える。旧v5の通路代理施設はこの候補内で実ROUTEへ移行する。 建設完成は通知を一時保留し、施設登録または通路投影と全crosslinkの検証後にだけ外部signalを確定する。途中で失敗した場合は保留通知を破棄し、Construction、World、Path、Ledger、関連Serviceを直前Snapshotへ戻してSimulationを理由付きで停止する。 ## マップ座標 施設の位置は `(x, y, layer)` で扱います。 - `y > 0`: 地上ゾーン - `y = 0`: 境界ゾーン - `y < 0`: 地下ゾーン - `layer = FRONT`: 客が利用する表側 - `layer = BACK`: 従業員、物流、管理設備が利用する裏側 「地下だがフロントレイヤーにあるカジノ」のような組み合わせは正常です。地下とバックを同義として扱いません。 ## 実装する単位 1. S0: 決定的Simulation基盤とAtomic Save 2. S1: World、A*経路、施設建設 3. S2: 施設Queue、在庫、物流、Mana、台帳 4. S3: 欲求ベースの客AI、シフト、Task、疲労 5. S4: 関係Event、Choice、Cost予約、Content Filter 6. S5: 行政・監査、Evidence、処分の冪等適用、Wave単位の防衛 7. S6: 保存世代、Migration、Recovery、性能予算 実装順はSYSTEM_SPECIFICATION.mdの第22章、ゲームとしてのMVP合格条件はGAME_SPECIFICATION.mdの第18章、System TestはSYSTEM_SPECIFICATION.mdの第21章に従う。 各機能は小さなシミュレーションとしてテストを先に用意し、画面から独立して検証できるようにします。