diff --git a/design/dev/architecture/code-architecture.html b/design/dev/architecture/code-architecture.html new file mode 100644 index 00000000..4986e8c3 --- /dev/null +++ b/design/dev/architecture/code-architecture.html @@ -0,0 +1,15322 @@ + + + + + + + 游戏代码实现架构(Godot 场景·脚本·运行时树) + + + + + + + + +
+ +
+
+
+

游戏代码实现架构(Godot 场景·脚本·运行时树)

+
+
+ + + + + + + +
+ + 游戏代码实现架构(Godot 场景·脚本·运行时树) + 由 Archify 生成的架构图。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ConfigDB 配置库 · core/config_db.gd · 架构组件 + + + + ConfigDB 配置库 + core/config_db.gd + + + + RngService 随机流 · core/rng_service.gd · 架构组件 + + + + RngService 随机流 + core/rng_service.gd + + + + 组合根 Main · main.gd · 运行时建树 · 架构组件 · main.tscn + + + + 组合根 Main + main.gd · 运行时建树 + main.tscn + + + + 关卡地图屏 · 三停点选路 · 架构组件 · level_map_screen.gd + + + + 关卡地图屏 + 三停点选路 + level_map_screen.gd + + + + 战斗展示区 · 站桩·回合·战斗日志 · 战斗主界面(UiAssembler 拼装) · battle_stage_view.gd + + + + 战斗展示区 + 站桩·回合·战斗日志 + battle_stage_view.gd + + + + 角色信息区 · 攻防·秘宝槽·特性 · 战斗主界面(UiAssembler 拼装) · hero_info_panel_view.gd + + + + 角色信息区 + 攻防·秘宝槽·特性 + hero_info_panel_view.gd + + + + 棋盘区 · 棋盘·AP条·气泡·特效 · 战斗主界面(UiAssembler 拼装) · board_zone_view.gd + + + + 棋盘区 + 棋盘·AP条·气泡·特效 + board_zone_view.gd + + + + 商店·营地浮层 · 商品卡·三柜台 · 战斗主界面(UiAssembler 拼装) · ui_assembler.gd 拼装 + + + + 商店·营地浮层 + 商品卡·三柜台 + ui_assembler.gd 拼装 + + + + 结算特效 · 跨区飞行演出 · 战斗主界面(UiAssembler 拼装) · settlement_fx_view.gd + + + + 结算特效 + 跨区飞行演出 + settlement_fx_view.gd + + + + 暂停浮层 · 只读入口 · 浮层与对话框(组合根挂载) · pause_overlay.gd + + + + 暂停浮层 + 只读入口 + pause_overlay.gd + + + + 设置浮层 · 音量·全屏·减动效 · 浮层与对话框(组合根挂载) · settings_overlay.gd + + + + 设置浮层 + 音量·全屏·减动效 + settings_overlay.gd + + + + 生涯浮层 · 六类九项汇总 · 浮层与对话框(组合根挂载) · career_overlay.gd + + + + 生涯浮层 + 六类九项汇总 + career_overlay.gd + + + + 三选一浮层 · 通关停点·三卡点选 · 浮层与对话框(组合根挂载) · curio_pick_overlay.gd + + + + 三选一浮层 + 通关停点·三卡点选 + curio_pick_overlay.gd + + + + 确认对话框 · 通用确认弹窗 · 浮层与对话框(组合根挂载) · confirm_dialog.gd + + + + 确认对话框 + 通用确认弹窗 + confirm_dialog.gd + + + + 调试浮窗 · DS_DEBUG 门控 · 浮层与对话框(组合根挂载) · debug_overlay.gd + + + + 调试浮窗 + DS_DEBUG 门控 + debug_overlay.gd + + + + 存档管理 · save_manager.gd · 逻辑层 core/(21 件·名称清单) + + + + 存档管理 + save_manager.gd + + + + 元进度 · meta_progression.gd · 逻辑层 core/(21 件·名称清单) + + + + 元进度 + meta_progression.gd + + + + 战斗编排器 · battle_orchestrator.gd · 逻辑层 core/(21 件·名称清单) + + + + 战斗编排器 + battle_orchestrator.gd + + + + 扫雷规则 · minesweeper_rules.gd · 逻辑层 core/(21 件·名称清单) + + + + 扫雷规则 + minesweeper_rules.gd + + + + 棋盘生成 · board_generator.gd · 逻辑层 core/(21 件·名称清单) + + + + 棋盘生成 + board_generator.gd + + + + 棋盘数据 · board_data.gd · 逻辑层 core/(21 件·名称清单) + + + + 棋盘数据 + board_data.gd + + + + 效果引擎 · effect_engine.gd · 逻辑层 core/(21 件·名称清单) + + + + 效果引擎 + effect_engine.gd + + + + 冒险运行器 · adventure_runner.gd · 逻辑层 core/(21 件·名称清单) + + + + 冒险运行器 + adventure_runner.gd + + + + 关卡运行器 · level_runner.gd · 逻辑层 core/(21 件·名称清单) + + + + 关卡运行器 + level_runner.gd + + + + 伤害控制 · damage_controller.gd · 逻辑层 core/(21 件·名称清单) + + + + 伤害控制 + damage_controller.gd + + + + 伤害公式 · damage_math.gd · 逻辑层 core/(21 件·名称清单) + + + + 伤害公式 + damage_math.gd + + + + 奖励经济 · reward_economy.gd · 逻辑层 core/(21 件·名称清单) + + + + 奖励经济 + reward_economy.gd + + + + 技能抽奖 · skill_lottery.gd · 逻辑层 core/(21 件·名称清单) + + + + 技能抽奖 + skill_lottery.gd + + + + 同调 · attunement.gd · 逻辑层 core/(21 件·名称清单) + + + + 同调 + attunement.gd + + + + 行动经济 · action_economy.gd · 逻辑层 core/(21 件·名称清单) + + + + 行动经济 + action_economy.gd + + + + 特长引擎 · feats_engine.gd · 逻辑层 core/(21 件·名称清单) + + + + 特长引擎 + feats_engine.gd + + + + 状态容器 · status_container.gd · 逻辑层 core/(21 件·名称清单) + + + + 状态容器 + status_container.gd + + + + 单位容器 · unit_container.gd · 逻辑层 core/(21 件·名称清单) + + + + 单位容器 + unit_container.gd + + + + 秘宝数据 · treasure_items.gd · 逻辑层 core/(21 件·名称清单) + + + + 秘宝数据 + treasure_items.gd + + + + 配置解析 · config_db_resolver.gd · 逻辑层 core/(21 件·名称清单) + + + + 配置解析 + config_db_resolver.gd + + + + 配置交叉校验 · config_db_cross_validator.gd · 逻辑层 core/(21 件·名称清单) + + + + 配置交叉校验 + config_db_cross_validator.gd + + + + + + + + 翻开·插旗·和弦 + + + + 秘宝两步交互 + + + + 存档读写 + + + + 结算回流 + + + + 挂载 + + + + + + 战斗主界面(UiAssembler 拼装) + + + + + 浮层与对话框(组合根挂载) + + + + + 逻辑层 core/(21 件·名称清单) + + + + + +

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

组合根与建树

+
+
    +
  • • main.tscn 全场景仅 1 个节点,整棵界面树由 main.gd 运行时搭建(1392 行)
  • +
  • • 战斗界面由 UiAssembler 拼装;商店/营地浮层即拼装于战斗根内
  • +
  • • 元进度账本与存档同由组合根持有(main.gd preload)
  • +
+
+ +
+
+
+

战斗动作链

+
+
    +
  • • 棋盘区 翻开/插旗/和弦 → 组合根 → 战斗编排器规则判定
  • +
  • • 结算回流:血量攻防→角色信息区 · 受击演出→展示区 · AP 扣减与提示→棋盘区
  • +
  • • 秘宝槽点击走两步交互:角色信息区 → 棋盘区/即刻生效
  • +
+
+ +
+
+
+

逻辑层与边界

+
+
    +
  • • core/ 21 件仅列名称,源码出处见各节点 sources 指针
  • +
  • • ConfigDB/RngService 两单例经 project.godot autoload 全局供给
  • +
  • • smoke/ 下 13 个测试探针场景属测试基建,不入架构主干
  • +
+
+
+ +
+ + + + diff --git a/design/dev/architecture/code-architecture.json b/design/dev/architecture/code-architecture.json new file mode 100644 index 00000000..c8713aea --- /dev/null +++ b/design/dev/architecture/code-architecture.json @@ -0,0 +1,698 @@ +{ + "schema_version": 1, + "diagram_type": "architecture", + "meta": { + "title": "游戏代码实现架构(Godot 场景·脚本·运行时树)", + "output": "code-architecture.html", + "quality_profile": "showcase", + "locale": "zh-CN", + "viewBox": [ + 1320, + 760 + ] + }, + "components": [ + { + "id": "config_db", + "type": "database", + "label": "ConfigDB 配置库", + "sublabel": "core/config_db.gd", + "pos": [ + 1140, + 168 + ], + "size": [ + 140, + 44 + ] + }, + { + "id": "rng_service", + "type": "backend", + "label": "RngService 随机流", + "sublabel": "core/rng_service.gd", + "pos": [ + 1140, + 222 + ], + "size": [ + 140, + 44 + ] + }, + { + "id": "main", + "type": "frontend", + "label": "组合根 Main", + "sublabel": "main.gd · 运行时建树", + "tag": "main.tscn", + "pos": [ + 480, + 60 + ], + "size": [ + 200, + 72 + ] + }, + { + "id": "level_map", + "type": "frontend", + "label": "关卡地图屏", + "sublabel": "三停点选路", + "pos": [ + 1060, + 60 + ], + "size": [ + 180, + 70 + ], + "tag": "level_map_screen.gd" + }, + { + "id": "stage", + "type": "frontend", + "label": "战斗展示区", + "sublabel": "站桩·回合·战斗日志", + "pos": [ + 40, + 260 + ], + "size": [ + 170, + 88 + ], + "tag": "battle_stage_view.gd" + }, + { + "id": "hero", + "type": "frontend", + "label": "角色信息区", + "sublabel": "攻防·秘宝槽·特性", + "pos": [ + 250, + 260 + ], + "size": [ + 170, + 88 + ], + "tag": "hero_info_panel_view.gd" + }, + { + "id": "board", + "type": "frontend", + "label": "棋盘区", + "sublabel": "棋盘·AP条·气泡·特效", + "pos": [ + 510, + 260 + ], + "size": [ + 170, + 88 + ], + "tag": "board_zone_view.gd" + }, + { + "id": "shop_camp", + "type": "frontend", + "label": "商店·营地浮层", + "sublabel": "商品卡·三柜台", + "pos": [ + 730, + 260 + ], + "size": [ + 170, + 88 + ], + "tag": "ui_assembler.gd 拼装" + }, + { + "id": "settle", + "type": "frontend", + "label": "结算特效", + "sublabel": "跨区飞行演出", + "pos": [ + 918, + 260 + ], + "size": [ + 170, + 88 + ], + "tag": "settlement_fx_view.gd" + }, + { + "id": "pause", + "type": "frontend", + "label": "暂停浮层", + "sublabel": "只读入口", + "pos": [ + 120, + 420 + ], + "size": [ + 152, + 56 + ], + "tag": "pause_overlay.gd" + }, + { + "id": "settings", + "type": "frontend", + "label": "设置浮层", + "sublabel": "音量·全屏·减动效", + "pos": [ + 288, + 420 + ], + "size": [ + 152, + 56 + ], + "tag": "settings_overlay.gd" + }, + { + "id": "career", + "type": "frontend", + "label": "生涯浮层", + "sublabel": "六类九项汇总", + "pos": [ + 464, + 420 + ], + "size": [ + 152, + 56 + ], + "tag": "career_overlay.gd" + }, + { + "id": "curio", + "type": "frontend", + "label": "三选一浮层", + "sublabel": "通关停点·三卡点选", + "pos": [ + 632, + 420 + ], + "size": [ + 152, + 56 + ], + "tag": "curio_pick_overlay.gd" + }, + { + "id": "confirm", + "type": "frontend", + "label": "确认对话框", + "sublabel": "通用确认弹窗", + "pos": [ + 800, + 420 + ], + "size": [ + 152, + 56 + ], + "tag": "confirm_dialog.gd" + }, + { + "id": "debug", + "type": "frontend", + "label": "调试浮窗", + "sublabel": "DS_DEBUG 门控", + "pos": [ + 968, + 420 + ], + "size": [ + 152, + 56 + ], + "tag": "debug_overlay.gd" + }, + { + "id": "save", + "type": "database", + "label": "存档管理", + "pos": [ + 96, + 554 + ], + "size": [ + 130, + 48 + ], + "sublabel": "save_manager.gd" + }, + { + "id": "meta", + "type": "database", + "label": "元进度", + "pos": [ + 244, + 554 + ], + "size": [ + 130, + 48 + ], + "sublabel": "meta_progression.gd" + }, + { + "id": "orch", + "type": "backend", + "label": "战斗编排器", + "pos": [ + 383, + 554 + ], + "size": [ + 130, + 48 + ], + "sublabel": "battle_orchestrator.gd" + }, + { + "id": "rules", + "type": "backend", + "label": "扫雷规则", + "pos": [ + 540, + 554 + ], + "size": [ + 130, + 48 + ], + "sublabel": "minesweeper_rules.gd" + }, + { + "id": "boardgen", + "type": "backend", + "label": "棋盘生成", + "pos": [ + 688, + 554 + ], + "size": [ + 130, + 48 + ], + "sublabel": "board_generator.gd" + }, + { + "id": "boarddata", + "type": "database", + "label": "棋盘数据", + "pos": [ + 836, + 554 + ], + "size": [ + 130, + 48 + ], + "sublabel": "board_data.gd" + }, + { + "id": "effects", + "type": "backend", + "label": "效果引擎", + "pos": [ + 984, + 554 + ], + "size": [ + 130, + 48 + ], + "sublabel": "effect_engine.gd" + }, + { + "id": "adventure", + "type": "backend", + "label": "冒险运行器", + "pos": [ + 1132, + 554 + ], + "size": [ + 130, + 48 + ], + "sublabel": "adventure_runner.gd" + }, + { + "id": "levelrun", + "type": "backend", + "label": "关卡运行器", + "pos": [ + 96, + 616 + ], + "size": [ + 130, + 48 + ], + "sublabel": "level_runner.gd" + }, + { + "id": "dmgctl", + "type": "backend", + "label": "伤害控制", + "pos": [ + 244, + 616 + ], + "size": [ + 130, + 48 + ], + "sublabel": "damage_controller.gd" + }, + { + "id": "dgmath", + "type": "backend", + "label": "伤害公式", + "pos": [ + 392, + 616 + ], + "size": [ + 130, + 48 + ], + "sublabel": "damage_math.gd" + }, + { + "id": "reward", + "type": "backend", + "label": "奖励经济", + "pos": [ + 540, + 616 + ], + "size": [ + 130, + 48 + ], + "sublabel": "reward_economy.gd" + }, + { + "id": "lottery", + "type": "backend", + "label": "技能抽奖", + "pos": [ + 688, + 616 + ], + "size": [ + 130, + 48 + ], + "sublabel": "skill_lottery.gd" + }, + { + "id": "attune", + "type": "backend", + "label": "同调", + "pos": [ + 836, + 616 + ], + "size": [ + 130, + 48 + ], + "sublabel": "attunement.gd" + }, + { + "id": "action", + "type": "backend", + "label": "行动经济", + "pos": [ + 984, + 616 + ], + "size": [ + 130, + 48 + ], + "sublabel": "action_economy.gd" + }, + { + "id": "feats", + "type": "backend", + "label": "特长引擎", + "pos": [ + 1132, + 616 + ], + "size": [ + 130, + 48 + ], + "sublabel": "feats_engine.gd" + }, + { + "id": "status", + "type": "backend", + "label": "状态容器", + "pos": [ + 96, + 678 + ], + "size": [ + 130, + 48 + ], + "sublabel": "status_container.gd" + }, + { + "id": "units", + "type": "backend", + "label": "单位容器", + "pos": [ + 244, + 678 + ], + "size": [ + 130, + 48 + ], + "sublabel": "unit_container.gd" + }, + { + "id": "treasure", + "type": "database", + "label": "秘宝数据", + "pos": [ + 392, + 678 + ], + "size": [ + 130, + 48 + ], + "sublabel": "treasure_items.gd" + }, + { + "id": "resolver", + "type": "backend", + "label": "配置解析", + "pos": [ + 540, + 678 + ], + "size": [ + 130, + 48 + ], + "sublabel": "config_db_resolver.gd" + }, + { + "id": "xvalid", + "type": "backend", + "label": "配置交叉校验", + "pos": [ + 688, + 678 + ], + "size": [ + 170, + 48 + ], + "sublabel": "config_db_cross_validator.gd" + } + ], + "boundaries": [ + { + "kind": "region", + "label": "战斗主界面(UiAssembler 拼装)", + "wraps": [ + "stage", + "hero", + "board", + "shop_camp", + "settle" + ] + }, + { + "kind": "region", + "label": "浮层与对话框(组合根挂载)", + "wraps": [ + "pause", + "settings", + "career", + "curio", + "confirm", + "debug" + ] + }, + { + "kind": "region", + "label": "逻辑层 core/(21 件·名称清单)", + "wraps": [ + "save", + "meta", + "orch", + "rules", + "boardgen", + "boarddata", + "effects", + "adventure", + "levelrun", + "dmgctl", + "dgmath", + "reward", + "lottery", + "attune", + "action", + "feats", + "status", + "units", + "treasure", + "resolver", + "xvalid" + ] + } + ], + "connections": [ + { + "id": "main-stage", + "from": "main", + "to": "stage", + "fromSide": "bottom", + "toSide": "top" + }, + { + "id": "main-hero", + "from": "main", + "to": "hero", + "fromSide": "bottom", + "toSide": "top" + }, + { + "id": "board-main", + "from": "board", + "to": "main", + "label": "翻开·插旗·和弦", + "fromSide": "top", + "toSide": "bottom" + }, + { + "id": "hero-board", + "from": "hero", + "to": "board", + "label": "秘宝两步交互", + "fromSide": "right", + "toSide": "left" + }, + { + "id": "main-save", + "from": "main", + "to": "save", + "label": "存档读写", + "variant": "dashed", + "fromSide": "left", + "toSide": "top", + "via": [ + [ + 28, + 96 + ], + [ + 28, + 512 + ], + [ + 161, + 512 + ] + ], + "labelSegment": 0 + }, + { + "id": "orch-stage", + "from": "orch", + "to": "stage", + "label": "结算回流", + "variant": "emphasis", + "fromSide": "top", + "toSide": "bottom", + "via": [ + [ + 448, + 376 + ], + [ + 125, + 376 + ] + ], + "labelSegment": 1 + }, + { + "id": "main-levelmap", + "from": "main", + "to": "level_map", + "label": "挂载", + "fromSide": "right", + "toSide": "left" + } + ], + "cards": [ + { + "dot": "cyan", + "title": "组合根与建树", + "items": [ + "main.tscn 全场景仅 1 个节点,整棵界面树由 main.gd 运行时搭建(1392 行)", + "战斗界面由 UiAssembler 拼装;商店/营地浮层即拼装于战斗根内", + "元进度账本与存档同由组合根持有(main.gd preload)" + ] + }, + { + "dot": "emerald", + "title": "战斗动作链", + "items": [ + "棋盘区 翻开/插旗/和弦 → 组合根 → 战斗编排器规则判定", + "结算回流:血量攻防→角色信息区 · 受击演出→展示区 · AP 扣减与提示→棋盘区", + "秘宝槽点击走两步交互:角色信息区 → 棋盘区/即刻生效" + ] + }, + { + "dot": "rose", + "title": "逻辑层与边界", + "items": [ + "core/ 21 件仅列名称,源码出处见各节点 sources 指针", + "ConfigDB/RngService 两单例经 project.godot autoload 全局供给", + "smoke/ 下 13 个测试探针场景属测试基建,不入架构主干" + ] + } + ] +}