Preserve approved pixel tower prototype as development baseline

This commit is contained in:
Codex
2026-09-09 07:51:16 +09:00
commit 423fd6dd2e
915 changed files with 95193 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
# アーキテクチャ
ゲームルールの正本は [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章に従う。
各機能は小さなシミュレーションとしてテストを先に用意し、画面から独立して検証できるようにします。