diff --git a/design/research/game-architecture-2026-10-05.html b/design/research/game-architecture-2026-10-05.html new file mode 100644 index 00000000..5a467021 --- /dev/null +++ b/design/research/game-architecture-2026-10-05.html @@ -0,0 +1,15087 @@ + + + + + + + Dungeon Sweeper game/ 架构(系统级) + + + + + + + + +
+ +
+
+
+

Dungeon Sweeper game/ 架构(系统级)

+
+
+ + + + + + + +
+ + Dungeon Sweeper game/ 架构(系统级) + 由 Archify 生成的架构图。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 组合根 main.tscn · main.gd — 装配·分派·转发 · presentation/ 呈现层 · 入口场景 + + + + 组合根 main.tscn + main.gd — 装配·分派·转发 + 入口场景 + + + + 呈现器簇 · hud_presenter 等 11 件 · presentation/ 呈现层 + + + + 呈现器簇 + hud_presenter 等 11 件 + + + + 棋盘 · 舞台视图 · board_view 等 9 件 · presentation/ 呈现层 + + + + 棋盘 · 舞台视图 + board_view 等 9 件 + + + + 屏幕 · 弹窗 · HUD · level_map_screen 等 17 件 · presentation/ 呈现层 + + + + 屏幕 · 弹窗 · HUD + level_map_screen 等 17 件 + + + + 调试 · 模拟簇 · debug_session 等 4 件 · presentation/ 呈现层 · DS_DEBUG 门控 + + + + 调试 · 模拟簇 + debug_session 等 4 件 + DS_DEBUG 门控 + + + + 配置服务 ConfigDB · config_db — 表单点入口 · core/ 全局服务(autoload) · autoload + + + + 配置服务 ConfigDB + config_db — 表单点入口 + autoload + + + + 冒险循环域 · adventure_runner 等 3 件 · core/ 玩法域 + + + + 冒险循环域 + adventure_runner 等 3 件 + + + + 战斗域 · battle_orchestrator 等 5 件 · core/ 玩法域 · 边最多枢纽 + + + + 战斗域 + battle_orchestrator 等 5 件 + 边最多枢纽 + + + + 随机服务 RngService · rng_service — 全局随机 · core/ 全局服务(autoload) · autoload + + + + 随机服务 RngService + rng_service — 全局随机 + autoload + + + + 数值表层 · schemas ×18 · .tres ×18 · data/ 数据层 + + + + 数值表层 + schemas ×18 · .tres ×18 + + + + 道具 · 奇物 · 同调域 · relics_engine 等 3 件 · core/ 玩法域 + + + + 道具 · 奇物 · 同调域 + relics_engine 等 3 件 + + + + 元进度 · 存档域 · meta_progression · save_manager · core/ 玩法域 + + + + 元进度 · 存档域 + meta_progression · save_manager + + + + 棋盘 · 扫雷域 · board_data 等 3 件 · core/ 玩法域 + + + + 棋盘 · 扫雷域 + board_data 等 3 件 + + + + 奖励经济域 · reward_economy 等 2 件 · core/ 玩法域 + + + + 奖励经济域 + reward_economy 等 2 件 + + + + + + 装配 + + + + + + 冒险编排 · 注入 db/rng + + + + 组合根引用 + + + + 读表 + + + + 开战 + + + + 掷点 + + + + 棋盘 · 扫雷 + + + + 伤害 / 掉落 + + + + 结算 · 奖励抽取 + + + + 奇物 / 同调 + + + + 落档 + + + + 加载 .tres + + + + + + presentation/ 呈现层 + + + + + core/ 全局服务(autoload) + + + + + core/ 玩法域 + + + + + data/ 数据层 + + + + + +

+ + + + + + + + + +
+ + +
+
+
+
+

呈现层 presentation/

+
+
    +
  • • 组合根装配呈现器并转发信号
  • +
  • • ui_assembler 落地 26 件视图
  • +
  • • 调试簇挂 DS_DEBUG 门控接线
  • +
+
+ +
+
+
+

规则引擎 core/

+
+
    +
  • • 冒险循环是唯一试玩入口
  • +
  • • 战斗域边最多,向四域出边
  • +
  • • 道具域三侧消费,同调落存档
  • +
+
+ +
+
+
+

数据与全局服务

+
+
    +
  • • ConfigDB autoload 表单点入口
  • +
  • • 组合根统一注入 db 与 RngService
  • +
  • • 依赖走构造器注入,禁绕过单点
  • +
+
+
+ +
+ + + + diff --git a/design/research/game-architecture-2026-10-05.json b/design/research/game-architecture-2026-10-05.json new file mode 100644 index 00000000..726ec68e --- /dev/null +++ b/design/research/game-architecture-2026-10-05.json @@ -0,0 +1,73 @@ +{ + "schema_version": 1, + "diagram_type": "architecture", + "meta": { + "title": "Dungeon Sweeper game/ 架构(系统级)", + "locale": "zh-CN", + "output": "game-architecture-2026-10-05.html", + "quality_profile": "showcase", + "viewBox": [1130, 650], + "views": [ + { "id": "main-loop", "label": "主循环路径", "focus": ["main-root", "adventure-loop", "battle-domain", "board-mines"], "note": "组合根装配冒险循环,AdventureRunner 逐关推进,关卡内开战进入战斗枢纽与棋盘扫雷。" }, + { "id": "battle-hub", "label": "战斗枢纽", "focus": ["battle-domain", "board-mines", "reward-econ", "item-domain", "rng-service"], "note": "battle_orchestrator 是边最多的域:棋盘生成、扫雷判定、伤害结算、奖励抽取、道具消费、随机掷点。" }, + { "id": "data-path", "label": "数据通路", "focus": ["config-db", "data-tables", "meta-save", "adventure-loop"], "note": "ConfigDB autoload 单点加载 18 组数值表;组合根注入 db,元进度与存档经同一条配置通路。" } + ] + }, + "components": [ + { "id": "main-root", "type": "frontend", "label": "组合根 main.tscn", "sublabel": "main.gd — 装配·分派·转发", "tag": "入口场景", "pos": [30, 70], "size": [180, 110] }, + { "id": "presenters", "type": "frontend", "label": "呈现器簇", "sublabel": "hud_presenter 等 11 件", "pos": [250, 70], "size": [180, 110] }, + { "id": "views-board", "type": "frontend", "label": "棋盘 · 舞台视图", "sublabel": "board_view 等 9 件", "pos": [470, 70], "size": [180, 110] }, + { "id": "views-screen", "type": "frontend", "label": "屏幕 · 弹窗 · HUD", "sublabel": "level_map_screen 等 17 件", "pos": [690, 70], "size": [180, 110] }, + { "id": "debug-cluster", "type": "frontend", "label": "调试 · 模拟簇", "sublabel": "debug_session 等 4 件", "tag": "DS_DEBUG 门控", "pos": [910, 70], "size": [180, 110] }, + + { "id": "config-db", "type": "database", "label": "配置服务 ConfigDB", "sublabel": "config_db — 表单点入口", "tag": "autoload", "pos": [30, 265], "size": [190, 120] }, + { "id": "adventure-loop", "type": "backend", "label": "冒险循环域", "sublabel": "adventure_runner 等 3 件", "pos": [260, 255], "size": [180, 140] }, + { "id": "battle-domain", "type": "backend", "label": "战斗域", "sublabel": "battle_orchestrator 等 5 件", "tag": "边最多枢纽", "pos": [490, 255], "size": [210, 150] }, + { "id": "rng-service", "type": "backend", "label": "随机服务 RngService", "sublabel": "rng_service — 全局随机", "tag": "autoload", "pos": [760, 275], "size": [180, 100] }, + + { "id": "data-tables", "type": "database", "label": "数值表层", "sublabel": "schemas ×18 · .tres ×18", "pos": [30, 500], "size": [190, 110] }, + { "id": "item-domain", "type": "backend", "label": "道具 · 奇物 · 同调域", "sublabel": "relics_engine 等 3 件", "pos": [260, 490], "size": [180, 140] }, + { "id": "meta-save", "type": "backend", "label": "元进度 · 存档域", "sublabel": "meta_progression · save_manager", "pos": [470, 490], "size": [200, 140] }, + { "id": "board-mines", "type": "backend", "label": "棋盘 · 扫雷域", "sublabel": "board_data 等 3 件", "pos": [700, 490], "size": [190, 140] }, + { "id": "reward-econ", "type": "backend", "label": "奖励经济域", "sublabel": "reward_economy 等 2 件", "pos": [930, 500], "size": [170, 130] } + ], + "boundaries": [ + { "kind": "region", "label": "presentation/ 呈现层", "wraps": ["main-root", "presenters", "views-board", "views-screen", "debug-cluster"] }, + { "kind": "region", "label": "core/ 全局服务(autoload)", "wraps": ["config-db", "rng-service"] }, + { "kind": "region", "label": "core/ 玩法域", "wraps": ["adventure-loop", "battle-domain", "item-domain", "meta-save", "board-mines", "reward-econ"] }, + { "kind": "region", "label": "data/ 数据层", "wraps": ["data-tables"] } + ], + "connections": [ + { "id": "main-to-presenters", "from": "main-root", "to": "presenters", "label": "装配" }, + { "id": "presenters-to-views-board", "from": "presenters", "to": "views-board" }, + { "id": "presenters-to-views-screen", "from": "presenters", "to": "views-screen", "fromSide": "top", "toSide": "top" }, + { "id": "main-to-adventure", "from": "main-root", "to": "adventure-loop", "label": "冒险编排 · 注入 db/rng", "variant": "emphasis", "labelDy": -20 }, + { "id": "main-to-configdb", "from": "main-root", "to": "config-db", "label": "组合根引用", "fromSide": "bottom", "toSide": "top", "labelDy": 24 }, + { "id": "adventure-to-configdb", "from": "adventure-loop", "to": "config-db", "label": "读表", "labelDy": 26 }, + { "id": "adventure-to-battle", "from": "adventure-loop", "to": "battle-domain", "label": "开战" }, + { "id": "battle-to-rng", "from": "battle-domain", "to": "rng-service", "label": "掷点" }, + { "id": "battle-to-mines", "from": "battle-domain", "to": "board-mines", "label": "棋盘 · 扫雷", "fromSide": "bottom", "toSide": "top" }, + { "id": "battle-to-items", "from": "battle-domain", "to": "item-domain", "label": "伤害 / 掉落" }, + { "id": "battle-to-reward", "from": "battle-domain", "to": "reward-econ", "label": "结算 · 奖励抽取", "fromSide": "bottom", "toSide": "top", "labelDy": -14, "labelDx": -110 }, + { "id": "adventure-to-items", "from": "adventure-loop", "to": "item-domain", "label": "奇物 / 同调", "labelDy": 30 }, + { "id": "items-to-meta", "from": "item-domain", "to": "meta-save", "label": "落档", "labelDy": 24 }, + { "id": "configdb-to-tables", "from": "config-db", "to": "data-tables", "label": "加载 .tres", "labelDy": 30 } + ], + "cards": [ + { "dot": "cyan", "title": "呈现层 presentation/", "items": [ + "组合根装配呈现器并转发信号", + "ui_assembler 落地 26 件视图", + "调试簇挂 DS_DEBUG 门控接线" + ] }, + { "dot": "emerald", "title": "规则引擎 core/", "items": [ + "冒险循环是唯一试玩入口", + "战斗域边最多,向四域出边", + "道具域三侧消费,同调落存档" + ] }, + { "dot": "rose", "title": "数据与全局服务", "items": [ + "ConfigDB autoload 表单点入口", + "组合根统一注入 db 与 RngService", + "依赖走构造器注入,禁绕过单点" + ] } + ] +}