Files
TheTree_mock/docs/ARCHITECTURE.md

57 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# アーキテクチャ
ゲームルールの正本は [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章に従う。
各機能は小さなシミュレーションとしてテストを先に用意し、画面から独立して検証できるようにします。