Files
TheTree_mock/docs/ARCHITECTURE.md

4.4 KiB
Raw Permalink Blame History

アーキテクチャ

ゲームルールの正本は GAME_SPECIFICATION.md、状態遷移・処理順・不変条件は SYSTEM_SPECIFICATION.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章に従う。

各機能は小さなシミュレーションとしてテストを先に用意し、画面から独立して検証できるようにします。