Files
gplan-2/design/dev/architecture/code-architecture.json
T

699 lines
12 KiB
JSON
Raw 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.
{
"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 个测试探针场景属测试基建,不入架构主干"
]
}
]
}