From d7d5242fe940461f27a73f43730a4672135ef439 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 9 Nov 2026 02:00:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9E=B6=E6=9E=84=E6=94=B6=E6=95=9B=E6=89=B9?= =?UTF-8?q?=E7=AC=AC2=E6=AD=A5:=20=E6=A8=A1=E5=9D=97=E8=A1=A8=E6=AE=8B?= =?UTF-8?q?=E7=95=99=E5=BC=95=E7=94=A8=E5=85=AB=E5=A4=84=E6=94=B9=E6=8C=87?= =?UTF-8?q?=E2=80=94=E2=80=94=E5=AD=98=E6=A1=A3=E5=BA=8F=E5=88=97=E5=8C=96?= =?UTF-8?q?=E6=96=AD=E7=82=B9=E9=94=AE=E7=99=BB=E8=AE=B0=E5=8D=95=E6=BA=90?= =?UTF-8?q?=E6=94=B9=E3=80=8C=E6=89=BF=E8=BD=BD=E4=BB=B6=E5=B8=B8=E9=87=8F?= =?UTF-8?q?=E7=99=BB=E8=AE=B0=E3=80=8D;=20=E5=86=92=E9=99=A9=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=B8=89=E5=B1=82=E7=BB=93=E6=9E=84=E6=94=B9=E6=8C=87?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=B1=BB=E5=A4=B4=E6=B3=A8;=20=E6=9C=AF?= =?UTF-8?q?=E8=AF=AD=E8=A1=A8=E6=95=88=E6=9E=9C=E7=AB=AF=E5=8F=A3=E4=BB=B6?= =?UTF-8?q?=E6=9C=BA=E5=88=B6=E5=BD=92=E5=B1=9E=E6=94=B9=E6=8C=87=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E7=B1=BB=E6=96=87=E4=BB=B6=E5=A4=B4=E6=B3=A8;=20?= =?UTF-8?q?=E6=88=98=E6=96=97=E7=BB=93=E7=AE=97=E5=88=A0=E6=9E=B6=E6=9E=84?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=A8=A1=E5=9D=97=E8=A1=8C=E5=B0=BE=E5=B7=B4?= =?UTF-8?q?;=20code-conventions=20=E7=BB=84=E5=90=88=E6=A0=B9=E6=88=90?= =?UTF-8?q?=E5=91=98=E4=B8=8E=E8=BE=B9=E7=95=8C=E6=94=B9=E6=8C=87=E5=90=84?= =?UTF-8?q?=E4=BB=B6=E5=A4=B4=E6=B3=A8;=20AGENTS.md=20=E5=AF=BC=E8=88=AA?= =?UTF-8?q?=E8=A1=8C=E4=B8=8E=E7=BA=A2=E7=BA=BF=E8=A1=8C=E3=80=81doc-conve?= =?UTF-8?q?ntions=20=E5=94=AF=E4=B8=80=E6=BA=90=E8=A1=8C=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=E8=A7=84=E5=88=99=E5=BD=A2=E6=80=81=E6=8E=AA?= =?UTF-8?q?=E8=BE=9E;=20architecture=20=E6=B5=8B=E8=AF=95=E5=9F=9F?= =?UTF-8?q?=E8=87=AA=E5=BC=95=E7=94=A8=E4=B8=8E=E6=9E=B6=E6=9E=84=E5=9B=BE?= =?UTF-8?q?=20region=20=E6=A0=87=E7=AD=BE=E6=94=B9=E3=80=8C=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E5=BD=92=E5=B1=9E=E3=80=8D;=20archify=20=E9=87=8D?= =?UTF-8?q?=E6=B8=B2=E6=9F=93=20ok=20errors=3D0=E3=80=82=E5=87=AD=E6=8D=AE?= =?UTF-8?q?:=20--docs=20=E8=83=BD=E5=8A=9B=E5=AE=A1=E8=AE=A1=E7=BA=A2?= =?UTF-8?q?=E9=A1=B926=3D=E3=80=8C=E6=A8=A1=E5=9D=97=E5=BD=92=E5=B1=9E?= =?UTF-8?q?=E3=80=8D=E8=8A=82=E9=94=9A=E5=BE=85=E7=AC=AC3=E6=AD=A5?= =?UTF-8?q?=E8=BF=81=E7=A7=BB(=E5=88=A0=E8=8A=82=E5=AF=BC=E8=87=B4,=20?= =?UTF-8?q?=E9=9D=9E=E6=9C=AC=E6=AD=A5=E7=BC=BA=E9=99=B7),=20=E5=85=B6?= =?UTF-8?q?=E4=BD=99=E9=97=B8=E4=B8=8E=E5=9F=BA=E7=BA=BF=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 4 +- .../engineering/architecture/architecture.md | 2 +- .../architecture/code-architecture.html | 94 +++++++++---------- .../architecture/code-architecture.json | 4 +- design/engineering/code-conventions.md | 2 +- design/engineering/doc-conventions.md | 2 +- design/gdd/systems/冒险循环/冒险结构.md | 2 +- design/gdd/systems/战斗循环/战斗结算.md | 2 +- design/gdd/systems/表现与支撑/存档序列化.md | 2 +- design/gdd/术语表.md | 2 +- 10 files changed, 58 insertions(+), 58 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index beba83ec..5bf5ddbb 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -48,7 +48,7 @@ | 定文档方案 / 写文档 / 改文档前 | `design/engineering/doc-conventions.md`——白话写作 / 载体分工 / 用语 / 结构骨架 / 会话记录与生命周期 | | 概念切分与互链 | `design/engineering/concept-conventions.md`——概念封装 / 跨文档引用 / 归档与事实源 | | 系统设计 / 增删文档 | `design/gdd/02-系统清单.md`——根索引 + 中文规范名↔英文代号对照 | -| 架构(唯一事实源) | `design/engineering/architecture/architecture.md`(只写约束面:分层/模块归属/数据流/API 边界;实现现状归代码与头注,闸清单归 `game/tests/README.md`)——历史决策沿革查 git commit log,不另设决策文档;修订须用户发令 | +| 架构(唯一事实源) | `design/engineering/architecture/architecture.md`(只写依赖规则面:分层/目录归属/数据流/架构原则;模块级归属归代码头注,闸清单归 `game/tests/README.md`)——历史决策沿革查 git commit log,不另设决策文档;修订须用户发令 | | 术语与已锁数值 | 规范名与定义 = `design/gdd/术语表.md`(全库唯一对照表,仅 owner 文档可修订);现行数值 = `game/data/tables/*.tres`;规则(概念面)= 各系统 owner 文档;取值域与字段契约 = `game/data/schemas/*.gd`。冲突须显式提出,禁默默改值 | | 现在做什么 / 待办与待裁 | 根 `roadmap.md` 顶部「当前位」节+迭代总表六列 · 待办唯一登记处 `待办清单.md` · 批次过程与结论查 git 提交信息与 `reports/` | @@ -122,7 +122,7 @@ - 文件头 = `##` 文档注释,介绍本模块是什么;禁写变更叙事(改动史查 git log);禁文档反向链接(code-conventions §1.4.1) - 数值单一事实源——玩法数值只存 `data/tables/`(.tres)经 ConfigDB 单点读取;禁数值字面量与自建 `load()` 表路径 - RNG 单点——禁 `randomize()`/自建 RandomNumberGenerator,随机只经 `RngService` 统一流 -- 架构事实唯一源——架构事实只认 `design/engineering/architecture/architecture.md`(只写约束面:分层/模块归属/数据流/API 边界;实现现状归代码与头注);禁立第二架构文档或决策文档体系,历史决策记录只进 git commit log;架构文档写权限=用户专属,agent 与技能只读(2026-11-07 用户裁) +- 架构事实唯一源——架构事实只认 `design/engineering/architecture/architecture.md`(只写依赖规则面:分层/目录归属/数据流/架构原则;模块级归属归代码头注);禁立第二架构文档或决策文档体系,历史决策记录只进 git commit log;架构文档写权限=用户专属,agent 与技能只读(2026-11-07 用户裁) - Core 层零 UI 依赖——完整战斗必须可 `--headless --script` 跑通;fail-fast——数据校验错误一律致命中止,无软回退 - spec-AC 一致性——规约与验收标准禁止在同一输入上给出不同答案;评审隔离——`/design-review` 必须独立会话跑(与 `/design-system` 隔离) - 像素结构件——先抄后造、验收写成像素级判据、±1px 坐标推导(process-conventions 第 7 节) diff --git a/design/engineering/architecture/architecture.md b/design/engineering/architecture/architecture.md index f6b4ac2c..e33786b0 100644 --- a/design/engineering/architecture/architecture.md +++ b/design/engineering/architecture/architecture.md @@ -143,7 +143,7 @@ 1. **autoload 边界**——ConfigDB / RngService 的公开面(--script 模式不加载 autoload 且不注册全局标识符,测试文件自带显式实例化夹具); 2. **场景契约**——探针场景的信号外发面与视图单元接口(信号外发、setter 只读注入),禁直引呈现层实现内部。 -测试域是所有层的消费方,进入方式限于上述两类边界;除此之外的依赖方向一律与「模块归属」节依赖单向性同规。 +测试域是所有层的消费方,进入方式限于上述两类边界;除此之外的依赖方向一律与「目录归属」节依赖单向性同规。 --- diff --git a/design/engineering/architecture/code-architecture.html b/design/engineering/architecture/code-architecture.html index 7e7002ca..105dcf37 100644 --- a/design/engineering/architecture/code-architecture.html +++ b/design/engineering/architecture/code-architecture.html @@ -5160,7 +5160,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE. - + @@ -5390,8 +5390,8 @@ OTHER DEALINGS IN THE FONT SOFTWARE. debug_overlay.gd - - 存档管理 · save_manager.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 存档管理 · save_manager.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 元进度 · meta_progression.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 元进度 · meta_progression.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 战斗编排器 · battle_orchestrator.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 战斗编排器 · battle_orchestrator.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 扫雷规则 · minesweeper_rules.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 扫雷规则 · minesweeper_rules.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 棋盘生成 · board_generator.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 棋盘生成 · board_generator.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 棋盘数据 · board_data.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 棋盘数据 · board_data.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 效果引擎 · effect_engine.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 效果引擎 · effect_engine.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 冒险运行器 · adventure_runner.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 冒险运行器 · adventure_runner.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 关卡运行器 · level_runner.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 关卡运行器 · level_runner.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 伤害控制 · damage_controller.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 伤害控制 · damage_controller.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 伤害公式 · damage_math.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 伤害公式 · damage_math.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 奖励经济 · reward_economy.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 奖励经济 · reward_economy.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 技能抽奖 · skill_lottery.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 技能抽奖 · skill_lottery.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 同调 · attunement.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 同调 · attunement.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 行动经济 · action_economy.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 行动经济 · action_economy.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 特长引擎 · feats_engine.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 特长引擎 · feats_engine.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 状态容器 · status_container.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 状态容器 · status_container.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 单位容器 · unit_container.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 单位容器 · unit_container.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 秘宝数据 · treasure_items.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 秘宝数据 · treasure_items.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 配置解析 · config_db_resolver.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 配置解析 · config_db_resolver.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - 配置交叉校验 · config_db_cross_validator.gd · 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + 配置交叉校验 · config_db_cross_validator.gd · 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) - - - 逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表) + + + 逻辑层 core/(目录层级约束=architecture.md「目录归属」表) @@ -5883,7 +5883,7 @@ OTHER DEALINGS IN THE FONT SOFTWARE.

逻辑层与边界

    -
  • • core/ 模块与拆件全量清单以 architecture.md「模块归属」表为准,本图只画顶层导航件
  • +
  • • core/ 全量清单以 architecture.md「目录归属」表与各文件头注为准,本图只画顶层导航件
  • • ConfigDB/RngService 两单例经 project.godot autoload 全局供给
  • • smoke/ 下 13 个测试探针场景属测试基建,不入架构主干
diff --git a/design/engineering/architecture/code-architecture.json b/design/engineering/architecture/code-architecture.json index 12997487..8365c635 100644 --- a/design/engineering/architecture/code-architecture.json +++ b/design/engineering/architecture/code-architecture.json @@ -556,7 +556,7 @@ }, { "kind": "region", - "label": "逻辑层 core/(模块与拆件清单=architecture.md「模块归属」表)", + "label": "逻辑层 core/(目录层级约束=architecture.md「目录归属」表)", "wraps": [ "save", "meta", @@ -689,7 +689,7 @@ "dot": "rose", "title": "逻辑层与边界", "items": [ - "core/ 模块与拆件全量清单以 architecture.md「模块归属」表为准,本图只画顶层导航件", + "core/ 全量清单以 architecture.md「目录归属」表与各文件头注为准,本图只画顶层导航件", "ConfigDB/RngService 两单例经 project.godot autoload 全局供给", "smoke/ 下 13 个测试探针场景属测试基建,不入架构主干" ] diff --git a/design/engineering/code-conventions.md b/design/engineering/code-conventions.md index 3384eabc..e7824c1b 100644 --- a/design/engineering/code-conventions.md +++ b/design/engineering/code-conventions.md @@ -18,7 +18,7 @@ 设计稿与实现同尺度:功能 = 类(状态 + 行为 + 信号),类是封装的最小交付单位。工具性纯函数只允许挂在明确的宿主类下(静态装配器/工厂),不允许无主散落。 ### 1.3 依赖单向,核心写调用完成 -依赖方向唯一:`views →(信号)→ 组合根 →(写调用)→ core`。视图零核心写调用(纯 setter / 信号外发优先);"读核心状态 → 拼展示文案"集中于装配器(presenter);核心写接口(settle_batch / player_request_refresh / runner 推进)只允许在组合根出现——组合根=main.gd+其构造注入的组合根拆件(成员与边界见架构文档「模块归属·呈现层」),视图不得直连拆件。 +依赖方向唯一:`views →(信号)→ 组合根 →(写调用)→ core`。视图零核心写调用(纯 setter / 信号外发优先);"读核心状态 → 拼展示文案"集中于装配器(presenter);核心写接口(settle_batch / player_request_refresh / runner 推进)只允许在组合根出现——组合根=main.gd+其构造注入的组合根拆件(成员与边界见各件文件头注),视图不得直连拆件。 ### 1.4 命名 = 领域命名,禁止系统 ID 前缀 文件名与类名禁止 `a1_`/`b1_`/`c1_` 等系统 ID 前缀(`a1_board_generator.gd` → `board_generator.gd`)。设计追溯不靠前缀:代码↔设计的追溯由 GDD 文档承担,系统 ID 只作为文档的追溯锚;文件头注不承担追溯职责,不写任何文档链接(§1.4.1)。豁免:D2 schema 类与 autoload;文档/夹具登记名(如 b4_golden)属文档层。 diff --git a/design/engineering/doc-conventions.md b/design/engineering/doc-conventions.md index c52b162b..31a2fb46 100644 --- a/design/engineering/doc-conventions.md +++ b/design/engineering/doc-conventions.md @@ -63,7 +63,7 @@ | 规则 | 内容 | |---|---| | 树形文档体系 | 全部设计文档构成一棵树;文档增删必须同步根索引 `design/gdd/02-系统清单.md` | -| 架构事实唯一源 | `design/engineering/architecture/architecture.md` 是架构事实的唯一权威(分层/模块归属/数据流/API 边界——只写约束面:难以改变的分层、依赖规则、边界契约与关键决策;实现现状归代码与代码头注,实现历史归 git commit log);禁建第二份架构文档;**架构文档写权限=用户专属**(2026-11-07 用户裁:agent 与技能只读,修订须用户发起) | +| 架构事实唯一源 | `design/engineering/architecture/architecture.md` 是架构事实的唯一权威(分层/目录归属/数据流/架构原则——只写依赖规则面:难以改变的分层、目录层级约束、依赖方向与数据流;模块级归属归代码头注,接口契约规范源=各系统 GDD,实现历史归 git commit log);禁建第二份架构文档;**架构文档写权限=用户专属**(2026-11-07 用户裁:agent 与技能只读,修订须用户发起) | | 一页纸节点 | 一节、一条规则 ≤一页纸(约 ≤80 行);装不下就拆节 | | 一系统一文档 | 不建 analysis 推演件;两三句能说清的"为什么"直接写进设计目的或规则正文 | | 正文只写现行规则 | 禁删除线、"(作废)"、"(日期+拍板)"式注记;审计信息入对应文档附录 | diff --git a/design/gdd/systems/冒险循环/冒险结构.md b/design/gdd/systems/冒险循环/冒险结构.md index 6ac674eb..e4a48f49 100644 --- a/design/gdd/systems/冒险循环/冒险结构.md +++ b/design/gdd/systems/冒险循环/冒险结构.md @@ -193,7 +193,7 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜 - **停点粒度**:快照只挂选路停点(入口呈现/战斗胜利后/兑付确认后的选路态)——这是唯一可恢复停点形态。战斗进行中不写快照:中断恢复后**当场战斗从头打**,棋盘中局不入档。 - **七字段拍板面**:关卡序号 / 节点位 / 生命 / 本关加成区 / GP 钱包 / 商店已购档 / 已抽模板。附随件(续玩正确性必需):主种子 + 取数计数器(rng 快照契约回填——续玩从断点号位精确续接原随机时间线,已抽模板零重抽)、钥石累计(Boss 掉落逐杀入账的中途值,终局摘要不失真)、已到节点序(关卡画面图条重建)、秘宝库存(奖励节点已选件防静默丢失)、**奖励选择态**(三选一停点中断:已选件 / 同调位替换在途——续玩已选不丢失;候选一致性=快照现状非强求 feature,2026-10-01 用户裁决)、**件获取次数计数**(kind 维度派生账本——断点附随件与读数承载)、**令牌池余库**(bonus_deck 逐枚还原——TP0 扩列,池消耗即上限的续玩正确性承载;旧版断点缺键=满库重建防御口径,单版本周期)、**商店货架态**(当前货架三件 + 本次进店已购次数;离开店=空架合法态,货架续玩由确定性重放承载:重进店同种子同货架逐位)、**Y 刷新池余量**(attune_refresh_y——冒险周期池消耗余量随断点:续玩优先读断点、不自参数面整额重注入,堵「用完 Y 退菜单再续玩满血复活」可利用漏洞;旧断点缺键回退参数面=旧档行为零变化)。 - **中断与退出两口径分离**(2026-09-29 用户裁决):中断(关游戏)= 留断点可续;**退出冒险**(放弃流程)= 失败同型结算 + **清除断点**——退出后「继续上局」不再出现。 -- **获得日记键**(gain_journal,断点 28 键):获得记录明细(三层结构归架构文档「模块归属·核心层」GainJournal 行——本域只登记断点面口径)随断点保存,回退策略 plain;旧档回退两态——旧断点缺日记键=汇总键直载并跳过比对(零迁移损失),日记在档=由日记推导汇总值与留存值比对,不符即报错中止(迁移正确性自检)。 +- **获得日记键**(gain_journal,断点 28 键):获得记录明细(三层结构归实现类头注——本域只登记断点面口径)随断点保存,回退策略 plain;旧档回退两态——旧断点缺日记键=汇总键直载并跳过比对(零迁移损失),日记在档=由日记推导汇总值与留存值比对,不符即报错中止(迁移正确性自检)。 - **续玩**:自断点重建到最近停点(逐字段回填 + 随机流回填),停点处玩家重新选路。三结局(冒险成功/失败/放弃)一律清断点——断点只活在一个进行中的冒险上。 - 与测量面的关系:断点面只在注入存档承载的正式冒险路径生效;模拟/冒烟不注入 = 整面静默,MC 逐项比对零扰动。 diff --git a/design/gdd/systems/战斗循环/战斗结算.md b/design/gdd/systems/战斗循环/战斗结算.md index ddf743a3..9289d8d1 100644 --- a/design/gdd/systems/战斗循环/战斗结算.md +++ b/design/gdd/systems/战斗循环/战斗结算.md @@ -100,7 +100,7 @@ 基础 9 类写的是裸机制的账:玩家没有任何专长时,结算流水的每一行都出得了这九类。有了专长之后,效果引擎会在段内挂点插入额外的结算效果,这类效果写**扩展行**。扩展行是**一个**行型,不是每种专长效果各占一个行型——具体插的是哪种效果,由行携带的效果身份(effect_id 载荷)说明,呈现层按身份取各自的行文案。专长会不断增加、效果种类不可穷举,行型词表因此对扩展类封口:新增专长效果只新增载荷身份,不再新增行型。 -扩展行与基础行共用同一套行协议:公共字段、来源归因、两层豁免、无来源即炸,全部照常生效。发射时点由段序骨架的挂点决定(时序与挂点施加面、效果身份清单与各发射点归代码文件头注承载——模块归属见架构文档「模块归属·功能层」battle_orchestrator 行),本节只管这行是什么、带什么字段。扩展行携带效果身份(effect_id 载荷)。 +扩展行与基础行共用同一套行协议:公共字段、来源归因、两层豁免、无来源即炸,全部照常生效。发射时点由段序骨架的挂点决定(时序与挂点施加面、效果身份清单与各发射点归代码文件头注承载),本节只管这行是什么、带什么字段。扩展行携带效果身份(effect_id 载荷)。 举证:本节为行协议约定,无计算。 diff --git a/design/gdd/systems/表现与支撑/存档序列化.md b/design/gdd/systems/表现与支撑/存档序列化.md index 7ef528be..45908d21 100644 --- a/design/gdd/systems/表现与支撑/存档序列化.md +++ b/design/gdd/systems/表现与支撑/存档序列化.md @@ -56,7 +56,7 @@ 第二条边界是反面清单:局内资源不入存档。行动点、储备行动点、道具库存、生命、GP 全部单局清零——各归各的系统管,没有局内数值需要持久化。若未来某局内资源要开放跨局携带(如储备行动点跨战斗携带),须修订其池规则并向本系统登记持久化归属,禁止静默超域。 -**唯一豁免 = `breakpoint` 断点域**:断点是冒险进行中的瞬态快照,不是跨局携带——里面的生命/GP/道具库存只在「续玩上局」时还原进局内,冒险收束(冒险成功/失败/放弃)即整域清除,永远不会渗进永久进度。反面清单的管辖对象因此收窄为 `meta` 永久进度域(冒烟域界扫描收窄到 meta 域);断点域自身的字段口径归[冒险结构](../冒险循环/冒险结构.md)登记。断点顶层键(28 键)的登记单源=冒险应用层的断点键表(键→回退策略;现行契约见架构文档「模块归属·核心层」breakpoint_store 行);写读已换代为各件自交片段——主角账/停点件/关卡件各自写读自己的键(缺键回退策略随领域知识归各件),冒险应用层是唯一拼盘落盘口(收齐各件片段拼成顶层快照后写盘,写触发点不变)。**关卡完成停点的同调未用行留存**:`aux_items` 键在此停点形态含同调未用行(「同调行始终留在 treasure_inventory」与「键值形态逐位不变」在关卡完成停点互斥,采行留存;玩家可见 C 区投影零变化,24 停点充能读数逐位一致)。 +**唯一豁免 = `breakpoint` 断点域**:断点是冒险进行中的瞬态快照,不是跨局携带——里面的生命/GP/道具库存只在「续玩上局」时还原进局内,冒险收束(冒险成功/失败/放弃)即整域清除,永远不会渗进永久进度。反面清单的管辖对象因此收窄为 `meta` 永久进度域(冒烟域界扫描收窄到 meta 域);断点域自身的字段口径归[冒险结构](../冒险循环/冒险结构.md)登记。断点顶层键(28 键)的登记单源=冒险应用层的断点键表(键→回退策略,键表本体=承载件的常量登记);写读已换代为各件自交片段——主角账/停点件/关卡件各自写读自己的键(缺键回退策略随领域知识归各件),冒险应用层是唯一拼盘落盘口(收齐各件片段拼成顶层快照后写盘,写触发点不变)。**关卡完成停点的同调未用行留存**:`aux_items` 键在此停点形态含同调未用行(「同调行始终留在 treasure_inventory」与「键值形态逐位不变」在关卡完成停点互斥,采行留存;玩家可见 C 区投影零变化,24 停点充能读数逐位一致)。 **三存档位**:存档是 3 个独立的 JSON 文件(三个独立存档文件,槽文件名只经存档系统单点派生,槽 1 禁复用旧单档名),字典键一律字符串。写盘目标=当前激活槽的文件;启动(boot)不读任何槽文件——启动态=无激活态,不读写;激活态由选档界面的「新档」或「进档」建立。数据模型(现行 = v7;示例值全为零值默认态): diff --git a/design/gdd/术语表.md b/design/gdd/术语表.md index 010ff0c7..30e7b3b2 100644 --- a/design/gdd/术语表.md +++ b/design/gdd/术语表.md @@ -94,7 +94,7 @@ | 术语 | 定义 | |---|---| -| 效果端口件 | 战斗业务类(伤害管线/行动经济)唯一的效果发射出口:收事件与载荷、交效果引擎结算、取回命中批——业务类零引擎直连(机制归属见架构文档「模块归属·功能层」battle_orchestrator 行;实现类 EffectPort) | +| 效果端口件 | 战斗业务类(伤害管线/行动经济)唯一的效果发射出口:收事件与载荷、交效果引擎结算、取回命中批——业务类零引擎直连(机制归属见实现类 EffectPort 文件头注) | | 掷格件 | 装配期格面资源摇号的承载件:池行装配、区间行 roll、权重合成(订阅加权/board_skew 两路投影);受理账面留守地图战斗资源件(机制归属同上;实现类 RewardRoller) | | `seal_missed` | 封印落空事件(旧名已换代):封印动作落在安全格上时发出,订阅面据此做限次与豁免判定 | | `forgive_seal_miss` | 本场首次封印落空豁免——专长「完美保险」的效果类型,`domain=battle` 首例;有效误标=误标总数 − 豁免数,豁免不改写误标账 |