54 lines
5.0 KiB
YAML
54 lines
5.0 KiB
YAML
# Architecture Registry — Dungeon Sweeper
|
||
# 生成:2026-09-12(solo 授权代决批)
|
||
# 规则:只增不改;立场变更 = 旧条目标 status: superseded_by + 新增条目(永改既有条目)
|
||
# 命名注记(2026-09-15):A1–D6 系统代号已清偿为中文规范名(对照表见 design/gdd/02-系统清单.md);interfaces 两条目键名同批改领域命名(a2_event_surface→minesweeper_event_surface、b1_settlement_trigger→settlement_trigger)。
|
||
# 设计层立场(状态归属/接口契约/锚验收)登记在 design/registry/entities.yaml——本文件只登记实现级架构立场
|
||
|
||
interfaces:
|
||
- name: minesweeper_event_surface
|
||
signals: [cell_revealed, flag_judged, round_end_board]
|
||
note: GDD 概念名 round_end 的 排雷玩法 实现实名 = round_end_board;行动经济 直发 = round_end_stopped(payload 同构)
|
||
- name: settlement_trigger
|
||
contract: 战斗结算 订阅 行动经济 相位→Waiting 触发结算;只读 last_round_end + 相位观测量;不依赖事件到达序
|
||
- name: presentation_subscription_rule
|
||
contract: 呈现层永不直接订阅 排雷玩法/行动经济——只订 战斗结算 步骤流 / level_runner(切片缺陷②教训固化)
|
||
|
||
api_decisions:
|
||
- name: renderer
|
||
decision: gl_compatibility(Forward+ 否决——D3D12 新驱动线降险;战斗表现 出现 HDR 2D 需求时复议)
|
||
- name: window_base
|
||
decision: 1280×800 基座 + stretch canvas_items + aspect expand(全部键显式落盘,防引擎默认漂移)
|
||
- name: autoload_set
|
||
decision: {ConfigDB, RngService, SaveManager, MetaProgression}(定名锁定);战斗编排器等核心类由组合根按局实例化,非 autoload
|
||
- name: board_rendering
|
||
decision: 棋盘渲染已 Node2D 化(2026-09-23 迁移批:BoardView = Control 壳 + SubViewport + Node2D 世界,类名/信号/公共方法契约不变);B 区战斗舞台同批 Node2D 化(2026-09-26)
|
||
- name: cjk_font
|
||
decision: CJK 字体随包发行并设 theme 默认字体(运行时默认字体无 CJK 字形)——HUD框架 正式化硬性前置 + 导出 checklist 项
|
||
- name: test_carrier
|
||
decision: 双载体(--headless --script 逻辑冒烟 + headless 场景探针)+ 静态扫描域 S1–S8 + CI 外部 wall-clock 超时;gdUnit4 deferred(数据配置 OQ1 关闭形态)
|
||
- name: save_contract
|
||
decision: SCHEMA_VERSION 比较逻辑归 存档序列化(存档版本 > 当前 = 拒读);RNG 快照 = master_seed + 各流 scope 计数器 + 意图/窗口选择序列,切出须在 scope 事件边界外(无正在执行中的 open_stream 实例——战斗结算 编排保证)
|
||
|
||
core_decisions:
|
||
- name: effect_engine_interpreter
|
||
decision: 内容效果行为=发布订阅解释器(EffectEngine)——结算管线同步 emit 事件(无队列无异步),内容行以「订阅哪个事件 on / 什么条件 when / 什么效果 do」声明订阅,解释器遍历持有订阅集返回按声明序排列的命中,发射点按组合规则施加;旧 23 挂点枚举与按件 id 特判消亡
|
||
note: 事件/效果类型/条件事实/算子四词表封闭于 EffectEngine 常量(单一事实源,schema 校验引用);遍历序=数据表声明序写死保种子复放;订阅重建=每战 begin_battle(中途获得下一战生效);不做通用拦截器链,改写窗口=判定点就地按声明序施加(R2 裁决)
|
||
|
||
forbidden_patterns:
|
||
- pattern: autoload_global_event_bus
|
||
detail: 否决中心事件总线——组合根直连 signal 接线
|
||
- pattern: lambda_capture_self_cross_lifetime
|
||
detail: core↔core 信号连接只许方法 Callable;发射者禁持有订阅者反向引用(防循环引用/生命周期延长)
|
||
- pattern: bare_autoload_global_identifier_in_core
|
||
detail: core/ 禁裸引用 ConfigDB/RngService 全局标识符(--script 模式不注册——parse error;构造注入 only)
|
||
- pattern: global_rand_functions_in_gameplay
|
||
detail: randi()/randf()/randf_range() 与 randomize() 同禁(全局 RNG 绕开 RngService——数据配置 Rule 5 补全)
|
||
- pattern: core_extends_control_or_tscn_preload
|
||
detail: core/ 禁 extends Control/Node2D、禁 .tscn preload(数据配置 Rule 7)
|
||
- pattern: second_caller_of_battle_domain_apis
|
||
detail: 敌人系统/增益状态/地图战斗资源 战斗域 API 唯一调用方 = 战斗结算;排雷玩法/增益状态/地图战斗资源 零相互直调(静态扫描 S7——战斗结算 AC-43)
|
||
|
||
- name: hero_override_parameter_passing
|
||
decision: 主角加成值经 encounter 显式参数传入(begin_battle 增 hero_atk/hero_max_hp 字段;敌人系统.spawn 增 atk_override/max_hp_override 参数,-1 = 表值兜底)——db.hero 表值运行期只读(切片原表写通道 _apply_hero_override/runner 写表废除)
|
||
note: 2026-09-13 E4 完成;接口漂移 = 敌人系统.spawn 签名 +2 参数、战斗结算 encounter +2 字段(正式侧 战斗结算/敌人系统 GDD 修订随正式化批);ui_tune_probe ⑦⑧ 为表不可变 + 单次加成的回归断言载体
|