From 5cf7f4b6ae077d2372177ca25517fed9a8020434 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 01:46:35 +0800 Subject: [PATCH 01/15] =?UTF-8?q?=E7=AB=8B=E3=80=8A=E7=89=B9=E6=80=A7?= =?UTF-8?q?=E3=80=8B=E6=A6=82=E5=BF=B5=EF=BC=9A=E5=B1=80=E5=86=85=E5=8A=A0?= =?UTF-8?q?=E5=BC=BA=E7=89=A9=E5=93=81=E7=BB=9F=E4=B8=80=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E4=B8=BA=E3=80=8C=E7=89=B9=E6=80=A7=E3=80=8D=EF=BC=8C=E4=B8=A4?= =?UTF-8?q?=E7=A7=8D=E5=BD=A2=E6=80=81=E6=94=B6=E6=95=9B=E4=B8=BA=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=E5=80=BC=20+=20=E6=96=87=E6=A1=A3/=E7=A7=B0=E8=B0=93/?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=B1=82=E6=A0=87=E8=AF=86=E7=AC=A6=E7=BB=9F?= =?UTF-8?q?=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 design/gdd/systems/冒险循环/特性.md(概念唯一定义文档) 定义=一次冒险内角色自身得到的提升(不是持有物);作用范围、生命周期、 获取途径(战场奖励/商店·训练)、关联与边界五要素齐全;数值一律指路表不入正文 - 02-系统清单:冒险循环补行 + 命名对照表补 ADVENTURE_FEATURE - registry entities.yaml:新增 feature 概念条目(owner/referenced_by)+ adventure_table 字段名同步 - 数据层标识符 112 处换名(值零变更):BONUS_IDS→FEATURE_KINDS、bonus_token_count→feature_quota、 bonus_value→feature_value、token_*/bonus_*_flat→feature_quota_*/feature_value_* - 称谓统一 94 处:旧称「流派件/数值件/本关强化」→ 特性 + 形态修饰语(规则改写型/属性加成型) - 两张 schema 顶部加概念指路注释,代码可直接查到定义文档 - 06-待办清单:BD 分层条目现状改写 + 新增「命名统一后续」条目(relic 词族与类名对齐待实施) 未动:类名与文件名(Godot .uid/.tscn 引用需跑测试自证)、断点存档键(兼容) --- design/gdd/02-系统清单.md | 3 + design/gdd/06-待办清单.md | 14 +- design/gdd/systems/冒险循环/特性.md | 143 ++++++++++++++++++ design/gdd/systems/表现与支撑/HUD框架.md | 4 +- design/gdd/ux/battle.md | 10 +- design/gdd/ux/level-map.md | 2 +- design/registry/entities.yaml | 23 ++- game/core/adventure_runner.gd | 46 +++--- game/core/battle_orchestrator.gd | 8 +- game/core/config_db.gd | 4 +- game/core/config_db_cross_validator.gd | 10 +- game/core/damage_controller.gd | 4 +- game/core/level_runner.gd | 10 +- game/data/schemas/adventure_table.gd | 108 ++++++------- game/data/schemas/meta_tree_table.gd | 8 +- game/data/schemas/relic_table.gd | 11 +- game/data/schemas/shop_table.gd | 2 +- game/data/tables/adventure.tres | 42 ++--- game/data/tables/meta_tree.tres | 2 +- game/data/tables/relics.tres | 8 +- game/data/tables/shop.tres | 2 +- game/presentation/battle_narrator.gd | 6 +- .../presentation/bonus_interact_controller.gd | 4 +- game/presentation/hud_presenter.gd | 8 +- .../views/hero_info_panel_view.gd | 20 +-- game/presentation/views/level_map_screen.gd | 16 +- game/smoke/adventure_monte_carlo.gd | 4 +- game/smoke/level_autoplay.gd | 8 +- game/smoke/smoke_all.gd | 50 +++--- 29 files changed, 378 insertions(+), 202 deletions(-) create mode 100644 design/gdd/systems/冒险循环/特性.md diff --git a/design/gdd/02-系统清单.md b/design/gdd/02-系统清单.md index 198358f4..ad0e25ff 100644 --- a/design/gdd/02-系统清单.md +++ b/design/gdd/02-系统清单.md @@ -45,6 +45,7 @@ | `关卡节点图生成.md` | 单关节点图的逐局随机来源:图模板池、抽签与实例化(实施排队 ADR-0007 裁决后) | 设计草案·拍板点全落文 | | `冒险结构.md` | 整局冒险的关卡序列、失败与大奖励 | 已定稿·自旧体系迁移 | | `难度曲线与Boss.md` | 难度曲线、期望值带与 Boss 设计 | 已定稿·自旧体系迁移 | +| `特性.md` | 一次冒险内角色自身得到的提升(规则改写型 / 属性加成型两种形态) | 已实现·2026-10-05 新立定义 | ### 跨局循环(`systems/跨局循环/`) @@ -96,6 +97,7 @@ | 冒险循环 | 关卡节点图生成 | `NODE_MAP_GENERATION` | —(新立无旧代号) | | 冒险循环 | 冒险结构 | `ADVENTURE_STRUCTURE` | c2 | | 冒险循环 | 难度曲线与Boss | `DIFFICULTY_CURVE` | c3 | +| 冒险循环 | 特性 | `ADVENTURE_FEATURE` | —(新立无旧代号) | | 跨局循环 | 元进度 | `META_PROGRESS` | c4 | | 表现与支撑 | HUD框架 | `HUD_FRAMEWORK` | d1 | | 表现与支撑 | 数据配置 | `DATA_CONFIG` | d2 | @@ -126,3 +128,4 @@ | v1.0 | 2026-09-27 | 节点图生成立项批(用户拍板立项——06 条目「关卡内结构随机生成」随批改状态):`systems/冒险循环/` 新建 `关卡节点图生成.md` 设计草案 v0.1(图模板/模板池/抽签三概念、三级台阶路线、MC 测量对账条款、五拍板点);文档树补行 + 命名对照表补 `NODE_MAP_GENERATION` 行 | | v1.1 | 2026-09-27 | 关卡画面 UX spec 建档(关卡画面 UX 批):`ux/` 表补 `level-map.md` 行——选路枢纽三停点布局、GP 常驻徽章、交互映射与 AC 成文,三项设计提案挂 06 待拍板 | | v1.2 | 2026-10-03 | R3 清账批(gdd_lint 分域随批):四处状态单元格日期批注迁出——敌人系统行事件见敌人系统.md 版本历史 v0.5(技能池批);元进度行见本表 v0.8;camp/shop 行=两文 v1.0 落文(2026-09-30 三裁决执行批);语义零变更 | +| v1.3 | 2026-10-05 | 立《特性》:一次冒险内角色自身得到的提升——此前按内部分类被叫成三个名字(规则类称"流派件"、属性类称"数值件"、界面称"本关强化"),现收敛为一个对象的两种形态枚举;文档树冒险循环补行 + 命名对照表补 `ADVENTURE_FEATURE` 行 | diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index dd8a5ea0..cd018c3e 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -27,17 +27,17 @@ #### 冒险 BD 两类加强物品获取同渠道、纯概率差(用户口径:获取途径须区分开,2026-10-04 提问登记) -**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物品两类——**流派件**(机制件,改规则、带流派标签与档位激活,构筑核心,真正改变局内强度)与**数值件**(属性加成,UI 呈现名「本关强化」,写统一加算区;账本实为冒险域、关间不清零)。现行两类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),流派件只占稀有/罕见档(与数值大件混编),商店仅「货架零流派件挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 +**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **特性**(2026-10-05 定名,定义见 [特性](systems/冒险循环/特性.md)):规则改写型(改规则、带流派标签与档位激活,构筑核心)与属性加成型(属性加成,写统一加算区;账本实为冒险域、关间不清零)两种形态。旧称「流派件 / 数值件 / 本关强化」一律作废。现行两类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),规则改写型只占稀有/罕见档(与属性大件混编),商店仅「货架零规则改写型挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 -**用户期望改动**:将两类的获取途径区分开,流派件获取节奏不依赖纯概率。已呈四备选(均未拍板):① Boss/精英击杀后流派件**专属三选一**,流派件整体退出共享池〔我方推荐:确定性最高,杀戮尖塔/以撒/哈迪斯参照系全支持,与钥石逐杀 Boss 节奏同构;代价=令牌池配额回收+商店保底改向+MC 锚换代〕;② 行为条件投放(累计玩法行为定向出件,防滚雪球工程量大);③ 计步保底(每 N 奖励面必含流派件,改动最小只缓解不根除);④ 双池分离(每面必见流派件,决策密度过强,不推荐)。 +**用户期望改动**:将两种形态的获取途径区分开(规则改写型走战场奖励、属性加成型走商店训练),规则改写型的获取节奏不依赖纯概率。已呈四备选(均未拍板):① Boss/精英击杀后规则改写型**专属三选一**,规则改写型整体退出共享池〔我方推荐:确定性最高,杀戮尖塔/以撒/哈迪斯参照系全支持,与钥石逐杀 Boss 节奏同构;代价=令牌池配额回收+商店保底改向+MC 锚换代〕;② 行为条件投放(累计玩法行为定向出件,防滚雪球工程量大);③ 计步保底(每 N 奖励面必含规则改写型,改动最小只缓解不根除);④ 双池分离(每面必见规则改写型,决策密度过强,不推荐)。 **归属**:[node-reward](ux/node-reward.md)(令牌池与奖励面)+ [冒险结构](systems/冒险循环/冒险结构.md)(商店货架保底);与上条「双层 BD 延期与备选内容总登记」二期件组相关但不同面。 **状态**:待讨论(2026-10-04 用户提问登记,后续展开) -#### 内部分类禁写入玩家可见面——流派件呈现三处违规待改(2026-10-04 用户立意登记) +#### 内部分类禁写入玩家可见面——特性呈现三处违规待改(2026-10-04 用户立意登记) -**现状**:用户立意(方向已明确):流派/数值等内部分类**不得写进玩家可见的道具名称、介绍词或界面**——玩家可根据效果自行推断类别,游戏不得直接点破。查证实态:26 件流派件 display_name 全风味名(奥术余烬/贯穿射击/矿工的执拗等,合规,符合 2026-09-29 playnote 既有批评);**违规三处**(均系迭代 12 呈现补齐批所落,承载用户「局内奖励选了什么看不到」反馈——缺口承载需求仍成立,撤的只是分类字样):① 三选一+商店流派件卡面第二行印流派名(`battle_narrator.gd` relic_card_text,「奥术余烬 · 魔法」式);② 战斗屏 C 区列表标题「流派件」+逐流派聚合行「魔法 ×2 · 档一」(`hero_info_panel_view.gd` + `hud_presenter.gd` relic_holdings_lines);③ 关卡选择页复用同一聚合文案(`level_map_screen.gd`)。**边界**:效果摘要行(「普攻附加必中伤害」)保留——那是件本身在做什么,是玩家推断归类的依据。 +**现状**:用户立意(方向已明确):形态(规则改写型/属性加成型)等内部分类**不得写进玩家可见的名称、介绍词或界面**——玩家可根据效果自行推断类别,游戏不得直接点破。查证实态:26 项规则改写型特性的 display_name 全风味名(奥术余烬/贯穿射击/矿工的执拗等,合规,符合 2026-09-29 playnote 既有批评);**违规三处**(均系迭代 12 呈现补齐批所落,承载用户「局内奖励选了什么看不到」反馈——缺口承载需求仍成立,撤的只是分类字样):① 三选一+商店特性卡面第二行印流派名(`battle_narrator.gd` relic_card_text,「奥术余烬 · 魔法」式);② 战斗屏 C 区列表标题(现为「特性」)+逐流派聚合行「魔法 ×2 · 档一」(`hero_info_panel_view.gd` + `hud_presenter.gd` relic_holdings_lines);③ 关卡选择页复用同一聚合文案(`level_map_screen.gd`)。**边界**:效果摘要行(「普攻附加必中伤害」)保留——那是件本身在做什么,是玩家推断归类的依据。 **连带裁点**:档位激活(同标签 2 件档一/4 件档二)若完全不呈现,玩家只能靠悟——三路待裁:甲=纯隐藏、机制照跑(以撒套装式,最贴用户「流派是玩家挖掘出来的」原则);乙=档位达成那一刻给一次性风味反馈、不点破流派名;丙=连档位机制一起退役。 @@ -45,6 +45,12 @@ **状态**:方向已明确(禁写类别),违规改法与档位呈现三路待讨论(2026-10-04 登记,后续展开) +#### 特性命名统一后续——代码标识符与文件名的对齐(2026-10-05 立) + +**现状**:概念已统一为「特性」(定义见 [特性](systems/冒险循环/特性.md))。本期完成三件——① 定义文档落位;② 称谓统一(代码注释与玩家可见文案,94 处);③ 数据层标识符统一(`adventure_table.gd` / `adventure.tres` 的常量与字段整体换到 feature_* 词族,112 处,值零变更)。**未完三件**:① 规则改写型那套的 relic 词族(RelicTable / relics.tres / relic_id / _relics)与统一词族对齐——文件名与 class_name 改名须同步 Godot `.uid` 与 `.tscn` 引用,非文本层可自证;② 运行层标识符(`_bonus_deck` / `bonus` 加算区 / `_bonus_taken` / `pick_bonus` / BonusInteractController / BonusPickOverlay)换名;③ 断点与存档键(`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`)为存档兼容沿用历史名,是否随存档版本迁移一并换名待定。 + +**状态**:待实施——须在可跑冒烟的迭代批次内完成(本会话按测试执行两入口铁规零测试,改名无法自证) + #### 棋盘战斗键盘/手柄输入(2026-10-04 用户提问登记,排期 Beta) **现状**:战斗棋盘操作现行唯一输入 = 鼠标——左键已开格 = 移动 / 未开格 = 挖掘,右键 = 封印(旗一次性承诺,无拔旗),悬停承载合法性反馈(可挖域微光 + BFS 路径点迹);全仓无 InputEventKey/JoypadButton 处理,project.godot 无自定义 InputMap 动作。**可行性已核(2026-10-04):可做**——分发接缝现成,board_view `action_requested(cell, kind)`(kind ∈ {dig, move, flag_place, flag_pull})是唯一出口,键盘/手柄作第二输入前端产出同款信号即可,规则引擎合法性校验零改动(非法目标两条路径同拦);Godot InputMap 原生支持键盘与手柄(十字键/摇杆)绑定同一动作,与鼠标并存不冲突。用户期望操作形态:十字方向移动;挖掘/封印各一独立键;方向控制选定 8 向挖掘或封印目标(斜向 = 双方向键组合)——8 向恰与现行可挖域(8 向相邻未开格)同集,十字移动与立绘 4 向既有裁决一致;键盘移动语义 = 逐格步进(现行点击 = 任意已开格 BFS 全程,逐格为等价交互变体)。连带设计点(实施批先裁):① 键盘模式需屏上光标格承载现行悬停反馈(无鼠标 hover,合法性指示改挂光标);② 键盘默认键位与手柄键位映射待定;③ 弹层界面(结算/三选一/商店/设置等)现行全鼠标,手柄全覆盖需焦点导航——本条范围 = 棋盘战斗操作,界面焦点导航是否同批待裁;④ 键位自定义是否进设置面待裁。 diff --git a/design/gdd/systems/冒险循环/特性.md b/design/gdd/systems/冒险循环/特性.md new file mode 100644 index 00000000..013fe5db --- /dev/null +++ b/design/gdd/systems/冒险循环/特性.md @@ -0,0 +1,143 @@ +# 特性(Feature) + +> 一次冒险之内,角色**自身得到提升**的载体。它不是包里的东西,而是角色本人的变化——这点决定了它和持有物是两类完全不同的概念,下面的「关联与边界」一节写了怎么区分。 +> +> 同一个概念下有**两种形态**:改写规则的,和抬高属性的。它们是同一个对象的形态枚举值(`form`:规则改写型 / 属性加成型),不是两类东西。 +> +> 状态:**已实现**(2026-10-04 双层 BD 实施批落地)。本文件是特性的唯一定义文档。 +> +> 数值纪律:本文件只写概念、取值域与指路;每件加多少、效果是什么一律不进正文,事实源是 `game/data/tables/relics.tres` 与 `game/data/tables/adventure.tres`。 + +## 设计目的 + +一次冒险要走三关,如果走完时角色和开局毫无区别,中途的每一次取舍就都不算数了。特性就是那个把"这一局玩成了什么样"落下来的东西:让玩家在冒险过程中不断变强,且每一局变强的方向不同。 + +它同时要和跨冒险的成长隔开:永久保留的东西是[魔法道具](../排雷循环/魔法道具.md)(带在身上的物品)与[元进度](../跨局循环/元进度.md)(账号级的树),特性只在当局存在,冒险收束即清零——它不是"你的存档变强了",而是"这一次下矿的你变强了"。 + +**为什么定为"自身提升"而不是"获得物品"**:一旦把它当成捡到的东西,就和魔法道具(持有物)在玩家心里混成一团——而两者的接入方式、生命周期、获取条件都不同。定为自身的提升,边界一句话就能说清:**带在自己身上的是特性,拿在手里的是魔法道具**。 + +## 系统范围 + +| 负责 | 不负责 | +|---|---| +| 特性的定义与形态枚举 | 每件效果怎么接入结算——归挂点所属文档([战斗结算](../战斗循环/战斗结算.md)、[行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md)) | +| 生命周期边界:何时出现、何时生效、何时清零 | 卡面排版与界面呈现细则——见 [HUD框架](../表现与支撑/HUD框架.md) | +| 获取途径的口径与约束 | 魔法道具与元进度——归上表两份文档 | +| 与相邻概念的边界 | 格面资源、关卡节点、商店本身的规则——归各自所属文档 | + +## 在核心循环中的位置 + +``` +【关内】排雷推理 → 战斗结算 → 通关 ──┐ + ├─→ 得到一项特性 ─→ 后续关卡带着它继续 + 奖励节点・商店 ┘ +``` + +特性处在「一次冒险」这一层:它不是一场战斗里的临时状态,也不跨冒险留存。上游是两个获取口,下游是之后所有关卡的排雷与结算——拿到了,下一关就开始生效。 + +## 核心规则 + +### 1. 形态枚举(form) + +特性只有一个名词;需要区分时才描述它的形态,不给形态另起名字。 + +| 形态 | 它改的是什么 | 落在哪里 | 事实源 | +|---|---|---|---| +| `rule` 规则改写型 | 改规则本身:在结算管线的某个挂点上给自己加一条规则;同一标签的持有件数达到阈值时发生质变 | 各结算段挂点;标签与档位由求值服务统一算 | `relics.tres`(逐项定义) | +| `stat` 属性加成型 | 改数值:把自己某项属性抬高,直接改写角色的基础数字 | 冒险加算区(攻击 / 生命上限 / 护甲 / 行动点四轴)、钱包与即时恢复 | `adventure.tres`(配额与值) | + +两种形态的共性:都在当局获得、当局携带、当局失效;都不写账号进度——出现与否由抽取决定,玩家的账号强弱不影响它出现在哪一局。 + +**为什么是同一个对象的两种枚举而不是两个东西**:它们共用一份获取流程、一份持有集、一份生命周期。分成两个名字只会让读者以为有两套系统,而实际上代码里只有一个持有集。 + +### 2. 作用对象与范围 + +- **作用对象**:角色本人,以及角色参与的结算过程。特性不改敌人、不改棋盘生成、不改关卡内容。 +- **时间范围**:整局冒险。两种形态都自获得起对本局剩余所有关卡生效;属性加成型写入加算区后,关与关之间不清零。 +- **归属范围**:不进账号永久进度,不带到下一次冒险。 + +### 3. 生命周期 + +``` +未获得 → 进入候选池 → 作为候选出现 → 选定 → 持有 → 生效 →(冒险收束)清零 + ↑ ↓ + 断点恢复 持有集持续累积 +``` + +| 阶段 | 说明 | +|---|---| +| 候选池构建 | 冒险开局时一次建成。两种形态的候选**现同处一个令牌池**:属性加成型按配额铺开,规则改写型按定义表的有效行铺开。 | +| 出现 | 玩家在两个获取口之一看到若干候选(三选一的形式),看不到整个池。 | +| 选定 | 玩家选定一项后,它从池中剔除,此后任何获取口都不会再见。 | +| 持有与生效 | 进入持有集后立即生效,跨关携带。规则改写型按同一标签的持有项数决定处于哪一档。 | +| 清零 | 冒险以任一结局收束时整集清空;下次开局重建。 | +| 断点恢复 | 进行中的冒险把持有集与剩余候选池一并写入断点,续玩后恢复到同一状态(断点里的键名沿用历史形态,不随本次改名变动)。 | + +### 4. 获取途径 + +| 获取口 | 说明 | 目标渠道分工(尚未实施) | +|---|---|---| +| 战场奖励 | 每关通关给一次三选一(最终关不给——提升只对后续关卡有意义,最终关没有后续);关卡节点图上的奖励节点同样给一次三选一,与之共用同一个候选池。 | 规则改写型今后主要从这里出 | +| 商店 | 花局内金币购买在架的特性;同一种至多一张,买走即从在架令牌移除。 | 属性加成型今后主要从这里出,口径是**训练** | + +**关于商店口径的说明**:商店这一侧走的叙事是「**训练**」——花代价向某位师父学习、借某种卷轴修炼、或把战斗攒下的钱换成一身本领。它不是买一个东西回来,而是把钱换成自己的本领,所以落到命名空间上和奖励那一侧完全相同:都是往同一个持有集里加一项特性。 + +**在册事项**:现行两个获取口完全共用同一个候选池,两种形态出现条件一样、只有出现概率不同。用户已决定把两种形态按渠道分开(规则改写型走战场奖励,属性加成型走商店训练),四个备选方案与执行批次登记在 [06-待办清单](../../06-待办清单.md) 的 BD 分层条目下,本文件不复制。**本文件 4 节表格里的渠道分工写的是目标状态,尚未实施。** + +### 5. 关联与边界 + +| 相邻概念 | 关系(只写关系,不写对方的规则) | +|---|---| +| [魔法道具](../排雷循环/魔法道具.md) | 最需要分清的一对:**魔法道具是拿在手里的物品,特性是角色自身的变化**。两者互不相通——特性永不进同调位,魔法道具永不进当局随机渠道。魔法道具跨冒险保留,特性当局清零。 | +| [元进度](../跨局循环/元进度.md)(树) | 树管账号永久的规则与容量,特性管当局构筑,两层互不代替。 | +| [战斗结算](../战斗循环/战斗结算.md) | 规则改写型的挂点位于结算管线的各段;挂点清单与语义归结算文档。 | +| [行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md) | 部分挂点落在行动点结转与地形处理上,语义归各自文档。 | +| [地图战斗资源](../战斗循环/地图战斗资源.md)(格面资源) | 无关:格面资源是单格的一次性产出,不进持有集。 | +| [关卡节点地图](关卡节点地图.md)、商店 | 是获取口的载体,不是特性的属性。 | +| [存档序列化](../表现与支撑/存档序列化.md) | 断点负载记录持有集与剩余候选池;键名与版本迁移策略归存档文档。 | + +## 依赖与输出 + +| 类型 | 内容 | +|---|---| +| 依赖(概念) | 角色、结算管线、行动点、地形、关卡节点地图、局内金币钱包 | +| 依赖(数据) | `relics.tres`(规则改写型定义行)、`adventure.tres`(属性加成型配额与值)、`shop.tres`(货架取舍) | +| 输出(对外) | 持有集、生效中的形态投影、剩余候选池、档位求值结果 | +| 明确边界 | 不写账号进度、不改敌人与关卡内容、不承载具体数值 | + +## P0 最小闭环 / P1・P2 后置 + +- **P0(已实现)**:两种形态可定义 → 进入候选池 → 在两个获取口之一被选中 → 当局生效 → 收束清零。 +- **P1 后置**:两种形态按渠道分开(见第 4 节的在册事项);两项合成高阶项;同一标签收集到四项以上的后期表达。 +- **P2 后置**:商店里的攻击类型转换服务;喂雷流派是否保留(尚未拍板,登记在 [06-待办清单](../../06-待办清单.md))。 + +## 调参表 + +数值所有权归 [难度曲线与Boss](难度曲线与Boss.md);本文件只列参数与取值域,**不列现行值**。 + +| 参数 | 取值域 | 事实源 | +|---|---|---| +| 规则改写型定义行(标识 / 显示名 / 稀有度 / 标签 / 挂点 / 效果字典) | 各字段封闭枚举,行键白名单封闭 | `game/data/tables/relics.tres` | +| 属性加成型种类 | 封闭词表:攻击 / 生命上限 / 护甲 / 金币 / 行动点 / 恢复 | `game/data/schemas/adventure_table.gd` | +| 属性加成型稀有度档位 | 封闭三档(普通 / 稀有 / 罕见);三档配额是结构锚,改总量须重新拍板而非调参 | 同上 | +| 各形态种类 × 档位的配额与值 | 整数 | `game/data/tables/adventure.tres` | +| 一次三选一的候选展示数 | [1,6] | 同上 | + +## 验收标准 + +1. 两种形态走同一套获取流程,代码里只有一个表示"已持有特性"的集合。 +2. 一次冒险内获得的特性在之后任何关卡都生效;开新冒险后持有集为空。 +3. 一项被选定的特性不再出现在任何后续获取口。 +4. 每个标签至少有一项挂在排雷侧的结算触发点上(防止规则改写型沦为纯战斗数值)。 +5. 玩家可见的文案不出现形态名与内部分类标签——只写效果,归类让玩家自己推断。 +6. 文档与代码里提到它时只有"特性"这一个名字;需要区分形态时用"规则改写型/属性加成型"描述,不得另造称呼。 + +## 待办 + +全部待办单点登记于 [06-待办清单](../../06-待办清单.md)(BD 分层条目、呈现三处待改条目),本节不复制。 + +## 版本历史 + +| 版本 | 日期 | 变更 | +|---|---|---| +| v1.0 | 2026-10-05 | 首次为本概念立定义文档。此前它按内部分类被叫成三个名字,各处互相冲突的定义以本文档为准:统一名词"特性",把原先分开称呼的两类收敛为形态枚举;把性质定为「角色自身得到提升」而非「获得物品」,以此与魔法道具(持有物)划清。 | diff --git a/design/gdd/systems/表现与支撑/HUD框架.md b/design/gdd/systems/表现与支撑/HUD框架.md index bdec3ab5..492afa9e 100644 --- a/design/gdd/systems/表现与支撑/HUD框架.md +++ b/design/gdd/systems/表现与支撑/HUD框架.md @@ -216,7 +216,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | [地图战斗资源](../战斗循环/地图战斗资源.md) | 已开格的奖励身份常读;未开格类型微光(英雄周围 8 格内的未开格显示资源类型——概念定义见本篇「未开格类型微光」节) | | [魔法道具](../排雷循环/魔法道具.md) | 库存条常读;使用交互与目标拾取;板级叠加层信息呈现 | | [棋盘生成](../排雷循环/棋盘生成.md) | 零合法板的诚实告知(数据面经战斗结算上抛,本系统只管提示形态) | -| [地形变异](../排雷循环/地形变异.md) | 全局作用域型三层预告(2026-10-04 首发批——语义正主=地形变异 §全局作用域型):①开战横幅一行(板级变异非空时显示;减动效=静态驻留,轮横幅先例同款双态)②HUD 常驻角标(C 区战斗全程可见防中局遗忘,空态整节隐藏=流派件段先例;摆位 provisional)③帮助手册一行(零交互教学,承载=玩法帮助文案块);数据面经呈现快照 board_variants 投影(核心→呈现唯一读取面),普通图三层恒空态零打扰 | +| [地形变异](../排雷循环/地形变异.md) | 全局作用域型三层预告(2026-10-04 首发批——语义正主=地形变异 §全局作用域型):①开战横幅一行(板级变异非空时显示;减动效=静态驻留,轮横幅先例同款双态)②HUD 常驻角标(C 区战斗全程可见防中局遗忘,空态整节隐藏=特性段先例;摆位 provisional)③帮助手册一行(零交互教学,承载=玩法帮助文案块);数据面经呈现快照 board_variants 投影(核心→呈现唯一读取面),普通图三层恒空态零打扰 | ## P0 最小闭环 @@ -300,6 +300,6 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | v0.10 | 2026-09-26 | 渲染技术注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗舞台 Node2D 化——BattleStageView 内部由 PanelContainer+Control 站桩改为 Control 壳 + SubViewportContainer + SubViewport + Node2D 世界(StageWorld/StandeeBody),类名/setter 面/公共方法契约不变、调用点零改造;状态图标行与悬停 tooltip 保留 Control 载体挂壳层(伴随件);C6 字体注入挂点复用(set_world_font);三区布局与性能预算(同屏 draw calls < 200)不变;占位表现等价平移(时序常量逐字对照——等价证明=git 提交 7f24b64,文件已按生命周期条款退役) | | v0.11 | 2026-09-27 | 关卡画面 UX spec 建档([level-map](../../ux/level-map.md),关卡画面 UX 批——用户拍板立项):义务清单「关卡节点地图」行挂屏级 spec 指针;屏级权威行与不负责表改按屏分治口径(战斗屏 = battle.md / 关卡画面 = level-map.md)。文档面零机制改动 | | v0.12 | 2026-09-30 | **未开格类型微光概念收口批(用户裁决落位)**:新增「未开格类型微光」节=全项目唯一正主定义(五要素——作用对象=英雄周围 8 格内的未开格〔与可挖域同圈〕/信息内容=只类型不泄雷安/生命周期=入圈亮出圈灭开格灭/关联边界/实装状态=契约定稿〔样张 v2〕游戏内待实施批);核心规则章六节改七节;呈现义务来源清单「地图战斗资源」行补微光指路;验收标准补微光呈现线。背景:该概念此前只活在 06 登记与 art-bible 复述,「常显/全部未开格」无范围表述酿成理解事故(2026-09-30 用户纠正口径),本批落位正主、他文只许指路 | -| v0.13 | 2026-10-04 | **地形变异三层预告义务批(全局作用域变异首发批——迭代 14 ③号卡,代码同批)**:呈现义务来源清单补「地形变异」行(开战横幅一行〔减动效=静态驻留,轮横幅先例同款双态〕+ C 区常驻角标〔空态整节隐藏=流派件段先例,摆位 provisional〕+ 帮助手册一行〔零交互教学〕);验收标准补三层预告线(普通图恒空态零打扰);数据面走呈现快照 board_variants 投影(核心→呈现唯一读取面)。语义正主=地形变异.md §全局作用域型,本文只锁呈现承载 | +| v0.13 | 2026-10-04 | **地形变异三层预告义务批(全局作用域变异首发批——迭代 14 ③号卡,代码同批)**:呈现义务来源清单补「地形变异」行(开战横幅一行〔减动效=静态驻留,轮横幅先例同款双态〕+ C 区常驻角标〔空态整节隐藏=特性段先例,摆位 provisional〕+ 帮助手册一行〔零交互教学〕);验收标准补三层预告线(普通图恒空态零打扰);数据面走呈现快照 board_variants 投影(核心→呈现唯一读取面)。语义正主=地形变异.md §全局作用域型,本文只锁呈现承载 | | v0.14 | 2026-10-03 | **视野迷雾实施批落籍注记(迭代 11 第④批)**:迷雾节补「实施状态」注记(四裁决逐条对账:纯呈现两态逐位一致/暗淡记忆态灰显可读/LIGHT_RADIUS=8 参数化〔提灯 +2 插值位预留未接〕/类型微光仍贴身 8 邻格);实装状态行「待实施批」改「已实装」;验收标准迷雾行去「待实施批落地后验收」括注转正式验收。机制定义零改动(定义一句话/作用范围/生命周期/关联边界/配套拍板全段原样);黑暗区域渲染规格落 art-bible §6.5(v3.5) | | v0.13 | 2026-09-30 | **视野迷雾概念落位批(用户拍板立项)**:新增「视野迷雾」节=正主定义(菱形灯光区+黑暗边界;区外已开格=暗淡记忆态灰显可读、区外未开格=全黑;灯光半径起步=微光环 8 格同圈;纯呈现层,与已退役雾格无关);验收标准补迷雾线;配套拍板随节登记(魔法提灯灯甲外扩 +2 格、类型微光不随视野扩、初始展开收窄后置 Alpha 差异化批)。实施待主线编卡 | diff --git a/design/gdd/ux/battle.md b/design/gdd/ux/battle.md index 8d5e0128..9cdfd734 100644 --- a/design/gdd/ux/battle.md +++ b/design/gdd/ux/battle.md @@ -105,7 +105,7 @@ - 攻击值 + 修正来源角标(战斗在消费、且站桩上无展示) - 护甲 AC(2026-09-26 二轮拍板补入——我方 AC 的唯一展示面;掷点判定轴,受击侧可读性) - 魔法道具槽(**已实装**:四槽两步交互,详见 [node-reward.md](node-reward.md)——随身战斗用道具的唯一展示面) - - 本关强化列表(**预留**——锻造/大奖励/关卡奖励节点获得的属性提升;与战斗内状态效果分区呈现,防「战斗结束被清」误读) + - 特性列表(**预留**——锻造/大奖励/关卡奖励节点获得的属性提升;与战斗内状态效果分区呈现,防「战斗结束被清」误读) - **D 区扫雷图 · AP 条** - AP 点阵 + 停手按钮(现行) - **RAP 读数(点阵+数字)**——自 C 区迁入,置于弃图刷新按钮旁(2026-09-26 拍板:RAP 唯一消费口 = 弃图刷新,资源数字贴消费按钮) @@ -120,7 +120,7 @@ | 区 | 位置与尺寸 | 内容 | |---|---|---| | **B 战斗画面** | 全宽 × 252px | 主角站桩立绘(左)+ 兑现演出区(中)+ 敌人站桩立绘 ×1–3(右)——**全站桩形态(2026-09-20 用户拍板,敌人卡形态待办裁决收口):主角与敌人均为无框立绘+底座,零卡片**;主角与敌人站桩 = **HP 与状态效果的唯一展示面(2026-09-26 信息归属拍板)**;底部结算明细带(24px 摘要 / 结算期 84px 实时流);顶部中央轮次·阶段指示 | -| **C 角色信息** | 左下 240px × 548px | 攻击值(含修正显示)、护甲 AC;魔法道具槽(预留)、本关强化列表(预留)——HP 条/RAP 池/状态效果槽/立绘占位/钱包行退役(2026-09-26 信息归属拍板:HP 与状态唯一展示面 = B 区站桩;RAP 迁 D 区 AP 条;GP/钥石迁出战斗屏) | +| **C 角色信息** | 左下 240px × 548px | 攻击值(含修正显示)、护甲 AC;魔法道具槽(预留)、特性列表(预留)——HP 条/RAP 池/状态效果槽/立绘占位/钱包行退役(2026-09-26 信息归属拍板:HP 与状态唯一展示面 = B 区站桩;RAP 迁 D 区 AP 条;GP/钥石迁出战斗屏) | | **D 扫雷图** | 中下 ~1036px × 548px(原右下面板删除后横向加宽,吸收其宽度) | 顶部 AP 条(44px:左——AP 点阵 + 停手按钮;中——RAP 点阵+数字〔自 C 区迁入,贴弃图刷新按钮,2026-09-26 拍板〕;右——图例按钮 + 弃图刷新按钮〔雷图右上角,2026-09-12 拍板〕);棋盘主体(居中,格 36–45px 见方);toast 槽(上缘内侧) | > 布局为 B/C/D 三区——关卡进度条不在战斗屏(节点链进度常驻关卡画面,见 Navigation Position;字母不重编沿用 B/C/D)。 @@ -147,7 +147,7 @@ | B | 结算明细回看 | 模态 overlay | 完整流水逐行(现行 9 类行协议;未生效类行聚合计数) | 关闭 | battle_log_view.gd 改造 | | C | 攻击数据框 | 直角细线数据框 | 攻击值 + 修正来源角标 + 护甲 AC(AC 二轮拍板 2026-09-26 补入——我方 AC 唯一展示面;原「HP/攻击/RAP 显示」——HP 与 RAP 随信息归属拍板迁出本组件) | 只读 | HUDView 拆分 | | C | 魔法道具槽(已实装:四槽两步交互,详见 [node-reward.md](node-reward.md)) | 图标槽 ×4 | 随身战斗用道具的唯一展示面;库存已随迭代 7 落地(C 区四槽+关卡域库存),清库反馈呈现待批 | 悬停 tooltip(道具语义) | 新建(随魔法道具批,已落地) | -| C | 本关强化列表(预留) | 列表/图标行 | 锻造/大奖励/关卡奖励节点获得的属性提升——中循环数据,因改变战斗数学且无其他展示面准入战斗屏;与战斗内状态效果(B 区站桩)分区,防「战斗结束被清」误读 | 只读 | 新建 | +| C | 特性列表(预留) | 列表/图标行 | 锻造/大奖励/关卡奖励节点获得的属性提升——中循环数据,因改变战斗数学且无其他展示面准入战斗屏;与战斗内状态效果(B 区站桩)分区,防「战斗结束被清」误读 | 只读 | 新建 | | D | AP 条 | 点阵 + 按钮组 | 本轮 AP 点阵、停手按钮(左)、**RAP 点阵+数字(自 C 区迁入 2026-09-26——RAP 唯一消费口 = 弃图刷新,资源数字贴消费按钮;RAP 清零可见反馈〔行动经济〕载体随迁)**、弃图刷新按钮(右端·雷图右上角;RAP−8 · 本轮剩 N 次——上限 2 次已随行动经济 2026-09-12 修订生效) | 点击提交意图 | HUDView 拆分 | | D | BoardView | 网格 | 棋盘全部格态 + 小人 + 旗 + 变异纹带 + 奖励身份 icon(已开格;绘制优先级 数字>小人>旗>奖励徽章>变异纹带>底色——徽章不进数字区,样张验收项) | 左/右键意图提交 | ✅ board_view.gd 迁移 | | D | 悬停预承诺光标 | 光标态 | 移动/挖/旗三语义光标 + 目标格边框高亮 | 自动 | 新建(排雷玩法×6③) | @@ -204,7 +204,7 @@ │ │ 魔法道具槽(预留) │ │ │ │AP不足·剩0点 │ 12 12 1 ░ 2 ▓▓ ▓▓ │ │ │ │ ◇ ◇ ◇ ◇ │ │ │ └──────────────────┘ 12 █ 1 1 2 ▓▓ ▓▓ │ │ │ ├──────────────────┤ │ │ 1 2 2 🚩 █ 2 1 1 ▓▓ 👫 1 1 ░ │ │ -│ │ 本关强化(预留) │ │ │ ░ 1 ▓▓ 👫 1 1 ░ ▓▓ 1 1 ░ ░ 2 │ │ +│ │ 特性列表(预留) │ │ │ ░ 1 ▓▓ 👫 1 1 ░ ▓▓ 1 1 ░ ░ 2 │ │ │ │ 锻造+2攻 │ │ │ ▓▓ 1 1 ░ ░ 2 ▓▓ │ │ │ │ (空态=隐藏) │ │ │ ( █=可挖域微光 👫=小人) │ │ │ └──────────────────┘ │ └─────────────────────────────────────────────────┘ │ @@ -440,7 +440,7 @@ | 2026-09-23 | 实现注记(棋盘 Node2D 迁移批 Phase A,代码实装同批;上位裁决 ADR-0006):棋盘渲染 Node2D 化(BoardView = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界,信号/click_cell/_cells 契约保持,新增 push_input 端到端输入探针);格尺寸公式锚点不变(set_cell_area = floor((min(宽,高) − 预留 − (N−1)×格间距) / N) 单点可调),布局与交互语义零改动 | | 2026-09-26 | 实现注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗画面 Node2D 化(BattleStageView = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界,站桩本体 StandeeBody 世界精灵;set_enemies/clear_enemies/on_step_row_fx/gray_all_enemies 等 setter 面签名保持,弹道落点锚点=壳层口径 world_to_shell 单点);状态图标行与悬停 tooltip 保留 Control 载体挂壳层;三区布局尺寸零改动(B 区外框 252px 逐位) | | 2026-09-26 | **封印紫批**(用户拍板):插旗呈现色 旗朱 #C63D22 → 封印紫 #7C3AA8(色相 ≈267°,避开禁入带)——旗字形/已承诺封印框/旗化暴击弹道随批换色;拒绝边框闪语义归危险红;Boss 节点描边归紫赤本色。修订记录历史行旗朱字样系当时口径留痕不改 | -| 2026-09-26 | **战斗屏信息归属批(用户 2026-09-26 三轮纠偏后拍板;代码实装另批——hero_info_panel_view.gd / hud_presenter.gd 改造 + 探针断言迁移,登记待办)**:立两条信息归属原则并全屏贯行——①循环口径原则(战斗屏只展小循环内被消费、影响当下决策的数据;中/大循环资源不得入侵)②单一展示面原则(同一信息全屏唯一展示面;单位本体已承载的信息数据框不重复;资源数字贴唯一消费口)。随拍板落地:① B 区站桩 = HP 与状态效果唯一展示面——C 区 HP 条/HP 文字/立绘占位/状态效果槽×4 退役(重复展示;证据链 = hud_presenter.gd 同一 s.hero.hp/s.hero_effects 双投喂 B/C 两区);② RAP 读数(点阵+数字)迁 D 区 AP 条、置弃图刷新按钮旁(RAP 唯一消费口 = 弃图刷新——就近原则);③ C 区状态槽悬停 tooltip 职责并入 B 区站桩状态小图标;④ GP(中循环)/钥石(大循环)迁出战斗屏,去向挂 OQ14;⑤ C 区改「攻击数据框 + 魔法道具槽(预留)+ 本关强化列表(预留)」——预留区来自魔法道具与关卡内属性提升的既有立项;⑥ 空态/清零反馈/悬停交互/AC/§13 义务表载体同步改写。**批内遗留两项待拍板(OQ13/14)**:护甲 AC 是否补入 C 区数据框;GP/钥石去向 | +| 2026-09-26 | **战斗屏信息归属批(用户 2026-09-26 三轮纠偏后拍板;代码实装另批——hero_info_panel_view.gd / hud_presenter.gd 改造 + 探针断言迁移,登记待办)**:立两条信息归属原则并全屏贯行——①循环口径原则(战斗屏只展小循环内被消费、影响当下决策的数据;中/大循环资源不得入侵)②单一展示面原则(同一信息全屏唯一展示面;单位本体已承载的信息数据框不重复;资源数字贴唯一消费口)。随拍板落地:① B 区站桩 = HP 与状态效果唯一展示面——C 区 HP 条/HP 文字/立绘占位/状态效果槽×4 退役(重复展示;证据链 = hud_presenter.gd 同一 s.hero.hp/s.hero_effects 双投喂 B/C 两区);② RAP 读数(点阵+数字)迁 D 区 AP 条、置弃图刷新按钮旁(RAP 唯一消费口 = 弃图刷新——就近原则);③ C 区状态槽悬停 tooltip 职责并入 B 区站桩状态小图标;④ GP(中循环)/钥石(大循环)迁出战斗屏,去向挂 OQ14;⑤ C 区改「攻击数据框 + 魔法道具槽(预留)+ 特性列表(预留)」——预留区来自魔法道具与关卡内属性提升的既有立项;⑥ 空态/清零反馈/悬停交互/AC/§13 义务表载体同步改写。**批内遗留两项待拍板(OQ13/14)**:护甲 AC 是否补入 C 区数据框;GP/钥石去向 | | 2026-09-26 | **信息归属二轮拍板(用户 2026-09-26,OQ13/14 收口)**:① 我方护甲 AC 补入 C 区攻击数据框(唯一展示面——布局表/组件清单/线框图同步);② GP/钥石去向定案:GP = 关卡画面常驻总量 + 战斗结算画面总量+增量,钥石 = 结算画面 + 营地(具体呈现归对应 UX spec 批次);③ 敌方 AC 展示面挂起——用户口径「敌方 AC 无任何展示」与现行代码冲突(standee_view.gd 底库名字行渲染「名字·护甲·AC%d」,系敌人技能池批克制对策可读性义务),证据链已呈报待终裁,本 spec 暂不改敌人站桩行 | | 2026-09-26 | **敌方 AC 展示终裁收口(用户 2026-09-26 终裁)**:敌方 AC 数值全屏退役(任何区不直接展示)、护甲类型改图标方式展示(形状+色相双通道,终稿图标资产归美术批)、敌人站桩底座下名字行退回纯名字+护甲类型图标;旧「克制对策可读性义务」降级承载——类型保留、数值退役。终裁理由(用户口径):HP 信息已足够,攻防数值不直接写上;护甲类型图标保留克制对策可读性。同步改写:信息归属树敌人站桩行、Component Inventory 敌人站桩立绘行、OQ13。**代码实装说明**:`standee_view.gd` 改造(站桩名字行去 AC 数值 + 护甲类型图标化)由并行代码批执行,本批只做文档同步 | | 2026-09-27 | **UX 文档欠账处置批(用户四项拍板:player-journey 不建 / accessibility 不另立改指 HUD框架 / node-reward 改挂魔法道具内容重定批 / level-clear 建档 design/gdd/ux/level-clear.md)**:① 删 §Player Context ⚠️ player-journey 未建注记,OQ1 改收口注记;② §Accessibility 头、§Transitions 减动效行、OQ2 改指 HUD框架「可访问性基线」节 + 设置与本地化待设计清单 #1(tools/doc_link_known.txt 欠账行随之清空);③ 导航残留修正——§Navigation Position 图胜利分支、§Entry/Exit 离开表、§Interaction Map 胜利 overlay 行改按现行代码实态(胜利后返回关卡画面选路;节点覆盖层 = 关卡画面域、落地奖励/恢复节点时开出;胜利/失败 overlay 组件锚 battle_end_overlay.gd)——原「胜利 → 节点奖励/恢复覆盖层」系停点前移批前残留;④ OQ3 过期陈述更正(interaction-patterns.md 2026-09-12 已建成)、OQ8 改收口注记。本批只动文档面,代码零改动 | diff --git a/design/gdd/ux/level-map.md b/design/gdd/ux/level-map.md index 7bc902e0..972bf000 100644 --- a/design/gdd/ux/level-map.md +++ b/design/gdd/ux/level-map.md @@ -91,7 +91,7 @@ **布局决策 3 —— 放弃冒险二次确认(2026-09-27 拍板)**:放弃 = 整局冒险终结,不可逆(pattern 7 破坏性确认)。首击转入确认态(按钮文案变「再点一次确认放弃——不可逆」,危险红边框脉冲约 3 秒,超时回落),二击才提交。代价语义(已获大奖励保留、同失败结算)常驻按钮文案。 -**布局决策 4 —— 底部状态栏(2026-09-27 拍板,原提案为顶栏 HP 读数)**:底栏作为状态展示——生命、属性、本关已选加成三项常读;顶栏保持关卡名 + GP 两件。单一展示面注记:与 [battle.md](battle.md) C 区「本关强化列表(预留)」为不同屏的不同展示面——两屏循环口径各自独立(选路规划消费 vs 战斗内决策消费),不构成同屏重复。 +**布局决策 4 —— 底部状态栏(2026-09-27 拍板,原提案为顶栏 HP 读数)**:底栏作为状态展示——生命、属性、本关已选加成三项常读;顶栏保持关卡名 + GP 两件。单一展示面注记:与 [battle.md](battle.md) C 区「特性列表(预留)」为不同屏的不同展示面——两屏循环口径各自独立(选路规划消费 vs 战斗内决策消费),不构成同屏重复。 ### ASCII Wireframe diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 30eddaf3..385a1614 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -574,6 +574,20 @@ entities: mvp_content: L1 全行(切片转正——7 节点链〔单链特例,合法图形态〕、rest_heal_pct=30);L2 全行已落地(2026-09-17 分支节点图批——首张分支图:9 节点〔入口 0 → 中间三层 2/3/2 → Boss 8〕、真实岔路 4 处、奖励点+恢复点各 1、战斗节点 6 + Boss;行值 provisional 归 难度曲线与Boss v0.7;首页直入口已退役〔2026-09-23 用户拍板〕);**L3 全行已落地(2026-09-20 第三关内容批——「第三层 · 灰矮人矿城」:九节点图复用 L2 同模板〔6 战 + Boss + 奖励 + 恢复、真实岔路 4 处〕,行值全 provisional 归 难度曲线与Boss;测试直入口已退役〔2026-09-23〕)**;2026-09-20 GP+商店房批 rewiring:L2/L3 图版 Boss 重编号 8→9、各新增 (8, shop, next[9]) 商店房节点(Boss 前一位必经位),L1 零改动,图合法性六检零新增——必经位由冒烟断言承载;**2026-09-21 冒险结构实现批:三关正式序列生效**(首页「开始冒险」= L1→L2→L3 连探,AdventureRunner 编排——大奖励/生命账本/GP 冒险账本/主种子归冒险结构层,冒烟断言在案)** referenced_by: [冒险结构, 关卡节点地图, 难度曲线与Boss, 棋盘生成, 数据配置] + - name: feature + type: concept + owner: design/gdd/systems/冒险循环/特性.md + attributes: + definition: 一次冒险之内角色自身得到的提升。它不是持有物——带在自己身上的是特性,拿在手里的是魔法道具;两者由此分开 + form: 封闭枚举 {rule, stat}。rule 规则改写型——在结算管线的某个挂点上给自己加一条规则,同标签持有项数达阈值时质变;stat 属性加成型——抬自己的某项属性数值,写入冒险加算区。两者同属一个对象、共用一份持有集与一份生命周期,是形态枚举而非两个系统 + scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);时间范围 = 整局冒险,跨关携带、关间不清零;归属范围 = 不进账号永久进度,不带到下一次冒险 + lifecycle: 候选池构建(冒险开局一次)→ 在两个获取口之一出现(三选一形式)→ 选定(自池中剔除不再复现)→ 持有生效(跨关携带)→ 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 + acquisition: 两个获取口——战场奖励(每关通关一次,最终关不给;关卡节点图奖励节点共用同一候选池)与商店(花局内金币,口径为「训练」)。**现行两口共用同一候选池**,两形态按渠道分离已定尚未实施,登记于 06-待办清单 BD 分层条目 + boundary: 特性永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 + data_sources: relics.tres(rule 形态逐项定义)/ adventure.tres(stat 形态配额与值)/ shop.tres(货架取舍) + naming_note: 2026-10-05 命名统一——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),现统一为「特性」,需要区分时以形态修饰语描述,不另造称呼 + referenced_by: [冒险结构, 关卡节点地图, 战斗结算, 行动经济, 地形变异, HUD框架, 魔法道具, 元进度, 数据配置] + - name: adventure_table type: schema_data owner: design/gdd/systems/冒险循环/冒险结构.md @@ -582,11 +596,12 @@ entities: fields: | 退役两字段(迭代 10 奖励重构批,2026-09-30 用户拍板):level_clear_hp_bonus(「血回满+上限提升」件随大奖励三件套退役——回血改 clear_heal_pct 部分回血、上限提升改三选一件值列)、keystone_per_level(钥石退役出大奖励改 Boss/精英击杀掉落)。 clear_heal_pct: int [0,100](knob 默认 20——非末关通关部分回血回复生效上限的百分比,封顶上限不回满、满血回 0 合法;难度上压方向,带重扫义务归 难度曲线与Boss) - bonus_attack_flat / bonus_max_hp_flat / bonus_armor_flat: int [0,999](三选一属性件兑付值——加算区攻击/生命上限/护甲轴累加,经覆盖值通道;值锚与上调约束归 难度曲线与Boss) - bonus_gp_amount: int [0,999](GP 袋件定额入钱包);bonus_ap_flat: int [0,10](AP 件每场战斗首轮行动点基线增量);bonus_aux_item_count: int [1,9](魔法道具件授予件数) + **2026-10-05 命名统一批**:本表的属性加成型特性字段与常量整体换名(旧 → 新)——BONUS_IDS → FEATURE_KINDS、bonus_token_count() → feature_quota()、bonus_value() → feature_value()、bonus_candidate_count → feature_candidate_count、token_{kind}_{tier} → feature_quota_{kind}_{tier}、bonus_*_flat/_amount(_large) → feature_value_{kind}_{tier};值零变更(句柄改称不改数),断点附随键名沿用历史形态不动(存档兼容)。换名动因见 特性 条目。 + feature_value_attack_common / feature_value_max_hp_common / feature_value_armor_common: int [0,999](三选一属性加成型特性兑付值——加算区攻击/生命上限/护甲轴累加,经覆盖值通道;值锚与上调约束归 难度曲线与Boss) + feature_value_gp_common: int [0,999](GP 袋件定额入钱包);feature_value_ap_rarest: int [0,10](AP 件每场战斗首轮行动点基线增量);bonus_aux_item_count: int [1,9](魔法道具件授予件数) ~~bonus_weight_*(E-S 加权洗牌权重族)~~ / ~~bonus_cap_*(种类次数上限族)~~:**v2.2 令牌池换代退役(迭代 12 TP0——2026-10-03 追认 b 实施批;洗牌改令牌 Fisher-Yates、池消耗即上限)** - token_{kind}_{tier}: int [0,99](**TP0 令牌配额族**——kind×tier 计数:attack 18/5 · max_hp 17/5 · armor 17/5 · gp 18/5 · heal 0/5 · ap 0/0/3〔common/rare/rarest〕;未列组合=0;档位结构锚 70/25/3=98 张入 schema validate 硬断言〔罕见档原列「道具件 2」随 aux_item 池种退役收窄——台账自决披露项〕) - bonus_attack_flat_large / bonus_max_hp_flat_large / bonus_armor_flat_large / bonus_gp_amount_large: int [0,999](稀有档大数值对——+2/+10/+2/50);bonus_heal_flat: int [0,999](恢复件 +6 当即回血——新入池种类 rare 档);MC 策略 316-f(autoplay 1 级最稀有/2 级最左)随批落地 + feature_quota_{kind}_{tier}: int [0,99](**TP0 令牌配额族**——kind×tier 计数:attack 18/5 · max_hp 17/5 · armor 17/5 · gp 18/5 · heal 0/5 · ap 0/0/3〔common/rare/rarest〕;未列组合=0;档位结构锚 70/25/3=98 张入 schema validate 硬断言〔罕见档原列「道具件 2」随 aux_item 池种退役收窄——台账自决披露项〕) + feature_value_attack_rare / feature_value_max_hp_rare / feature_value_armor_rare / feature_value_gp_rare: int [0,999](稀有档大数值对——+2/+10/+2/50);feature_value_heal_rare: int [0,999](恢复件 +6 当即回血——新入池种类 rare 档);MC 策略 316-f(autoplay 1 级最稀有/2 级最左)随批落地 transitional_sync_slots: int [0,9](同调位过渡读数源,默认 1——道具持有上限;正主 = attunement_growth.tres 里程碑谓词表,同调实施批落地后切换读数源) mvp_content: 单行全局默认值即 MVP 行(provisional 归 曲线调参批——迭代 10 扩列批注) extension_reserve: 大奖励形态扩列位已消费(迭代 10 奖励重构批落地三选一/攻击型——本键使命完成退役;冒险结构 OQ2 收口) diff --git a/game/core/adventure_runner.gd b/game/core/adventure_runner.gd index cb7e866d..90980f74 100644 --- a/game/core/adventure_runner.gd +++ b/game/core/adventure_runner.gd @@ -80,8 +80,8 @@ var _save_manager = null # 断点承载注入(迭代 8 卡① var _resume_bp := {} # 续玩快照暂存(resume_adventure → _start_current_level 单跳传递) # ---- 三选一停点态(迭代 10 奖励重构批)---- var _bonus_taken := {} # 件获取次数计数(kind 维度派生账本——断点附随件与摘要读数承载;池库存正主=_bonus_deck) -var _bonus_deck: Array = [] # 令牌池(TP0 v2.2——持久多重集,元素 {"kind","tier"};洗牌抽候选/选中踢池未选回池/池耗即枯竭;商店货架同库共账;迭代 12 T1 起机制件带=relic 令牌随表追加) -var _relics: Array[String] = [] # 流派件持有集(迭代 12 T1——局内随机渠道获得、冒险级跨关携带、收束清零;🔴 层级纪律承载面:不入同调位不入局外树) +var _bonus_deck: Array = [] # 令牌池(TP0 v2.2——持久多重集,元素 {"kind","tier"};洗牌抽候选/选中踢池未选回池/池耗即枯竭;商店货架同库共账;迭代 12 T1 起规则改写型特性带=relic 令牌随表追加) +var _relics: Array[String] = [] # 特性持有集(迭代 12 T1——局内随机渠道获得、冒险级跨关携带、收束清零;🔴 层级纪律承载面:不入同调位不入局外树) var _tree_rules: Array = [] # 树 rule 键集(迭代 12 T10——Fork 激活侧 effects 透传;下传 enc.tree_rules 消费面) var _bonus_pending := {} # 停点态:{"candidates": Array, "payload": Dictionary, "chosen"/"incoming": 替换在途}——空 = 无停点 var _bonus_result := {} # 已兑付待推进态(bonus_resolved 载荷副本——中断续玩不重兑付) @@ -128,8 +128,8 @@ func start_adventure(seed_val: int, params: Dictionary = {}) -> bool: _attunement = params.get("attunement", []) if params.get("attunement", []) is Array else [] # additive(迭代 11 第①批 T5) _attune_refresh_y = maxi(0, int(params.get("attune_refresh_y", 0))) # additive(迭代 11 第①批 T5b——Y 冒险周期池) _seed_attune_charges() # 迭代 11 第①批 T6——冒险开始充能账本按装备主动件重置(每冒险充能语义) - # 流派件开局注入(迭代 12 T7——MC 成型画像载体:params.relics_seed 非空=开局持有集〔七流派 - # 各 2 件档一成型——测量面专用;真实局流派件只走局内随机渠道,红线②层级纪律不破〕) + # 特性开局注入(迭代 12 T7——MC 成型画像载体:params.relics_seed 非空=开局持有集〔七流派 + # 各 2 件档一成型——测量面专用;真实局规则改写型特性只走局内随机渠道,红线②层级纪律不破〕) var relic_seed: Array = params.get("relics_seed", []) if params.get("relics_seed", []) is Array else [] _tree_rules = params.get("tree_rules", []) if params.get("tree_rules", []) is Array else [] # 迭代 12 T10——A/B 面 rule 键集 if not relic_seed.is_empty(): @@ -190,7 +190,7 @@ func resume_adventure(bp: Dictionary, params: Dictionary = {}) -> bool: rtok["relic_id"] = String(tok.get("relic_id", "")) restored.append(rtok) _bonus_deck = restored - # 流派件持有集还原(迭代 12 T1——缺键 = 旧版断点防御空集) + # 特性持有集还原(迭代 12 T1——缺键 = 旧版断点防御空集) _relics = [] for r in (bp.get("relics", []) as Array): _relics.append(String(r)) @@ -267,14 +267,14 @@ func _reset_bonus_state() -> void: _node_bonus_pending = {} -# 令牌池构建(TP0 v2.2——按表 kind×tier 配额展开为持久多重集;构建序确定 = BONUS_IDS×TIERS 逐层, -# 随机性只发生在洗牌消费 reward_pick 封闭流的时刻。迭代 12 T1:机制件带=relic 活行每件 1 张追加 +# 令牌池构建(TP0 v2.2——按表 kind×tier 配额展开为持久多重集;构建序确定 = FEATURE_KINDS×TIERS 逐层, +# 随机性只发生在洗牌消费 reward_pick 封闭流的时刻。迭代 12 T1:规则改写型特性带=relic 活行每件 1 张追加 # (rarity common/rare→稀有令牌档、rarest→罕见令牌档——relic 永不入普通档;空表=零追加零扰动)) func _build_bonus_deck() -> Array: var deck: Array = [] - for kind in db.adventure.BONUS_IDS: + for kind in db.adventure.FEATURE_KINDS: for tier in db.adventure.TIERS: - for i in int(db.adventure.bonus_token_count(String(kind), String(tier))): + for i in int(db.adventure.feature_quota(String(kind), String(tier))): deck.append({"kind": String(kind), "tier": String(tier)}) for row in db.relic_rows(): var rtier := "rarest" if String(row.get("rarity", "")) == "rarest" else "rare" @@ -282,7 +282,7 @@ func _build_bonus_deck() -> Array: return deck -# 令牌唯一身份(抽签去重/兑付匹配共用——数值件=kind,机制件=relic_id;同档多张不同 relic 可同屏) +# 令牌唯一身份(抽签去重/兑付匹配共用——属性加成型特性=kind,规则改写型特性=relic_id;同档多张不同 relic 可同屏) func _token_identity(tok: Dictionary) -> String: if String(tok.get("kind", "")) == "relic": return "relic:" + String(tok.get("relic_id", "")) @@ -337,7 +337,7 @@ func continue_to_next_level() -> bool: # ---- 提升三选一(迭代 10 奖励重构批——选择停点零自动推进、重复兑付被拒;兑付恰一件、未选项零生效)---- -# 候选令牌匹配(身份键恒等——数值件 kind+tier、机制件 relic_id;迭代 12 T1 机制件带) +# 候选令牌匹配(身份键恒等——属性加成型特性 kind+tier、规则改写型特性 relic_id;迭代 12 T1 规则改写型特性带) func _find_token(candidates: Array, kind: String, tier: String, relic_id: String = "") -> Dictionary: for t in candidates: var tok: Dictionary = t as Dictionary @@ -351,7 +351,7 @@ func _find_token(candidates: Array, kind: String, tier: String, relic_id: String # 玩家点选兑付(呈现层/冒烟/自动模拟确认入口):令牌 ∈ 停点候选(身份键精确匹配——relic 件 # 另须 relic_id)。属性件写加算区、AP 件写第四轴、GP 件走钱包「奖励入账」入口、恢复件当即回血、 -# relic 件入流派件持有集(🔴 层级纪律:只走局内随机渠道)、道具件受同调位约束(随池种退役不可达)。 +# relic 件入特性持有集(🔴 层级纪律:只走局内随机渠道)、道具件受同调位约束(随池种退役不可达)。 # 消费=选中令牌踢池(未选回池由「抽签不摘牌、兑付才摘牌」语义承载——TP0 v2.2)。 func pick_bonus(kind: String, tier: String = "", relic_id: String = "") -> bool: if state != "running" or _bonus_pending.is_empty(): @@ -361,7 +361,7 @@ func pick_bonus(kind: String, tier: String = "", relic_id: String = "") -> bool: if _find_token(candidates, kind, tier, relic_id).is_empty(): push_error("[冒险结构] pick_bonus 拒绝——令牌不在候选: %s|%s|%s" % [kind, tier, relic_id]) return false - var value: int = int(db.adventure.bonus_value(kind, tier)) + var value: int = int(db.adventure.feature_value(kind, tier)) var hp_before := int(ledger.get("hero_hp", 0)) if kind == "aux_item": return _pick_aux_item(value) # 道具件分派通关渠道(持有容器 = 跨关携带——与节点渠道分轨;池种退役后不可达) @@ -435,7 +435,7 @@ func _consume_deck_token(kind: String, tier: String, relic_id: String = "") -> b return false -# 流派件持有集读面(效果接线/求值/摘要唯一取数口——副本防外部改写) +# 特性持有集读面(效果接线/求值/摘要唯一取数口——副本防外部改写) func relics_held() -> Array: return _relics.duplicate() @@ -457,10 +457,10 @@ func pool_stock(kind: String) -> int: # 写加算区+账本+摘牌(与奖励三选一真单点——买一件=奖励面少一件的库存语义由同库成立)。 # 未知 kind 拒绝(货架词表封闭的前置防御)。 func _consume_pool_purchase(kind: String, tier: String) -> bool: - if not db.adventure.BONUS_IDS.has(kind): + if not db.adventure.FEATURE_KINDS.has(kind): push_error("[冒险结构] 商店购买消费拒绝——件不在池词表: %s" % kind) return false - return _apply_bonus_pick(kind, tier, int(db.adventure.bonus_value(kind, tier))) + return _apply_bonus_pick(kind, tier, int(db.adventure.feature_value(kind, tier))) # 终局池快照(_settle 清账前调用——_reset_bonus_state 会重置 _bonus_taken,摘要 additive 键 @@ -552,7 +552,7 @@ func apply_node_bonus(kind: String, tier: String = "", relic_id: String = "") -> if _find_token(candidates, kind, tier, relic_id).is_empty(): push_error("[冒险结构] apply_node_bonus 拒绝——令牌不在候选: %s|%s|%s" % [kind, tier, relic_id]) return false - var value: int = int(db.adventure.bonus_value(kind, tier)) + var value: int = int(db.adventure.feature_value(kind, tier)) if kind == "aux_item": return _apply_node_aux(value) # 道具件分派节点渠道(持有容器 = 关卡域库存——与通关渠道分轨;池种退役后不可达) if not _apply_bonus_pick(kind, tier, value, relic_id): @@ -573,7 +573,7 @@ func _apply_node_aux(count: int) -> bool: var records: Array = [] if _runner != null and _runner.aux_inventory != null: records = _runner.aux_inventory.holding_records() - # 迭代 11 第①批 T7——守卫随过渡键退役拆除(BONUS_IDS 已除名 aux_item,本分支不可达; + # 迭代 11 第①批 T7——守卫随过渡键退役拆除(FEATURE_KINDS 已除名 aux_item,本分支不可达; # 替换子交互路由随容量闸一并退役——能力件容量闸正主 = 营地装配面满位禁选) if _runner != null: for iid in picked: @@ -739,7 +739,7 @@ func _draw_bonus_candidates() -> Array: if ident.begins_with("relic:"): cand["relic_id"] = String((tok as Dictionary).get("relic_id", "")) out.append(cand) - if out.size() >= int(db.adventure.bonus_candidate_count): + if out.size() >= int(db.adventure.feature_candidate_count): break return out @@ -828,7 +828,7 @@ func _start_current_level() -> bool: if ok: _runner.set_attunement(_attunement) # 迭代 11 第①批 T5——同调装配下传(enc 携带进战斗结算) _runner.set_attune_charges(attune_charges) # 迭代 11 第①批 T6——充能账本下传(能力件骑库存面注入) - _runner.set_relics(_relics) # 迭代 12 T1——流派件持有集下传(begin_battle enc.relics 求值面) + _runner.set_relics(_relics) # 迭代 12 T1——特性持有集下传(begin_battle enc.relics 求值面) _runner.set_tree_rules(_tree_rules) # 迭代 12 T10——树 rule 键集下传(A/B 面消费) if _shop_mode == "pool": # 商店共享池注入(迭代 11 第②批 T3——库存账本引用+消费 handler 双下传;legacy 模式零注入零扰动) @@ -908,7 +908,7 @@ func _settle(result: String) -> void: "aux_cleared_last": _last_aux_cleared, # additive 扩签(迭代 7 T4——末关清空反馈;非末关走 bonus 载荷) "keystone_drops": _keystone_drops.duplicate(true), # additive 扩签(迭代 10——逐杀掉落明细;settle 入账明细/复盘归因数据源) "pool_stock": _pool_stock_snapshot(), # additive 扩签(迭代 11 第②批 T5——终局池读数:清账前快照,商店买走 vs 奖励领走 vs 枯竭的终局面) - "relics": _relics.duplicate(), # additive 扩签(迭代 12 T1——流派件终局持有集:清账前快照,成型判读取数面) + "relics": _relics.duplicate(), # additive 扩签(迭代 12 T1——特性终局持有集:清账前快照,成型判读取数面) } # 败退明细(数值验证工具取数面 2026-09-22——tools/balance_verifier.py 止步节点分布数据源; # 仅失败局附加,键缺省 = 未败退,既有五件事消费方零感知) @@ -941,7 +941,7 @@ func _forward_choices_presented(candidates: Array) -> void: # ---- 断点快照(迭代 8 卡①——七字段拍板面+恢复必需附随件)---- -# 七字段(拍板面):关卡序号/节点位/生命/本关加成区/GP 钱包/商店已购档/已抽模板; +# 七字段(拍板面):关卡序号/节点位/生命/属性加成区/GP 钱包/商店已购档/已抽模板; # 附随件(续玩正确性必需,随批注记):主种子+取数计数器(rng 快照契约回填——续接原时间线)、 # 钥石累计(大奖励中途值——终局摘要五件事不失真)、已到节点序(呈现层图条重建)、道具库存 # (奖励节点已选件——防静默丢失)。注入缺省 null = 整面静默(模拟/冒烟零扰动)。 @@ -976,7 +976,7 @@ func _snapshot_breakpoint() -> void: "aux_items": aux_items, "bonus_taken": _bonus_taken.duplicate(true), # 三选一件获取次数(kind 维度派生账本——断点附随件与读数承载) "bonus_deck": _bonus_deck.duplicate(true), # 令牌池余库(TP0 v2.2——池消耗即上限,续玩余库逐枚还原) - "relics": _relics.duplicate(), # 流派件持有集(迭代 12 T1——局内随机渠道获得态续玩防丢失) + "relics": _relics.duplicate(), # 特性持有集(迭代 12 T1——局内随机渠道获得态续玩防丢失) "bonus_pending": _bonus_pending.duplicate(true), # 三选一停点态(空 = 无停点——选择停点可中断契约) "bonus_result": _bonus_result.duplicate(true), # 已兑付待推进态(空 = 无——中断续玩不重兑付) "bonus_aux_carry": _bonus_aux_carry.duplicate(true), # 道具件跨关携带(注入前中断防静默丢失) diff --git a/game/core/battle_orchestrator.gd b/game/core/battle_orchestrator.gd index 694d9389..a1bfd0be 100644 --- a/game/core/battle_orchestrator.gd +++ b/game/core/battle_orchestrator.gd @@ -72,7 +72,7 @@ var attunement: Array = [] # 装备中同调件 item_id 集 var _attune_charges_ref: Dictionary = {} # 充能账本共享引用(迭代 11 第①批 T6——use_aux 消费直改) var _attune_bank := 0 # 掘进蓄能积点(battle 域——每 charge_n 安全格 +1 点) var _attune_safe_seen := 0 # 掘进蓄能 battle 域安全开格计数 -# 流派件运行态(迭代 12 T2——relic 持有集经 enc.relics 注入;求值旗注 damage_controller.relic_flags; +# 特性运行态(迭代 12 T2——relic 持有集经 enc.relics 注入;求值旗注 damage_controller.relic_flags; # 魔矢每战首次计数 battle 域。空集=零扰动) var _relic_first_dig_used := false var _relic_combo := 0 # 矿脉直觉连击计数(battle 域——safe +1/mine 清零) @@ -94,7 +94,7 @@ func _attune_mag(item_id: String) -> int: return int(_attune_row(item_id).get("magnitude", 0)) -# 流派件求值(迭代 12 T2——持有集 × relic_table → damage_controller.relic_flags 注入面): +# 特性求值(迭代 12 T2——持有集 × relic_table → damage_controller.relic_flags 注入面): # rider_flat = Σ rider 件 value(奥术余烬 +1 / 魔能共鸣 +2);magic 档一(≥2 件)rider +1、 # 档二(≥4 件)rider 可暴击;clamp 两件直调键;first_dig_spell 旗(魔能共鸣第二效果——魔矢值 # = 件 effects.value)。空集/空表 = 零旗零扰动。 @@ -247,7 +247,7 @@ func begin_battle(enc: Dictionary) -> bool: _attune_safe_seen = 0 _damage.attune_venom = _attune_mag("venom_edge") if _attune_has("venom_edge") else 0 _reward_economy.luck_bias = _attune_mag("luck_coin") if _attune_has("luck_coin") else 0 - # 流派件运行态注入(迭代 12 T2 魔法流——enc.relics 携带持有集;RelicsEngine 求值后注伤害控制器 + # 特性运行态注入(迭代 12 T2 魔法流——enc.relics 携带持有集;RelicsEngine 求值后注伤害控制器 # relic_flags;空集/空表=零扰动。魔矢每战首次开格计数同步归零) _relic_flags_for((enc.get("relics", []) as Array)) _relic_first_dig_used = false @@ -680,7 +680,7 @@ func set_aux_unlocked(ids: Dictionary) -> void: func _grant_routed(snap: Dictionary, polarity: String, source_class: String, cell: Vector2i, ri: int, highlight: String = "", label_suffix: String = "") -> bool: # 迭代 11 第①批 T7——aux 授予分支随掉落/停点渠道退役拆除(reward 词表第十型 aux_item 保留但零投放: - # 无 aux 行入池、BONUS_IDS 词表已除名);剩余类型走极性字典路由。 + # 无 aux 行入池、FEATURE_KINDS 词表已除名);剩余类型走极性字典路由。 var row: Dictionary = _reward_economy.polarity_row(String(snap.get("cell_type", "")), polarity) if row.is_empty(): _fatal("极性字典缺行: %s %s" % [String(snap.get("cell_type", "")), polarity]) diff --git a/game/core/config_db.gd b/game/core/config_db.gd index 3423f028..7e1ff3ee 100644 --- a/game/core/config_db.gd +++ b/game/core/config_db.gd @@ -27,7 +27,7 @@ const TABLE_MANIFEST := { "aux_items": "aux_items.tres", # 迭代 7 T1 魔法道具内容批(AuxItemTable 六行——定义表 Rule 4 豁免;罗盘 retired/失义件 deferred 标记见 schema 头注) "adventure": "adventure.tres", # 冒险结构实现批 2026-09-21(AdventureTable 建表——大奖励与钥石行值单点) "attunement_growth": "attunement_growth.tres", # 迭代 11 第①批 同调实施批 T1(AttunementGrowthTable 单行全局——同调位里程碑谓词表;单行先例 Rule 4 豁免) - "relics": "relics.tres", # 迭代 12 T1 双层 BD 机制件基建(RelicTable 定义表 Rule 4 豁免——AuxItemTable 先例;空表合法态=主时间线零扰动) + "relics": "relics.tres", # 迭代 12 T1 双层 BD 规则改写型特性基建(RelicTable 定义表 Rule 4 豁免——AuxItemTable 先例;空表合法态=主时间线零扰动) } var action_economy: ActionEconomyTable @@ -154,7 +154,7 @@ func relic_row(relic_id: String) -> Dictionary: return relics.row_by_id(relic_id) if relics != null else {} -# 机制件带令牌构建源(池接线——adventure_runner._build_bonus_deck 消费;行 rarity→投放档映射) +# 规则改写型特性带令牌构建源(池接线——adventure_runner._build_bonus_deck 消费;行 rarity→投放档映射) func relic_rows() -> Array: return relics.rows if relics != null else [] diff --git a/game/core/config_db_cross_validator.gd b/game/core/config_db_cross_validator.gd index ad201114..d784a86c 100644 --- a/game/core/config_db_cross_validator.gd +++ b/game/core/config_db_cross_validator.gd @@ -99,18 +99,18 @@ func cross_validate(loaded: Dictionary, push_diag: Callable) -> void: for e in validate_skill_pool_links(skt, en, loaded.get("status_effects")): push_diag.call("error", e.category, e.message) # ⑥ 商店货架 × 冒险共享池跨表校验(M-4 迭代 11 第②批 T1——次数上限域): - # pool_shelf kind 须命中 adventure.BONUS_IDS 且为有限库存种(cap ∈ [1,99]——gp 无上限种/牌库外种 - # 入货架 = 库存账本无锚,加载致命;gp 袋负交易切边/机制件三轴切边由 ShopTable 词表封闭另拦) + # pool_shelf kind 须命中 adventure.FEATURE_KINDS 且为有限库存种(cap ∈ [1,99]——gp 无上限种/牌库外种 + # 入货架 = 库存账本无锚,加载致命;gp 袋负交易切边/规则改写型特性三轴切边由 ShopTable 词表封闭另拦) var adv = loaded.get("adventure") var shp = loaded.get("shop") if adv != null and shp != null: for row in shp.pool_shelf: var kind: String = String(row.get("kind_id", "")) - if not adv.BONUS_IDS.has(kind): - push_diag.call("error", "shelf_dangling_kind", "ShopTable.pool_shelf kind %s 不在 AdventureTable.BONUS_IDS(共享池牌库外种)" % kind) + if not adv.FEATURE_KINDS.has(kind): + push_diag.call("error", "shelf_dangling_kind", "ShopTable.pool_shelf kind %s 不在 AdventureTable.FEATURE_KINDS(共享池牌库外种)" % kind) continue # TP0 令牌池——货架件须为有限令牌种(配额 >0;种类次数上限退役后库存=剩余令牌数) - var quota := int(adv.bonus_token_count(kind, adv.TIER_COMMON)) + int(adv.bonus_token_count(kind, adv.TIER_RARE)) + int(adv.bonus_token_count(kind, adv.TIER_RAREST)) + var quota := int(adv.feature_quota(kind, adv.TIER_COMMON)) + int(adv.feature_quota(kind, adv.TIER_RARE)) + int(adv.feature_quota(kind, adv.TIER_RAREST)) if quota < 1: push_diag.call("error", "shelf_zero_quota", "ShopTable.pool_shelf kind %s 令牌配额为 0(牌库空种入货架 = 库存无锚)" % kind) diff --git a/game/core/damage_controller.gd b/game/core/damage_controller.gd index f2ec3a43..161dce06 100644 --- a/game/core/damage_controller.gd +++ b/game/core/damage_controller.gd @@ -60,7 +60,7 @@ var _outcomes := {} # ticket_id → "redeemed"/"zero"/"voided"( var _seq := 0 # 流水号 var _halted := false # 主角倒下终止旗(死亡事件置位——flush 余单作废) var _hero_ac_override := -1 # 主角护甲等级合流入参(begin_battle 显式设定——-1 = 表值兜底,口径同战斗编排器) -# 流派件求值旗(迭代 12 T2——begin_battle 编排器经 RelicsEngine 求值后注入;空字典=零扰动。 +# 特性求值旗(迭代 12 T2——begin_battle 编排器经 RelicsEngine 求值后注入;空字典=零扰动。 # rider_flat=英雄侧必中附加值〔奥术余烬族〕/rider_crit=档二 rider 可暴击/first_dig_spell=每战首次 # 开安全格追加魔法矢〔消费在编排器授予段〕/clamp_magic_light·clamp_magic_heavy=克制点直调) var relic_flags: Dictionary = {} @@ -418,7 +418,7 @@ func _counter_delta(attack_type: String, armor: String) -> int: return int(row.get(armor, 0)) -# 克制点直调(迭代 12 T2 魔法流/T4 穿刺流 clamp_modifier 件——克制矩阵查表值后的流派件调整; +# 克制点直调(迭代 12 T2 魔法流/T4 穿刺流 clamp_modifier 件——克制矩阵查表值后的特性调整; # 空旗=0 零扰动):魔网织者=magic vs magic(矩阵罚 −1 → 0/正);湛蓝誓约=magic vs heavy(+1 → +2); # 猎手刺剑=pierce vs light(+1——对轻甲敌穿刺提升,对重甲无增益=正负双修)。hero_attack 与 # board_typed 两消费面同享。 diff --git a/game/core/level_runner.gd b/game/core/level_runner.gd index 286d1630..13b9cec2 100644 --- a/game/core/level_runner.gd +++ b/game/core/level_runner.gd @@ -589,7 +589,7 @@ func set_attunement(ids: Array) -> void: _attunement = ids.duplicate() -# 流派件持有集注入(迭代 12 T1——AdventureRunner._start_current_level 唯一调用方;begin_battle +# 特性持有集注入(迭代 12 T1——AdventureRunner._start_current_level 唯一调用方;begin_battle # enc.relics 携带进战斗求值;**共享引用不复制**——关内奖励节点兑付的 relic 须当关后续战斗生效 # (attune_charges 共享账本同款);空集=零扰动) var _relics: Array = [] @@ -599,7 +599,7 @@ func set_relics(ids: Array) -> void: _relics = ids -# 流派件持有集读面(迭代 12 呈现补齐——HUD C 区流派件段数据源) +# 特性持有集读面(迭代 12 呈现补齐——HUD C 区特性段数据源) func relics_held() -> Array: return _relics.duplicate() @@ -776,7 +776,7 @@ func _shop_draw_shelf() -> void: _shop_shelf.append(tok) if _shop_shelf.size() >= 3: break - # 商店保底(迭代 12 T6——「本关变异交互件必刷」简化口径:货架零流派件时**挤掉最后一张普通卡** + # 商店保底(迭代 12 T6——「本关变异交互件必刷」简化口径:货架零特性时**挤掉最后一张普通卡** # 换吞噬流件〔地形交互件广义映射——按关变异精细绑定归数值批,台账披露待追认〕;占位制货架恒 # ≤3;池内无 devour 令牌=不保底合法态) var has_relic := false @@ -831,10 +831,10 @@ func shop_shelf() -> Array: var tier := String((tok as Dictionary).get("tier", "")) var row: Dictionary = db.shop_pool_row(kind) var display := String(row.get("display_name", kind)) - var value := int(db.adventure.bonus_value(kind, tier)) + var value := int(db.adventure.feature_value(kind, tier)) if row.is_empty() and kind == "relic": var rrow: Dictionary = db.relic_row(String(tok.get("relic_id", ""))) - display = String(rrow.get("display_name", "流派件")) + display = String(rrow.get("display_name", "特性")) value = 0 out.append({ "kind_id": kind, diff --git a/game/data/schemas/adventure_table.gd b/game/data/schemas/adventure_table.gd index 634f9546..508c5be5 100644 --- a/game/data/schemas/adventure_table.gd +++ b/game/data/schemas/adventure_table.gd @@ -13,9 +13,13 @@ class_name AdventureTable extends Resource +## 概念指路:本表的属性加成型特性,与 relics.tres 的规则改写型特性,同属一个对象—— +## 「特性」(一次冒险内角色自身得到的提升)。定义见 design/gdd/systems/冒险循环/特性.md。 +## 两者是它的形态枚举(form = rule / stat),不是两个系统;本表承载 stat 形态的配额与值。 +## (2026-10-05 命名统一:旧称「数值件」→ 属性加成型特性;常量与字段随之前缀 feature_*。) ## 三选一提升池 kind 词表(封闭——断点附随件与牌库剔除态依赖它;扩件走本表+registry 修订)。 ## aux_item 池种退役(迭代 11 第①批 T7——同调批出池);heal 恢复件新入池(v2.2 令牌池追认 b)。 -const BONUS_IDS: Array[String] = ["attack", "max_hp", "armor", "gp", "ap", "heal"] +const FEATURE_KINDS: Array[String] = ["attack", "max_hp", "armor", "gp", "ap", "heal"] ## 令牌档位词表(v2.2 三档位——稀有度命名对齐 MC 策略判读序 316-f:1 级最稀有=rarest 优先) const TIERS: Array[String] = ["common", "rare", "rarest"] const TIER_COMMON := "common" @@ -30,62 +34,62 @@ const TIER_QUOTAS := {"common": 70, "rare": 25, "rarest": 3} @export var clear_heal_pct: int = 20 # [0,100] knob——回复生效上限的百分比,封顶上限不回满 # —— 三选一候选数(2026-10-02 修复批 T2 魔法数结构化)—— -@export var bonus_candidate_count: int = 3 # [1,6] knob——令牌洗牌不放回抽取张数上界 +@export var feature_candidate_count: int = 3 # [1,6] knob——令牌洗牌不放回抽取张数上界 # —— 令牌配额(kind × tier 计数;未列组合 = 0——heal 只入稀有/ap 只入罕见,v2.2 档位构成)—— -@export var token_attack_common: int = 18 # [0,99] -@export var token_attack_rare: int = 5 # [0,99] -@export var token_max_hp_common: int = 17 # [0,99] -@export var token_max_hp_rare: int = 5 # [0,99] -@export var token_armor_common: int = 17 # [0,99] -@export var token_armor_rare: int = 5 # [0,99] -@export var token_gp_common: int = 18 # [0,99] -@export var token_gp_rare: int = 5 # [0,99] -@export var token_heal_rare: int = 5 # [0,99]——恢复件(新入池种类,当即回血) -@export var token_ap_rarest: int = 3 # [0,99]——AP 件(罕见档;道具件 2 席位随池种退役收窄) +@export var feature_quota_attack_common: int = 18 # [0,99] +@export var feature_quota_attack_rare: int = 5 # [0,99] +@export var feature_quota_max_hp_common: int = 17 # [0,99] +@export var feature_quota_max_hp_rare: int = 5 # [0,99] +@export var feature_quota_armor_common: int = 17 # [0,99] +@export var feature_quota_armor_rare: int = 5 # [0,99] +@export var feature_quota_gp_common: int = 18 # [0,99] +@export var feature_quota_gp_rare: int = 5 # [0,99] +@export var feature_quota_heal_rare: int = 5 # [0,99]——恢复件(新入池种类,当即回血) +@export var feature_quota_ap_rarest: int = 3 # [0,99]——AP 件(罕见档;道具件 2 席位随池种退役收窄) # —— 令牌件值(小/大数值对——v2.2 追认 b 定稿:20/50、+1/+2、+1/+2、+5/+10、恢复+6、AP+1)—— -@export var bonus_attack_flat: int = 1 # [0,999] knob——小增伤 -@export var bonus_attack_flat_large: int = 2 # [0,999] knob——大增伤 -@export var bonus_max_hp_flat: int = 5 # [0,999] knob——小生命 -@export var bonus_max_hp_flat_large: int = 10 # [0,999] knob——大生命 -@export var bonus_armor_flat: int = 1 # [0,999] knob——小护甲 -@export var bonus_armor_flat_large: int = 2 # [0,999] knob——大护甲 -@export var bonus_gp_amount: int = 20 # [0,999] knob——小GP -@export var bonus_gp_amount_large: int = 50 # [0,999] knob——大GP -@export var bonus_heal_flat: int = 6 # [0,999] knob——恢复(当即回血,封顶生效上限) -@export var bonus_ap_flat: int = 1 # [0,10] knob——AP 件每场战斗首轮行动点基线增量 +@export var feature_value_attack_common: int = 1 # [0,999] knob——小增伤 +@export var feature_value_attack_rare: int = 2 # [0,999] knob——大增伤 +@export var feature_value_max_hp_common: int = 5 # [0,999] knob——小生命 +@export var feature_value_max_hp_rare: int = 10 # [0,999] knob——大生命 +@export var feature_value_armor_common: int = 1 # [0,999] knob——小护甲 +@export var feature_value_armor_rare: int = 2 # [0,999] knob——大护甲 +@export var feature_value_gp_common: int = 20 # [0,999] knob——小GP +@export var feature_value_gp_rare: int = 50 # [0,999] knob——大GP +@export var feature_value_heal_rare: int = 6 # [0,999] knob——恢复(当即回血,封顶生效上限) +@export var feature_value_ap_rarest: int = 1 # [0,10] knob——AP 件每场战斗首轮行动点基线增量 ## 令牌配额读数(未列 kind×tier 组合 = 0——heal 无普通档/ap 无普通稀有档按 v2.2 构成) -func bonus_token_count(kind: String, tier: String) -> int: +func feature_quota(kind: String, tier: String) -> int: match [kind, tier]: - ["attack", TIER_COMMON]: return token_attack_common - ["attack", TIER_RARE]: return token_attack_rare - ["max_hp", TIER_COMMON]: return token_max_hp_common - ["max_hp", TIER_RARE]: return token_max_hp_rare - ["armor", TIER_COMMON]: return token_armor_common - ["armor", TIER_RARE]: return token_armor_rare - ["gp", TIER_COMMON]: return token_gp_common - ["gp", TIER_RARE]: return token_gp_rare - ["heal", TIER_RARE]: return token_heal_rare - ["ap", TIER_RAREST]: return token_ap_rarest + ["attack", TIER_COMMON]: return feature_quota_attack_common + ["attack", TIER_RARE]: return feature_quota_attack_rare + ["max_hp", TIER_COMMON]: return feature_quota_max_hp_common + ["max_hp", TIER_RARE]: return feature_quota_max_hp_rare + ["armor", TIER_COMMON]: return feature_quota_armor_common + ["armor", TIER_RARE]: return feature_quota_armor_rare + ["gp", TIER_COMMON]: return feature_quota_gp_common + ["gp", TIER_RARE]: return feature_quota_gp_rare + ["heal", TIER_RARE]: return feature_quota_heal_rare + ["ap", TIER_RAREST]: return feature_quota_ap_rarest return 0 ## 令牌件值(kind × tier;v2.2 数值对——小/大两档) -func bonus_value(kind: String, tier: String = TIER_COMMON) -> int: +func feature_value(kind: String, tier: String = TIER_COMMON) -> int: match [kind, tier]: - ["attack", TIER_COMMON]: return bonus_attack_flat - ["attack", TIER_RARE]: return bonus_attack_flat_large - ["max_hp", TIER_COMMON]: return bonus_max_hp_flat - ["max_hp", TIER_RARE]: return bonus_max_hp_flat_large - ["armor", TIER_COMMON]: return bonus_armor_flat - ["armor", TIER_RARE]: return bonus_armor_flat_large - ["gp", TIER_COMMON]: return bonus_gp_amount - ["gp", TIER_RARE]: return bonus_gp_amount_large - ["heal", TIER_RARE]: return bonus_heal_flat - ["ap", TIER_RAREST]: return bonus_ap_flat + ["attack", TIER_COMMON]: return feature_value_attack_common + ["attack", TIER_RARE]: return feature_value_attack_rare + ["max_hp", TIER_COMMON]: return feature_value_max_hp_common + ["max_hp", TIER_RARE]: return feature_value_max_hp_rare + ["armor", TIER_COMMON]: return feature_value_armor_common + ["armor", TIER_RARE]: return feature_value_armor_rare + ["gp", TIER_COMMON]: return feature_value_gp_common + ["gp", TIER_RARE]: return feature_value_gp_rare + ["heal", TIER_RARE]: return feature_value_heal_rare + ["ap", TIER_RAREST]: return feature_value_ap_rarest return 0 @@ -101,8 +105,8 @@ func tier_rank(tier: String) -> int: ## 档位令牌总数(货架/校验读面) func tier_total(tier: String) -> int: var total := 0 - for kind in BONUS_IDS: - total += bonus_token_count(kind, tier) + for kind in FEATURE_KINDS: + total += feature_quota(kind, tier) return total @@ -115,18 +119,18 @@ func validate() -> Array: var errs: Array[Dictionary] = [] if clear_heal_pct < 0 or clear_heal_pct > 100: errs.append({"category": "domain", "message": "clear_heal_pct 越域 [0,100]: %d" % clear_heal_pct}) - for kind in BONUS_IDS: + for kind in FEATURE_KINDS: for tier in TIERS: - var c := bonus_token_count(kind, tier) + var c := feature_quota(kind, tier) if c < 0 or c > 99: errs.append({"category": "domain", "message": "token_count(%s,%s) 越域 [0,99]: %d" % [kind, tier, c]}) - var v := bonus_value(kind, tier) + var v := feature_value(kind, tier) if v < 0 or v > 999: - errs.append({"category": "domain", "message": "bonus_value(%s,%s) 越域 [0,999]: %d" % [kind, tier, v]}) + errs.append({"category": "domain", "message": "feature_value(%s,%s) 越域 [0,999]: %d" % [kind, tier, v]}) for tier in TIERS: var total := tier_total(tier) if total != int(TIER_QUOTAS.get(tier, -1)): errs.append({"category": "domain", "message": "档位配额结构失锚(v2.2 追认 b——%s 应=%d 实=%d;改总量须重裁)" % [tier, int(TIER_QUOTAS.get(tier, -1)), total]}) - if bonus_candidate_count < 1 or bonus_candidate_count > 6: - errs.append({"category": "domain", "message": "bonus_candidate_count 越域 [1,6]: %d" % bonus_candidate_count}) + if feature_candidate_count < 1 or feature_candidate_count > 6: + errs.append({"category": "domain", "message": "feature_candidate_count 越域 [1,6]: %d" % feature_candidate_count}) return errs diff --git a/game/data/schemas/meta_tree_table.gd b/game/data/schemas/meta_tree_table.gd index 6560f672..603458c7 100644 --- a/game/data/schemas/meta_tree_table.gd +++ b/game/data/schemas/meta_tree_table.gd @@ -13,8 +13,8 @@ # requires Array[node_id](显式前置——父开子脉内链)/ effects Dictionary(stat 四线 flat: # atk/max_hp/hit/armor_class;rule 键封闭 RULE_KEYS)/ fork_group/fork_side(a/b——同组互斥、 # 营地免费切换)。 -# 🔴 层级纪律(任务书红线 2):局外树只放全局规则件——effects 禁流派标签(relic 流派件永不入树, -# archetype 键出域=加载致命);流派件只走局内随机渠道。 +# 🔴 层级纪律(任务书红线 2):局外树只放全局规则件——effects 禁流派标签(relic 特性永不入树, +# archetype 键出域=加载致命);规则改写型特性只走局内随机渠道。 # A/B 只放规则面(定稿 1.3——全树互斥面 ≤10-15% 首期 4 组);两侧「不同强非强弱」MC 验差 <~3pp(T10)。 # 彩蛋 ≤3(定稿 1.4——点满某脉某排免费觉醒;发现率 <5% 改灰色预告——T10 追认单呈报)。 class_name MetaTreeTable @@ -76,9 +76,9 @@ func validate() -> Array: for ek in fx.keys(): if not (STAT_KEYS.has(String(ek)) or RULE_KEYS.has(String(ek))): errs.append({"category": "zero_flat", "message": "%s effects 键出域(四线/rule 词表封闭): %s" % [nid, String(ek)]}) - # 🔴 层级纪律:局外树禁流派件(archetype 键出域=加载致命) + # 🔴 层级纪律:局外树禁规则改写型特性(archetype 键出域=加载致命) if fx.has("archetype"): - errs.append({"category": "load_bearing", "message": "%s effects 含 archetype(🔴 层级纪律——流派件禁入局外树)" % nid}) + errs.append({"category": "load_bearing", "message": "%s effects 含 archetype(🔴 层级纪律——特性禁入局外树)" % nid}) # A/B 互斥对结构:fork 行必带 fork_group+side;同组恰 a/b 各一 if kind == "fork": var fg := String(row.get("fork_group", "")) diff --git a/game/data/schemas/relic_table.gd b/game/data/schemas/relic_table.gd index f6487ef7..f8881546 100644 --- a/game/data/schemas/relic_table.gd +++ b/game/data/schemas/relic_table.gd @@ -1,8 +1,13 @@ # VERTICAL SLICE - NOT FOR PRODUCTION # Validation Question: 七核心流派各 ≥3 件入局内随机渠道后,标签+档位激活引擎能否机械判「成型」、 -# 机制件带能否挂进令牌池稀有/罕见档随机投放(P0——迭代 12 双层 BD 实施批 T1) +# 规则改写型特性带能否挂进令牌池稀有/罕见档随机投放(P0——迭代 12 双层 BD 实施批 T1) # Date: 2026-10-04(双层 BD 实施批 T1——任务书五裁定稿;设计权威 双层BD体系-整合定稿-2026-10-03 v3) -# 数据配置 RelicTable schema(双层BD/机制件 回填 owner 批末落文;行 = Dictionary 键 relic_id,Rule 4 豁免 +# 概念指路:本表的规则改写型特性,与 adventure.tres 的属性加成型特性,同属一个对象—— +# 「特性」(一次冒险内角色自身得到的提升)。定义见 design/gdd/systems/冒险循环/特性.md。 +# 两者是它的形态枚举(form = rule / stat),不是两个系统;本表承载 rule 形态的逐项定义。 +# (2026-10-05 命名统一:旧称「流派件」→ 规则改写型特性;表名与 relic_id 沿用历史命名, +# 与统一词族对齐归后续批次——见 06-待办清单「命名统一」条目。) +# 数据配置 RelicTable schema(特性·规则改写型定义表;行 = Dictionary 键 relic_id,Rule 4 豁免 # 定义表——AuxItemTable 先例)。 # 行字段:relic_id 主键 / display_name / rarity ∈ {common, rare, rarest}(对齐令牌池三档命名—— # 投放档映射:common/rare→稀有令牌档、rarest→罕见令牌档;relic 令牌永不入普通档=「挂稀有/罕见档」 @@ -12,7 +17,7 @@ # 仅校验键域不禁纯增益(专项论证件以 positive_only 批注登记,人工清单呈报)。 # 档位激活(整合定稿 设计工具 1——以撒套装/小骨铭文):同标签计数 ≥2→档一(流派核心规则)/≥4→档二 # (完全体);散件单体保底=每件效果独立生效,档位只做质变(反例 B-2)——引擎纯函数 RelicsEngine。 -# 🔴 层级纪律(任务书红线 2):流派件只走局内随机渠道(三选一/商店/格面)——本表行永不入同调位 +# 🔴 层级纪律(任务书红线 2):规则改写型特性只走局内随机渠道(三选一/商店/格面)——本表行永不入同调位 # (aux_items 表)/局外树(T8 节点表);扫雷触发点铁律:每流派 ≥1 行 hook ∈ MINE_HOOKS(加载校验, # 违反=红线①触碰面)。 class_name RelicTable diff --git a/game/data/schemas/shop_table.gd b/game/data/schemas/shop_table.gd index 0595196c..46b2acb7 100644 --- a/game/data/schemas/shop_table.gd +++ b/game/data/schemas/shop_table.gd @@ -10,7 +10,7 @@ # 现价公式 = base_price + price_level_bonus(关卡) + price_increment × 该商品已购档数(已购档数在 冒险结构)。 # price_level_bonus = 关级定价加值行(level_index 连续从 1 递增)。 # pool_shelf = 共享池货架行(M-4 迭代 11 第②批 T1——任务书 v1.3 P1 共享池/P4 ceil):键 kind_id 词表 -# 封闭 = 四切边后种(SHELF_KINDS:attack/max_hp/armor/ap——GP 袋负交易切边、机制件三轴 doctrine 切边); +# 封闭 = 四切边后种(SHELF_KINDS:attack/max_hp/armor/ap——GP 袋负交易切边、规则改写型特性三轴 doctrine 切边); # 库存=上限即库存(账本在 冒险结构 _bonus_taken 单点共享,行族不记库存);price_a/price_b = 乘法价格 # 因子(公式 ceil(base × b^(关序−1) × A^(本次进店已购次数)),provisional 投值——P5 甲研究拍板后置追认)。 # products 行族 + 加法定价随 legacy 模式(shop=off 对照承载)保留,退役归 off 锚换代批。 diff --git a/game/data/tables/adventure.tres b/game/data/tables/adventure.tres index 6144b9f0..e1ce4c3a 100644 --- a/game/data/tables/adventure.tres +++ b/game/data/tables/adventure.tres @@ -5,27 +5,27 @@ [resource] script = ExtResource("1") clear_heal_pct = 20 -bonus_candidate_count = 3 -token_attack_common = 18 -token_attack_rare = 5 -token_max_hp_common = 17 -token_max_hp_rare = 5 -token_armor_common = 17 -token_armor_rare = 5 -token_gp_common = 18 -token_gp_rare = 5 -token_heal_rare = 5 -token_ap_rarest = 3 -bonus_attack_flat = 1 -bonus_attack_flat_large = 2 -bonus_max_hp_flat = 5 -bonus_max_hp_flat_large = 10 -bonus_armor_flat = 1 -bonus_armor_flat_large = 2 -bonus_gp_amount = 20 -bonus_gp_amount_large = 50 -bonus_heal_flat = 6 -bonus_ap_flat = 1 +feature_candidate_count = 3 +feature_quota_attack_common = 18 +feature_quota_attack_rare = 5 +feature_quota_max_hp_common = 17 +feature_quota_max_hp_rare = 5 +feature_quota_armor_common = 17 +feature_quota_armor_rare = 5 +feature_quota_gp_common = 18 +feature_quota_gp_rare = 5 +feature_quota_heal_rare = 5 +feature_quota_ap_rarest = 3 +feature_value_attack_common = 1 +feature_value_attack_rare = 2 +feature_value_max_hp_common = 5 +feature_value_max_hp_rare = 10 +feature_value_armor_common = 1 +feature_value_armor_rare = 2 +feature_value_gp_common = 20 +feature_value_gp_rare = 50 +feature_value_heal_rare = 6 +feature_value_ap_rarest = 1 ; TP0 令牌池换代(2026-10-03,node-reward v2.2 追认 b 落地):三选一池 = 固定配额令牌池—— ; 普通 70/稀有 25/罕见 3 = 98 张(罕见档原列「道具件 2」随 aux_item 池种退役收窄——台账自决披露项); diff --git a/game/data/tables/meta_tree.tres b/game/data/tables/meta_tree.tres index 05c03313..b37942f9 100644 --- a/game/data/tables/meta_tree.tres +++ b/game/data/tables/meta_tree.tres @@ -411,5 +411,5 @@ rows = [{ ; ≥ 4×(row−1));锻造脉 3 节点收编 forge_levels(钥石付价=现行迁移零痛);钥石脉=工坊解锁收编 ; (free 迁移点亮)+刷新升级移植;同调脉 socket 3(钥石=规则面首站)+Fork 4 对(A/B 集中同调脉 ; 营地免费切换——effects 首期两 rule 键真实接线余组 stat 面 provisional);彩蛋 1(锻造满排觉醒)。 -; 🔴 层级纪律:局外树只放全局规则件——零 archetype 键(schema 校验强制);流派件只走局内随机渠道。 +; 🔴 层级纪律:局外树只放全局规则件——零 archetype 键(schema 校验强制);规则改写型特性只走局内随机渠道。 ; 数值全 provisional 归 M-4 数值批;A/B 两侧差 <~3pp 验收=T10 MC。 diff --git a/game/data/tables/relics.tres b/game/data/tables/relics.tres index 461c09c5..4dfbeb1d 100644 --- a/game/data/tables/relics.tres +++ b/game/data/tables/relics.tres @@ -260,15 +260,15 @@ rows = [{ } }] -; 双层 BD 实施批(2026-10-04):机制件表——行 = 流派件定义 +; 双层 BD 实施批(2026-10-04):规则改写型特性表——行 = 特性定义 ; (relic_id/display_name/rarity/archetype/hook/effects)。 ; T2 魔法流四件(整合定稿 §2.3 S1):奥术余烬〔普通·rider+1 必中附加〕/魔网织者〔稀有·magic vs ; magic 克制罚修正〕/湛蓝誓约〔稀有·magic vs heavy 克制加成〕/魔能共鸣〔罕见锚点·rider+2+每战首次 ; 开格奥术矢——「每关首次」字面落地为「每战首次」台账披露待追认〕;magic 档一(≥2 件)rider+1 / ; 档二(≥4 件)rider 可暴击——引擎 tiers_for 承载。T3-T6 逐流派续填(flag 4/pierce 4/normal 4/ -; dig 4/charge 3/devour 4——整合定稿 §2.3 七流派件面)。 +; dig 4/charge 3/devour 4——整合定稿 §2.3 七流派的件面)。 ; 稀有度→投放档映射:common/rare → 稀有令牌档、rarest → 罕见令牌档(relic 永不入普通令牌档 -; ——「机制件带挂稀有/罕见档」追认 b 接线口径,普通档 70 张纯数值维持)。 -; 🔴 层级纪律:本表行永不入同调位(aux_items)/局外树(T8 节点表)——流派件只走局内随机渠道。 +; ——「规则改写型特性带挂稀有/罕见档」追认 b 接线口径,普通档 70 张纯数值维持)。 +; 🔴 层级纪律:本表行永不入同调位(aux_items)/局外树(T8 节点表)——规则改写型特性只走局内随机渠道。 ; 数值全 provisional 归 M-4 数值批;effects 键白名单封闭(零裸 flat 同族护栏)。 diff --git a/game/data/tables/shop.tres b/game/data/tables/shop.tres index 3976983b..bd1203c1 100644 --- a/game/data/tables/shop.tres +++ b/game/data/tables/shop.tres @@ -94,7 +94,7 @@ price_b = 1.1 ;(用户拍板骨架先行、数值整体后置,行值归 难度曲线与Boss)。 ; GP 商店房重构批(M-4 迭代 11 第②批 T1,2026-10-03——任务书 v1.3 全裁 P1 共享池/P4 ceil/P5 甲): ; pool_shelf 行族 = 共享池货架(kind_id 词表封闭四切边后种 attack/max_hp/armor/ap——GP 袋负交易切边、 -; 机制件三轴 doctrine 切边;库存=上限即库存,账本在 冒险结构 _bonus_taken 单点共享,行族不记库存); +; 规则改写型特性三轴 doctrine 切边;库存=上限即库存,账本在 冒险结构 _bonus_taken 单点共享,行族不记库存); ; 价格公式换代(pool 模式)= ceil(base_price × b^(关序−1) × A^(本次进店已购次数)),price_a=1.8/price_b=1.1 ; provisional 投值(零人工令改 provisional+后置追认,原 P5 甲研究拍板后置);products 行族 + 加法定价 ; 随 legacy 模式(shop=off 对照承载)保留不退役,退役归 off 锚换代批。货架行值全部 provisional 归 diff --git a/game/presentation/battle_narrator.gd b/game/presentation/battle_narrator.gd index f0d917e5..db5b90be 100644 --- a/game/presentation/battle_narrator.gd +++ b/game/presentation/battle_narrator.gd @@ -131,11 +131,11 @@ static func bonus_result_text(result: Dictionary) -> String: return "已选择:%s\n其余选项已丢弃(不可反悔)" % name -# 流派件卡片文案(迭代 12 T1;2026-10-04 呈现补强——第三行=hook 效果摘要,用户反馈「不知道件是 +# 特性卡片文案(迭代 12 T1;2026-10-04 呈现补强——第三行=hook 效果摘要,用户反馈「不知道件是 # 干嘛的」缺口承载;摘要=静态映射表 provisional 文案归代拍板白名单「件文案微调」) static func relic_card_text(row: Dictionary) -> String: if row.is_empty() or String(row.get("relic_id", "")) == "": - return "流派件\n???" + return "特性\n???" var arch_names := {"magic": "魔法", "pierce": "穿刺", "normal": "普攻", "dig": "开格", "flag": "标旗", "charge": "蓄力", "devour": "吞噬"} var arch := String(arch_names.get(String(row.get("archetype", "")), "流派")) @@ -167,7 +167,7 @@ static func relic_card_text(row: Dictionary) -> String: var summary := String(summaries.get(String(row.get("hook", "")), "")) if summary != "": return "%s · %s\n%s" % [String(row.get("display_name", row.get("relic_id", ""))), arch, summary] - return "流派件 · %s\n%s" % [arch, String(row.get("display_name", row.get("relic_id", "")))] + return "特性 · %s\n%s" % [arch, String(row.get("display_name", row.get("relic_id", "")))] # Boss 胜利战斗总结结算行(settlement-summary v1.1——钥石增量行;组合根拼 GP 行后追加) diff --git a/game/presentation/bonus_interact_controller.gd b/game/presentation/bonus_interact_controller.gd index 6abe4178..d6930cbc 100644 --- a/game/presentation/bonus_interact_controller.gd +++ b/game/presentation/bonus_interact_controller.gd @@ -127,9 +127,9 @@ func _bonus_card_texts(candidates: Array, aux_detail: Array = []) -> Array: elif kind == "aux_item": var iid := String(aux_detail[aux_i]) if aux_i < aux_detail.size() else "" aux_i += 1 - text = Narrator.bonus_card_text(kind, tier, int(db.adventure.bonus_value(kind, tier)), _aux_card_line(iid)) + text = Narrator.bonus_card_text(kind, tier, int(db.adventure.feature_value(kind, tier)), _aux_card_line(iid)) else: - text = Narrator.bonus_card_text(kind, tier, int(db.adventure.bonus_value(kind, tier))) + text = Narrator.bonus_card_text(kind, tier, int(db.adventure.feature_value(kind, tier))) out.append({"id": cid, "text": text}) return out diff --git a/game/presentation/hud_presenter.gd b/game/presentation/hud_presenter.gd index f2d6d235..d6e48f48 100644 --- a/game/presentation/hud_presenter.gd +++ b/game/presentation/hud_presenter.gd @@ -19,7 +19,7 @@ extends RefCounted # HP/状态效果单投喂 B 区站桩(原 B/C 双投喂为重复展示——信息归属拍板单一展示面原则) static func refresh(stage: BattleStageView, info: HeroInfoPanelView, ap_bar: ApBarView, settlement, runner, level_active: bool, db, refresh_remaining: int) -> void: - # 本关强化列表(v3.5 迭代 9 卡⑫ 2026-09-30——runner 统一加算区投影:商店购买与关卡大奖励 + # 特性列表(v3.5 迭代 9 卡⑫ 2026-09-30——runner 统一加算区投影:商店购买与关卡大奖励 # 共账本〔level_runner bonus{atk,max_hp,armor_class}〕;空加算=整节隐藏〔视图内空态纪律〕。 # 呈现只读投影零核心触碰;行文格式=代拍板白名单项) if runner != null and level_active: @@ -34,7 +34,7 @@ static func refresh(stage: BattleStageView, info: HeroInfoPanelView, ap_bar: ApB info.set_level_bonuses(lines) else: info.set_level_bonuses([]) - # 流派件持有投影(迭代 12 呈现补齐 2026-10-04——用户反馈「局内奖励选了什么看不到」: + # 特性持有投影(迭代 12 呈现补齐 2026-10-04——用户反馈「局内奖励选了什么看不到」: # 逐流派聚合行+成型档位;常驻可读+空态隐藏。档位求值=RelicsEngine 纯函数直调) if runner != null and level_active: info.set_relic_holdings(relic_holdings_lines(db, runner.relics_held())) @@ -46,7 +46,7 @@ static func refresh(stage: BattleStageView, info: HeroInfoPanelView, ap_bar: ApB return var s: Dictionary = settlement.presentation_snapshot() # 地形变异常驻角标投影(全局作用域变异首发批 2026-10-04——板级变异快照 → 文案行; - # 空态隐藏=流派件段先例;战斗全程常驻防中局遗忘) + # 空态隐藏=特性段先例;战斗全程常驻防中局遗忘) info.set_board_variants(board_variant_lines(db, s.get("board_variants", []))) var hero: Dictionary = s.hero if hero.is_empty() or not bool(hero.get("alive", false)): @@ -93,7 +93,7 @@ static func _refresh_economy(ap_bar: ApBarView, s: Dictionary, db, refresh_remai ap_bar.set_stop_enabled(bool(s.hero.get("alive", false)) and digging) -# 流派件持有聚合文案(迭代 12 呈现补齐——战斗 C 区与关卡选择页两处共用;空持有=空数组) +# 特性持有聚合文案(迭代 12 呈现补齐——战斗 C 区与关卡选择页两处共用;空持有=空数组) static func relic_holdings_lines(db, held: Array) -> Array[String]: var rlines: Array[String] = [] if db == null or db.relics == null or (db.relics.rows as Array).is_empty() or held.is_empty(): diff --git a/game/presentation/views/hero_info_panel_view.gd b/game/presentation/views/hero_info_panel_view.gd index 513a7701..7e84fd36 100644 --- a/game/presentation/views/hero_info_panel_view.gd +++ b/game/presentation/views/hero_info_panel_view.gd @@ -1,6 +1,6 @@ # VERTICAL SLICE - NOT FOR PRODUCTION # 实现 GDD:design/ux/battle.md(C 区角色信息 240×548——2026-09-26 信息归属拍板精简: -# 攻击(+修正来源角标)/护甲 AC 数据框 + 魔法道具槽(预留)+ 本关强化列表(预留)。 +# 攻击(+修正来源角标)/护甲 AC 数据框 + 魔法道具槽(预留)+ 特性列表(预留)。 # HP 条/立绘占位/状态效果槽/RAP 池/GP/钥石退役——HP 与状态唯一展示面 = B 区站桩(同一数据 # hud_presenter 双投喂 B/C 两区的重复展示);RAP 迁 D 区 AP 条(贴弃图刷新消费口); # GP(中循环)/钥石(大循环)迁出战斗屏)。 @@ -19,9 +19,9 @@ var item_slots: HBoxContainer # 魔法道具槽(迭代 7 T4 接 var _slot_panels: Array = [] # 槽 PanelContainer 引用(选中高亮/置灰重刷) var _selected_handle := 0 # 选中态(0=无;组合根回写维持单源) var _slot_handles: Array = [] # 槽位→handle 映射(set_aux_inventory 刷新) -var _bonus_section: VBoxContainer # 本关强化(预留——空态隐藏,接线归大奖励/锻造呈现批) +var _bonus_section: VBoxContainer # 特性(预留——空态隐藏,接线归大奖励/锻造呈现批) var _bonus_list: VBoxContainer -var _relic_section: VBoxContainer # 流派件持有段(迭代 12 呈现补齐——空态隐藏) +var _relic_section: VBoxContainer # 特性持有段(迭代 12 呈现补齐——空态隐藏) var _relic_list: VBoxContainer var _board_variant_section: VBoxContainer # 地形变异常驻角标(全局作用域变异首发批——空态隐藏) var _board_variant_list: VBoxContainer @@ -70,19 +70,19 @@ func _init() -> void: item_slots.add_child(slot) _slot_panels.append(slot) - # 流派件持有段(迭代 12 呈现补齐 2026-10-04——三选一流派件兑付后常驻可读:逐流派聚合行+成型档位; + # 特性持有段(迭代 12 呈现补齐 2026-10-04——三选一特性兑付后常驻可读:逐流派聚合行+成型档位; # 空态整节隐藏。用户试玩反馈「局内奖励选了什么看不到」缺口承载;2026-10-04 二次反馈上移—— # 构筑核心信息优先级高于临时强化,且防 C 区下部裁切不可见) _relic_section = VBoxContainer.new() _relic_section.add_theme_constant_override("separation", 4) _relic_section.visible = false col.add_child(_relic_section) - _relic_section.add_child(UiKit.label("流派件", 16, true)) + _relic_section.add_child(UiKit.label("特性", 16, true)) _relic_list = VBoxContainer.new() _relic_list.add_theme_constant_override("separation", 2) _relic_section.add_child(_relic_list) # 地形变异常驻角标(全局作用域变异首发批 2026-10-04——Boss 图整图型战斗全程可见防中局遗忘; - # 空态整节隐藏=流派件段先例;摆位/文案 provisional 归 HUD 框架批与本地化批) + # 空态整节隐藏=特性段先例;摆位/文案 provisional 归 HUD 框架批与本地化批) _board_variant_section = VBoxContainer.new() _board_variant_section.add_theme_constant_override("separation", 4) _board_variant_section.visible = false @@ -91,13 +91,13 @@ func _init() -> void: _board_variant_list = VBoxContainer.new() _board_variant_list.add_theme_constant_override("separation", 2) _board_variant_section.add_child(_board_variant_list) - # 本关强化(预留):锻造/大奖励/关卡奖励节点的属性提升——中循环数据因改变战斗数学准入; + # 特性(预留):锻造/大奖励/关卡奖励节点的属性提升——中循环数据因改变战斗数学准入; # 与战斗内状态效果(B 区站桩,随战斗消散)分区,防「战斗结束被清」误读;空态整节隐藏 _bonus_section = VBoxContainer.new() _bonus_section.add_theme_constant_override("separation", 4) _bonus_section.visible = false col.add_child(_bonus_section) - _bonus_section.add_child(UiKit.label("本关强化", 16, true)) + _bonus_section.add_child(UiKit.label("特性", 16, true)) _bonus_list = VBoxContainer.new() _bonus_list.add_theme_constant_override("separation", 2) _bonus_section.add_child(_bonus_list) @@ -113,7 +113,7 @@ func set_armor(ac: int) -> void: _armor_label.text = "护甲 AC %d" % ac -# 流派件持有段(迭代 12 呈现补齐):lines = 聚合文案行(「魔法 ×2 · 档一」式)——空数组 = 整节隐藏 +# 特性持有段(迭代 12 呈现补齐):lines = 聚合文案行(「魔法 ×2 · 档一」式)——空数组 = 整节隐藏 func set_relic_holdings(lines: Array) -> void: for c2 in _relic_list.get_children(): _relic_list.remove_child(c2) @@ -135,7 +135,7 @@ func set_board_variants(lines: Array) -> void: _board_variant_section.visible = not lines.is_empty() -# 本关强化列表(预留接线面):lines = 文案行数组(如「锻造 +2 攻击」)——空数组 = 整节隐藏 +# 特性列表(预留接线面):lines = 文案行数组(如「锻造 +2 攻击」)——空数组 = 整节隐藏 func set_level_bonuses(lines: Array) -> void: for c in _bonus_list.get_children(): _bonus_list.remove_child(c) diff --git a/game/presentation/views/level_map_screen.gd b/game/presentation/views/level_map_screen.gd index a03bb209..71dcbe4c 100644 --- a/game/presentation/views/level_map_screen.gd +++ b/game/presentation/views/level_map_screen.gd @@ -6,7 +6,7 @@ # 悬停预承诺(描边加粗+指针)后点击提交;press_candidate 探针入口改走图上命中同路径 # ③ 放弃冒险二次确认(布局决策 3)——首击转确认态(文案+危险红脉冲约 3 秒超时回落),二击提交 # ④ 顶栏语境:关卡名(level_row.display_name)+ GP 常驻徽章(2026-09-26 二轮拍板去向落地面) -# ⑤ 底部状态栏(布局决策 4):生命/属性/本关加成三组常读(零加成隐藏),放弃按钮右端异位 +# ⑤ 底部状态栏(布局决策 4):生命/属性/特性三组常读(零加成隐藏),放弃按钮右端异位 # 关卡画面(独立屏,Level Map Screen——2026-09-28 形态升格批 M-2 迭代 3 T2:原 RouteOverlay 模态 # 覆盖层升格独立屏,spec level-map.md 形态章节同批改写):全屏不透明独占呈现——激活期战斗屏宿主 # 由组合根整体隐藏(非暗幕半透、零透出)。零自动推进的玩家停点语义不变:唯一前进通道 = @@ -56,7 +56,7 @@ var _hp_bar: Control var _attr_value: Label var _bonus_row: HBoxContainer var _bonus_value: Label -var _relic_value: Label # 流派件持有行(迭代 12 呈现补齐——组合根投喂聚合文案) +var _relic_value: Label # 特性持有行(迭代 12 呈现补齐——组合根投喂聚合文案) var _cand_ids: Array[int] = [] # 本停点候选 id 集(图上命中合法集) var _content_size := Vector2(620, 240) # 图内容包络(open_choices 按图拟合——画布 min 尺寸随它) var _hover_id := -1 # 悬停预承诺候选(-1 = 无) @@ -118,13 +118,13 @@ func _init() -> void: _canvas.draw.connect(_draw_graph.bind(_canvas)) _canvas.gui_input.connect(_on_canvas_input) box.add_child(_canvas) - # 底部状态栏(布局决策 4:生命/属性/本关加成三组 + 放弃按钮右端异位) + # 底部状态栏(布局决策 4:生命/属性/特性三组 + 放弃按钮右端异位) var bottom := HBoxContainer.new() bottom.add_theme_constant_override("separation", 10) box.add_child(bottom) bottom.add_child(_status_box("生命", true)) bottom.add_child(_status_box("属性", false)) - # 本关加成框(零加成隐藏——spec 布局决策 4) + # 特性框(零加成隐藏——spec 布局决策 4) _bonus_row = HBoxContainer.new() _bonus_row.add_theme_constant_override("separation", 10) var bonus_box := PanelContainer.new() @@ -132,11 +132,11 @@ func _init() -> void: _bonus_row.add_child(bonus_box) var bonus_inner := VBoxContainer.new() bonus_box.add_child(bonus_inner) - var bonus_cap := UiKit.label("本关加成", 12, false, UiKit.WARM_SOFT) + var bonus_cap := UiKit.label("特性", 12, false, UiKit.WARM_SOFT) bonus_inner.add_child(bonus_cap) _bonus_value = UiKit.label("", 15, true, UiKit.WARM) bonus_inner.add_child(_bonus_value) - # 流派件持有行(迭代 12 呈现补齐 2026-10-04——用户反馈关卡选择页看不到局内奖励;组合根投喂) + # 特性持有行(迭代 12 呈现补齐 2026-10-04——用户反馈关卡选择页看不到局内奖励;组合根投喂) _relic_value = UiKit.label("", 13, false, UiKit.WARM_SOFT) _relic_value.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART bonus_inner.add_child(_relic_value) @@ -189,7 +189,7 @@ func _draw_hp_bar(bar: Control) -> void: # 放弃入口可见性(组合根在冒险启动时开、默认关——语义对象 = 整局冒险) -# 流派件持有投影(迭代 12 呈现补齐——组合根投喂聚合文案;空文案=行隐藏) +# 特性持有投影(迭代 12 呈现补齐——组合根投喂聚合文案;空文案=行隐藏) func set_relic_holdings(text: String) -> void: _relic_value.text = text @@ -324,7 +324,7 @@ func _refresh_status() -> void: if ac_bonus > 0: parts.append("AC +%d" % ac_bonus) _bonus_value.text = " · ".join(parts) - # 流派件持有行可见性(与加成行并框——任一非空整框显示;文案归组合根 set_relic_holdings) + # 特性持有行可见性(与加成行并框——任一非空整框显示;文案归组合根 set_relic_holdings) _bonus_row.visible = not parts.is_empty() or _relic_value.text != "" diff --git a/game/smoke/adventure_monte_carlo.gd b/game/smoke/adventure_monte_carlo.gd index fbc69165..50eb9131 100644 --- a/game/smoke/adventure_monte_carlo.gd +++ b/game/smoke/adventure_monte_carlo.gd @@ -42,8 +42,8 @@ func _initialize() -> void: var shop_mode := "off" if args.size() >= 6 and args[5] in ["off", "on"]: shop_mode = args[5] - # 流派件/树分层开关(迭代 12 T7/T10——off=基线;formed=成型画像开局注入七流派各 2 件档一成型集 - # 〔测量面专用 params.relics_seed——真实局流派件只走局内随机渠道〕;ab_a/ab_b=Fork posture 两侧 + # 特性/树分层开关(迭代 12 T7/T10——off=基线;formed=成型画像开局注入七流派各 2 件档一成型集 + # 〔测量面专用 params.relics_seed——真实局规则改写型特性只走局内随机渠道〕;ab_a/ab_b=Fork posture 两侧 # rule 键集——A/B 面两侧差 <~3pp 验收载体) var relic_mode := "off" if args.size() >= 7 and args[6] in ["off", "formed", "ab_a", "ab_b"]: diff --git a/game/smoke/level_autoplay.gd b/game/smoke/level_autoplay.gd index d80d25eb..ce8160ea 100644 --- a/game/smoke/level_autoplay.gd +++ b/game/smoke/level_autoplay.gd @@ -134,7 +134,7 @@ static func run_adventure(db, seed_val: int, atk_pct: int, hp_pct: int, collect_ "log_path": "", "policy": policy, "refreshes": 0, "mine_hits": 0, "mine_dmg": 0, "visited_ids": [], "choices": 0, "last_battle_enemies": [], "summary": {}, "wallet_events": [], "encounter_max_hp_seq": [], "reward_events": [], - "relic_mode": String(relic.get("mode", "off")), # 流派件分层开关(迭代 12 T7——off=316-f 通用竞争/on=成型画像优先捕捞 relic) + "relic_mode": String(relic.get("mode", "off")), # 特性分层开关(迭代 12 T7——off=316-f 通用竞争/on=成型画像优先捕捞 relic) "shop_gp_seq": [], # 商店房到达余额序(逐关 1 次——GP 跨关延续验收取数面) "prng": _policy_rng(seed_val), "mine_slips": 0, "skip_digs": 0, "shop_buys": 0, "adv": true, # v3 档位行为开关(选路评分/失误注入/商店购买只挂冒险测量面——单关夹具保持旧语义零扰动) @@ -156,7 +156,7 @@ static func run_adventure(db, seed_val: int, atk_pct: int, hp_pct: int, collect_ if not attune.is_empty(): adv_params["attunement"] = attune.get("equipped", []) adv_params["attune_refresh_y"] = int(attune.get("refresh_y", 0)) - # 流派件注入(迭代 12 T7——formed 画像=开局注入七流派各 2 件档一成型集;测量面专用) + # 特性注入(迭代 12 T7——formed 画像=开局注入七流派各 2 件档一成型集;测量面专用) if relic.has("seed_ids"): adv_params["relics_seed"] = relic.get("seed_ids", []) # 树规则键注入(迭代 12 T10——A/B 面读数载体:fork 激活侧 effects rule 键集透传) @@ -185,7 +185,7 @@ static func run_adventure(db, seed_val: int, atk_pct: int, hp_pct: int, collect_ # 终局池读数(迭代 11 第②批 T5——摘要 additive 键 pool_stock:_settle 清账前快照, # 商店买走 vs 奖励领走 vs 枯竭的终局面;事后读 adr.pool_stock 会被收束清账重置=满库假象) st["pool_stock"] = (st.get("summary", {}).get("pool_stock", {}) as Dictionary).duplicate(true) - st["relics"] = (st.get("summary", {}).get("relics", []) as Array).duplicate() # 流派件终局持有集(迭代 12 T1——摘要 additive 键清账前快照,同 pool_stock 模式) + st["relics"] = (st.get("summary", {}).get("relics", []) as Array).duplicate() # 特性终局持有集(迭代 12 T1——摘要 additive 键清账前快照,同 pool_stock 模式) st.log_path = logger.log_path() if own_session: logger.close_session() @@ -268,7 +268,7 @@ static func _on_adventure_bonus(payload: Dictionary, st: Dictionary, adr) -> voi # 三选一确定性选件(TP0 316-f——1 级优先度=最稀有〔档位最高 rarest>rare>common〕、2 级=最左; # 候选并列同档取最左=稳定序保证。空候选/未知档位 = 回退最左防御口径。 # 成型画像(迭代 12 T7——relic 模式 on:候选含 relic 令牌时优先在 relic 集内按 316-f 择一 -# 〔贪心捕捞→流派件入局→成型画像全流派覆盖——R3 乙单锚承载〕;off=relic 与数值件同规则竞争) +# 〔贪心捕捞→特性入局→成型画像全流派覆盖——R3 乙单锚承载〕;off=relic 与属性加成型特性同规则竞争) static func _pick_token(candidates: Array, relic_mode: String = "off") -> Dictionary: var pool: Array = candidates if relic_mode == "on": diff --git a/game/smoke/smoke_all.gd b/game/smoke/smoke_all.gd index 8acb1cc5..333069c7 100644 --- a/game/smoke/smoke_all.gd +++ b/game/smoke/smoke_all.gd @@ -220,12 +220,12 @@ func _smoke_adventure_table() -> void: check(int(_db.adventure.tier_total(tier)) == int(_db.adventure.TIER_QUOTAS[tier]), "档位配额结构锚(v2.2 追认 b):%s = %d 张" % [tier, int(_db.adventure.TIER_QUOTAS[tier])]) check(int(_db.adventure.deck_total()) == 98, "令牌池总量 = 98 张(普通 70/稀有 25/罕见 3——罕见档随道具件池种退役收窄)") - check(int(_db.adventure.bonus_value("gp", "common")) == 20 and int(_db.adventure.bonus_value("gp", "rare")) == 50 - and int(_db.adventure.bonus_value("attack", "common")) == 1 and int(_db.adventure.bonus_value("attack", "rare")) == 2 - and int(_db.adventure.bonus_value("max_hp", "common")) == 5 and int(_db.adventure.bonus_value("max_hp", "rare")) == 10 - and int(_db.adventure.bonus_value("armor", "common")) == 1 and int(_db.adventure.bonus_value("armor", "rare")) == 2, + check(int(_db.adventure.feature_value("gp", "common")) == 20 and int(_db.adventure.feature_value("gp", "rare")) == 50 + and int(_db.adventure.feature_value("attack", "common")) == 1 and int(_db.adventure.feature_value("attack", "rare")) == 2 + and int(_db.adventure.feature_value("max_hp", "common")) == 5 and int(_db.adventure.feature_value("max_hp", "rare")) == 10 + and int(_db.adventure.feature_value("armor", "common")) == 1 and int(_db.adventure.feature_value("armor", "rare")) == 2, "数值对(v2.2):小GP 20/大GP 50 · 小增伤 +1/大 +2 · 小生命 +5/大 +10 · 小护甲 +1/大 +2") - check(int(_db.adventure.bonus_value("heal", "rare")) == 6 and int(_db.adventure.bonus_value("ap", "rarest")) == 1, + check(int(_db.adventure.feature_value("heal", "rare")) == 6 and int(_db.adventure.feature_value("ap", "rarest")) == 1, "恢复件 +6 当即回血(新入池种类,rare 档)· AP +1(rarest 档)") check(_db.attunement_growth != null and int(_db.attunement_slot_cap()) == 3 and Attunement.slots(_db, null) == 0, @@ -349,7 +349,7 @@ func _smoke_adventure() -> void: var cand_ok := picks.size() == 2 var ks_gain_ok := picks.size() == 2 var resolve_ok := level_resolves.size() == 2 - var max_flat := int(_db.adventure.bonus_max_hp_flat) + var max_flat := int(_db.adventure.feature_value_max_hp_common) var heal_pct := int(_db.adventure.clear_heal_pct) var hp_acc := 0 # max_hp 件累加(回血封顶断言的生效上限推导——TP0 起按兑付令牌实值,大小档分别计) var ks_prefix := 0 @@ -384,7 +384,7 @@ func _smoke_adventure() -> void: var r: Dictionary = level_resolves[i] var rk := String(r.get("picked", "")) var rt := String(r.get("tier", "")) - if _smoke_find_token(p.get("candidates", []) as Array, rk, rt).is_empty() or int(r.get("value", -1)) != int(_db.adventure.bonus_value(rk, rt)): + if _smoke_find_token(p.get("candidates", []) as Array, rk, rt).is_empty() or int(r.get("value", -1)) != int(_db.adventure.feature_value(rk, rt)): resolve_ok = false if rk == "max_hp": hp_acc += int(r.get("value", max_flat)) @@ -397,7 +397,7 @@ func _smoke_adventure() -> void: var exp_base := maxi(1, int(round(float(int(_db.hero.max_hp)) * k))) # 模拟档 v3.4 商店贪心购血(数值修复批)合法抬升——上限窗口 = 基础 + 加算区 3 件 + 购血余量; # TP0 数值对后 max_hp 件有大生命 +10(rare 档)——上界按大件最坏构成 3×10+购血 15=+45(TP0 放宽) - var hp_ceiling := maxi(1, int(round(float(int(_db.hero.max_hp) + 3 * int(_db.adventure.bonus_value("max_hp", "rare")) + 15) * k))) + var hp_ceiling := maxi(1, int(round(float(int(_db.hero.max_hp) + 3 * int(_db.adventure.feature_value("max_hp", "rare")) + 15) * k))) var seq_ok := seq.size() > 0 and int(seq[0]) == exp_base for v in (seq as Array): if int(v) < exp_base or int(v) > hp_ceiling: @@ -592,22 +592,22 @@ func _smoke_adventure() -> void: a13.present_node_bonus(ncands13, ndraw.get("aux_detail", []) as Array) a13.present_node_bonus([{"kind": "gp", "tier": "common"}]) var gp13 := int(a13.ledger.get("gp", 0)) - check(a13.apply_node_bonus("gp", "common") and int(a13.ledger.get("gp", 0)) == gp13 + int(_db.adventure.bonus_value("gp", "common")), - "奖励节点 GP 件入账(钱包「奖励入账」收口——+%d)" % int(_db.adventure.bonus_value("gp", "common"))) + check(a13.apply_node_bonus("gp", "common") and int(a13.ledger.get("gp", 0)) == gp13 + int(_db.adventure.feature_value("gp", "common")), + "奖励节点 GP 件入账(钱包「奖励入账」收口——+%d)" % int(_db.adventure.feature_value("gp", "common"))) check(a13._node_bonus_pending.is_empty(), "节点停点态兑付后清零(恰一次语义同构)") var s10: Dictionary = a10.summary check(String(s10.get("result", "")) == "abandoned" and not bool(s10.get("cleared", true)), "放弃摘要:abandoned · 未打穿(已获大奖励不追回——同失败型结算)") -# ---- 双层 BD 机制件基建冒烟(迭代 12 T1——relic_table/档位激活引擎/机制件带池接线)---- +# ---- 双层 BD 规则改写型特性基建冒烟(迭代 12 T1——relic_table/档位激活引擎/规则改写型特性带池接线)---- func _smoke_relics() -> void: - print("--- 机制件基建(relic_table · 档位激活引擎 · 机制件带接线)---") + print("--- 规则改写型特性基建(relic_table · 档位激活引擎 · 规则改写型特性带接线)---") # ① 现行表牌库构成:七流派 27 件全量入池——98 数值令牌+27 relic 令牌(批次一铺量完成) check(_db.relics != null and (_db.relics.rows as Array).size() == 27, "relic_table 已加载(七流派 27 件全量——批次一 T2-T6 铺量完成)") var a_r0 = load("res://core/adventure_runner.gd").new(_db, _fresh_rng(71)) - check(a_r0.start_adventure(71, {"first_script": true}), "机制件带场景:冒险启动(seed 71)") + check(a_r0.start_adventure(71, {"first_script": true}), "规则改写型特性带场景:冒险启动(seed 71)") var relic_tokens := 0 var rarest_tokens := 0 for t in a_r0._bonus_deck: @@ -616,7 +616,7 @@ func _smoke_relics() -> void: if String((t as Dictionary).get("tier", "")) == "rarest": rarest_tokens += 1 check(relic_tokens == 27 and rarest_tokens == 6 and a_r0._bonus_deck.size() == 125, - "机制件带入池:27 件(rare 档 21 + rarest 锚点 6)——牌库 98+27=125") + "规则改写型特性带入池:27 件(rare 档 21 + rarest 锚点 6)——牌库 98+27=125") check(_db.relics.validate().is_empty(), "relic_table.validate 零违例(有行流派扫雷端铁律——magic first_dig_spell 在案)") # ② 档位激活引擎(纯函数直测——构造表 4 件 magic + 1 件 flag + 1 件 rarest 锚点) var rt := RelicTable.new() @@ -638,17 +638,17 @@ func _smoke_relics() -> void: var hooks := RelicsEngine.hooks_for(["m1", "f1"], rt) check(hooks.size() == 2 and String(hooks[0].get("hook", "")) == "hero_attack_rider", "挂点投影:表序稳定(同集合→同投影)") - # ③ 机制件带接线(临时表注入——relic 令牌入牌库/兑付入持有集/踢池/断点往返;测试尾还原现行表) + # ③ 规则改写型特性带接线(临时表注入——relic 令牌入牌库/兑付入持有集/踢池/断点往返;测试尾还原现行表) var live_rows: RelicTable = _db.relics _db.relics = rt var a_r = load("res://core/adventure_runner.gd").new(_db, _fresh_rng(72)) - check(a_r.start_adventure(72, {"first_script": true}), "机制件带场景:冒险启动(seed 72——注入 5 行临时表)") + check(a_r.start_adventure(72, {"first_script": true}), "规则改写型特性带场景:冒险启动(seed 72——注入 5 行临时表)") var deck_relic := 0 for t in a_r._bonus_deck: if String((t as Dictionary).get("kind", "")) == "relic": deck_relic += 1 check(deck_relic == 5 and a_r._bonus_deck.size() == 103, - "机制件带入池:5 行 relic 每件 1 张(common/rare→稀有档 rarest→罕见档)——牌库 98+5=103") + "规则改写型特性带入池:5 行 relic 每件 1 张(common/rare→稀有档 rarest→罕见档)——牌库 98+5=103") var relic_seen: Dictionary = {} for i in 60: for t in a_r._draw_bonus_candidates(): @@ -726,13 +726,13 @@ func _smoke_relics() -> void: "深挖钻头=开掘 +1 AP/每 4 格深层产出(R4 甲非信息税对价)· 蓄力三件=层值 1/减伤 1/层/满层 ×2") check(orch.action_economy.relic_ap_carry and orch.action_economy.relic_dig_extra == 1, "蓄力/钻头 action_economy 注入(ap_carry 改写停手转存 + 付费开掘对价注入——关着 false/0 零扰动)") - # ⑦c 流派件持有呈现段(2026-10-04 用户反馈补齐——C 区「流派件」节:聚合行+成型档位;空态隐藏) + # ⑦c 特性持有呈现段(2026-10-04 用户反馈补齐——C 区「特性」节:聚合行+成型档位;空态隐藏) var panel = load("res://presentation/views/hero_info_panel_view.gd").new() panel.set_relic_holdings([]) - check(not panel._relic_section.visible, "流派件段空态隐藏(视图空态纪律同本关强化段)") + check(not panel._relic_section.visible, "特性段空态隐藏(视图空态纪律同特性段)") panel.set_relic_holdings(["魔法 ×2 · 档一", "开格 ×1 · 散件"]) check(panel._relic_section.visible and panel._relic_list.get_child_count() == 2, - "流派件段持有呈现(聚合行+成型档位常驻可读——「局内奖励选了什么看不到」缺口承载)") + "特性段持有呈现(聚合行+成型档位常驻可读——「局内奖励选了什么看不到」缺口承载)") # ⑦b 深挖钻头付费开掘回归(2026-10-04 试玩缺陷修复——对价挂付费侧):AP=1 降级照常开格 # (用户实测「AP=1 无法开格只能标旗」的回归闸);AP=2 付全价积付费计数(深层产出配额取数面)。 var ae_dd = load("res://core/action_economy.gd").new(_db) @@ -3773,8 +3773,8 @@ func _smoke_shop_pool() -> void: var val0: int = int(a8.bonus.get(String(val_map[kind]), -999)) check(r8.buy_pool_item(kind), "购买受理(pool 口——%s|%s)" % [kind, tier]) check(int(r8.gp) == gp0 - int(buy_c.get("price", 0)), "钱包扣现价(%d → %d)" % [gp0, int(r8.gp)]) - check(int(a8.bonus.get(String(val_map[kind]), -999)) == val0 + int(_db.adventure.bonus_value(kind, tier)), - "加算区 +令牌档位件值(池件=奖励件本体——%s|%s %+d)" % [kind, tier, int(_db.adventure.bonus_value(kind, tier))]) + check(int(a8.bonus.get(String(val_map[kind]), -999)) == val0 + int(_db.adventure.feature_value(kind, tier)), + "加算区 +令牌档位件值(池件=奖励件本体——%s|%s %+d)" % [kind, tier, int(_db.adventure.feature_value(kind, tier))]) check(int(a8._bonus_taken.get(kind, 0)) == taken0 + 1, "共享池账本 -1(跨渠道单点——taken %d → %d)" % [taken0, int(a8._bonus_taken.get(kind, 0))]) # A 链:同visit 第二购现价 = ceil(base×b^(l2−1)×A^1)(货架已全重抽——新卡新价同公式) var second: Dictionary = {} @@ -3788,7 +3788,7 @@ func _smoke_shop_pool() -> void: check(int(second.get("price", -1)) == expect_p2, "A 链爬价 = ceil(base×b^(关序−1)×A^1)(进店第 2 购——%d)" % expect_p2) check(r8.buy_pool_item(String(second.get("kind_id", ""))), "同 visit 第二购受理(A 链软闸在价不在限)") - # ④ 切边零入店(白-box 重抽 40 次——GP 袋/机制件永不在架;重抽消费 shop_draw 签,场景尾不回写主时间线) + # ④ 切边零入店(白-box 重抽 40 次——GP 袋/规则改写型特性永不在架;重抽消费 shop_draw 签,场景尾不回写主时间线) var cut_seen := false for i in 40: r8._shop_draw_shelf() @@ -3839,7 +3839,7 @@ func _smoke_shop_pool() -> void: for k in ps.keys(): var quota := 0 for tier in _db.adventure.TIERS: - quota += int(_db.adventure.bonus_token_count(String(k), tier)) + quota += int(_db.adventure.feature_quota(String(k), tier)) if int(ps[k]) < 0 or int(ps[k]) > quota: ps_ok = false check(ps_ok, "终局池余量在域 [0,配额](%s)" % str(ps)) @@ -4430,7 +4430,7 @@ func _smoke_save() -> void: and int(bp.get("hero_hp", -1)) == 13, "断点七字段往返:关卡序号/节点位/生命") var bp_bonus: Dictionary = bp.get("bonus", {}) check(int(bp_bonus.get("atk", -1)) == 2 and int(bp_bonus.get("max_hp", -1)) == 5 - and int(bp_bonus.get("armor_class", -1)) == 1, "断点七字段往返:本关加成区") + and int(bp_bonus.get("armor_class", -1)) == 1, "断点七字段往返:属性加成区") check(int(bp.get("gp", -1)) == 17, "断点七字段往返:GP 钱包") var bp_shop: Dictionary = bp.get("shop_purchased", {}) check(int(bp_shop.get("hp_small", -1)) == 2 and int(bp_shop.get("atk_small", -1)) == 1, From 8e7acaa903025b79b74cbfb6bda40f3b485b1666 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 02:48:17 +0800 Subject: [PATCH 02/15] =?UTF-8?q?=E7=89=B9=E6=80=A7=20v1.1/v1.2=EF=BC=9A?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E9=87=8D=E6=9E=84=20+=20=E4=B8=93=E9=95=BF?= =?UTF-8?q?=E6=B8=A0=E9=81=93=E8=90=BD=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v1.1 分类重构(用户拍板): - 两类由「规则改写型 / 属性加成型」改为「属性提升(ASI)/ 专长(Feat)」 - 属性提升内部再分纯属性组(生命上限 / AC / 攻击)与特殊组 (行动点上限 / 刷新次数 / 专长获取) - 刷新次数的作用对象是选择界面而非角色,作为例外显式登记,不进加算区 - 回答「刷新次数是否构成第三个枚举」:否——枚举轴(是什么)与 渠道轴(从哪来)是两根轴,同项出现在两个渠道不改枚举数量 v1.2 专长渠道落定(用户拍板): - 专长的专属渠道 = 关底 Boss 击败后兑付;不新增节点类型, 节点类型仍为封闭枚举五种,改动落在 Boss 节点兑付面 (「是否扩类」悬案由此收口) - 罕见旁路明确为「普通奖励里的专长 N 选一」,罕见且全局限量 新增待拍板 / 待观察: - gp(金币袋)与 heal(恢复)不进持有集、不持续生效、无生命周期, 按「自身得到提升」的定义是否仍属本类待拍板(甲案移出另立即时兑付 / 乙案放宽定义;动池须重裁档位结构锚 70/25/3) - 最终关 Boss 后是否也兑付专长 - 确定性渠道一局两次专长 vs 档位阈值(同标签 2 件档一 / 4 件档二) 同步:02-系统清单 v1.4、06-待办清单 BD 分层条目改写 + 新立「两个新种类 入池」条目、entities.yaml feature 条目(form → categories、新增 open_questions)、两个 schema 的概念指路注释换用新分类名。 未动:数据层数值与表结构(值零变更);game/ 下运行层旧称谓换名 留待可跑冒烟批次(本会话按测试执行两入口铁规零测试)。 --- design/gdd/02-系统清单.md | 3 +- design/gdd/06-待办清单.md | 24 ++++- design/gdd/systems/冒险循环/特性.md | 150 ++++++++++++++++++++------- design/registry/entities.yaml | 13 +-- game/data/schemas/adventure_table.gd | 9 +- game/data/schemas/relic_table.gd | 15 +-- 6 files changed, 154 insertions(+), 60 deletions(-) diff --git a/design/gdd/02-系统清单.md b/design/gdd/02-系统清单.md index ad0e25ff..dc3ba99d 100644 --- a/design/gdd/02-系统清单.md +++ b/design/gdd/02-系统清单.md @@ -45,7 +45,7 @@ | `关卡节点图生成.md` | 单关节点图的逐局随机来源:图模板池、抽签与实例化(实施排队 ADR-0007 裁决后) | 设计草案·拍板点全落文 | | `冒险结构.md` | 整局冒险的关卡序列、失败与大奖励 | 已定稿·自旧体系迁移 | | `难度曲线与Boss.md` | 难度曲线、期望值带与 Boss 设计 | 已定稿·自旧体系迁移 | -| `特性.md` | 一次冒险内角色自身得到的提升(规则改写型 / 属性加成型两种形态) | 已实现·2026-10-05 新立定义 | +| `特性.md` | 一次冒险内角色自身得到的提升(属性提升 / 专长两类) | 已实现·2026-10-05 新立定义·v1.1 分类重构 | ### 跨局循环(`systems/跨局循环/`) @@ -129,3 +129,4 @@ | v1.1 | 2026-09-27 | 关卡画面 UX spec 建档(关卡画面 UX 批):`ux/` 表补 `level-map.md` 行——选路枢纽三停点布局、GP 常驻徽章、交互映射与 AC 成文,三项设计提案挂 06 待拍板 | | v1.2 | 2026-10-03 | R3 清账批(gdd_lint 分域随批):四处状态单元格日期批注迁出——敌人系统行事件见敌人系统.md 版本历史 v0.5(技能池批);元进度行见本表 v0.8;camp/shop 行=两文 v1.0 落文(2026-09-30 三裁决执行批);语义零变更 | | v1.3 | 2026-10-05 | 立《特性》:一次冒险内角色自身得到的提升——此前按内部分类被叫成三个名字(规则类称"流派件"、属性类称"数值件"、界面称"本关强化"),现收敛为一个对象的两种形态枚举;文档树冒险循环补行 + 命名对照表补 `ADVENTURE_FEATURE` 行 | +| v1.4 | 2026-10-05 | 《特性》v1.1 分类重构:两类由"规则改写型 / 属性加成型"改为"属性提升(ASI)/ 专长(Feat)",属性提升内部再分纯属性组与特殊组;获取途径由两口共用池改为三条分工渠道(专长走特定节点、属性提升走奖励节点与商店)+罕见旁路"专长获取" | diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index cd018c3e..1a47dd10 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -25,15 +25,29 @@ **设计知识存续口径**:七流派完整件表/逐项反例条件表/天赋树后备语言(哈迪斯 2 预算制扩容/邻接树改型/GP 价格通胀防线)存整合定稿,随实施批文档吸收迁入各 GDD 正主(元进度/node-reward/战斗结算/地形变异/行动经济/魔法道具边界句/商店 spec)——**吸收完成前定稿不删**;喂雷流待办见上条遗留登记。 -#### 冒险 BD 两类加强物品获取同渠道、纯概率差(用户口径:获取途径须区分开,2026-10-04 提问登记) +#### 冒险 BD 两类获取同渠道、纯概率差——渠道分工目标态(2026-10-04 提问登记;2026-10-05 用户定分工) -**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **特性**(2026-10-05 定名,定义见 [特性](systems/冒险循环/特性.md)):规则改写型(改规则、带流派标签与档位激活,构筑核心)与属性加成型(属性加成,写统一加算区;账本实为冒险域、关间不清零)两种形态。旧称「流派件 / 数值件 / 本关强化」一律作废。现行两类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),规则改写型只占稀有/罕见档(与属性大件混编),商店仅「货架零规则改写型挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 +**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **特性**(2026-10-05 定名,定义见 [特性](systems/冒险循环/特性.md)):**专长**(改规则、带流派标签与档位激活,构筑核心)与**属性提升**(抬属性,写统一加算区;账本实为冒险域、关间不清零)两类。旧称「流派件 / 数值件 / 本关强化」一律作废;v1.0 的「规则改写型 / 属性加成型」亦作废。现行两类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),专长只占稀有/罕见档(与属性大件混编),商店仅「货架零专长挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 -**用户期望改动**:将两种形态的获取途径区分开(规则改写型走战场奖励、属性加成型走商店训练),规则改写型的获取节奏不依赖纯概率。已呈四备选(均未拍板):① Boss/精英击杀后规则改写型**专属三选一**,规则改写型整体退出共享池〔我方推荐:确定性最高,杀戮尖塔/以撒/哈迪斯参照系全支持,与钥石逐杀 Boss 节奏同构;代价=令牌池配额回收+商店保底改向+MC 锚换代〕;② 行为条件投放(累计玩法行为定向出件,防滚雪球工程量大);③ 计步保底(每 N 奖励面必含规则改写型,改动最小只缓解不根除);④ 双池分离(每面必见规则改写型,决策密度过强,不推荐)。 +**用户定案(2026-10-05)**:三条渠道分工——**专长走关底 Boss 击败后**(专属三选一,时机确定,构筑节奏可预期);**属性提升走奖励节点与商店训练**(商店口径仍为「训练」)。在属性提升的通用渠道里嵌一个**罕见且全局限量**的「专长获取」项,小概率出现、拿到立刻开一次专长 N 选一,为确定性主渠道加一层赌博感。用户原话:"我在获取特性的时候,可以有些比较罕见的道具,让我立马得到一个专长,就给它一点不确定性,一点随机性"。**确定性优先**:专长不因没 roll 到就构筑不起来。 -**归属**:[node-reward](ux/node-reward.md)(令牌池与奖励面)+ [冒险结构](systems/冒险循环/冒险结构.md)(商店货架保底);与上条「双层 BD 延期与备选内容总登记」二期件组相关但不同面。 +原四备选(① 专长专属三选一 ② 行为条件投放 ③ 计步保底 ④ 双池分离)已被上述定案覆盖——定案≈备选①的确定性路线,余三备选不再单独推进。**节点类型不扩类**:专长挂在 Boss 节点兑付面上(击败后追加一次专长三选一),[关卡节点地图](systems/冒险循环/关卡节点地图.md) 的节点类型仍为封闭枚举五种——此前的"是否新增节点类型"悬案由此收口。 -**状态**:待讨论(2026-10-04 用户提问登记,后续展开) +**待拍板/待观察三项**:① **属性提升池里的 gp(金币袋)与 heal(恢复)两项**,按「角色自身得到的提升」的定义是否仍属本类——两者都不进持有集、不持续生效,**没有"获得→持有→清零"的生命周期**。甲案=移出特性另立「即时兑付/补给」类(代价:档位配额 70/25/3 是结构锚,动总量须重裁非调参);乙案=放宽特性定义容纳它们(代价:判据句「带在自己身上的是特性」失效,与魔法道具边界软化)。② **最终关 Boss 后是否也兑付专长**(现行奖励口径是最终关不给——没有后续关卡可消费)。③ **专长总量与档位阈值的匹配**:确定性渠道一局只兑付两次(若最终关不给),而档位阈值是同标签 2 件档一 / 4 件档二——档二须靠罕见旁路补齐,是否合预期归曲线调参批观察。 + +**归属**:[特性](systems/冒险循环/特性.md)(定义与目标分工)+ [node-reward](ux/node-reward.md)(令牌池与奖励面)+ [冒险结构](systems/冒险循环/冒险结构.md)(商店货架保底)+ [关卡节点地图](systems/冒险循环/关卡节点地图.md)(节点类型词表);与上条「双层 BD 延期与备选内容总登记」二期件组相关但不同面。 + +**状态**:分工已定,**实施待排批**;两项待拍板(2026-10-05 更新) + +#### 属性提升两个新种类入池——刷新次数、专长获取(2026-10-05 立) + +**现状**:[特性](systems/冒险循环/特性.md) v1.1 立了属性提升的特殊组三项,其中**行动点上限**已在池(罕见档),**刷新次数与专长获取两项尚未入表**。注意与既有「商店独立刷新机制」条分清:那条是进店后的免费次数 + GP 刷新(商店自身的服务),本条指的是**作为特性授予的**重抽次数,两者不是一回事,入池前须先划清边界。 + +**连带约束**:`FEATURE_KINDS` 词表封闭(断点附随件与牌库剔除态依赖它),扩种类须走 `adventure_table.gd` + registry 同步修订;档位配额是**结构锚**(普通 70 / 稀有 25 / 罕见 3 = 98 张,入 schema validate 硬断言),新种类入池要占配额——**改总量须重裁而非调参**。专长获取须带全局限量(一局内可获得次数上限)。 + +**归属**:[特性](systems/冒险循环/特性.md) 调参表 + [冒险结构](systems/冒险循环/冒险结构.md) 共享池账本节;数值所有权归 [难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md) + +**状态**:待排批——须在可跑冒烟的迭代批次内完成 #### 内部分类禁写入玩家可见面——特性呈现三处违规待改(2026-10-04 用户立意登记) diff --git a/design/gdd/systems/冒险循环/特性.md b/design/gdd/systems/冒险循环/特性.md index 013fe5db..61a2f783 100644 --- a/design/gdd/systems/冒险循环/特性.md +++ b/design/gdd/systems/冒险循环/特性.md @@ -2,7 +2,7 @@ > 一次冒险之内,角色**自身得到提升**的载体。它不是包里的东西,而是角色本人的变化——这点决定了它和持有物是两类完全不同的概念,下面的「关联与边界」一节写了怎么区分。 > -> 同一个概念下有**两种形态**:改写规则的,和抬高属性的。它们是同一个对象的形态枚举值(`form`:规则改写型 / 属性加成型),不是两类东西。 +> 同一个概念下有**两类**:抬高数字的(**属性提升**),和改规则的(**专长**)。它们是同一个对象的两个分类,不是两个系统。 > > 状态:**已实现**(2026-10-04 双层 BD 实施批落地)。本文件是特性的唯一定义文档。 > @@ -20,7 +20,7 @@ | 负责 | 不负责 | |---|---| -| 特性的定义与形态枚举 | 每件效果怎么接入结算——归挂点所属文档([战斗结算](../战斗循环/战斗结算.md)、[行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md)) | +| 特性的定义与两个分类 | 每件效果怎么接入结算——归挂点所属文档([战斗结算](../战斗循环/战斗结算.md)、[行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md)) | | 生命周期边界:何时出现、何时生效、何时清零 | 卡面排版与界面呈现细则——见 [HUD框架](../表现与支撑/HUD框架.md) | | 获取途径的口径与约束 | 魔法道具与元进度——归上表两份文档 | | 与相邻概念的边界 | 格面资源、关卡节点、商店本身的规则——归各自所属文档 | @@ -30,30 +30,69 @@ ``` 【关内】排雷推理 → 战斗结算 → 通关 ──┐ ├─→ 得到一项特性 ─→ 后续关卡带着它继续 - 奖励节点・商店 ┘ + 奖励节点・商店・Boss 击败后 ┘ ``` -特性处在「一次冒险」这一层:它不是一场战斗里的临时状态,也不跨冒险留存。上游是两个获取口,下游是之后所有关卡的排雷与结算——拿到了,下一关就开始生效。 +特性处在「一次冒险」这一层:它不是一场战斗里的临时状态,也不跨冒险留存。上游是三条获取渠道,下游是之后所有关卡的排雷与结算——拿到了,下一关就开始生效。 ## 核心规则 -### 1. 形态枚举(form) +### 1. 两类:属性提升(ASI)与专长(Feat) -特性只有一个名词;需要区分时才描述它的形态,不给形态另起名字。 +特性只有一个名词;需要区分时才说它属于哪一类,不给类别另起名字。 -| 形态 | 它改的是什么 | 落在哪里 | 事实源 | +| 分类 | 它改的是什么 | 落点 | 事实源 | |---|---|---|---| -| `rule` 规则改写型 | 改规则本身:在结算管线的某个挂点上给自己加一条规则;同一标签的持有件数达到阈值时发生质变 | 各结算段挂点;标签与档位由求值服务统一算 | `relics.tres`(逐项定义) | -| `stat` 属性加成型 | 改数值:把自己某项属性抬高,直接改写角色的基础数字 | 冒险加算区(攻击 / 生命上限 / 护甲 / 行动点四轴)、钱包与即时恢复 | `adventure.tres`(配额与值) | +| **属性提升** ASI | 改数字。把角色某项基础值抬高,或给他多一次选择的机会 | 冒险加算区(生命上限 / AC / 攻击三轴、行动点)、钱包、三选一界面 | `adventure.tres`(种类配额与值) | +| **专长** Feat | 改规则本身。在结算管线的某个挂点上给自己加一条规则;同一标签的持有件数达到阈值时发生质变 | 各结算段挂点;标签与档位由求值服务统一算 | `relics.tres`(逐项定义) | -两种形态的共性:都在当局获得、当局携带、当局失效;都不写账号进度——出现与否由抽取决定,玩家的账号强弱不影响它出现在哪一局。 +两类的共性:都在当局获得、当局携带、当局失效;都不写账号进度——出现与否由抽取决定,玩家的账号强弱不影响它出现在哪一局。 -**为什么是同一个对象的两种枚举而不是两个东西**:它们共用一份获取流程、一份持有集、一份生命周期。分成两个名字只会让读者以为有两套系统,而实际上代码里只有一个持有集。 +**为什么是同一个对象的两个分类而不是两个东西**:它们共用一份获取流程、一份持有集、一份生命周期。分成两个系统只会让读者以为有两套账,而实际上代码里只有一个持有集。 + +#### 1.1 属性提升:纯属性组与特殊组 + +属性提升内部按"改的是不是角色身上的数字"分成两组。 + +**纯属性组**——三项,各改一条基础属性轴: + +| 项 | 改什么 | +|---|---| +| 生命上限 | 抬高角色的生命上限 | +| AC(护甲) | 抬高角色的护甲 | +| 攻击 | 抬高角色的攻击 | + +**特殊组**——三项,改的不是基础属性,而是能力上限与机会: + +| 项 | 改什么 | 备注 | +|---|---|---| +| 行动点上限 | 抬高每场战斗首轮的行动点基线 | 罕见档 | +| 刷新次数 | 增加三选一界面的重抽次数 | **作用对象不是角色,是选择界面**——见第 2 节的例外说明;可在奖励节点与商店两个渠道出现 | +| 专长获取 | 拿到时立刻开一次专长三选一 | **罕见且全局限量**;它是跨两类的桥梁——本体属属性提升,产出是专长。见第 4.2 节 | + +三轴的分类边界:纯属性组的三项直接进冒险加算区,跨关携带且关间不清零;特殊组的三项各有各的落点,其中刷新次数不进加算区。 + +#### 1.2 专长:机制增加 + +专长改的是规则而不是数字——它给自己加一条"在某种条件下,本来不会发生的事现在会发生"的规则,因此它不是任何一条属性轴的延伸,玩家也无法用"加了多少"来衡量它。 + +专长带流派标签,同一标签的持有件数达到阈值时发生质变(档位机制归所属结算文档,本文件不展开)。这是它和属性提升最直观的体感差别:属性提升是"我更耐打了",专长是"我现在会一件以前不会的事"。 + +#### 1.3 一句判据 + +**改数字的是属性提升,改规则的是专长。** + +拿不准的项按这条判:如果把它去掉,角色是"某个数字少了一截",那就是属性提升;如果角色是"某件事做不到了",那就是专长。 + +#### 1.4 命名出处 + +两类都取自 DND 规则书的既有名词,不是本项目自造:属性提升对应 Ability Score Improvement(ASI,属性值提升),专长对应 Feat(专长)。玩家可见文案只写效果,不出现这两类名。 ### 2. 作用对象与范围 - **作用对象**:角色本人,以及角色参与的结算过程。特性不改敌人、不改棋盘生成、不改关卡内容。 -- **时间范围**:整局冒险。两种形态都自获得起对本局剩余所有关卡生效;属性加成型写入加算区后,关与关之间不清零。 +- **刷新次数的例外**:它作用在三选一界面上,改的是"这一局里你能重选几次",而不是角色身上的任何数字。它是特殊组里唯一一条作用对象不是角色的项——留在特性内是因为它满足另外三条:当局获得、当局有效、进同一份持有账本。这条例外在此显式登记,避免后续把它当成角色属性去结算。 +- **时间范围**:整局冒险。两类都自获得起对本局剩余所有关卡生效;属性提升写入加算区后,关与关之间不清零。 - **归属范围**:不进账号永久进度,不带到下一次冒险。 ### 3. 生命周期 @@ -66,23 +105,48 @@ | 阶段 | 说明 | |---|---| -| 候选池构建 | 冒险开局时一次建成。两种形态的候选**现同处一个令牌池**:属性加成型按配额铺开,规则改写型按定义表的有效行铺开。 | -| 出现 | 玩家在两个获取口之一看到若干候选(三选一的形式),看不到整个池。 | -| 选定 | 玩家选定一项后,它从池中剔除,此后任何获取口都不会再见。 | -| 持有与生效 | 进入持有集后立即生效,跨关携带。规则改写型按同一标签的持有项数决定处于哪一档。 | +| 候选池构建 | 冒险开局时一次建成。两类的候选**现同处一个令牌池**:属性提升按配额铺开,专长按定义表的有效行铺开。 | +| 出现 | 玩家在获取口看到若干候选(三选一的形式),看不到整个池。 | +| 选定 | 玩家选定一项后,它从池中剔除,此后任何获取口都不会再见。选到「专长获取」时,立刻再开一次专长三选一——这次选择走专长的渠道语义,不占用原本的获取口。 | +| 持有与生效 | 进入持有集后立即生效,跨关携带。专长按同一标签的持有项数决定处于哪一档。 | | 清零 | 冒险以任一结局收束时整集清空;下次开局重建。 | | 断点恢复 | 进行中的冒险把持有集与剩余候选池一并写入断点,续玩后恢复到同一状态(断点里的键名沿用历史形态,不随本次改名变动)。 | ### 4. 获取途径 -| 获取口 | 说明 | 目标渠道分工(尚未实施) | +#### 4.1 三条渠道的分工 + +| 渠道 | 出哪一类 | 说明 | |---|---|---| -| 战场奖励 | 每关通关给一次三选一(最终关不给——提升只对后续关卡有意义,最终关没有后续);关卡节点图上的奖励节点同样给一次三选一,与之共用同一个候选池。 | 规则改写型今后主要从这里出 | -| 商店 | 花局内金币购买在架的特性;同一种至多一张,买走即从在架令牌移除。 | 属性加成型今后主要从这里出,口径是**训练** | +| **关底 Boss 击败后** | 专长 | 专长的专属渠道,时机确定——打赢就有,不需要看脸。构筑的节奏由此可预期:玩家能规划"第几关拿到第一个专长"。 | +| **奖励节点** | 属性提升 | 每关通关给一次三选一(最终关不给——提升只对后续关卡有意义,最终关没有后续);关卡节点图上的奖励节点同样给一次三选一,与之共用同一个候选池。 | +| **商店** | 属性提升 | 花局内金币购买在架的特性;同一种至多一张,买走即从在架令牌移除。口径是**训练**(见 4.3)。 | -**关于商店口径的说明**:商店这一侧走的叙事是「**训练**」——花代价向某位师父学习、借某种卷轴修炼、或把战斗攒下的钱换成一身本领。它不是买一个东西回来,而是把钱换成自己的本领,所以落到命名空间上和奖励那一侧完全相同:都是往同一个持有集里加一项特性。 +**确定性是这条分工的核心**:专长走专属渠道,是为了让"这一局的构筑往哪个方向走"由玩家决定,而不是由抽取决定。属性提升走通用渠道,数量稳定、每局可预期,负责把角色垫厚。品类原型是杀戮尖塔(每层 Boss 后必给遗物)与哈迪斯(Boss 后必给恩赐)——打赢了一定拿到东西,是这类游戏的通例。 -**在册事项**:现行两个获取口完全共用同一个候选池,两种形态出现条件一样、只有出现概率不同。用户已决定把两种形态按渠道分开(规则改写型走战场奖励,属性加成型走商店训练),四个备选方案与执行批次登记在 [06-待办清单](../../06-待办清单.md) 的 BD 分层条目下,本文件不复制。**本文件 4 节表格里的渠道分工写的是目标状态,尚未实施。** +**在册事项**:现行实现里奖励节点与商店完全共用同一个候选池,两类出现条件一样、只有出现概率不同,专长也走同一个池——上表的渠道分工是**目标状态,尚未实施**。相关的实施批次登记在 [06-待办清单](../../06-待办清单.md) 的 BD 分层条目下,本文件不复制。 + +**与节点类型词表的关系(已定)**:专长走关底 Boss 击败后兑付,**不新增节点类型**——[关卡节点地图](关卡节点地图.md) 的节点类型仍是封闭枚举五种(战斗 / Boss / 奖励 / 恢复 / 商店),改动落在 Boss 节点的兑付面上(击败后追加一次专长三选一),词表零扩类。 + +**专长总量与档位阈值的匹配(待观察,不拍板)**:专长的档位激活是同标签 2 件档一 / 4 件档二(阈值归 [战斗结算](../战斗循环/战斗结算.md),本文件不展开)。三关结构下,若最终关 Boss 后不给(没有后续关卡可消费),确定性渠道一局只兑付两次专长——刚好够档一,档二要靠罕见旁路补齐。最终关给不给、以及这个总量与阈值是否匹配,属曲线调参批的观察项,登记在 [06-待办清单](../../06-待办清单.md),本文件不预设结论。 + +#### 4.2 罕见旁路:专长获取 + +在属性提升的两个通用渠道里,嵌着一个罕见项——**专长获取**。它小概率出现在奖励节点或商店的候选里,效果是立刻开一次专长 N 选一(N 与专长主渠道的候选数同源)。 + +它的作用是在确定性之上加一层赌博感: + +- **不推翻确定性**:专长的主渠道仍然是关底 Boss,玩家不会因为没 roll 到就构筑不起来; +- **只在旁路制造兴奋**:它不常来,来了就是"这一局走运了",让人有记忆点; +- **罕见且全局限量**:配额极小,且一局内的总量有上限——防止它变成第二条专长渠道,也防止它把 4.1 里说的档位阈值冲垮。 + +玩家视角它长这样:在普通的三选一奖励里,偶尔会冒出一张不一样的卡——选它,立刻再开一次专长选择。它是奖励面里的惊喜,不是奖励面的常态。 + +品类原型是以撒的恶魔房/天使房(Boss 战后概率开启,强力内容不走普通池)与哈迪斯的混沌门(概率出现、强力带代价)。 + +#### 4.3 商店口径:训练 + +商店这一侧走的叙事是「**训练**」——花代价向某位师父学习、借某种卷轴修炼、或把战斗攒下的钱换成一身本领。它不是买一个东西回来,而是把钱换成自己的本领,所以落到命名空间上和奖励那一侧完全相同:都是往同一个持有集里加一项特性。 ### 5. 关联与边界 @@ -90,25 +154,25 @@ |---|---| | [魔法道具](../排雷循环/魔法道具.md) | 最需要分清的一对:**魔法道具是拿在手里的物品,特性是角色自身的变化**。两者互不相通——特性永不进同调位,魔法道具永不进当局随机渠道。魔法道具跨冒险保留,特性当局清零。 | | [元进度](../跨局循环/元进度.md)(树) | 树管账号永久的规则与容量,特性管当局构筑,两层互不代替。 | -| [战斗结算](../战斗循环/战斗结算.md) | 规则改写型的挂点位于结算管线的各段;挂点清单与语义归结算文档。 | +| [战斗结算](../战斗循环/战斗结算.md) | 专长的挂点位于结算管线的各段;挂点清单与语义归结算文档。 | | [行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md) | 部分挂点落在行动点结转与地形处理上,语义归各自文档。 | +| [关卡节点地图](关卡节点地图.md) | 是获取口的载体,不是特性的属性。专长专属渠道涉及节点类型词表的封闭枚举,影响面登记在 06。 | | [地图战斗资源](../战斗循环/地图战斗资源.md)(格面资源) | 无关:格面资源是单格的一次性产出,不进持有集。 | -| [关卡节点地图](关卡节点地图.md)、商店 | 是获取口的载体,不是特性的属性。 | | [存档序列化](../表现与支撑/存档序列化.md) | 断点负载记录持有集与剩余候选池;键名与版本迁移策略归存档文档。 | ## 依赖与输出 | 类型 | 内容 | |---|---| -| 依赖(概念) | 角色、结算管线、行动点、地形、关卡节点地图、局内金币钱包 | -| 依赖(数据) | `relics.tres`(规则改写型定义行)、`adventure.tres`(属性加成型配额与值)、`shop.tres`(货架取舍) | -| 输出(对外) | 持有集、生效中的形态投影、剩余候选池、档位求值结果 | +| 依赖(概念) | 角色、结算管线、行动点、地形、关卡节点地图、局内金币钱包、三选一界面 | +| 依赖(数据) | `relics.tres`(专长定义行)、`adventure.tres`(属性提升种类配额与值)、`shop.tres`(货架取舍) | +| 输出(对外) | 持有集、生效中的分类投影、剩余候选池、档位求值结果、可用重抽次数 | | 明确边界 | 不写账号进度、不改敌人与关卡内容、不承载具体数值 | ## P0 最小闭环 / P1・P2 后置 -- **P0(已实现)**:两种形态可定义 → 进入候选池 → 在两个获取口之一被选中 → 当局生效 → 收束清零。 -- **P1 后置**:两种形态按渠道分开(见第 4 节的在册事项);两项合成高阶项;同一标签收集到四项以上的后期表达。 +- **P0(已实现)**:两类可定义 → 进入候选池 → 在获取口被选中 → 当局生效 → 收束清零。 +- **P1 后置**:三类渠道按 4.1 分工(含专长专属节点的设立方式,待拍板);专长获取项入池;刷新次数入池;两项合成高阶项;同一标签收集到四项以上的后期表达。 - **P2 后置**:商店里的攻击类型转换服务;喂雷流派是否保留(尚未拍板,登记在 [06-待办清单](../../06-待办清单.md))。 ## 调参表 @@ -117,27 +181,37 @@ | 参数 | 取值域 | 事实源 | |---|---|---| -| 规则改写型定义行(标识 / 显示名 / 稀有度 / 标签 / 挂点 / 效果字典) | 各字段封闭枚举,行键白名单封闭 | `game/data/tables/relics.tres` | -| 属性加成型种类 | 封闭词表:攻击 / 生命上限 / 护甲 / 金币 / 行动点 / 恢复 | `game/data/schemas/adventure_table.gd` | -| 属性加成型稀有度档位 | 封闭三档(普通 / 稀有 / 罕见);三档配额是结构锚,改总量须重新拍板而非调参 | 同上 | -| 各形态种类 × 档位的配额与值 | 整数 | `game/data/tables/adventure.tres` | +| 专长定义行(标识 / 显示名 / 稀有度 / 标签 / 挂点 / 效果字典) | 各字段封闭枚举,行键白名单封闭 | `game/data/tables/relics.tres` | +| 属性提升种类 | 封闭词表:攻击 / 生命上限 / 护甲 / 金币 / 行动点 / 恢复(**刷新次数、专长获取两项尚未入表**,见待办) | `game/data/schemas/adventure_table.gd` | +| 属性提升稀有度档位 | 封闭三档(普通 / 稀有 / 罕见);三档配额是结构锚,改总量须重新拍板而非调参 | 同上 | +| 各属性提升种类 × 档位的配额与值 | 整数 | `game/data/tables/adventure.tres` | +| 专长获取的全局限量 | 整数(一局内可获得的次数上限) | 同上 | | 一次三选一的候选展示数 | [1,6] | 同上 | ## 验收标准 -1. 两种形态走同一套获取流程,代码里只有一个表示"已持有特性"的集合。 +1. 两类走同一套获取流程,代码里只有一个表示"已持有特性"的集合。 2. 一次冒险内获得的特性在之后任何关卡都生效;开新冒险后持有集为空。 3. 一项被选定的特性不再出现在任何后续获取口。 -4. 每个标签至少有一项挂在排雷侧的结算触发点上(防止规则改写型沦为纯战斗数值)。 -5. 玩家可见的文案不出现形态名与内部分类标签——只写效果,归类让玩家自己推断。 -6. 文档与代码里提到它时只有"特性"这一个名字;需要区分形态时用"规则改写型/属性加成型"描述,不得另造称呼。 +4. 每个标签至少有一项挂在排雷侧的结算触发点上(防止专长沦为纯战斗数值)。 +5. 玩家可见的文案不出现分类名与内部分组标签——只写效果,归类让玩家自己推断。 +6. 文档与代码里提到它时只有"特性"这一个名字;需要区分类别时用"属性提升/专长"描述,不得另造称呼。 +7. 刷新次数不进角色加算区——它只改三选一界面的可用重抽次数。 ## 待办 -全部待办单点登记于 [06-待办清单](../../06-待办清单.md)(BD 分层条目、呈现三处待改条目),本节不复制。 +全部待办单点登记于 [06-待办清单](../../06-待办清单.md)(BD 分层条目、命名统一后续条目),本节不复制。 + +本节只点出三条由本版新立、尚未登记的判断来源: + +- **金币与恢复的归属待拍板(本版最要紧的一条)**:现行属性提升池里有金币袋与恢复两项,按本版定义它们都不算"角色自身得到的提升"——金币进钱包、恢复是即时兑付,**两者都不进持有集、不持续生效,因此没有"获得→持有→清零"的生命周期**,与特性不共享生命周期。选项:甲=移出特性,另立一类(即时兑付/补给,不进持有集),"特性=自身提升"由此名副其实,**但档位配额 70/25/3 是结构锚,动总量须重裁而非调参**;乙=放宽特性定义为"一次冒险内抽到的增益",GP 与回复也算,代价是判据句「带在自己身上的是特性」失效、与魔法道具的边界软化。尚未拍板,本版不动数据。 +- **专长总量与档位阈值的匹配**:见 4.1 末段(确定性渠道一局两次 vs 档二需同标签 4 件)。 +- **顶层命名待确认**:「特性」这个名是否保留,取决于上一条怎么判——若 GP 与回复移出,则"特性=自身提升"成立、名不必改;若留下,则需换一个能容纳即时兑付的中性名。用户在 2026-10-05 会话中对顶层名提出质疑,尚未收口。 ## 版本历史 | 版本 | 日期 | 变更 | |---|---|---| -| v1.0 | 2026-10-05 | 首次为本概念立定义文档。此前它按内部分类被叫成三个名字,各处互相冲突的定义以本文档为准:统一名词"特性",把原先分开称呼的两类收敛为形态枚举;把性质定为「角色自身得到提升」而非「获得物品」,以此与魔法道具(持有物)划清。 | +| v1.0 | 2026-10-05 | 首次为本概念立定义文档。此前它按内部分类被叫成三个名字,各处互相冲突的定义以本文档为准:统一名词"特性",把原先分开称呼的两类收敛为一个对象下的分类;把性质定为「角色自身得到提升」而非「获得物品」,以此与魔法道具(持有物)划清。 | +| v1.1 | 2026-10-05 | 分类重构(用户拍板):两类由「规则改写型 / 属性加成型」改为「**属性提升**(ASI)/ **专长**(Feat)」,属性提升内部再分纯属性组(生命上限 / AC / 攻击)与特殊组(行动点上限 / 刷新次数 / 专长获取)。获取途径由两个共用池改为三条分工渠道(专长走特定节点、属性提升走奖励节点与商店),并在通用渠道内嵌罕见旁路「专长获取」以提供概率性惊喜。新增:刷新次数作用对象的例外登记、金币与恢复归属的待拍板项、专长专属节点对节点类型封闭枚举的影响面。 | +| v1.2 | 2026-10-05 | 专长渠道落定(用户拍板):专长的专属渠道定为**关底 Boss 击败后**兑付——不新增节点类型,节点类型仍为封闭枚举五种,改动落在 Boss 节点兑付面(此前的"是否扩类"悬案由此收口)。罕见旁路明确为"普通奖励里的专长 N 选一"。新增:专长总量与档位阈值(2 件档一 / 4 件档二)的匹配观察项、最终关是否兑付的待确认点;金币与恢复的处置补上生命周期判据与甲乙两案。 | diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 385a1614..40a70f08 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -579,13 +579,14 @@ entities: owner: design/gdd/systems/冒险循环/特性.md attributes: definition: 一次冒险之内角色自身得到的提升。它不是持有物——带在自己身上的是特性,拿在手里的是魔法道具;两者由此分开 - form: 封闭枚举 {rule, stat}。rule 规则改写型——在结算管线的某个挂点上给自己加一条规则,同标签持有项数达阈值时质变;stat 属性加成型——抬自己的某项属性数值,写入冒险加算区。两者同属一个对象、共用一份持有集与一份生命周期,是形态枚举而非两个系统 - scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);时间范围 = 整局冒险,跨关携带、关间不清零;归属范围 = 不进账号永久进度,不带到下一次冒险 - lifecycle: 候选池构建(冒险开局一次)→ 在两个获取口之一出现(三选一形式)→ 选定(自池中剔除不再复现)→ 持有生效(跨关携带)→ 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 - acquisition: 两个获取口——战场奖励(每关通关一次,最终关不给;关卡节点图奖励节点共用同一候选池)与商店(花局内金币,口径为「训练」)。**现行两口共用同一候选池**,两形态按渠道分离已定尚未实施,登记于 06-待办清单 BD 分层条目 + categories: 封闭两类 {属性提升 ASI, 专长 Feat}(v1.1 起;v1.0 曾用 {rule, stat} 形态枚举,已作废)。属性提升——抬角色某项基础值或给他多一次选择的机会,内分纯属性组〔生命上限 / AC / 攻击〕与特殊组〔行动点上限 / 刷新次数 / 专长获取〕,落冒险加算区与钱包;专长——在结算管线的某个挂点上给自己加一条规则,同标签持有项数达阈值时质变。两者同属一个对象、共用一份持有集与一份生命周期,是分类而非两个系统 + scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,跨关携带、关间不清零;归属范围 = 不进账号永久进度,不带到下一次冒险 + lifecycle: 候选池构建(冒险开局一次)→ 在获取口出现(三选一形式)→ 选定(自池中剔除不再复现;选到「专长获取」时立刻再开一次专长三选一,不占原本获取口)→ 持有生效(跨关携带)→ 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 + acquisition: 三条渠道的**目标分工**——专长走关底 Boss 击败后(专属三选一、时机确定;**不新增节点类型**,挂在 Boss 节点兑付面上);属性提升走奖励节点(每关通关一次,最终关不给)与商店(花局内金币,口径为「训练」)。罕见旁路:属性提升的通用渠道里嵌一个罕见且全局限量的「专长获取」项,拿到立刻开一次专长 N 选一。**现行实现三渠道共用同一候选池、两类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 boundary: 特性永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 - data_sources: relics.tres(rule 形态逐项定义)/ adventure.tres(stat 形态配额与值)/ shop.tres(货架取舍) - naming_note: 2026-10-05 命名统一——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),现统一为「特性」,需要区分时以形态修饰语描述,不另造称呼 + data_sources: relics.tres(专长逐项定义)/ adventure.tres(属性提升种类配额与值)/ shop.tres(货架取舍) + open_questions: ①gp(金币袋)与 heal(恢复)两项现行在属性提升池内,但都不进持有集、不持续生效、**没有生命周期**,按「自身得到提升」的定义是否仍属本类待拍板(甲案移出另立「即时兑付」类、乙案放宽定义;动池须重裁档位结构锚);②刷新次数可同时出现在奖励节点与商店两个渠道——这是渠道白名单问题,不产生第三个分类;③最终关 Boss 后是否也兑付专长待确认;④确定性渠道一局两次专长 vs 档位阈值(同标签 2 件档一 / 4 件档二)是否匹配,归曲线调参批观察 + naming_note: 2026-10-05 命名统一 + 分类重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),现统一为「特性」,需要区分时用「属性提升 / 专长」描述,不另造称呼 referenced_by: [冒险结构, 关卡节点地图, 战斗结算, 行动经济, 地形变异, HUD框架, 魔法道具, 元进度, 数据配置] - name: adventure_table diff --git a/game/data/schemas/adventure_table.gd b/game/data/schemas/adventure_table.gd index 508c5be5..544263e0 100644 --- a/game/data/schemas/adventure_table.gd +++ b/game/data/schemas/adventure_table.gd @@ -13,10 +13,13 @@ class_name AdventureTable extends Resource -## 概念指路:本表的属性加成型特性,与 relics.tres 的规则改写型特性,同属一个对象—— +## 概念指路:本表的属性提升,与 relics.tres 的专长,同属一个对象—— ## 「特性」(一次冒险内角色自身得到的提升)。定义见 design/gdd/systems/冒险循环/特性.md。 -## 两者是它的形态枚举(form = rule / stat),不是两个系统;本表承载 stat 形态的配额与值。 -## (2026-10-05 命名统一:旧称「数值件」→ 属性加成型特性;常量与字段随之前缀 feature_*。) +## 两者是它的两个分类(属性提升 ASI / 专长 Feat),不是两个系统;本表承载「属性提升」类的种类配额与件值。 +## (2026-10-05 命名统一:旧称「数值件」→ 属性提升;常量与字段随之前缀 feature_*。 +## 2026-10-05 分类重构:属性提升内部分纯属性组〔生命上限 / AC / 攻击〕与特殊组 +## 〔行动点上限 / 刷新次数 / 专长获取〕;刷新次数与专长获取两项尚未入表——见 06-待办清单。 +## gp 与 heal 两项是否仍属本类待拍板,见特性文档「待办」节。) ## 三选一提升池 kind 词表(封闭——断点附随件与牌库剔除态依赖它;扩件走本表+registry 修订)。 ## aux_item 池种退役(迭代 11 第①批 T7——同调批出池);heal 恢复件新入池(v2.2 令牌池追认 b)。 const FEATURE_KINDS: Array[String] = ["attack", "max_hp", "armor", "gp", "ap", "heal"] diff --git a/game/data/schemas/relic_table.gd b/game/data/schemas/relic_table.gd index f8881546..cadf3a03 100644 --- a/game/data/schemas/relic_table.gd +++ b/game/data/schemas/relic_table.gd @@ -1,13 +1,14 @@ # VERTICAL SLICE - NOT FOR PRODUCTION # Validation Question: 七核心流派各 ≥3 件入局内随机渠道后,标签+档位激活引擎能否机械判「成型」、 -# 规则改写型特性带能否挂进令牌池稀有/罕见档随机投放(P0——迭代 12 双层 BD 实施批 T1) +# 专长带能否挂进令牌池稀有/罕见档随机投放(P0——迭代 12 双层 BD 实施批 T1) # Date: 2026-10-04(双层 BD 实施批 T1——任务书五裁定稿;设计权威 双层BD体系-整合定稿-2026-10-03 v3) -# 概念指路:本表的规则改写型特性,与 adventure.tres 的属性加成型特性,同属一个对象—— +# 概念指路:本表的专长,与 adventure.tres 的属性提升,同属一个对象—— # 「特性」(一次冒险内角色自身得到的提升)。定义见 design/gdd/systems/冒险循环/特性.md。 -# 两者是它的形态枚举(form = rule / stat),不是两个系统;本表承载 rule 形态的逐项定义。 -# (2026-10-05 命名统一:旧称「流派件」→ 规则改写型特性;表名与 relic_id 沿用历史命名, -# 与统一词族对齐归后续批次——见 06-待办清单「命名统一」条目。) -# 数据配置 RelicTable schema(特性·规则改写型定义表;行 = Dictionary 键 relic_id,Rule 4 豁免 +# 两者是它的两个分类(专长 Feat / 属性提升 ASI),不是两个系统;本表承载「专长」类的逐项定义。 +# (2026-10-05 命名统一 + 分类重构:旧称「流派件」→「规则改写型特性」→ 现定名「专长」; +# 表名与 relic_id 沿用历史命名,与统一词族对齐归后续批次——见 06-待办清单「命名统一」条目。 +# 目标渠道:专长走关底 Boss 击败后专属三选一(不新增节点类型),见特性文档 4.1 节。) +# 数据配置 RelicTable schema(特性·专长定义表;行 = Dictionary 键 relic_id,Rule 4 豁免 # 定义表——AuxItemTable 先例)。 # 行字段:relic_id 主键 / display_name / rarity ∈ {common, rare, rarest}(对齐令牌池三档命名—— # 投放档映射:common/rare→稀有令牌档、rarest→罕见令牌档;relic 令牌永不入普通档=「挂稀有/罕见档」 @@ -17,7 +18,7 @@ # 仅校验键域不禁纯增益(专项论证件以 positive_only 批注登记,人工清单呈报)。 # 档位激活(整合定稿 设计工具 1——以撒套装/小骨铭文):同标签计数 ≥2→档一(流派核心规则)/≥4→档二 # (完全体);散件单体保底=每件效果独立生效,档位只做质变(反例 B-2)——引擎纯函数 RelicsEngine。 -# 🔴 层级纪律(任务书红线 2):规则改写型特性只走局内随机渠道(三选一/商店/格面)——本表行永不入同调位 +# 🔴 层级纪律(任务书红线 2):专长只走局内随机渠道(三选一/商店/格面)——本表行永不入同调位 # (aux_items 表)/局外树(T8 节点表);扫雷触发点铁律:每流派 ≥1 行 hook ∈ MINE_HOOKS(加载校验, # 违反=红线①触碰面)。 class_name RelicTable From 33fcac79e851b9b0829b95af3f6861261817c785 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 03:01:13 +0800 Subject: [PATCH 03/15] =?UTF-8?q?=E5=A5=96=E5=8A=B1=20v2.0=EF=BC=9A?= =?UTF-8?q?=E9=A1=B6=E5=B1=82=E6=94=B9=E5=90=8D=20+=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E4=B8=BA=E4=B8=A4=E6=A0=B9=E8=BD=B4=EF=BC=88=E5=88=86=E7=B1=BB?= =?UTF-8?q?=E8=BD=B4=20=C3=97=20=E6=B8=A0=E9=81=93=E8=BD=B4=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 顶层概念「特性」改名为「奖励(Reward)」。改名动因:这个筐里既装 "角色自身的变化"也装金币这类一次性兑付物,用"自身提升 vs 持有物" 已经切不开——边界判据改由生命周期承担: 一次冒险内获得、冒险收束即清零的是奖励;跨冒险跟着你走的是魔法道具。 分类由两类扩为三个枚举(分类轴 = 给的是什么): - 机制类(专长 Feat) → relics.tres - 属性提升类(ASI,生命/AC/攻击三轴)→ adventure.tres - 资源与机会类(命名待定:行动点上限/刷新次数/金币/回复)→ adventure.tres 类内异质性显式登记:金币与回复是即时兑付,不进持有集、不持续生效, 与行动点上限/刷新次数生命周期不同。 新增第 2 节「渠道轴 × 分类轴」交叉开关表:机制类主渠道=关底 Boss 击败后(不新增节点类型),罕见旁路=奖励节点/商店的「专长获取」; 属性提升类与资源与机会类=奖励节点 + 商店。两根轴互不决定。 gp/heal 不再当作"该移出去的脏东西"(用户 2026-10-05 选暂不处置= 不做结构性迁移、不动配额),改为安置在资源与机会类里并登记异质性。 同步:02-系统清单(文档树改名 + ADVENTURE_FEATURE → ADVENTURE_REWARD + v1.5)、06-待办清单(BD 分层条目改写 + 新立「两个新种类入池」条目 + 「命名统一后续」补 feature_* → reward_* 对齐项)、entities.yaml (feature 条目 → reward,新增 axes / 三类 categories / open_questions)、 两个 schema 的概念指路注释、battle.md / level-map.md / HUD框架.md 称谓。 未动:数据层数值与表结构(值零变更);feature_* 标识符尚未换到 reward_*(属临时态,已登记待办,须在可跑冒烟批次收口);game/ 下 运行层称谓换名同批。本会话按测试执行两入口铁规零测试。 --- design/gdd/02-系统清单.md | 5 +- design/gdd/06-待办清单.md | 34 ++-- design/gdd/systems/冒险循环/奖励.md | 232 +++++++++++++++++++++++ design/gdd/systems/冒险循环/特性.md | 217 --------------------- design/gdd/systems/表现与支撑/HUD框架.md | 4 +- design/gdd/ux/battle.md | 10 +- design/gdd/ux/level-map.md | 2 +- design/registry/entities.yaml | 27 +-- game/data/schemas/adventure_table.gd | 16 +- game/data/schemas/relic_table.gd | 12 +- 10 files changed, 292 insertions(+), 267 deletions(-) create mode 100644 design/gdd/systems/冒险循环/奖励.md delete mode 100644 design/gdd/systems/冒险循环/特性.md diff --git a/design/gdd/02-系统清单.md b/design/gdd/02-系统清单.md index dc3ba99d..e8dec1a8 100644 --- a/design/gdd/02-系统清单.md +++ b/design/gdd/02-系统清单.md @@ -45,7 +45,7 @@ | `关卡节点图生成.md` | 单关节点图的逐局随机来源:图模板池、抽签与实例化(实施排队 ADR-0007 裁决后) | 设计草案·拍板点全落文 | | `冒险结构.md` | 整局冒险的关卡序列、失败与大奖励 | 已定稿·自旧体系迁移 | | `难度曲线与Boss.md` | 难度曲线、期望值带与 Boss 设计 | 已定稿·自旧体系迁移 | -| `特性.md` | 一次冒险内角色自身得到的提升(属性提升 / 专长两类) | 已实现·2026-10-05 新立定义·v1.1 分类重构 | +| `奖励.md` | 一次冒险内各渠道给予玩家的增益总称(机制类 / 属性提升类 / 资源与机会类三个枚举 × 奖励节点·商店·Boss 击败后三条渠道) | 已实现·2026-10-05 新立定义·v2.0 改名并重构为两根轴 | ### 跨局循环(`systems/跨局循环/`) @@ -97,7 +97,7 @@ | 冒险循环 | 关卡节点图生成 | `NODE_MAP_GENERATION` | —(新立无旧代号) | | 冒险循环 | 冒险结构 | `ADVENTURE_STRUCTURE` | c2 | | 冒险循环 | 难度曲线与Boss | `DIFFICULTY_CURVE` | c3 | -| 冒险循环 | 特性 | `ADVENTURE_FEATURE` | —(新立无旧代号) | +| 冒险循环 | 奖励 | `ADVENTURE_REWARD` | `ADVENTURE_FEATURE`(2026-10-05 v2.0 改名退役) | | 跨局循环 | 元进度 | `META_PROGRESS` | c4 | | 表现与支撑 | HUD框架 | `HUD_FRAMEWORK` | d1 | | 表现与支撑 | 数据配置 | `DATA_CONFIG` | d2 | @@ -130,3 +130,4 @@ | v1.2 | 2026-10-03 | R3 清账批(gdd_lint 分域随批):四处状态单元格日期批注迁出——敌人系统行事件见敌人系统.md 版本历史 v0.5(技能池批);元进度行见本表 v0.8;camp/shop 行=两文 v1.0 落文(2026-09-30 三裁决执行批);语义零变更 | | v1.3 | 2026-10-05 | 立《特性》:一次冒险内角色自身得到的提升——此前按内部分类被叫成三个名字(规则类称"流派件"、属性类称"数值件"、界面称"本关强化"),现收敛为一个对象的两种形态枚举;文档树冒险循环补行 + 命名对照表补 `ADVENTURE_FEATURE` 行 | | v1.4 | 2026-10-05 | 《特性》v1.1 分类重构:两类由"规则改写型 / 属性加成型"改为"属性提升(ASI)/ 专长(Feat)",属性提升内部再分纯属性组与特殊组;获取途径由两口共用池改为三条分工渠道(专长走特定节点、属性提升走奖励节点与商店)+罕见旁路"专长获取" | +| v1.5 | 2026-10-05 | 《特性》改名为《奖励》并升 v2.0:顶层概念改为"一次冒险内各渠道给予玩家的增益总称",边界判据由"自身提升 vs 持有物"改为生命周期(当局清零的是奖励,跨局带走的是魔法道具);分类由两类扩为三个枚举(机制类 / 属性提升类 / 资源与机会类),并新增分类 × 渠道交叉开关表——两根轴互不决定。文档树冒险循环行改名 + 命名对照表 `ADVENTURE_FEATURE` → `ADVENTURE_REWARD` | diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index 1a47dd10..af870bd1 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -25,33 +25,35 @@ **设计知识存续口径**:七流派完整件表/逐项反例条件表/天赋树后备语言(哈迪斯 2 预算制扩容/邻接树改型/GP 价格通胀防线)存整合定稿,随实施批文档吸收迁入各 GDD 正主(元进度/node-reward/战斗结算/地形变异/行动经济/魔法道具边界句/商店 spec)——**吸收完成前定稿不删**;喂雷流待办见上条遗留登记。 -#### 冒险 BD 两类获取同渠道、纯概率差——渠道分工目标态(2026-10-04 提问登记;2026-10-05 用户定分工) +#### 冒险 BD 各分类获取同渠道、纯概率差——渠道分工目标态(2026-10-04 提问登记;2026-10-05 用户定分工) -**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **特性**(2026-10-05 定名,定义见 [特性](systems/冒险循环/特性.md)):**专长**(改规则、带流派标签与档位激活,构筑核心)与**属性提升**(抬属性,写统一加算区;账本实为冒险域、关间不清零)两类。旧称「流派件 / 数值件 / 本关强化」一律作废;v1.0 的「规则改写型 / 属性加成型」亦作废。现行两类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),专长只占稀有/罕见档(与属性大件混编),商店仅「货架零专长挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 +**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **奖励**(2026-10-05 定名,v2.0 由「特性」改名,定义见 [奖励](systems/冒险循环/奖励.md)),下分**三个枚举分类**:**机制类**(专长——改规则、带流派标签与档位激活,构筑核心)、**属性提升类**(生命/AC/攻击三轴,写统一加算区;账本实为冒险域、关间不清零)、**资源与机会类**(行动点上限·刷新次数·金币·回复——给"可用的量",命名待定)。旧称「流派件 / 数值件 / 本关强化」一律作废;v1.0 的「规则改写型 / 属性加成型」与 v1.1 的两分类亦作废。现行三个分类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),机制类只占稀有/罕见档(与属性大件混编),商店仅「货架零专长挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 -**用户定案(2026-10-05)**:三条渠道分工——**专长走关底 Boss 击败后**(专属三选一,时机确定,构筑节奏可预期);**属性提升走奖励节点与商店训练**(商店口径仍为「训练」)。在属性提升的通用渠道里嵌一个**罕见且全局限量**的「专长获取」项,小概率出现、拿到立刻开一次专长 N 选一,为确定性主渠道加一层赌博感。用户原话:"我在获取特性的时候,可以有些比较罕见的道具,让我立马得到一个专长,就给它一点不确定性,一点随机性"。**确定性优先**:专长不因没 roll 到就构筑不起来。 +**用户定案(2026-10-05)**:分类 × 渠道交叉开关表——**机制类**(专长)主渠道=关底 Boss 击败后(专属三选一,时机确定,构筑节奏可预期),罕见旁路=奖励节点/商店里小概率冒出的「专长获取」,商店不出现;**属性提升类**=奖励节点 + 商店(口径「训练」);**资源与机会类**=奖励节点 + 商店;Boss 击败后是否也出这两类=待定。用户原话:"我在获取特性的时候,可以有些比较罕见的道具,让我立马得到一个专长,就给它一点不确定性,一点随机性"。**确定性优先**:专长不因没 roll 到就构筑不起来。用户同时明确:先定大意念再分小类,渠道与分类是两根互不决定的轴。 -原四备选(① 专长专属三选一 ② 行为条件投放 ③ 计步保底 ④ 双池分离)已被上述定案覆盖——定案≈备选①的确定性路线,余三备选不再单独推进。**节点类型不扩类**:专长挂在 Boss 节点兑付面上(击败后追加一次专长三选一),[关卡节点地图](systems/冒险循环/关卡节点地图.md) 的节点类型仍为封闭枚举五种——此前的"是否新增节点类型"悬案由此收口。 +原四备选(① 专长专属三选一 ② 行为条件投放 ③ 计步保底 ④ 双池分离)已被上述定案覆盖——定案≈备选①的确定性路线,余三备选不再单独推进。**节点类型不扩类**:机制类挂在 Boss 节点兑付面上(击败后追加一次专长三选一),[关卡节点地图](systems/冒险循环/关卡节点地图.md) 的节点类型仍为封闭枚举五种——此前的"是否新增节点类型"悬案由此收口。 -**待拍板/待观察三项**:① **属性提升池里的 gp(金币袋)与 heal(恢复)两项**,按「角色自身得到的提升」的定义是否仍属本类——两者都不进持有集、不持续生效,**没有"获得→持有→清零"的生命周期**。甲案=移出特性另立「即时兑付/补给」类(代价:档位配额 70/25/3 是结构锚,动总量须重裁非调参);乙案=放宽特性定义容纳它们(代价:判据句「带在自己身上的是特性」失效,与魔法道具边界软化)。② **最终关 Boss 后是否也兑付专长**(现行奖励口径是最终关不给——没有后续关卡可消费)。③ **专长总量与档位阈值的匹配**:确定性渠道一局只兑付两次(若最终关不给),而档位阈值是同标签 2 件档一 / 4 件档二——档二须靠罕见旁路补齐,是否合预期归曲线调参批观察。 +**gp/heal 已安置,不再走迁移**:v2.0 把它们放进资源与机会类(用户 2026-10-05 选"暂不处置"=不做结构性迁移、不动配额),并在该类内显式登记异质性——**金币与回复是即时兑付,不进持有集、不持续生效**,与行动点上限/刷新次数(进持有账本、当局持续有效)生命周期不同。这条异质性必须留在文档里,防止后续把它们当持续生效的东西去结算。 -**归属**:[特性](systems/冒险循环/特性.md)(定义与目标分工)+ [node-reward](ux/node-reward.md)(令牌池与奖励面)+ [冒险结构](systems/冒险循环/冒险结构.md)(商店货架保底)+ [关卡节点地图](systems/冒险循环/关卡节点地图.md)(节点类型词表);与上条「双层 BD 延期与备选内容总登记」二期件组相关但不同面。 +**待拍板/待观察四项**:① **资源与机会类的命名**(候选:资源 / 补给 / 余量——取决于以哪层共性为主),以及**回复是否属该类**(也可能独立成第四类)。② **最终关 Boss 后是否也兑付专长**(现行奖励口径是最终关不给——没有后续关卡可消费)。③ **专长总量与档位阈值的匹配**:确定性渠道一局只兑付两次(若最终关不给),而档位阈值是同标签 2 件档一 / 4 件档二——档二须靠罕见旁路补齐,是否合预期归曲线调参批观察。④ **Boss 击败后是否也出属性提升类与资源与机会类**(现标待定)。 -**状态**:分工已定,**实施待排批**;两项待拍板(2026-10-05 更新) +**归属**:[奖励](systems/冒险循环/奖励.md)(定义与交叉开关表)+ [node-reward](ux/node-reward.md)(令牌池与奖励面)+ [冒险结构](systems/冒险循环/冒险结构.md)(商店货架保底)+ [关卡节点地图](systems/冒险循环/关卡节点地图.md)(节点类型词表);与上条「双层 BD 延期与备选内容总登记」二期件组相关但不同面。 -#### 属性提升两个新种类入池——刷新次数、专长获取(2026-10-05 立) +**状态**:分工已定,**实施待排批**;四项待拍板/待观察(2026-10-05 v2.0 更新) -**现状**:[特性](systems/冒险循环/特性.md) v1.1 立了属性提升的特殊组三项,其中**行动点上限**已在池(罕见档),**刷新次数与专长获取两项尚未入表**。注意与既有「商店独立刷新机制」条分清:那条是进店后的免费次数 + GP 刷新(商店自身的服务),本条指的是**作为特性授予的**重抽次数,两者不是一回事,入池前须先划清边界。 +#### 资源与机会类两个新种类入池——刷新次数、专长获取(2026-10-05 立) + +**现状**:[奖励](systems/冒险循环/奖励.md) v2.0 立了资源与机会类四项,其中**行动点上限**已在池(罕见档)、**金币与回复**已在池,**刷新次数与专长获取两项尚未入表**。注意与既有「商店独立刷新机制」条分清:那条是进店后的免费次数 + GP 刷新(商店自身的服务),本条指的是**作为奖励授予的**重抽次数,两者不是一回事,入池前须先划清边界。 **连带约束**:`FEATURE_KINDS` 词表封闭(断点附随件与牌库剔除态依赖它),扩种类须走 `adventure_table.gd` + registry 同步修订;档位配额是**结构锚**(普通 70 / 稀有 25 / 罕见 3 = 98 张,入 schema validate 硬断言),新种类入池要占配额——**改总量须重裁而非调参**。专长获取须带全局限量(一局内可获得次数上限)。 -**归属**:[特性](systems/冒险循环/特性.md) 调参表 + [冒险结构](systems/冒险循环/冒险结构.md) 共享池账本节;数值所有权归 [难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md) +**归属**:[奖励](systems/冒险循环/奖励.md) 调参表 + [冒险结构](systems/冒险循环/冒险结构.md) 共享池账本节;数值所有权归 [难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md) **状态**:待排批——须在可跑冒烟的迭代批次内完成 -#### 内部分类禁写入玩家可见面——特性呈现三处违规待改(2026-10-04 用户立意登记) +#### 内部分类禁写入玩家可见面——奖励呈现三处违规待改(2026-10-04 用户立意登记) -**现状**:用户立意(方向已明确):形态(规则改写型/属性加成型)等内部分类**不得写进玩家可见的名称、介绍词或界面**——玩家可根据效果自行推断类别,游戏不得直接点破。查证实态:26 项规则改写型特性的 display_name 全风味名(奥术余烬/贯穿射击/矿工的执拗等,合规,符合 2026-09-29 playnote 既有批评);**违规三处**(均系迭代 12 呈现补齐批所落,承载用户「局内奖励选了什么看不到」反馈——缺口承载需求仍成立,撤的只是分类字样):① 三选一+商店特性卡面第二行印流派名(`battle_narrator.gd` relic_card_text,「奥术余烬 · 魔法」式);② 战斗屏 C 区列表标题(现为「特性」)+逐流派聚合行「魔法 ×2 · 档一」(`hero_info_panel_view.gd` + `hud_presenter.gd` relic_holdings_lines);③ 关卡选择页复用同一聚合文案(`level_map_screen.gd`)。**边界**:效果摘要行(「普攻附加必中伤害」)保留——那是件本身在做什么,是玩家推断归类的依据。 +**现状**:用户立意(方向已明确):形态(规则改写型/属性加成型)等内部分类**不得写进玩家可见的名称、介绍词或界面**——玩家可根据效果自行推断类别,游戏不得直接点破。查证实态:26 项机制类奖励的 display_name 全风味名(奥术余烬/贯穿射击/矿工的执拗等,合规,符合 2026-09-29 playnote 既有批评);**违规三处**(均系迭代 12 呈现补齐批所落,承载用户「局内奖励选了什么看不到」反馈——缺口承载需求仍成立,撤的只是分类字样):① 三选一+商店特性卡面第二行印流派名(`battle_narrator.gd` relic_card_text,「奥术余烬 · 魔法」式);② 战斗屏 C 区列表标题(现为「特性」)+逐流派聚合行「魔法 ×2 · 档一」(`hero_info_panel_view.gd` + `hud_presenter.gd` relic_holdings_lines);③ 关卡选择页复用同一聚合文案(`level_map_screen.gd`)。**边界**:效果摘要行(「普攻附加必中伤害」)保留——那是件本身在做什么,是玩家推断归类的依据。 **连带裁点**:档位激活(同标签 2 件档一/4 件档二)若完全不呈现,玩家只能靠悟——三路待裁:甲=纯隐藏、机制照跑(以撒套装式,最贴用户「流派是玩家挖掘出来的」原则);乙=档位达成那一刻给一次性风味反馈、不点破流派名;丙=连档位机制一起退役。 @@ -59,9 +61,13 @@ **状态**:方向已明确(禁写类别),违规改法与档位呈现三路待讨论(2026-10-04 登记,后续展开) -#### 特性命名统一后续——代码标识符与文件名的对齐(2026-10-05 立) +#### 奖励命名统一后续——代码标识符与文件名的对齐(2026-10-05 立) -**现状**:概念已统一为「特性」(定义见 [特性](systems/冒险循环/特性.md))。本期完成三件——① 定义文档落位;② 称谓统一(代码注释与玩家可见文案,94 处);③ 数据层标识符统一(`adventure_table.gd` / `adventure.tres` 的常量与字段整体换到 feature_* 词族,112 处,值零变更)。**未完三件**:① 规则改写型那套的 relic 词族(RelicTable / relics.tres / relic_id / _relics)与统一词族对齐——文件名与 class_name 改名须同步 Godot `.uid` 与 `.tscn` 引用,非文本层可自证;② 运行层标识符(`_bonus_deck` / `bonus` 加算区 / `_bonus_taken` / `pick_bonus` / BonusInteractController / BonusPickOverlay)换名;③ 断点与存档键(`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`)为存档兼容沿用历史名,是否随存档版本迁移一并换名待定。 +**现状**:概念已统一为「奖励」(2026-10-05 v2.0 由「特性」改名,定义见 [奖励](systems/冒险循环/奖励.md))。已完成三件——① 定义文档落位(`design/gdd/systems/冒险循环/奖励.md`);② 称谓统一(代码注释与玩家可见文案,94 处+design/ 侧随改名批同步);③ 数据层标识符统一(`adventure_table.gd` / `adventure.tres` 的常量与字段整体换到 `feature_*` 词族,112 处,值零变更)。 + +**未完四件**:⓪ **`feature_*` 词族随顶层改名再换到 `reward_*`**(2026-10-05 v2.0 新增)——`FEATURE_KINDS` / `feature_quota()` / `feature_value()` / `feature_candidate_count` / `feature_quota_*` / `feature_value_*`,涉及 `adventure_table.gd` + `adventure.tres` 键名 + registry;**注意** `adventure.tres` 的键名是存档外的表数据,换名只动键不减值,但 `FEATURE_KINDS` 是封闭词表、断点附随件与牌库剔除态依赖它,须走本表 + registry 同步修订。① 机制类那套的 relic 词族(RelicTable / relics.tres / relic_id / _relics)与统一词族对齐——文件名与 class_name 改名须同步 Godot `.uid` 与 `.tscn` 引用,非文本层可自证;② 运行层标识符(`_bonus_deck` / `bonus` 加算区 / `_bonus_taken` / `pick_bonus` / BonusInteractController / BonusPickOverlay)换名;③ 断点与存档键(`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`)为存档兼容沿用历史名,是否随存档版本迁移一并换名待定。 + +**次序建议**:⓪ 与 ① 同为"词族对不齐",可同批;② 涉及运行层最广,单批;③ 须与存档版本迁移一起裁。**顶层已改名而代码仍是 `feature_*`,属"文档与代码分开"的临时态**,应在下一个可跑冒烟的批次内收口。 **状态**:待实施——须在可跑冒烟的迭代批次内完成(本会话按测试执行两入口铁规零测试,改名无法自证) diff --git a/design/gdd/systems/冒险循环/奖励.md b/design/gdd/systems/冒险循环/奖励.md new file mode 100644 index 00000000..8759401b --- /dev/null +++ b/design/gdd/systems/冒险循环/奖励.md @@ -0,0 +1,232 @@ +# 奖励(Reward) + +> 一次冒险之内,通过各渠道给予玩家的**增益总称**——奖励节点给的、商店里买的、打赢关底 Boss 给的,都是奖励。它装的是"这一局你捞到了什么",不管从哪个渠道来。 +> +> 它是一个概念,不是一套东西。下面有**两根互不相干的轴**: +> +> - **分类轴**回答"给的是什么"——三个枚举:机制类 / 属性提升类 / 资源与机会类; +> - **渠道轴**回答"从哪来"——奖励节点 / 商店 / 关底 Boss 击败后。 +> +> 一个奖励属于哪个分类,不决定它从哪个渠道来;反过来也一样。两者的交叉由第 2 节那张开关表定死。 +> +> 状态:**已实现**(2026-10-04 双层 BD 实施批落地)。本文件是奖励的唯一定义文档。 +> +> 数值纪律:本文件只写概念、取值域与指路;每件给多少、效果是什么一律不进正文,事实源是 `game/data/tables/relics.tres` 与 `game/data/tables/adventure.tres`。 + +## 设计目的 + +一次冒险要走三关,如果走完时角色和开局毫无区别,中途的每一次取舍就都不算数了。奖励就是那个把"这一局玩成了什么样"落下来的东西:让玩家在冒险过程中不断变强,且每一局变强的方向不同。 + +它同时要和跨冒险的成长隔开:永久保留的东西是[魔法道具](../排雷循环/魔法道具.md)(带在身上的物品)与[元进度](../跨局循环/元进度.md)(账号级的树),奖励只在当局存在,冒险收束即清零——它不是"你的存档变强了",而是"这一次下矿的你变强了"。 + +**边界判据(一句话)**:**一次冒险内获得、冒险收束即清零的,是奖励;跨冒险跟着你走的,是魔法道具。** + +这条判据走的是生命周期,不走"是不是物品"。原因:奖励这个筐里既装"角色自身的变化",也装金币这类一次性兑付物——用"拿在手里 vs 带在身上"去切,切不开它们,但用"当局清零 vs 跨局保留"能一刀切开,且对筐里所有东西都成立。 + +## 系统范围 + +| 负责 | 不负责 | +|---|---| +| 奖励的定义、三个分类、以及分类与渠道的交叉开关 | 每件效果怎么接入结算——归挂点所属文档([战斗结算](../战斗循环/战斗结算.md)、[行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md)) | +| 生命周期边界:何时出现、何时生效、何时清零 | 卡面排版与界面呈现细则——见 [HUD框架](../表现与支撑/HUD框架.md) | +| 获取渠道的口径与约束 | 魔法道具与元进度——归上表两份文档 | +| 与相邻概念的边界 | 格面资源、关卡节点、商店本身的规则——归各自所属文档 | + +## 在核心循环中的位置 + +``` +【关内】排雷推理 → 战斗结算 → 通关 ──┐ + ├─→ 得到一份奖励 ─→ 后续关卡带着它继续 + 奖励节点・商店・Boss 击败后 ┘ +``` + +奖励处在「一次冒险」这一层:它不是一场战斗里的临时状态,也不跨冒险留存。上游是三条渠道,下游是之后所有关卡的排雷与结算——拿到了,下一关就开始生效。 + +## 核心规则 + +### 1. 分类轴:三个枚举 + +奖励只有一个名词;需要区分时才说它属于哪个分类,不给分类另起名字。 + +| 分类 | 它给的是什么 | 落点 | 事实源 | +|---|---|---|---| +| **机制类**(专长 Feat) | 给规则。在结算管线某个挂点上给自己加一条规则;同一标签的持有件数达阈值时质变 | 各结算段挂点;标签与档位由求值服务统一算 | `relics.tres`(逐项定义) | +| **属性提升类**(ASI) | 给数字。抬高角色某项战斗属性的基础值 | 冒险加算区的生命上限 / AC / 攻击三轴 | `adventure.tres`(种类配额与值) | +| **资源与机会类**(命名待定) | 给"可用的量"。不抬高战斗属性,也不改规则,而是扩充你能调动的余量与机会 | 行动经济、三选一界面、局内钱包;**不进加算区、多数不进持有集** | `adventure.tres`(种类配额与值) | + +三类的共性:都在当局获得、都在当局消费完或随冒险收束清零;都不写账号进度——出现与否由抽取决定,玩家的账号强弱不影响它出现在哪一局。 + +#### 1.1 机制类:专长 + +专长改的是规则而不是数字——它给自己加一条"在某种条件下,本来不会发生的事现在会发生"的规则。它不是任何一条属性轴的延伸,玩家也无法用"加了多少"来衡量它。 + +专长带流派标签,同一标签的持有件数达到阈值时发生质变(档位机制归 [战斗结算](../战斗循环/战斗结算.md),本文件不展开)。这是它和另两类最直观的体感差别:属性提升是"我更耐打了",专长是"我现在会一件以前不会的事"。 + +#### 1.2 属性提升类:纯属性三项 + +三项,各改一条战斗属性轴: + +| 项 | 改什么 | +|---|---| +| 生命上限 | 抬高角色的生命上限 | +| AC(护甲) | 抬高角色的护甲 | +| 攻击 | 抬高角色的攻击 | + +三项都直接进冒险加算区,跨关携带且关间不清零。这一类是封闭的:只有这三项,多一项就要走文档修订。 + +#### 1.3 资源与机会类:四项(命名待定) + +这类装的是"不抬高战斗属性、也不改规则,但让你更有余地"的东西: + +| 项 | 给什么 | 备注 | +|---|---|---| +| 行动点上限 | 每场战斗首轮可用的行动点更多 | 罕见档 | +| 刷新次数 | 三选一界面可重抽的次数更多 | **作用对象是选择界面,不是角色**——见第 3 节的例外登记;奖励节点与商店两个渠道都可出现 | +| 金币(GP) | 局内钱包进账 | 进钱包即花掉,不进持有集、不持续生效 | +| 回复 | 当即回血 | **是否属本类待确认**——同样是即时兑付,不进持有集、不持续生效 | + +**这类为什么单独存在**:它的成员不满足"抬高战斗属性"(那归属性提升类),也不满足"改写规则"(那归机制类),但玩家拿到时的感受是一致的——"我能做的事变多了"。把它们跟属性提升混在一起,会让"加了多少攻击"这种可度量的提升和"多一次重抽"这种不可度量的余地摆在同一张候选卡上,玩家没法比。 + +**这类内部的异质性(要诚实登记)**:金币与回复是**即时兑付**——拿到就消失,不进持有集,也没有"持有→生效→清零"的过程;行动点上限与刷新次数则进持有账本、当局持续有效。它们被归在同一类是因为"给的是余量"这个共同性质,不是因为生命周期相同。这条异质性在此显式登记,防止后续把金币当成会持续生效的东西去结算。 + +#### 1.4 分类判据 + +**给规则的是机制类,给数字的是属性提升类,给余量的是资源与机会类。** + +拿不准的项按这条判:去掉它之后,角色是"某件以前不会的事做不到了"(机制类)、"某个数字少了一截"(属性提升类)、还是"能调动的余地变小了"(资源与机会类)。 + +#### 1.5 命名出处 + +机制类与属性提升类都取自 DND 规则书的既有名词:专长对应 Feat,属性提升对应 Ability Score Improvement(ASI)。资源与机会类的命名**待定**——候选是「资源」「补给」「余量」,取决于最终把哪一层的共性当作这一类的主要性质。玩家可见文案只写效果,不出现任何分类名。 + +### 2. 渠道轴:与分类的交叉 + +三个渠道各只取走分类的一部分。这张表是奖励概念的第二个维度——它和分类轴互不决定,改其中一根不必动另一根。 + +| 分类 \ 渠道 | 奖励节点 | 商店 | 关底 Boss 击败后 | +|---|---|---|---| +| **机制类**(专长) | 罕见旁路(见 2.2) | 不出现 | **主渠道**(见 2.1) | +| **属性提升类** | 出 | 出(口径「训练」) | 待定 | +| **资源与机会类** | 出 | 出 | 待定 | + +#### 2.1 机制类的主渠道:关底 Boss 击败后 + +专长的专属渠道,时机确定——打赢就有,不需要看脸。构筑的节奏由此可预期:玩家能规划"第几关拿到第一个专长"。品类原型是杀戮尖塔(每层 Boss 后必给遗物)与哈迪斯(Boss 后必给恩赐)——打赢了一定拿到东西,是这类游戏的通例。 + +**不新增节点类型**:专长挂在 Boss 节点的兑付面上(击败后追加一次专长三选一),[关卡节点地图](关卡节点地图.md) 的节点类型仍是封闭枚举五种(战斗 / Boss / 奖励 / 恢复 / 商店),词表零扩类。此前"要不要为专长新设一类节点"的悬案由此收口。 + +#### 2.2 罕见旁路:专长获取 + +在属性与资源的通用渠道(奖励节点、商店)里,嵌着一个罕见项——**专长获取**。它小概率出现在候选里,效果是立刻开一次专长 N 选一(N 与机制类主渠道的候选数同源)。 + +它的作用是在确定性之上加一层赌博感: + +- **不推翻确定性**:专长的主渠道仍然是 Boss 击败后,玩家不会因为没 roll 到就构筑不起来; +- **只在旁路制造兴奋**:它不常来,来了就是"这一局走运了",让人有记忆点; +- **罕见且全局限量**:配额极小,且一局内的总量有上限——防止它变成第二条专长渠道,也防止它冲垮档位阈值。 + +玩家视角它长这样:在普通的三选一奖励里,偶尔会冒出一张不一样的卡——选它,立刻再开一次专长选择。它是奖励面里的惊喜,不是奖励面的常态。 + +#### 2.3 商店口径:训练 + +商店这一侧走的叙事是「**训练**」——花代价向某位师父学习、借某种卷轴修炼、或把战斗攒下的钱换成一身本领。它不是买一个东西回来,而是把钱换成自己的本领,所以落到命名空间上和奖励节点那一侧完全相同:都是往同一个持有集里加一项奖励。 + +#### 2.4 在册事项 + +现行实现里**三条渠道完全共用同一个候选池**,三个分类出现条件一样、只有出现概率不同——上表的渠道分工是**目标状态,尚未实施**。相关的实施批次登记在 [06-待办清单](../../06-待办清单.md) 的 BD 分层条目下,本文件不复制。 + +### 3. 作用对象与范围 + +- **作用对象**:角色本人,以及角色参与的结算过程。奖励不改敌人、不改棋盘生成、不改关卡内容。 +- **刷新次数的例外**:它作用在三选一界面上,改的是"这一局里你能重选几次",而不是角色身上的任何数字。它是资源与机会类里唯一一条作用对象不是角色的项——留在这里是因为它满足另外三条:当局获得、当局有效、进同一份持有账本。这条例外在此显式登记,避免后续把它当成角色属性去结算。 +- **时间范围**:整局冒险。机制类与属性提升类自获得起对本局剩余所有关卡生效,跨关携带且关间不清零;资源与机会类里的金币与回复是即时兑付,拿到即消费完。 +- **归属范围**:不进账号永久进度,不带到下一次冒险。 + +### 4. 生命周期 + +``` +未获得 → 进入候选池 → 作为候选出现 → 选定 → 持有/兑付 → 生效 →(冒险收束)清零 + ↑ ↓ + 断点恢复 持有集持续累积 +``` + +| 阶段 | 说明 | +|---|---| +| 候选池构建 | 冒险开局时一次建成。三个分类的候选**现同处一个令牌池**:属性提升类与资源与机会类按配额铺开,机制类按定义表的有效行铺开。 | +| 出现 | 玩家在渠道上看到若干候选(三选一的形式),看不到整个池。 | +| 选定 | 玩家选定一项后,它从池中剔除,此后任何渠道都不会再见。选到「专长获取」时,立刻再开一次专长 N 选一——这次选择走机制类的渠道语义,不占用原本的渠道。 | +| 持有与兑付 | 机制类与属性提升类进入持有集后立即生效,跨关携带;机制类按同一标签的持有项数决定处于哪一档。金币与回复即时兑付,不入持有集。 | +| 清零 | 冒险以任一结局收束时整集清空;下次开局重建。 | +| 断点恢复 | 进行中的冒险把持有集与剩余候选池一并写入断点,续玩后恢复到同一状态(断点里的键名沿用历史形态,不随本次改名变动)。 | + +### 5. 关联与边界 + +| 相邻概念 | 关系(只写关系,不写对方的规则) | +|---|---| +| [魔法道具](../排雷循环/魔法道具.md) | 最需要分清的一对,判据是生命周期:**奖励当局清零,魔法道具跨冒险保留**。两者互不相通——奖励永不进同调位,魔法道具永不进当局随机渠道。 | +| [元进度](../跨局循环/元进度.md)(树) | 树管账号永久的规则与容量,奖励管当局构筑,两层互不代替。 | +| [战斗结算](../战斗循环/战斗结算.md) | 机制类的挂点位于结算管线的各段;挂点清单与语义归结算文档。 | +| [行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md) | 部分挂点落在行动点结转与地形处理上,语义归各自文档。 | +| [关卡节点地图](关卡节点地图.md) | 是渠道的载体,不是奖励的属性。机制类挂在 Boss 节点兑付面上,节点类型词表零扩类。 | +| [地图战斗资源](../战斗循环/地图战斗资源.md)(格面资源) | 无关:格面资源是单格的一次性产出,不进持有集,也不是渠道给的。 | +| [存档序列化](../表现与支撑/存档序列化.md) | 断点负载记录持有集与剩余候选池;键名与版本迁移策略归存档文档。 | + +## 依赖与输出 + +| 类型 | 内容 | +|---|---| +| 依赖(概念) | 角色、结算管线、行动点、地形、关卡节点地图、局内金币钱包、三选一界面 | +| 依赖(数据) | `relics.tres`(机制类定义行)、`adventure.tres`(属性提升类与资源与机会类的种类配额与值)、`shop.tres`(货架取舍) | +| 输出(对外) | 持有集、生效中的分类投影、剩余候选池、档位求值结果、可用重抽次数 | +| 明确边界 | 不写账号进度、不改敌人与关卡内容、不承载具体数值 | + +## P0 最小闭环 / P1・P2 后置 + +- **P0(已实现)**:三个分类可定义 → 进入候选池 → 在渠道上被选中 → 当局生效 → 收束清零。 +- **P1 后置**:三条渠道按第 2 节分工;刷新次数与专长获取两项入池;两项合成高阶项;同一标签收集到四项以上的后期表达。 +- **P2 后置**:商店里的攻击类型转换服务;喂雷流派是否保留(尚未拍板,登记在 [06-待办清单](../../06-待办清单.md))。 + +## 调参表 + +数值所有权归 [难度曲线与Boss](难度曲线与Boss.md);本文件只列参数与取值域,**不列现行值**。 + +| 参数 | 取值域 | 事实源 | +|---|---|---| +| 机制类定义行(标识 / 显示名 / 稀有度 / 标签 / 挂点 / 效果字典) | 各字段封闭枚举,行键白名单封闭 | `game/data/tables/relics.tres` | +| 属性提升类种类 | 封闭三项:生命上限 / AC / 攻击,扩项走文档修订 | `game/data/schemas/adventure_table.gd` | +| 资源与机会类种类 | 行动点上限 / 金币 / 回复(**刷新次数与专长获取两项尚未入表**,见待办) | 同上 | +| 稀有度档位 | 封闭三档(普通 / 稀有 / 罕见);三档配额是结构锚,改总量须重新拍板而非调参 | 同上 | +| 各分类种类 × 档位的配额与值 | 整数 | `game/data/tables/adventure.tres` | +| 专长获取的全局限量 | 整数(一局内可获得的次数上限) | 同上 | +| 一次三选一的候选展示数 | [1,6] | 同上 | + +## 验收标准 + +1. 三个分类走同一套获取流程,代码里只有一个表示"已持有奖励"的集合。 +2. 一次冒险内获得的奖励在之后任何关卡都生效;开新冒险后持有集为空。 +3. 一项被选定的奖励不再出现在任何后续渠道。 +4. 每个流派标签至少有一项挂在排雷侧的结算触发点上(防止机制类沦为纯战斗数值)。 +5. 玩家可见的文案不出现分类名与内部分组标签——只写效果,归类让玩家自己推断。 +6. 文档与代码里提到它时只有"奖励"这一个名字;需要区分时用"机制类/属性提升类/资源与机会类"描述,不得另造称呼。 +7. 刷新次数不进角色加算区——它只改三选一界面的可用重抽次数。 +8. 金币与回复不进持有集——它们是即时兑付,拿到即消费完。 + +## 待办 + +全部待办单点登记于 [06-待办清单](../../06-待办清单.md)(BD 分层条目、命名统一后续条目),本节不复制。 + +本节只点出四条由本版新立、尚未登记的判断来源: + +- **资源与机会类的命名待定**:候选「资源」「补给」「余量」,取决于以哪层共性为主。定了之后要回头改本文件的类名与 registry。 +- **回复是否属资源与机会类待确认**:它是即时兑付,与金币同类;也可能被视为独立的第四类。 +- **Boss 击败后是否也给属性提升类与资源与机会类**:现标"待定",未拍板。 +- **机制类总量与档位阈值的匹配**:三关结构下,若最终关 Boss 后不给(没有后续关卡可消费),确定性渠道一局只兑付两次专长——刚好够同标签 2 件档一,档二(4 件)要靠罕见旁路补齐。是否合预期归曲线调参批观察。 + +## 版本历史 + +| 版本 | 日期 | 变更 | +|---|---|---| +| v1.0 | 2026-10-05 | 以「特性」为名首次为本概念立定义文档。此前它按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),现收敛为一个对象下的分类;性质定为「角色自身得到提升」而非「获得物品」。 | +| v1.1 | 2026-10-05 | 分类重构:两类由「规则改写型 / 属性加成型」改为「属性提升 / 专长」。 | +| v1.2 | 2026-10-05 | 专长渠道落定:关底 Boss 击败后兑付,不新增节点类型;罕见旁路明确为"普通奖励里的专长 N 选一"。 | +| **v2.0** | 2026-10-05 | **顶层改名为「奖励」并重构为两根轴**。改名动因:筐里既装"角色自身的变化"也装金币这类一次性兑付物,用"自身提升 vs 持有物"已切不开,边界判据改由生命周期承担——**当局清零的是奖励,跨局带走的是魔法道具**。分类由两类改为**三个枚举**:机制类(专长)/ 属性提升类(生命·AC·攻击)/ 资源与机会类(行动点上限·刷新次数·金币·回复,命名待定)。新增第 2 节分类 × 渠道交叉开关表,明确两根轴互不决定;金币与回复不再被当作"该移出去的脏东西",而是安置在资源与机会类里,同时把它们的即时兑付性质显式登记为类内异质性。 | diff --git a/design/gdd/systems/冒险循环/特性.md b/design/gdd/systems/冒险循环/特性.md deleted file mode 100644 index 61a2f783..00000000 --- a/design/gdd/systems/冒险循环/特性.md +++ /dev/null @@ -1,217 +0,0 @@ -# 特性(Feature) - -> 一次冒险之内,角色**自身得到提升**的载体。它不是包里的东西,而是角色本人的变化——这点决定了它和持有物是两类完全不同的概念,下面的「关联与边界」一节写了怎么区分。 -> -> 同一个概念下有**两类**:抬高数字的(**属性提升**),和改规则的(**专长**)。它们是同一个对象的两个分类,不是两个系统。 -> -> 状态:**已实现**(2026-10-04 双层 BD 实施批落地)。本文件是特性的唯一定义文档。 -> -> 数值纪律:本文件只写概念、取值域与指路;每件加多少、效果是什么一律不进正文,事实源是 `game/data/tables/relics.tres` 与 `game/data/tables/adventure.tres`。 - -## 设计目的 - -一次冒险要走三关,如果走完时角色和开局毫无区别,中途的每一次取舍就都不算数了。特性就是那个把"这一局玩成了什么样"落下来的东西:让玩家在冒险过程中不断变强,且每一局变强的方向不同。 - -它同时要和跨冒险的成长隔开:永久保留的东西是[魔法道具](../排雷循环/魔法道具.md)(带在身上的物品)与[元进度](../跨局循环/元进度.md)(账号级的树),特性只在当局存在,冒险收束即清零——它不是"你的存档变强了",而是"这一次下矿的你变强了"。 - -**为什么定为"自身提升"而不是"获得物品"**:一旦把它当成捡到的东西,就和魔法道具(持有物)在玩家心里混成一团——而两者的接入方式、生命周期、获取条件都不同。定为自身的提升,边界一句话就能说清:**带在自己身上的是特性,拿在手里的是魔法道具**。 - -## 系统范围 - -| 负责 | 不负责 | -|---|---| -| 特性的定义与两个分类 | 每件效果怎么接入结算——归挂点所属文档([战斗结算](../战斗循环/战斗结算.md)、[行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md)) | -| 生命周期边界:何时出现、何时生效、何时清零 | 卡面排版与界面呈现细则——见 [HUD框架](../表现与支撑/HUD框架.md) | -| 获取途径的口径与约束 | 魔法道具与元进度——归上表两份文档 | -| 与相邻概念的边界 | 格面资源、关卡节点、商店本身的规则——归各自所属文档 | - -## 在核心循环中的位置 - -``` -【关内】排雷推理 → 战斗结算 → 通关 ──┐ - ├─→ 得到一项特性 ─→ 后续关卡带着它继续 - 奖励节点・商店・Boss 击败后 ┘ -``` - -特性处在「一次冒险」这一层:它不是一场战斗里的临时状态,也不跨冒险留存。上游是三条获取渠道,下游是之后所有关卡的排雷与结算——拿到了,下一关就开始生效。 - -## 核心规则 - -### 1. 两类:属性提升(ASI)与专长(Feat) - -特性只有一个名词;需要区分时才说它属于哪一类,不给类别另起名字。 - -| 分类 | 它改的是什么 | 落点 | 事实源 | -|---|---|---|---| -| **属性提升** ASI | 改数字。把角色某项基础值抬高,或给他多一次选择的机会 | 冒险加算区(生命上限 / AC / 攻击三轴、行动点)、钱包、三选一界面 | `adventure.tres`(种类配额与值) | -| **专长** Feat | 改规则本身。在结算管线的某个挂点上给自己加一条规则;同一标签的持有件数达到阈值时发生质变 | 各结算段挂点;标签与档位由求值服务统一算 | `relics.tres`(逐项定义) | - -两类的共性:都在当局获得、当局携带、当局失效;都不写账号进度——出现与否由抽取决定,玩家的账号强弱不影响它出现在哪一局。 - -**为什么是同一个对象的两个分类而不是两个东西**:它们共用一份获取流程、一份持有集、一份生命周期。分成两个系统只会让读者以为有两套账,而实际上代码里只有一个持有集。 - -#### 1.1 属性提升:纯属性组与特殊组 - -属性提升内部按"改的是不是角色身上的数字"分成两组。 - -**纯属性组**——三项,各改一条基础属性轴: - -| 项 | 改什么 | -|---|---| -| 生命上限 | 抬高角色的生命上限 | -| AC(护甲) | 抬高角色的护甲 | -| 攻击 | 抬高角色的攻击 | - -**特殊组**——三项,改的不是基础属性,而是能力上限与机会: - -| 项 | 改什么 | 备注 | -|---|---|---| -| 行动点上限 | 抬高每场战斗首轮的行动点基线 | 罕见档 | -| 刷新次数 | 增加三选一界面的重抽次数 | **作用对象不是角色,是选择界面**——见第 2 节的例外说明;可在奖励节点与商店两个渠道出现 | -| 专长获取 | 拿到时立刻开一次专长三选一 | **罕见且全局限量**;它是跨两类的桥梁——本体属属性提升,产出是专长。见第 4.2 节 | - -三轴的分类边界:纯属性组的三项直接进冒险加算区,跨关携带且关间不清零;特殊组的三项各有各的落点,其中刷新次数不进加算区。 - -#### 1.2 专长:机制增加 - -专长改的是规则而不是数字——它给自己加一条"在某种条件下,本来不会发生的事现在会发生"的规则,因此它不是任何一条属性轴的延伸,玩家也无法用"加了多少"来衡量它。 - -专长带流派标签,同一标签的持有件数达到阈值时发生质变(档位机制归所属结算文档,本文件不展开)。这是它和属性提升最直观的体感差别:属性提升是"我更耐打了",专长是"我现在会一件以前不会的事"。 - -#### 1.3 一句判据 - -**改数字的是属性提升,改规则的是专长。** - -拿不准的项按这条判:如果把它去掉,角色是"某个数字少了一截",那就是属性提升;如果角色是"某件事做不到了",那就是专长。 - -#### 1.4 命名出处 - -两类都取自 DND 规则书的既有名词,不是本项目自造:属性提升对应 Ability Score Improvement(ASI,属性值提升),专长对应 Feat(专长)。玩家可见文案只写效果,不出现这两类名。 - -### 2. 作用对象与范围 - -- **作用对象**:角色本人,以及角色参与的结算过程。特性不改敌人、不改棋盘生成、不改关卡内容。 -- **刷新次数的例外**:它作用在三选一界面上,改的是"这一局里你能重选几次",而不是角色身上的任何数字。它是特殊组里唯一一条作用对象不是角色的项——留在特性内是因为它满足另外三条:当局获得、当局有效、进同一份持有账本。这条例外在此显式登记,避免后续把它当成角色属性去结算。 -- **时间范围**:整局冒险。两类都自获得起对本局剩余所有关卡生效;属性提升写入加算区后,关与关之间不清零。 -- **归属范围**:不进账号永久进度,不带到下一次冒险。 - -### 3. 生命周期 - -``` -未获得 → 进入候选池 → 作为候选出现 → 选定 → 持有 → 生效 →(冒险收束)清零 - ↑ ↓ - 断点恢复 持有集持续累积 -``` - -| 阶段 | 说明 | -|---|---| -| 候选池构建 | 冒险开局时一次建成。两类的候选**现同处一个令牌池**:属性提升按配额铺开,专长按定义表的有效行铺开。 | -| 出现 | 玩家在获取口看到若干候选(三选一的形式),看不到整个池。 | -| 选定 | 玩家选定一项后,它从池中剔除,此后任何获取口都不会再见。选到「专长获取」时,立刻再开一次专长三选一——这次选择走专长的渠道语义,不占用原本的获取口。 | -| 持有与生效 | 进入持有集后立即生效,跨关携带。专长按同一标签的持有项数决定处于哪一档。 | -| 清零 | 冒险以任一结局收束时整集清空;下次开局重建。 | -| 断点恢复 | 进行中的冒险把持有集与剩余候选池一并写入断点,续玩后恢复到同一状态(断点里的键名沿用历史形态,不随本次改名变动)。 | - -### 4. 获取途径 - -#### 4.1 三条渠道的分工 - -| 渠道 | 出哪一类 | 说明 | -|---|---|---| -| **关底 Boss 击败后** | 专长 | 专长的专属渠道,时机确定——打赢就有,不需要看脸。构筑的节奏由此可预期:玩家能规划"第几关拿到第一个专长"。 | -| **奖励节点** | 属性提升 | 每关通关给一次三选一(最终关不给——提升只对后续关卡有意义,最终关没有后续);关卡节点图上的奖励节点同样给一次三选一,与之共用同一个候选池。 | -| **商店** | 属性提升 | 花局内金币购买在架的特性;同一种至多一张,买走即从在架令牌移除。口径是**训练**(见 4.3)。 | - -**确定性是这条分工的核心**:专长走专属渠道,是为了让"这一局的构筑往哪个方向走"由玩家决定,而不是由抽取决定。属性提升走通用渠道,数量稳定、每局可预期,负责把角色垫厚。品类原型是杀戮尖塔(每层 Boss 后必给遗物)与哈迪斯(Boss 后必给恩赐)——打赢了一定拿到东西,是这类游戏的通例。 - -**在册事项**:现行实现里奖励节点与商店完全共用同一个候选池,两类出现条件一样、只有出现概率不同,专长也走同一个池——上表的渠道分工是**目标状态,尚未实施**。相关的实施批次登记在 [06-待办清单](../../06-待办清单.md) 的 BD 分层条目下,本文件不复制。 - -**与节点类型词表的关系(已定)**:专长走关底 Boss 击败后兑付,**不新增节点类型**——[关卡节点地图](关卡节点地图.md) 的节点类型仍是封闭枚举五种(战斗 / Boss / 奖励 / 恢复 / 商店),改动落在 Boss 节点的兑付面上(击败后追加一次专长三选一),词表零扩类。 - -**专长总量与档位阈值的匹配(待观察,不拍板)**:专长的档位激活是同标签 2 件档一 / 4 件档二(阈值归 [战斗结算](../战斗循环/战斗结算.md),本文件不展开)。三关结构下,若最终关 Boss 后不给(没有后续关卡可消费),确定性渠道一局只兑付两次专长——刚好够档一,档二要靠罕见旁路补齐。最终关给不给、以及这个总量与阈值是否匹配,属曲线调参批的观察项,登记在 [06-待办清单](../../06-待办清单.md),本文件不预设结论。 - -#### 4.2 罕见旁路:专长获取 - -在属性提升的两个通用渠道里,嵌着一个罕见项——**专长获取**。它小概率出现在奖励节点或商店的候选里,效果是立刻开一次专长 N 选一(N 与专长主渠道的候选数同源)。 - -它的作用是在确定性之上加一层赌博感: - -- **不推翻确定性**:专长的主渠道仍然是关底 Boss,玩家不会因为没 roll 到就构筑不起来; -- **只在旁路制造兴奋**:它不常来,来了就是"这一局走运了",让人有记忆点; -- **罕见且全局限量**:配额极小,且一局内的总量有上限——防止它变成第二条专长渠道,也防止它把 4.1 里说的档位阈值冲垮。 - -玩家视角它长这样:在普通的三选一奖励里,偶尔会冒出一张不一样的卡——选它,立刻再开一次专长选择。它是奖励面里的惊喜,不是奖励面的常态。 - -品类原型是以撒的恶魔房/天使房(Boss 战后概率开启,强力内容不走普通池)与哈迪斯的混沌门(概率出现、强力带代价)。 - -#### 4.3 商店口径:训练 - -商店这一侧走的叙事是「**训练**」——花代价向某位师父学习、借某种卷轴修炼、或把战斗攒下的钱换成一身本领。它不是买一个东西回来,而是把钱换成自己的本领,所以落到命名空间上和奖励那一侧完全相同:都是往同一个持有集里加一项特性。 - -### 5. 关联与边界 - -| 相邻概念 | 关系(只写关系,不写对方的规则) | -|---|---| -| [魔法道具](../排雷循环/魔法道具.md) | 最需要分清的一对:**魔法道具是拿在手里的物品,特性是角色自身的变化**。两者互不相通——特性永不进同调位,魔法道具永不进当局随机渠道。魔法道具跨冒险保留,特性当局清零。 | -| [元进度](../跨局循环/元进度.md)(树) | 树管账号永久的规则与容量,特性管当局构筑,两层互不代替。 | -| [战斗结算](../战斗循环/战斗结算.md) | 专长的挂点位于结算管线的各段;挂点清单与语义归结算文档。 | -| [行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md) | 部分挂点落在行动点结转与地形处理上,语义归各自文档。 | -| [关卡节点地图](关卡节点地图.md) | 是获取口的载体,不是特性的属性。专长专属渠道涉及节点类型词表的封闭枚举,影响面登记在 06。 | -| [地图战斗资源](../战斗循环/地图战斗资源.md)(格面资源) | 无关:格面资源是单格的一次性产出,不进持有集。 | -| [存档序列化](../表现与支撑/存档序列化.md) | 断点负载记录持有集与剩余候选池;键名与版本迁移策略归存档文档。 | - -## 依赖与输出 - -| 类型 | 内容 | -|---|---| -| 依赖(概念) | 角色、结算管线、行动点、地形、关卡节点地图、局内金币钱包、三选一界面 | -| 依赖(数据) | `relics.tres`(专长定义行)、`adventure.tres`(属性提升种类配额与值)、`shop.tres`(货架取舍) | -| 输出(对外) | 持有集、生效中的分类投影、剩余候选池、档位求值结果、可用重抽次数 | -| 明确边界 | 不写账号进度、不改敌人与关卡内容、不承载具体数值 | - -## P0 最小闭环 / P1・P2 后置 - -- **P0(已实现)**:两类可定义 → 进入候选池 → 在获取口被选中 → 当局生效 → 收束清零。 -- **P1 后置**:三类渠道按 4.1 分工(含专长专属节点的设立方式,待拍板);专长获取项入池;刷新次数入池;两项合成高阶项;同一标签收集到四项以上的后期表达。 -- **P2 后置**:商店里的攻击类型转换服务;喂雷流派是否保留(尚未拍板,登记在 [06-待办清单](../../06-待办清单.md))。 - -## 调参表 - -数值所有权归 [难度曲线与Boss](难度曲线与Boss.md);本文件只列参数与取值域,**不列现行值**。 - -| 参数 | 取值域 | 事实源 | -|---|---|---| -| 专长定义行(标识 / 显示名 / 稀有度 / 标签 / 挂点 / 效果字典) | 各字段封闭枚举,行键白名单封闭 | `game/data/tables/relics.tres` | -| 属性提升种类 | 封闭词表:攻击 / 生命上限 / 护甲 / 金币 / 行动点 / 恢复(**刷新次数、专长获取两项尚未入表**,见待办) | `game/data/schemas/adventure_table.gd` | -| 属性提升稀有度档位 | 封闭三档(普通 / 稀有 / 罕见);三档配额是结构锚,改总量须重新拍板而非调参 | 同上 | -| 各属性提升种类 × 档位的配额与值 | 整数 | `game/data/tables/adventure.tres` | -| 专长获取的全局限量 | 整数(一局内可获得的次数上限) | 同上 | -| 一次三选一的候选展示数 | [1,6] | 同上 | - -## 验收标准 - -1. 两类走同一套获取流程,代码里只有一个表示"已持有特性"的集合。 -2. 一次冒险内获得的特性在之后任何关卡都生效;开新冒险后持有集为空。 -3. 一项被选定的特性不再出现在任何后续获取口。 -4. 每个标签至少有一项挂在排雷侧的结算触发点上(防止专长沦为纯战斗数值)。 -5. 玩家可见的文案不出现分类名与内部分组标签——只写效果,归类让玩家自己推断。 -6. 文档与代码里提到它时只有"特性"这一个名字;需要区分类别时用"属性提升/专长"描述,不得另造称呼。 -7. 刷新次数不进角色加算区——它只改三选一界面的可用重抽次数。 - -## 待办 - -全部待办单点登记于 [06-待办清单](../../06-待办清单.md)(BD 分层条目、命名统一后续条目),本节不复制。 - -本节只点出三条由本版新立、尚未登记的判断来源: - -- **金币与恢复的归属待拍板(本版最要紧的一条)**:现行属性提升池里有金币袋与恢复两项,按本版定义它们都不算"角色自身得到的提升"——金币进钱包、恢复是即时兑付,**两者都不进持有集、不持续生效,因此没有"获得→持有→清零"的生命周期**,与特性不共享生命周期。选项:甲=移出特性,另立一类(即时兑付/补给,不进持有集),"特性=自身提升"由此名副其实,**但档位配额 70/25/3 是结构锚,动总量须重裁而非调参**;乙=放宽特性定义为"一次冒险内抽到的增益",GP 与回复也算,代价是判据句「带在自己身上的是特性」失效、与魔法道具的边界软化。尚未拍板,本版不动数据。 -- **专长总量与档位阈值的匹配**:见 4.1 末段(确定性渠道一局两次 vs 档二需同标签 4 件)。 -- **顶层命名待确认**:「特性」这个名是否保留,取决于上一条怎么判——若 GP 与回复移出,则"特性=自身提升"成立、名不必改;若留下,则需换一个能容纳即时兑付的中性名。用户在 2026-10-05 会话中对顶层名提出质疑,尚未收口。 - -## 版本历史 - -| 版本 | 日期 | 变更 | -|---|---|---| -| v1.0 | 2026-10-05 | 首次为本概念立定义文档。此前它按内部分类被叫成三个名字,各处互相冲突的定义以本文档为准:统一名词"特性",把原先分开称呼的两类收敛为一个对象下的分类;把性质定为「角色自身得到提升」而非「获得物品」,以此与魔法道具(持有物)划清。 | -| v1.1 | 2026-10-05 | 分类重构(用户拍板):两类由「规则改写型 / 属性加成型」改为「**属性提升**(ASI)/ **专长**(Feat)」,属性提升内部再分纯属性组(生命上限 / AC / 攻击)与特殊组(行动点上限 / 刷新次数 / 专长获取)。获取途径由两个共用池改为三条分工渠道(专长走特定节点、属性提升走奖励节点与商店),并在通用渠道内嵌罕见旁路「专长获取」以提供概率性惊喜。新增:刷新次数作用对象的例外登记、金币与恢复归属的待拍板项、专长专属节点对节点类型封闭枚举的影响面。 | -| v1.2 | 2026-10-05 | 专长渠道落定(用户拍板):专长的专属渠道定为**关底 Boss 击败后**兑付——不新增节点类型,节点类型仍为封闭枚举五种,改动落在 Boss 节点兑付面(此前的"是否扩类"悬案由此收口)。罕见旁路明确为"普通奖励里的专长 N 选一"。新增:专长总量与档位阈值(2 件档一 / 4 件档二)的匹配观察项、最终关是否兑付的待确认点;金币与恢复的处置补上生命周期判据与甲乙两案。 | diff --git a/design/gdd/systems/表现与支撑/HUD框架.md b/design/gdd/systems/表现与支撑/HUD框架.md index 492afa9e..c198990e 100644 --- a/design/gdd/systems/表现与支撑/HUD框架.md +++ b/design/gdd/systems/表现与支撑/HUD框架.md @@ -216,7 +216,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | [地图战斗资源](../战斗循环/地图战斗资源.md) | 已开格的奖励身份常读;未开格类型微光(英雄周围 8 格内的未开格显示资源类型——概念定义见本篇「未开格类型微光」节) | | [魔法道具](../排雷循环/魔法道具.md) | 库存条常读;使用交互与目标拾取;板级叠加层信息呈现 | | [棋盘生成](../排雷循环/棋盘生成.md) | 零合法板的诚实告知(数据面经战斗结算上抛,本系统只管提示形态) | -| [地形变异](../排雷循环/地形变异.md) | 全局作用域型三层预告(2026-10-04 首发批——语义正主=地形变异 §全局作用域型):①开战横幅一行(板级变异非空时显示;减动效=静态驻留,轮横幅先例同款双态)②HUD 常驻角标(C 区战斗全程可见防中局遗忘,空态整节隐藏=特性段先例;摆位 provisional)③帮助手册一行(零交互教学,承载=玩法帮助文案块);数据面经呈现快照 board_variants 投影(核心→呈现唯一读取面),普通图三层恒空态零打扰 | +| [地形变异](../排雷循环/地形变异.md) | 全局作用域型三层预告(2026-10-04 首发批——语义正主=地形变异 §全局作用域型):①开战横幅一行(板级变异非空时显示;减动效=静态驻留,轮横幅先例同款双态)②HUD 常驻角标(C 区战斗全程可见防中局遗忘,空态整节隐藏=奖励段先例;摆位 provisional)③帮助手册一行(零交互教学,承载=玩法帮助文案块);数据面经呈现快照 board_variants 投影(核心→呈现唯一读取面),普通图三层恒空态零打扰 | ## P0 最小闭环 @@ -300,6 +300,6 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | v0.10 | 2026-09-26 | 渲染技术注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗舞台 Node2D 化——BattleStageView 内部由 PanelContainer+Control 站桩改为 Control 壳 + SubViewportContainer + SubViewport + Node2D 世界(StageWorld/StandeeBody),类名/setter 面/公共方法契约不变、调用点零改造;状态图标行与悬停 tooltip 保留 Control 载体挂壳层(伴随件);C6 字体注入挂点复用(set_world_font);三区布局与性能预算(同屏 draw calls < 200)不变;占位表现等价平移(时序常量逐字对照——等价证明=git 提交 7f24b64,文件已按生命周期条款退役) | | v0.11 | 2026-09-27 | 关卡画面 UX spec 建档([level-map](../../ux/level-map.md),关卡画面 UX 批——用户拍板立项):义务清单「关卡节点地图」行挂屏级 spec 指针;屏级权威行与不负责表改按屏分治口径(战斗屏 = battle.md / 关卡画面 = level-map.md)。文档面零机制改动 | | v0.12 | 2026-09-30 | **未开格类型微光概念收口批(用户裁决落位)**:新增「未开格类型微光」节=全项目唯一正主定义(五要素——作用对象=英雄周围 8 格内的未开格〔与可挖域同圈〕/信息内容=只类型不泄雷安/生命周期=入圈亮出圈灭开格灭/关联边界/实装状态=契约定稿〔样张 v2〕游戏内待实施批);核心规则章六节改七节;呈现义务来源清单「地图战斗资源」行补微光指路;验收标准补微光呈现线。背景:该概念此前只活在 06 登记与 art-bible 复述,「常显/全部未开格」无范围表述酿成理解事故(2026-09-30 用户纠正口径),本批落位正主、他文只许指路 | -| v0.13 | 2026-10-04 | **地形变异三层预告义务批(全局作用域变异首发批——迭代 14 ③号卡,代码同批)**:呈现义务来源清单补「地形变异」行(开战横幅一行〔减动效=静态驻留,轮横幅先例同款双态〕+ C 区常驻角标〔空态整节隐藏=特性段先例,摆位 provisional〕+ 帮助手册一行〔零交互教学〕);验收标准补三层预告线(普通图恒空态零打扰);数据面走呈现快照 board_variants 投影(核心→呈现唯一读取面)。语义正主=地形变异.md §全局作用域型,本文只锁呈现承载 | +| v0.13 | 2026-10-04 | **地形变异三层预告义务批(全局作用域变异首发批——迭代 14 ③号卡,代码同批)**:呈现义务来源清单补「地形变异」行(开战横幅一行〔减动效=静态驻留,轮横幅先例同款双态〕+ C 区常驻角标〔空态整节隐藏=奖励段先例,摆位 provisional〕+ 帮助手册一行〔零交互教学〕);验收标准补三层预告线(普通图恒空态零打扰);数据面走呈现快照 board_variants 投影(核心→呈现唯一读取面)。语义正主=地形变异.md §全局作用域型,本文只锁呈现承载 | | v0.14 | 2026-10-03 | **视野迷雾实施批落籍注记(迭代 11 第④批)**:迷雾节补「实施状态」注记(四裁决逐条对账:纯呈现两态逐位一致/暗淡记忆态灰显可读/LIGHT_RADIUS=8 参数化〔提灯 +2 插值位预留未接〕/类型微光仍贴身 8 邻格);实装状态行「待实施批」改「已实装」;验收标准迷雾行去「待实施批落地后验收」括注转正式验收。机制定义零改动(定义一句话/作用范围/生命周期/关联边界/配套拍板全段原样);黑暗区域渲染规格落 art-bible §6.5(v3.5) | | v0.13 | 2026-09-30 | **视野迷雾概念落位批(用户拍板立项)**:新增「视野迷雾」节=正主定义(菱形灯光区+黑暗边界;区外已开格=暗淡记忆态灰显可读、区外未开格=全黑;灯光半径起步=微光环 8 格同圈;纯呈现层,与已退役雾格无关);验收标准补迷雾线;配套拍板随节登记(魔法提灯灯甲外扩 +2 格、类型微光不随视野扩、初始展开收窄后置 Alpha 差异化批)。实施待主线编卡 | diff --git a/design/gdd/ux/battle.md b/design/gdd/ux/battle.md index 9cdfd734..e3ec276a 100644 --- a/design/gdd/ux/battle.md +++ b/design/gdd/ux/battle.md @@ -105,7 +105,7 @@ - 攻击值 + 修正来源角标(战斗在消费、且站桩上无展示) - 护甲 AC(2026-09-26 二轮拍板补入——我方 AC 的唯一展示面;掷点判定轴,受击侧可读性) - 魔法道具槽(**已实装**:四槽两步交互,详见 [node-reward.md](node-reward.md)——随身战斗用道具的唯一展示面) - - 特性列表(**预留**——锻造/大奖励/关卡奖励节点获得的属性提升;与战斗内状态效果分区呈现,防「战斗结束被清」误读) + - 奖励列表(**预留**——锻造/大奖励/关卡奖励节点获得的属性提升;与战斗内状态效果分区呈现,防「战斗结束被清」误读) - **D 区扫雷图 · AP 条** - AP 点阵 + 停手按钮(现行) - **RAP 读数(点阵+数字)**——自 C 区迁入,置于弃图刷新按钮旁(2026-09-26 拍板:RAP 唯一消费口 = 弃图刷新,资源数字贴消费按钮) @@ -120,7 +120,7 @@ | 区 | 位置与尺寸 | 内容 | |---|---|---| | **B 战斗画面** | 全宽 × 252px | 主角站桩立绘(左)+ 兑现演出区(中)+ 敌人站桩立绘 ×1–3(右)——**全站桩形态(2026-09-20 用户拍板,敌人卡形态待办裁决收口):主角与敌人均为无框立绘+底座,零卡片**;主角与敌人站桩 = **HP 与状态效果的唯一展示面(2026-09-26 信息归属拍板)**;底部结算明细带(24px 摘要 / 结算期 84px 实时流);顶部中央轮次·阶段指示 | -| **C 角色信息** | 左下 240px × 548px | 攻击值(含修正显示)、护甲 AC;魔法道具槽(预留)、特性列表(预留)——HP 条/RAP 池/状态效果槽/立绘占位/钱包行退役(2026-09-26 信息归属拍板:HP 与状态唯一展示面 = B 区站桩;RAP 迁 D 区 AP 条;GP/钥石迁出战斗屏) | +| **C 角色信息** | 左下 240px × 548px | 攻击值(含修正显示)、护甲 AC;魔法道具槽(预留)、奖励列表(预留)——HP 条/RAP 池/状态效果槽/立绘占位/钱包行退役(2026-09-26 信息归属拍板:HP 与状态唯一展示面 = B 区站桩;RAP 迁 D 区 AP 条;GP/钥石迁出战斗屏) | | **D 扫雷图** | 中下 ~1036px × 548px(原右下面板删除后横向加宽,吸收其宽度) | 顶部 AP 条(44px:左——AP 点阵 + 停手按钮;中——RAP 点阵+数字〔自 C 区迁入,贴弃图刷新按钮,2026-09-26 拍板〕;右——图例按钮 + 弃图刷新按钮〔雷图右上角,2026-09-12 拍板〕);棋盘主体(居中,格 36–45px 见方);toast 槽(上缘内侧) | > 布局为 B/C/D 三区——关卡进度条不在战斗屏(节点链进度常驻关卡画面,见 Navigation Position;字母不重编沿用 B/C/D)。 @@ -147,7 +147,7 @@ | B | 结算明细回看 | 模态 overlay | 完整流水逐行(现行 9 类行协议;未生效类行聚合计数) | 关闭 | battle_log_view.gd 改造 | | C | 攻击数据框 | 直角细线数据框 | 攻击值 + 修正来源角标 + 护甲 AC(AC 二轮拍板 2026-09-26 补入——我方 AC 唯一展示面;原「HP/攻击/RAP 显示」——HP 与 RAP 随信息归属拍板迁出本组件) | 只读 | HUDView 拆分 | | C | 魔法道具槽(已实装:四槽两步交互,详见 [node-reward.md](node-reward.md)) | 图标槽 ×4 | 随身战斗用道具的唯一展示面;库存已随迭代 7 落地(C 区四槽+关卡域库存),清库反馈呈现待批 | 悬停 tooltip(道具语义) | 新建(随魔法道具批,已落地) | -| C | 特性列表(预留) | 列表/图标行 | 锻造/大奖励/关卡奖励节点获得的属性提升——中循环数据,因改变战斗数学且无其他展示面准入战斗屏;与战斗内状态效果(B 区站桩)分区,防「战斗结束被清」误读 | 只读 | 新建 | +| C | 奖励列表(预留) | 列表/图标行 | 锻造/大奖励/关卡奖励节点获得的属性提升——中循环数据,因改变战斗数学且无其他展示面准入战斗屏;与战斗内状态效果(B 区站桩)分区,防「战斗结束被清」误读 | 只读 | 新建 | | D | AP 条 | 点阵 + 按钮组 | 本轮 AP 点阵、停手按钮(左)、**RAP 点阵+数字(自 C 区迁入 2026-09-26——RAP 唯一消费口 = 弃图刷新,资源数字贴消费按钮;RAP 清零可见反馈〔行动经济〕载体随迁)**、弃图刷新按钮(右端·雷图右上角;RAP−8 · 本轮剩 N 次——上限 2 次已随行动经济 2026-09-12 修订生效) | 点击提交意图 | HUDView 拆分 | | D | BoardView | 网格 | 棋盘全部格态 + 小人 + 旗 + 变异纹带 + 奖励身份 icon(已开格;绘制优先级 数字>小人>旗>奖励徽章>变异纹带>底色——徽章不进数字区,样张验收项) | 左/右键意图提交 | ✅ board_view.gd 迁移 | | D | 悬停预承诺光标 | 光标态 | 移动/挖/旗三语义光标 + 目标格边框高亮 | 自动 | 新建(排雷玩法×6③) | @@ -204,7 +204,7 @@ │ │ 魔法道具槽(预留) │ │ │ │AP不足·剩0点 │ 12 12 1 ░ 2 ▓▓ ▓▓ │ │ │ │ ◇ ◇ ◇ ◇ │ │ │ └──────────────────┘ 12 █ 1 1 2 ▓▓ ▓▓ │ │ │ ├──────────────────┤ │ │ 1 2 2 🚩 █ 2 1 1 ▓▓ 👫 1 1 ░ │ │ -│ │ 特性列表(预留) │ │ │ ░ 1 ▓▓ 👫 1 1 ░ ▓▓ 1 1 ░ ░ 2 │ │ +│ │ 奖励列表(预留) │ │ │ ░ 1 ▓▓ 👫 1 1 ░ ▓▓ 1 1 ░ ░ 2 │ │ │ │ 锻造+2攻 │ │ │ ▓▓ 1 1 ░ ░ 2 ▓▓ │ │ │ │ (空态=隐藏) │ │ │ ( █=可挖域微光 👫=小人) │ │ │ └──────────────────┘ │ └─────────────────────────────────────────────────┘ │ @@ -440,7 +440,7 @@ | 2026-09-23 | 实现注记(棋盘 Node2D 迁移批 Phase A,代码实装同批;上位裁决 ADR-0006):棋盘渲染 Node2D 化(BoardView = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界,信号/click_cell/_cells 契约保持,新增 push_input 端到端输入探针);格尺寸公式锚点不变(set_cell_area = floor((min(宽,高) − 预留 − (N−1)×格间距) / N) 单点可调),布局与交互语义零改动 | | 2026-09-26 | 实现注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗画面 Node2D 化(BattleStageView = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界,站桩本体 StandeeBody 世界精灵;set_enemies/clear_enemies/on_step_row_fx/gray_all_enemies 等 setter 面签名保持,弹道落点锚点=壳层口径 world_to_shell 单点);状态图标行与悬停 tooltip 保留 Control 载体挂壳层;三区布局尺寸零改动(B 区外框 252px 逐位) | | 2026-09-26 | **封印紫批**(用户拍板):插旗呈现色 旗朱 #C63D22 → 封印紫 #7C3AA8(色相 ≈267°,避开禁入带)——旗字形/已承诺封印框/旗化暴击弹道随批换色;拒绝边框闪语义归危险红;Boss 节点描边归紫赤本色。修订记录历史行旗朱字样系当时口径留痕不改 | -| 2026-09-26 | **战斗屏信息归属批(用户 2026-09-26 三轮纠偏后拍板;代码实装另批——hero_info_panel_view.gd / hud_presenter.gd 改造 + 探针断言迁移,登记待办)**:立两条信息归属原则并全屏贯行——①循环口径原则(战斗屏只展小循环内被消费、影响当下决策的数据;中/大循环资源不得入侵)②单一展示面原则(同一信息全屏唯一展示面;单位本体已承载的信息数据框不重复;资源数字贴唯一消费口)。随拍板落地:① B 区站桩 = HP 与状态效果唯一展示面——C 区 HP 条/HP 文字/立绘占位/状态效果槽×4 退役(重复展示;证据链 = hud_presenter.gd 同一 s.hero.hp/s.hero_effects 双投喂 B/C 两区);② RAP 读数(点阵+数字)迁 D 区 AP 条、置弃图刷新按钮旁(RAP 唯一消费口 = 弃图刷新——就近原则);③ C 区状态槽悬停 tooltip 职责并入 B 区站桩状态小图标;④ GP(中循环)/钥石(大循环)迁出战斗屏,去向挂 OQ14;⑤ C 区改「攻击数据框 + 魔法道具槽(预留)+ 特性列表(预留)」——预留区来自魔法道具与关卡内属性提升的既有立项;⑥ 空态/清零反馈/悬停交互/AC/§13 义务表载体同步改写。**批内遗留两项待拍板(OQ13/14)**:护甲 AC 是否补入 C 区数据框;GP/钥石去向 | +| 2026-09-26 | **战斗屏信息归属批(用户 2026-09-26 三轮纠偏后拍板;代码实装另批——hero_info_panel_view.gd / hud_presenter.gd 改造 + 探针断言迁移,登记待办)**:立两条信息归属原则并全屏贯行——①循环口径原则(战斗屏只展小循环内被消费、影响当下决策的数据;中/大循环资源不得入侵)②单一展示面原则(同一信息全屏唯一展示面;单位本体已承载的信息数据框不重复;资源数字贴唯一消费口)。随拍板落地:① B 区站桩 = HP 与状态效果唯一展示面——C 区 HP 条/HP 文字/立绘占位/状态效果槽×4 退役(重复展示;证据链 = hud_presenter.gd 同一 s.hero.hp/s.hero_effects 双投喂 B/C 两区);② RAP 读数(点阵+数字)迁 D 区 AP 条、置弃图刷新按钮旁(RAP 唯一消费口 = 弃图刷新——就近原则);③ C 区状态槽悬停 tooltip 职责并入 B 区站桩状态小图标;④ GP(中循环)/钥石(大循环)迁出战斗屏,去向挂 OQ14;⑤ C 区改「攻击数据框 + 魔法道具槽(预留)+ 奖励列表(预留)」——预留区来自魔法道具与关卡内属性提升的既有立项;⑥ 空态/清零反馈/悬停交互/AC/§13 义务表载体同步改写。**批内遗留两项待拍板(OQ13/14)**:护甲 AC 是否补入 C 区数据框;GP/钥石去向 | | 2026-09-26 | **信息归属二轮拍板(用户 2026-09-26,OQ13/14 收口)**:① 我方护甲 AC 补入 C 区攻击数据框(唯一展示面——布局表/组件清单/线框图同步);② GP/钥石去向定案:GP = 关卡画面常驻总量 + 战斗结算画面总量+增量,钥石 = 结算画面 + 营地(具体呈现归对应 UX spec 批次);③ 敌方 AC 展示面挂起——用户口径「敌方 AC 无任何展示」与现行代码冲突(standee_view.gd 底库名字行渲染「名字·护甲·AC%d」,系敌人技能池批克制对策可读性义务),证据链已呈报待终裁,本 spec 暂不改敌人站桩行 | | 2026-09-26 | **敌方 AC 展示终裁收口(用户 2026-09-26 终裁)**:敌方 AC 数值全屏退役(任何区不直接展示)、护甲类型改图标方式展示(形状+色相双通道,终稿图标资产归美术批)、敌人站桩底座下名字行退回纯名字+护甲类型图标;旧「克制对策可读性义务」降级承载——类型保留、数值退役。终裁理由(用户口径):HP 信息已足够,攻防数值不直接写上;护甲类型图标保留克制对策可读性。同步改写:信息归属树敌人站桩行、Component Inventory 敌人站桩立绘行、OQ13。**代码实装说明**:`standee_view.gd` 改造(站桩名字行去 AC 数值 + 护甲类型图标化)由并行代码批执行,本批只做文档同步 | | 2026-09-27 | **UX 文档欠账处置批(用户四项拍板:player-journey 不建 / accessibility 不另立改指 HUD框架 / node-reward 改挂魔法道具内容重定批 / level-clear 建档 design/gdd/ux/level-clear.md)**:① 删 §Player Context ⚠️ player-journey 未建注记,OQ1 改收口注记;② §Accessibility 头、§Transitions 减动效行、OQ2 改指 HUD框架「可访问性基线」节 + 设置与本地化待设计清单 #1(tools/doc_link_known.txt 欠账行随之清空);③ 导航残留修正——§Navigation Position 图胜利分支、§Entry/Exit 离开表、§Interaction Map 胜利 overlay 行改按现行代码实态(胜利后返回关卡画面选路;节点覆盖层 = 关卡画面域、落地奖励/恢复节点时开出;胜利/失败 overlay 组件锚 battle_end_overlay.gd)——原「胜利 → 节点奖励/恢复覆盖层」系停点前移批前残留;④ OQ3 过期陈述更正(interaction-patterns.md 2026-09-12 已建成)、OQ8 改收口注记。本批只动文档面,代码零改动 | diff --git a/design/gdd/ux/level-map.md b/design/gdd/ux/level-map.md index 972bf000..43811eb7 100644 --- a/design/gdd/ux/level-map.md +++ b/design/gdd/ux/level-map.md @@ -91,7 +91,7 @@ **布局决策 3 —— 放弃冒险二次确认(2026-09-27 拍板)**:放弃 = 整局冒险终结,不可逆(pattern 7 破坏性确认)。首击转入确认态(按钮文案变「再点一次确认放弃——不可逆」,危险红边框脉冲约 3 秒,超时回落),二击才提交。代价语义(已获大奖励保留、同失败结算)常驻按钮文案。 -**布局决策 4 —— 底部状态栏(2026-09-27 拍板,原提案为顶栏 HP 读数)**:底栏作为状态展示——生命、属性、本关已选加成三项常读;顶栏保持关卡名 + GP 两件。单一展示面注记:与 [battle.md](battle.md) C 区「特性列表(预留)」为不同屏的不同展示面——两屏循环口径各自独立(选路规划消费 vs 战斗内决策消费),不构成同屏重复。 +**布局决策 4 —— 底部状态栏(2026-09-27 拍板,原提案为顶栏 HP 读数)**:底栏作为状态展示——生命、属性、本关已选加成三项常读;顶栏保持关卡名 + GP 两件。单一展示面注记:与 [battle.md](battle.md) C 区「奖励列表(预留)」为不同屏的不同展示面——两屏循环口径各自独立(选路规划消费 vs 战斗内决策消费),不构成同屏重复。 ### ASCII Wireframe diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 40a70f08..104043a3 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -574,19 +574,20 @@ entities: mvp_content: L1 全行(切片转正——7 节点链〔单链特例,合法图形态〕、rest_heal_pct=30);L2 全行已落地(2026-09-17 分支节点图批——首张分支图:9 节点〔入口 0 → 中间三层 2/3/2 → Boss 8〕、真实岔路 4 处、奖励点+恢复点各 1、战斗节点 6 + Boss;行值 provisional 归 难度曲线与Boss v0.7;首页直入口已退役〔2026-09-23 用户拍板〕);**L3 全行已落地(2026-09-20 第三关内容批——「第三层 · 灰矮人矿城」:九节点图复用 L2 同模板〔6 战 + Boss + 奖励 + 恢复、真实岔路 4 处〕,行值全 provisional 归 难度曲线与Boss;测试直入口已退役〔2026-09-23〕)**;2026-09-20 GP+商店房批 rewiring:L2/L3 图版 Boss 重编号 8→9、各新增 (8, shop, next[9]) 商店房节点(Boss 前一位必经位),L1 零改动,图合法性六检零新增——必经位由冒烟断言承载;**2026-09-21 冒险结构实现批:三关正式序列生效**(首页「开始冒险」= L1→L2→L3 连探,AdventureRunner 编排——大奖励/生命账本/GP 冒险账本/主种子归冒险结构层,冒烟断言在案)** referenced_by: [冒险结构, 关卡节点地图, 难度曲线与Boss, 棋盘生成, 数据配置] - - name: feature + - name: reward type: concept - owner: design/gdd/systems/冒险循环/特性.md + owner: design/gdd/systems/冒险循环/奖励.md attributes: - definition: 一次冒险之内角色自身得到的提升。它不是持有物——带在自己身上的是特性,拿在手里的是魔法道具;两者由此分开 - categories: 封闭两类 {属性提升 ASI, 专长 Feat}(v1.1 起;v1.0 曾用 {rule, stat} 形态枚举,已作废)。属性提升——抬角色某项基础值或给他多一次选择的机会,内分纯属性组〔生命上限 / AC / 攻击〕与特殊组〔行动点上限 / 刷新次数 / 专长获取〕,落冒险加算区与钱包;专长——在结算管线的某个挂点上给自己加一条规则,同标签持有项数达阈值时质变。两者同属一个对象、共用一份持有集与一份生命周期,是分类而非两个系统 - scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,跨关携带、关间不清零;归属范围 = 不进账号永久进度,不带到下一次冒险 - lifecycle: 候选池构建(冒险开局一次)→ 在获取口出现(三选一形式)→ 选定(自池中剔除不再复现;选到「专长获取」时立刻再开一次专长三选一,不占原本获取口)→ 持有生效(跨关携带)→ 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 - acquisition: 三条渠道的**目标分工**——专长走关底 Boss 击败后(专属三选一、时机确定;**不新增节点类型**,挂在 Boss 节点兑付面上);属性提升走奖励节点(每关通关一次,最终关不给)与商店(花局内金币,口径为「训练」)。罕见旁路:属性提升的通用渠道里嵌一个罕见且全局限量的「专长获取」项,拿到立刻开一次专长 N 选一。**现行实现三渠道共用同一候选池、两类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 - boundary: 特性永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 - data_sources: relics.tres(专长逐项定义)/ adventure.tres(属性提升种类配额与值)/ shop.tres(货架取舍) - open_questions: ①gp(金币袋)与 heal(恢复)两项现行在属性提升池内,但都不进持有集、不持续生效、**没有生命周期**,按「自身得到提升」的定义是否仍属本类待拍板(甲案移出另立「即时兑付」类、乙案放宽定义;动池须重裁档位结构锚);②刷新次数可同时出现在奖励节点与商店两个渠道——这是渠道白名单问题,不产生第三个分类;③最终关 Boss 后是否也兑付专长待确认;④确定性渠道一局两次专长 vs 档位阈值(同标签 2 件档一 / 4 件档二)是否匹配,归曲线调参批观察 - naming_note: 2026-10-05 命名统一 + 分类重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),现统一为「特性」,需要区分时用「属性提升 / 专长」描述,不另造称呼 + definition: 一次冒险之内通过各渠道给予玩家的增益总称——奖励节点给的、商店买的、打赢关底 Boss 给的,都是奖励。装的是"这一局你捞到了什么",不管从哪个渠道来 + axes: 两根互不决定的轴——**分类轴**(给的是什么)与**渠道轴**(从哪来)。一个奖励属于哪个分类不决定它从哪个渠道来;交叉关系由 [奖励](design/gdd/systems/冒险循环/奖励.md) 第 2 节开关表定死 + categories: 封闭三类 {机制类, 属性提升类, 资源与机会类}(v2.0 起;v1.1 曾用两类、v1.0 曾用 {rule, stat},均已作废)。机制类(专长 Feat)——在结算管线某个挂点上给自己加一条规则,同标签持有项数达阈值时质变,事实源 relics.tres;属性提升类(ASI)——抬高生命上限 / AC / 攻击三轴基础值,进冒险加算区,事实源 adventure.tres;资源与机会类(命名待定)——给"可用的量",不抬高战斗属性也不改规则:行动点上限 / 刷新次数 / 金币 / 回复,不进加算区、多数不进持有集,事实源 adventure.tres + scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,机制类与属性提升类跨关携带、关间不清零,金币与回复即时兑付;归属范围 = 不进账号永久进度,不带到下一次冒险 + lifecycle: 候选池构建(冒险开局一次)→ 在渠道上出现(三选一形式)→ 选定(自池中剔除不再复现;选到「专长获取」时立刻再开一次专长 N 选一)→ 持有生效或即时兑付 → 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 + acquisition: 三条渠道的**目标分工(交叉开关)**——机制类:主渠道=关底 Boss 击败后(不新增节点类型,挂 Boss 节点兑付面),罕见旁路=奖励节点/商店的「专长获取」,商店不出现;属性提升类:奖励节点 + 商店(口径「训练」);资源与机会类:奖励节点 + 商店;Boss 击败后是否也出后两类=待定。**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 + boundary: 判据走生命周期——**一次冒险内获得、冒险收束即清零的是奖励;跨冒险跟着你走的是魔法道具**。奖励永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 + data_sources: relics.tres(机制类定义行)/ adventure.tres(属性提升类与资源与机会类的种类配额与值)/ shop.tres(货架取舍) + open_questions: ①资源与机会类的命名待定(候选 资源 / 补给 / 余量),回复是否属该类待确认;②类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同;③最终关 Boss 后是否也兑付专长待确认;④确定性渠道一局两次专长 vs 档位阈值(同标签 2 件档一 / 4 件档二)是否匹配,归曲线调参批观察;⑤Boss 击败后是否也出属性提升类与资源与机会类 + naming_note: 2026-10-05 命名统一 + 两次重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),v1.0 统一为「特性」,v2.0 改名为「奖励」(因筐里也装金币这类一次性兑付物,"自身提升 vs 持有物"已切不开,判据改由生命周期承担)。代码侧 `feature_*` 词族尚未随之换到 `reward_*`,属临时态,登记于 06-待办清单 referenced_by: [冒险结构, 关卡节点地图, 战斗结算, 行动经济, 地形变异, HUD框架, 魔法道具, 元进度, 数据配置] - name: adventure_table @@ -597,8 +598,8 @@ entities: fields: | 退役两字段(迭代 10 奖励重构批,2026-09-30 用户拍板):level_clear_hp_bonus(「血回满+上限提升」件随大奖励三件套退役——回血改 clear_heal_pct 部分回血、上限提升改三选一件值列)、keystone_per_level(钥石退役出大奖励改 Boss/精英击杀掉落)。 clear_heal_pct: int [0,100](knob 默认 20——非末关通关部分回血回复生效上限的百分比,封顶上限不回满、满血回 0 合法;难度上压方向,带重扫义务归 难度曲线与Boss) - **2026-10-05 命名统一批**:本表的属性加成型特性字段与常量整体换名(旧 → 新)——BONUS_IDS → FEATURE_KINDS、bonus_token_count() → feature_quota()、bonus_value() → feature_value()、bonus_candidate_count → feature_candidate_count、token_{kind}_{tier} → feature_quota_{kind}_{tier}、bonus_*_flat/_amount(_large) → feature_value_{kind}_{tier};值零变更(句柄改称不改数),断点附随键名沿用历史形态不动(存档兼容)。换名动因见 特性 条目。 - feature_value_attack_common / feature_value_max_hp_common / feature_value_armor_common: int [0,999](三选一属性加成型特性兑付值——加算区攻击/生命上限/护甲轴累加,经覆盖值通道;值锚与上调约束归 难度曲线与Boss) + **2026-10-05 命名统一批**:本表的属性提升类奖励字段与常量整体换名(旧 → 新)——BONUS_IDS → FEATURE_KINDS、bonus_token_count() → feature_quota()、bonus_value() → feature_value()、bonus_candidate_count → feature_candidate_count、token_{kind}_{tier} → feature_quota_{kind}_{tier}、bonus_*_flat/_amount(_large) → feature_value_{kind}_{tier};值零变更(句柄改称不改数),断点附随键名沿用历史形态不动(存档兼容)。换名动因见 reward 条目(v2.0 顶层改名为「奖励」)。 + feature_value_attack_common / feature_value_max_hp_common / feature_value_armor_common: int [0,999](三选一属性提升类奖励兑付值——加算区攻击/生命上限/护甲轴累加,经覆盖值通道;值锚与上调约束归 难度曲线与Boss) feature_value_gp_common: int [0,999](GP 袋件定额入钱包);feature_value_ap_rarest: int [0,10](AP 件每场战斗首轮行动点基线增量);bonus_aux_item_count: int [1,9](魔法道具件授予件数) ~~bonus_weight_*(E-S 加权洗牌权重族)~~ / ~~bonus_cap_*(种类次数上限族)~~:**v2.2 令牌池换代退役(迭代 12 TP0——2026-10-03 追认 b 实施批;洗牌改令牌 Fisher-Yates、池消耗即上限)** feature_quota_{kind}_{tier}: int [0,99](**TP0 令牌配额族**——kind×tier 计数:attack 18/5 · max_hp 17/5 · armor 17/5 · gp 18/5 · heal 0/5 · ap 0/0/3〔common/rare/rarest〕;未列组合=0;档位结构锚 70/25/3=98 张入 schema validate 硬断言〔罕见档原列「道具件 2」随 aux_item 池种退役收窄——台账自决披露项〕) diff --git a/game/data/schemas/adventure_table.gd b/game/data/schemas/adventure_table.gd index 544263e0..35a015a1 100644 --- a/game/data/schemas/adventure_table.gd +++ b/game/data/schemas/adventure_table.gd @@ -13,13 +13,15 @@ class_name AdventureTable extends Resource -## 概念指路:本表的属性提升,与 relics.tres 的专长,同属一个对象—— -## 「特性」(一次冒险内角色自身得到的提升)。定义见 design/gdd/systems/冒险循环/特性.md。 -## 两者是它的两个分类(属性提升 ASI / 专长 Feat),不是两个系统;本表承载「属性提升」类的种类配额与件值。 -## (2026-10-05 命名统一:旧称「数值件」→ 属性提升;常量与字段随之前缀 feature_*。 -## 2026-10-05 分类重构:属性提升内部分纯属性组〔生命上限 / AC / 攻击〕与特殊组 -## 〔行动点上限 / 刷新次数 / 专长获取〕;刷新次数与专长获取两项尚未入表——见 06-待办清单。 -## gp 与 heal 两项是否仍属本类待拍板,见特性文档「待办」节。) +## 概念指路:本表的属性提升类与资源与机会类,与 relics.tres 的机制类,同属一个对象—— +## 「奖励」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奖励.md。 +## 它们是它的分类轴上的枚举(机制类 / 属性提升类 / 资源与机会类),不是三套系统; +## 本表承载属性提升类与资源与机会类的种类配额与件值。 +## (2026-10-05 命名统一 + v2.0 改名:旧称「数值件」→ 属性提升;顶层「特性」→「奖励」。 +## 常量与字段随之前缀 feature_*,**尚未**随顶层改名换到 reward_*——见 06-待办清单。 +## 分类轴三个枚举:属性提升类〔生命上限 / AC / 攻击〕;资源与机会类〔行动点上限 / +## 刷新次数 / 金币 / 回复,命名待定〕——本表两类混编;刷新次数与专长获取两项尚未入表。 +## 类内异质性:金币与回复是即时兑付,不进持有集、不持续生效。) ## 三选一提升池 kind 词表(封闭——断点附随件与牌库剔除态依赖它;扩件走本表+registry 修订)。 ## aux_item 池种退役(迭代 11 第①批 T7——同调批出池);heal 恢复件新入池(v2.2 令牌池追认 b)。 const FEATURE_KINDS: Array[String] = ["attack", "max_hp", "armor", "gp", "ap", "heal"] diff --git a/game/data/schemas/relic_table.gd b/game/data/schemas/relic_table.gd index cadf3a03..9f18ea30 100644 --- a/game/data/schemas/relic_table.gd +++ b/game/data/schemas/relic_table.gd @@ -2,13 +2,13 @@ # Validation Question: 七核心流派各 ≥3 件入局内随机渠道后,标签+档位激活引擎能否机械判「成型」、 # 专长带能否挂进令牌池稀有/罕见档随机投放(P0——迭代 12 双层 BD 实施批 T1) # Date: 2026-10-04(双层 BD 实施批 T1——任务书五裁定稿;设计权威 双层BD体系-整合定稿-2026-10-03 v3) -# 概念指路:本表的专长,与 adventure.tres 的属性提升,同属一个对象—— -# 「特性」(一次冒险内角色自身得到的提升)。定义见 design/gdd/systems/冒险循环/特性.md。 -# 两者是它的两个分类(专长 Feat / 属性提升 ASI),不是两个系统;本表承载「专长」类的逐项定义。 -# (2026-10-05 命名统一 + 分类重构:旧称「流派件」→「规则改写型特性」→ 现定名「专长」; +# 概念指路:本表的机制类(专长),与 adventure.tres 的属性提升类、资源与机会类,同属一个对象—— +# 「奖励」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奖励.md。 +# 它们是它分类轴上的枚举(机制类 / 属性提升类 / 资源与机会类),不是三套系统;本表承载「机制类」(专长 Feat)的逐项定义。 +# (2026-10-05 命名统一 + 分类重构:旧称「流派件」→「规则改写型特性」→ 现定名「机制类(专长)」; # 表名与 relic_id 沿用历史命名,与统一词族对齐归后续批次——见 06-待办清单「命名统一」条目。 -# 目标渠道:专长走关底 Boss 击败后专属三选一(不新增节点类型),见特性文档 4.1 节。) -# 数据配置 RelicTable schema(特性·专长定义表;行 = Dictionary 键 relic_id,Rule 4 豁免 +# 目标渠道:专长走关底 Boss 击败后专属三选一(不新增节点类型),见奖励文档 2.1 节。) +# 数据配置 RelicTable schema(奖励·机制类定义表;行 = Dictionary 键 relic_id,Rule 4 豁免 # 定义表——AuxItemTable 先例)。 # 行字段:relic_id 主键 / display_name / rarity ∈ {common, rare, rarest}(对齐令牌池三档命名—— # 投放档映射:common/rare→稀有令牌档、rarest→罕见令牌档;relic 令牌永不入普通档=「挂稀有/罕见档」 From d472ef061f70705f6e6fbbb52849a0afa00375ba Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 03:21:56 +0800 Subject: [PATCH 04/15] =?UTF-8?q?=E5=A5=96=E5=8A=B1=20v2.1=EF=BC=9A?= =?UTF-8?q?=E4=BA=A4=E5=8F=89=E8=A1=A8=E6=94=B6=E5=8F=A3=20+=20=E8=AE=A1?= =?UTF-8?q?=E4=BB=B7=E7=89=A9=E4=B8=8D=E8=87=AA=E5=94=AE=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 一、Boss 渠道收口(用户拍板) - Boss 渠道**只出专长**:属性提升类与资源与机会类在此均不出现 - 兑付只发生在**终局前**的 Boss;终局 Boss 不给(打赢时冒险已结束, 无后续关卡可消费)——此前"最终关是否也给"的待定项由此收口 - 交叉表形状定为「一块独占 + 两块并行」:专长靠打赢,其余靠抽取与购买, 两者的获取节奏由完全不同的机制决定 二、金币不进商店:写成规则,不拆分类也不开特例(用户提问) 用户问"资源与机会是否拆开?GP 是单独分类还是特判"。定为第三条路: **计价物不自售**——凡是以某渠道的计价物为内容的奖励,不进该渠道货架。 商店计价物=GP,故 GP 不进商店。 - 不拆第四个分类:分类轴回答"给的是什么",GP 给的是余量,与 AP/刷新 同类;按"能不能进商店"反推分类=用渠道轴去切分类轴,两根轴缠回去 - 不开特例:特例是孤立的、靠记忆维护的;规则对所有渠道成立,将来 任何渠道用自己的计价物当奖励内容时自动适用,不需补第二个特例 - 它是**两轴交叉处的一条约束**,实现上是货架候选构建的过滤条件, 不是奖励自身的属性 三、待确认 - 回复当前也不在商店货架(现行 shop.tres 货架只有攻击/生命上限/护甲/ 行动点四项)。回复不是计价物,严格说不适用于「计价物不自售」—— 它不进商店是同一条规则管还是另有口径,待拍板 - 专长总量:终局 Boss 不给已定,一局确定性兑付次数=终局前 Boss 个数 (三关=两次),而档位阈值是同标签 2 件档一 / 4 件档二,档二须靠 罕见旁路补齐——归曲线调参批观察 同步:06-待办清单(BD 分层条目改写为交叉表 + 待拍板项由四项减为两项)、 entities.yaml(acquisition 收口 + 新增 channel_rule + open_questions 去重)、 02-系统清单 v1.6。验收标准补第 9 条(金币不进商店是规则结果而非分类)。 数据层数值零变更;未 merge 回 master(本会话零测试)。 --- design/gdd/02-系统清单.md | 1 + design/gdd/06-待办清单.md | 18 ++++++++++--- design/gdd/systems/冒险循环/奖励.md | 39 +++++++++++++++++++++-------- design/registry/entities.yaml | 5 ++-- 4 files changed, 47 insertions(+), 16 deletions(-) diff --git a/design/gdd/02-系统清单.md b/design/gdd/02-系统清单.md index e8dec1a8..96c526bf 100644 --- a/design/gdd/02-系统清单.md +++ b/design/gdd/02-系统清单.md @@ -131,3 +131,4 @@ | v1.3 | 2026-10-05 | 立《特性》:一次冒险内角色自身得到的提升——此前按内部分类被叫成三个名字(规则类称"流派件"、属性类称"数值件"、界面称"本关强化"),现收敛为一个对象的两种形态枚举;文档树冒险循环补行 + 命名对照表补 `ADVENTURE_FEATURE` 行 | | v1.4 | 2026-10-05 | 《特性》v1.1 分类重构:两类由"规则改写型 / 属性加成型"改为"属性提升(ASI)/ 专长(Feat)",属性提升内部再分纯属性组与特殊组;获取途径由两口共用池改为三条分工渠道(专长走特定节点、属性提升走奖励节点与商店)+罕见旁路"专长获取" | | v1.5 | 2026-10-05 | 《特性》改名为《奖励》并升 v2.0:顶层概念改为"一次冒险内各渠道给予玩家的增益总称",边界判据由"自身提升 vs 持有物"改为生命周期(当局清零的是奖励,跨局带走的是魔法道具);分类由两类扩为三个枚举(机制类 / 属性提升类 / 资源与机会类),并新增分类 × 渠道交叉开关表——两根轴互不决定。文档树冒险循环行改名 + 命名对照表 `ADVENTURE_FEATURE` → `ADVENTURE_REWARD` | +| v1.6 | 2026-10-05 | 《奖励》v2.1 交叉表收口:Boss 渠道只出专长(终局 Boss 不给),另两类在此不出现;新增「计价物不自售」规则处理金币不进商店——不拆第四个分类、不开特例,而是两轴交叉处的一条约束 | diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index af870bd1..bf116925 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -29,17 +29,27 @@ **现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **奖励**(2026-10-05 定名,v2.0 由「特性」改名,定义见 [奖励](systems/冒险循环/奖励.md)),下分**三个枚举分类**:**机制类**(专长——改规则、带流派标签与档位激活,构筑核心)、**属性提升类**(生命/AC/攻击三轴,写统一加算区;账本实为冒险域、关间不清零)、**资源与机会类**(行动点上限·刷新次数·金币·回复——给"可用的量",命名待定)。旧称「流派件 / 数值件 / 本关强化」一律作废;v1.0 的「规则改写型 / 属性加成型」与 v1.1 的两分类亦作废。现行三个分类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),机制类只占稀有/罕见档(与属性大件混编),商店仅「货架零专长挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 -**用户定案(2026-10-05)**:分类 × 渠道交叉开关表——**机制类**(专长)主渠道=关底 Boss 击败后(专属三选一,时机确定,构筑节奏可预期),罕见旁路=奖励节点/商店里小概率冒出的「专长获取」,商店不出现;**属性提升类**=奖励节点 + 商店(口径「训练」);**资源与机会类**=奖励节点 + 商店;Boss 击败后是否也出这两类=待定。用户原话:"我在获取特性的时候,可以有些比较罕见的道具,让我立马得到一个专长,就给它一点不确定性,一点随机性"。**确定性优先**:专长不因没 roll 到就构筑不起来。用户同时明确:先定大意念再分小类,渠道与分类是两根互不决定的轴。 +**用户定案(2026-10-05,v2.1 收口)**:分类 × 渠道交叉开关表—— + +| 分类 \ 渠道 | 奖励节点 | 商店 | 终局前 Boss 击败后 | +|---|---|---|---| +| 机制类(专长) | 罕见旁路 | 不出现 | **主渠道(独占)** | +| 属性提升类 | 出 | 出(训练) | 不出现 | +| 资源与机会类 | 出 | 出(金币除外) | 不出现 | + +**Boss 渠道是专长的独占渠道**——只出机制类,另两类都不走这里;奖励节点与商店是属性提升类与资源与机会类的两个并行出口。形状是"一块独占 + 两块并行",不是三块平分。**终局 Boss 不给**(打赢时冒险已结束,无后续关卡可消费),兑付只发生在终局之前的 Boss。用户原话:"我在获取特性的时候,可以有些比较罕见的道具,让我立马得到一个专长,就给它一点不确定性,一点随机性"。**确定性优先**:专长不因没 roll 到就构筑不起来。用户同时明确:先定大意念再分小类,渠道与分类是两根互不决定的轴。 原四备选(① 专长专属三选一 ② 行为条件投放 ③ 计步保底 ④ 双池分离)已被上述定案覆盖——定案≈备选①的确定性路线,余三备选不再单独推进。**节点类型不扩类**:机制类挂在 Boss 节点兑付面上(击败后追加一次专长三选一),[关卡节点地图](systems/冒险循环/关卡节点地图.md) 的节点类型仍为封闭枚举五种——此前的"是否新增节点类型"悬案由此收口。 **gp/heal 已安置,不再走迁移**:v2.0 把它们放进资源与机会类(用户 2026-10-05 选"暂不处置"=不做结构性迁移、不动配额),并在该类内显式登记异质性——**金币与回复是即时兑付,不进持有集、不持续生效**,与行动点上限/刷新次数(进持有账本、当局持续有效)生命周期不同。这条异质性必须留在文档里,防止后续把它们当持续生效的东西去结算。 -**待拍板/待观察四项**:① **资源与机会类的命名**(候选:资源 / 补给 / 余量——取决于以哪层共性为主),以及**回复是否属该类**(也可能独立成第四类)。② **最终关 Boss 后是否也兑付专长**(现行奖励口径是最终关不给——没有后续关卡可消费)。③ **专长总量与档位阈值的匹配**:确定性渠道一局只兑付两次(若最终关不给),而档位阈值是同标签 2 件档一 / 4 件档二——档二须靠罕见旁路补齐,是否合预期归曲线调参批观察。④ **Boss 击败后是否也出属性提升类与资源与机会类**(现标待定)。 +**金币不进商店=一条规则,不是特例**:资源与机会类里只有金币不出现在商店(同类的行动点上限与刷新次数都可以)。v2.1 定为**「计价物不自售」**——凡是以某渠道的计价物为内容的奖励,不进该渠道货架;商店计价物是 GP,故 GP 不进商店。**不拆第四个分类**(按"能不能进商店"反推分类=用渠道轴去切分类轴,两根轴缠回一起),**也不开特例**(特例是孤立的、靠记忆维护的;规则对所有渠道成立,将来自动适用)。它是两轴交叉处的一条约束,实现上是货架候选构建的过滤条件,不是奖励自身的属性。 -**归属**:[奖励](systems/冒险循环/奖励.md)(定义与交叉开关表)+ [node-reward](ux/node-reward.md)(令牌池与奖励面)+ [冒险结构](systems/冒险循环/冒险结构.md)(商店货架保底)+ [关卡节点地图](systems/冒险循环/关卡节点地图.md)(节点类型词表);与上条「双层 BD 延期与备选内容总登记」二期件组相关但不同面。 +**待拍板/待观察两项**:① **资源与机会类的命名**(候选:资源 / 补给 / 余量——取决于以哪层共性为主),以及**回复的两处待确认**——它是否属该类(也可能独立成第四类)、它不进商店是否受同一条规则管(回复不是计价物,严格说不适用于「计价物不自售」)。② **专长总量与档位阈值的匹配**:终局 Boss 不给已定,一局确定性兑付次数=终局前 Boss 的个数(三关结构下为两次),而档位阈值是同标签 2 件档一 / 4 件档二——档二须靠罕见旁路补齐,是否合预期归曲线调参批观察。 -**状态**:分工已定,**实施待排批**;四项待拍板/待观察(2026-10-05 v2.0 更新) +**归属**:[奖励](systems/冒险循环/奖励.md)(定义与交叉开关表)+ [node-reward](ux/node-reward.md)(令牌池与奖励面)+ [冒险结构](systems/冒险循环/冒险结构.md)(商店货架保底与货架过滤)+ [关卡节点地图](systems/冒险循环/关卡节点地图.md)(节点类型词表);与上条「双层 BD 延期与备选内容总登记」二期件组相关但不同面。 + +**状态**:分工已定,**实施待排批**;两项待拍板/待观察(2026-10-05 v2.1 更新) #### 资源与机会类两个新种类入池——刷新次数、专长获取(2026-10-05 立) diff --git a/design/gdd/systems/冒险循环/奖励.md b/design/gdd/systems/冒险循环/奖励.md index 8759401b..2901de77 100644 --- a/design/gdd/systems/冒险循环/奖励.md +++ b/design/gdd/systems/冒险循环/奖励.md @@ -82,7 +82,7 @@ |---|---|---| | 行动点上限 | 每场战斗首轮可用的行动点更多 | 罕见档 | | 刷新次数 | 三选一界面可重抽的次数更多 | **作用对象是选择界面,不是角色**——见第 3 节的例外登记;奖励节点与商店两个渠道都可出现 | -| 金币(GP) | 局内钱包进账 | 进钱包即花掉,不进持有集、不持续生效 | +| 金币(GP) | 局内钱包进账 | 进钱包即花掉,不进持有集、不持续生效;**不进商店**(计价物不自售,见 2.4) | | 回复 | 当即回血 | **是否属本类待确认**——同样是即时兑付,不进持有集、不持续生效 | **这类为什么单独存在**:它的成员不满足"抬高战斗属性"(那归属性提升类),也不满足"改写规则"(那归机制类),但玩家拿到时的感受是一致的——"我能做的事变多了"。把它们跟属性提升混在一起,会让"加了多少攻击"这种可度量的提升和"多一次重抽"这种不可度量的余地摆在同一张候选卡上,玩家没法比。 @@ -103,16 +103,20 @@ 三个渠道各只取走分类的一部分。这张表是奖励概念的第二个维度——它和分类轴互不决定,改其中一根不必动另一根。 -| 分类 \ 渠道 | 奖励节点 | 商店 | 关底 Boss 击败后 | +| 分类 \ 渠道 | 奖励节点 | 商店 | 终局前 Boss 击败后(见 2.1) | |---|---|---|---| -| **机制类**(专长) | 罕见旁路(见 2.2) | 不出现 | **主渠道**(见 2.1) | -| **属性提升类** | 出 | 出(口径「训练」) | 待定 | -| **资源与机会类** | 出 | 出 | 待定 | +| **机制类**(专长) | 罕见旁路(见 2.2) | 不出现 | **主渠道**(唯一渠道中的确定来源) | +| **属性提升类** | 出 | 出(口径「训练」) | 不出现 | +| **资源与机会类** | 出 | 出(**金币除外**,见 2.4) | 不出现 | -#### 2.1 机制类的主渠道:关底 Boss 击败后 +**这张表的形状**:Boss 渠道是**专长的独占渠道**——只出机制类,另两类都不走这里;奖励节点与商店则是属性提升类与资源与机会类的两个并行出口。三条渠道的分工因此是"一块独占 + 两块并行",不是三块平分。这条形状本身要记住:它意味着专长的获取节奏与其他奖励的获取节奏**由完全不同的机制决定**,前者靠打赢,后者靠抽取与购买。 + +#### 2.1 机制类的主渠道:终局前 Boss 击败后 专长的专属渠道,时机确定——打赢就有,不需要看脸。构筑的节奏由此可预期:玩家能规划"第几关拿到第一个专长"。品类原型是杀戮尖塔(每层 Boss 后必给遗物)与哈迪斯(Boss 后必给恩赐)——打赢了一定拿到东西,是这类游戏的通例。 +**终局 Boss 不给**:兑付只发生在**终局之前的 Boss** 身上——打赢最终 Boss 时冒险已经结束,没有后续关卡可消费,给了也无处生效。三关结构下,一局的确定性专长兑付次数由此确定(每个终局前 Boss 一次)。 + **不新增节点类型**:专长挂在 Boss 节点的兑付面上(击败后追加一次专长三选一),[关卡节点地图](关卡节点地图.md) 的节点类型仍是封闭枚举五种(战斗 / Boss / 奖励 / 恢复 / 商店),词表零扩类。此前"要不要为专长新设一类节点"的悬案由此收口。 #### 2.2 罕见旁路:专长获取 @@ -131,7 +135,21 @@ 商店这一侧走的叙事是「**训练**」——花代价向某位师父学习、借某种卷轴修炼、或把战斗攒下的钱换成一身本领。它不是买一个东西回来,而是把钱换成自己的本领,所以落到命名空间上和奖励节点那一侧完全相同:都是往同一个持有集里加一项奖励。 -#### 2.4 在册事项 +#### 2.4 金币不进商店:一条规则,不是一个特例 + +资源与机会类里只有**金币**不出现在商店,同类的行动点上限与刷新次数都可以。这里不拆分类、也不给金币开特例,而是把它写成一条**规则**: + +> **计价物不自售**——凡是以某渠道的计价物为内容的奖励,不进该渠道的货架。 + +商店的计价物是金币(GP),所以金币不进商店。写成规则而不是特例,是因为一旦写成特例,"为什么只有它不行"就成了一个孤立的、需要靠记忆维护的例外;写成规则,它对所有渠道都成立——将来任何渠道只要用自己的计价物当奖励内容,这条规则自动适用,不需要再补第二个特例。 + +**为什么不拆成第四个分类**:分类轴回答的是"给的是什么",金币给的是余量,和行动点上限、刷新次数同类——按"能不能进商店"去反推分类,等于用渠道轴的性质去切分类轴,两根轴又缠回一起了。而且为一个只有一项的分类立枚举,读者会以为它和另三类并列是一个重量级的划分,实际它只是某一项恰好踩到了一条经济规则。 + +**这条规则落在哪**:它不属于分类轴,也不属于渠道轴,而是**两轴交叉处的一条约束**——分类白名单先筛一遍,这条规则再筛一遍。实现上它是货架候选构建时的一个过滤条件,不是奖励自身的属性。 + +**待确认**:同类的**回复**当前也不在商店货架上(现行 `shop.tres` 的货架只有攻击 / 生命上限 / 护甲 / 行动点四项)。它不进商店是同一条规则管(回复不是计价物,不适用),还是另有口径,尚未拍板,登记在 [06-待办清单](../../06-待办清单.md)。 + +#### 2.5 在册事项 现行实现里**三条渠道完全共用同一个候选池**,三个分类出现条件一样、只有出现概率不同——上表的渠道分工是**目标状态,尚未实施**。相关的实施批次登记在 [06-待办清单](../../06-待办清单.md) 的 BD 分层条目下,本文件不复制。 @@ -210,6 +228,7 @@ 6. 文档与代码里提到它时只有"奖励"这一个名字;需要区分时用"机制类/属性提升类/资源与机会类"描述,不得另造称呼。 7. 刷新次数不进角色加算区——它只改三选一界面的可用重抽次数。 8. 金币与回复不进持有集——它们是即时兑付,拿到即消费完。 +9. 金币不出现在商店货架上——这是「计价物不自售」规则的结果,不是给金币单独立的一个分类或特例。 ## 待办 @@ -218,9 +237,8 @@ 本节只点出四条由本版新立、尚未登记的判断来源: - **资源与机会类的命名待定**:候选「资源」「补给」「余量」,取决于以哪层共性为主。定了之后要回头改本文件的类名与 registry。 -- **回复是否属资源与机会类待确认**:它是即时兑付,与金币同类;也可能被视为独立的第四类。 -- **Boss 击败后是否也给属性提升类与资源与机会类**:现标"待定",未拍板。 -- **机制类总量与档位阈值的匹配**:三关结构下,若最终关 Boss 后不给(没有后续关卡可消费),确定性渠道一局只兑付两次专长——刚好够同标签 2 件档一,档二(4 件)要靠罕见旁路补齐。是否合预期归曲线调参批观察。 +- **回复的两处待确认**:① 它是否属资源与机会类(即时兑付,与金币同类,也可能独立成第四类);② 它不进商店,是受「计价物不自售」同一条规则管,还是另有口径——回复不是计价物,严格说不适用该规则。 +- **机制类总量与档位阈值的匹配**:终局 Boss 不给已定,一局的确定性专长兑付次数由"终局前 Boss 的个数"决定。三关结构下是两次,刚好够同标签 2 件档一,档二(4 件)要靠罕见旁路补齐。是否合预期归曲线调参批观察。 ## 版本历史 @@ -230,3 +248,4 @@ | v1.1 | 2026-10-05 | 分类重构:两类由「规则改写型 / 属性加成型」改为「属性提升 / 专长」。 | | v1.2 | 2026-10-05 | 专长渠道落定:关底 Boss 击败后兑付,不新增节点类型;罕见旁路明确为"普通奖励里的专长 N 选一"。 | | **v2.0** | 2026-10-05 | **顶层改名为「奖励」并重构为两根轴**。改名动因:筐里既装"角色自身的变化"也装金币这类一次性兑付物,用"自身提升 vs 持有物"已切不开,边界判据改由生命周期承担——**当局清零的是奖励,跨局带走的是魔法道具**。分类由两类改为**三个枚举**:机制类(专长)/ 属性提升类(生命·AC·攻击)/ 资源与机会类(行动点上限·刷新次数·金币·回复,命名待定)。新增第 2 节分类 × 渠道交叉开关表,明确两根轴互不决定;金币与回复不再被当作"该移出去的脏东西",而是安置在资源与机会类里,同时把它们的即时兑付性质显式登记为类内异质性。 | +| v2.1 | 2026-10-05 | **交叉表收口(用户拍板)**:Boss 渠道**只出专长**,属性提升类与资源与机会类在此均不出现——三条渠道的形状定为"一块独占 + 两块并行",专长靠打赢、其余靠抽取与购买。Boss 兑付明确为**终局前**的 Boss,终局 Boss 不给(无后续关卡可消费)。新增 2.4 节**「计价物不自售」规则**:金币不进商店既不拆分类也不开特例,而是写成两轴交叉处的一条约束——商店的计价物是金币,故金币不进商店;按"能不能进商店"反推分类等于用渠道轴去切分类轴,两根轴会缠回去。 | diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 104043a3..fdd88ff5 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -579,14 +579,15 @@ entities: owner: design/gdd/systems/冒险循环/奖励.md attributes: definition: 一次冒险之内通过各渠道给予玩家的增益总称——奖励节点给的、商店买的、打赢关底 Boss 给的,都是奖励。装的是"这一局你捞到了什么",不管从哪个渠道来 + channel_rule: 计价物不自售——凡是以某渠道的计价物为内容的奖励,不进该渠道货架(商店计价物=GP,故 GP 不进商店)。这是两轴交叉处的一条约束,不是第四个分类也不是特例;实现上是货架候选构建的过滤条件,不是奖励自身的属性 axes: 两根互不决定的轴——**分类轴**(给的是什么)与**渠道轴**(从哪来)。一个奖励属于哪个分类不决定它从哪个渠道来;交叉关系由 [奖励](design/gdd/systems/冒险循环/奖励.md) 第 2 节开关表定死 categories: 封闭三类 {机制类, 属性提升类, 资源与机会类}(v2.0 起;v1.1 曾用两类、v1.0 曾用 {rule, stat},均已作废)。机制类(专长 Feat)——在结算管线某个挂点上给自己加一条规则,同标签持有项数达阈值时质变,事实源 relics.tres;属性提升类(ASI)——抬高生命上限 / AC / 攻击三轴基础值,进冒险加算区,事实源 adventure.tres;资源与机会类(命名待定)——给"可用的量",不抬高战斗属性也不改规则:行动点上限 / 刷新次数 / 金币 / 回复,不进加算区、多数不进持有集,事实源 adventure.tres scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,机制类与属性提升类跨关携带、关间不清零,金币与回复即时兑付;归属范围 = 不进账号永久进度,不带到下一次冒险 lifecycle: 候选池构建(冒险开局一次)→ 在渠道上出现(三选一形式)→ 选定(自池中剔除不再复现;选到「专长获取」时立刻再开一次专长 N 选一)→ 持有生效或即时兑付 → 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 - acquisition: 三条渠道的**目标分工(交叉开关)**——机制类:主渠道=关底 Boss 击败后(不新增节点类型,挂 Boss 节点兑付面),罕见旁路=奖励节点/商店的「专长获取」,商店不出现;属性提升类:奖励节点 + 商店(口径「训练」);资源与机会类:奖励节点 + 商店;Boss 击败后是否也出后两类=待定。**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 + acquisition: 三条渠道的**目标分工(交叉开关,v2.1 收口)**——机制类:主渠道=**终局前** Boss 击败后(**独占渠道**,不新增节点类型、挂 Boss 节点兑付面;终局 Boss 不给——无后续关卡可消费),罕见旁路=奖励节点/商店的「专长获取」,商店不出现;属性提升类:奖励节点 + 商店(口径「训练」);资源与机会类:奖励节点 + 商店(**金币除外**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 boundary: 判据走生命周期——**一次冒险内获得、冒险收束即清零的是奖励;跨冒险跟着你走的是魔法道具**。奖励永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 data_sources: relics.tres(机制类定义行)/ adventure.tres(属性提升类与资源与机会类的种类配额与值)/ shop.tres(货架取舍) - open_questions: ①资源与机会类的命名待定(候选 资源 / 补给 / 余量),回复是否属该类待确认;②类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同;③最终关 Boss 后是否也兑付专长待确认;④确定性渠道一局两次专长 vs 档位阈值(同标签 2 件档一 / 4 件档二)是否匹配,归曲线调参批观察;⑤Boss 击败后是否也出属性提升类与资源与机会类 + open_questions: ①资源与机会类的命名待定(候选 资源 / 补给 / 余量);②类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同;③回复的两处待确认——是否属资源与机会类(也可能独立成第四类)、它不进商店是否受「计价物不自售」同一条规则管(回复不是计价物,严格说不适用于该规则);④确定性渠道一局两次专长 vs 档位阈值(同标签 2 件档一 / 4 件档二)是否匹配,归曲线调参批观察 naming_note: 2026-10-05 命名统一 + 两次重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),v1.0 统一为「特性」,v2.0 改名为「奖励」(因筐里也装金币这类一次性兑付物,"自身提升 vs 持有物"已切不开,判据改由生命周期承担)。代码侧 `feature_*` 词族尚未随之换到 `reward_*`,属临时态,登记于 06-待办清单 referenced_by: [冒险结构, 关卡节点地图, 战斗结算, 行动经济, 地形变异, HUD框架, 魔法道具, 元进度, 数据配置] From d6c13809a503c46d7c49abc3c9c5ea8565617ca6 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 03:34:26 +0800 Subject: [PATCH 05/15] =?UTF-8?q?=E5=A5=96=E5=8A=B1=20v2.2=EF=BC=9A?= =?UTF-8?q?=E9=97=A8=E7=A5=A8=E5=BD=A2=E6=80=81=20+=20=E7=BA=A6=E6=9D=9F?= =?UTF-8?q?=E5=88=86=E5=B1=82=20+=20=E9=BB=98=E8=AE=A4=E5=8E=9F=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 一、非 Boss 渠道给「专长获取」门票(用户明确) 奖励节点与商店不直接给专长,而是给一个道具——拿到后开专长三选一。 交叉表机制类在两渠道由"不出现"改为"**门票形式**"。 - 门票归**机制类**不归资源与机会类:它给的是"一件你以前不会的事", 只是把选择推迟到一次三选一(按 1.4 判据) - 为什么只给门票:若商店能直接买到指定专长,玩家能用金币把构筑买出来, Boss 渠道"打赢才拿到"就失去意义;门票保留惊喜(三选一不是指定), 但不让钱定点购买 二、用户质疑「计价物不自售」本质是特判——质疑成立,重构为三层 诚实结论:**形式上它确实是特判**(在分类白名单之外加的一道过滤, 不是从分类推出来的)。与死特判的实质区别在于: 死特判 = "GP 不进商店"(一条记录,每多一个例外加一条,靠记忆维护) 可计算谓词 = "X 是渠道 C 的计价物 → X 不进 C"(一个函数,自动判定) 即:没有消除"白名单外加过滤",但把**枚举例外变成计算谓词**。 渠道约束改写为三层: 一层 分类白名单(分类轴决定渠道) 二层 可计算谓词(结构性关系,新渠道/新奖励自动判定,不用改表) 三层 显式例外清单(人为设计选择,只能逐条加,**每条须写理由**) 判据:结构性原因(计价物/即时兑付/先决条件)写成谓词;设计性原因进清单。 **要害不是有没有例外,而是例外能不能被算出来。** 三方案代价并列摆出不藏折中:甲 GP 单独立类(例外 0 但两轴缠回)/ 乙 谓词(现行,1 条)/丙 死特判(靠记忆维护)。 在册约束就两条:①金币不进商店(二层·谓词)②机制类非 Boss 渠道只给门票(一层)。 三、立默认原则(用户定):除已登记的特殊规则外,分类内的东西都要在 它该出现的渠道池子里——任何"不出现"都要登记理由,没理由的缺格是缺陷。 据此**回复应在商店内**(回复不是计价物,套不上计价物不自售)。现行 shop.tres 货架只有 attack/max_hp/armor/ap 四项,缺回复=现状与表格 不对齐,须在实施批补上。 同步:06-待办清单(交叉表改门票 + 三层约束表 + 待拍板项增为三项)、 entities.yaml(acquisition 收口、channel_rule → channel_constraint_layers、 open_questions 更新)、02-系统清单 v1.7。验收标准补第 10 条(默认原则)。 专长门票尚未入表(出现概率/配额/全局限量无事实源)已登记。 数据层数值零变更;未 merge 回 master(本会话零测试)。 --- design/gdd/06-待办清单.md | 28 +++++++++-- design/gdd/systems/冒险循环/奖励.md | 76 +++++++++++++++++++++-------- design/registry/entities.yaml | 6 +-- 3 files changed, 83 insertions(+), 27 deletions(-) diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index bf116925..3013b628 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -33,19 +33,37 @@ | 分类 \ 渠道 | 奖励节点 | 商店 | 终局前 Boss 击败后 | |---|---|---|---| -| 机制类(专长) | 罕见旁路 | 不出现 | **主渠道(独占)** | +| 机制类(专长) | **门票形式** | **门票形式** | **直接给**(唯一直接渠道) | | 属性提升类 | 出 | 出(训练) | 不出现 | -| 资源与机会类 | 出 | 出(金币除外) | 不出现 | +| 资源与机会类 | 出 | 出(金币除外;**回复在内**) | 不出现 | -**Boss 渠道是专长的独占渠道**——只出机制类,另两类都不走这里;奖励节点与商店是属性提升类与资源与机会类的两个并行出口。形状是"一块独占 + 两块并行",不是三块平分。**终局 Boss 不给**(打赢时冒险已结束,无后续关卡可消费),兑付只发生在终局之前的 Boss。用户原话:"我在获取特性的时候,可以有些比较罕见的道具,让我立马得到一个专长,就给它一点不确定性,一点随机性"。**确定性优先**:专长不因没 roll 到就构筑不起来。用户同时明确:先定大意念再分小类,渠道与分类是两根互不决定的轴。 +**Boss 渠道是专长的独占渠道,也是唯一直接给专长的渠道**——另两类都不走这里;奖励节点与商店不直接给专长,而是给一个**「专长获取」道具(门票)**,拿到后开专长三选一。形状是"一块独占 + 两块并行",不是三块平分。**终局 Boss 不给**(打赢时冒险已结束,无后续关卡可消费),兑付只发生在终局之前的 Boss。用户原话:"我在获取特性的时候,可以有些比较罕见的道具,让我立马得到一个专长,就给它一点不确定性,一点随机性"。**确定性优先**:专长不因没 roll 到就构筑不起来。用户同时明确:先定大意念再分小类,渠道与分类是两根互不决定的轴。 + +**门票归机制类,不归资源与机会类**:它给的不是"余量"而是"一件你以前不会的事",只是把选择推迟到一次三选一。**为什么只给门票**:若商店能直接买到指定专长,玩家就能用金币把构筑买出来,Boss 渠道"打赢才拿到"就失去意义;门票保留惊喜(开出的是三选一不是指定),但不让钱定点购买。 + +**默认原则(用户 2026-10-05 定)**:**除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里。** 这张表默认值="出",任何"不出现"都要登记理由,没理由的缺格是缺陷不是设计。 原四备选(① 专长专属三选一 ② 行为条件投放 ③ 计步保底 ④ 双池分离)已被上述定案覆盖——定案≈备选①的确定性路线,余三备选不再单独推进。**节点类型不扩类**:机制类挂在 Boss 节点兑付面上(击败后追加一次专长三选一),[关卡节点地图](systems/冒险循环/关卡节点地图.md) 的节点类型仍为封闭枚举五种——此前的"是否新增节点类型"悬案由此收口。 **gp/heal 已安置,不再走迁移**:v2.0 把它们放进资源与机会类(用户 2026-10-05 选"暂不处置"=不做结构性迁移、不动配额),并在该类内显式登记异质性——**金币与回复是即时兑付,不进持有集、不持续生效**,与行动点上限/刷新次数(进持有账本、当局持续有效)生命周期不同。这条异质性必须留在文档里,防止后续把它们当持续生效的东西去结算。 -**金币不进商店=一条规则,不是特例**:资源与机会类里只有金币不出现在商店(同类的行动点上限与刷新次数都可以)。v2.1 定为**「计价物不自售」**——凡是以某渠道的计价物为内容的奖励,不进该渠道货架;商店计价物是 GP,故 GP 不进商店。**不拆第四个分类**(按"能不能进商店"反推分类=用渠道轴去切分类轴,两根轴缠回一起),**也不开特例**(特例是孤立的、靠记忆维护的;规则对所有渠道成立,将来自动适用)。它是两轴交叉处的一条约束,实现上是货架候选构建的过滤条件,不是奖励自身的属性。 +**渠道约束分三层(v2.2,用户质疑后重构)**:用户问"计价物不自售不就是特判吗"。**诚实结论:形式上是的**——它确实是在分类白名单之外加的一道过滤,不是从分类推出来的。但和死特判有实质区别: -**待拍板/待观察两项**:① **资源与机会类的命名**(候选:资源 / 补给 / 余量——取决于以哪层共性为主),以及**回复的两处待确认**——它是否属该类(也可能独立成第四类)、它不进商店是否受同一条规则管(回复不是计价物,严格说不适用于「计价物不自售」)。② **专长总量与档位阈值的匹配**:终局 Boss 不给已定,一局确定性兑付次数=终局前 Boss 的个数(三关结构下为两次),而档位阈值是同标签 2 件档一 / 4 件档二——档二须靠罕见旁路补齐,是否合预期归曲线调参批观察。 +| 层 | 是什么 | 新增渠道/奖励时 | +|---|---|---| +| 一层 分类白名单 | 分类轴决定渠道 | 新分类按判据归类,自动继承 | +| 二层 **可计算谓词** | 渠道与奖励的**结构性**关系 | **自动判定,不用改表** | +| 三层 显式例外清单 | 人为设计选择,无内在理由 | **只能逐条加,每条须写理由** | + +死特判="GP 不进商店"(一条记录,每多一个例外加一条,靠记忆维护);谓词="X 是渠道 C 的计价物 → X 不进 C"(一个函数,自动判定)。**它没有消除"在白名单外加过滤",只是把它从枚举例变成了计算谓词。** 判据:结构性原因(计价物/即时兑付/先决条件)可写成谓词;设计性原因只能进三层清单。**要害不是有没有例外,而是例外能不能被算出来。** + +三方案代价并列(不藏折中):甲=GP 单独立第四个分类(例外 0,但用渠道轴切分类轴、两轴缠回、一项一类失衡);**乙=可计算谓词(现行,1 条谓词)**;丙=死特判清单(1 条记录,靠记忆维护)。 + +**在册约束就两条**:① 金币不进商店(二层·谓词,理由=计价物不自售);② 机制类在非 Boss 渠道只给门票(一层·分类自身形态,理由=防用钱定点买构筑)。 + +**回复应在商店内**(用户 2026-10-05 定):回复不是计价物,套不上「计价物不自售」,按默认原则它应当在商店出现。现行 `shop.tres` 货架只有 attack / max_hp / armor / ap 四项,**现状与表格不对齐,须在实施批补上**。 + +**待拍板/待观察三项**:① **资源与机会类的命名**(候选:资源 / 补给 / 余量);**回复是否属该类**(也可能独立成第四类——它是否出现在商店与此无关,两回事)。② **专长门票尚未入表**:出现概率 / 配额 / 全局限量三个参数都没有事实源,入池同样受档位结构锚约束。③ **专长总量与档位阈值的匹配**:终局 Boss 不给已定,一局确定性兑付次数=终局前 Boss 个数(三关=两次),而档位阈值是同标签 2 件档一 / 4 件档二——档二须靠门票补齐,是否合预期归曲线调参批观察。 **归属**:[奖励](systems/冒险循环/奖励.md)(定义与交叉开关表)+ [node-reward](ux/node-reward.md)(令牌池与奖励面)+ [冒险结构](systems/冒险循环/冒险结构.md)(商店货架保底与货架过滤)+ [关卡节点地图](systems/冒险循环/关卡节点地图.md)(节点类型词表);与上条「双层 BD 延期与备选内容总登记」二期件组相关但不同面。 diff --git a/design/gdd/systems/冒险循环/奖励.md b/design/gdd/systems/冒险循环/奖励.md index 2901de77..a17cadc4 100644 --- a/design/gdd/systems/冒险循环/奖励.md +++ b/design/gdd/systems/冒险循环/奖励.md @@ -62,6 +62,8 @@ 专长带流派标签,同一标签的持有件数达到阈值时发生质变(档位机制归 [战斗结算](../战斗循环/战斗结算.md),本文件不展开)。这是它和另两类最直观的体感差别:属性提升是"我更耐打了",专长是"我现在会一件以前不会的事"。 +**专长门票也归这一类**:非 Boss 渠道不直接给专长,而是给一张名为「专长获取」的门票——拿到后立刻开一次专长 N 选一。它给的是"一件你以前不会的事"(只是把选择推迟到一次三选一),按 1.4 的判据归机制类,不归资源与机会类。详见 2.2。 + #### 1.2 属性提升类:纯属性三项 三项,各改一条战斗属性轴: @@ -83,7 +85,7 @@ | 行动点上限 | 每场战斗首轮可用的行动点更多 | 罕见档 | | 刷新次数 | 三选一界面可重抽的次数更多 | **作用对象是选择界面,不是角色**——见第 3 节的例外登记;奖励节点与商店两个渠道都可出现 | | 金币(GP) | 局内钱包进账 | 进钱包即花掉,不进持有集、不持续生效;**不进商店**(计价物不自售,见 2.4) | -| 回复 | 当即回血 | **是否属本类待确认**——同样是即时兑付,不进持有集、不持续生效 | +| 回复 | 当即回血 | 即时兑付,不进持有集、不持续生效;**在商店内**(见 2.4 的默认原则) | **这类为什么单独存在**:它的成员不满足"抬高战斗属性"(那归属性提升类),也不满足"改写规则"(那归机制类),但玩家拿到时的感受是一致的——"我能做的事变多了"。把它们跟属性提升混在一起,会让"加了多少攻击"这种可度量的提升和"多一次重抽"这种不可度量的余地摆在同一张候选卡上,玩家没法比。 @@ -105,11 +107,13 @@ | 分类 \ 渠道 | 奖励节点 | 商店 | 终局前 Boss 击败后(见 2.1) | |---|---|---|---| -| **机制类**(专长) | 罕见旁路(见 2.2) | 不出现 | **主渠道**(唯一渠道中的确定来源) | +| **机制类**(专长) | 门票形式(见 2.2) | 门票形式(见 2.2) | **直接给**(唯一的直接渠道) | | **属性提升类** | 出 | 出(口径「训练」) | 不出现 | | **资源与机会类** | 出 | 出(**金币除外**,见 2.4) | 不出现 | -**这张表的形状**:Boss 渠道是**专长的独占渠道**——只出机制类,另两类都不走这里;奖励节点与商店则是属性提升类与资源与机会类的两个并行出口。三条渠道的分工因此是"一块独占 + 两块并行",不是三块平分。这条形状本身要记住:它意味着专长的获取节奏与其他奖励的获取节奏**由完全不同的机制决定**,前者靠打赢,后者靠抽取与购买。 +**这张表的形状**:Boss 渠道是**专长的独占渠道**,也是唯一**直接**给专长的渠道;奖励节点与商店不直接给专长,但会出现通往专长的**门票**。另两类不走 Boss 渠道,只在奖励节点与商店两个并行出口出现。三条渠道的分工因此是"一块独占 + 两块并行",不是三块平分。这条形状本身要记住:它意味着专长的获取节奏与其他奖励的获取节奏**由完全不同的机制决定**——前者靠打赢,后者靠抽取与购买。 + +**默认原则(用户 2026-10-05 定)**:**除了显式登记的特殊规则,一个分类里的东西都要在它该出现的渠道池子里。** 也就是说这张表的默认值是"出",任何"不出现"都必须登记一条理由,没有理由的缺格是缺陷不是设计。 #### 2.1 机制类的主渠道:终局前 Boss 击败后 @@ -119,35 +123,65 @@ **不新增节点类型**:专长挂在 Boss 节点的兑付面上(击败后追加一次专长三选一),[关卡节点地图](关卡节点地图.md) 的节点类型仍是封闭枚举五种(战斗 / Boss / 奖励 / 恢复 / 商店),词表零扩类。此前"要不要为专长新设一类节点"的悬案由此收口。 -#### 2.2 罕见旁路:专长获取 +#### 2.2 专长门票:非 Boss 渠道怎么给专长 -在属性与资源的通用渠道(奖励节点、商店)里,嵌着一个罕见项——**专长获取**。它小概率出现在候选里,效果是立刻开一次专长 N 选一(N 与机制类主渠道的候选数同源)。 +奖励节点与商店**不直接给专长**——它们给的是一张**门票**:一个名为「专长获取」的奖励项,选中或买下之后,立刻开一次专长 N 选一(N 与 Boss 渠道的候选数同源)。 -它的作用是在确定性之上加一层赌博感: +**它归机制类,不归资源与机会类**:它给的不是"余量",而是"一件你以前不会的事"——只是把选择推迟到一次三选一。按 1.4 的分类判据(去掉它之后角色少了什么),它属于机制类。所以在交叉表上,机制类在非 Boss 渠道的表现是**只以门票形式出现**,不是"不出现"。 -- **不推翻确定性**:专长的主渠道仍然是 Boss 击败后,玩家不会因为没 roll 到就构筑不起来; -- **只在旁路制造兴奋**:它不常来,来了就是"这一局走运了",让人有记忆点; +**为什么非 Boss 渠道只给门票**:如果商店也能直接买到一个指定的专长,玩家就能用金币把构筑买出来,Boss 渠道的"打赢才拿到"就失去意义了。门票保留了惊喜(开出来的还是三选一,不是指定),但不让玩家用钱直接定点购买。 + +它的三个性质: + +- **不推翻确定性**:专长的主渠道仍然是 Boss 击败后,玩家不会因为没抽到门票就构筑不起来; +- **只在旁路制造兴奋**:它不常来(奖励节点)或要花额外的钱(商店),来了就是"这一局走运了",让人有记忆点; - **罕见且全局限量**:配额极小,且一局内的总量有上限——防止它变成第二条专长渠道,也防止它冲垮档位阈值。 -玩家视角它长这样:在普通的三选一奖励里,偶尔会冒出一张不一样的卡——选它,立刻再开一次专长选择。它是奖励面里的惊喜,不是奖励面的常态。 +玩家视角它长这样:在普通的三选一奖励或商店货架里,偶尔会冒出一张不一样的卡——拿到它,立刻再开一次专长选择。它是奖励面里的惊喜,不是奖励面的常态。 #### 2.3 商店口径:训练 商店这一侧走的叙事是「**训练**」——花代价向某位师父学习、借某种卷轴修炼、或把战斗攒下的钱换成一身本领。它不是买一个东西回来,而是把钱换成自己的本领,所以落到命名空间上和奖励节点那一侧完全相同:都是往同一个持有集里加一项奖励。 -#### 2.4 金币不进商店:一条规则,不是一个特例 +#### 2.4 渠道约束分三层:白名单 / 可计算谓词 / 显式例外 -资源与机会类里只有**金币**不出现在商店,同类的行动点上限与刷新次数都可以。这里不拆分类、也不给金币开特例,而是把它写成一条**规则**: +一个"某分类在某渠道出不出现"的判断,实际由三层叠起来决定: -> **计价物不自售**——凡是以某渠道的计价物为内容的奖励,不进该渠道的货架。 +| 层 | 是什么 | 判据来源 | 新增渠道或奖励时 | +|---|---|---|---| +| **一层 分类白名单** | 分类轴决定渠道——机制类走 Boss、另两类走奖励节点与商店 | 分类本身 | 新分类按 1.4 判据归类,自动继承该类的渠道 | +| **二层 可计算谓词** | 渠道与奖励之间的**结构性**关系,能算出来 | 对象与渠道的内在关系 | **自动适用,不用改表** | +| **三层 显式例外清单** | 人为的设计选择,没有内在理由可推 | 设计决定 | **只能逐条加,每条必须写理由** | -商店的计价物是金币(GP),所以金币不进商店。写成规则而不是特例,是因为一旦写成特例,"为什么只有它不行"就成了一个孤立的、需要靠记忆维护的例外;写成规则,它对所有渠道都成立——将来任何渠道只要用自己的计价物当奖励内容,这条规则自动适用,不需要再补第二个特例。 +**先诚实回答"计价物不自售不就是特判吗"**:**形式上是的**——它确实是在分类白名单之外又加了一道过滤,不是从分类推出来的。但它和三层那种"死特判"有实质区别: -**为什么不拆成第四个分类**:分类轴回答的是"给的是什么",金币给的是余量,和行动点上限、刷新次数同类——按"能不能进商店"去反推分类,等于用渠道轴的性质去切分类轴,两根轴又缠回一起了。而且为一个只有一项的分类立枚举,读者会以为它和另三类并列是一个重量级的划分,实际它只是某一项恰好踩到了一条经济规则。 +| | 写法 | 新增渠道/奖励时 | 维护方式 | +|---|---|---|---| +| 死特判 | "GP 不进商店"(一条记录) | 每多一个例外加一条记录 | 靠人记住,容易漏 | +| **可计算谓词** | "X 是渠道 C 的计价物 → X 不进 C"(一个函数) | **自动判定,不用改表** | 判据在对象属性上,不会漏 | -**这条规则落在哪**:它不属于分类轴,也不属于渠道轴,而是**两轴交叉处的一条约束**——分类白名单先筛一遍,这条规则再筛一遍。实现上它是货架候选构建时的一个过滤条件,不是奖励自身的属性。 +所以准确的说法是:**它没有消除"在白名单外加过滤"这件事,但把过滤从"枚举例外"变成了"计算谓词"**。以后新增渠道或奖励,只要"不出现"的原因是**结构性**的——来自奖励与渠道的内在关系(计价物、即时兑付、需要先决条件等)——就能写成谓词自动算;如果原因是**设计性**的("我就是想让它在这一关不出"),那就只能进三层清单。 -**待确认**:同类的**回复**当前也不在商店货架上(现行 `shop.tres` 的货架只有攻击 / 生命上限 / 护甲 / 行动点四项)。它不进商店是同一条规则管(回复不是计价物,不适用),还是另有口径,尚未拍板,登记在 [06-待办清单](../../06-待办清单.md)。 +**所以要害不是"有没有例外",而是"例外能不能被算出来"**。三层清单不是不能用,但每一条都必须写出理由;一条写不出理由的例外,就是坏味道,应该回头质疑分类是不是分错了。 + +**为什么不干脆拆成第四个分类(零例外的那条路)**:分类轴回答的是"给的是什么",金币给的是余量,和行动点上限、刷新次数同类。按"能不能进商店"去反推分类,等于**用渠道轴的性质去切分类轴**,两根轴又缠回一起了——这是本文件 v2.0 专门拆开的东西,不能为了消灭一条例外再缠回去。而且为一个只有一项的分类立枚举,读者会以为它和另三类是同一重量级的划分,实际它只是某一项恰好踩到了一条经济规则。 + +三个方案的真实代价,摆出来不藏: + +| 方案 | 例外数 | 代价 | +|---|---|---| +| 甲:GP 单独立第四个分类 | 0 | 用渠道轴切分类轴,两轴缠回;一项一类,分类失衡 | +| **乙:可计算谓词(现行)** | **1 条谓词** | **分类干净,但"白名单外加过滤"这件事没消失,只是自动化了** | +| 丙:死特判清单 | 1 条记录 | 每加一个例外加一条,靠记忆维护 | + +**回复在商店内**(用户 2026-10-05 定):回复不是计价物,套不上「计价物不自售」,按默认原则(除登记的特殊规则外,分类内的都要在池子里)**它应当在商店中出现**。现行 `shop.tres` 的货架只有攻击 / 生命上限 / 护甲 / 行动点四项,回复不在其中——这是**现状与表格不对齐**,须在实施批补上,登记在 [06-待办清单](../../06-待办清单.md)。 + +**当前在册的约束清单**(就这么两条,都要有理由): + +| 约束 | 层 | 理由 | +|---|---|---| +| 金币不进商店 | 二层·谓词 | 计价物不自售——商店的计价物是 GP | +| 机制类在非 Boss 渠道只给门票 | 一层·分类自身的形态 | 见 2.2——防止用钱定点买构筑 | #### 2.5 在册事项 @@ -211,6 +245,7 @@ | 参数 | 取值域 | 事实源 | |---|---|---| | 机制类定义行(标识 / 显示名 / 稀有度 / 标签 / 挂点 / 效果字典) | 各字段封闭枚举,行键白名单封闭 | `game/data/tables/relics.tres` | +| 专长门票(出现概率 / 配额 / 全局限量) | 整数 | **尚未入表**,见待办 | | 属性提升类种类 | 封闭三项:生命上限 / AC / 攻击,扩项走文档修订 | `game/data/schemas/adventure_table.gd` | | 资源与机会类种类 | 行动点上限 / 金币 / 回复(**刷新次数与专长获取两项尚未入表**,见待办) | 同上 | | 稀有度档位 | 封闭三档(普通 / 稀有 / 罕见);三档配额是结构锚,改总量须重新拍板而非调参 | 同上 | @@ -228,7 +263,8 @@ 6. 文档与代码里提到它时只有"奖励"这一个名字;需要区分时用"机制类/属性提升类/资源与机会类"描述,不得另造称呼。 7. 刷新次数不进角色加算区——它只改三选一界面的可用重抽次数。 8. 金币与回复不进持有集——它们是即时兑付,拿到即消费完。 -9. 金币不出现在商店货架上——这是「计价物不自售」规则的结果,不是给金币单独立的一个分类或特例。 +9. 金币不出现在商店货架上——这是「计价物不自售」谓词算出来的结果,不是给金币单独立的一个分类;它确实是在分类白名单之外加的一道过滤,只是这道过滤可自动计算而非靠枚举。 +10. 除已登记的两条约束外(见 2.4 末尾的清单),一个分类里的东西都在它该出现的渠道池子里——任何"不出现"都必须有理由,没理由的缺格是缺陷。 ## 待办 @@ -237,8 +273,9 @@ 本节只点出四条由本版新立、尚未登记的判断来源: - **资源与机会类的命名待定**:候选「资源」「补给」「余量」,取决于以哪层共性为主。定了之后要回头改本文件的类名与 registry。 -- **回复的两处待确认**:① 它是否属资源与机会类(即时兑付,与金币同类,也可能独立成第四类);② 它不进商店,是受「计价物不自售」同一条规则管,还是另有口径——回复不是计价物,严格说不适用该规则。 -- **机制类总量与档位阈值的匹配**:终局 Boss 不给已定,一局的确定性专长兑付次数由"终局前 Boss 的个数"决定。三关结构下是两次,刚好够同标签 2 件档一,档二(4 件)要靠罕见旁路补齐。是否合预期归曲线调参批观察。 +- **回复是否属资源与机会类待确认**:它是即时兑付,与金币同类;也可能独立成第四类。它**在商店内**(不是计价物,套不上「计价物不自售」)——现行 `shop.tres` 货架只有攻击 / 生命上限 / 护甲 / 行动点四项,**现状与表格不对齐,须在实施批补上**。 +- **专长门票尚未入表**:出现概率、配额、全局限量三个参数都没有事实源;入池时同样受档位结构锚约束(改总量须重裁而非调参)。 +- **机制类总量与档位阈值的匹配**:终局 Boss 不给已定,一局的确定性专长兑付次数由"终局前 Boss 的个数"决定。三关结构下是两次,刚好够同标签 2 件档一,档二(4 件)要靠门票补齐。是否合预期归曲线调参批观察。 ## 版本历史 @@ -249,3 +286,4 @@ | v1.2 | 2026-10-05 | 专长渠道落定:关底 Boss 击败后兑付,不新增节点类型;罕见旁路明确为"普通奖励里的专长 N 选一"。 | | **v2.0** | 2026-10-05 | **顶层改名为「奖励」并重构为两根轴**。改名动因:筐里既装"角色自身的变化"也装金币这类一次性兑付物,用"自身提升 vs 持有物"已切不开,边界判据改由生命周期承担——**当局清零的是奖励,跨局带走的是魔法道具**。分类由两类改为**三个枚举**:机制类(专长)/ 属性提升类(生命·AC·攻击)/ 资源与机会类(行动点上限·刷新次数·金币·回复,命名待定)。新增第 2 节分类 × 渠道交叉开关表,明确两根轴互不决定;金币与回复不再被当作"该移出去的脏东西",而是安置在资源与机会类里,同时把它们的即时兑付性质显式登记为类内异质性。 | | v2.1 | 2026-10-05 | **交叉表收口(用户拍板)**:Boss 渠道**只出专长**,属性提升类与资源与机会类在此均不出现——三条渠道的形状定为"一块独占 + 两块并行",专长靠打赢、其余靠抽取与购买。Boss 兑付明确为**终局前**的 Boss,终局 Boss 不给(无后续关卡可消费)。新增 2.4 节**「计价物不自售」规则**:金币不进商店既不拆分类也不开特例,而是写成两轴交叉处的一条约束——商店的计价物是金币,故金币不进商店;按"能不能进商店"反推分类等于用渠道轴去切分类轴,两根轴会缠回去。 | +| v2.2 | 2026-10-05 | **门票形态 + 约束分层 + 默认原则**。① 用户明确:奖励节点与商店不直接给专长,而是给一个**「专长获取」道具**,拿到后开专长三选一——交叉表机制类在两渠道由"不出现"改为"**门票形式**";门票归机制类(给的是一件以前不会的事,只是把选择推迟),理由是防止用钱定点买构筑。② 用户质疑「计价物不自售」本质是特判——**承认成立**:它确实是在分类白名单之外加的一道过滤,与死特判的区别在于把"枚举例外"变成"**可计算谓词**"(新渠道/新奖励自动判定)。2.4 改写为**三层约束**(分类白名单 / 可计算谓词 / 显式例外清单),并给出判断标准:结构性原因可写成谓词,设计性原因只能进清单且每条须写理由;三个方案(单独分类 / 谓词 / 死特判)的代价并列摆出,不藏折中。③ 用户定**默认原则**:除已登记的特殊规则外,分类内的东西都要在池子里——据此**回复应在商店内**,现行 shop.tres 货架缺它是"现状与表格不对齐",须在实施批补上。 | diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index fdd88ff5..7cd66113 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -579,15 +579,15 @@ entities: owner: design/gdd/systems/冒险循环/奖励.md attributes: definition: 一次冒险之内通过各渠道给予玩家的增益总称——奖励节点给的、商店买的、打赢关底 Boss 给的,都是奖励。装的是"这一局你捞到了什么",不管从哪个渠道来 - channel_rule: 计价物不自售——凡是以某渠道的计价物为内容的奖励,不进该渠道货架(商店计价物=GP,故 GP 不进商店)。这是两轴交叉处的一条约束,不是第四个分类也不是特例;实现上是货架候选构建的过滤条件,不是奖励自身的属性 + channel_constraint_layers: 渠道约束分三层——一层 分类白名单(分类轴决定渠道);二层 可计算谓词(渠道与奖励的结构性关系,如「计价物不自售」:X 是渠道 C 的计价物 → X 不进 C;新渠道/新奖励自动判定,不用改表);三层 显式例外清单(人为设计选择,只能逐条加,每条须写理由)。要害不是有没有例外,而是例外能不能被算出来——结构性原因写成谓词,设计性原因进清单。在册约束两条:①金币不进商店(二层·谓词)②机制类在非 Boss 渠道只给门票(一层·分类形态)。**「计价物不自售」形式上确是在白名单外加的一道过滤(用户质疑成立),与死特判的区别在于把枚举例外变成计算谓词** axes: 两根互不决定的轴——**分类轴**(给的是什么)与**渠道轴**(从哪来)。一个奖励属于哪个分类不决定它从哪个渠道来;交叉关系由 [奖励](design/gdd/systems/冒险循环/奖励.md) 第 2 节开关表定死 categories: 封闭三类 {机制类, 属性提升类, 资源与机会类}(v2.0 起;v1.1 曾用两类、v1.0 曾用 {rule, stat},均已作废)。机制类(专长 Feat)——在结算管线某个挂点上给自己加一条规则,同标签持有项数达阈值时质变,事实源 relics.tres;属性提升类(ASI)——抬高生命上限 / AC / 攻击三轴基础值,进冒险加算区,事实源 adventure.tres;资源与机会类(命名待定)——给"可用的量",不抬高战斗属性也不改规则:行动点上限 / 刷新次数 / 金币 / 回复,不进加算区、多数不进持有集,事实源 adventure.tres scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,机制类与属性提升类跨关携带、关间不清零,金币与回复即时兑付;归属范围 = 不进账号永久进度,不带到下一次冒险 lifecycle: 候选池构建(冒险开局一次)→ 在渠道上出现(三选一形式)→ 选定(自池中剔除不再复现;选到「专长获取」时立刻再开一次专长 N 选一)→ 持有生效或即时兑付 → 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 - acquisition: 三条渠道的**目标分工(交叉开关,v2.1 收口)**——机制类:主渠道=**终局前** Boss 击败后(**独占渠道**,不新增节点类型、挂 Boss 节点兑付面;终局 Boss 不给——无后续关卡可消费),罕见旁路=奖励节点/商店的「专长获取」,商店不出现;属性提升类:奖励节点 + 商店(口径「训练」);资源与机会类:奖励节点 + 商店(**金币除外**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 + acquisition: 三条渠道的**目标分工(交叉开关,v2.2 收口)**——机制类:主渠道=**终局前** Boss 击败后(**唯一直接给的渠道**,不新增节点类型、挂 Boss 节点兑付面;终局 Boss 不给——无后续关卡可消费),奖励节点与商店**只给「专长获取」门票**(拿到后开专长三选一,门票归机制类——给的是一件以前不会的事,只是把选择推迟;理由=防用钱定点买构筑);属性提升类:奖励节点 + 商店(口径「训练」);资源与机会类:奖励节点 + 商店(**金币除外、回复在内**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**默认原则**:除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里——任何不出现都须登记理由**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 boundary: 判据走生命周期——**一次冒险内获得、冒险收束即清零的是奖励;跨冒险跟着你走的是魔法道具**。奖励永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 data_sources: relics.tres(机制类定义行)/ adventure.tres(属性提升类与资源与机会类的种类配额与值)/ shop.tres(货架取舍) - open_questions: ①资源与机会类的命名待定(候选 资源 / 补给 / 余量);②类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同;③回复的两处待确认——是否属资源与机会类(也可能独立成第四类)、它不进商店是否受「计价物不自售」同一条规则管(回复不是计价物,严格说不适用于该规则);④确定性渠道一局两次专长 vs 档位阈值(同标签 2 件档一 / 4 件档二)是否匹配,归曲线调参批观察 + open_questions: ①资源与机会类的命名待定(候选 资源 / 补给 / 余量);②类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同;③回复是否属资源与机会类待确认(也可能独立成第四类)——它**应在商店内**(不是计价物,套不上计价物不自售),现行 shop.tres 货架缺它是现状与表格不对齐,须实施批补上;④专长门票尚未入表(出现概率/配额/全局限量无事实源);⑤确定性渠道一局两次专长 vs 档位阈值(同标签 2 件档一 / 4 件档二)是否匹配,归曲线调参批观察 naming_note: 2026-10-05 命名统一 + 两次重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),v1.0 统一为「特性」,v2.0 改名为「奖励」(因筐里也装金币这类一次性兑付物,"自身提升 vs 持有物"已切不开,判据改由生命周期承担)。代码侧 `feature_*` 词族尚未随之换到 `reward_*`,属临时态,登记于 06-待办清单 referenced_by: [冒险结构, 关卡节点地图, 战斗结算, 行动经济, 地形变异, HUD框架, 魔法道具, 元进度, 数据配置] From eaf1ae91846f3cf54313357f0487d3fa6de548df Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 04:25:54 +0800 Subject: [PATCH 06/15] =?UTF-8?q?=E5=A5=96=E5=8A=B1=20v2.3=EF=BC=9A?= =?UTF-8?q?=E9=97=A8=E7=A5=A8=E6=9C=BA=E5=88=B6=E7=BB=86=E5=8C=96=20+=20?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E5=8E=9F=E5=88=99=E8=A1=A8=E8=BF=B0=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 一、门票机制四条(用户 2026-10-05 定) - **拿到即开、不可囤积**:不进持有集,选中/买下同一时刻开专长三选一。 可囤积会让玩家把关键决策无限推迟,且把持有物语义从后门放回来; "道具"只是卡面表现,不是持有物 - **罕见只在概率,不在价格**:货架价与其他商品相当,不靠高价劝退 - **一局限购一次**(现行口径) - **计步保底**:连续 5 次三选一展示未出现 → 第 6 次展示必定出现。 计数对象=**展示次数**(刷新后的重新展示计入,用户明定含刷新—— 若刷新不计入,保底与刷新两套机制会打架,玩家可用刷新绕开计数语义); 计数范围=奖励节点与商店**共享**;触发后清零;**限购用满后不再触发** 二、修正 v2.2 的误读(用户指出) v2.2 把"分类在某渠道不出现"当成需理由的缺格,这是错的。 **渠道出哪些分类,是渠道轴自己的定位决定,不是例外**——Boss 只出专长, 另两类"不出现"是它的同义表述。默认原则**只管分类内部**:一个渠道一旦 确定要出某分类,该分类的成员就都要在池子里。两句话管辖范围不同, 已在文档与 registry 分开写死。 三、档位问题按用户决定延后,但两块都登记 - 专长总量 vs 档位阈值(≥2 档一 / ≥4 档二):三关下确定性 2 次 + 门票 最多 3 次,**档二几乎不可达**。用户定"先不调整"(后续有第四关), 复裁触发=第四关内容批落地后实测。登记防忘。 - **charge 标签仅 3 件**(relics.tres),永远达不到 4 件档二—— 数据层缺陷,与渠道结构无关,单独登记勿被上条盖掉。 四、顶层命名待定(用户否决了「奖励」与「收益」,要自造词) 新增待办,并记一条硬约束:**代码 reward 词族已被占用**—— reward_pick(rng 封闭流 scope)/ reward_node(grant_aux_item context)/ reward_preview(道具 kind)。因此 06 里「feature_* → reward_* 对齐」 那条待办**不能照做**,会撞车。候选词:进益 / 造化 / 机缘 / 遇获。 同步 06-待办清单、entities.yaml;验收标准补 11/12 条。数据层零变更。 --- design/gdd/06-待办清单.md | 8 +++-- design/gdd/systems/冒险循环/奖励.md | 45 ++++++++++++++++++++++------- design/registry/entities.yaml | 6 ++-- 3 files changed, 44 insertions(+), 15 deletions(-) diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index 3013b628..89b04bf8 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -41,7 +41,9 @@ **门票归机制类,不归资源与机会类**:它给的不是"余量"而是"一件你以前不会的事",只是把选择推迟到一次三选一。**为什么只给门票**:若商店能直接买到指定专长,玩家就能用金币把构筑买出来,Boss 渠道"打赢才拿到"就失去意义;门票保留惊喜(开出的是三选一不是指定),但不让钱定点购买。 -**默认原则(用户 2026-10-05 定)**:**除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里。** 这张表默认值="出",任何"不出现"都要登记理由,没理由的缺格是缺陷不是设计。 +**门票机制四条(用户 2026-10-05 定)**:① **拿到即开、不可囤积**——不进持有集,选中或买下同一时刻就开专长三选一(可囤积会让玩家把关键决策无限推迟,且把持有物语义从后门放回来;"道具"只是卡面表现)。② **罕见只在概率,不在价格**——货架价与其他商品相当,不靠高价劝退。③ **一局限购一次**(现行口径)。④ **计步保底**——连续 5 次三选一展示未出现门票,第 6 次展示必定出现;计数对象=**展示次数**(刷新后的重新展示计入,用户明定含刷新),计数范围=奖励节点与商店**共享**,触发后清零,**限购用满后保底不再触发**。 + +**渠道定位 vs 默认原则(两句,别混)**:**渠道出哪些分类,是渠道轴自己的定位决定,不是例外**——Boss 渠道只出专长,另两类"不出现"是它的同义表述,不需另外找理由(v2.2 曾把它误当成缺理由的缺格,v2.3 修正)。**默认原则只管分类内部**:一个渠道一旦确定要出某个分类,该分类的成员就都要在它的池子里,缺席须有已登记的规则。 原四备选(① 专长专属三选一 ② 行为条件投放 ③ 计步保底 ④ 双池分离)已被上述定案覆盖——定案≈备选①的确定性路线,余三备选不再单独推进。**节点类型不扩类**:机制类挂在 Boss 节点兑付面上(击败后追加一次专长三选一),[关卡节点地图](systems/冒险循环/关卡节点地图.md) 的节点类型仍为封闭枚举五种——此前的"是否新增节点类型"悬案由此收口。 @@ -63,7 +65,9 @@ **回复应在商店内**(用户 2026-10-05 定):回复不是计价物,套不上「计价物不自售」,按默认原则它应当在商店出现。现行 `shop.tres` 货架只有 attack / max_hp / armor / ap 四项,**现状与表格不对齐,须在实施批补上**。 -**待拍板/待观察三项**:① **资源与机会类的命名**(候选:资源 / 补给 / 余量);**回复是否属该类**(也可能独立成第四类——它是否出现在商店与此无关,两回事)。② **专长门票尚未入表**:出现概率 / 配额 / 全局限量三个参数都没有事实源,入池同样受档位结构锚约束。③ **专长总量与档位阈值的匹配**:终局 Boss 不给已定,一局确定性兑付次数=终局前 Boss 个数(三关=两次),而档位阈值是同标签 2 件档一 / 4 件档二——档二须靠门票补齐,是否合预期归曲线调参批观察。 +**待拍板/待观察三项**:① **资源与机会类的命名**(候选:资源 / 补给 / 余量);**回复是否属该类**(也可能独立成第四类——它是否出现在商店与此无关,两回事)。② **专长门票尚未入表**:出现概率 / 配额 / 全局限量三个参数都没有事实源,入池同样受档位结构锚约束。③ **专长总量与档位阈值的匹配——延后复裁**(用户 2026-10-05 定"先不调整"):终局 Boss 不给已定,一局确定性专长次数=终局前 Boss 个数;**三关结构下是两次,加门票最多三次**,而档位阈值是同标签 ≥2 档一 / ≥4 档二——**档二(完全体)在三关结构下几乎不可达**。用户决定不动,理由是**后续会有第四关**,且届时可能另做获取侧调整。**复裁触发:第四关内容批落地后实测,配合仍太少再调。** 先不调≠不成问题,登记于此防忘。 +④ **charge 标签件数不足(数据缺陷,独立登记,勿被上条盖掉)**:档二要求同标签 ≥4 件,而 `relics.tres` 里 charge 标签**只有 3 件**——即使获取次数无限,charge 流派也永远达不到档二。这与渠道结构无关,是数据层缺陷。 +⑤ **顶层命名待定**:「奖励」与「收益」用户都觉得不妥,拟自造一个"进益兼备"的名词(候选:进益 / 造化 / 机缘 / 遇获),**定了之后要回头改本文档名、全文称谓、entities 条目名与代码词族**。注意:代码里 `reward_pick` 流 / `reward_node` context / `reward_preview` kind 已占用 reward 词族,`feature_* → reward_*` 那条对齐待办**不能照做**(会撞车)。 **归属**:[奖励](systems/冒险循环/奖励.md)(定义与交叉开关表)+ [node-reward](ux/node-reward.md)(令牌池与奖励面)+ [冒险结构](systems/冒险循环/冒险结构.md)(商店货架保底与货架过滤)+ [关卡节点地图](systems/冒险循环/关卡节点地图.md)(节点类型词表);与上条「双层 BD 延期与备选内容总登记」二期件组相关但不同面。 diff --git a/design/gdd/systems/冒险循环/奖励.md b/design/gdd/systems/冒险循环/奖励.md index a17cadc4..99a520a4 100644 --- a/design/gdd/systems/冒险循环/奖励.md +++ b/design/gdd/systems/冒险循环/奖励.md @@ -113,7 +113,12 @@ **这张表的形状**:Boss 渠道是**专长的独占渠道**,也是唯一**直接**给专长的渠道;奖励节点与商店不直接给专长,但会出现通往专长的**门票**。另两类不走 Boss 渠道,只在奖励节点与商店两个并行出口出现。三条渠道的分工因此是"一块独占 + 两块并行",不是三块平分。这条形状本身要记住:它意味着专长的获取节奏与其他奖励的获取节奏**由完全不同的机制决定**——前者靠打赢,后者靠抽取与购买。 -**默认原则(用户 2026-10-05 定)**:**除了显式登记的特殊规则,一个分类里的东西都要在它该出现的渠道池子里。** 也就是说这张表的默认值是"出",任何"不出现"都必须登记一条理由,没有理由的缺格是缺陷不是设计。 +**渠道定位 vs 默认原则(两句,别混)**: + +- **渠道出哪些分类,是渠道轴自己的定位决定,不是例外**——Boss 渠道只出专长,所以另两类在此"不出现",这是"Boss 是专长独占渠道"的同义表述,不需要另外找理由。 +- **默认原则只管分类内部**(用户 2026-10-05 定):一个渠道一旦确定要出某个分类,**该分类的成员就都要在这个渠道的池子里**。它的默认值是"出",任何成员缺席都必须有已登记的规则,没有理由的缺席是缺陷不是设计。 + +两条的管辖范围不同:前者决定"这张表的格子填不填",后者决定"填了的格子里装不装得全"。 #### 2.1 机制类的主渠道:终局前 Boss 击败后 @@ -125,19 +130,34 @@ #### 2.2 专长门票:非 Boss 渠道怎么给专长 -奖励节点与商店**不直接给专长**——它们给的是一张**门票**:一个名为「专长获取」的奖励项,选中或买下之后,立刻开一次专长 N 选一(N 与 Boss 渠道的候选数同源)。 +奖励节点与商店**不直接给专长**——它们给的是一张**门票**:一个名为「专长获取」的奖励项,选中或买下之后,**立刻**开一次专长 N 选一(N 与 Boss 渠道的候选数同源)。 **它归机制类,不归资源与机会类**:它给的不是"余量",而是"一件你以前不会的事"——只是把选择推迟到一次三选一。按 1.4 的分类判据(去掉它之后角色少了什么),它属于机制类。所以在交叉表上,机制类在非 Boss 渠道的表现是**只以门票形式出现**,不是"不出现"。 **为什么非 Boss 渠道只给门票**:如果商店也能直接买到一个指定的专长,玩家就能用金币把构筑买出来,Boss 渠道的"打赢才拿到"就失去意义了。门票保留了惊喜(开出来的还是三选一,不是指定),但不让玩家用钱直接定点购买。 -它的三个性质: +##### 门票的三个性质 -- **不推翻确定性**:专长的主渠道仍然是 Boss 击败后,玩家不会因为没抽到门票就构筑不起来; -- **只在旁路制造兴奋**:它不常来(奖励节点)或要花额外的钱(商店),来了就是"这一局走运了",让人有记忆点; -- **罕见且全局限量**:配额极小,且一局内的总量有上限——防止它变成第二条专长渠道,也防止它冲垮档位阈值。 +- **拿到即开,不可囤积**(用户 2026-10-05 定):门票不进持有集,选中或买下的同一时刻就开专长三选一。玩家不能攒几张一次连开——可囤积会让玩家把关键决策无限推迟到最优时机,破坏 Boss 渠道的节奏感;而且"攥着一张票"就是把持有物语义从后门放回来了。它叫"道具"只是卡面表现,不是持有物。 +- **不推翻确定性**:专长的主渠道仍然是 Boss 击败后,玩家不会因为没抽到门票就构筑不起来。 +- **罕见只在概率,不在价格**:门票的"罕见"**只体现在它出现的概率上**——它在货架上的价格与其他商品相当,不靠高价劝退。一局内**限购一次**(现行口径)。 -玩家视角它长这样:在普通的三选一奖励或商店货架里,偶尔会冒出一张不一样的卡——拿到它,立刻再开一次专长选择。它是奖励面里的惊喜,不是奖励面的常态。 +##### 保底:第 6 次必出 + +光靠概率,运气差的玩家可能整局都见不到门票——那就等于这个机制对他不存在。所以门票带一条**计步保底**: + +> 连续 5 次三选一展示中没有出现门票,**第 6 次展示必定出现**。 + +| 项 | 口径 | +|---|---| +| 计数对象 | 三选一的**展示次数**,不是"节点次数"——**刷新后的重新展示计入次数**(用户 2026-10-05 明定含刷新) | +| 计数范围 | 奖励节点与商店**共享同一计数**,不各算各的 | +| 触发后 | 计数清零,重新累计 | +| 与限购的关系 | 一局限购一次;**已经买过(限购用满)之后,保底不再触发**——门票已经用掉了,没有再给的理由 | + +**为什么是"展示次数"而不是"节点次数"**:保底要保的是"玩家看到的脸",刷新本来就是让玩家多一次看脸的机会,若刷新不计入,保底与刷新两套机制会打架——玩家可以用刷新绕开保底的计数语义。 + +玩家视角它长这样:在普通的三选一奖励或商店货架里,偶尔会冒出一张不一样的卡——拿到它,立刻再开一次专长选择。它是奖励面里的惊喜,不是奖励面的常态;而连续几次没见到之后,它一定会来一次。 #### 2.3 商店口径:训练 @@ -182,6 +202,7 @@ |---|---|---| | 金币不进商店 | 二层·谓词 | 计价物不自售——商店的计价物是 GP | | 机制类在非 Boss 渠道只给门票 | 一层·分类自身的形态 | 见 2.2——防止用钱定点买构筑 | +| 属性提升类与资源与机会类不出现在 Boss 渠道 | **不是约束** | 见 2.1——这是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖 | #### 2.5 在册事项 @@ -264,7 +285,9 @@ 7. 刷新次数不进角色加算区——它只改三选一界面的可用重抽次数。 8. 金币与回复不进持有集——它们是即时兑付,拿到即消费完。 9. 金币不出现在商店货架上——这是「计价物不自售」谓词算出来的结果,不是给金币单独立的一个分类;它确实是在分类白名单之外加的一道过滤,只是这道过滤可自动计算而非靠枚举。 -10. 除已登记的两条约束外(见 2.4 末尾的清单),一个分类里的东西都在它该出现的渠道池子里——任何"不出现"都必须有理由,没理由的缺格是缺陷。 +10. 一个渠道一旦确定要出某个分类,该分类的成员就都在它的池子里——"渠道出哪些分类"不受这条约束,那是渠道轴的定位。 +11. 门票拿到即开,不进持有集,玩家无法囤积——选中或买下的同一时刻就开专长三选一。 +12. 门票带有计步保底:连续 5 次三选一展示未出现则第 6 次必出;计数跨奖励节点与商店共享,刷新后的重新展示计入次数,限购用满后保底不再触发。 ## 待办 @@ -274,8 +297,9 @@ - **资源与机会类的命名待定**:候选「资源」「补给」「余量」,取决于以哪层共性为主。定了之后要回头改本文件的类名与 registry。 - **回复是否属资源与机会类待确认**:它是即时兑付,与金币同类;也可能独立成第四类。它**在商店内**(不是计价物,套不上「计价物不自售」)——现行 `shop.tres` 货架只有攻击 / 生命上限 / 护甲 / 行动点四项,**现状与表格不对齐,须在实施批补上**。 -- **专长门票尚未入表**:出现概率、配额、全局限量三个参数都没有事实源;入池时同样受档位结构锚约束(改总量须重裁而非调参)。 -- **机制类总量与档位阈值的匹配**:终局 Boss 不给已定,一局的确定性专长兑付次数由"终局前 Boss 的个数"决定。三关结构下是两次,刚好够同标签 2 件档一,档二(4 件)要靠门票补齐。是否合预期归曲线调参批观察。 +- **专长门票尚未入表**:出现概率、配额、限购次数、保底计数阈值四个参数都没有事实源;入池时同样受档位结构锚约束(改总量须重裁而非调参)。 +- **专长总量与档位阈值的匹配——延后复裁(用户 2026-10-05 定"先不调整")**:终局 Boss 不给已定,一局确定性专长次数=终局前 Boss 的个数。三关结构下是两次,加上门票最多三次,而档位阈值是同标签 ≥2 档一 / ≥4 档二——**档二(完全体)在三关结构下几乎不可达**。用户决定不动,理由是后续会有第四关,且届时可能另做获取侧的调整。**复裁触发条件:第四关内容批落地后实测,若配合仍太少再调**。登记于此防止它被忘掉。 +- **charge 标签件数不足(数据缺陷,独立登记)**:档二要求同标签 ≥4 件,而 `relics.tres` 里 charge 标签**只有 3 件**——即使获取次数无限,charge 流派也永远达不到档二。这与渠道结构无关,是数据层缺陷,随上一条一并延后,但不要被上一条盖掉。 ## 版本历史 @@ -286,4 +310,5 @@ | v1.2 | 2026-10-05 | 专长渠道落定:关底 Boss 击败后兑付,不新增节点类型;罕见旁路明确为"普通奖励里的专长 N 选一"。 | | **v2.0** | 2026-10-05 | **顶层改名为「奖励」并重构为两根轴**。改名动因:筐里既装"角色自身的变化"也装金币这类一次性兑付物,用"自身提升 vs 持有物"已切不开,边界判据改由生命周期承担——**当局清零的是奖励,跨局带走的是魔法道具**。分类由两类改为**三个枚举**:机制类(专长)/ 属性提升类(生命·AC·攻击)/ 资源与机会类(行动点上限·刷新次数·金币·回复,命名待定)。新增第 2 节分类 × 渠道交叉开关表,明确两根轴互不决定;金币与回复不再被当作"该移出去的脏东西",而是安置在资源与机会类里,同时把它们的即时兑付性质显式登记为类内异质性。 | | v2.1 | 2026-10-05 | **交叉表收口(用户拍板)**:Boss 渠道**只出专长**,属性提升类与资源与机会类在此均不出现——三条渠道的形状定为"一块独占 + 两块并行",专长靠打赢、其余靠抽取与购买。Boss 兑付明确为**终局前**的 Boss,终局 Boss 不给(无后续关卡可消费)。新增 2.4 节**「计价物不自售」规则**:金币不进商店既不拆分类也不开特例,而是写成两轴交叉处的一条约束——商店的计价物是金币,故金币不进商店;按"能不能进商店"反推分类等于用渠道轴去切分类轴,两根轴会缠回去。 | +| v2.3 | 2026-10-05 | **门票机制细化 + 默认原则表述修正**。① 门票**拿到即开、不可囤积**(用户定)——不进持有集,防止玩家把关键决策无限推迟,也防持有物语义从后门回来。② 门票的"罕见"**只在概率不在价格**,一局限购一次,并加**计步保底**:连续 5 次三选一展示未出现则第 6 次必出;计数跨奖励节点与商店共享、**刷新后的重新展示计入**(用户明定含刷新),限购用满后保底不再触发。③ **修正 v2.2 的误读**:把"分类在某渠道不出现"当成需要理由的缺格是错的——渠道出哪些分类是渠道轴的定位(Boss 只出专长),不是例外;默认原则只管**分类内部**的成员齐不齐。④ 专长总量与档位阈值的匹配按用户决定**延后**(待第四关内容批后实测复裁),另单独登记 charge 标签仅 3 件、永远达不到档二的数据缺陷。 | | v2.2 | 2026-10-05 | **门票形态 + 约束分层 + 默认原则**。① 用户明确:奖励节点与商店不直接给专长,而是给一个**「专长获取」道具**,拿到后开专长三选一——交叉表机制类在两渠道由"不出现"改为"**门票形式**";门票归机制类(给的是一件以前不会的事,只是把选择推迟),理由是防止用钱定点买构筑。② 用户质疑「计价物不自售」本质是特判——**承认成立**:它确实是在分类白名单之外加的一道过滤,与死特判的区别在于把"枚举例外"变成"**可计算谓词**"(新渠道/新奖励自动判定)。2.4 改写为**三层约束**(分类白名单 / 可计算谓词 / 显式例外清单),并给出判断标准:结构性原因可写成谓词,设计性原因只能进清单且每条须写理由;三个方案(单独分类 / 谓词 / 死特判)的代价并列摆出,不藏折中。③ 用户定**默认原则**:除已登记的特殊规则外,分类内的东西都要在池子里——据此**回复应在商店内**,现行 shop.tres 货架缺它是"现状与表格不对齐",须在实施批补上。 | diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 7cd66113..87c774d4 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -579,15 +579,15 @@ entities: owner: design/gdd/systems/冒险循环/奖励.md attributes: definition: 一次冒险之内通过各渠道给予玩家的增益总称——奖励节点给的、商店买的、打赢关底 Boss 给的,都是奖励。装的是"这一局你捞到了什么",不管从哪个渠道来 - channel_constraint_layers: 渠道约束分三层——一层 分类白名单(分类轴决定渠道);二层 可计算谓词(渠道与奖励的结构性关系,如「计价物不自售」:X 是渠道 C 的计价物 → X 不进 C;新渠道/新奖励自动判定,不用改表);三层 显式例外清单(人为设计选择,只能逐条加,每条须写理由)。要害不是有没有例外,而是例外能不能被算出来——结构性原因写成谓词,设计性原因进清单。在册约束两条:①金币不进商店(二层·谓词)②机制类在非 Boss 渠道只给门票(一层·分类形态)。**「计价物不自售」形式上确是在白名单外加的一道过滤(用户质疑成立),与死特判的区别在于把枚举例外变成计算谓词** + channel_constraint_layers: 渠道约束分三层——一层 分类白名单(分类轴决定渠道);二层 可计算谓词(渠道与奖励的结构性关系,如「计价物不自售」:X 是渠道 C 的计价物 → X 不进 C;新渠道/新奖励自动判定,不用改表);三层 显式例外清单(人为设计选择,只能逐条加,每条须写理由)。要害不是有没有例外,而是例外能不能被算出来——结构性原因写成谓词,设计性原因进清单。在册约束两条:①金币不进商店(二层·谓词)②机制类在非 Boss 渠道只给门票(一层·分类形态)。**注意**:属性提升类/资源与机会类不出现在 Boss 渠道**不是约束**——那是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖。**「计价物不自售」形式上确是在白名单外加的一道过滤(用户质疑成立),与死特判的区别在于把枚举例外变成计算谓词** axes: 两根互不决定的轴——**分类轴**(给的是什么)与**渠道轴**(从哪来)。一个奖励属于哪个分类不决定它从哪个渠道来;交叉关系由 [奖励](design/gdd/systems/冒险循环/奖励.md) 第 2 节开关表定死 categories: 封闭三类 {机制类, 属性提升类, 资源与机会类}(v2.0 起;v1.1 曾用两类、v1.0 曾用 {rule, stat},均已作废)。机制类(专长 Feat)——在结算管线某个挂点上给自己加一条规则,同标签持有项数达阈值时质变,事实源 relics.tres;属性提升类(ASI)——抬高生命上限 / AC / 攻击三轴基础值,进冒险加算区,事实源 adventure.tres;资源与机会类(命名待定)——给"可用的量",不抬高战斗属性也不改规则:行动点上限 / 刷新次数 / 金币 / 回复,不进加算区、多数不进持有集,事实源 adventure.tres scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,机制类与属性提升类跨关携带、关间不清零,金币与回复即时兑付;归属范围 = 不进账号永久进度,不带到下一次冒险 lifecycle: 候选池构建(冒险开局一次)→ 在渠道上出现(三选一形式)→ 选定(自池中剔除不再复现;选到「专长获取」时立刻再开一次专长 N 选一)→ 持有生效或即时兑付 → 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 - acquisition: 三条渠道的**目标分工(交叉开关,v2.2 收口)**——机制类:主渠道=**终局前** Boss 击败后(**唯一直接给的渠道**,不新增节点类型、挂 Boss 节点兑付面;终局 Boss 不给——无后续关卡可消费),奖励节点与商店**只给「专长获取」门票**(拿到后开专长三选一,门票归机制类——给的是一件以前不会的事,只是把选择推迟;理由=防用钱定点买构筑);属性提升类:奖励节点 + 商店(口径「训练」);资源与机会类:奖励节点 + 商店(**金币除外、回复在内**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**默认原则**:除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里——任何不出现都须登记理由**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 + acquisition: 三条渠道的**目标分工(交叉开关,v2.2 收口)**——机制类:主渠道=**终局前** Boss 击败后(**唯一直接给的渠道**,不新增节点类型、挂 Boss 节点兑付面;终局 Boss 不给——无后续关卡可消费),奖励节点与商店**只给「专长获取」门票**——**拿到即开、不可囤积**,不进持有集(选中/买下同一时刻开专长三选一;可囤积会让玩家无限推迟关键决策,且把持有物语义从后门放回)。门票归机制类(给的是一件以前不会的事,只是把选择推迟)。罕见**只在概率不在价格**,一局限购一次,**计步保底**:连续 5 次三选一展示未出现→第 6 次必出(计数=展示次数、刷新重展计入、奖励节点与商店共享、触发清零、限购用满后不再触发);属性提升类:奖励节点 + 商店(口径「训练」);资源与机会类:奖励节点 + 商店(**金币除外、回复在内**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**默认原则**:除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里——任何不出现都须登记理由**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 boundary: 判据走生命周期——**一次冒险内获得、冒险收束即清零的是奖励;跨冒险跟着你走的是魔法道具**。奖励永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 data_sources: relics.tres(机制类定义行)/ adventure.tres(属性提升类与资源与机会类的种类配额与值)/ shop.tres(货架取舍) - open_questions: ①资源与机会类的命名待定(候选 资源 / 补给 / 余量);②类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同;③回复是否属资源与机会类待确认(也可能独立成第四类)——它**应在商店内**(不是计价物,套不上计价物不自售),现行 shop.tres 货架缺它是现状与表格不对齐,须实施批补上;④专长门票尚未入表(出现概率/配额/全局限量无事实源);⑤确定性渠道一局两次专长 vs 档位阈值(同标签 2 件档一 / 4 件档二)是否匹配,归曲线调参批观察 + open_questions: ①资源与机会类的命名待定(候选 资源 / 补给 / 余量);②类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同;③回复是否属资源与机会类待确认(也可能独立成第四类)——它**应在商店内**(不是计价物,套不上计价物不自售),现行 shop.tres 货架缺它是现状与表格不对齐,须实施批补上;④专长门票尚未入表(出现概率/配额/全局限量无事实源);⑤确定性渠道一局两次专长 vs 档位阈值(同标签 ≥2 档一 / ≥4 档二)——**档二在三关结构下几乎不可达**,用户定延后复裁(触发=第四关内容批后实测);⑥charge 标签仅 3 件、永远达不到档二(数据层缺陷,独立登记);⑦顶层命名待定(奖励/收益均不妥,拟造词)——**代码 reward 词族已被 reward_pick/reward_node/reward_preview 占用,feature_* → reward_* 对齐待办不能照做** naming_note: 2026-10-05 命名统一 + 两次重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),v1.0 统一为「特性」,v2.0 改名为「奖励」(因筐里也装金币这类一次性兑付物,"自身提升 vs 持有物"已切不开,判据改由生命周期承担)。代码侧 `feature_*` 词族尚未随之换到 `reward_*`,属临时态,登记于 06-待办清单 referenced_by: [冒险结构, 关卡节点地图, 战斗结算, 行动经济, 地形变异, HUD框架, 魔法道具, 元进度, 数据配置] From a2ce5d7e01b11ad95828630eec47aa0275b1f6f6 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 05:25:28 +0800 Subject: [PATCH 07/15] =?UTF-8?q?=E5=A5=87=E7=89=A9=20v2.4=EF=BC=9A?= =?UTF-8?q?=E9=A1=B6=E5=B1=82=E5=AE=9A=E5=90=8D=20Wondrous=20Item=EF=BC=88?= =?UTF-8?q?=E5=A5=87=E7=89=A9=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 顶层概念由「奖励」改名为「奇物」(Wondrous Item)。 定名依据:DND 魔法物品九分类中的 Wondrous Item,官方中文译名即「奇物」, 是专装"不好归类但有奇效之物"的兜底杂类。选它的理由——本概念下三个分类 (规则 / 数字 / 余量)本来就没有共同点,能把它们拢在一起的只有一个 "不好归类但有用"的名字,而奇物天生就是干这个的。 落选者(都登记在 06 备查): - Treasure(宝物):DMG 第 7 章正式术语,定义含 coins/gems/art objects/ magic items,四条筛选全中,但偏"财物",装不下专长这种 "你会了件以前不会的事" - Relic:roguelike 品类惯例(杀戮尖塔 / Soulbound / 铲子骑士 Pocket Dungeon / Die in the Dungeon,后两个明确"局内可买可捡、run 结束清零",与本作同构), 但用户已否决「遗物」 - 全部自造词(进益 / 造化 / 机缘 / 遇获):用户否决 **代码词族定为 curio_* / ADVENTURE_CURIO,不用 reward_***—— reward_pick(rng 封闭流 scope)/ reward_node(grant_aux_item context)/ reward_preview(道具 kind)已占用 reward 词族,照 reward_* 对齐会撞车。 06 里原「feature_* → reward_* 对齐」待办据此改写为 → curio_*。 改名范围(文档名 奖励.md → 奇物.md): - 全文称谓、判据句(当局清零的是奇物,跨局带走的是魔法道具) - 1.5 命名出处节重写(补 Wondrous Item 出处与落选理由) - 02-系统清单:文档树行改名、ADVENTURE_REWARD → ADVENTURE_CURIO、v1.7/v1.8 - 06-待办清单:链接与称谓、三层约束表、命名统一后续条目(目标词族改 curio_*)、 「顶层命名待定」条目改为已定 - entities.yaml:reward → curio、owner 路径、正文称谓(保护「奖励节点」) - battle.md / level-map.md:奇物列表;HUD框架.md:奇物段先例 - 两个 schema 概念指路注释 **保护未动**:「奖励节点」(渠道名)、格面奖励 / 清图奖励 / 大奖励 / 节点奖励 / 奖励重构等历史与他概念用词——全部逐条核对未误伤。 数据层数值零变更;未 merge 回 master(本会话零测试)。 --- design/gdd/02-系统清单.md | 6 +- design/gdd/06-待办清单.md | 22 +-- .../gdd/systems/冒险循环/{奖励.md => 奇物.md} | 67 ++++--- design/gdd/systems/表现与支撑/HUD框架.md | 4 +- design/gdd/ux/battle.md | 10 +- design/gdd/ux/level-map.md | 2 +- design/registry/entities.yaml | 168 +++++++++--------- game/data/schemas/adventure_table.gd | 4 +- game/data/schemas/relic_table.gd | 6 +- 9 files changed, 145 insertions(+), 144 deletions(-) rename design/gdd/systems/冒险循环/{奖励.md => 奇物.md} (89%) diff --git a/design/gdd/02-系统清单.md b/design/gdd/02-系统清单.md index 96c526bf..1281c26b 100644 --- a/design/gdd/02-系统清单.md +++ b/design/gdd/02-系统清单.md @@ -45,7 +45,7 @@ | `关卡节点图生成.md` | 单关节点图的逐局随机来源:图模板池、抽签与实例化(实施排队 ADR-0007 裁决后) | 设计草案·拍板点全落文 | | `冒险结构.md` | 整局冒险的关卡序列、失败与大奖励 | 已定稿·自旧体系迁移 | | `难度曲线与Boss.md` | 难度曲线、期望值带与 Boss 设计 | 已定稿·自旧体系迁移 | -| `奖励.md` | 一次冒险内各渠道给予玩家的增益总称(机制类 / 属性提升类 / 资源与机会类三个枚举 × 奖励节点·商店·Boss 击败后三条渠道) | 已实现·2026-10-05 新立定义·v2.0 改名并重构为两根轴 | +| `奇物.md` | 一次冒险内各渠道给予玩家的增益总称(机制类 / 属性提升类 / 资源与机会类三个枚举 × 奖励节点·商店·Boss 击败后三条渠道) | 已实现·2026-10-05 新立定义·v2.0 改名并重构为两根轴 | ### 跨局循环(`systems/跨局循环/`) @@ -97,7 +97,7 @@ | 冒险循环 | 关卡节点图生成 | `NODE_MAP_GENERATION` | —(新立无旧代号) | | 冒险循环 | 冒险结构 | `ADVENTURE_STRUCTURE` | c2 | | 冒险循环 | 难度曲线与Boss | `DIFFICULTY_CURVE` | c3 | -| 冒险循环 | 奖励 | `ADVENTURE_REWARD` | `ADVENTURE_FEATURE`(2026-10-05 v2.0 改名退役) | +| 冒险循环 | 奇物 | `ADVENTURE_CURIO` | `ADVENTURE_FEATURE`(v1.0)→ `ADVENTURE_REWARD`(v2.0,v2.4 退役) | | 跨局循环 | 元进度 | `META_PROGRESS` | c4 | | 表现与支撑 | HUD框架 | `HUD_FRAMEWORK` | d1 | | 表现与支撑 | 数据配置 | `DATA_CONFIG` | d2 | @@ -132,3 +132,5 @@ | v1.4 | 2026-10-05 | 《特性》v1.1 分类重构:两类由"规则改写型 / 属性加成型"改为"属性提升(ASI)/ 专长(Feat)",属性提升内部再分纯属性组与特殊组;获取途径由两口共用池改为三条分工渠道(专长走特定节点、属性提升走奖励节点与商店)+罕见旁路"专长获取" | | v1.5 | 2026-10-05 | 《特性》改名为《奖励》并升 v2.0:顶层概念改为"一次冒险内各渠道给予玩家的增益总称",边界判据由"自身提升 vs 持有物"改为生命周期(当局清零的是奖励,跨局带走的是魔法道具);分类由两类扩为三个枚举(机制类 / 属性提升类 / 资源与机会类),并新增分类 × 渠道交叉开关表——两根轴互不决定。文档树冒险循环行改名 + 命名对照表 `ADVENTURE_FEATURE` → `ADVENTURE_REWARD` | | v1.6 | 2026-10-05 | 《奖励》v2.1 交叉表收口:Boss 渠道只出专长(终局 Boss 不给),另两类在此不出现;新增「计价物不自售」规则处理金币不进商店——不拆第四个分类、不开特例,而是两轴交叉处的一条约束 | +| v1.7 | 2026-10-05 | 《奖励》v2.2:机制类在非 Boss 渠道改为「专长获取」门票形式(不直接给专长);渠道约束重构为三层(分类白名单/可计算谓词/显式例外清单),并承认「计价物不自售」形式上是白名单外的一道过滤、与死特判的区别在可计算;立默认原则——除已登记规则外分类内的都要在池子里,据此回复应在商店内(现行货架缺它,须补) | +| v1.8 | 2026-10-05 | 《奖励》改名为《奇物》并升 v2.4:顶层定名 Wondrous Item(DND 魔法物品九分类中的兜底杂类,官方中文译名「奇物」)。文档树冒险循环行改名;命名对照表 `ADVENTURE_REWARD` → `ADVENTURE_CURIO`(**不用 `reward_*`**——`reward_pick` 流 / `reward_node` context / `reward_preview` kind 已占用该词族) | diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index 89b04bf8..faf8029c 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -27,7 +27,7 @@ #### 冒险 BD 各分类获取同渠道、纯概率差——渠道分工目标态(2026-10-04 提问登记;2026-10-05 用户定分工) -**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **奖励**(2026-10-05 定名,v2.0 由「特性」改名,定义见 [奖励](systems/冒险循环/奖励.md)),下分**三个枚举分类**:**机制类**(专长——改规则、带流派标签与档位激活,构筑核心)、**属性提升类**(生命/AC/攻击三轴,写统一加算区;账本实为冒险域、关间不清零)、**资源与机会类**(行动点上限·刷新次数·金币·回复——给"可用的量",命名待定)。旧称「流派件 / 数值件 / 本关强化」一律作废;v1.0 的「规则改写型 / 属性加成型」与 v1.1 的两分类亦作废。现行三个分类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),机制类只占稀有/罕见档(与属性大件混编),商店仅「货架零专长挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 +**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **奇物**(2026-10-05 定名,v2.4 由「奖励」改名、v2.0 由「特性」改名,定义见 [奇物](systems/冒险循环/奇物.md)),下分**三个枚举分类**:**机制类**(专长——改规则、带流派标签与档位激活,构筑核心)、**属性提升类**(生命/AC/攻击三轴,写统一加算区;账本实为冒险域、关间不清零)、**资源与机会类**(行动点上限·刷新次数·金币·回复——给"可用的量",命名待定)。旧称「流派件 / 数值件 / 本关强化」一律作废;v1.0 的「规则改写型 / 属性加成型」与 v1.1 的两分类亦作废。现行三个分类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),机制类只占稀有/罕见档(与属性大件混编),商店仅「货架零专长挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 **用户定案(2026-10-05,v2.1 收口)**:分类 × 渠道交叉开关表—— @@ -51,10 +51,10 @@ **渠道约束分三层(v2.2,用户质疑后重构)**:用户问"计价物不自售不就是特判吗"。**诚实结论:形式上是的**——它确实是在分类白名单之外加的一道过滤,不是从分类推出来的。但和死特判有实质区别: -| 层 | 是什么 | 新增渠道/奖励时 | +| 层 | 是什么 | 新增渠道/奇物时 | |---|---|---| | 一层 分类白名单 | 分类轴决定渠道 | 新分类按判据归类,自动继承 | -| 二层 **可计算谓词** | 渠道与奖励的**结构性**关系 | **自动判定,不用改表** | +| 二层 **可计算谓词** | 渠道与奇物的**结构性**关系 | **自动判定,不用改表** | | 三层 显式例外清单 | 人为设计选择,无内在理由 | **只能逐条加,每条须写理由** | 死特判="GP 不进商店"(一条记录,每多一个例外加一条,靠记忆维护);谓词="X 是渠道 C 的计价物 → X 不进 C"(一个函数,自动判定)。**它没有消除"在白名单外加过滤",只是把它从枚举例变成了计算谓词。** 判据:结构性原因(计价物/即时兑付/先决条件)可写成谓词;设计性原因只能进三层清单。**要害不是有没有例外,而是例外能不能被算出来。** @@ -67,23 +67,23 @@ **待拍板/待观察三项**:① **资源与机会类的命名**(候选:资源 / 补给 / 余量);**回复是否属该类**(也可能独立成第四类——它是否出现在商店与此无关,两回事)。② **专长门票尚未入表**:出现概率 / 配额 / 全局限量三个参数都没有事实源,入池同样受档位结构锚约束。③ **专长总量与档位阈值的匹配——延后复裁**(用户 2026-10-05 定"先不调整"):终局 Boss 不给已定,一局确定性专长次数=终局前 Boss 个数;**三关结构下是两次,加门票最多三次**,而档位阈值是同标签 ≥2 档一 / ≥4 档二——**档二(完全体)在三关结构下几乎不可达**。用户决定不动,理由是**后续会有第四关**,且届时可能另做获取侧调整。**复裁触发:第四关内容批落地后实测,配合仍太少再调。** 先不调≠不成问题,登记于此防忘。 ④ **charge 标签件数不足(数据缺陷,独立登记,勿被上条盖掉)**:档二要求同标签 ≥4 件,而 `relics.tres` 里 charge 标签**只有 3 件**——即使获取次数无限,charge 流派也永远达不到档二。这与渠道结构无关,是数据层缺陷。 -⑤ **顶层命名待定**:「奖励」与「收益」用户都觉得不妥,拟自造一个"进益兼备"的名词(候选:进益 / 造化 / 机缘 / 遇获),**定了之后要回头改本文档名、全文称谓、entities 条目名与代码词族**。注意:代码里 `reward_pick` 流 / `reward_node` context / `reward_preview` kind 已占用 reward 词族,`feature_* → reward_*` 那条对齐待办**不能照做**(会撞车)。 +⑤ ~~顶层命名待定~~ **已定(v2.4)=「奇物」Wondrous Item**:DND 魔法物品九分类中的兜底杂类,官方中文译名即「奇物」,专装"不好归类但有奇效之物"——正好对应三个互不相干的分类。落选:Treasure(偏财物,装不下专长)、Relic(品类惯例,用户否决「遗物」)、全部自造词(进益/造化/机缘/遇获)。**代码词族随之定为 `curio_*` / `ADVENTURE_CURIO`**——原计划的 `feature_* → reward_*` 对齐**作废**:`reward_pick` 流 / `reward_node` context / `reward_preview` kind 已占用 reward 词族,照做会撞车。 -**归属**:[奖励](systems/冒险循环/奖励.md)(定义与交叉开关表)+ [node-reward](ux/node-reward.md)(令牌池与奖励面)+ [冒险结构](systems/冒险循环/冒险结构.md)(商店货架保底与货架过滤)+ [关卡节点地图](systems/冒险循环/关卡节点地图.md)(节点类型词表);与上条「双层 BD 延期与备选内容总登记」二期件组相关但不同面。 +**归属**:[奇物](systems/冒险循环/奇物.md)(定义与交叉开关表)+ [node-reward](ux/node-reward.md)(令牌池与奖励面)+ [冒险结构](systems/冒险循环/冒险结构.md)(商店货架保底与货架过滤)+ [关卡节点地图](systems/冒险循环/关卡节点地图.md)(节点类型词表);与上条「双层 BD 延期与备选内容总登记」二期件组相关但不同面。 **状态**:分工已定,**实施待排批**;两项待拍板/待观察(2026-10-05 v2.1 更新) #### 资源与机会类两个新种类入池——刷新次数、专长获取(2026-10-05 立) -**现状**:[奖励](systems/冒险循环/奖励.md) v2.0 立了资源与机会类四项,其中**行动点上限**已在池(罕见档)、**金币与回复**已在池,**刷新次数与专长获取两项尚未入表**。注意与既有「商店独立刷新机制」条分清:那条是进店后的免费次数 + GP 刷新(商店自身的服务),本条指的是**作为奖励授予的**重抽次数,两者不是一回事,入池前须先划清边界。 +**现状**:[奇物](systems/冒险循环/奇物.md) v2.0 立了资源与机会类四项,其中**行动点上限**已在池(罕见档)、**金币与回复**已在池,**刷新次数与专长获取两项尚未入表**。注意与既有「商店独立刷新机制」条分清:那条是进店后的免费次数 + GP 刷新(商店自身的服务),本条指的是**作为奖励授予的**重抽次数,两者不是一回事,入池前须先划清边界。 **连带约束**:`FEATURE_KINDS` 词表封闭(断点附随件与牌库剔除态依赖它),扩种类须走 `adventure_table.gd` + registry 同步修订;档位配额是**结构锚**(普通 70 / 稀有 25 / 罕见 3 = 98 张,入 schema validate 硬断言),新种类入池要占配额——**改总量须重裁而非调参**。专长获取须带全局限量(一局内可获得次数上限)。 -**归属**:[奖励](systems/冒险循环/奖励.md) 调参表 + [冒险结构](systems/冒险循环/冒险结构.md) 共享池账本节;数值所有权归 [难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md) +**归属**:[奇物](systems/冒险循环/奇物.md) 调参表 + [冒险结构](systems/冒险循环/冒险结构.md) 共享池账本节;数值所有权归 [难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md) **状态**:待排批——须在可跑冒烟的迭代批次内完成 -#### 内部分类禁写入玩家可见面——奖励呈现三处违规待改(2026-10-04 用户立意登记) +#### 内部分类禁写入玩家可见面——奇物呈现三处违规待改(2026-10-04 用户立意登记) **现状**:用户立意(方向已明确):形态(规则改写型/属性加成型)等内部分类**不得写进玩家可见的名称、介绍词或界面**——玩家可根据效果自行推断类别,游戏不得直接点破。查证实态:26 项机制类奖励的 display_name 全风味名(奥术余烬/贯穿射击/矿工的执拗等,合规,符合 2026-09-29 playnote 既有批评);**违规三处**(均系迭代 12 呈现补齐批所落,承载用户「局内奖励选了什么看不到」反馈——缺口承载需求仍成立,撤的只是分类字样):① 三选一+商店特性卡面第二行印流派名(`battle_narrator.gd` relic_card_text,「奥术余烬 · 魔法」式);② 战斗屏 C 区列表标题(现为「特性」)+逐流派聚合行「魔法 ×2 · 档一」(`hero_info_panel_view.gd` + `hud_presenter.gd` relic_holdings_lines);③ 关卡选择页复用同一聚合文案(`level_map_screen.gd`)。**边界**:效果摘要行(「普攻附加必中伤害」)保留——那是件本身在做什么,是玩家推断归类的依据。 @@ -93,11 +93,11 @@ **状态**:方向已明确(禁写类别),违规改法与档位呈现三路待讨论(2026-10-04 登记,后续展开) -#### 奖励命名统一后续——代码标识符与文件名的对齐(2026-10-05 立) +#### 奇物命名统一后续——代码标识符与文件名的对齐(2026-10-05 立) -**现状**:概念已统一为「奖励」(2026-10-05 v2.0 由「特性」改名,定义见 [奖励](systems/冒险循环/奖励.md))。已完成三件——① 定义文档落位(`design/gdd/systems/冒险循环/奖励.md`);② 称谓统一(代码注释与玩家可见文案,94 处+design/ 侧随改名批同步);③ 数据层标识符统一(`adventure_table.gd` / `adventure.tres` 的常量与字段整体换到 `feature_*` 词族,112 处,值零变更)。 +**现状**:概念已统一为「奇物」(2026-10-05 v2.4 由「奖励」改名、v2.0 由「特性」改名,定义见 [奇物](systems/冒险循环/奇物.md))。已完成三件——① 定义文档落位(`design/gdd/systems/冒险循环/奇物.md`);② 称谓统一(代码注释与玩家可见文案,94 处+design/ 侧随改名批同步);③ 数据层标识符统一(`adventure_table.gd` / `adventure.tres` 的常量与字段整体换到 `feature_*` 词族,112 处,值零变更)。 -**未完四件**:⓪ **`feature_*` 词族随顶层改名再换到 `reward_*`**(2026-10-05 v2.0 新增)——`FEATURE_KINDS` / `feature_quota()` / `feature_value()` / `feature_candidate_count` / `feature_quota_*` / `feature_value_*`,涉及 `adventure_table.gd` + `adventure.tres` 键名 + registry;**注意** `adventure.tres` 的键名是存档外的表数据,换名只动键不减值,但 `FEATURE_KINDS` 是封闭词表、断点附随件与牌库剔除态依赖它,须走本表 + registry 同步修订。① 机制类那套的 relic 词族(RelicTable / relics.tres / relic_id / _relics)与统一词族对齐——文件名与 class_name 改名须同步 Godot `.uid` 与 `.tscn` 引用,非文本层可自证;② 运行层标识符(`_bonus_deck` / `bonus` 加算区 / `_bonus_taken` / `pick_bonus` / BonusInteractController / BonusPickOverlay)换名;③ 断点与存档键(`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`)为存档兼容沿用历史名,是否随存档版本迁移一并换名待定。 +**未完四件**:⓪ **`feature_*` 词族随顶层改名再换到 `curio_*`**(2026-10-05 v2.0 新增、v2.4 改目标词族)——`FEATURE_KINDS` → `CURIO_KINDS` / `feature_quota()` → `curio_quota()` / `feature_value()` → `curio_value()` / `feature_candidate_count` → `curio_candidate_count` / `feature_quota_*` / `feature_value_*`,涉及 `adventure_table.gd` + `adventure.tres` 键名 + registry。**注意两点**:其一,**目标词族是 `curio_*` 不是 `reward_*`**——`reward_pick`(rng 封闭流 scope)/ `reward_node`(`grant_aux_item` context)/ `reward_preview`(道具 kind)已占用 reward 词族,照 `reward_*` 对齐会撞车;其二,`adventure.tres` 的键名是存档外的表数据,换名只动键不减值,但 `FEATURE_KINDS` 是封闭词表、断点附随件与牌库剔除态依赖它,须走本表 + registry 同步修订。① 机制类那套的 relic 词族(RelicTable / relics.tres / relic_id / _relics)与统一词族对齐——文件名与 class_name 改名须同步 Godot `.uid` 与 `.tscn` 引用,非文本层可自证;② 运行层标识符(`_bonus_deck` / `bonus` 加算区 / `_bonus_taken` / `pick_bonus` / BonusInteractController / BonusPickOverlay)换名;③ 断点与存档键(`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`)为存档兼容沿用历史名,是否随存档版本迁移一并换名待定。 **次序建议**:⓪ 与 ① 同为"词族对不齐",可同批;② 涉及运行层最广,单批;③ 须与存档版本迁移一起裁。**顶层已改名而代码仍是 `feature_*`,属"文档与代码分开"的临时态**,应在下一个可跑冒烟的批次内收口。 diff --git a/design/gdd/systems/冒险循环/奖励.md b/design/gdd/systems/冒险循环/奇物.md similarity index 89% rename from design/gdd/systems/冒险循环/奖励.md rename to design/gdd/systems/冒险循环/奇物.md index 99a520a4..598450fa 100644 --- a/design/gdd/systems/冒险循环/奖励.md +++ b/design/gdd/systems/冒险循环/奇物.md @@ -1,33 +1,33 @@ -# 奖励(Reward) +# 奇物(Wondrous Item) -> 一次冒险之内,通过各渠道给予玩家的**增益总称**——奖励节点给的、商店里买的、打赢关底 Boss 给的,都是奖励。它装的是"这一局你捞到了什么",不管从哪个渠道来。 +> 一次冒险之内,通过各渠道给予玩家的**增益总称**——奖励节点给的、商店里买的、打赢关底 Boss 给的,都是奇物。它装的是"这一局你捞到了什么",不管从哪个渠道来。 > > 它是一个概念,不是一套东西。下面有**两根互不相干的轴**: > > - **分类轴**回答"给的是什么"——三个枚举:机制类 / 属性提升类 / 资源与机会类; > - **渠道轴**回答"从哪来"——奖励节点 / 商店 / 关底 Boss 击败后。 > -> 一个奖励属于哪个分类,不决定它从哪个渠道来;反过来也一样。两者的交叉由第 2 节那张开关表定死。 +> 一个奇物属于哪个分类,不决定它从哪个渠道来;反过来也一样。两者的交叉由第 2 节那张开关表定死。 > -> 状态:**已实现**(2026-10-04 双层 BD 实施批落地)。本文件是奖励的唯一定义文档。 +> 状态:**已实现**(2026-10-04 双层 BD 实施批落地)。本文件是奇物的唯一定义文档。 > > 数值纪律:本文件只写概念、取值域与指路;每件给多少、效果是什么一律不进正文,事实源是 `game/data/tables/relics.tres` 与 `game/data/tables/adventure.tres`。 ## 设计目的 -一次冒险要走三关,如果走完时角色和开局毫无区别,中途的每一次取舍就都不算数了。奖励就是那个把"这一局玩成了什么样"落下来的东西:让玩家在冒险过程中不断变强,且每一局变强的方向不同。 +一次冒险要走三关,如果走完时角色和开局毫无区别,中途的每一次取舍就都不算数了。奇物就是那个把"这一局玩成了什么样"落下来的东西:让玩家在冒险过程中不断变强,且每一局变强的方向不同。 -它同时要和跨冒险的成长隔开:永久保留的东西是[魔法道具](../排雷循环/魔法道具.md)(带在身上的物品)与[元进度](../跨局循环/元进度.md)(账号级的树),奖励只在当局存在,冒险收束即清零——它不是"你的存档变强了",而是"这一次下矿的你变强了"。 +它同时要和跨冒险的成长隔开:永久保留的东西是[魔法道具](../排雷循环/魔法道具.md)(带在身上的物品)与[元进度](../跨局循环/元进度.md)(账号级的树),奇物只在当局存在,冒险收束即清零——它不是"你的存档变强了",而是"这一次下矿的你变强了"。 -**边界判据(一句话)**:**一次冒险内获得、冒险收束即清零的,是奖励;跨冒险跟着你走的,是魔法道具。** +**边界判据(一句话)**:**一次冒险内获得、冒险收束即清零的,是奇物;跨冒险跟着你走的,是魔法道具。** -这条判据走的是生命周期,不走"是不是物品"。原因:奖励这个筐里既装"角色自身的变化",也装金币这类一次性兑付物——用"拿在手里 vs 带在身上"去切,切不开它们,但用"当局清零 vs 跨局保留"能一刀切开,且对筐里所有东西都成立。 +这条判据走的是生命周期,不走"是不是物品"。原因:奇物这个筐里既装"角色自身的变化",也装金币这类一次性兑付物——用"拿在手里 vs 带在身上"去切,切不开它们,但用"当局清零 vs 跨局保留"能一刀切开,且对筐里所有东西都成立。 ## 系统范围 | 负责 | 不负责 | |---|---| -| 奖励的定义、三个分类、以及分类与渠道的交叉开关 | 每件效果怎么接入结算——归挂点所属文档([战斗结算](../战斗循环/战斗结算.md)、[行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md)) | +| 奇物的定义、三个分类、以及分类与渠道的交叉开关 | 每件效果怎么接入结算——归挂点所属文档([战斗结算](../战斗循环/战斗结算.md)、[行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md)) | | 生命周期边界:何时出现、何时生效、何时清零 | 卡面排版与界面呈现细则——见 [HUD框架](../表现与支撑/HUD框架.md) | | 获取渠道的口径与约束 | 魔法道具与元进度——归上表两份文档 | | 与相邻概念的边界 | 格面资源、关卡节点、商店本身的规则——归各自所属文档 | @@ -36,17 +36,17 @@ ``` 【关内】排雷推理 → 战斗结算 → 通关 ──┐ - ├─→ 得到一份奖励 ─→ 后续关卡带着它继续 + ├─→ 得到一份奇物 ─→ 后续关卡带着它继续 奖励节点・商店・Boss 击败后 ┘ ``` -奖励处在「一次冒险」这一层:它不是一场战斗里的临时状态,也不跨冒险留存。上游是三条渠道,下游是之后所有关卡的排雷与结算——拿到了,下一关就开始生效。 +奇物处在「一次冒险」这一层:它不是一场战斗里的临时状态,也不跨冒险留存。上游是三条渠道,下游是之后所有关卡的排雷与结算——拿到了,下一关就开始生效。 ## 核心规则 ### 1. 分类轴:三个枚举 -奖励只有一个名词;需要区分时才说它属于哪个分类,不给分类另起名字。 +奇物只有一个名词;需要区分时才说它属于哪个分类,不给分类另起名字。 | 分类 | 它给的是什么 | 落点 | 事实源 | |---|---|---|---| @@ -99,11 +99,9 @@ #### 1.5 命名出处 -机制类与属性提升类都取自 DND 规则书的既有名词:专长对应 Feat,属性提升对应 Ability Score Improvement(ASI)。资源与机会类的命名**待定**——候选是「资源」「补给」「余量」,取决于最终把哪一层的共性当作这一类的主要性质。玩家可见文案只写效果,不出现任何分类名。 +机制类与属性提升类都取自 DND 规则书的既有名词:专长对应 Feat,属性提升对应 Ability Score Improvement(ASI)。**顶层「奇物」取自 DND 魔法物品的九分类之一 Wondrous Item——官方中文译名就是「奇物」,是那个专门装不好归类但有奇效的东西的兜底杂类。** 用它做顶层名的理由:地下城里挖到的、商店里能买到的、能把你变强的、又确实贵重的东西,在 DND 里没有别的总称,只有 Treasure 和 Wondrous Item 两个候选,而 Treasure 偏向财物,装不下专长这种你会了件以前不会的事。奇物天生是杂类兜底,正好对应本概念下三个互不相干的分类(规则 / 数字 / 余量)——它们本来就没有共同点,能拢在一起的只有一个不好归类但有用的名字。资源与机会类内部的命名**待定**。玩家可见文案只写效果,不出现任何分类名。### 2. 渠道轴:与分类的交叉 -### 2. 渠道轴:与分类的交叉 - -三个渠道各只取走分类的一部分。这张表是奖励概念的第二个维度——它和分类轴互不决定,改其中一根不必动另一根。 +三个渠道各只取走分类的一部分。这张表是奇物概念的第二个维度——它和分类轴互不决定,改其中一根不必动另一根。 | 分类 \ 渠道 | 奖励节点 | 商店 | 终局前 Boss 击败后(见 2.1) | |---|---|---|---| @@ -111,7 +109,7 @@ | **属性提升类** | 出 | 出(口径「训练」) | 不出现 | | **资源与机会类** | 出 | 出(**金币除外**,见 2.4) | 不出现 | -**这张表的形状**:Boss 渠道是**专长的独占渠道**,也是唯一**直接**给专长的渠道;奖励节点与商店不直接给专长,但会出现通往专长的**门票**。另两类不走 Boss 渠道,只在奖励节点与商店两个并行出口出现。三条渠道的分工因此是"一块独占 + 两块并行",不是三块平分。这条形状本身要记住:它意味着专长的获取节奏与其他奖励的获取节奏**由完全不同的机制决定**——前者靠打赢,后者靠抽取与购买。 +**这张表的形状**:Boss 渠道是**专长的独占渠道**,也是唯一**直接**给专长的渠道;奖励节点与商店不直接给专长,但会出现通往专长的**门票**。另两类不走 Boss 渠道,只在奖励节点与商店两个并行出口出现。三条渠道的分工因此是"一块独占 + 两块并行",不是三块平分。这条形状本身要记住:它意味着专长的获取节奏与其他奇物的获取节奏**由完全不同的机制决定**——前者靠打赢,后者靠抽取与购买。 **渠道定位 vs 默认原则(两句,别混)**: @@ -126,11 +124,11 @@ **终局 Boss 不给**:兑付只发生在**终局之前的 Boss** 身上——打赢最终 Boss 时冒险已经结束,没有后续关卡可消费,给了也无处生效。三关结构下,一局的确定性专长兑付次数由此确定(每个终局前 Boss 一次)。 -**不新增节点类型**:专长挂在 Boss 节点的兑付面上(击败后追加一次专长三选一),[关卡节点地图](关卡节点地图.md) 的节点类型仍是封闭枚举五种(战斗 / Boss / 奖励 / 恢复 / 商店),词表零扩类。此前"要不要为专长新设一类节点"的悬案由此收口。 +**不新增节点类型**:专长挂在 Boss 节点的兑付面上(击败后追加一次专长三选一),[关卡节点地图](关卡节点地图.md) 的节点类型仍是封闭枚举五种(战斗 / Boss / 奇物 / 恢复 / 商店),词表零扩类。此前"要不要为专长新设一类节点"的悬案由此收口。 #### 2.2 专长门票:非 Boss 渠道怎么给专长 -奖励节点与商店**不直接给专长**——它们给的是一张**门票**:一个名为「专长获取」的奖励项,选中或买下之后,**立刻**开一次专长 N 选一(N 与 Boss 渠道的候选数同源)。 +奖励节点与商店**不直接给专长**——它们给的是一张**门票**:一个名为「专长获取」的奇物项,选中或买下之后,**立刻**开一次专长 N 选一(N 与 Boss 渠道的候选数同源)。 **它归机制类,不归资源与机会类**:它给的不是"余量",而是"一件你以前不会的事"——只是把选择推迟到一次三选一。按 1.4 的分类判据(去掉它之后角色少了什么),它属于机制类。所以在交叉表上,机制类在非 Boss 渠道的表现是**只以门票形式出现**,不是"不出现"。 @@ -157,30 +155,30 @@ **为什么是"展示次数"而不是"节点次数"**:保底要保的是"玩家看到的脸",刷新本来就是让玩家多一次看脸的机会,若刷新不计入,保底与刷新两套机制会打架——玩家可以用刷新绕开保底的计数语义。 -玩家视角它长这样:在普通的三选一奖励或商店货架里,偶尔会冒出一张不一样的卡——拿到它,立刻再开一次专长选择。它是奖励面里的惊喜,不是奖励面的常态;而连续几次没见到之后,它一定会来一次。 +玩家视角它长这样:在普通的三选一奇物或商店货架里,偶尔会冒出一张不一样的卡——拿到它,立刻再开一次专长选择。它是奇物面里的惊喜,不是奇物面的常态;而连续几次没见到之后,它一定会来一次。 #### 2.3 商店口径:训练 -商店这一侧走的叙事是「**训练**」——花代价向某位师父学习、借某种卷轴修炼、或把战斗攒下的钱换成一身本领。它不是买一个东西回来,而是把钱换成自己的本领,所以落到命名空间上和奖励节点那一侧完全相同:都是往同一个持有集里加一项奖励。 +商店这一侧走的叙事是「**训练**」——花代价向某位师父学习、借某种卷轴修炼、或把战斗攒下的钱换成一身本领。它不是买一个东西回来,而是把钱换成自己的本领,所以落到命名空间上和奖励节点那一侧完全相同:都是往同一个持有集里加一项奇物。 #### 2.4 渠道约束分三层:白名单 / 可计算谓词 / 显式例外 一个"某分类在某渠道出不出现"的判断,实际由三层叠起来决定: -| 层 | 是什么 | 判据来源 | 新增渠道或奖励时 | +| 层 | 是什么 | 判据来源 | 新增渠道或奇物时 | |---|---|---|---| | **一层 分类白名单** | 分类轴决定渠道——机制类走 Boss、另两类走奖励节点与商店 | 分类本身 | 新分类按 1.4 判据归类,自动继承该类的渠道 | -| **二层 可计算谓词** | 渠道与奖励之间的**结构性**关系,能算出来 | 对象与渠道的内在关系 | **自动适用,不用改表** | +| **二层 可计算谓词** | 渠道与奇物之间的**结构性**关系,能算出来 | 对象与渠道的内在关系 | **自动适用,不用改表** | | **三层 显式例外清单** | 人为的设计选择,没有内在理由可推 | 设计决定 | **只能逐条加,每条必须写理由** | **先诚实回答"计价物不自售不就是特判吗"**:**形式上是的**——它确实是在分类白名单之外又加了一道过滤,不是从分类推出来的。但它和三层那种"死特判"有实质区别: -| | 写法 | 新增渠道/奖励时 | 维护方式 | +| | 写法 | 新增渠道/奇物时 | 维护方式 | |---|---|---|---| | 死特判 | "GP 不进商店"(一条记录) | 每多一个例外加一条记录 | 靠人记住,容易漏 | | **可计算谓词** | "X 是渠道 C 的计价物 → X 不进 C"(一个函数) | **自动判定,不用改表** | 判据在对象属性上,不会漏 | -所以准确的说法是:**它没有消除"在白名单外加过滤"这件事,但把过滤从"枚举例外"变成了"计算谓词"**。以后新增渠道或奖励,只要"不出现"的原因是**结构性**的——来自奖励与渠道的内在关系(计价物、即时兑付、需要先决条件等)——就能写成谓词自动算;如果原因是**设计性**的("我就是想让它在这一关不出"),那就只能进三层清单。 +所以准确的说法是:**它没有消除"在白名单外加过滤"这件事,但把过滤从"枚举例外"变成了"计算谓词"**。以后新增渠道或奇物,只要"不出现"的原因是**结构性**的——来自奇物与渠道的内在关系(计价物、即时兑付、需要先决条件等)——就能写成谓词自动算;如果原因是**设计性**的("我就是想让它在这一关不出"),那就只能进三层清单。 **所以要害不是"有没有例外",而是"例外能不能被算出来"**。三层清单不是不能用,但每一条都必须写出理由;一条写不出理由的例外,就是坏味道,应该回头质疑分类是不是分错了。 @@ -210,7 +208,7 @@ ### 3. 作用对象与范围 -- **作用对象**:角色本人,以及角色参与的结算过程。奖励不改敌人、不改棋盘生成、不改关卡内容。 +- **作用对象**:角色本人,以及角色参与的结算过程。奇物不改敌人、不改棋盘生成、不改关卡内容。 - **刷新次数的例外**:它作用在三选一界面上,改的是"这一局里你能重选几次",而不是角色身上的任何数字。它是资源与机会类里唯一一条作用对象不是角色的项——留在这里是因为它满足另外三条:当局获得、当局有效、进同一份持有账本。这条例外在此显式登记,避免后续把它当成角色属性去结算。 - **时间范围**:整局冒险。机制类与属性提升类自获得起对本局剩余所有关卡生效,跨关携带且关间不清零;资源与机会类里的金币与回复是即时兑付,拿到即消费完。 - **归属范围**:不进账号永久进度,不带到下一次冒险。 @@ -236,11 +234,11 @@ | 相邻概念 | 关系(只写关系,不写对方的规则) | |---|---| -| [魔法道具](../排雷循环/魔法道具.md) | 最需要分清的一对,判据是生命周期:**奖励当局清零,魔法道具跨冒险保留**。两者互不相通——奖励永不进同调位,魔法道具永不进当局随机渠道。 | -| [元进度](../跨局循环/元进度.md)(树) | 树管账号永久的规则与容量,奖励管当局构筑,两层互不代替。 | +| [魔法道具](../排雷循环/魔法道具.md) | 最需要分清的一对,判据是生命周期:**奇物当局清零,魔法道具跨冒险保留**。两者互不相通——奇物永不进同调位,魔法道具永不进当局随机渠道。 | +| [元进度](../跨局循环/元进度.md)(树) | 树管账号永久的规则与容量,奇物管当局构筑,两层互不代替。 | | [战斗结算](../战斗循环/战斗结算.md) | 机制类的挂点位于结算管线的各段;挂点清单与语义归结算文档。 | | [行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md) | 部分挂点落在行动点结转与地形处理上,语义归各自文档。 | -| [关卡节点地图](关卡节点地图.md) | 是渠道的载体,不是奖励的属性。机制类挂在 Boss 节点兑付面上,节点类型词表零扩类。 | +| [关卡节点地图](关卡节点地图.md) | 是渠道的载体,不是奇物的属性。机制类挂在 Boss 节点兑付面上,节点类型词表零扩类。 | | [地图战斗资源](../战斗循环/地图战斗资源.md)(格面资源) | 无关:格面资源是单格的一次性产出,不进持有集,也不是渠道给的。 | | [存档序列化](../表现与支撑/存档序列化.md) | 断点负载记录持有集与剩余候选池;键名与版本迁移策略归存档文档。 | @@ -276,12 +274,12 @@ ## 验收标准 -1. 三个分类走同一套获取流程,代码里只有一个表示"已持有奖励"的集合。 -2. 一次冒险内获得的奖励在之后任何关卡都生效;开新冒险后持有集为空。 -3. 一项被选定的奖励不再出现在任何后续渠道。 +1. 三个分类走同一套获取流程,代码里只有一个表示"已持有奇物"的集合。 +2. 一次冒险内获得的奇物在之后任何关卡都生效;开新冒险后持有集为空。 +3. 一项被选定的奇物不再出现在任何后续渠道。 4. 每个流派标签至少有一项挂在排雷侧的结算触发点上(防止机制类沦为纯战斗数值)。 5. 玩家可见的文案不出现分类名与内部分组标签——只写效果,归类让玩家自己推断。 -6. 文档与代码里提到它时只有"奖励"这一个名字;需要区分时用"机制类/属性提升类/资源与机会类"描述,不得另造称呼。 +6. 文档与代码里提到它时只有"奇物"这一个名字;需要区分时用"机制类/属性提升类/资源与机会类"描述,不得另造称呼。 7. 刷新次数不进角色加算区——它只改三选一界面的可用重抽次数。 8. 金币与回复不进持有集——它们是即时兑付,拿到即消费完。 9. 金币不出现在商店货架上——这是「计价物不自售」谓词算出来的结果,不是给金币单独立的一个分类;它确实是在分类白名单之外加的一道过滤,只是这道过滤可自动计算而非靠枚举。 @@ -310,5 +308,6 @@ | v1.2 | 2026-10-05 | 专长渠道落定:关底 Boss 击败后兑付,不新增节点类型;罕见旁路明确为"普通奖励里的专长 N 选一"。 | | **v2.0** | 2026-10-05 | **顶层改名为「奖励」并重构为两根轴**。改名动因:筐里既装"角色自身的变化"也装金币这类一次性兑付物,用"自身提升 vs 持有物"已切不开,边界判据改由生命周期承担——**当局清零的是奖励,跨局带走的是魔法道具**。分类由两类改为**三个枚举**:机制类(专长)/ 属性提升类(生命·AC·攻击)/ 资源与机会类(行动点上限·刷新次数·金币·回复,命名待定)。新增第 2 节分类 × 渠道交叉开关表,明确两根轴互不决定;金币与回复不再被当作"该移出去的脏东西",而是安置在资源与机会类里,同时把它们的即时兑付性质显式登记为类内异质性。 | | v2.1 | 2026-10-05 | **交叉表收口(用户拍板)**:Boss 渠道**只出专长**,属性提升类与资源与机会类在此均不出现——三条渠道的形状定为"一块独占 + 两块并行",专长靠打赢、其余靠抽取与购买。Boss 兑付明确为**终局前**的 Boss,终局 Boss 不给(无后续关卡可消费)。新增 2.4 节**「计价物不自售」规则**:金币不进商店既不拆分类也不开特例,而是写成两轴交叉处的一条约束——商店的计价物是金币,故金币不进商店;按"能不能进商店"反推分类等于用渠道轴去切分类轴,两根轴会缠回去。 | -| v2.3 | 2026-10-05 | **门票机制细化 + 默认原则表述修正**。① 门票**拿到即开、不可囤积**(用户定)——不进持有集,防止玩家把关键决策无限推迟,也防持有物语义从后门回来。② 门票的"罕见"**只在概率不在价格**,一局限购一次,并加**计步保底**:连续 5 次三选一展示未出现则第 6 次必出;计数跨奖励节点与商店共享、**刷新后的重新展示计入**(用户明定含刷新),限购用满后保底不再触发。③ **修正 v2.2 的误读**:把"分类在某渠道不出现"当成需要理由的缺格是错的——渠道出哪些分类是渠道轴的定位(Boss 只出专长),不是例外;默认原则只管**分类内部**的成员齐不齐。④ 专长总量与档位阈值的匹配按用户决定**延后**(待第四关内容批后实测复裁),另单独登记 charge 标签仅 3 件、永远达不到档二的数据缺陷。 | | v2.2 | 2026-10-05 | **门票形态 + 约束分层 + 默认原则**。① 用户明确:奖励节点与商店不直接给专长,而是给一个**「专长获取」道具**,拿到后开专长三选一——交叉表机制类在两渠道由"不出现"改为"**门票形式**";门票归机制类(给的是一件以前不会的事,只是把选择推迟),理由是防止用钱定点买构筑。② 用户质疑「计价物不自售」本质是特判——**承认成立**:它确实是在分类白名单之外加的一道过滤,与死特判的区别在于把"枚举例外"变成"**可计算谓词**"(新渠道/新奖励自动判定)。2.4 改写为**三层约束**(分类白名单 / 可计算谓词 / 显式例外清单),并给出判断标准:结构性原因可写成谓词,设计性原因只能进清单且每条须写理由;三个方案(单独分类 / 谓词 / 死特判)的代价并列摆出,不藏折中。③ 用户定**默认原则**:除已登记的特殊规则外,分类内的东西都要在池子里——据此**回复应在商店内**,现行 shop.tres 货架缺它是"现状与表格不对齐",须在实施批补上。 | +| v2.3 | 2026-10-05 | **门票机制细化 + 默认原则表述修正**。① 门票**拿到即开、不可囤积**(用户定)——不进持有集,防止玩家把关键决策无限推迟,也防持有物语义从后门回来。② 门票的"罕见"**只在概率不在价格**,一局限购一次,并加**计步保底**:连续 5 次三选一展示未出现则第 6 次必出;计数跨奖励节点与商店共享、**刷新后的重新展示计入**(用户明定含刷新),限购用满后保底不再触发。③ **修正 v2.2 的误读**:把"分类在某渠道不出现"当成需要理由的缺格是错的——渠道出哪些分类是渠道轴的定位(Boss 只出专长),不是例外;默认原则只管**分类内部**的成员齐不齐。④ 专长总量与档位阈值的匹配按用户决定**延后**(待第四关内容批后实测复裁),另单独登记 charge 标签仅 3 件、永远达不到档二的数据缺陷。 | +| **v2.4** | 2026-10-05 | **顶层由「奖励」改名为「奇物」(Wondrous Item)**。用户否决了「奖励」「收益」与全部自造词(进益/造化/机缘/遇获),要求回到 DND/西幻既有名词。定名依据:DMG 魔法物品九分类中的 Wondrous Item,官方中文译名即「奇物」,是专装不好归类但有奇效之物的兜底杂类——正好对应本概念下三个互不相干的分类。此前考虑过的 Treasure(宝物)因偏财物、装不下专长而落选;roguelike 品类惯例 Relic 因用户否决遗物落选。**代码词族定为 `curio_*`、`ADVENTURE_CURIO`**(`reward_*` 已被 `reward_pick` / `reward_node` / `reward_preview` 占用,不能对齐)。 | diff --git a/design/gdd/systems/表现与支撑/HUD框架.md b/design/gdd/systems/表现与支撑/HUD框架.md index c198990e..ed70e931 100644 --- a/design/gdd/systems/表现与支撑/HUD框架.md +++ b/design/gdd/systems/表现与支撑/HUD框架.md @@ -216,7 +216,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | [地图战斗资源](../战斗循环/地图战斗资源.md) | 已开格的奖励身份常读;未开格类型微光(英雄周围 8 格内的未开格显示资源类型——概念定义见本篇「未开格类型微光」节) | | [魔法道具](../排雷循环/魔法道具.md) | 库存条常读;使用交互与目标拾取;板级叠加层信息呈现 | | [棋盘生成](../排雷循环/棋盘生成.md) | 零合法板的诚实告知(数据面经战斗结算上抛,本系统只管提示形态) | -| [地形变异](../排雷循环/地形变异.md) | 全局作用域型三层预告(2026-10-04 首发批——语义正主=地形变异 §全局作用域型):①开战横幅一行(板级变异非空时显示;减动效=静态驻留,轮横幅先例同款双态)②HUD 常驻角标(C 区战斗全程可见防中局遗忘,空态整节隐藏=奖励段先例;摆位 provisional)③帮助手册一行(零交互教学,承载=玩法帮助文案块);数据面经呈现快照 board_variants 投影(核心→呈现唯一读取面),普通图三层恒空态零打扰 | +| [地形变异](../排雷循环/地形变异.md) | 全局作用域型三层预告(2026-10-04 首发批——语义正主=地形变异 §全局作用域型):①开战横幅一行(板级变异非空时显示;减动效=静态驻留,轮横幅先例同款双态)②HUD 常驻角标(C 区战斗全程可见防中局遗忘,空态整节隐藏=奇物段先例;摆位 provisional)③帮助手册一行(零交互教学,承载=玩法帮助文案块);数据面经呈现快照 board_variants 投影(核心→呈现唯一读取面),普通图三层恒空态零打扰 | ## P0 最小闭环 @@ -300,6 +300,6 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | v0.10 | 2026-09-26 | 渲染技术注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗舞台 Node2D 化——BattleStageView 内部由 PanelContainer+Control 站桩改为 Control 壳 + SubViewportContainer + SubViewport + Node2D 世界(StageWorld/StandeeBody),类名/setter 面/公共方法契约不变、调用点零改造;状态图标行与悬停 tooltip 保留 Control 载体挂壳层(伴随件);C6 字体注入挂点复用(set_world_font);三区布局与性能预算(同屏 draw calls < 200)不变;占位表现等价平移(时序常量逐字对照——等价证明=git 提交 7f24b64,文件已按生命周期条款退役) | | v0.11 | 2026-09-27 | 关卡画面 UX spec 建档([level-map](../../ux/level-map.md),关卡画面 UX 批——用户拍板立项):义务清单「关卡节点地图」行挂屏级 spec 指针;屏级权威行与不负责表改按屏分治口径(战斗屏 = battle.md / 关卡画面 = level-map.md)。文档面零机制改动 | | v0.12 | 2026-09-30 | **未开格类型微光概念收口批(用户裁决落位)**:新增「未开格类型微光」节=全项目唯一正主定义(五要素——作用对象=英雄周围 8 格内的未开格〔与可挖域同圈〕/信息内容=只类型不泄雷安/生命周期=入圈亮出圈灭开格灭/关联边界/实装状态=契约定稿〔样张 v2〕游戏内待实施批);核心规则章六节改七节;呈现义务来源清单「地图战斗资源」行补微光指路;验收标准补微光呈现线。背景:该概念此前只活在 06 登记与 art-bible 复述,「常显/全部未开格」无范围表述酿成理解事故(2026-09-30 用户纠正口径),本批落位正主、他文只许指路 | -| v0.13 | 2026-10-04 | **地形变异三层预告义务批(全局作用域变异首发批——迭代 14 ③号卡,代码同批)**:呈现义务来源清单补「地形变异」行(开战横幅一行〔减动效=静态驻留,轮横幅先例同款双态〕+ C 区常驻角标〔空态整节隐藏=奖励段先例,摆位 provisional〕+ 帮助手册一行〔零交互教学〕);验收标准补三层预告线(普通图恒空态零打扰);数据面走呈现快照 board_variants 投影(核心→呈现唯一读取面)。语义正主=地形变异.md §全局作用域型,本文只锁呈现承载 | +| v0.13 | 2026-10-04 | **地形变异三层预告义务批(全局作用域变异首发批——迭代 14 ③号卡,代码同批)**:呈现义务来源清单补「地形变异」行(开战横幅一行〔减动效=静态驻留,轮横幅先例同款双态〕+ C 区常驻角标〔空态整节隐藏=奇物段先例,摆位 provisional〕+ 帮助手册一行〔零交互教学〕);验收标准补三层预告线(普通图恒空态零打扰);数据面走呈现快照 board_variants 投影(核心→呈现唯一读取面)。语义正主=地形变异.md §全局作用域型,本文只锁呈现承载 | | v0.14 | 2026-10-03 | **视野迷雾实施批落籍注记(迭代 11 第④批)**:迷雾节补「实施状态」注记(四裁决逐条对账:纯呈现两态逐位一致/暗淡记忆态灰显可读/LIGHT_RADIUS=8 参数化〔提灯 +2 插值位预留未接〕/类型微光仍贴身 8 邻格);实装状态行「待实施批」改「已实装」;验收标准迷雾行去「待实施批落地后验收」括注转正式验收。机制定义零改动(定义一句话/作用范围/生命周期/关联边界/配套拍板全段原样);黑暗区域渲染规格落 art-bible §6.5(v3.5) | | v0.13 | 2026-09-30 | **视野迷雾概念落位批(用户拍板立项)**:新增「视野迷雾」节=正主定义(菱形灯光区+黑暗边界;区外已开格=暗淡记忆态灰显可读、区外未开格=全黑;灯光半径起步=微光环 8 格同圈;纯呈现层,与已退役雾格无关);验收标准补迷雾线;配套拍板随节登记(魔法提灯灯甲外扩 +2 格、类型微光不随视野扩、初始展开收窄后置 Alpha 差异化批)。实施待主线编卡 | diff --git a/design/gdd/ux/battle.md b/design/gdd/ux/battle.md index e3ec276a..616dd53c 100644 --- a/design/gdd/ux/battle.md +++ b/design/gdd/ux/battle.md @@ -105,7 +105,7 @@ - 攻击值 + 修正来源角标(战斗在消费、且站桩上无展示) - 护甲 AC(2026-09-26 二轮拍板补入——我方 AC 的唯一展示面;掷点判定轴,受击侧可读性) - 魔法道具槽(**已实装**:四槽两步交互,详见 [node-reward.md](node-reward.md)——随身战斗用道具的唯一展示面) - - 奖励列表(**预留**——锻造/大奖励/关卡奖励节点获得的属性提升;与战斗内状态效果分区呈现,防「战斗结束被清」误读) + - 奇物列表(**预留**——锻造/大奖励/关卡奖励节点获得的属性提升;与战斗内状态效果分区呈现,防「战斗结束被清」误读) - **D 区扫雷图 · AP 条** - AP 点阵 + 停手按钮(现行) - **RAP 读数(点阵+数字)**——自 C 区迁入,置于弃图刷新按钮旁(2026-09-26 拍板:RAP 唯一消费口 = 弃图刷新,资源数字贴消费按钮) @@ -120,7 +120,7 @@ | 区 | 位置与尺寸 | 内容 | |---|---|---| | **B 战斗画面** | 全宽 × 252px | 主角站桩立绘(左)+ 兑现演出区(中)+ 敌人站桩立绘 ×1–3(右)——**全站桩形态(2026-09-20 用户拍板,敌人卡形态待办裁决收口):主角与敌人均为无框立绘+底座,零卡片**;主角与敌人站桩 = **HP 与状态效果的唯一展示面(2026-09-26 信息归属拍板)**;底部结算明细带(24px 摘要 / 结算期 84px 实时流);顶部中央轮次·阶段指示 | -| **C 角色信息** | 左下 240px × 548px | 攻击值(含修正显示)、护甲 AC;魔法道具槽(预留)、奖励列表(预留)——HP 条/RAP 池/状态效果槽/立绘占位/钱包行退役(2026-09-26 信息归属拍板:HP 与状态唯一展示面 = B 区站桩;RAP 迁 D 区 AP 条;GP/钥石迁出战斗屏) | +| **C 角色信息** | 左下 240px × 548px | 攻击值(含修正显示)、护甲 AC;魔法道具槽(预留)、奇物列表(预留)——HP 条/RAP 池/状态效果槽/立绘占位/钱包行退役(2026-09-26 信息归属拍板:HP 与状态唯一展示面 = B 区站桩;RAP 迁 D 区 AP 条;GP/钥石迁出战斗屏) | | **D 扫雷图** | 中下 ~1036px × 548px(原右下面板删除后横向加宽,吸收其宽度) | 顶部 AP 条(44px:左——AP 点阵 + 停手按钮;中——RAP 点阵+数字〔自 C 区迁入,贴弃图刷新按钮,2026-09-26 拍板〕;右——图例按钮 + 弃图刷新按钮〔雷图右上角,2026-09-12 拍板〕);棋盘主体(居中,格 36–45px 见方);toast 槽(上缘内侧) | > 布局为 B/C/D 三区——关卡进度条不在战斗屏(节点链进度常驻关卡画面,见 Navigation Position;字母不重编沿用 B/C/D)。 @@ -147,7 +147,7 @@ | B | 结算明细回看 | 模态 overlay | 完整流水逐行(现行 9 类行协议;未生效类行聚合计数) | 关闭 | battle_log_view.gd 改造 | | C | 攻击数据框 | 直角细线数据框 | 攻击值 + 修正来源角标 + 护甲 AC(AC 二轮拍板 2026-09-26 补入——我方 AC 唯一展示面;原「HP/攻击/RAP 显示」——HP 与 RAP 随信息归属拍板迁出本组件) | 只读 | HUDView 拆分 | | C | 魔法道具槽(已实装:四槽两步交互,详见 [node-reward.md](node-reward.md)) | 图标槽 ×4 | 随身战斗用道具的唯一展示面;库存已随迭代 7 落地(C 区四槽+关卡域库存),清库反馈呈现待批 | 悬停 tooltip(道具语义) | 新建(随魔法道具批,已落地) | -| C | 奖励列表(预留) | 列表/图标行 | 锻造/大奖励/关卡奖励节点获得的属性提升——中循环数据,因改变战斗数学且无其他展示面准入战斗屏;与战斗内状态效果(B 区站桩)分区,防「战斗结束被清」误读 | 只读 | 新建 | +| C | 奇物列表(预留) | 列表/图标行 | 锻造/大奖励/关卡奖励节点获得的属性提升——中循环数据,因改变战斗数学且无其他展示面准入战斗屏;与战斗内状态效果(B 区站桩)分区,防「战斗结束被清」误读 | 只读 | 新建 | | D | AP 条 | 点阵 + 按钮组 | 本轮 AP 点阵、停手按钮(左)、**RAP 点阵+数字(自 C 区迁入 2026-09-26——RAP 唯一消费口 = 弃图刷新,资源数字贴消费按钮;RAP 清零可见反馈〔行动经济〕载体随迁)**、弃图刷新按钮(右端·雷图右上角;RAP−8 · 本轮剩 N 次——上限 2 次已随行动经济 2026-09-12 修订生效) | 点击提交意图 | HUDView 拆分 | | D | BoardView | 网格 | 棋盘全部格态 + 小人 + 旗 + 变异纹带 + 奖励身份 icon(已开格;绘制优先级 数字>小人>旗>奖励徽章>变异纹带>底色——徽章不进数字区,样张验收项) | 左/右键意图提交 | ✅ board_view.gd 迁移 | | D | 悬停预承诺光标 | 光标态 | 移动/挖/旗三语义光标 + 目标格边框高亮 | 自动 | 新建(排雷玩法×6③) | @@ -204,7 +204,7 @@ │ │ 魔法道具槽(预留) │ │ │ │AP不足·剩0点 │ 12 12 1 ░ 2 ▓▓ ▓▓ │ │ │ │ ◇ ◇ ◇ ◇ │ │ │ └──────────────────┘ 12 █ 1 1 2 ▓▓ ▓▓ │ │ │ ├──────────────────┤ │ │ 1 2 2 🚩 █ 2 1 1 ▓▓ 👫 1 1 ░ │ │ -│ │ 奖励列表(预留) │ │ │ ░ 1 ▓▓ 👫 1 1 ░ ▓▓ 1 1 ░ ░ 2 │ │ +│ │ 奇物列表(预留) │ │ │ ░ 1 ▓▓ 👫 1 1 ░ ▓▓ 1 1 ░ ░ 2 │ │ │ │ 锻造+2攻 │ │ │ ▓▓ 1 1 ░ ░ 2 ▓▓ │ │ │ │ (空态=隐藏) │ │ │ ( █=可挖域微光 👫=小人) │ │ │ └──────────────────┘ │ └─────────────────────────────────────────────────┘ │ @@ -440,7 +440,7 @@ | 2026-09-23 | 实现注记(棋盘 Node2D 迁移批 Phase A,代码实装同批;上位裁决 ADR-0006):棋盘渲染 Node2D 化(BoardView = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界,信号/click_cell/_cells 契约保持,新增 push_input 端到端输入探针);格尺寸公式锚点不变(set_cell_area = floor((min(宽,高) − 预留 − (N−1)×格间距) / N) 单点可调),布局与交互语义零改动 | | 2026-09-26 | 实现注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗画面 Node2D 化(BattleStageView = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界,站桩本体 StandeeBody 世界精灵;set_enemies/clear_enemies/on_step_row_fx/gray_all_enemies 等 setter 面签名保持,弹道落点锚点=壳层口径 world_to_shell 单点);状态图标行与悬停 tooltip 保留 Control 载体挂壳层;三区布局尺寸零改动(B 区外框 252px 逐位) | | 2026-09-26 | **封印紫批**(用户拍板):插旗呈现色 旗朱 #C63D22 → 封印紫 #7C3AA8(色相 ≈267°,避开禁入带)——旗字形/已承诺封印框/旗化暴击弹道随批换色;拒绝边框闪语义归危险红;Boss 节点描边归紫赤本色。修订记录历史行旗朱字样系当时口径留痕不改 | -| 2026-09-26 | **战斗屏信息归属批(用户 2026-09-26 三轮纠偏后拍板;代码实装另批——hero_info_panel_view.gd / hud_presenter.gd 改造 + 探针断言迁移,登记待办)**:立两条信息归属原则并全屏贯行——①循环口径原则(战斗屏只展小循环内被消费、影响当下决策的数据;中/大循环资源不得入侵)②单一展示面原则(同一信息全屏唯一展示面;单位本体已承载的信息数据框不重复;资源数字贴唯一消费口)。随拍板落地:① B 区站桩 = HP 与状态效果唯一展示面——C 区 HP 条/HP 文字/立绘占位/状态效果槽×4 退役(重复展示;证据链 = hud_presenter.gd 同一 s.hero.hp/s.hero_effects 双投喂 B/C 两区);② RAP 读数(点阵+数字)迁 D 区 AP 条、置弃图刷新按钮旁(RAP 唯一消费口 = 弃图刷新——就近原则);③ C 区状态槽悬停 tooltip 职责并入 B 区站桩状态小图标;④ GP(中循环)/钥石(大循环)迁出战斗屏,去向挂 OQ14;⑤ C 区改「攻击数据框 + 魔法道具槽(预留)+ 奖励列表(预留)」——预留区来自魔法道具与关卡内属性提升的既有立项;⑥ 空态/清零反馈/悬停交互/AC/§13 义务表载体同步改写。**批内遗留两项待拍板(OQ13/14)**:护甲 AC 是否补入 C 区数据框;GP/钥石去向 | +| 2026-09-26 | **战斗屏信息归属批(用户 2026-09-26 三轮纠偏后拍板;代码实装另批——hero_info_panel_view.gd / hud_presenter.gd 改造 + 探针断言迁移,登记待办)**:立两条信息归属原则并全屏贯行——①循环口径原则(战斗屏只展小循环内被消费、影响当下决策的数据;中/大循环资源不得入侵)②单一展示面原则(同一信息全屏唯一展示面;单位本体已承载的信息数据框不重复;资源数字贴唯一消费口)。随拍板落地:① B 区站桩 = HP 与状态效果唯一展示面——C 区 HP 条/HP 文字/立绘占位/状态效果槽×4 退役(重复展示;证据链 = hud_presenter.gd 同一 s.hero.hp/s.hero_effects 双投喂 B/C 两区);② RAP 读数(点阵+数字)迁 D 区 AP 条、置弃图刷新按钮旁(RAP 唯一消费口 = 弃图刷新——就近原则);③ C 区状态槽悬停 tooltip 职责并入 B 区站桩状态小图标;④ GP(中循环)/钥石(大循环)迁出战斗屏,去向挂 OQ14;⑤ C 区改「攻击数据框 + 魔法道具槽(预留)+ 奇物列表(预留)」——预留区来自魔法道具与关卡内属性提升的既有立项;⑥ 空态/清零反馈/悬停交互/AC/§13 义务表载体同步改写。**批内遗留两项待拍板(OQ13/14)**:护甲 AC 是否补入 C 区数据框;GP/钥石去向 | | 2026-09-26 | **信息归属二轮拍板(用户 2026-09-26,OQ13/14 收口)**:① 我方护甲 AC 补入 C 区攻击数据框(唯一展示面——布局表/组件清单/线框图同步);② GP/钥石去向定案:GP = 关卡画面常驻总量 + 战斗结算画面总量+增量,钥石 = 结算画面 + 营地(具体呈现归对应 UX spec 批次);③ 敌方 AC 展示面挂起——用户口径「敌方 AC 无任何展示」与现行代码冲突(standee_view.gd 底库名字行渲染「名字·护甲·AC%d」,系敌人技能池批克制对策可读性义务),证据链已呈报待终裁,本 spec 暂不改敌人站桩行 | | 2026-09-26 | **敌方 AC 展示终裁收口(用户 2026-09-26 终裁)**:敌方 AC 数值全屏退役(任何区不直接展示)、护甲类型改图标方式展示(形状+色相双通道,终稿图标资产归美术批)、敌人站桩底座下名字行退回纯名字+护甲类型图标;旧「克制对策可读性义务」降级承载——类型保留、数值退役。终裁理由(用户口径):HP 信息已足够,攻防数值不直接写上;护甲类型图标保留克制对策可读性。同步改写:信息归属树敌人站桩行、Component Inventory 敌人站桩立绘行、OQ13。**代码实装说明**:`standee_view.gd` 改造(站桩名字行去 AC 数值 + 护甲类型图标化)由并行代码批执行,本批只做文档同步 | | 2026-09-27 | **UX 文档欠账处置批(用户四项拍板:player-journey 不建 / accessibility 不另立改指 HUD框架 / node-reward 改挂魔法道具内容重定批 / level-clear 建档 design/gdd/ux/level-clear.md)**:① 删 §Player Context ⚠️ player-journey 未建注记,OQ1 改收口注记;② §Accessibility 头、§Transitions 减动效行、OQ2 改指 HUD框架「可访问性基线」节 + 设置与本地化待设计清单 #1(tools/doc_link_known.txt 欠账行随之清空);③ 导航残留修正——§Navigation Position 图胜利分支、§Entry/Exit 离开表、§Interaction Map 胜利 overlay 行改按现行代码实态(胜利后返回关卡画面选路;节点覆盖层 = 关卡画面域、落地奖励/恢复节点时开出;胜利/失败 overlay 组件锚 battle_end_overlay.gd)——原「胜利 → 节点奖励/恢复覆盖层」系停点前移批前残留;④ OQ3 过期陈述更正(interaction-patterns.md 2026-09-12 已建成)、OQ8 改收口注记。本批只动文档面,代码零改动 | diff --git a/design/gdd/ux/level-map.md b/design/gdd/ux/level-map.md index 43811eb7..4a54f3d3 100644 --- a/design/gdd/ux/level-map.md +++ b/design/gdd/ux/level-map.md @@ -91,7 +91,7 @@ **布局决策 3 —— 放弃冒险二次确认(2026-09-27 拍板)**:放弃 = 整局冒险终结,不可逆(pattern 7 破坏性确认)。首击转入确认态(按钮文案变「再点一次确认放弃——不可逆」,危险红边框脉冲约 3 秒,超时回落),二击才提交。代价语义(已获大奖励保留、同失败结算)常驻按钮文案。 -**布局决策 4 —— 底部状态栏(2026-09-27 拍板,原提案为顶栏 HP 读数)**:底栏作为状态展示——生命、属性、本关已选加成三项常读;顶栏保持关卡名 + GP 两件。单一展示面注记:与 [battle.md](battle.md) C 区「奖励列表(预留)」为不同屏的不同展示面——两屏循环口径各自独立(选路规划消费 vs 战斗内决策消费),不构成同屏重复。 +**布局决策 4 —— 底部状态栏(2026-09-27 拍板,原提案为顶栏 HP 读数)**:底栏作为状态展示——生命、属性、本关已选加成三项常读;顶栏保持关卡名 + GP 两件。单一展示面注记:与 [battle.md](battle.md) C 区「奇物列表(预留)」为不同屏的不同展示面——两屏循环口径各自独立(选路规划消费 vs 战斗内决策消费),不构成同屏重复。 ### ASCII Wireframe diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 87c774d4..723c8346 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -21,7 +21,7 @@ entities: attributes: kind: autoload stream_architecture: **统一流(ADR-0007 裁丙 2026-09-27——用户两轮复裁终选「统一用一个流」并拍「全面执行」,七流并一+全事件日志)**:唯一主种子 + 单盐派生 + 唯一全局取数计数器;历史注记 = 2026-09-12 encounter 增流〔遭遇随机化批〕/ 2026-09-16 armor_roll〔护甲掷点批〕+ behavior_roll〔敌人技能池批〕/ 2026-09-20 variant_place〔地形变异批〕/ 2026-09-21 gp_drop〔GP+商店房批〕——分盐分流架构随并流批整体退役;combat_var 已于 2026-09-07 full 评审删除(玩法随机不预置基础设施) - purpose_tags: [board_gen, reward_roll, encounter, armor_roll, behavior_roll, variant_place, gp_drop, node_map, reward_pick, shop_draw](封闭词表 = 并流前七流名全保留 + node_map〔关卡节点图生成 v0.4〕+ reward_pick〔迭代 10 奖励重构〕+ shop_draw〔迭代 11 第②批 T1——商店货架抽签,每次抽 3 恰一 scope〕;扩签需改代码 + 评审;结算表 armor_roll_stream 字段降格为纯标签) + purpose_tags: [board_gen, reward_roll, encounter, armor_roll, behavior_roll, variant_place, gp_drop, node_map, reward_pick, shop_draw](封闭词表 = 并流前七流名全保留 + node_map〔关卡节点图生成 v0.4〕+ reward_pick〔迭代 10 奇物重构〕+ shop_draw〔迭代 11 第②批 T1——商店货架抽签,每次抽 3 恰一 scope〕;扩签需改代码 + 评审;结算表 armor_roll_stream 字段降格为纯标签) stream_facade: open_stream(purpose) 取号(purpose 只进事件日志不参与派生;全局计数器 +1 → 单盐派生 → 返回已播种实例 → 落日志);derive_at(scope) 纯函数供测试/预览/日志回放(不推计数器);open_scope 显式位取号门随子流派生向量退役(behavior_roll 逐敌顺序取号替代) event_log: 冒险会话制全事件落盘——user://logs/rng_log_<主种子>.jsonl,会话行 + 逐次取数行(scope / 用途标签 / 派生种子);写盘失败告警降级不致命;号位全序化后不再单独回答「第 N 次某类事件」(路线依赖为已裁决代价),单点定位由日志承载 new_adventure: 冒险开始重播种入口——调用权 = AdventureRunner.start_adventure 唯一正式调用方(切片单关测试路径 LevelRunner.start_level 除外;冒险结构实现批 2026-09-21——主种子全冒险恰一次注入,冒险内不重置不逐关播种);并流批加重播种同时开日志会话 @@ -90,11 +90,11 @@ entities: rap_refresh_cost: 8(2026-09-22 随 ap_per_round 6→8 同批随动回拨〔登记漏账补同步 2026-09-24〕,保持"满停一轮 = 恰好一刷基线节拍"耦合;解耦须单独立批) move_ap_cost: 0(冻结:P4 探索氛围承载,非经济杠杆) chain_ap_cost: 0(冻结:v2 定稿) - rap_rules: RAP = 停手剩余 AP 1:1 转存(结构,非 knob);战斗域生命周期(battle_over 清零,跨轮跨图保留);来源唯一(停手)、支出唯一(刷新);刷新决策主体 = 玩家发起、挖掘期(Active 相位)当场换图——HUD框架 经组合根/战斗结算 refresh_board 编排调用(2026-09-12 音频 修订:原"结算编排期 Waiting 代理调用"退役);每轮上限 2 次(refresh_cap_per_round 结构位默认 2——HUD框架 提案采纳,RoundStart 重置;原"同一 Waiting 相位多次刷新合法/无结构上限"作废);旧板旗随旧板作废(零兑付、旗 AP 不返还——排雷玩法 EC11 承载);挖掘期当场刷新无结算发生(原"敌方时间税"自惩失效——行动经济 OQ3 阈值联动复核);cleared 轮恒 new_board、stopped/ap_exhausted 轮恒 same_board(战斗结算 回发违约 fail-fast 不变);刷新图不产生清图奖励;无战斗收益——原 ×2/×1 折算与 stop/clear_multiplier 已作废(2026-09-07 用户拍板) + rap_rules: RAP = 停手剩余 AP 1:1 转存(结构,非 knob);战斗域生命周期(battle_over 清零,跨轮跨图保留);来源唯一(停手)、支出唯一(刷新);刷新决策主体 = 玩家发起、挖掘期(Active 相位)当场换图——HUD框架 经组合根/战斗结算 refresh_board 编排调用(2026-09-12 音频 修订:原"结算编排期 Waiting 代理调用"退役);每轮上限 2 次(refresh_cap_per_round 结构位默认 2——HUD框架 提案采纳,RoundStart 重置;原"同一 Waiting 相位多次刷新合法/无结构上限"作废);旧板旗随旧板作废(零兑付、旗 AP 不返还——排雷玩法 EC11 承载);挖掘期当场刷新无结算发生(原"敌方时间税"自惩失效——行动经济 OQ3 阈值联动复核);cleared 轮恒 new_board、stopped/ap_exhausted 轮恒 same_board(战斗结算 回发违约 fail-fast 不变);刷新图不产生清图奇物;无战斗收益——原 ×2/×1 折算与 stop/clear_multiplier 已作废(2026-09-07 用户拍板) flag_rules: 旗 = 排雷玩法 棋盘状态单态(原口袋旗双态作废);随图存续,清图/刷新消失;标中旗 = 怪物 debuff(三向效果定稿),兑付一次性、资格以雷格实例为键(每雷本次战斗至多兑付一次;放置实例仅为当轮结算载体);旗无移除手段(拔旗退役 2026-09-19——原「拔旗重插不恢复已消费资格」OQ5/F1 条款 2 通道结构性消失,重插被 flag_present 拒绝);挖旗格放行、兑付四情况改判归 战斗结算 v0.18(插旗不可逆批 2026-09-19) round_end_carrier: 双发射源(2026-09-07 修订)——棋盘路径(ap_exhausted/cleared)由 排雷玩法 外发(systems-index 原裁决不变),停手路径(stopped)由 行动经济 直发;payload 同构 (path_tag, continuation_hint) arbitration_priority: cleared > stopped > ap_exhausted(同帧/同批次结束路径总仲裁;stop-first 批次腿 deferral 至 排雷玩法 集成测试,义务清单见 systems-index 门禁记录) - downstream_contract: 行动经济 F1 五条款(① 效果当量对照单一线性换算 · ② 标中旗锚严格 > 最低档 + 连锁放大边际基准 + 总吞吐对账 · ③ 挖掘风险不等式 P(安全)×buff > P(雷)×敌方增益,战斗结算 单一闭合 owner · ④ 清图奖励 > 0 且 地图战斗资源 差异化插槽(图类型战斗域恒定) · ⑤ 清图 vs 弃图刷新支配性,战斗结算 闭合强制检查点)——2026-09-07 三轮评审定稿 + downstream_contract: 行动经济 F1 五条款(① 效果当量对照单一线性换算 · ② 标中旗锚严格 > 最低档 + 连锁放大边际基准 + 总吞吐对账 · ③ 挖掘风险不等式 P(安全)×buff > P(雷)×敌方增益,战斗结算 单一闭合 owner · ④ 清图奇物 > 0 且 地图战斗资源 差异化插槽(图类型战斗域恒定) · ⑤ 清图 vs 弃图刷新支配性,战斗结算 闭合强制检查点)——2026-09-07 三轮评审定稿 cross_field_validation: 任一动作成本(dig/flag_place;flag_pull 随拔旗退役 2026-09-19 移出)≤ ap_per_round——ActionEconomyTable schema validate() 跨字段类别,违规加载期致命(2026-09-07 三轮评审增补;条件性夹具登记 数据配置 校验双通道) ap_delta_queue: (**2026-09-20 格面资源八型批新增**)action 型格面资源的下轮行动点修正排队面——queue_ap_delta/pending_ap_delta:结算期 ±power 同轮累加,下一轮开始(notify_round_start)兑现 = 基线 ap_per_round + 排队净值(下限 0、兑现后清零);排队净值不跨轮保留;跨轮携带量口径 = RAP(唯一显式携带资源)+ 一次性修正队列 referenced_by: [棋盘生成, 排雷玩法, 地形变异, 战斗结算, 增益状态, 地图战斗资源, HUD框架, 教学引导] @@ -155,8 +155,8 @@ entities: single_enemy_assumption: **回验结果 = 不成立——敌人系统 定多敌(用户 2026-09-09 拍板;同日 敌人系统 GDD 兑现 增益状态 预授权接口漂移条款)**:MVP 战斗 = 1–3 个同敌种敌单位(EnemyTable.unit_count);效果 side-wide 语义改"全体存活敌单位"(层数 = side 共享池,**增益状态 现接口零变更兼容**);target_ref(单体寻址)= 扩展位义务——首个单体效果上线时 增益状态 补列(随批:战斗结算 归集语义/HUD框架 呈现裁决);增益状态 GDD 正文不改,以本条为准(行动经济 OQ5 收编先例) mechanics: 战斗域统一状态容器(三向效果同构实例)· 单一时限量纲 remaining_settlements(先兑付后衰减,每轮结算 −1,dur=1=一次性;跨轮跨图延续、battle_over 全清不跨战斗)· 按行叠层(stack 授予不触碰 R;refresh 重置取实例授予时快照 D;合并在授予时、结算作用顺序归 战斗结算——两序分离)· 满层授予拒绝原子(false+容器零写)· 合成 = L×m 加算、percent 越域不 clamp(地板/换算归 战斗结算 SettlementTable)· 授予集中在 战斗结算 结算编排(排雷玩法/地图战斗资源 零直接接口)· 零随机(无 RNG 流消费)· 零信号外发(纯被动容器) api: notify_battle_start / apply_effect(effect_id, source) -> bool / query_active(side) -> Array(插入序;六归因字段+display_name+授予时快照投影)/ decay_round() -> int / notify_battle_end() -> bool——战斗结算 消费契约,provisional 登记 - settlement_obligations: 八项(战斗结算 GDD 门禁评审缺项即 blocking)——① 同轮多授予按确定次序调用 ② 事实→授予恰一次转化(增益状态 不去重)③ percent→乘数换算方向与合成值地板成文 ④ 最后一轮 decay 判定 ⑤ F1 条款 1 效果档位对照表以 增益状态 实例为对照实物 ⑥ 每结算编排恰一次 decay_round(2026-09-09 增——decay 基数=1 先决条件)⑦ 结算明细按授予流水逐条标注来源(合并坍缩归因补偿,2026-09-09 增)⑧ “溢出未生效”行进结算明细协议(Rule 5 后半承载,2026-09-09 增)。**履行回执(2026-09-10)**:八项已全数落位 战斗结算 GDD(Core Rules 3/5/8/10/11 + Formulas F0–F2——落位映射 = 战斗结算 AC 覆盖矩阵"上游义务 23 条"行;③的 AP/表界数值随 F0 修订更新为 −520%/−1040%)。**2026-09-20 修订**:⑧ 随伏击单轮上限删除(用户拍板)退役——溢出未生效行类型下线(行协议 10→9 类),满层拒收走奖励未生效行 - presentation_obligations: (2026-09-09 登记 systems-index,缺项即 blocking)HUD框架×4——HUD 常显+EC12 空态规格定稿 / effect_id→icon 映射键契约(形状+色相双通道)/ 有利有害极性呈现映射(数据源 = 战斗结算 SettlementTable 效果语义,非 magnitude 符号)/ 全清状态栏去留;战斗表现×2——溢出行呈现 / origin_cell→玩家可读形态(缩略图/格子高亮);教学引导——“同轮拿满优于跨轮叠”教学(OQ7 配套);地图战斗资源——奖励身份预读(创意风险 #1 切面) + settlement_obligations: 八项(战斗结算 GDD 门禁评审缺项即 blocking)——① 同轮多授予按确定次序调用 ② 事实→授予恰一次转化(增益状态 不去重)③ percent→乘数换算方向与合成值地板成文 ④ 最后一轮 decay 判定 ⑤ F1 条款 1 效果档位对照表以 增益状态 实例为对照实物 ⑥ 每结算编排恰一次 decay_round(2026-09-09 增——decay 基数=1 先决条件)⑦ 结算明细按授予流水逐条标注来源(合并坍缩归因补偿,2026-09-09 增)⑧ “溢出未生效”行进结算明细协议(Rule 5 后半承载,2026-09-09 增)。**履行回执(2026-09-10)**:八项已全数落位 战斗结算 GDD(Core Rules 3/5/8/10/11 + Formulas F0–F2——落位映射 = 战斗结算 AC 覆盖矩阵"上游义务 23 条"行;③的 AP/表界数值随 F0 修订更新为 −520%/−1040%)。**2026-09-20 修订**:⑧ 随伏击单轮上限删除(用户拍板)退役——溢出未生效行类型下线(行协议 10→9 类),满层拒收走奇物未生效行 + presentation_obligations: (2026-09-09 登记 systems-index,缺项即 blocking)HUD框架×4——HUD 常显+EC12 空态规格定稿 / effect_id→icon 映射键契约(形状+色相双通道)/ 有利有害极性呈现映射(数据源 = 战斗结算 SettlementTable 效果语义,非 magnitude 符号)/ 全清状态栏去留;战斗表现×2——溢出行呈现 / origin_cell→玩家可读形态(缩略图/格子高亮);教学引导——“同轮拿满优于跨轮叠”教学(OQ7 配套);地图战斗资源——奇物身份预读(创意风险 #1 切面) ownership_note: 行动经济 OQ5“标中旗 debuff 档位归 地图战斗资源 表设计”经用户 2026-09-08 拍板收编——初值定稿权归 增益状态(2026-09-15 起为七行:标错反噬批两行 + 格面资源批 sapped 一行随批收编),锚验收权仍归 地图战斗资源/战斗结算,修订走接口漂移回写本条 dangling_ref_policy: effect_id 悬空校验**已激活**(2026-09-09 地图战斗资源 RewardTable 首个 effect_id 引用行〔defense_up〕回填——dangling_ref_policy"首个引用字段 owner 补"条款兑现;条件性夹具 = 地图战斗资源 reward_dangling_effect〔AC-17〕) referenced_by: [战斗结算, 地图战斗资源, 敌人系统, HUD框架, 教学引导, 战斗表现] @@ -195,7 +195,7 @@ entities: owner: design/gdd/systems/排雷循环/排雷玩法.md attributes: rule: O₀ = R₀ = 出生 3×3 ∪ 0 格 flood 闭包(与 棋盘生成 F1 求解器初始态同算子同值——运行期镜像,显式不含外扩 1 环);执行时点 = install_board 事务内一次(板级一次跨轮不重放) - properties: 免费(零 try_spend)· 计入清图进度 · 无奖励(channel=initial、reward_eligible=false——game-concept 定稿;战斗结算×3 强制项:不入奖励库)· 永不触雷(R₀ ∩ M = ∅ 为 排雷玩法 侧定理)· 永不触变异(棋盘生成 排除域 + install 不变式②) + properties: 免费(零 try_spend)· 计入清图进度 · 无奇物(channel=initial、reward_eligible=false——game-concept 定稿;战斗结算×3 强制项:不入奇物库)· 永不触雷(R₀ ∩ M = ∅ 为 排雷玩法 侧定理)· 永不触变异(棋盘生成 排除域 + install 不变式②) dual_containment_resolution: 双包含两臂在 排雷玩法 定稿下**构造性成立**——臂① R₀ ⊆ 棋盘生成 排除域(子项关系)· 臂② 棋盘生成 求解器初始态 = R₀(**恰等**)⇒ 棋盘生成 回退口径(出生 3×3 最小态)不触发、度量保真零降级(board_gen_table.minesweeper_dual_containment 的兑现回执) install_invariants: 四条结构不变式 fail-fast(增益状态 无雷 / 增益状态∪R₀ 无变异 / 数字恒真 / **R₀ ≠ S 清图退化板拒绝**——非 棋盘生成 clearable 闸复验,排雷玩法 状态机良构性守卫);诊断类别封闭枚举 {inv1_mine_in_spawn, inv2a_variant_in_spawn, inv2b_variant_in_r0, inv3_digit_invariant, inv4_r0_equals_s}(2026-09-09 评审补) degenerate_gap: **棋盘生成 修订义务(2026-09-09 登记,systems-index 排雷玩法 门禁块)**——反例 B(8×8 八雷先布后删幸存距离-2 雷 → 最终板全 0 格连通 → R₀=S 开局免费清图)与 N=1 行 100% 退化,证明 棋盘生成 布雷数下限必要不充分、F4 断言 A(inferability=1.0)零拦截:义务 = 棋盘生成 F5 legality 增 R₀≠S(违例 = 尝试作废重试)+ F4 断言严格零覆盖 + Rule 4 排除域基准措辞钉死"以最终产物板计";排雷玩法 侧不变式④为纵深防御 @@ -227,38 +227,38 @@ entities: 开轮摇号: 每轮轮次开始时为每个存活敌摇定本拍动作——排除冷却中技能后按权重份额归一抽签,中签率 = 权重 ÷ 可摇权重合计;随机消费在 战斗结算 换算层 behavior_roll 封闭流(敌人系统 首次定义,2026-09-16 敌人技能池批) 保底: 连续 M 拍执行的都是普通攻击 → 下拍必出特殊技(特殊技内按权重、不受冷却限制)——反旱季闸(敌人系统 首次定义,2026-09-16 敌人技能池批) 技能冷却: 施放后连续 N 拍不可摇中的技能行属性——与增益持续(状态行属性)是两个计时器互不相干(敌人系统 首次定义,2026-09-16 敌人技能池批) - 施放行: 增益技的结算明细行型(cast)——0 伤害动作、具名技能、不掷不折(原"不兑付伏击"的读怪奖励语义随 2026-09-20 八型批伏击退役作废);由蓄力行(charge)改型(敌人系统/战斗结算 首次定义,2026-09-16 敌人技能池批) + 施放行: 增益技的结算明细行型(cast)——0 伤害动作、具名技能、不掷不折(原"不兑付伏击"的读怪奇物语义随 2026-09-20 八型批伏击退役作废);由蓄力行(charge)改型(敌人系统/战斗结算 首次定义,2026-09-16 敌人技能池批) 伏击池: 【2026-09-20 格面资源八型批退役——本词条留档】敌方侧共享的伏击层数——本轮踩几颗雷就几层,轮末清零(side-wide 语义,敌人系统 首次定义;继任 = alert 警觉 side-wide 状态,由增益状态容器承载) 死亡即不动手: 轮到某敌人行动时它已死 → 这一下不打、招式轮转停格(2026-09-09 用户拍板,敌人系统 首次定义) 封锁格: 初始展开白送的那批已开格——恒无格面资源、不再有任何加成,但计入清图进度(排雷玩法 首次定义;install 期可精确枚举为 R₀——格面资源摇号清单的排除项;取代旧术语"资格格",2026-09-15 格面资源批) - 格面资源(CellResource): 关联到格子上的资源对象——装板期摇定九型类型身份(attack/defense/heal/blast/weaken/pierce/magic/action/gp——2026-09-18 伤害道具批五→七、2026-09-20 格面资源八型批七→八、同日 GP+商店房批八→九 +gp),安全格与雷格一视同仁、同池同分布;极性不在资源内,由「动作 × 格型」矩阵在结算期决定正向(奖励)或负向(惩罚)(地图战斗资源 首次定义;取代"安全格奖励"旧名) - 批尾: 同一批取号中最后消费的一个号——地图战斗资源 清图奖励身份 = install 批的批尾取号(地图战斗资源 F1 首次定义) + 格面资源(CellResource): 关联到格子上的资源对象——装板期摇定九型类型身份(attack/defense/heal/blast/weaken/pierce/magic/action/gp——2026-09-18 伤害道具批五→七、2026-09-20 格面资源八型批七→八、同日 GP+商店房批八→九 +gp),安全格与雷格一视同仁、同池同分布;极性不在资源内,由「动作 × 格型」矩阵在结算期决定正向(奇物)或负向(惩罚)(地图战斗资源 首次定义;取代"安全格奇物"旧名) + 批尾: 同一批取号中最后消费的一个号——地图战斗资源 清图奇物身份 = install 批的批尾取号(地图战斗资源 F1 首次定义) 死行: 被当前内容态判定为零消费的表行——加载不致命、不入参考池,复活走 GDD 修订连锁(地图战斗资源 F4 首次定义;历史首例 attack_up〔hero atk=0 时代〕已于 2026-09-11 随"基础攻击恒存在"用户裁决复活,当前内容态暂无在册死行) 预推进: 测试中为到达 scope=σ 而先行丢弃式消费 σ 个 scope 的构造——RngService 全新实例首个 open_stream 恒为 scope 0,derive_at 不推计数器(地图战斗资源 AC 前言首次定义) - 完美排雷(perfect_sweep): 板级零误标(flag_judged hit=false=0)∧ ≥1 标中 → 清图奖励当量 ×P_perfect(默认 ×2)——与踩雷正交(盲挖踩雷不破坏、标错才破坏)、全有或全无谓词无部分档、板级计数随 install 重置(战斗结算 Core Rule 13 首次定义) + 完美排雷(perfect_sweep): 板级零误标(flag_judged hit=false=0)∧ ≥1 标中 → 清图奇物当量 ×P_perfect(默认 ×2)——与踩雷正交(盲挖踩雷不破坏、标错才破坏)、全有或全无谓词无部分档、板级计数随 install 重置(战斗结算 Core Rule 13 首次定义) 当量: 统一价值单位,1 当量 = 1 点主角 HP 的期望净变化——四源收益单一线性换算的通货(战斗结算 F1 首次定义) 乘区: 伤害公式里相乘的修正段(本作两段:hero 减伤池 × 敌方削弱池——池内加算、clamp [−100,+100]pp、池间乘算、floor 取整)(战斗结算 F2 首次定义) 溢杀: 一刀超出目标剩余 HP 的部分——丢弃、不转移、无负 hp 中间态(战斗结算 F3 首次定义) 免伤轮: 主角该结算承伤为 0 的结算——percent 池地板(−100pp → 乘数 0)的自然结果;现行值链可达路径 = weaken 饱和(敌侧单结算零输出),defense_up 叠满 = 0.4×(−30×2 帽)不再单侧触地板(战斗结算 F2 首次定义;原"defense_up 顶点 −100% 恰在地板边界"例随减伤墙批退役——2026-09-14 增益状态 接口漂移批同步) 图标键(icon key): "哪个数据行配哪枚图标"的固定对照——数据表主键(effect_id/reward_id/cell_type/enemy_id)直接作图标键,一键一专属纹样、映射全局恒定禁运行时换图(art-bible §4.6 首次定义,2026-09-13 冻结) - 徽章(badge): 画在格子上的身份附属小图标(类型/奖励身份预读)——绘制优先级栈位在旗之下、变异纹理之上,不构成格内第二焦点(art-bible §4.6 首次定义;栈位声明源 = 极性批 git 提交 ddd2960) + 徽章(badge): 画在格子上的身份附属小图标(类型/奇物身份预读)——绘制优先级栈位在旗之下、变异纹理之上,不构成格内第二焦点(art-bible §4.6 首次定义;栈位声明源 = 极性批 git 提交 ddd2960) 极性(polarity): 同一类型兑付的正负方向——正 = 收益侧、负 = 代价侧,行为×格型→符号矩阵见极性提案 R2;视觉通道冻结 = 金族(有利)对红族(有害)+ 满框对缺框(art-bible §4.6 首次冻结视觉侧) 命令式回执驱动: 动作调用返回后组合根立刻重查一次只读面来刷新界面、不等通知信号——旗插拔/移动/AP·RAP 读数/状态/库存五类动作零事件外发或零推送,呈现层刷新由此承载(HUD框架 首次定义;ADR-0001 订阅纪律的配对形态) 程序化占位: 用代码按冻结色板与形状规则直接画出的临时图形——参数取自 art-bible §4.1/§3 参数域、icon 按 §4.6 键位映射表挂槽,终稿美术到位后原位替换、数据层零改动(HUD框架 首次定义;样张未定稿不阻塞呈现层开工的承载形态,占位同样受 §1.4 数字可读性第一验收项约束) 叠加层(overlay): 魔法道具 自持的板级派生信息集(显影/真视/预读三集)——只改"玩家能看见什么"不改棋盘事实,零回写 排雷玩法/地图战斗资源 状态、随图消亡(魔法道具 首次定义) 真视窄域护栏: 替代推理的道具效果(雷位真视)目标域 ≤3×3、全图级仅限恢复推理原料类(显影/预读)——信息层级护栏,防"扫雷退化为路径优化"(魔法道具 Core Rule 3 首次定义,schema 校验强制) - 渗透率: aux 道具期望件数占奖励池的份额——E[N_aux/板] = |U|×Σw_aux/W_total(魔法道具 F1 首次定义;供给面天然限流,P1 护栏的量化形态) + 渗透率: aux 道具期望件数占奇物池的份额——E[N_aux/板] = |U|×Σw_aux/W_total(魔法道具 F1 首次定义;供给面天然限流,P1 护栏的量化形态) 行动: 轮次内挖掘期的原子决策单位——同一事件的三个视角:玩家决策层叫行动、进 排雷玩法 的数据形态叫意图(单意图帧整批提交)、行动经济 计价类别叫动作(action_kind 统一价目);有价行动(挖/插旗;拔旗随插旗不可逆批 2026-09-19 退役)1 AP/次、受每轮 AP 预算约束(现行表值 8),移动/停手免费不计 AP(game-concept 术语层级 2026-09-14 收录) 封印: 插旗动作的玩家可见呈现名(2026-09-25 用户拍板)——玩家对未开格插旗,即对该格(巢穴)实施「封印」,旗 = 封印印记;机制键与规则(flag_place/flag_rules/标中旗三向效果)全不变,纯呈现层命名;封印特效(施印瞬间 + 印记常显形态)待表现批,现行程序化占位 = 封印黑「旗」字形(旗色史:旗朱 #C63D22 → 封印紫 #7C3AA8 2026-09-26 → **封印黑 #000000 2026-09-28 用户拍板**——紫与微光蓝族色相冲突退役;art-bible §3.2 封印条首次定义) 节点: 关卡节点地图上的一个格——关卡内移动的步进单位;层名定稿(2026-09-14 用户裁决:节点 胜 遭遇——成员中立 + 关卡节点地图 注册名/切片 node_* 接口零改动 + 遭遇既有语义 = 战斗不挪用);类型分类学与图形态已展开定稿(2026-09-17 关卡节点地图 v1.0:四类封闭枚举 {battle, reward, rest, boss} + 分支节点图〔连线只朝前进方向、唯一入口、Boss 恒唯一终点、无回头路〕;节点编号 = 关卡内唯一定位地址,数据键 node_depth 沿用;2026-09-20 GP+商店房批扩五类 +shop 商店房——每关恰 1、Boss 前一位必经位,兑付 = 商店覆盖层开闭,见商店房词条) 商店房: 关卡节点图第五类节点——每关恰 1、关底 Boss 前一位必经位(哈迪斯式"决战前最后一个补给点",必经位由冒烟断言承载、图合法性六检零新增);兑付 = 打开商店覆盖层,用金币(GP)购买三属性 flat 档商品(无刷新无三选一、全陈列),购买即时生效、离开后确认回选路,不携带战斗行(关卡节点地图 首次定义,2026-09-20 GP+商店房批) 金币(GP): 冒险内一次性的属性提升货币——战斗掉落(掷定 + 关级加值 + 战斗内缓冲,完成一次战斗后统一到账)与格面金币袋(低概率惊喜获取)进钱包、商店房消费、冒险结束清零;不入存档、不入冒险摘要;玩家侧显示名「金币」,与跨局持久的钥石记账完全分离、永不互兑(冒险结构 首次定义,2026-09-20 GP+商店房批) - 统一冒险加算区: 商店购买与关卡大奖励上限提升共用的同一本属性加账——三轴 {攻击, 生命上限, 护甲等级},入战参数 = 基础表值 + 加算区累加,经战斗开始入参的覆盖值通道生效;购血 = 上限与当前生命同步 +Δ(冒险结构 首次定义,2026-09-20 GP+商店房批) + 统一冒险加算区: 商店购买与关卡大奇物上限提升共用的同一本属性加账——三轴 {攻击, 生命上限, 护甲等级},入战参数 = 基础表值 + 加算区累加,经战斗开始入参的覆盖值通道生效;购血 = 上限与当前生命同步 +Δ(冒险结构 首次定义,2026-09-20 GP+商店房批) 遭遇: 一次完整战斗事件的同义词——战斗节点触发的那一场仗(既有用法:战斗结算"两场遭遇" / HUD框架"双敌种遭遇""Boss 遭遇变体");不作地图层名(2026-09-14 裁决) - 节点奖励: 奖励点节点给的奖励(关卡节点地图 域)——与安全格奖励(地图战斗资源,格内开出)区分;现行(2026-09-29 迭代 7 拍板②丙):奖励节点 = **三选一构筑点**——从可用道具池(aux 活行 ∩ 工坊解锁集)取一件入关卡域库存,选择前不给出口、池空直通合法空态;spec = design/gdd/ux/node-reward.md v1.0;旧「功能道具的正式渠道」拍板(2026-09-17 关卡节点地图 v1.0)已被现行口径取代;**形态沿革(2026-09-30 用户裁决甲)**:现行局内投放系切片期过渡形态,终局 = 魔法道具局外同调件(底稿 design/research/proposal-magic-item-attunement-2026-09-22.md 八拍板),本渠道随同调实施批退役改写——三个"reward"各归各位(2026-09-14 拆名注记) - HP 账本: 冒险域主角血量的唯一记录——冒险结构 持有,每战开始交出、战斗结束收回、恢复点与大奖励入账;关卡切换血条不清零(冒险结构 首次定义;跨战斗 HP 持久性归 关卡节点地图/冒险结构 已锁事实的 冒险结构 半边兑现) + 节点奇物: 奇物点节点给的奇物(关卡节点地图 域)——与安全格奇物(地图战斗资源,格内开出)区分;现行(2026-09-29 迭代 7 拍板②丙):奖励节点 = **三选一构筑点**——从可用道具池(aux 活行 ∩ 工坊解锁集)取一件入关卡域库存,选择前不给出口、池空直通合法空态;spec = design/gdd/ux/node-reward.md v1.0;旧「功能道具的正式渠道」拍板(2026-09-17 关卡节点地图 v1.0)已被现行口径取代;**形态沿革(2026-09-30 用户裁决甲)**:现行局内投放系切片期过渡形态,终局 = 魔法道具局外同调件(底稿 design/research/proposal-magic-item-attunement-2026-09-22.md 八拍板),本渠道随同调实施批退役改写——三个"reward"各归各位(2026-09-14 拆名注记) + HP 账本: 冒险域主角血量的唯一记录——冒险结构 持有,每战开始交出、战斗结束收回、恢复点与大奇物入账;关卡切换血条不清零(冒险结构 首次定义;跨战斗 HP 持久性归 关卡节点地图/冒险结构 已锁事实的 冒险结构 半边兑现) 关卡收束点: 一关就此定局的时点——Boss 节点战斗胜利(通关)或英雄死亡(失败);关卡节点地图 在收束点先调 战斗结算 关卡清库、再向 冒险结构 宣布关卡结束与结果(冒险结构 首次定义;切片 level_runner 先例转正;2026-09-17 关卡节点地图 v1.0 图版措辞——Boss 节点 = 图唯一终点) - 关卡大奖励: 清完一关、进入下一关前的一次性兑付——上限提升 + 血回满 + 钥石入账三件构成,不进背包不占库存域;末关通关不兑付(冒险结构 首次定义;2026-09-17 代币→钥石统一拍板——原「代币记账」即钥石,同一资源两渠道:关卡大奖励入账与 Boss 掉落;game-concept"冒险内大奖励"的落地形态) + 关卡大奇物: 清完一关、进入下一关前的一次性兑付——上限提升 + 血回满 + 钥石入账三件构成,不进背包不占库存域;末关通关不兑付(冒险结构 首次定义;2026-09-17 代币→钥石统一拍板——原「代币记账」即钥石,同一资源两渠道:关卡大奇物入账与 Boss 掉落;game-concept"冒险内大奇物"的落地形态) 永久强化: 跨局成长资源的本作落地名——伴随存档生命周期、可用钥石在营地柜台换取的成长条目集合(元进度定稿批 2026-09-18 用户拍板定名;「元进度 / Meta Progression」保留为系统族名,「营地」为存档内消费枢纽的界面壳非机制实体;「天赋树」同日退役——本作无树形结构,柜台条目为线性清单无分叉无前置;首次定义 元进度 v1.0) referenced_by: [排雷玩法, 敌人系统, 地图战斗资源, 战斗结算, HUD框架, 魔法道具, art-bible, game-concept, 关卡节点地图, 冒险结构, 关卡节点图生成] @@ -278,7 +278,7 @@ entities: hp: int [1,999](knob——难度修饰前基线;MVP 18 provisional 出处待查) atk: int [0,999](knob——attack 行为伤害基值;MVP 4 provisional 出处待查;0 合法不拒——2026-09-20 八型批去"纯伏击伤敌种"旧注) pool: Array of {skill_id, weight}(**2026-09-16 敌人技能池批——池模板**,定义层;weight ∈ (0,9999] knob、池内 skill_id 不重复;每池恰一行普通攻击 + 增益技 ≤1 + skill_id 悬空致命〔加载校验在 config_db.validate_skill_pool_links 跨表通道〕;实例池〔快照+冷却状态〕在 单位容器 spawn——三敌种建议池构成与权重不列于本 registry,读 data/tables/enemy.tres(provisional 归 难度曲线与Boss;EV 锚与含闸长期速率实测读数随验收批另测登记〔2026-09-18 指路化收口〕))。**历史(2026-09-16 退役)**:heavy_multiplier int [1,16](重击倍率归技能行 damage_mult)与 pattern StringList(行为环环数组)两字段随行为环整体退役——固定出招剧本废除 - rowset_rule: 每行集恰一敌种(行集内 enemy_id 唯一 = 表结构校验,违规加载期致命)——同层多遭遇已由节点编号消解(2026-09-17 关卡节点地图 v1.0:node_depth 语义 = 关卡内唯一节点编号,同层不同节点各查各行、键结构零改动);同场多敌种(同一编号行集多行)行集校验放开归 敌人表行集多行批(混编伏击上限取值口径随 2026-09-20 上限删除消解)(战斗侧,排技能池实施批落地后;06-待办清单 敌人系统节同名条目单点登记);精英/Boss 不设编码位——Boss = 最大编号节点(图唯一终点)、精英 P2 内容承载(强敌行集)。**精英怪设定登记(迭代 10 奖励重构批 P-D——实装随怪物批)**:与其他普通小怪同一立绘 + 附加特征标记 + 数值更强;视觉特征三件 = 名称前后缀(「精英·熊地精」式——沿用既有译名不换词根)+ 精英底座光环(程序化零立绘改动)+ 精英描边变色(色板合规与样张闸义务随实装批);掉落挂点 = 钥石 1 个(meta.tres boss_keystone 精英行随实装批落) + rowset_rule: 每行集恰一敌种(行集内 enemy_id 唯一 = 表结构校验,违规加载期致命)——同层多遭遇已由节点编号消解(2026-09-17 关卡节点地图 v1.0:node_depth 语义 = 关卡内唯一节点编号,同层不同节点各查各行、键结构零改动);同场多敌种(同一编号行集多行)行集校验放开归 敌人表行集多行批(混编伏击上限取值口径随 2026-09-20 上限删除消解)(战斗侧,排技能池实施批落地后;06-待办清单 敌人系统节同名条目单点登记);精英/Boss 不设编码位——Boss = 最大编号节点(图唯一终点)、精英 P2 内容承载(强敌行集)。**精英怪设定登记(迭代 10 奇物重构批 P-D——实装随怪物批)**:与其他普通小怪同一立绘 + 附加特征标记 + 数值更强;视觉特征三件 = 名称前后缀(「精英·熊地精」式——沿用既有译名不换词根)+ 精英底座光环(程序化零立绘改动)+ 精英描边变色(色板合规与样张闸义务随实装批);掉落挂点 = 钥石 1 个(meta.tres boss_keystone 精英行随实装批落) mvp_content: **八敌种(2026-09-14 难度曲线与Boss 修订批转正 goblin / bugbear / ogre_chief 三敌种〔DND 更名批用户指令:grub→goblin / ambusher→bugbear / boss_guardian→ogre_chief〕;2026-09-17 分支节点图批新增 giant_spider / drider,本条 2026-09-18 补收编;2026-09-20 第三关内容批新增 duergar / hook_horror / duergar_king,本条随批补收编;敌人系统 物种集断言随批更新为 {goblin, bugbear, ogre_chief, giant_spider, drider, duergar, hook_horror, duergar_king})**:goblin(地精,armor=light)/ bugbear(熊地精,armor=ward)/ ogre_chief(食人魔酋长,armor=heavy)/ giant_spider(巨蜘蛛)/ drider(蛛化卓尔精灵,Boss = 最大编号节点图唯一终点)/ duergar(灰矮人,单体重甲中坚——重甲首次登台,armor=heavy)/ hook_horror(钩爪恐魔,群行捕食者,armor=light)/ duergar_king(灰矮人石君王,L3 Boss,重甲收束「轻甲→魔法甲→重甲」教学梯度)。技能池构成与权重、armor_type 行映射**不列于本 registry**——〔**2026-09-28 M-3 迭代 5 T4 AC 投值批→2026-09-29 返工批 U2 裁 v1 重投**:初版 Boss-only(杂鱼全 0·Boss 8/9/12)被 U2 推翻——终版 **v1 硬梯度**=杂鱼按 T4 报告 §一 软梯度恢复(0~5 带内)+重击手 8/重装手 9(逐行手设值,非精英编码位——解读 A 追认)+Boss 台阶 8/10/12;v1 中间态未入 git,杂鱼行按报告表值代拟恢复(台账 247);演化链与三版读数见 git 提交 8ffc555,裁断全录 git 提交 f9c1a8a;冒烟带宽断言随新形态更新(杂鱼 0~5·重击手/重装手 8~9·Boss 8~12 台阶)〕读 data/tables/enemy.tres(L3 行值语义:duergar 关间台阶 ≈L2 单体 ×1.5 落 [1.3,1.6] 域、hook_horror 复用 bite 共享技能行、两敌种首遇位〔节点 0/1〕固定数量不加骰、Boss 血 75 = Σ普通战生命期望 91 × r_boss≈0.82 provisional 锚;行值全 provisional 归 难度曲线与Boss)。**2026-09-17 数值压缩批·文档同步——hp/atk 等数值列改指路存根**:L1/L2 节点编号行集(D0–D8)共 12 行的 hp · atk · atk_min · atk_max · unit_count · unit_count_max · advantage_per_round_cap · armor_class 等现行值**不列于本 registry**——读 `data/tables/enemy.tres`(数值压缩批注释登记:`L1 D0 24/7 → 8/2`、`L1 D1 13/5 → 4/2`、`L1 D2 40/9 → 13/3`、`L1 D3 18/6 → 6/2`、`L1 D4 150/9 → 50/3` Boss、`L2 D0 30/7 → 10/2`、`L2 D1 15/5 → 5/2`、`L2 D4 14/5 → 5/2`、`L2 D5 38/8 → 13/3`、`L2 D6 12/4 → 4/1`、`L2 D7 13/5 → 4/2`、`L2 D8 175/8 → 58/3` drider);armor_type / armor_class / unit_count 区间 / 技能池权重 / advantage_per_round_cap 不压缩(相对轴与概率轴)。**2026-09-16 敌人技能池批**:行为环拍序列([attack] 单拍环 / [attack,charge,heavy] 三拍环 / [attack,attack,charge,heavy] 四拍环)与 heavy_multiplier=2 退役,改池模板 + 技能表共享技能行(重击倍率 2 = 技能行 damage_mult);出处 = 切片 enemy.tres(技能池批改型),曲线数值与池权重归 难度曲线与Boss load_bearing_rules: 多敌模型(1–3 同敌种单位,增益状态 单敌假设回验不成立——见 status_effect.single_enemy_assumption)· 行为环确定性轮转(零随机;先作用后推进;死亡即不动手——轮到前被杀本拍不打指针冻结;同步轮转定理)· 效果 side-wide(原伏击池 = side 共享、增益状态 零接口变更——伏击池随 2026-09-20 八型批退役,side-wide 承载改由增益状态 alert 行承接)· 行值快照抗热重载(增益状态 EC9 同款——池模板同在快照范围,实例池冷却全零起步)· **技能池摇号出招(2026-09-16 敌人技能池批改写——原"行为环确定性轮转/同步轮转定理"退役)**:每拍做什么 = 实例池权重摇号〔开轮时点,随机消费在 战斗结算 换算层 behavior_roll 封闭流;本系统语义零随机不变、单位容器收确定值〕;两道闸 = 全技能各自冷却 + 保底 M;死亡即不动手(摇定后兑现前死亡 → 本拍作废不进账);拍结构保留(每结算每存活敌恰行动一次/行序/先作用后推进)· 零随机零 UI 零事件订阅(排雷玩法 事件面不含 敌人系统——事实经 战斗结算 转化) settlement_obligations: 六项(敌人系统 GDD 门禁评审缺项即 blocking)——① 行动每结算恰一次(敌单位专属——主角无环)+ 结算内调用序成文 按摇定技能行兑现→apply_damage→commit_action〔2026-09-16 技能池批改型——原 query_attack→apply_damage→advance 随行为环退役〕 ② 雷→伏击恰一次转化 ③ clamp/负值/溢杀与死亡判定时机成文 ④ F1 条款 3 闭合对账(cap 表值 + 量纲 + 棋盘生成 actuals p10 非 target 参数)⑤ 默认目标消费与单体/AOE 分流 ⑥ 伏击 cap 溢出"溢出未生效"明细行协议。**履行回执(2026-09-10)**:六项已全数落位 战斗结算 GDD(Core Rules 5/6/9/10/12 + Formulas F3/F4——落位映射 = 战斗结算 AC 覆盖矩阵)。**2026-09-20 修订**:④⑥ 随伏击单轮上限删除(用户拍板)退役——对账面去 cap 表值、溢出行协议作废;八型批再修订(2026-09-20 格面资源八型批):② 雷→伏击恰一次转化改 雷→警觉恰一次转化 @@ -297,7 +297,7 @@ entities: armor_class: int [0,999](**2026-09-15 护甲等级批新增,2026-09-16 掷点批定稿落地**——主角作为防守方的护甲等级,敌方攻击拍 / 重击拍基线的掷点折扣判定读数;掷点结算归 settlement_table.ac_roll〔战斗结算〕,与 armor_type〔克制属性轴〕两概念不得混用;现行值读 data/tables/hero.tres〔暂定,调参归 难度曲线与Boss〕) armor_type: enum {light, ward, heavy}(**2026-09-18 营地扩展前置批新增**——主角护甲类型轴可配置可修改,缺省 light 向后兼容;消费面 = 战斗结算甲效矩阵〔敌方攻击现行不查矩阵——轴休眠是结构性的非数值性的〔2026-09-18 甲效矩阵调参批归因改述,原「恒 normal 档故中性」依赖普通行恒 100 已退役〕,轴生效待敌方技能攻击类型批〕;现行值读 data/tables/hero.tres) attack_type: enum {normal, pierce, magic}(**2026-09-18 营地扩展前置批新增**——主角基础攻击量〔atk 量轴〕与攻击类型抽象分离的承载字段:营地永久强化"换成魔法/穿刺攻击" = 改此字段,量轴零改动;消费面 = 战斗结算·战斗段基础分量查甲效矩阵〔原硬编码 normal 退役〕;现行值读 data/tables/hero.tres) - rule4_exemption: 单行全局定义表(主角不随关卡自动成长——成长=天赋 元进度/奖励侧;ActionEconomyTable 先例) + rule4_exemption: 单行全局定义表(主角不随关卡自动成长——成长=天赋 元进度/奇物侧;ActionEconomyTable 先例) hp_persistence: 跨战斗 HP 持久性归 关卡节点地图/冒险结构(provisional)——敌人系统 单位接口以初始 hp 入参,不定义冒险内持久性 referenced_by: [战斗结算, 地图战斗资源, 难度曲线与Boss] @@ -336,21 +336,21 @@ entities: weight: int [0, 999](knob)——正向行 = 类型频次;0 = 该型不出(合法极端,取号前剔除);负向行不消费 pool_tag: enum {cell, clear_default}(cell = 格面资源单一池——安全格与雷格一视同仁同池同分布;clear_ 命名空间预留、校验拒绝——棋盘生成 elite_ 同款) # 2026-09-15 safe_cell→cell 更名 + active_inject 删除 tier: int [1, 8](knob)——强度档位序数(与当量零耦合) - cross_field_validation: 加载期致命族——池空(cell 池 ≥1 正向行 weight>0)· 九型正向行齐备 · 九型负向行齐备(字典完整性——缺任一极性行致命——2026-09-20 八型批、同日 GP+商店房批随九型同步)· clear_default 恒正当量(≥1 活行 ∧ power≥1 ∨ effect_id 非空——行动经济 条款④"清图奖励>0"的行级兑现口径)· percent 行 effect_id 必填/flat 行恒空 · flat 行 power≥1 # 2026-09-15 重写——旧 floor_supply_missing / no_damage_row 随可选类删除失义退役 - mechanics: 格面资源身份 install 期预分配(roll_board 恰一次、行主序、消费 reward_roll 封闭流恰一 scope 批〔格批 + 清图批尾一号〕;全部非封锁格逐一摇定类型——安全格与雷格同池同分布、封锁格不入摇号清单;Ready 后只读、无重掷 API)· **极性不在资源内**——「动作 × 格型」矩阵(开安全格/标中雷 = 正向、开雷格/标错安全格 = 负向、插旗安全格直挖 = 零兑付〔四情况④〕;撤旗动作随插旗不可逆批 2026-09-19 退役)字典定义归 地图战斗资源、路由执行归 战斗结算 授予段(结算队列 + 轮末在场旗判定基线——被挖开的旗不入基线)· 授予期零随机(身份恒定跨轮;换图映射消亡)· 负向恒即时(不入库、无库存语义——库存已随可选类删除下线)· 满层零兑付 = 合法例外 + "奖励未生效"行 · 重复受理幂等(同格重复 grant / 同批次重复 grant_clear → 同一快照/身份 + 诊断;受理/兑付恰一次归 战斗结算×②③) + cross_field_validation: 加载期致命族——池空(cell 池 ≥1 正向行 weight>0)· 九型正向行齐备 · 九型负向行齐备(字典完整性——缺任一极性行致命——2026-09-20 八型批、同日 GP+商店房批随九型同步)· clear_default 恒正当量(≥1 活行 ∧ power≥1 ∨ effect_id 非空——行动经济 条款④"清图奇物>0"的行级兑现口径)· percent 行 effect_id 必填/flat 行恒空 · flat 行 power≥1 # 2026-09-15 重写——旧 floor_supply_missing / no_damage_row 随可选类删除失义退役 + mechanics: 格面资源身份 install 期预分配(roll_board 恰一次、行主序、消费 reward_roll 封闭流恰一 scope 批〔格批 + 清图批尾一号〕;全部非封锁格逐一摇定类型——安全格与雷格同池同分布、封锁格不入摇号清单;Ready 后只读、无重掷 API)· **极性不在资源内**——「动作 × 格型」矩阵(开安全格/标中雷 = 正向、开雷格/标错安全格 = 负向、插旗安全格直挖 = 零兑付〔四情况④〕;撤旗动作随插旗不可逆批 2026-09-19 退役)字典定义归 地图战斗资源、路由执行归 战斗结算 授予段(结算队列 + 轮末在场旗判定基线——被挖开的旗不入基线)· 授予期零随机(身份恒定跨轮;换图映射消亡)· 负向恒即时(不入库、无库存语义——库存已随可选类删除下线)· 满层零兑付 = 合法例外 + "奇物未生效"行 · 重复受理幂等(同格重复 grant / 同批次重复 grant_clear → 同一快照/身份 + 诊断;受理/兑付恰一次归 战斗结算×②③) api: 封闭枚举入口(provisional,实现期 ADR 定名)——roll_board / query_identity(返回 {reward_id, cell_type, tier} 引用级投影;未开格恒可查——魔法道具 桥接结构前提;清单外坐标 → null + 诊断)/ grant(同格重复受理幂等 + 诊断)/ grant_clear(同批次重调幂等 + 诊断)/ retire_mapping / equivalence_supply(全活行投影 + tier_min_buff)+ weighted_pick 纯函数面;新增入口 = 接口漂移,新增入口须随附全输入域语义表 # 2026-09-15 删 stock/use/query_inventory/clear_inventory(库存轴下线) mvp_content: 十八行(2026-09-15 格面资源批十行;2026-09-18 伤害道具批增补四行;2026-09-20 格面资源八型批 ambush_double→enemy_alert 换装 + ap_up/ap_drain 两行新增;同日 GP+商店房批 +gp_gain/gp_loss 两行)——格面池正向九行(attack_up / ac_up〔2026-09-16 护甲等级掷点批换装,原 defense_up 减伤 −30% 退役;cell_type defense/权重/档位零改动〕/ spark_aoe / heal_minor / weaken / pierce_strike / magic_bolt〔attack_type 字段载攻击类型轴,查战斗结算克制矩阵、单目标必中全额〕/ ap_up action〔下轮行动点 +1——2026-09-20 八型批新增〕/ gp_gain gp 金币袋〔战斗内 GP 缓冲 +power,兑付编排归 战斗结算、钱包账本归 冒险结构——GP+商店房批新增〕)+ 负向九行纯字典(enrage / off_guard / heal_backlash 直伤〔不经增益状态〕/ enemy_alert blast〔effect_id=alert,敌方护甲等级 +1——2026-09-20 八型批 ambush_double 退役换装〕/ ap_drain action〔下轮行动点 −1〕/ sapped / pierce_snare / magic_recoil〔均主角直伤,不经增益状态〕/ gp_loss gp 破财〔战斗内 GP 缓冲 −power——GP+商店房批新增〕)+ clear_blast(clear_default);类型频次 = 正向行权重合计;tier_min_buff = 2。**2026-09-17 数值压缩批·文档同步——具体数值列(power/weight/power_min/power_max)改指路存根**:现行行值读 `data/tables/reward.tres`(压缩后锚行:spark_aoe power=1 / heal_minor power=[1,1] 定值(原 [2,6] 区间压缩)/ heal_backlash power=1 / clear_blast power_min=8 power_max=18 power=13 中点 / ambush_double stacks=2;类型频次合计 79→67〔heal 权重 15→3〕;2026-09-20 八型批后 67→74——attack 14 / defense 11 / blast 16 / heal 2 / weaken 8 / pierce 8 / magic 8 / 清障炸药 1 / action 6;同日 GP+商店房批九型后 74→76——+gp_gain weight 2) direction_precheck: **刀供给方向预检随可选类删除失义退役(2026-09-15)**——历史读数见底部修订记录;新对账锚 = 行动经济 条款②③ 左臂(正向格面资源当量供给)随格面资源批重推,义务归 难度曲线与Boss 调参批 - settlement_obligations: 四项(战斗结算 GDD 门禁评审缺项即 blocking,清单全文见 地图战斗资源 GDD Dependencies)——① 结算段序骨架(授予→增益/减益→战斗→衰减→判定)② 极性路由受理 + 每格恰一次 + 满层零兑付"奖励未生效"行(含聚合计数字段)③ clear_reward 授予路径(增益状态 OQ4 关闭条件)④ 生命周期编排(battle_over retire 映射消亡)+ roll_board 恰一次 # 2026-09-15 由六项收拢(窗口/道具段与库存编排随可选类删除失义) - hud_obligations: 三项(缺项即 blocking)——① 已开格资源身份恒定可读(挖掘期规划面)+ 未开格类型可查面的呈现深度(预读边界待办)② 结算明细行(效果行/"奖励未生效"〔聚合计数〕/标旗未中行/直伤行)③ H2 清图奖励行强调呈现 # 2026-09-15 由五项收拢(库存常读条/道具窗口随可选类删除失义) - high_glow_nodes: H1 开格拾取瞬间 / H2 清图奖励兑付(奖励侧常规节拍登记;**风险 #2 排雷侧"完美排雷爆发结算"机制本体归 战斗结算 强制检查点、#3 标中旗节拍补偿归 战斗结算——地图战斗资源 只交付插槽与明细行数据面**;呈现义务 HUD框架×③) # 2026-09-15 H3 道具抢杀窗口随可选类删除失义 + settlement_obligations: 四项(战斗结算 GDD 门禁评审缺项即 blocking,清单全文见 地图战斗资源 GDD Dependencies)——① 结算段序骨架(授予→增益/减益→战斗→衰减→判定)② 极性路由受理 + 每格恰一次 + 满层零兑付"奇物未生效"行(含聚合计数字段)③ clear_reward 授予路径(增益状态 OQ4 关闭条件)④ 生命周期编排(battle_over retire 映射消亡)+ roll_board 恰一次 # 2026-09-15 由六项收拢(窗口/道具段与库存编排随可选类删除失义) + hud_obligations: 三项(缺项即 blocking)——① 已开格资源身份恒定可读(挖掘期规划面)+ 未开格类型可查面的呈现深度(预读边界待办)② 结算明细行(效果行/"奇物未生效"〔聚合计数〕/标旗未中行/直伤行)③ H2 清图奇物行强调呈现 # 2026-09-15 由五项收拢(库存常读条/道具窗口随可选类删除失义) + high_glow_nodes: H1 开格拾取瞬间 / H2 清图奇物兑付(奇物侧常规节拍登记;**风险 #2 排雷侧"完美排雷爆发结算"机制本体归 战斗结算 强制检查点、#3 标中旗节拍补偿归 战斗结算——地图战斗资源 只交付插槽与明细行数据面**;呈现义务 HUD框架×③) # 2026-09-15 H3 道具抢杀窗口随可选类删除失义 referenced_by: [战斗结算, HUD框架, 难度曲线与Boss, 魔法道具, 战斗表现, 教学引导] - name: reward_config type: schema_data owner: design/gdd/systems/战斗循环/地图战斗资源.md attributes: - table: "**已删除(2026-09-15 格面资源批)**——RewardConfigTable 随可选类道具整体删除下线:k_dmg / active_p0 / active_decay / n_draft / p_min 全部供给控制器与按板保底参数失义;清图奖励配置并入 RewardTable clear_default 槽;切片 reward_config.tres 随代码修改批删除(历史字段定义见底部修订记录)" + table: "**已删除(2026-09-15 格面资源批)**——RewardConfigTable 随可选类道具整体删除下线:k_dmg / active_p0 / active_decay / n_draft / p_min 全部供给控制器与按板保底参数失义;清图奇物配置并入 RewardTable clear_default 槽;切片 reward_config.tres 随代码修改批删除(历史字段定义见底部修订记录)" referenced_by: [地图战斗资源, 难度曲线与Boss, 战斗结算] - name: settlement_table @@ -360,7 +360,7 @@ entities: table: SettlementTable(数据配置 承载,单行全局;战斗结算 回填 owner,2026-09-10 定稿回填;Rule 4 豁免——单行全局常量/结构表,HeroTable/ActionEconomyTable 先例) fields: equivalence_ref_damage: int [1,999](knob,现行值读 data/tables/settlement.tres——当量参考敞口 D_ref,F1 通货;变更触发全对照表 + 条款③⑤对账重跑,禁独立调参) - p_perfect: int {100,200} percent(knob,默认 200 provisional——完美排雷清图奖励**第二份兑付触发**;2026-09-10 战斗结算 评审批修订:真实双份交付载体〔Core Rule 13#2〕——100 = 仅高光、200 = 双份交付,非整数倍数乘数无运行时载体、域外加载致命;上界受护栏 B 约束〔双读数:D_ref 口径 24 / DPS 严格读数 ≈8,裁决归 难度曲线与Boss〕) + p_perfect: int {100,200} percent(knob,默认 200 provisional——完美排雷清图奇物**第二份兑付触发**;2026-09-10 战斗结算 评审批修订:真实双份交付载体〔Core Rule 13#2〕——100 = 仅高光、200 = 双份交付,非整数倍数乘数无运行时载体、域外加载致命;上界受护栏 B 约束〔双读数:D_ref 口径 24 / DPS 严格读数 ≈8,裁决归 难度曲线与Boss〕) segment_order: StringList(结构冻结——段序骨架 [grant, buff_debuff, combat, decay, verdict];加载期恒等拍板序校验违例致命,防实现乱序静默漂移;2026-09-15 格面资源批五段——item_window/item 两段随可选类删除下线,旧七段序见底部修订记录) source_label_map: Dictionary source_class→文案键(结构冻结——P2 归因呈现映射;键集 = 增益状态 source_class ∪ {判定扩展, enemy_action, flag_miss}——2026-09-10 战斗结算 评审批修订;2026-09-15 格面资源批删"道具"扩展键;新增键 = 接口漂移) effect_pool_map: Dictionary effect_id→pool {hero_offense|hero_defense|enemy_output|enemy_defense|flat_attach}(结构冻结——F2 效果语义映射,增益状态 Rule 7 载体;键 ⊆ StatusEffectTable 活行集、悬空加载期致命;新 effect_id 上线须随批登记——2026-09-15 格面资源批随 sapped 行收编登记:sapped → hero_offense;**2026-09-16 护甲等级掷点批:删 defense_up → hero_defense 键**〔减伤百分比行退役,hero_defense 池现仅 off_guard 正向行〕;ac_up 为 AC 阈值轴效果、不入任何池;**2026-09-16 敌人技能池批:增 empower → enemy_output · fortify → enemy_defense**〔敌方防御池新词汇——硬化载体,消费面 = 主角攻击合计后 ×(100+clamp(enemy_defense))/100,四池对称:敌打主角 = hero_defense × enemy_output、主角打敌 = hero_offense × enemy_defense;切片现状注记:hero_offense 现行走普通分量 attack_up 直乘、未并入合计乘区,正式化归 ADR 批〕;**2026-09-18 结构修复批:删 off_guard → hero_defense 键**〔off_guard 换装 AC 轴不入池——hero_defense 池清空、池结构保留;hero_offense 乘区接线同步落地:主角攻击合计后 ×(100+clamp(hero_offense))/100 ×(100+clamp(enemy_defense))/100 两池串乘,attack_up 普通分量直乘旁路退役——上方"切片现状注记"销项〕) @@ -368,10 +368,10 @@ entities: pool_clamp_hi: int pp(结构冻结 +100——percent 池地板域上界;原"七字段 pool_clamp_lo_hi"措辞作废,数据配置 GDD 行按收编先例以本条为准) round_direction: enum {floor}(结构冻结——单一取整规则) armor_effectiveness: Dictionary 攻击类型×护甲→克制修正点数(加法 delta,域 [−3,+3],缺项回退 0 中性;键集结构冻结 {normal, pierce, magic} × {light, ward, heavy};现行九格读数不列于本 registry——读 data/tables/settlement.tres(**2026-09-18 加法核换装批:量纲由百分比改整数点数,三档 克制 +1/中性 0/被克 −1,五档百分比读数随批退役**);**2026-09-15 命名统一批:改为语义键,原 {base, dmg_a, dmg_b} × {none, a, b} 位置键作废**;数值 provisional 归 难度曲线与Boss) - ac_roll: 护甲等级掷点(**2026-09-16 护甲等级掷点批定稿,数字即规范**——骰面 roll_faces=20、nat 最大面 crit_roll=20、暴击倍率 crit_multiplier=200、攻击加成 attack_bonus=0〔结构位,元进度/武器附魔未来投值〕、伤害下限 damage_floor=1、流名 armor_roll_stream="armor_roll";判定式:掷 1d20,掷点 ≥ 防守方护甲等级 + 攻击加成 → 全额、低掷按缺口查档〔见 ac_discount_tiers〕,nat20 暴击该基础攻击分量 ×2 且恒全额〔双方同规〕;任何攻击落地伤害 ≥ damage_floor〔**2026-09-20 伤害下限全来源批(用户拍板)**:语义扩为任何来源的伤害落地——攻击双方/棋盘克制直伤/爆裂/地形变异/负向反噬全部收进闸内,伤害取值域 [1, +∞) 不设上限;全局 max(1,·)——零值伤害行语义退役,重档折扣行文本记"被压制"〕;吃掷点分量 = 主角先手攻击普通分量 / 敌方技能基础伤害分量〔= 攻击基线 × 技能伤害倍率——2026-09-16 敌人技能池批改述,原"敌方攻击拍与重击拍基线伤害"退役;无伤害分量的增益技不掷不折〕,棋盘来源伤害〔爆裂 / 清障炸药 / 奖励即时——2026-09-19 充能退役后无充能分量;伏击附加项随 2026-09-20 八型批伏击退役移除〕必中全额不掷;回合内随机、消费 armor_roll 封闭流逐次掷逐次取号,可逐位回放) + ac_roll: 护甲等级掷点(**2026-09-16 护甲等级掷点批定稿,数字即规范**——骰面 roll_faces=20、nat 最大面 crit_roll=20、暴击倍率 crit_multiplier=200、攻击加成 attack_bonus=0〔结构位,元进度/武器附魔未来投值〕、伤害下限 damage_floor=1、流名 armor_roll_stream="armor_roll";判定式:掷 1d20,掷点 ≥ 防守方护甲等级 + 攻击加成 → 全额、低掷按缺口查档〔见 ac_discount_tiers〕,nat20 暴击该基础攻击分量 ×2 且恒全额〔双方同规〕;任何攻击落地伤害 ≥ damage_floor〔**2026-09-20 伤害下限全来源批(用户拍板)**:语义扩为任何来源的伤害落地——攻击双方/棋盘克制直伤/爆裂/地形变异/负向反噬全部收进闸内,伤害取值域 [1, +∞) 不设上限;全局 max(1,·)——零值伤害行语义退役,重档折扣行文本记"被压制"〕;吃掷点分量 = 主角先手攻击普通分量 / 敌方技能基础伤害分量〔= 攻击基线 × 技能伤害倍率——2026-09-16 敌人技能池批改述,原"敌方攻击拍与重击拍基线伤害"退役;无伤害分量的增益技不掷不折〕,棋盘来源伤害〔爆裂 / 清障炸药 / 奇物即时——2026-09-19 充能退役后无充能分量;伏击附加项随 2026-09-20 八型批伏击退役移除〕必中全额不掷;回合内随机、消费 armor_roll 封闭流逐次掷逐次取号,可逐位回放) ac_discount_tiers: Dictionary 缺口档边界→档位值 percent(**2026-09-16 定稿**——roll_tier_bounds=[3,7] · roll_tier_discounts=[75,50,25],档数 = 边界数 + 1;缺口 1-3 → ×0.75 · 4-7 → ×0.5 · 8+ → ×0.25,档位不设零档〔非归零〕,取整沿全局 floor;EV 参考数〔按判定式复算〕= AC10 期望减免 21.25% / AC11 25% / AC12 28.75%;微调旋钮 = 边界与档位值,不动 AC 值;难度曲线与Boss 生存链区间带宽补扫含暴击档与折扣档、"零红档"验收保留) validation: segment_order 违例致命 · effect_pool_map 悬空致命 · p_perfect 域 {100,200}(2026-09-10 载体域——100 = "完美必须 ≥ 不加倍"机制语义下界,200 = 双份交付)——战斗结算 冒烟三行致命 manifest(segorder_violation / poolmap_dangling / pperfect_oob) - mechanics: 结算段序骨架唯一权威载体(授予→增益/减益→战斗→衰减→判定——2026-09-15 格面资源批五段,item_window/item 两段随可选类删除下线)· **随机口径(2026-09-15 护甲等级批修订)**:结算换算层引入回合内随机(ac_roll 护甲等级掷点——必中非归零、低掷按 ac_discount_tiers 档位折扣),掷点流归属未定〔rng_service 流封闭清单 board_gen/reward_roll/encounter 不含结算内消费——新增流须改代码+P1 支柱评审、复用 encounter 则改"实例化期恰一 scope"绑定,登记 战斗结算「待办」,rng_service 条目随定稿批修订〕· 可回放契约 = **封闭随机流可回放**(同 master_seed 同意图序列 ⇒ 步骤流逐位复现——数据配置 AC-15 落点,原"结算路径零随机 / 步骤流逐行相同"口径随批作废;开战掷区间 / 装板摇号属初始化随机维持不变)· 调用序钉死 按摇定技能行兑现→apply_damage→commit_action(2026-09-16 技能池批改型——原 query_attack→apply_damage→advance 随行为环退役;行型 10 类同批改型:蓄力行 charge → 施放行 cast〔增益技 0 伤害施放、具名技能、不掷不折——原"不兑伏击"语义随 2026-09-20 八型批伏击退役改述〕)· 衰减恒执行含末轮 · 高光双落载体(perfect_sweep P_perfect——2026-09-10 修订为真实双份兑付载体 / 标中旗 highlight 标记)· 流水行协议字段分层(公共 7 字段 + 行类型特有 target/effect_id/pool_value/聚合计数——2026-09-10 评审批修订;行类型封闭枚举 9 类(2026-09-20 伏击上限删除批下线溢出未生效行 overflow)——2026-09-15 格面资源批由 15 类收拢:删道具行 / 已消耗未生效行 / 使用被拒行 / 窗口打开锚行 window_open / 窗口跳过锚行 window_skip 五类随可选类删除下线〔2026-09-15 窗口锚行批曾由 13 扩为 15,同日回撤〕;行来源断言两层豁免集合同批修订 = 行型豁免 {decay, verdict} × 来源类别豁免 {hero_attack, enemy_action, clear_reward},豁免不等于免检——豁免行仍受公共字段与各自语义约束,清单改动须同步 战斗结算 明细流水一节与 battle_log_view 格式化)· **类型化克制结算规格 = 战斗结算 GDD F6(W3 补全,2026-09-14 重算批;2026-09-15 命名统一批;2026-09-19 充能退役批——挖掘期充能/战斗段消费半边废止,加法核点数修正)**——逐分量 armor_effectiveness 查表(奖励直伤道具消费方保留) + mechanics: 结算段序骨架唯一权威载体(授予→增益/减益→战斗→衰减→判定——2026-09-15 格面资源批五段,item_window/item 两段随可选类删除下线)· **随机口径(2026-09-15 护甲等级批修订)**:结算换算层引入回合内随机(ac_roll 护甲等级掷点——必中非归零、低掷按 ac_discount_tiers 档位折扣),掷点流归属未定〔rng_service 流封闭清单 board_gen/reward_roll/encounter 不含结算内消费——新增流须改代码+P1 支柱评审、复用 encounter 则改"实例化期恰一 scope"绑定,登记 战斗结算「待办」,rng_service 条目随定稿批修订〕· 可回放契约 = **封闭随机流可回放**(同 master_seed 同意图序列 ⇒ 步骤流逐位复现——数据配置 AC-15 落点,原"结算路径零随机 / 步骤流逐行相同"口径随批作废;开战掷区间 / 装板摇号属初始化随机维持不变)· 调用序钉死 按摇定技能行兑现→apply_damage→commit_action(2026-09-16 技能池批改型——原 query_attack→apply_damage→advance 随行为环退役;行型 10 类同批改型:蓄力行 charge → 施放行 cast〔增益技 0 伤害施放、具名技能、不掷不折——原"不兑伏击"语义随 2026-09-20 八型批伏击退役改述〕)· 衰减恒执行含末轮 · 高光双落载体(perfect_sweep P_perfect——2026-09-10 修订为真实双份兑付载体 / 标中旗 highlight 标记)· 流水行协议字段分层(公共 7 字段 + 行类型特有 target/effect_id/pool_value/聚合计数——2026-09-10 评审批修订;行类型封闭枚举 9 类(2026-09-20 伏击上限删除批下线溢出未生效行 overflow)——2026-09-15 格面资源批由 15 类收拢:删道具行 / 已消耗未生效行 / 使用被拒行 / 窗口打开锚行 window_open / 窗口跳过锚行 window_skip 五类随可选类删除下线〔2026-09-15 窗口锚行批曾由 13 扩为 15,同日回撤〕;行来源断言两层豁免集合同批修订 = 行型豁免 {decay, verdict} × 来源类别豁免 {hero_attack, enemy_action, clear_reward},豁免不等于免检——豁免行仍受公共字段与各自语义约束,清单改动须同步 战斗结算 明细流水一节与 battle_log_view 格式化)· **类型化克制结算规格 = 战斗结算 GDD F6(W3 补全,2026-09-14 重算批;2026-09-15 命名统一批;2026-09-19 充能退役批——挖掘期充能/战斗段消费半边废止,加法核点数修正)**——逐分量 armor_effectiveness 查表(奇物直伤道具消费方保留) closure_receipt: 行动经济 F1 条款①②③⑤闭合 owner = 战斗结算(2026-09-10 F0–F5 首版验算完成——F0 瞬时当量口径 + m_w 值域裁决见 status_effect.anchor_warning;条款③ clause3_supply 闭合回执;条款⑤ clause5_dominance 条目;actuals p10 交付后强制重跑) referenced_by: [HUD框架, 战斗表现, 音频, 教学引导, 难度曲线与Boss] @@ -400,7 +400,7 @@ entities: referenced_by: [难度曲线与Boss, 地图战斗资源, 棋盘生成] # 占位表中的原型参考值(伏击 +3、清图 +10、敌 18HP/4ATK 等)为 provisional, -# 不登记为事实——待各 owner GDD(地形变异/增益状态/奖励道具经济/战斗结算/难度曲线与Boss)定稿后由其登记。 +# 不登记为事实——待各 owner GDD(地形变异/增益状态/奇物道具经济/战斗结算/难度曲线与Boss)定稿后由其登记。 # (AP 等七字段已于 2026-09-07 由 行动经济 三次回填登记为 action_economy 条目;旗上限与折算乘数同日作废删除。) # 修订记录:2026-09-07 full 评审(design-review)——删除 combat_var 流、去重键改四元组、 # 快照契约补计数器、R2 增实现级规约与 reward_roll 向量(owner=数据配置 代用户修订); @@ -419,15 +419,15 @@ entities: # 条款 5"消解"→三腿入账两态验算)· variant_pool_gate 增 board_biome 域校验归属与 15 项验收门禁登记—— # 详见 design/archive/gdd-2026-09-14/reviews/a4-terrain-variation-review-log.md 阻塞→修复对照表。 # 2026-09-08 地形变异 re-review 修订(owner=地形变异,NEEDS REVISION #2 6 阻塞同日核销): -# variation_table 增 cross_field_validation(hide_numbers⇒safe_nonzero 致命)与 pricing_constraints(奖励道具经济 三 -# 硬约束)· counter_item_ids 修正为非 knob · mvp_content 的 knob 活值标注 · referenced_by 补 战斗结算/奖励道具经济 · +# variation_table 增 cross_field_validation(hide_numbers⇒safe_nonzero 致命)与 pricing_constraints(奇物道具经济 三 +# 硬约束)· counter_item_ids 修正为非 knob · mvp_content 的 knob 活值标注 · referenced_by 补 战斗结算/奇物道具经济 · # fog_ap_note 预算不等式改增量构成("轮数上限"作废)· 厚度≤2 钉死窗口谓词度量。 # 2026-09-09 增益状态 full 评审修订(owner=增益状态,NEEDS REVISION 7 blocking 同日核销): # status_effect 条目 fields/mvp_content 改逐字段 YAML 键(AC-18 机器对账前提,action_economy 同构)· # settlement_obligations 5→8(⑥ decay 恰一次 ⑦ per-grant 来源标注 ⑧ 溢出行)· 增 single_enemy_assumption 与 -# presentation_obligations(HUD框架×4/战斗表现×2/教学引导/奖励道具经济)· anchor_warning 增修复空间不对称(总暴露读法被 schema 域禁止)。 +# presentation_obligations(HUD框架×4/战斗表现×2/教学引导/奇物道具经济)· anchor_warning 增修复空间不对称(总暴露读法被 schema 域禁止)。 # 2026-09-09 棋盘生成 full 评审修订(owner=棋盘生成,MAJOR REVISION NEEDED 8 blocking 同日修订): -# board_gen_table 条目同步 战斗结算/增益状态/奖励道具经济/B6/B7/B8/R2/R3/R4/R9——inferability_target 域 [0.85,1](P1 绝对锚)· +# board_gen_table 条目同步 战斗结算/增益状态/奇物道具经济/B6/B7/B8/R2/R3/R4/R9——inferability_target 域 [0.85,1](P1 绝对锚)· # fog_target_ratio ≤ min(8d,0.25) 绝对上限 · 布雷数下限 round(d×(W×H−9))≥1 · F2c 成本谓词(att×W×H≤16384 # provisional,禁墙钟逃生)· 达标两项判据(inferability_core = 剔除雾格后的可推理率)· 布雷钉死(先定数后落位/先布后删)· # 断言 B 收紧达成区占比(地形变异⑭ 两件套)· σ 打包 2^20·L+2^12·D 防碰撞 · 指标集六→八项 · 第三轴登记约定 @@ -447,23 +447,23 @@ entities: # 概念原型"每次结算的基础伤害")——"机制开关 MVP=0"与"当前内容态无胜利路径"声明作废;attack_up 复活(消费面 = # 主角战斗段先手攻击,战斗结算 GDD 同批增补 + source_label_map 增 hero_attack 键);锚参照回迁 attack_up 当量(status_effect. # anchor_warning / clause3_supply.direction_precheck 两处迁移注记退役为历史);settlement_obligations 履行回执 2026-09-10 不变; -# 变更 owner = 敌人系统/奖励道具经济/战斗结算 GDD 2026-09-11 同批修订。 +# 变更 owner = 敌人系统/奇物道具经济/战斗结算 GDD 2026-09-11 同批修订。 # -# 2026-09-11 用户裁决批(两级奖励 + 关内延续):RewardTable category 扩为五值两类交付轴(即时 75% / 可选 25%)· +# 2026-09-11 用户裁决批(两级奇物 + 关内延续):RewardTable category 扩为五值两类交付轴(即时 75% / 可选 25%)· # 默认根重登记为八行(attack_up_basic 复活入池 / spark_aoe / heal_minor 新增;heal_pack 稀缺化 w6 p12)· # status_effect attack_up/defense_up duration 2→1(当次结算语义)· 库存关卡域(跨战斗延续、关卡末清空—— # 原战斗域作废)· 窗口单件制(原任意多件作废)· reward_config p_min 4→8。 -# 变更 owner = 奖励道具经济/战斗结算/增益状态 GDD 2026-09-11 同批修订。 +# 变更 owner = 奇物道具经济/战斗结算/增益状态 GDD 2026-09-11 同批修订。 # 2026-09-09 敌人系统 full 评审修订(owner=敌人系统,NEEDS REVISION 8 blocking 同日核销): # enemy.settlement_obligations ① 增调用序成文(query_attack→apply_damage→advance)与敌单位专属口径 · hud_obligations # ① 增预告时序/强度档位、② 改全局恒定 · rowset_rule 增精英/Boss 编码位预登记(敌人系统 OQ7)· clause3_supply # 结构上界改 min(AP, cap) 形(cap 腿松弛收紧)· direction_precheck 裕度 4.7×→2.3× 更正(最低档锚口径)· # account_input 增胜利路径声明注记。详见 design/archive/gdd-2026-09-14/reviews/b2-enemy-system-review-log.md。 -# 2026-09-09 奖励道具经济 定稿回填(owner=奖励道具经济):新增 reward_table 条目(schema 八字段 + 跨字段 +# 2026-09-09 奇物道具经济 定稿回填(owner=奇物道具经济):新增 reward_table 条目(schema 八字段 + 跨字段 # 校验族 + 机制/API 面 + 战斗结算×6/HUD框架×3 义务清单 + 地形变异 三约束承接 + 高光节点条目化);接口漂移改写三处—— -# rng_service.scope_event_binding 的 reward_roll 语义(每次奖励结算 → 每次 board install 批)、 -# status_effect.dangling_ref_policy(首引条件兑现)、clause3_supply.account_input(左臂载体 = 奖励道具经济 F6); -# action_economy.referenced_by 增 奖励道具经济(F6 当量供给消费条款①②)。并行会话冲突经用户裁决:道具段"照常消耗" +# rng_service.scope_event_binding 的 reward_roll 语义(每次奇物结算 → 每次 board install 批)、 +# status_effect.dangling_ref_policy(首引条件兑现)、clause3_supply.account_input(左臂载体 = 奇物道具经济 F6); +# action_economy.referenced_by 增 奇物道具经济(F6 当量供给消费条款①②)。并行会话冲突经用户裁决:道具段"照常消耗" # 拍板为最终语义(覆盖并行草稿"拒绝不消耗"版),清图槽允许 buff 行拍板同批落定。 - name: hud_presentation_surface @@ -486,7 +486,7 @@ entities: owner: design/gdd/systems/排雷循环/魔法道具.md attributes: table: AuxItemTable(数据配置 承载【数据配置×① 修订批登记】,键 = item_id;魔法道具 回填 owner,2026-09-14 定稿登记;定义表非进度成长表——Rule 4 豁免;生效前提 = 地图战斗资源×①…⑤/数据配置×①② 修订批兑现) - slice_scope: 垂直切片期无道具内容(2026-09-17 用户拍板——空清单合法态):AuxItemTable 不随切片建表、六行不入掉落池(掉落频率归战斗奖励侧),F2 维度覆盖谓词挂起至表非空;本条设计登记与机制桥接(战斗结算 query_reward_identity 未开格恒可查)保留,内容随 魔法道具内容批(排垂直切片收尾后)回填。**解锁状态面例外**(元进度实现批 2026-09-21 注记):工坊六件的通关次数解锁渠道已落地(meta.tres workshop_items 行族 + SaveManager item_unlocks 域),局内效果仍归 Alpha 魔法道具整体重设计批——名称沿用本条词表 + slice_scope: 垂直切片期无道具内容(2026-09-17 用户拍板——空清单合法态):AuxItemTable 不随切片建表、六行不入掉落池(掉落频率归战斗奇物侧),F2 维度覆盖谓词挂起至表非空;本条设计登记与机制桥接(战斗结算 query_reward_identity 未开格恒可查)保留,内容随 魔法道具内容批(排垂直切片收尾后)回填。**解锁状态面例外**(元进度实现批 2026-09-21 注记):工坊六件的通关次数解锁渠道已落地(meta.tres workshop_items 行族 + SaveManager item_unlocks 域),局内效果仍归 Alpha 魔法道具整体重设计批——名称沿用本条词表 fields: item_id: String 主键唯一——地图战斗资源 RewardTable.effect_id(aux 行)与 VariationTable.counter_item_ids 的引用键 display_name: String 非空(HUD框架 呈现数据源,本地化归 设置与本地化——敌人系统/增益状态/地图战斗资源 同库惯例) @@ -496,7 +496,7 @@ entities: magnitude: int [0,999](knob)——仅 ap_grant 行消费(= AP 点数,加载校验 ≥1);空间行不消费非校验项 use_phase: enum {active_dig}——MVP 单值(扩枚举走 魔法道具 GDD 修订;地图战斗资源 use_timing 扩值 during_dig 同批对齐——地图战斗资源×③) mvp_content: 六行(值 provisional 归 难度曲线与Boss;显影尘与地穴全图卷的原显影半边随雾格移除失义、效果与目标待重定——随魔法道具整体重设计归 Alpha(2026-09-20 用户拍板,原 06 待办条目移除),名称保留)——probe_dust 显影尘〔info+counter / 效果待重定 / w5 t2〕· sapper_order 工兵令〔action / ap_grant / none / mag 2 / w5 t2〕· loot_compass 探宝罗盘〔plan / reward_preview / area_3x3 / w4 t2〕· nest_pendulum 探巢摆钟〔risk / mine_reveal / area_3x3 / w4 t2〕· catacomb_scroll 地穴全图卷〔info+plan / 效果待重定·随魔法道具整体重设计归 Alpha / board_wide / w1 t3〕· blast_kit 爆破工兵包〔action+risk / ap_grant+mine_reveal / area_3x3 / mag 4 / w1 t3〕——四常规单维(t2)+ 两稀有多维高数值(t3;稀有读数 ≈0.17 件/板,F1) - load_bearing_rules: 真视窄域护栏(承重)——mine_reveal 支持域 ≤area_3x3、board_wide 仅恢复推理原料类效果(显影/预读,显影载体待重定;恢复推理可全图、替代推理必窄域——P1 防塌方;schema 校验强制,夹具 aux_target_violation)· 效果时效随 kind 派生无独立字段(空间 kind 恒本图持续、ap_grant 恒当轮一次性)· 零随机(零 RNG 流消费——信息全部来自 排雷玩法 恒真数字/地图战斗资源 Ready 映射/行动经济 账本三既有事实源)· 零特判延伸(排雷玩法 代码零 魔法道具 分支)· 无效/零信息目标不可用不消耗(可用性门——2026-09-14 用户拍板:板级判据 → 图标灰/入口禁用〔地图战斗资源 usable_now 先例〕、点击级 → 拒绝零消耗、组合行判据取 OR——爆破包 ap_grant 恒可用、真视零雷恒有效;与 地图战斗资源 E10 照常消耗区分——挖掘期非结算管线、守卫 魔法道具 本地可判)· area_3x3 边缘窗口 resolved_target = 窗口 ∩ 板内格(2026-09-14 用户拍板——护栏只缩不扩)· 使用零 AP 成本(不经 try_spend)· 库存关卡域(与 地图战斗资源 库存正交两容器、生命周期同构)· **同调位持有上限(迭代 10 奖励重构批挂约束面,2026-10-01)**——任何渠道 add_item 遇持有数 ≥ transitional_sync_slots(adventure.tres 过渡键,provisional 1)时:停点渠道(三选一/奖励节点)触发替换交互(现有件+新件 N+1 选 N、可放弃新件不获取,终态恒 ≤ 上限),战斗内渠道沉没不入(战斗域零交互纪律);正主 = 同调位里程碑谓词表 attunement_growth.tres(同调实施批),切换读数源注记随该批· Used 不可逆 + load_bearing_rules: 真视窄域护栏(承重)——mine_reveal 支持域 ≤area_3x3、board_wide 仅恢复推理原料类效果(显影/预读,显影载体待重定;恢复推理可全图、替代推理必窄域——P1 防塌方;schema 校验强制,夹具 aux_target_violation)· 效果时效随 kind 派生无独立字段(空间 kind 恒本图持续、ap_grant 恒当轮一次性)· 零随机(零 RNG 流消费——信息全部来自 排雷玩法 恒真数字/地图战斗资源 Ready 映射/行动经济 账本三既有事实源)· 零特判延伸(排雷玩法 代码零 魔法道具 分支)· 无效/零信息目标不可用不消耗(可用性门——2026-09-14 用户拍板:板级判据 → 图标灰/入口禁用〔地图战斗资源 usable_now 先例〕、点击级 → 拒绝零消耗、组合行判据取 OR——爆破包 ap_grant 恒可用、真视零雷恒有效;与 地图战斗资源 E10 照常消耗区分——挖掘期非结算管线、守卫 魔法道具 本地可判)· area_3x3 边缘窗口 resolved_target = 窗口 ∩ 板内格(2026-09-14 用户拍板——护栏只缩不扩)· 使用零 AP 成本(不经 try_spend)· 库存关卡域(与 地图战斗资源 库存正交两容器、生命周期同构)· **同调位持有上限(迭代 10 奇物重构批挂约束面,2026-10-01)**——任何渠道 add_item 遇持有数 ≥ transitional_sync_slots(adventure.tres 过渡键,provisional 1)时:停点渠道(三选一/奖励节点)触发替换交互(现有件+新件 N+1 选 N、可放弃新件不获取,终态恒 ≤ 上限),战斗内渠道沉没不入(战斗域零交互纪律);正主 = 同调位里程碑谓词表 attunement_growth.tres(同调实施批),切换读数源注记随该批· Used 不可逆 overlay_semantics: 板级叠加层三集(魔法道具 自持派生信息层、零回写 排雷玩法/地图战斗资源 状态、随图消亡;现行有效的 = 真视集与预读集,显影集载体待重定)——digit_reveal 显影集(HUD框架 显示被隐藏的数字,本体 = 排雷玩法 恒真数字;载体待重定)/ mine_reveal 真视集(真视≠自动兑付——插旗仍花 1 AP 走既有 flag_hit 路径)/ reward_preview 预读集(徽章数据源 = 战斗结算 query_reward_identity 既有读面——魔法道具 零 地图战斗资源 数据复制) api: 封闭枚举 8 入口(provisional,实现期 ADR 定名)——add_item(item_id, source) / query_inventory(枚举序 = 受理序,Used 保留只读,逐件含 usable 板级零信息可用性预判)/ validate_use(handle, target?) → 效果投影(只读不消耗;目标校验谓词 = 越板/点击级零信息拒绝 + 边缘窗口裁剪 resolved_target = 窗口 ∩ 板内格)/ apply_overlay(kind, target, mag)(战斗结算 逐 kind 调用)/ consume(handle)(Used 不可逆 + 快照回执)/ query_overlays(三集只读投影)/ retire_overlays(战斗结算 编排——与 地图战斗资源 retire_mapping 同点)/ clear_inventory(关卡末幂等);负空间 = 无自动使用入口/无重掷/无事件订阅/无 RNG 直连/无 排雷玩法/地图战斗资源 写入口 use_orchestration: 战斗结算 use_aux 规范序(唯一调用权)= 相位 gate(Active——行动经济 phase getter)→ validate_use(目标校验读 排雷玩法 只读面——使用目标校验谓词表见 魔法道具 GDD)→ 逐 kind 应用(顺序钉死:空间先、ap_grant 后——effect_kinds 列表序非运行时语义)→ consume——序即原子(validate 拦下全部可失败输入;apply/grant 域内无失败路径 → consume 恒达) @@ -545,7 +545,7 @@ entities: attributes: kind: 调参目标带(F5)+ 承伤估算(F4)+ 供给平衡式(F6)——设计期工具式,运行时零新增公式(难度曲线与Boss 定位声明) clear_rate_target: ⚠ 口径退役待重锚(2026-09-23 用户拍板单关直入口口径退役——逐关读数改冒险条件口径派生〔balance_verifier 冒险段〕,带值重锚归曲线调参批,重锚前只测不判;带史 = 2026-09-20 分带批 L1 [35,55]/L2 [25,45] 锚定直入口单关读数〔已随口径退役不可比〕,更早 L1 10-25/L2 20-40 系乱点画像口径亦作废;区间位移机制承载:atk 翻倍 ≈ K 减半 → 绿档;2026-09-18 起永久强化经换算率表按带平移接入,见 meta_progression_conversion_table;**2026-09-30 改带〔迭代 5 返工出口收口批,用户拍板〕:冒险条件口径普通档 L2 [25,45]→[10,15]——原带设定有误裁,返工终态读数 10.6/13.6% 落带、批点丙追认**;成文见难度曲线与Boss 判读口径节) - supply_balance_band: "**关级供给带 [1.1,2.0] 退役(2026-09-14——其验算 0.54 与实测 60% 通关矛盾)**——由生存链区间模型替代:每战 S/K 区间三档判定(绿 S_min>K_max / 黄 E[S]≥E[K]+1 / 红 S_max≤K_min 禁止入表)+ 关级恒等式(atk×ΣR_survive + Σ奖励输出 ≈ Σ敌hp期望×(1+缓冲),actuals 逐项审计闭合)+ 输出占比带 [15%,40%] + 通关余量带(p90≤13 & p10≥3——'通关只剩一点血'量化)" + supply_balance_band: "**关级供给带 [1.1,2.0] 退役(2026-09-14——其验算 0.54 与实测 60% 通关矛盾)**——由生存链区间模型替代:每战 S/K 区间三档判定(绿 S_min>K_max / 黄 E[S]≥E[K]+1 / 红 S_max≤K_min 禁止入表)+ 关级恒等式(atk×ΣR_survive + Σ奇物输出 ≈ Σ敌hp期望×(1+缓冲),actuals 逐项审计闭合)+ 输出占比带 [15%,40%] + 通关余量带(p90≤13 & p10≥3——'通关只剩一点血'量化)" tool_carrier: balance_verifier.py 冒险段(逐关条件通关率/止步归因/营地循环——2026-09-23 起难度读数主载体)/ adventure_monte_carlo.gd / reward_expectation.gd(原 level_monte_carlo.gd 随单关直入口口径退役删除 2026-09-23;棋盘生成 F4 排期倒挂解除载体) calibration_gap: 真人修正系数待 playtest 标定(OQ3——**方向已由试玩批次 1 反向确认:真人显著强于模拟者**〔v2 真人 100% vs 模拟 80%〕;旧"真人预期低于模拟"方向声明由本条替代;带按模拟口径定义,真人系数批次 2 定量) referenced_by: [地图战斗资源, 战斗结算, 冒险结构, 元进度] @@ -571,43 +571,43 @@ entities: nodes: 节点图结构——节点数组 + 连线(node_kind ∈ {battle, reward, rest, boss, shop},切片字段名 type;+shop 随 2026-09-20 GP+商店房批——商店房兑付 = 打开商店覆盖层、离开后确认回选路,不携带战斗行〔零敌人、零棋盘配置行〕;每节点领关卡内唯一**节点编号**,battle/boss 数据键 node_depth 沿用〔v1.0 语义升级:深度 → 节点编号〕;连线 = 出边节点编号表,只朝前进方向、无回头路);单链特例 = 隐式后继(数组序即链,切片现行形态零漂移) rowset_rule: 图合法性校验(2026-09-17 关卡节点地图 v1.0)——节点编号关卡内唯一、入口唯一、Boss 恒唯一终点(编号最大,Dmax 语义平移)、连线无环、所有节点沿连线可达 Boss,违规加载期致命;实现批(2026-09-17 分支节点图批):校验落 LevelTable.validate(单链形态经同一套算法——编号解析单链 = 数组下标 / 图 = node_depth),L1 单链与 L2 图双行集加载全绿断言;商店房编排(每关恰 1、Boss 前一位必经位)由冒烟断言承载、非加载校验——图合法性六检零新增(GP+商店房批 2026-09-20,关卡节点地图 v1.1) cross_table_validation: battle/boss 节点 (L,D) 在 board_gen/enemy 两表存在精确行(数据配置 跨表校验⑧复用 + 冒险结构 AC-7 冒烟断言——序列关数 ⊆ 内容覆盖,越界关卡 = 内容生产缺口) - mvp_content: L1 全行(切片转正——7 节点链〔单链特例,合法图形态〕、rest_heal_pct=30);L2 全行已落地(2026-09-17 分支节点图批——首张分支图:9 节点〔入口 0 → 中间三层 2/3/2 → Boss 8〕、真实岔路 4 处、奖励点+恢复点各 1、战斗节点 6 + Boss;行值 provisional 归 难度曲线与Boss v0.7;首页直入口已退役〔2026-09-23 用户拍板〕);**L3 全行已落地(2026-09-20 第三关内容批——「第三层 · 灰矮人矿城」:九节点图复用 L2 同模板〔6 战 + Boss + 奖励 + 恢复、真实岔路 4 处〕,行值全 provisional 归 难度曲线与Boss;测试直入口已退役〔2026-09-23〕)**;2026-09-20 GP+商店房批 rewiring:L2/L3 图版 Boss 重编号 8→9、各新增 (8, shop, next[9]) 商店房节点(Boss 前一位必经位),L1 零改动,图合法性六检零新增——必经位由冒烟断言承载;**2026-09-21 冒险结构实现批:三关正式序列生效**(首页「开始冒险」= L1→L2→L3 连探,AdventureRunner 编排——大奖励/生命账本/GP 冒险账本/主种子归冒险结构层,冒烟断言在案)** + mvp_content: L1 全行(切片转正——7 节点链〔单链特例,合法图形态〕、rest_heal_pct=30);L2 全行已落地(2026-09-17 分支节点图批——首张分支图:9 节点〔入口 0 → 中间三层 2/3/2 → Boss 8〕、真实岔路 4 处、奇物点+恢复点各 1、战斗节点 6 + Boss;行值 provisional 归 难度曲线与Boss v0.7;首页直入口已退役〔2026-09-23 用户拍板〕);**L3 全行已落地(2026-09-20 第三关内容批——「第三层 · 灰矮人矿城」:九节点图复用 L2 同模板〔6 战 + Boss + 奇物 + 恢复、真实岔路 4 处〕,行值全 provisional 归 难度曲线与Boss;测试直入口已退役〔2026-09-23〕)**;2026-09-20 GP+商店房批 rewiring:L2/L3 图版 Boss 重编号 8→9、各新增 (8, shop, next[9]) 商店房节点(Boss 前一位必经位),L1 零改动,图合法性六检零新增——必经位由冒烟断言承载;**2026-09-21 冒险结构实现批:三关正式序列生效**(首页「开始冒险」= L1→L2→L3 连探,AdventureRunner 编排——大奇物/生命账本/GP 冒险账本/主种子归冒险结构层,冒烟断言在案)** referenced_by: [冒险结构, 关卡节点地图, 难度曲线与Boss, 棋盘生成, 数据配置] - - name: reward + - name: curio type: concept - owner: design/gdd/systems/冒险循环/奖励.md + owner: design/gdd/systems/冒险循环/奇物.md attributes: - definition: 一次冒险之内通过各渠道给予玩家的增益总称——奖励节点给的、商店买的、打赢关底 Boss 给的,都是奖励。装的是"这一局你捞到了什么",不管从哪个渠道来 - channel_constraint_layers: 渠道约束分三层——一层 分类白名单(分类轴决定渠道);二层 可计算谓词(渠道与奖励的结构性关系,如「计价物不自售」:X 是渠道 C 的计价物 → X 不进 C;新渠道/新奖励自动判定,不用改表);三层 显式例外清单(人为设计选择,只能逐条加,每条须写理由)。要害不是有没有例外,而是例外能不能被算出来——结构性原因写成谓词,设计性原因进清单。在册约束两条:①金币不进商店(二层·谓词)②机制类在非 Boss 渠道只给门票(一层·分类形态)。**注意**:属性提升类/资源与机会类不出现在 Boss 渠道**不是约束**——那是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖。**「计价物不自售」形式上确是在白名单外加的一道过滤(用户质疑成立),与死特判的区别在于把枚举例外变成计算谓词** - axes: 两根互不决定的轴——**分类轴**(给的是什么)与**渠道轴**(从哪来)。一个奖励属于哪个分类不决定它从哪个渠道来;交叉关系由 [奖励](design/gdd/systems/冒险循环/奖励.md) 第 2 节开关表定死 + definition: 一次冒险之内通过各渠道给予玩家的增益总称——奖励节点给的、商店买的、打赢关底 Boss 给的,都是奇物。装的是"这一局你捞到了什么",不管从哪个渠道来 + channel_constraint_layers: 渠道约束分三层——一层 分类白名单(分类轴决定渠道);二层 可计算谓词(渠道与奇物的结构性关系,如「计价物不自售」:X 是渠道 C 的计价物 → X 不进 C;新渠道/新奇物自动判定,不用改表);三层 显式例外清单(人为设计选择,只能逐条加,每条须写理由)。要害不是有没有例外,而是例外能不能被算出来——结构性原因写成谓词,设计性原因进清单。在册约束两条:①金币不进商店(二层·谓词)②机制类在非 Boss 渠道只给门票(一层·分类形态)。**注意**:属性提升类/资源与机会类不出现在 Boss 渠道**不是约束**——那是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖。**「计价物不自售」形式上确是在白名单外加的一道过滤(用户质疑成立),与死特判的区别在于把枚举例外变成计算谓词** + axes: 两根互不决定的轴——**分类轴**(给的是什么)与**渠道轴**(从哪来)。一个奇物属于哪个分类不决定它从哪个渠道来;交叉关系由 [奇物](design/gdd/systems/冒险循环/奇物.md) 第 2 节开关表定死 categories: 封闭三类 {机制类, 属性提升类, 资源与机会类}(v2.0 起;v1.1 曾用两类、v1.0 曾用 {rule, stat},均已作废)。机制类(专长 Feat)——在结算管线某个挂点上给自己加一条规则,同标签持有项数达阈值时质变,事实源 relics.tres;属性提升类(ASI)——抬高生命上限 / AC / 攻击三轴基础值,进冒险加算区,事实源 adventure.tres;资源与机会类(命名待定)——给"可用的量",不抬高战斗属性也不改规则:行动点上限 / 刷新次数 / 金币 / 回复,不进加算区、多数不进持有集,事实源 adventure.tres scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,机制类与属性提升类跨关携带、关间不清零,金币与回复即时兑付;归属范围 = 不进账号永久进度,不带到下一次冒险 lifecycle: 候选池构建(冒险开局一次)→ 在渠道上出现(三选一形式)→ 选定(自池中剔除不再复现;选到「专长获取」时立刻再开一次专长 N 选一)→ 持有生效或即时兑付 → 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 acquisition: 三条渠道的**目标分工(交叉开关,v2.2 收口)**——机制类:主渠道=**终局前** Boss 击败后(**唯一直接给的渠道**,不新增节点类型、挂 Boss 节点兑付面;终局 Boss 不给——无后续关卡可消费),奖励节点与商店**只给「专长获取」门票**——**拿到即开、不可囤积**,不进持有集(选中/买下同一时刻开专长三选一;可囤积会让玩家无限推迟关键决策,且把持有物语义从后门放回)。门票归机制类(给的是一件以前不会的事,只是把选择推迟)。罕见**只在概率不在价格**,一局限购一次,**计步保底**:连续 5 次三选一展示未出现→第 6 次必出(计数=展示次数、刷新重展计入、奖励节点与商店共享、触发清零、限购用满后不再触发);属性提升类:奖励节点 + 商店(口径「训练」);资源与机会类:奖励节点 + 商店(**金币除外、回复在内**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**默认原则**:除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里——任何不出现都须登记理由**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 - boundary: 判据走生命周期——**一次冒险内获得、冒险收束即清零的是奖励;跨冒险跟着你走的是魔法道具**。奖励永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 + boundary: 判据走生命周期——**一次冒险内获得、冒险收束即清零的是奇物;跨冒险跟着你走的是魔法道具**。奇物永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 data_sources: relics.tres(机制类定义行)/ adventure.tres(属性提升类与资源与机会类的种类配额与值)/ shop.tres(货架取舍) - open_questions: ①资源与机会类的命名待定(候选 资源 / 补给 / 余量);②类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同;③回复是否属资源与机会类待确认(也可能独立成第四类)——它**应在商店内**(不是计价物,套不上计价物不自售),现行 shop.tres 货架缺它是现状与表格不对齐,须实施批补上;④专长门票尚未入表(出现概率/配额/全局限量无事实源);⑤确定性渠道一局两次专长 vs 档位阈值(同标签 ≥2 档一 / ≥4 档二)——**档二在三关结构下几乎不可达**,用户定延后复裁(触发=第四关内容批后实测);⑥charge 标签仅 3 件、永远达不到档二(数据层缺陷,独立登记);⑦顶层命名待定(奖励/收益均不妥,拟造词)——**代码 reward 词族已被 reward_pick/reward_node/reward_preview 占用,feature_* → reward_* 对齐待办不能照做** - naming_note: 2026-10-05 命名统一 + 两次重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),v1.0 统一为「特性」,v2.0 改名为「奖励」(因筐里也装金币这类一次性兑付物,"自身提升 vs 持有物"已切不开,判据改由生命周期承担)。代码侧 `feature_*` 词族尚未随之换到 `reward_*`,属临时态,登记于 06-待办清单 + open_questions: ①资源与机会类的命名待定(候选 资源 / 补给 / 余量);②类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同;③回复是否属资源与机会类待确认(也可能独立成第四类)——它**应在商店内**(不是计价物,套不上计价物不自售),现行 shop.tres 货架缺它是现状与表格不对齐,须实施批补上;④专长门票尚未入表(出现概率/配额/全局限量无事实源);⑤确定性渠道一局两次专长 vs 档位阈值(同标签 ≥2 档一 / ≥4 档二)——**档二在三关结构下几乎不可达**,用户定延后复裁(触发=第四关内容批后实测);⑥charge 标签仅 3 件、永远达不到档二(数据层缺陷,独立登记);⑦顶层命名待定(奇物/收益均不妥,拟造词)——**代码 reward 词族已被 reward_pick/reward_node/reward_preview 占用,feature_* → reward_* 对齐待办不能照做** + naming_note: 2026-10-05 命名统一 + 两次重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),v1.0 统一为「特性」,v2.4 改名为「奇物」(v2.0 曾名「奇物」)(因筐里也装金币这类一次性兑付物,"自身提升 vs 持有物"已切不开,判据改由生命周期承担)。代码侧 `feature_*` 词族尚未随之换到 `curio_*`,属临时态,登记于 06-待办清单 referenced_by: [冒险结构, 关卡节点地图, 战斗结算, 行动经济, 地形变异, HUD框架, 魔法道具, 元进度, 数据配置] - name: adventure_table type: schema_data owner: design/gdd/systems/冒险循环/冒险结构.md attributes: - table: AdventureTable(数据配置 承载,单行全局;冒险结构 回填 owner;Rule 4 豁免——单行全局常量表,HeroTable/SettlementTable 先例;建表走 数据配置 接口漂移规则。**已建表**——data/schemas/adventure_table.gd + data/tables/adventure.tres + ConfigDB 加载行"adventure",冒烟断言在案(冒险结构实现批 2026-09-21);**迭代 10 奖励重构批扩列(2026-10-01)**——见 fields) + table: AdventureTable(数据配置 承载,单行全局;冒险结构 回填 owner;Rule 4 豁免——单行全局常量表,HeroTable/SettlementTable 先例;建表走 数据配置 接口漂移规则。**已建表**——data/schemas/adventure_table.gd + data/tables/adventure.tres + ConfigDB 加载行"adventure",冒烟断言在案(冒险结构实现批 2026-09-21);**迭代 10 奇物重构批扩列(2026-10-01)**——见 fields) fields: | - 退役两字段(迭代 10 奖励重构批,2026-09-30 用户拍板):level_clear_hp_bonus(「血回满+上限提升」件随大奖励三件套退役——回血改 clear_heal_pct 部分回血、上限提升改三选一件值列)、keystone_per_level(钥石退役出大奖励改 Boss/精英击杀掉落)。 + 退役两字段(迭代 10 奇物重构批,2026-09-30 用户拍板):level_clear_hp_bonus(「血回满+上限提升」件随大奇物三件套退役——回血改 clear_heal_pct 部分回血、上限提升改三选一件值列)、keystone_per_level(钥石退役出大奇物改 Boss/精英击杀掉落)。 clear_heal_pct: int [0,100](knob 默认 20——非末关通关部分回血回复生效上限的百分比,封顶上限不回满、满血回 0 合法;难度上压方向,带重扫义务归 难度曲线与Boss) - **2026-10-05 命名统一批**:本表的属性提升类奖励字段与常量整体换名(旧 → 新)——BONUS_IDS → FEATURE_KINDS、bonus_token_count() → feature_quota()、bonus_value() → feature_value()、bonus_candidate_count → feature_candidate_count、token_{kind}_{tier} → feature_quota_{kind}_{tier}、bonus_*_flat/_amount(_large) → feature_value_{kind}_{tier};值零变更(句柄改称不改数),断点附随键名沿用历史形态不动(存档兼容)。换名动因见 reward 条目(v2.0 顶层改名为「奖励」)。 - feature_value_attack_common / feature_value_max_hp_common / feature_value_armor_common: int [0,999](三选一属性提升类奖励兑付值——加算区攻击/生命上限/护甲轴累加,经覆盖值通道;值锚与上调约束归 难度曲线与Boss) + **2026-10-05 命名统一批**:本表的属性提升类奇物字段与常量整体换名(旧 → 新)——BONUS_IDS → FEATURE_KINDS、bonus_token_count() → feature_quota()、bonus_value() → feature_value()、bonus_candidate_count → feature_candidate_count、token_{kind}_{tier} → feature_quota_{kind}_{tier}、bonus_*_flat/_amount(_large) → feature_value_{kind}_{tier};值零变更(句柄改称不改数),断点附随键名沿用历史形态不动(存档兼容)。换名动因见 curio 条目(v2.0 顶层改名为「奇物」)。 + feature_value_attack_common / feature_value_max_hp_common / feature_value_armor_common: int [0,999](三选一属性提升类奇物兑付值——加算区攻击/生命上限/护甲轴累加,经覆盖值通道;值锚与上调约束归 难度曲线与Boss) feature_value_gp_common: int [0,999](GP 袋件定额入钱包);feature_value_ap_rarest: int [0,10](AP 件每场战斗首轮行动点基线增量);bonus_aux_item_count: int [1,9](魔法道具件授予件数) ~~bonus_weight_*(E-S 加权洗牌权重族)~~ / ~~bonus_cap_*(种类次数上限族)~~:**v2.2 令牌池换代退役(迭代 12 TP0——2026-10-03 追认 b 实施批;洗牌改令牌 Fisher-Yates、池消耗即上限)** feature_quota_{kind}_{tier}: int [0,99](**TP0 令牌配额族**——kind×tier 计数:attack 18/5 · max_hp 17/5 · armor 17/5 · gp 18/5 · heal 0/5 · ap 0/0/3〔common/rare/rarest〕;未列组合=0;档位结构锚 70/25/3=98 张入 schema validate 硬断言〔罕见档原列「道具件 2」随 aux_item 池种退役收窄——台账自决披露项〕) feature_value_attack_rare / feature_value_max_hp_rare / feature_value_armor_rare / feature_value_gp_rare: int [0,999](稀有档大数值对——+2/+10/+2/50);feature_value_heal_rare: int [0,999](恢复件 +6 当即回血——新入池种类 rare 档);MC 策略 316-f(autoplay 1 级最稀有/2 级最左)随批落地 transitional_sync_slots: int [0,9](同调位过渡读数源,默认 1——道具持有上限;正主 = attunement_growth.tres 里程碑谓词表,同调实施批落地后切换读数源) mvp_content: 单行全局默认值即 MVP 行(provisional 归 曲线调参批——迭代 10 扩列批注) - extension_reserve: 大奖励形态扩列位已消费(迭代 10 奖励重构批落地三选一/攻击型——本键使命完成退役;冒险结构 OQ2 收口) + extension_reserve: 大奇物形态扩列位已消费(迭代 10 奇物重构批落地三选一/攻击型——本键使命完成退役;冒险结构 OQ2 收口) referenced_by: [冒险结构, 元进度, 行动经济, 数据配置] - name: shop_table @@ -636,7 +636,7 @@ entities: attributes: kind: 主角战斗入参覆盖值通道(begin_battle 显式参数传递——切片 E4 封装收口批实现,registry 登记缺口由 冒险结构 定稿批补登) contract: begin_battle 增 hero_hp / hero_atk / hero_max_hp 显式入参 → 敌人系统.spawn 增 atk_override / max_hp_override 参数;-1 = 表值兜底(不覆盖);hero 表运行期不可变(数据配置 单一事实源机制化——表写通道全删) - consumers: HP 账本(冒险结构——跨战斗 HP 持久性 + 大奖励上限提升的传入面)/ 元进度加成(元进度实现批 2026-09-21 接通——MetaProgression.hero_override() 现算 flat 三档,AdventureRunner.start_adventure params.hero_override 显式传入 → LevelRunner base_override 共享;叠加序 = 表值 + 永久强化 flat + 加算区 flat × TunePanel pct)/ 切片 TunePanel(调试通道) + consumers: HP 账本(冒险结构——跨战斗 HP 持久性 + 大奇物上限提升的传入面)/ 元进度加成(元进度实现批 2026-09-21 接通——MetaProgression.hero_override() 现算 flat 三档,AdventureRunner.start_adventure params.hero_override 显式传入 → LevelRunner base_override 共享;叠加序 = 表值 + 永久强化 flat + 加算区 flat × TunePanel pct)/ 切片 TunePanel(调试通道) adr_status: ADR-0009 候选——正式侧 战斗结算/敌人系统 GDD 修订随 ADR-0009 批;冒险结构 GDD 规则 3/4 为 冒险结构 半边(HP 账本供值)的正式定义源 referenced_by: [战斗结算, 敌人系统, 冒险结构, 元进度] @@ -644,10 +644,10 @@ entities: type: schema_data owner: design/gdd/systems/跨局循环/元进度.md attributes: - table: 永久强化换算率表(数据配置 承载;键结构 元进度定稿批 2026-09-18 登记,数值行读 `data/tables/meta.tres` conversion 行族。**已标定投值**:三行 生命 6 / 攻击 9 / 护甲 1 点每级——换算率标定批 2026-09-23,OFAT 冒险注入档与白板同种子配对的逐关条件通关率差实测(每级带平移 +6.0±0.7 / +8.8±0.8 / +1.2±0.4 点取整;冒险条件口径 + 当日 L2 收紧/大奖励 10→5 后现行数值包——直入口口径同日退役使首轮直入口面读数作废),护甲行强条目重测随批履行并暴露修复护甲断链(begin_battle hero_armor_class 参数零消费→_defender_ac 接线);判定端 balance_verifier.py 表值驱动消费(带重锚后随平移判);读数报告 production/qa/conversion-calibration/calibration.raw.md) + table: 永久强化换算率表(数据配置 承载;键结构 元进度定稿批 2026-09-18 登记,数值行读 `data/tables/meta.tres` conversion 行族。**已标定投值**:三行 生命 6 / 攻击 9 / 护甲 1 点每级——换算率标定批 2026-09-23,OFAT 冒险注入档与白板同种子配对的逐关条件通关率差实测(每级带平移 +6.0±0.7 / +8.8±0.8 / +1.2±0.4 点取整;冒险条件口径 + 当日 L2 收紧/大奇物 10→5 后现行数值包——直入口口径同日退役使首轮直入口面读数作废),护甲行强条目重测随批履行并暴露修复护甲断链(begin_battle hero_armor_class 参数零消费→_defender_ac 接线);判定端 balance_verifier.py 表值驱动消费(带重锚后随平移判);读数报告 production/qa/conversion-calibration/calibration.raw.md) kind: 区间平移换算率(2026-09-18 用户拍板启用)——永久强化对难度的影响不直接改难度判据,按统一换算率折算为通关率带平移量后套用(完美档 gate 与 normal 目标带判读口径不变,带随解锁等级平移) key: (conversion_row_id)——一行一柜台商品类型 - first_version_rows: 首版登记三个属性维度(表内即三行条目;用户拍板 2026-09-18,"维度"为拍板用语、"行"为表内同义术语):生命上限强化 / 基础攻击强化 / 护甲等级强化——后续商品上架(道具工坊钥石价、奖励格图鉴)逐条补登记,每次上架伴随一行换算登记(逐行归因纪律) + first_version_rows: 首版登记三个属性维度(表内即三行条目;用户拍板 2026-09-18,"维度"为拍板用语、"行"为表内同义术语):生命上限强化 / 基础攻击强化 / 护甲等级强化——后续商品上架(道具工坊钥石价、奇物格图鉴)逐条补登记,每次上架伴随一行换算登记(逐行归因纪律) strong_row_discipline: 护甲等级行为**强条目**——护甲等级牵动命中判定全链(AC 换装 / 掷点带宽),验收读数必须按解锁后参数重测、不得沿用基线读数外推 value_semantics: 每行折算值 = 每级强化对应的通关率带平移量(pp);营地定价从对应行换算率推(几何递增曲线,起步价与公比随设计批) related_save_domains: 钥石余额 / 永久强化等级表 / 关卡通关次数表 / Boss 首杀标记位(域级契约登记方式随 存档序列化「存档契约条目的登记方式」联合裁决) @@ -660,18 +660,18 @@ entities: table: MetaTable(数据配置 承载——元进度实现批 2026-09-21 建表落籍;schema data/schemas/meta_table.gd + data/tables/meta.tres) kind: 元进度/永久强化数值行单点(定价 / Boss 两档 / 工坊阈值 / 换算率四行族——消费面一律走 ConfigDB.meta_* 访问器,禁直读行集) row_families: forge_products {attr ∈ {max_hp, atk, armor_class} 恰三, display_name, flat_value, base_price, price_ratio_pct ∈ [100,400]} · boss_keystone {level_index 连续从 1, first_kill ≥ repeat_kill} · workshop_items {item_id ∈ registry aux_items 六件词表恰全, display_name, clear_threshold ∈ [1,99]} · conversion {attr 与 forge 词表一致恰三, per_level_shift_pct ∈ [0,100]} - provisional: 数值全 provisional 归元进度设计批配读数(骨架先行先例 = GP+商店房批)——现行落表值:flat 血+3/攻+1/甲+1、base 10 ratio 150 三行同;Boss 两档 **首杀 3 三关统一 / 复杀按关 2/2/3 递进**(**迭代 10 奖励重构批重锚 + 用户 2026-10-01 裁「a 用备选」**——原 L1 5/1 · L2 8/2 · L3 12/3 与代拍板「复杀统一 2」均退役;P-B 乙拍板贴近「Boss 掉 2–3 个」示例量级,L3 3/3 系 first≥repeat 结构约束的合法端点;精英掉 1 预留行随怪物批实装落);工坊阈值 1/1/2/2/3/3(按总通关次数);换算率全 0 占位 + provisional: 数值全 provisional 归元进度设计批配读数(骨架先行先例 = GP+商店房批)——现行落表值:flat 血+3/攻+1/甲+1、base 10 ratio 150 三行同;Boss 两档 **首杀 3 三关统一 / 复杀按关 2/2/3 递进**(**迭代 10 奇物重构批重锚 + 用户 2026-10-01 裁「a 用备选」**——原 L1 5/1 · L2 8/2 · L3 12/3 与代拍板「复杀统一 2」均退役;P-B 乙拍板贴近「Boss 掉 2–3 个」示例量级,L3 3/3 系 first≥repeat 结构约束的合法端点;精英掉 1 预留行随怪物批实装落);工坊阈值 1/1/2/2/3/3(按总通关次数);换算率全 0 占位 impl: core/meta_progression.gd(MetaProgression 账本服务——余额/几何定价〔tier 级价格 = 迭代 floor(p × ratio/100)〕/购买/工坊解锁〔总通关次数渠道〕/settle_adventure Boss 两档入账/hero_override 注入计算;Core 层零 UI 零信号) workshop_unlock_rule: 首版只挂总通关次数渠道(Σ level_clear_counts 达阈值——2026-09-21 实现批代拍板 2 并经用户确认,GDD 未细分);**channel 可替换轴**(同日用户拍板:解锁条件须抽象、可替换、可扩展——渠道由 workshop_items.channel 字段声明〔缺省 total_clears,词表 MetaTable.WORKSHOP_CHANNELS 封闭〕,判定量换算单点 = MetaProgression._workshop_progress,换/加渠道 = 词表加值 + 一 match 分支,阈值比较与解锁写档零改动;未知渠道恒 0 = 永不解锁 fail-safe;候选 adventure_depth 最高通关深度 / keystone 直购双渠道已预留语义未实现);钥石直购价随定价批后补 referenced_by: [元进度, 存档序列化, 数据配置] -# 2026-09-09 奖励道具经济 full 评审修订批(owner=奖励道具经济 代用户修订,NEEDS REVISION 14 blocking 同日核销): +# 2026-09-09 奇物道具经济 full 评审修订批(owner=奇物道具经济 代用户修订,NEEDS REVISION 14 blocking 同日核销): # 新增 reward_config 条目(RewardConfigTable 单行全局——T_fog_min/K_dmg/N_draft/P_min 的 Rule 1 载体); # reward_table 增 display_name(九字段)+ 默认根行集登记 + direction_precheck(刀供给)+ 跨字段护栏两条 # (floor_supply_missing / no_damage_row——敌人系统 OQ9 并案)+ 窗口锚点改授予段后(用户评审拍板:当轮拾取当轮可用) # + 重复受理幂等语义 + 战斗结算×6/HUD框架×3→HUD框架×5 义务清单同步;锚参照迁移传播三处(本条 anchor_warning 迁移注记 / # clause3_supply.direction_precheck 迁移注记 / systems-index 行动经济 OQ5 注记——attack_up 口径历史值与 defense_up -# 数值巧合全等、迁移后预检未重跑事实同批登记);terminology 增 奖励道具经济 六词条(刀/批尾/死行/档位序检查/预推进/烧刀烧包)。 +# 数值巧合全等、迁移后预检未重跑事实同批登记);terminology 增 奇物道具经济 六词条(刀/批尾/死行/档位序检查/预推进/烧刀烧包)。 # 详见 design/archive/gdd-2026-09-14/reviews/b4-reward-item-economy-review-log.md。 # 2026-09-10 战斗结算 定稿回填(owner=战斗结算):新增 settlement_table / clause5_dominance 两条件目 # (SettlementTable 七字段 + 三行致命 manifest + 段序骨架/可回放/高光双落载体;条款⑤主判式 + 保守地板缺口 + @@ -684,7 +684,7 @@ entities: # 2026-09-10 战斗结算 评审批修订(owner=战斗结算,/design-review NEEDS REVISION 同日核销 8 blocking): # settlement_table——p_perfect 载体域 {100,200}(真实双份交付)、pool_clamp_lo_hi 拆 lo/hi 两字段(八字段口径统一、 # 数据配置 GDD 行按收编先例以本条为准)、source_label_map 键集补 enemy_action/flag_miss、mechanics 补行协议字段分层; -# clause5_dominance——模型修订重登(挖穿残余池计价、条款⑤未闭合 + 难度曲线与Boss/奖励道具经济 约束包 + 护栏 B 双读数 + RAP 零价假设); +# clause5_dominance——模型修订重登(挖穿残余池计价、条款⑤未闭合 + 难度曲线与Boss/奇物道具经济 约束包 + 护栏 B 双读数 + RAP 零价假设); # clause3_supply——闭合回执双口径更正(锚行 ≈2.0×/2.6× / 期望 ≈1.2×/1.5×、破线约束两轴)。 # 详见 design/archive/gdd-2026-09-14/reviews/b1-settlement-review-log.md。 # 2026-09-13 HUD框架 定稿回填(owner=HUD框架):新增 hud_presentation_surface 条目(呈现面契约—— @@ -693,11 +693,11 @@ entities: # 2026-09-14 辅助道具 定稿回填(owner=辅助道具,solo 模式一次会话定稿、出稿待人工复核): # 新增 aux_items 条目(AuxItemTable 七字段 + MVP 六行【四常规单维 + 两稀有多维,值 provisional 归 难度曲线与Boss】+ # 真视窄域护栏承重规则 + 叠加层三集语义 + 8 API 面 + use_orchestration 规范序 + F1–F3 + 21 项跨 GDD 义务清单 -# + 地形变异 EC6/OQ2 与 奖励道具经济 OQ2 收口);variation_table.mvp_content.counter_item_ids 回填 [probe_dust](地形变异 预授权 +# + 地形变异 EC6/OQ2 与 奇物道具经济 OQ2 收口);variation_table.mvp_content.counter_item_ids 回填 [probe_dust](地形变异 预授权 # "辅助道具 期回填"兑现——数据配置 表值与悬空校验激活随 数据配置/辅助道具 修订批同批落地)+ dangling_ref_policy 首引兑现改写; # terminology 增四词条(叠加层/真视窄域护栏/渗透率 + referenced_by 增 辅助道具)。 -# 生效前提:奖励道具经济×①…⑤(category 扩值 aux_item/use_timing 扩 during_dig/默认根六行等)与 数据配置×①② 修订批—— -# 未兑现前 RewardTable 含 aux 行会加载致命(奖励道具经济 Rule 1 预留值拒绝)、辅助道具 GDD AC-12/13 登记 deferral。 +# 生效前提:奇物道具经济×①…⑤(category 扩值 aux_item/use_timing 扩 during_dig/默认根六行等)与 数据配置×①② 修订批—— +# 未兑现前 RewardTable 含 aux 行会加载致命(奇物道具经济 Rule 1 预留值拒绝)、辅助道具 GDD AC-12/13 登记 deferral。 # 2026-09-14 跨评审回写批(/review-all-gdds 🔴-1/🔴-2 修复,owner=增益状态/战斗结算/数据配置 GDD 代用户修订): # 批1(数据配置 漂移批 + 增益状态 接口漂移批)——status_effect.mvp_content.defense_up magnitude −50→−30(减伤墙批 # 2026-09-13 难度曲线与Boss 投值的对侧回写落地);rng_service.scope_event_binding 增 encounter 绑定 + referenced_by 增 战斗结算; @@ -707,7 +707,7 @@ entities: # clause3_supply.direction_precheck 增 2026-09-14 重算回执(现行值链破线 ≈0.48×/0.47×、约束升格曲线级—— # 禁独立调参联动网络 m_w↔D_ref↔m_d↔duration_d);clause5_dominance 增重算回执(v3 曲线四态 + 需求 110.3/166.8 + # 裁决②维持 + 护栏 W2 待重推注记);settlement_table.mechanics 增 战斗结算 F6 充能与护甲克制结算规格登记(W3)。 -# 2026-09-15 雾格移除清理批(owner=地形变异/棋盘生成/排雷玩法/奖励道具经济/战斗结算/辅助道具/冒险结构/GDD 代用户修订, +# 2026-09-15 雾格移除清理批(owner=地形变异/棋盘生成/排雷玩法/奇物道具经济/战斗结算/辅助道具/冒险结构/GDD 代用户修订, # 文档侧与代码侧分头执行)——variation_table:mvp_content 改空清单、删 load_bearing_rule 与 fog_ap_note 与 pricing_constraints # 三键、dangling_ref_policy 改"首个真实引用随未来变异行建行批回填"、referenced_by 收敛为 {棋盘生成, 排雷玩法, 辅助道具}; # board_gen_table:fields 删 fog_region_count/fog_target_ratio、cross_field_validation 删 fog_domain_ok、mechanics 改单一达标判据 @@ -727,17 +727,17 @@ entities: # BattleOrchestrator / EnemyCardView / BattleLogView / smoke 全量改键。 # 理由 = 位置键不承载语义,且"无甲/甲A/甲B"在文档间已分裂成四种写法。 # 数值零改动(纯改名);旧名仅在本批注记与各文档「版本历史」中作为"原名"留存,不再作为现行词汇使用。 -# 2026-09-15 攻击类型 / 奖励抽象分离批(同日第二批,用户裁定"攻击类型的定义和格子奖励要分离开;开格|标雷 → 奖励; -# 奖励如何定义是可以修改的;不要将两者绑定")——修正同日第一批遗留的焊死命名:结算表字段 damage_a_per_cell / +# 2026-09-15 攻击类型 / 奇物抽象分离批(同日第二批,用户裁定"攻击类型的定义和格子奇物要分离开;开格|标雷 → 奇物; +# 奇物如何定义是可以修改的;不要将两者绑定")——修正同日第一批遗留的焊死命名:结算表字段 damage_a_per_cell / # damage_a_cap / damage_b_per_flag(及其改名产物 pierce_per_cell / pierce_cap / magic_per_flag)把"攻击类型"与"棋盘来源" # 焊进同一根命名,属概念错误。现行两轴分离:① 攻击类型 = 伤害的属性轴(normal/pierce/magic,只决定查 armor_effectiveness # 哪一行,定义里不含任何棋盘来源);② 充能 = 按攻击类型分桶的附加伤害储备,"谁能充 / 充哪个桶" = settlement_table.charge_grants -# (触发源→{attack_type, per_unit, cap})= 奖励定义,整表替换即改奖励内容,攻击类型与矩阵不动。开格 / 标中旗 / 踩雷 / 清图 -# 一律只作奖励触发源。结算快照 round_facts:charge_dmg_a / charge_dmg_b → charge_counts(各触发源计数)+ charge_points -# (按攻击类型分桶点数);切片 BattlerOrchestrator 侧 _charge_counts 只计数、_charge_points() 按奖励定义投桶。 -# 充能奖励的正式归属(奖励道具经济 面)见 战斗结算「待拍板」。 -# 2026-09-15 格面资源批(用户四点拍板:① 结算队列+抵消过滤 ② 雷安一视同仁+可选类整体删除 ③ 封锁格计入清图 ④ 格面资源/清图奖励对象命名与封装; -# owner=奖励道具经济 v0.4 / 战斗结算 v0.7 / 排雷玩法 v0.3 / registry 侧 7 条;切片代码修改随新会话执行、指导已产出)—— +# (触发源→{attack_type, per_unit, cap})= 奇物定义,整表替换即改奇物内容,攻击类型与矩阵不动。开格 / 标中旗 / 踩雷 / 清图 +# 一律只作奇物触发源。结算快照 round_facts:charge_dmg_a / charge_dmg_b → charge_counts(各触发源计数)+ charge_points +# (按攻击类型分桶点数);切片 BattlerOrchestrator 侧 _charge_counts 只计数、_charge_points() 按奇物定义投桶。 +# 充能奇物的正式归属(奇物道具经济 面)见 战斗结算「待拍板」。 +# 2026-09-15 格面资源批(用户四点拍板:① 结算队列+抵消过滤 ② 雷安一视同仁+可选类整体删除 ③ 封锁格计入清图 ④ 格面资源/清图奇物对象命名与封装; +# owner=奇物道具经济 v0.4 / 战斗结算 v0.7 / 排雷玩法 v0.3 / registry 侧 7 条;切片代码修改随新会话执行、指导已产出)—— # reward_table 结构性重写:category/use_timing/库存/供给轴下线,新增 cell_type ∈ {attack,defense,heal,blast,weaken} × polarity ∈ {positive,negative} # 字段对(同型两行;正向行参与摇号 = 类型频次,负向行纯字典)、pool_tag {safe_cell, active_inject} → {cell}、mvp_content 十行(含负向直伤 heal flat p4、ambush+2 # stacks=2、sapped 行);direction_precheck 旧刀供给预检失义退役;settlement_obligations 六→四、hud_obligations 五→三、high_glow H3 失义下线。 @@ -753,13 +753,13 @@ entities: # 00-游戏概念/01-核心循环/03-内容规模/05-不做清单(旧固定兑付措辞)、UX 文档。历史留痕保留各批原文,现行口径以上方条目为准。 # # 2026-09-15 验收/收口批(owner=战斗结算,代用户修订;零数值零机制改动;**不改 v0.7 文件**)——v0.5/v0.6 两批(命名统一 + 抽象分离) -# 验收核对全绿后收口。范围纪律:战斗结算.md / 奖励道具经济.md 属 v0.7 格面资源批所有者文件、口径仍在移动,本批一律不动; +# 验收核对全绿后收口。范围纪律:战斗结算.md / 奇物道具经济.md 属 v0.7 格面资源批所有者文件、口径仍在移动,本批一律不动; # ③ 收口项登记于此(registry)+ README + active.md,GDD 侧只报告、待 v0.7 批整体收口后回填: # ① 收益对照表充能当量覆盖缺口:现行 flat/percent/完美乘数三式未覆盖「充能类」;候选口径 = 充能当量 = # Σ各桶点数 × 当轮目标护甲平均甲效倍率 ÷ 100(与直伤同类 1 伤害 = 1 当量,守 行动经济 条款①单一当量)——补式 / 登记待拍板二选一待回填批裁定。 # ② 两处已知落差:a) charge_grants 触发源可扩展 vs 切片仅 safe_cell/flag_hit 两处计数埋点(新增源须加埋点); # b) safe_cell/flag_hit 来源标识跨命名空间同名(结算明细行 source_class / charge_grants 键;RewardTable.pool_tag 已随格面资源批改 cell)。 -# 2026-09-19 充能退役批:settlement_table.charge_grants 字段删除(主角攻击回归单分量——克制策略归冒险前配置);上方 ①「充能当量覆盖缺口」与 ②a「触发源扩展 vs 计数埋点」两条充能相关注记随批废止;DamageMath.charge_component 改名 counter_component(奖励直伤唯一消费方)。 +# 2026-09-19 充能退役批:settlement_table.charge_grants 字段删除(主角攻击回归单分量——克制策略归冒险前配置);上方 ①「充能当量覆盖缺口」与 ②a「触发源扩展 vs 计数埋点」两条充能相关注记随批废止;DamageMath.charge_component 改名 counter_component(奇物直伤唯一消费方)。 # 验收读数:冒烟 201 项 0 失败 · 四探针 exit=0 无 FAIL(切片侧仍为 pre-v0.7 实现,代码同步随格面资源批新会话执行)。 # # 2026-09-15 护甲等级批(用户拍板登记,只改 GDD 与 registry、不动代码;owner=战斗结算 v0.8 / 敌人系统 v0.3 / 难度曲线与Boss v0.4 / registry 侧 3 条): @@ -771,10 +771,10 @@ entities: # 护甲等级(数值轴 armor_class)与护甲类型(克制属性轴 armor_type light/ward/heavy)命名区分成文——文档、表字段与代码键不得混用。 # EV 中性引入:期望伤害对齐现行表值,现行数值不重调;难度曲线与Boss 生存链区间补记掷点带宽口径(定稿前扫描维持全额口径),"零红档"验收保留。 # 拍板口径:必中、非归零(低掷按减伤档位折扣,无 miss 无零收益白回合);只对基础攻击掷(主角普通分量 / 敌方攻击拍与重击拍基线); -# 棋盘来源一律无视护甲等级——与"奖励/惩罚必中"同构。 +# 棋盘来源一律无视护甲等级——与"奇物/惩罚必中"同构。 # # 2026-09-16 系统更名批(用户拍板 2026-09-16,只改命名不改内容):两个系统中文规范名更名—— -# "奖励道具经济" → "地图战斗资源"(owner 文件重命名 design/gdd/systems/战斗循环/地图战斗资源.md;其「待拍板」系统更名条目关闭); +# "奇物道具经济" → "地图战斗资源"(owner 文件重命名 design/gdd/systems/战斗循环/地图战斗资源.md;其「待拍板」系统更名条目关闭); # "辅助道具" → "魔法道具"(owner 文件重命名 design/gdd/systems/排雷循环/魔法道具.md)。 # 本表同步:owner 路径(reward_table / reward_config / aux_items 三处)与 referenced_by、各属性文本中的系统名提及全部改新名; # 英文代号 REWARD_ITEM_ECONOMY / AUXILIARY_ITEMS 与条目键 reward_/aux_ 暂沿用(代码标识符与工具链口径),与中文名的对齐另批执行。 @@ -812,7 +812,7 @@ entities: # ② level_table:table 行改节点图结构;nodes 字段 = 节点数组+连线、每节点关卡内唯一节点编号 # (node_depth 数据键沿用、语义升级:深度→节点编号);rowset_rule 改图合法性校验(唯一编号/唯一入口/ # Boss 恒唯一终点〔编号最大,Dmax 平移〕/无环/全可达);MVP 链模板注记单链特例合法; -# ③ 术语「节点」图形态与分类学展开定稿(四类封闭枚举)、「节点奖励」机制定稿(功能道具正式渠道——内容/ +# ③ 术语「节点」图形态与分类学展开定稿(四类封闭枚举)、「节点奇物」机制定稿(功能道具正式渠道——内容/ # 持有/使用归 魔法道具 内容重定批,切片期直通合法空态;覆盖层 = 兑付反馈覆盖层)、「关卡收束点」图版措辞; # ④ enemy_table.rowset_rule:同层多遭遇由节点编号消解;不设精英/Boss 编码位(Boss=最大编号节点、精英 P2 # 内容承载);同场多敌种行集多行 → 敌人表行集多行批(战斗侧,排技能池实施批后, @@ -820,15 +820,15 @@ entities: # ⑤ 06-待办清单:「精英与 Boss 编码位」「多敌数量的消费面」(地图战斗资源节「功能道具的正式渠道」同日) # 三条已解决留痕;敌人系统「同深度第二敌种与精英 / Boss 编码位」部分收口改归属;新增「切片行进代码与 # 定稿的接口漂移」(八条漂移清单)与「图版措辞对齐」(跨文档残留单点清单)两待办。 -# 2026-09-17 代币→钥石统一拍板(用户裁决,06 清单「代币与钥石的资源关系」关闭):冒险结构关卡大奖励 -# 「代币记账 +10/关」即钥石入账——同一资源、两渠道(关卡大奖励 +10/关 provisional 与关底 Boss 掉落); +# 2026-09-17 代币→钥石统一拍板(用户裁决,06 清单「代币与钥石的资源关系」关闭):冒险结构关卡大奇物 +# 「代币记账 +10/关」即钥石入账——同一资源、两渠道(关卡大奇物 +10/关 provisional 与关底 Boss 掉落); # 「代币」措辞全仓退役(冒险结构 v0.3 / 元进度 v0.2 / 数据配置 v0.3 / architecture.md / adr-0005 随批清偿); # adventure_table 字段键改 keystone_per_level(原 token_per_level,AdventureTable 未建表零代码影响); # 钥石产出细则与解锁定价仍归元进度定稿批(关联待办「钥石的重复获取」继续)。 # 2026-09-17 分支节点图批(L2 幽暗地域内容批——关卡节点地图 v1.0 P1 实现批,用户拍板;与切片代码 / # 难度曲线与Boss v0.7 / 06-待办清单 / 关卡节点地图 版本历史同批): # ① level_table:display_name L2 落名"第二层 · 幽暗地域";mvp_content 改"L1 全行 + L2 全行已落地" -# (首张分支图:9 节点 / 岔路 4 处 / 奖励点+恢复点各 1 / 战斗节点 6 + Boss 8;行值 provisional); +# (首张分支图:9 节点 / 岔路 4 处 / 奇物点+恢复点各 1 / 战斗节点 6 + Boss 8;行值 provisional); # rowset_rule 增实现批注记(校验落 LevelTable.validate——单链 = 数组下标编号空间 / 图 = node_depth, # L1 与 L2 双行集经同一套算法,冒烟全绿断言);首页直入口试玩 ≠ 两关序列生效(序列推进仍待办)。 # ② skill_table 新行两行(provisional,投值归 难度曲线与Boss v0.7):撕咬 bite(damage ×1.5 冷却 1—— @@ -907,7 +907,7 @@ entities: # (OFAT 冒险注入档×双画像×na=100 与白板同种子流配对,逐关条件通关率差实测每级带平移 # +6.0±0.7 / +8.8±0.8 / +1.2±0.4 点配对 bootstrap 合并取整;读数报告 # production/qa/conversion-calibration/calibration.raw.md。测量面两换:首轮直入口面读数 -# 6/8/1 因同日单关直入口口径退役作废,且冒险条件口径 + L2 收紧/大奖励 10→5 现行数值包重测); +# 6/8/1 因同日单关直入口口径退役作废,且冒险条件口径 + L2 收紧/大奇物 10→5 现行数值包重测); # ② 护甲行强条目重测履行=重测暴露护甲断链:begin_battle hero_armor_class 参数自元进度实现批 # 传入以来零消费(_defender_ac 主角分支只读 db.hero 表值)——永久强化护甲档与冒险加算区 # 护甲轴的生效值未进战斗;本批接线(缺参/-1 = 表值兜底,白板路径逐位不变,冒烟 553 项 0 失败 diff --git a/game/data/schemas/adventure_table.gd b/game/data/schemas/adventure_table.gd index 35a015a1..c9079ad9 100644 --- a/game/data/schemas/adventure_table.gd +++ b/game/data/schemas/adventure_table.gd @@ -14,10 +14,10 @@ class_name AdventureTable extends Resource ## 概念指路:本表的属性提升类与资源与机会类,与 relics.tres 的机制类,同属一个对象—— -## 「奖励」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奖励.md。 +## 「奇物」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奇物.md。 ## 它们是它的分类轴上的枚举(机制类 / 属性提升类 / 资源与机会类),不是三套系统; ## 本表承载属性提升类与资源与机会类的种类配额与件值。 -## (2026-10-05 命名统一 + v2.0 改名:旧称「数值件」→ 属性提升;顶层「特性」→「奖励」。 +## (2026-10-05 命名统一 + v2.0 改名:旧称「数值件」→ 属性提升;顶层「特性」→「奖励」→「奇物」。 ## 常量与字段随之前缀 feature_*,**尚未**随顶层改名换到 reward_*——见 06-待办清单。 ## 分类轴三个枚举:属性提升类〔生命上限 / AC / 攻击〕;资源与机会类〔行动点上限 / ## 刷新次数 / 金币 / 回复,命名待定〕——本表两类混编;刷新次数与专长获取两项尚未入表。 diff --git a/game/data/schemas/relic_table.gd b/game/data/schemas/relic_table.gd index 9f18ea30..22a16413 100644 --- a/game/data/schemas/relic_table.gd +++ b/game/data/schemas/relic_table.gd @@ -3,12 +3,12 @@ # 专长带能否挂进令牌池稀有/罕见档随机投放(P0——迭代 12 双层 BD 实施批 T1) # Date: 2026-10-04(双层 BD 实施批 T1——任务书五裁定稿;设计权威 双层BD体系-整合定稿-2026-10-03 v3) # 概念指路:本表的机制类(专长),与 adventure.tres 的属性提升类、资源与机会类,同属一个对象—— -# 「奖励」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奖励.md。 +# 「奇物」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奇物.md。 # 它们是它分类轴上的枚举(机制类 / 属性提升类 / 资源与机会类),不是三套系统;本表承载「机制类」(专长 Feat)的逐项定义。 # (2026-10-05 命名统一 + 分类重构:旧称「流派件」→「规则改写型特性」→ 现定名「机制类(专长)」; # 表名与 relic_id 沿用历史命名,与统一词族对齐归后续批次——见 06-待办清单「命名统一」条目。 -# 目标渠道:专长走关底 Boss 击败后专属三选一(不新增节点类型),见奖励文档 2.1 节。) -# 数据配置 RelicTable schema(奖励·机制类定义表;行 = Dictionary 键 relic_id,Rule 4 豁免 +# 目标渠道:专长走关底 Boss 击败后专属三选一(不新增节点类型),见奇物文档 2.1 节。) +# 数据配置 RelicTable schema(奇物·机制类定义表;行 = Dictionary 键 relic_id,Rule 4 豁免 # 定义表——AuxItemTable 先例)。 # 行字段:relic_id 主键 / display_name / rarity ∈ {common, rare, rarest}(对齐令牌池三档命名—— # 投放档映射:common/rare→稀有令牌档、rarest→罕见令牌档;relic 令牌永不入普通档=「挂稀有/罕见档」 From 128078780f0b7f30592dc53f2e9acb163e458083 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 05:46:54 +0800 Subject: [PATCH 08/15] =?UTF-8?q?=E5=A5=87=E7=89=A9=20v2.5=EF=BC=9A?= =?UTF-8?q?=E7=AC=AC=E4=B8=89=E7=B1=BB=E5=AE=9A=E5=90=8D=E3=80=8C=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E7=B1=BB=E3=80=8D+=20=E5=9B=9E=E5=A4=8D=E5=BD=92?= =?UTF-8?q?=E5=B1=9E=E5=AE=9A=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 父节点定为「奇物」后,Q6(第三类命名)解锁,本批收口。 一、第三类定名「资源类」(用户拍板) 四个成员——行动点上限 / 刷新次数 / 金币 / 回复——都是可以调动、可以 花掉的余量,故名资源类。「资源」偏泛(能力资源、财富资源都叫资源), 因此在两处写死判据句,这是把泛用词收回本类定义的唯一凭据: - 1.3 节新增专属判据:**给的是可以调动、可以花掉的余量,不是角色基础 属性的永久抬升**。拿不准时问一句:它会不会进角色自己的属性数值? 会进的归属性提升类,不会进、变成手里多出的次数或钱的,归资源类 - 1.5 命名出处节记明该偏泛性并指回 1.3 的判据句 (1.4 是三分类总判据,1.3 是资源类专属判据,层次不同不重复) 二、回复归属定案:留在资源类,不拆第四类 理由是它与金币同为**即时兑付**、都给的是可花掉的余量,判据完全同源。 拆出去之后第四类只剩两项,且与资源类的判据重合——分类的价值在于判据 能一刀切得开,拆一个判据同源的类只会让读者多查一张表。 三、附带修掉两处结构问题 - **1.5 段末与「### 2. 渠道轴」标题粘连**(缺换行,导致第 2 节标题被 吞进 1.5 段落里,目录层级失真) - entities.yaml open_questions 编号跳号(缺②、含两条已解决项③⑦), 重排为五项:类内异质性登记 / 门票四参数无事实源 / 档二不可达延后复裁 / charge 仅 3 件数据缺陷 / 断点存档键换名待裁 - entities.yaml naming_note 笔误:「v2.0 曾名「奇物」」→ 修正为 「v2.0 改名为「奖励」,v2.4 定名为「奇物」」 同步:06-待办清单(条目标题、交叉表行、待拍板项由三项减为两项、现状 描述)、02-系统清单(文档树行 + v1.8)、两个 schema 概念指路注释。 全文「资源与机会类」零残留(仅 02-系统清单 v1.5 版本历史行保留原名, 按规范版本历史不改写)。 数据层数值与表结构零变更;未 merge 回 master(本会话零测试)。 --- design/gdd/02-系统清单.md | 3 +- design/gdd/06-待办清单.md | 14 ++++----- design/gdd/systems/冒险循环/奇物.md | 44 +++++++++++++++------------- design/registry/entities.yaml | 12 ++++---- game/data/schemas/adventure_table.gd | 8 ++--- game/data/schemas/relic_table.gd | 4 +-- 6 files changed, 45 insertions(+), 40 deletions(-) diff --git a/design/gdd/02-系统清单.md b/design/gdd/02-系统清单.md index 1281c26b..b160720f 100644 --- a/design/gdd/02-系统清单.md +++ b/design/gdd/02-系统清单.md @@ -45,7 +45,7 @@ | `关卡节点图生成.md` | 单关节点图的逐局随机来源:图模板池、抽签与实例化(实施排队 ADR-0007 裁决后) | 设计草案·拍板点全落文 | | `冒险结构.md` | 整局冒险的关卡序列、失败与大奖励 | 已定稿·自旧体系迁移 | | `难度曲线与Boss.md` | 难度曲线、期望值带与 Boss 设计 | 已定稿·自旧体系迁移 | -| `奇物.md` | 一次冒险内各渠道给予玩家的增益总称(机制类 / 属性提升类 / 资源与机会类三个枚举 × 奖励节点·商店·Boss 击败后三条渠道) | 已实现·2026-10-05 新立定义·v2.0 改名并重构为两根轴 | +| `奇物.md` | 一次冒险内各渠道给予玩家的增益总称(机制类 / 属性提升类 / 资源类三个枚举 × 奖励节点·商店·Boss 击败后三条渠道) | 已实现·2026-10-05 新立定义·v2.0 改名并重构为两根轴 | ### 跨局循环(`systems/跨局循环/`) @@ -133,4 +133,5 @@ | v1.5 | 2026-10-05 | 《特性》改名为《奖励》并升 v2.0:顶层概念改为"一次冒险内各渠道给予玩家的增益总称",边界判据由"自身提升 vs 持有物"改为生命周期(当局清零的是奖励,跨局带走的是魔法道具);分类由两类扩为三个枚举(机制类 / 属性提升类 / 资源与机会类),并新增分类 × 渠道交叉开关表——两根轴互不决定。文档树冒险循环行改名 + 命名对照表 `ADVENTURE_FEATURE` → `ADVENTURE_REWARD` | | v1.6 | 2026-10-05 | 《奖励》v2.1 交叉表收口:Boss 渠道只出专长(终局 Boss 不给),另两类在此不出现;新增「计价物不自售」规则处理金币不进商店——不拆第四个分类、不开特例,而是两轴交叉处的一条约束 | | v1.7 | 2026-10-05 | 《奖励》v2.2:机制类在非 Boss 渠道改为「专长获取」门票形式(不直接给专长);渠道约束重构为三层(分类白名单/可计算谓词/显式例外清单),并承认「计价物不自售」形式上是白名单外的一道过滤、与死特判的区别在可计算;立默认原则——除已登记规则外分类内的都要在池子里,据此回复应在商店内(现行货架缺它,须补) | +| v1.8 | 2026-10-05 | 《奇物》v2.5:第三类定名「资源类」(资源偏泛,故在命名出处节写死判据句——给的是可消耗或可重掷的余量,不是属性永久抬升);回复归属定案留在本类不拆第四类;修复 1.5 段末与渠道轴标题粘连 | | v1.8 | 2026-10-05 | 《奖励》改名为《奇物》并升 v2.4:顶层定名 Wondrous Item(DND 魔法物品九分类中的兜底杂类,官方中文译名「奇物」)。文档树冒险循环行改名;命名对照表 `ADVENTURE_REWARD` → `ADVENTURE_CURIO`(**不用 `reward_*`**——`reward_pick` 流 / `reward_node` context / `reward_preview` kind 已占用该词族) | diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index faf8029c..62c359f4 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -27,7 +27,7 @@ #### 冒险 BD 各分类获取同渠道、纯概率差——渠道分工目标态(2026-10-04 提问登记;2026-10-05 用户定分工) -**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **奇物**(2026-10-05 定名,v2.4 由「奖励」改名、v2.0 由「特性」改名,定义见 [奇物](systems/冒险循环/奇物.md)),下分**三个枚举分类**:**机制类**(专长——改规则、带流派标签与档位激活,构筑核心)、**属性提升类**(生命/AC/攻击三轴,写统一加算区;账本实为冒险域、关间不清零)、**资源与机会类**(行动点上限·刷新次数·金币·回复——给"可用的量",命名待定)。旧称「流派件 / 数值件 / 本关强化」一律作废;v1.0 的「规则改写型 / 属性加成型」与 v1.1 的两分类亦作废。现行三个分类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),机制类只占稀有/罕见档(与属性大件混编),商店仅「货架零专长挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 +**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **奇物**(2026-10-05 定名,v2.4 由「奖励」改名、v2.0 由「特性」改名,定义见 [奇物](systems/冒险循环/奇物.md)),下分**三个枚举分类**:**机制类**(专长——改规则、带流派标签与档位激活,构筑核心)、**属性提升类**(生命/AC/攻击三轴,写统一加算区;账本实为冒险域、关间不清零)、**资源类**(行动点上限·刷新次数·金币·回复——给"可用的量",命名待定)。旧称「流派件 / 数值件 / 本关强化」一律作废;v1.0 的「规则改写型 / 属性加成型」与 v1.1 的两分类亦作废。现行三个分类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),机制类只占稀有/罕见档(与属性大件混编),商店仅「货架零专长挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 **用户定案(2026-10-05,v2.1 收口)**:分类 × 渠道交叉开关表—— @@ -35,11 +35,11 @@ |---|---|---|---| | 机制类(专长) | **门票形式** | **门票形式** | **直接给**(唯一直接渠道) | | 属性提升类 | 出 | 出(训练) | 不出现 | -| 资源与机会类 | 出 | 出(金币除外;**回复在内**) | 不出现 | +| 资源类 | 出 | 出(金币除外;**回复在内**) | 不出现 | **Boss 渠道是专长的独占渠道,也是唯一直接给专长的渠道**——另两类都不走这里;奖励节点与商店不直接给专长,而是给一个**「专长获取」道具(门票)**,拿到后开专长三选一。形状是"一块独占 + 两块并行",不是三块平分。**终局 Boss 不给**(打赢时冒险已结束,无后续关卡可消费),兑付只发生在终局之前的 Boss。用户原话:"我在获取特性的时候,可以有些比较罕见的道具,让我立马得到一个专长,就给它一点不确定性,一点随机性"。**确定性优先**:专长不因没 roll 到就构筑不起来。用户同时明确:先定大意念再分小类,渠道与分类是两根互不决定的轴。 -**门票归机制类,不归资源与机会类**:它给的不是"余量"而是"一件你以前不会的事",只是把选择推迟到一次三选一。**为什么只给门票**:若商店能直接买到指定专长,玩家就能用金币把构筑买出来,Boss 渠道"打赢才拿到"就失去意义;门票保留惊喜(开出的是三选一不是指定),但不让钱定点购买。 +**门票归机制类,不归资源类**:它给的不是"余量"而是"一件你以前不会的事",只是把选择推迟到一次三选一。**为什么只给门票**:若商店能直接买到指定专长,玩家就能用金币把构筑买出来,Boss 渠道"打赢才拿到"就失去意义;门票保留惊喜(开出的是三选一不是指定),但不让钱定点购买。 **门票机制四条(用户 2026-10-05 定)**:① **拿到即开、不可囤积**——不进持有集,选中或买下同一时刻就开专长三选一(可囤积会让玩家把关键决策无限推迟,且把持有物语义从后门放回来;"道具"只是卡面表现)。② **罕见只在概率,不在价格**——货架价与其他商品相当,不靠高价劝退。③ **一局限购一次**(现行口径)。④ **计步保底**——连续 5 次三选一展示未出现门票,第 6 次展示必定出现;计数对象=**展示次数**(刷新后的重新展示计入,用户明定含刷新),计数范围=奖励节点与商店**共享**,触发后清零,**限购用满后保底不再触发**。 @@ -47,7 +47,7 @@ 原四备选(① 专长专属三选一 ② 行为条件投放 ③ 计步保底 ④ 双池分离)已被上述定案覆盖——定案≈备选①的确定性路线,余三备选不再单独推进。**节点类型不扩类**:机制类挂在 Boss 节点兑付面上(击败后追加一次专长三选一),[关卡节点地图](systems/冒险循环/关卡节点地图.md) 的节点类型仍为封闭枚举五种——此前的"是否新增节点类型"悬案由此收口。 -**gp/heal 已安置,不再走迁移**:v2.0 把它们放进资源与机会类(用户 2026-10-05 选"暂不处置"=不做结构性迁移、不动配额),并在该类内显式登记异质性——**金币与回复是即时兑付,不进持有集、不持续生效**,与行动点上限/刷新次数(进持有账本、当局持续有效)生命周期不同。这条异质性必须留在文档里,防止后续把它们当持续生效的东西去结算。 +**gp/heal 已安置,不再走迁移**:v2.0 把它们放进资源类(用户 2026-10-05 选"暂不处置"=不做结构性迁移、不动配额),并在该类内显式登记异质性——**金币与回复是即时兑付,不进持有集、不持续生效**,与行动点上限/刷新次数(进持有账本、当局持续有效)生命周期不同。这条异质性必须留在文档里,防止后续把它们当持续生效的东西去结算。 **渠道约束分三层(v2.2,用户质疑后重构)**:用户问"计价物不自售不就是特判吗"。**诚实结论:形式上是的**——它确实是在分类白名单之外加的一道过滤,不是从分类推出来的。但和死特判有实质区别: @@ -65,7 +65,7 @@ **回复应在商店内**(用户 2026-10-05 定):回复不是计价物,套不上「计价物不自售」,按默认原则它应当在商店出现。现行 `shop.tres` 货架只有 attack / max_hp / armor / ap 四项,**现状与表格不对齐,须在实施批补上**。 -**待拍板/待观察三项**:① **资源与机会类的命名**(候选:资源 / 补给 / 余量);**回复是否属该类**(也可能独立成第四类——它是否出现在商店与此无关,两回事)。② **专长门票尚未入表**:出现概率 / 配额 / 全局限量三个参数都没有事实源,入池同样受档位结构锚约束。③ **专长总量与档位阈值的匹配——延后复裁**(用户 2026-10-05 定"先不调整"):终局 Boss 不给已定,一局确定性专长次数=终局前 Boss 个数;**三关结构下是两次,加门票最多三次**,而档位阈值是同标签 ≥2 档一 / ≥4 档二——**档二(完全体)在三关结构下几乎不可达**。用户决定不动,理由是**后续会有第四关**,且届时可能另做获取侧调整。**复裁触发:第四关内容批落地后实测,配合仍太少再调。** 先不调≠不成问题,登记于此防忘。 +**待拍板/待观察两项**:① ~~资源类的命名~~ 与 ~~回复是否属该类~~ **已定(v2.5)=资源类,回复留在其中不拆第四类**(它与金币同为即时兑付、判据同源;拆出去第四类只剩两项)。② **专长门票尚未入表**:出现概率 / 配额 / 全局限量三个参数都没有事实源,入池同样受档位结构锚约束。③ **专长总量与档位阈值的匹配——延后复裁**(用户 2026-10-05 定"先不调整"):终局 Boss 不给已定,一局确定性专长次数=终局前 Boss 个数;**三关结构下是两次,加门票最多三次**,而档位阈值是同标签 ≥2 档一 / ≥4 档二——**档二(完全体)在三关结构下几乎不可达**。用户决定不动,理由是**后续会有第四关**,且届时可能另做获取侧调整。**复裁触发:第四关内容批落地后实测,配合仍太少再调。** 先不调≠不成问题,登记于此防忘。 ④ **charge 标签件数不足(数据缺陷,独立登记,勿被上条盖掉)**:档二要求同标签 ≥4 件,而 `relics.tres` 里 charge 标签**只有 3 件**——即使获取次数无限,charge 流派也永远达不到档二。这与渠道结构无关,是数据层缺陷。 ⑤ ~~顶层命名待定~~ **已定(v2.4)=「奇物」Wondrous Item**:DND 魔法物品九分类中的兜底杂类,官方中文译名即「奇物」,专装"不好归类但有奇效之物"——正好对应三个互不相干的分类。落选:Treasure(偏财物,装不下专长)、Relic(品类惯例,用户否决「遗物」)、全部自造词(进益/造化/机缘/遇获)。**代码词族随之定为 `curio_*` / `ADVENTURE_CURIO`**——原计划的 `feature_* → reward_*` 对齐**作废**:`reward_pick` 流 / `reward_node` context / `reward_preview` kind 已占用 reward 词族,照做会撞车。 @@ -73,9 +73,9 @@ **状态**:分工已定,**实施待排批**;两项待拍板/待观察(2026-10-05 v2.1 更新) -#### 资源与机会类两个新种类入池——刷新次数、专长获取(2026-10-05 立) +#### 资源类两个新种类入池——刷新次数、专长获取(2026-10-05 立) -**现状**:[奇物](systems/冒险循环/奇物.md) v2.0 立了资源与机会类四项,其中**行动点上限**已在池(罕见档)、**金币与回复**已在池,**刷新次数与专长获取两项尚未入表**。注意与既有「商店独立刷新机制」条分清:那条是进店后的免费次数 + GP 刷新(商店自身的服务),本条指的是**作为奖励授予的**重抽次数,两者不是一回事,入池前须先划清边界。 +**现状**:[奇物](systems/冒险循环/奇物.md) v2.0 立了资源类四项,其中**行动点上限**已在池(罕见档)、**金币与回复**已在池,**刷新次数与专长获取两项尚未入表**。注意与既有「商店独立刷新机制」条分清:那条是进店后的免费次数 + GP 刷新(商店自身的服务),本条指的是**作为奖励授予的**重抽次数,两者不是一回事,入池前须先划清边界。 **连带约束**:`FEATURE_KINDS` 词表封闭(断点附随件与牌库剔除态依赖它),扩种类须走 `adventure_table.gd` + registry 同步修订;档位配额是**结构锚**(普通 70 / 稀有 25 / 罕见 3 = 98 张,入 schema validate 硬断言),新种类入池要占配额——**改总量须重裁而非调参**。专长获取须带全局限量(一局内可获得次数上限)。 diff --git a/design/gdd/systems/冒险循环/奇物.md b/design/gdd/systems/冒险循环/奇物.md index 598450fa..005b77ce 100644 --- a/design/gdd/systems/冒险循环/奇物.md +++ b/design/gdd/systems/冒险循环/奇物.md @@ -4,7 +4,7 @@ > > 它是一个概念,不是一套东西。下面有**两根互不相干的轴**: > -> - **分类轴**回答"给的是什么"——三个枚举:机制类 / 属性提升类 / 资源与机会类; +> - **分类轴**回答"给的是什么"——三个枚举:机制类 / 属性提升类 / 资源类; > - **渠道轴**回答"从哪来"——奖励节点 / 商店 / 关底 Boss 击败后。 > > 一个奇物属于哪个分类,不决定它从哪个渠道来;反过来也一样。两者的交叉由第 2 节那张开关表定死。 @@ -52,7 +52,7 @@ |---|---|---|---| | **机制类**(专长 Feat) | 给规则。在结算管线某个挂点上给自己加一条规则;同一标签的持有件数达阈值时质变 | 各结算段挂点;标签与档位由求值服务统一算 | `relics.tres`(逐项定义) | | **属性提升类**(ASI) | 给数字。抬高角色某项战斗属性的基础值 | 冒险加算区的生命上限 / AC / 攻击三轴 | `adventure.tres`(种类配额与值) | -| **资源与机会类**(命名待定) | 给"可用的量"。不抬高战斗属性,也不改规则,而是扩充你能调动的余量与机会 | 行动经济、三选一界面、局内钱包;**不进加算区、多数不进持有集** | `adventure.tres`(种类配额与值) | +| **资源类** | 给"可用的量"。不抬高战斗属性,也不改规则,而是扩充你能调动的余量与机会 | 行动经济、三选一界面、局内钱包;**不进加算区、多数不进持有集** | `adventure.tres`(种类配额与值) | 三类的共性:都在当局获得、都在当局消费完或随冒险收束清零;都不写账号进度——出现与否由抽取决定,玩家的账号强弱不影响它出现在哪一局。 @@ -62,7 +62,7 @@ 专长带流派标签,同一标签的持有件数达到阈值时发生质变(档位机制归 [战斗结算](../战斗循环/战斗结算.md),本文件不展开)。这是它和另两类最直观的体感差别:属性提升是"我更耐打了",专长是"我现在会一件以前不会的事"。 -**专长门票也归这一类**:非 Boss 渠道不直接给专长,而是给一张名为「专长获取」的门票——拿到后立刻开一次专长 N 选一。它给的是"一件你以前不会的事"(只是把选择推迟到一次三选一),按 1.4 的判据归机制类,不归资源与机会类。详见 2.2。 +**专长门票也归这一类**:非 Boss 渠道不直接给专长,而是给一张名为「专长获取」的门票——拿到后立刻开一次专长 N 选一。它给的是"一件你以前不会的事"(只是把选择推迟到一次三选一),按 1.4 的判据归机制类,不归资源类。详见 2.2。 #### 1.2 属性提升类:纯属性三项 @@ -76,7 +76,7 @@ 三项都直接进冒险加算区,跨关携带且关间不清零。这一类是封闭的:只有这三项,多一项就要走文档修订。 -#### 1.3 资源与机会类:四项(命名待定) +#### 1.3 资源类:四项 这类装的是"不抬高战斗属性、也不改规则,但让你更有余地"的东西: @@ -89,17 +89,21 @@ **这类为什么单独存在**:它的成员不满足"抬高战斗属性"(那归属性提升类),也不满足"改写规则"(那归机制类),但玩家拿到时的感受是一致的——"我能做的事变多了"。把它们跟属性提升混在一起,会让"加了多少攻击"这种可度量的提升和"多一次重抽"这种不可度量的余地摆在同一张候选卡上,玩家没法比。 +**判据句("资源"这个词太泛,这句是唯一的收口凭据)**:这一类给的是**可以调动、可以花掉的余量**,不是角色基础属性的永久抬升。"资源"是常用词,能力资源、财富资源都叫资源——所以判据必须写死:拿不准一项该归哪类时,问它**会不会进角色自己的属性数值**。会进的归属性提升类,不会进、而是变成你手里多出来的次数或多出来的钱的,归资源类。 + **这类内部的异质性(要诚实登记)**:金币与回复是**即时兑付**——拿到就消失,不进持有集,也没有"持有→生效→清零"的过程;行动点上限与刷新次数则进持有账本、当局持续有效。它们被归在同一类是因为"给的是余量"这个共同性质,不是因为生命周期相同。这条异质性在此显式登记,防止后续把金币当成会持续生效的东西去结算。 #### 1.4 分类判据 -**给规则的是机制类,给数字的是属性提升类,给余量的是资源与机会类。** +**给规则的是机制类,给数字的是属性提升类,给余量的是资源类。** -拿不准的项按这条判:去掉它之后,角色是"某件以前不会的事做不到了"(机制类)、"某个数字少了一截"(属性提升类)、还是"能调动的余地变小了"(资源与机会类)。 +拿不准的项按这条判:去掉它之后,角色是"某件以前不会的事做不到了"(机制类)、"某个数字少了一截"(属性提升类)、还是"能调动的余地变小了"(资源类)。 #### 1.5 命名出处 -机制类与属性提升类都取自 DND 规则书的既有名词:专长对应 Feat,属性提升对应 Ability Score Improvement(ASI)。**顶层「奇物」取自 DND 魔法物品的九分类之一 Wondrous Item——官方中文译名就是「奇物」,是那个专门装不好归类但有奇效的东西的兜底杂类。** 用它做顶层名的理由:地下城里挖到的、商店里能买到的、能把你变强的、又确实贵重的东西,在 DND 里没有别的总称,只有 Treasure 和 Wondrous Item 两个候选,而 Treasure 偏向财物,装不下专长这种你会了件以前不会的事。奇物天生是杂类兜底,正好对应本概念下三个互不相干的分类(规则 / 数字 / 余量)——它们本来就没有共同点,能拢在一起的只有一个不好归类但有用的名字。资源与机会类内部的命名**待定**。玩家可见文案只写效果,不出现任何分类名。### 2. 渠道轴:与分类的交叉 +机制类与属性提升类都取自 DND 规则书的既有名词:专长对应 Feat,属性提升对应 Ability Score Improvement(ASI)。**顶层「奇物」取自 DND 魔法物品的九分类之一 Wondrous Item——官方中文译名就是「奇物」,是那个专门装不好归类但有奇效的东西的兜底杂类。** 用它做顶层名的理由:地下城里挖到的、商店里能买到的、能把你变强的、又确实贵重的东西,在 DND 里没有别的总称,只有 Treasure 和 Wondrous Item 两个候选,而 Treasure 偏向财物,装不下专长这种你会了件以前不会的事。奇物天生是杂类兜底,正好对应本概念下三个互不相干的分类(规则 / 数字 / 余量)——它们本来就没有共同点,能拢在一起的只有一个不好归类但有用的名字。**资源类取"资源"这个常用词**(用户 2026-10-05 定)——行动点上限、刷新次数、金币、回复都是可以调动、可以花掉的余量。它确实偏泛(能力资源、财富资源都叫资源),所以这一类的判据句必须写死:**给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升**——这一句是把"资源"从泛用词收回到本类定义里的唯一凭据,不能省。玩家可见文案只写效果,不出现任何分类名。 + +### 2. 渠道轴:与分类的交叉 三个渠道各只取走分类的一部分。这张表是奇物概念的第二个维度——它和分类轴互不决定,改其中一根不必动另一根。 @@ -107,7 +111,7 @@ |---|---|---|---| | **机制类**(专长) | 门票形式(见 2.2) | 门票形式(见 2.2) | **直接给**(唯一的直接渠道) | | **属性提升类** | 出 | 出(口径「训练」) | 不出现 | -| **资源与机会类** | 出 | 出(**金币除外**,见 2.4) | 不出现 | +| **资源类** | 出 | 出(**金币除外**,见 2.4) | 不出现 | **这张表的形状**:Boss 渠道是**专长的独占渠道**,也是唯一**直接**给专长的渠道;奖励节点与商店不直接给专长,但会出现通往专长的**门票**。另两类不走 Boss 渠道,只在奖励节点与商店两个并行出口出现。三条渠道的分工因此是"一块独占 + 两块并行",不是三块平分。这条形状本身要记住:它意味着专长的获取节奏与其他奇物的获取节奏**由完全不同的机制决定**——前者靠打赢,后者靠抽取与购买。 @@ -130,7 +134,7 @@ 奖励节点与商店**不直接给专长**——它们给的是一张**门票**:一个名为「专长获取」的奇物项,选中或买下之后,**立刻**开一次专长 N 选一(N 与 Boss 渠道的候选数同源)。 -**它归机制类,不归资源与机会类**:它给的不是"余量",而是"一件你以前不会的事"——只是把选择推迟到一次三选一。按 1.4 的分类判据(去掉它之后角色少了什么),它属于机制类。所以在交叉表上,机制类在非 Boss 渠道的表现是**只以门票形式出现**,不是"不出现"。 +**它归机制类,不归资源类**:它给的不是"余量",而是"一件你以前不会的事"——只是把选择推迟到一次三选一。按 1.4 的分类判据(去掉它之后角色少了什么),它属于机制类。所以在交叉表上,机制类在非 Boss 渠道的表现是**只以门票形式出现**,不是"不出现"。 **为什么非 Boss 渠道只给门票**:如果商店也能直接买到一个指定的专长,玩家就能用金币把构筑买出来,Boss 渠道的"打赢才拿到"就失去意义了。门票保留了惊喜(开出来的还是三选一,不是指定),但不让玩家用钱直接定点购买。 @@ -200,7 +204,7 @@ |---|---|---| | 金币不进商店 | 二层·谓词 | 计价物不自售——商店的计价物是 GP | | 机制类在非 Boss 渠道只给门票 | 一层·分类自身的形态 | 见 2.2——防止用钱定点买构筑 | -| 属性提升类与资源与机会类不出现在 Boss 渠道 | **不是约束** | 见 2.1——这是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖 | +| 属性提升类与资源类不出现在 Boss 渠道 | **不是约束** | 见 2.1——这是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖 | #### 2.5 在册事项 @@ -209,8 +213,8 @@ ### 3. 作用对象与范围 - **作用对象**:角色本人,以及角色参与的结算过程。奇物不改敌人、不改棋盘生成、不改关卡内容。 -- **刷新次数的例外**:它作用在三选一界面上,改的是"这一局里你能重选几次",而不是角色身上的任何数字。它是资源与机会类里唯一一条作用对象不是角色的项——留在这里是因为它满足另外三条:当局获得、当局有效、进同一份持有账本。这条例外在此显式登记,避免后续把它当成角色属性去结算。 -- **时间范围**:整局冒险。机制类与属性提升类自获得起对本局剩余所有关卡生效,跨关携带且关间不清零;资源与机会类里的金币与回复是即时兑付,拿到即消费完。 +- **刷新次数的例外**:它作用在三选一界面上,改的是"这一局里你能重选几次",而不是角色身上的任何数字。它是资源类里唯一一条作用对象不是角色的项——留在这里是因为它满足另外三条:当局获得、当局有效、进同一份持有账本。这条例外在此显式登记,避免后续把它当成角色属性去结算。 +- **时间范围**:整局冒险。机制类与属性提升类自获得起对本局剩余所有关卡生效,跨关携带且关间不清零;资源类里的金币与回复是即时兑付,拿到即消费完。 - **归属范围**:不进账号永久进度,不带到下一次冒险。 ### 4. 生命周期 @@ -223,7 +227,7 @@ | 阶段 | 说明 | |---|---| -| 候选池构建 | 冒险开局时一次建成。三个分类的候选**现同处一个令牌池**:属性提升类与资源与机会类按配额铺开,机制类按定义表的有效行铺开。 | +| 候选池构建 | 冒险开局时一次建成。三个分类的候选**现同处一个令牌池**:属性提升类与资源类按配额铺开,机制类按定义表的有效行铺开。 | | 出现 | 玩家在渠道上看到若干候选(三选一的形式),看不到整个池。 | | 选定 | 玩家选定一项后,它从池中剔除,此后任何渠道都不会再见。选到「专长获取」时,立刻再开一次专长 N 选一——这次选择走机制类的渠道语义,不占用原本的渠道。 | | 持有与兑付 | 机制类与属性提升类进入持有集后立即生效,跨关携带;机制类按同一标签的持有项数决定处于哪一档。金币与回复即时兑付,不入持有集。 | @@ -247,7 +251,7 @@ | 类型 | 内容 | |---|---| | 依赖(概念) | 角色、结算管线、行动点、地形、关卡节点地图、局内金币钱包、三选一界面 | -| 依赖(数据) | `relics.tres`(机制类定义行)、`adventure.tres`(属性提升类与资源与机会类的种类配额与值)、`shop.tres`(货架取舍) | +| 依赖(数据) | `relics.tres`(机制类定义行)、`adventure.tres`(属性提升类与资源类的种类配额与值)、`shop.tres`(货架取舍) | | 输出(对外) | 持有集、生效中的分类投影、剩余候选池、档位求值结果、可用重抽次数 | | 明确边界 | 不写账号进度、不改敌人与关卡内容、不承载具体数值 | @@ -266,7 +270,7 @@ | 机制类定义行(标识 / 显示名 / 稀有度 / 标签 / 挂点 / 效果字典) | 各字段封闭枚举,行键白名单封闭 | `game/data/tables/relics.tres` | | 专长门票(出现概率 / 配额 / 全局限量) | 整数 | **尚未入表**,见待办 | | 属性提升类种类 | 封闭三项:生命上限 / AC / 攻击,扩项走文档修订 | `game/data/schemas/adventure_table.gd` | -| 资源与机会类种类 | 行动点上限 / 金币 / 回复(**刷新次数与专长获取两项尚未入表**,见待办) | 同上 | +| 资源类种类 | 行动点上限 / 金币 / 回复(**刷新次数与专长获取两项尚未入表**,见待办) | 同上 | | 稀有度档位 | 封闭三档(普通 / 稀有 / 罕见);三档配额是结构锚,改总量须重新拍板而非调参 | 同上 | | 各分类种类 × 档位的配额与值 | 整数 | `game/data/tables/adventure.tres` | | 专长获取的全局限量 | 整数(一局内可获得的次数上限) | 同上 | @@ -279,7 +283,7 @@ 3. 一项被选定的奇物不再出现在任何后续渠道。 4. 每个流派标签至少有一项挂在排雷侧的结算触发点上(防止机制类沦为纯战斗数值)。 5. 玩家可见的文案不出现分类名与内部分组标签——只写效果,归类让玩家自己推断。 -6. 文档与代码里提到它时只有"奇物"这一个名字;需要区分时用"机制类/属性提升类/资源与机会类"描述,不得另造称呼。 +6. 文档与代码里提到它时只有"奇物"这一个名字;需要区分时用"机制类/属性提升类/资源类"描述,不得另造称呼。 7. 刷新次数不进角色加算区——它只改三选一界面的可用重抽次数。 8. 金币与回复不进持有集——它们是即时兑付,拿到即消费完。 9. 金币不出现在商店货架上——这是「计价物不自售」谓词算出来的结果,不是给金币单独立的一个分类;它确实是在分类白名单之外加的一道过滤,只是这道过滤可自动计算而非靠枚举。 @@ -293,8 +297,7 @@ 本节只点出四条由本版新立、尚未登记的判断来源: -- **资源与机会类的命名待定**:候选「资源」「补给」「余量」,取决于以哪层共性为主。定了之后要回头改本文件的类名与 registry。 -- **回复是否属资源与机会类待确认**:它是即时兑付,与金币同类;也可能独立成第四类。它**在商店内**(不是计价物,套不上「计价物不自售」)——现行 `shop.tres` 货架只有攻击 / 生命上限 / 护甲 / 行动点四项,**现状与表格不对齐,须在实施批补上**。 +- **回复归属已定(v2.5)**:留在资源类,不独立成第四类。理由是它与金币同为**即时兑付**、都给的是可花掉的余量,拆出去之后第四类只有两项、且与资源类的判据完全同源——分类的价值在于判据能一刀切得开,拆一个判据同源的类只会让读者多查一张表。 - **专长门票尚未入表**:出现概率、配额、限购次数、保底计数阈值四个参数都没有事实源;入池时同样受档位结构锚约束(改总量须重裁而非调参)。 - **专长总量与档位阈值的匹配——延后复裁(用户 2026-10-05 定"先不调整")**:终局 Boss 不给已定,一局确定性专长次数=终局前 Boss 的个数。三关结构下是两次,加上门票最多三次,而档位阈值是同标签 ≥2 档一 / ≥4 档二——**档二(完全体)在三关结构下几乎不可达**。用户决定不动,理由是后续会有第四关,且届时可能另做获取侧的调整。**复裁触发条件:第四关内容批落地后实测,若配合仍太少再调**。登记于此防止它被忘掉。 - **charge 标签件数不足(数据缺陷,独立登记)**:档二要求同标签 ≥4 件,而 `relics.tres` 里 charge 标签**只有 3 件**——即使获取次数无限,charge 流派也永远达不到档二。这与渠道结构无关,是数据层缺陷,随上一条一并延后,但不要被上一条盖掉。 @@ -306,8 +309,9 @@ | v1.0 | 2026-10-05 | 以「特性」为名首次为本概念立定义文档。此前它按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),现收敛为一个对象下的分类;性质定为「角色自身得到提升」而非「获得物品」。 | | v1.1 | 2026-10-05 | 分类重构:两类由「规则改写型 / 属性加成型」改为「属性提升 / 专长」。 | | v1.2 | 2026-10-05 | 专长渠道落定:关底 Boss 击败后兑付,不新增节点类型;罕见旁路明确为"普通奖励里的专长 N 选一"。 | -| **v2.0** | 2026-10-05 | **顶层改名为「奖励」并重构为两根轴**。改名动因:筐里既装"角色自身的变化"也装金币这类一次性兑付物,用"自身提升 vs 持有物"已切不开,边界判据改由生命周期承担——**当局清零的是奖励,跨局带走的是魔法道具**。分类由两类改为**三个枚举**:机制类(专长)/ 属性提升类(生命·AC·攻击)/ 资源与机会类(行动点上限·刷新次数·金币·回复,命名待定)。新增第 2 节分类 × 渠道交叉开关表,明确两根轴互不决定;金币与回复不再被当作"该移出去的脏东西",而是安置在资源与机会类里,同时把它们的即时兑付性质显式登记为类内异质性。 | -| v2.1 | 2026-10-05 | **交叉表收口(用户拍板)**:Boss 渠道**只出专长**,属性提升类与资源与机会类在此均不出现——三条渠道的形状定为"一块独占 + 两块并行",专长靠打赢、其余靠抽取与购买。Boss 兑付明确为**终局前**的 Boss,终局 Boss 不给(无后续关卡可消费)。新增 2.4 节**「计价物不自售」规则**:金币不进商店既不拆分类也不开特例,而是写成两轴交叉处的一条约束——商店的计价物是金币,故金币不进商店;按"能不能进商店"反推分类等于用渠道轴去切分类轴,两根轴会缠回去。 | +| **v2.0** | 2026-10-05 | **顶层改名为「奖励」并重构为两根轴**。改名动因:筐里既装"角色自身的变化"也装金币这类一次性兑付物,用"自身提升 vs 持有物"已切不开,边界判据改由生命周期承担——**当局清零的是奖励,跨局带走的是魔法道具**。分类由两类改为**三个枚举**:机制类(专长)/ 属性提升类(生命·AC·攻击)/ 资源类(行动点上限·刷新次数·金币·回复,命名待定)。新增第 2 节分类 × 渠道交叉开关表,明确两根轴互不决定;金币与回复不再被当作"该移出去的脏东西",而是安置在资源类里,同时把它们的即时兑付性质显式登记为类内异质性。 | +| v2.1 | 2026-10-05 | **交叉表收口(用户拍板)**:Boss 渠道**只出专长**,属性提升类与资源类在此均不出现——三条渠道的形状定为"一块独占 + 两块并行",专长靠打赢、其余靠抽取与购买。Boss 兑付明确为**终局前**的 Boss,终局 Boss 不给(无后续关卡可消费)。新增 2.4 节**「计价物不自售」规则**:金币不进商店既不拆分类也不开特例,而是写成两轴交叉处的一条约束——商店的计价物是金币,故金币不进商店;按"能不能进商店"反推分类等于用渠道轴去切分类轴,两根轴会缠回去。 | | v2.2 | 2026-10-05 | **门票形态 + 约束分层 + 默认原则**。① 用户明确:奖励节点与商店不直接给专长,而是给一个**「专长获取」道具**,拿到后开专长三选一——交叉表机制类在两渠道由"不出现"改为"**门票形式**";门票归机制类(给的是一件以前不会的事,只是把选择推迟),理由是防止用钱定点买构筑。② 用户质疑「计价物不自售」本质是特判——**承认成立**:它确实是在分类白名单之外加的一道过滤,与死特判的区别在于把"枚举例外"变成"**可计算谓词**"(新渠道/新奖励自动判定)。2.4 改写为**三层约束**(分类白名单 / 可计算谓词 / 显式例外清单),并给出判断标准:结构性原因可写成谓词,设计性原因只能进清单且每条须写理由;三个方案(单独分类 / 谓词 / 死特判)的代价并列摆出,不藏折中。③ 用户定**默认原则**:除已登记的特殊规则外,分类内的东西都要在池子里——据此**回复应在商店内**,现行 shop.tres 货架缺它是"现状与表格不对齐",须在实施批补上。 | | v2.3 | 2026-10-05 | **门票机制细化 + 默认原则表述修正**。① 门票**拿到即开、不可囤积**(用户定)——不进持有集,防止玩家把关键决策无限推迟,也防持有物语义从后门回来。② 门票的"罕见"**只在概率不在价格**,一局限购一次,并加**计步保底**:连续 5 次三选一展示未出现则第 6 次必出;计数跨奖励节点与商店共享、**刷新后的重新展示计入**(用户明定含刷新),限购用满后保底不再触发。③ **修正 v2.2 的误读**:把"分类在某渠道不出现"当成需要理由的缺格是错的——渠道出哪些分类是渠道轴的定位(Boss 只出专长),不是例外;默认原则只管**分类内部**的成员齐不齐。④ 专长总量与档位阈值的匹配按用户决定**延后**(待第四关内容批后实测复裁),另单独登记 charge 标签仅 3 件、永远达不到档二的数据缺陷。 | +| **v2.5** | 2026-10-05 | **第三类定名「资源类」**(用户拍板,父节点定为「奇物」后解锁)。定名依据:行动点上限 / 刷新次数 / 金币 / 回复都是可以调动、可以花掉的余量。「资源」偏泛(能力资源、财富资源都叫资源),因此在 1.5 写死判据句——**给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升**,这一句是把泛用词收回本类定义的唯一凭据。**回复归属同时定案:留在资源类,不独立成第四类**——它与金币同为即时兑付、判据同源,拆出去第四类只剩两项且与本类判据重合。附带修复:1.5 段末与「### 2. 渠道轴」标题粘连(缺换行)。 | | **v2.4** | 2026-10-05 | **顶层由「奖励」改名为「奇物」(Wondrous Item)**。用户否决了「奖励」「收益」与全部自造词(进益/造化/机缘/遇获),要求回到 DND/西幻既有名词。定名依据:DMG 魔法物品九分类中的 Wondrous Item,官方中文译名即「奇物」,是专装不好归类但有奇效之物的兜底杂类——正好对应本概念下三个互不相干的分类。此前考虑过的 Treasure(宝物)因偏财物、装不下专长而落选;roguelike 品类惯例 Relic 因用户否决遗物落选。**代码词族定为 `curio_*`、`ADVENTURE_CURIO`**(`reward_*` 已被 `reward_pick` / `reward_node` / `reward_preview` 占用,不能对齐)。 | diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 723c8346..3f21506d 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -579,16 +579,16 @@ entities: owner: design/gdd/systems/冒险循环/奇物.md attributes: definition: 一次冒险之内通过各渠道给予玩家的增益总称——奖励节点给的、商店买的、打赢关底 Boss 给的,都是奇物。装的是"这一局你捞到了什么",不管从哪个渠道来 - channel_constraint_layers: 渠道约束分三层——一层 分类白名单(分类轴决定渠道);二层 可计算谓词(渠道与奇物的结构性关系,如「计价物不自售」:X 是渠道 C 的计价物 → X 不进 C;新渠道/新奇物自动判定,不用改表);三层 显式例外清单(人为设计选择,只能逐条加,每条须写理由)。要害不是有没有例外,而是例外能不能被算出来——结构性原因写成谓词,设计性原因进清单。在册约束两条:①金币不进商店(二层·谓词)②机制类在非 Boss 渠道只给门票(一层·分类形态)。**注意**:属性提升类/资源与机会类不出现在 Boss 渠道**不是约束**——那是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖。**「计价物不自售」形式上确是在白名单外加的一道过滤(用户质疑成立),与死特判的区别在于把枚举例外变成计算谓词** + channel_constraint_layers: 渠道约束分三层——一层 分类白名单(分类轴决定渠道);二层 可计算谓词(渠道与奇物的结构性关系,如「计价物不自售」:X 是渠道 C 的计价物 → X 不进 C;新渠道/新奇物自动判定,不用改表);三层 显式例外清单(人为设计选择,只能逐条加,每条须写理由)。要害不是有没有例外,而是例外能不能被算出来——结构性原因写成谓词,设计性原因进清单。在册约束两条:①金币不进商店(二层·谓词)②机制类在非 Boss 渠道只给门票(一层·分类形态)。**注意**:属性提升类/资源类不出现在 Boss 渠道**不是约束**——那是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖。**「计价物不自售」形式上确是在白名单外加的一道过滤(用户质疑成立),与死特判的区别在于把枚举例外变成计算谓词** axes: 两根互不决定的轴——**分类轴**(给的是什么)与**渠道轴**(从哪来)。一个奇物属于哪个分类不决定它从哪个渠道来;交叉关系由 [奇物](design/gdd/systems/冒险循环/奇物.md) 第 2 节开关表定死 - categories: 封闭三类 {机制类, 属性提升类, 资源与机会类}(v2.0 起;v1.1 曾用两类、v1.0 曾用 {rule, stat},均已作废)。机制类(专长 Feat)——在结算管线某个挂点上给自己加一条规则,同标签持有项数达阈值时质变,事实源 relics.tres;属性提升类(ASI)——抬高生命上限 / AC / 攻击三轴基础值,进冒险加算区,事实源 adventure.tres;资源与机会类(命名待定)——给"可用的量",不抬高战斗属性也不改规则:行动点上限 / 刷新次数 / 金币 / 回复,不进加算区、多数不进持有集,事实源 adventure.tres + categories: 封闭三类 {机制类, 属性提升类, 资源类}(v2.0 起;v1.1 曾用两类、v1.0 曾用 {rule, stat},均已作废)。机制类(专长 Feat)——在结算管线某个挂点上给自己加一条规则,同标签持有项数达阈值时质变,事实源 relics.tres;属性提升类(ASI)——抬高生命上限 / AC / 攻击三轴基础值,进冒险加算区,事实源 adventure.tres;资源类(命名待定)——给"可用的量",不抬高战斗属性也不改规则:行动点上限 / 刷新次数 / 金币 / 回复,不进加算区、多数不进持有集,事实源 adventure.tres scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,机制类与属性提升类跨关携带、关间不清零,金币与回复即时兑付;归属范围 = 不进账号永久进度,不带到下一次冒险 lifecycle: 候选池构建(冒险开局一次)→ 在渠道上出现(三选一形式)→ 选定(自池中剔除不再复现;选到「专长获取」时立刻再开一次专长 N 选一)→ 持有生效或即时兑付 → 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 - acquisition: 三条渠道的**目标分工(交叉开关,v2.2 收口)**——机制类:主渠道=**终局前** Boss 击败后(**唯一直接给的渠道**,不新增节点类型、挂 Boss 节点兑付面;终局 Boss 不给——无后续关卡可消费),奖励节点与商店**只给「专长获取」门票**——**拿到即开、不可囤积**,不进持有集(选中/买下同一时刻开专长三选一;可囤积会让玩家无限推迟关键决策,且把持有物语义从后门放回)。门票归机制类(给的是一件以前不会的事,只是把选择推迟)。罕见**只在概率不在价格**,一局限购一次,**计步保底**:连续 5 次三选一展示未出现→第 6 次必出(计数=展示次数、刷新重展计入、奖励节点与商店共享、触发清零、限购用满后不再触发);属性提升类:奖励节点 + 商店(口径「训练」);资源与机会类:奖励节点 + 商店(**金币除外、回复在内**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**默认原则**:除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里——任何不出现都须登记理由**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 + acquisition: 三条渠道的**目标分工(交叉开关,v2.2 收口)**——机制类:主渠道=**终局前** Boss 击败后(**唯一直接给的渠道**,不新增节点类型、挂 Boss 节点兑付面;终局 Boss 不给——无后续关卡可消费),奖励节点与商店**只给「专长获取」门票**——**拿到即开、不可囤积**,不进持有集(选中/买下同一时刻开专长三选一;可囤积会让玩家无限推迟关键决策,且把持有物语义从后门放回)。门票归机制类(给的是一件以前不会的事,只是把选择推迟)。罕见**只在概率不在价格**,一局限购一次,**计步保底**:连续 5 次三选一展示未出现→第 6 次必出(计数=展示次数、刷新重展计入、奖励节点与商店共享、触发清零、限购用满后不再触发);属性提升类:奖励节点 + 商店(口径「训练」);资源类:奖励节点 + 商店(**金币除外、回复在内**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**默认原则**:除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里——任何不出现都须登记理由**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 boundary: 判据走生命周期——**一次冒险内获得、冒险收束即清零的是奇物;跨冒险跟着你走的是魔法道具**。奇物永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 - data_sources: relics.tres(机制类定义行)/ adventure.tres(属性提升类与资源与机会类的种类配额与值)/ shop.tres(货架取舍) - open_questions: ①资源与机会类的命名待定(候选 资源 / 补给 / 余量);②类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同;③回复是否属资源与机会类待确认(也可能独立成第四类)——它**应在商店内**(不是计价物,套不上计价物不自售),现行 shop.tres 货架缺它是现状与表格不对齐,须实施批补上;④专长门票尚未入表(出现概率/配额/全局限量无事实源);⑤确定性渠道一局两次专长 vs 档位阈值(同标签 ≥2 档一 / ≥4 档二)——**档二在三关结构下几乎不可达**,用户定延后复裁(触发=第四关内容批后实测);⑥charge 标签仅 3 件、永远达不到档二(数据层缺陷,独立登记);⑦顶层命名待定(奇物/收益均不妥,拟造词)——**代码 reward 词族已被 reward_pick/reward_node/reward_preview 占用,feature_* → reward_* 对齐待办不能照做** - naming_note: 2026-10-05 命名统一 + 两次重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),v1.0 统一为「特性」,v2.4 改名为「奇物」(v2.0 曾名「奇物」)(因筐里也装金币这类一次性兑付物,"自身提升 vs 持有物"已切不开,判据改由生命周期承担)。代码侧 `feature_*` 词族尚未随之换到 `curio_*`,属临时态,登记于 06-待办清单 + data_sources: relics.tres(机制类定义行)/ adventure.tres(属性提升类与资源类的种类配额与值)/ shop.tres(货架取舍) + open_questions: ①类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同,靠这条描述把"资源"从泛用词收回到本类定义内;②专长门票尚未入表(出现概率/配额/限购次数/保底阈值四参数均无事实源);③确定性渠道一局两次专长 vs 档位阈值(同标签 ≥2 档一 / ≥4 档二)——**档二在三关结构下几乎不可达**,用户定延后复裁(触发=第四关内容批后实测);④charge 标签仅 3 件、永远达不到档二(数据层缺陷,独立登记,勿被上条盖掉);⑤断点存档键 5 个(bonus_deck / bonus_taken / bonus_pending / bonus_result / bonus_aux_carry)是否随存档版本迁移换名待裁 + naming_note: 2026-10-05 命名统一 + 两次重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),v1.0 统一为「特性」,v2.0 改名为「奖励」,v2.4 定名为「奇物」(因筐里也装金币这类一次性兑付物,"自身提升 vs 持有物"已切不开,判据改由生命周期承担)。v2.5 第三类定名为「资源类」(用户拍板)。**代码侧三套词族均尚未对齐**:`feature_*` → `curio_*`(103 处)、`relic_*` → 机制类(162 处)、运行层 `bonus_*`(160 处),属临时态,登记于 06-待办清单,须在可跑冒烟批次收口 referenced_by: [冒险结构, 关卡节点地图, 战斗结算, 行动经济, 地形变异, HUD框架, 魔法道具, 元进度, 数据配置] - name: adventure_table diff --git a/game/data/schemas/adventure_table.gd b/game/data/schemas/adventure_table.gd index c9079ad9..e06c5784 100644 --- a/game/data/schemas/adventure_table.gd +++ b/game/data/schemas/adventure_table.gd @@ -13,13 +13,13 @@ class_name AdventureTable extends Resource -## 概念指路:本表的属性提升类与资源与机会类,与 relics.tres 的机制类,同属一个对象—— +## 概念指路:本表的属性提升类与资源类,与 relics.tres 的机制类,同属一个对象—— ## 「奇物」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奇物.md。 -## 它们是它的分类轴上的枚举(机制类 / 属性提升类 / 资源与机会类),不是三套系统; -## 本表承载属性提升类与资源与机会类的种类配额与件值。 +## 它们是它的分类轴上的枚举(机制类 / 属性提升类 / 资源类),不是三套系统; +## 本表承载属性提升类与资源类的种类配额与件值。 ## (2026-10-05 命名统一 + v2.0 改名:旧称「数值件」→ 属性提升;顶层「特性」→「奖励」→「奇物」。 ## 常量与字段随之前缀 feature_*,**尚未**随顶层改名换到 reward_*——见 06-待办清单。 -## 分类轴三个枚举:属性提升类〔生命上限 / AC / 攻击〕;资源与机会类〔行动点上限 / +## 分类轴三个枚举:属性提升类〔生命上限 / AC / 攻击〕;资源类〔行动点上限 / ## 刷新次数 / 金币 / 回复,命名待定〕——本表两类混编;刷新次数与专长获取两项尚未入表。 ## 类内异质性:金币与回复是即时兑付,不进持有集、不持续生效。) ## 三选一提升池 kind 词表(封闭——断点附随件与牌库剔除态依赖它;扩件走本表+registry 修订)。 diff --git a/game/data/schemas/relic_table.gd b/game/data/schemas/relic_table.gd index 22a16413..879985ab 100644 --- a/game/data/schemas/relic_table.gd +++ b/game/data/schemas/relic_table.gd @@ -2,9 +2,9 @@ # Validation Question: 七核心流派各 ≥3 件入局内随机渠道后,标签+档位激活引擎能否机械判「成型」、 # 专长带能否挂进令牌池稀有/罕见档随机投放(P0——迭代 12 双层 BD 实施批 T1) # Date: 2026-10-04(双层 BD 实施批 T1——任务书五裁定稿;设计权威 双层BD体系-整合定稿-2026-10-03 v3) -# 概念指路:本表的机制类(专长),与 adventure.tres 的属性提升类、资源与机会类,同属一个对象—— +# 概念指路:本表的机制类(专长),与 adventure.tres 的属性提升类、资源类,同属一个对象—— # 「奇物」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奇物.md。 -# 它们是它分类轴上的枚举(机制类 / 属性提升类 / 资源与机会类),不是三套系统;本表承载「机制类」(专长 Feat)的逐项定义。 +# 它们是它分类轴上的枚举(机制类 / 属性提升类 / 资源类),不是三套系统;本表承载「机制类」(专长 Feat)的逐项定义。 # (2026-10-05 命名统一 + 分类重构:旧称「流派件」→「规则改写型特性」→ 现定名「机制类(专长)」; # 表名与 relic_id 沿用历史命名,与统一词族对齐归后续批次——见 06-待办清单「命名统一」条目。 # 目标渠道:专长走关底 Boss 击败后专属三选一(不新增节点类型),见奇物文档 2.1 节。) From 3c5515aec4d3ab2bd3c6d99f179f22d4db854b6e Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 06:02:21 +0800 Subject: [PATCH 09/15] =?UTF-8?q?=E5=A5=87=E7=89=A9=20v2.6=EF=BC=9A?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=A0=B8=E5=BF=83=E5=BE=AA=E7=8E=AF=E5=9B=BE?= =?UTF-8?q?=E2=80=94=E2=80=94=E5=A5=87=E7=89=A9=E4=B8=8D=E6=98=AF=E6=89=93?= =?UTF-8?q?=E4=B8=80=E5=9C=BA=E6=88=98=E6=96=97=E7=BB=99=E4=B8=80=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户纠错:原图把「关内 排雷推理 → 战斗结算 → 通关 → 得到一份奇物」 画成一条链,读起来就是每场战斗通关都给一份。 **错在哪**:把关内普通战斗的"打完"与关底 Boss 的"击败"混为一谈。 按 [冒险结构](冒险结构.md) 的定义,**通关一关 = 该关关底 Boss 被击杀** ——所以"击败 Boss"与"通过这一关"是**同一个时刻,不是一条链上的两步**。 用户原话点得准:"击败 boss 之后通过关卡,这跟打败 boss 是一个渠道。" 改法(五处,链条口径与渠道名一并统一): 1. **图改分支结构**:普通战斗节点 → 打完不给、往下走;奖励节点 / 商店 各自兑付;关底 Boss 击败 ═ 一次专长三选一 + 通关回血 → 进下一关 2. **显式口径"一关只兑付一次,不是一场战斗给一份"**——写在图下方 3. **2.1 节渠道名**:「终局前 Boss 击败后」→「关底 Boss 击败(即通过这一关)」, 并写明触发点就是关卡推进本身那一刻,不是"战斗结算之后再奖一次" 4. **文首引言加"兑付频率"条**(标为三条渠道的共同前提,先看那条); 交叉表渠道名、registry 的 acquisition 字段同步 5. 06-待办清单新增"兑付频率(用户纠错后写死)"条目,注明勿再改回链式 连带修掉一处 v2.4 遗留污染:2.1 节节点类型封闭枚举五种里的"奖励" 曾被批量替换误伤成"奇物"(节点类型里没有奇物这一类),已复原为 「战斗 / Boss / 奖励 / 恢复 / 商店」。 术语微调:「终局 Boss 不给」→「末关的 Boss 击败后不给」——前者读起来 像在讲一个叫"终局 Boss"的实体,实际是"最后一关的那个 Boss"。 数据层零变更;未 merge 回 master(本会话零测试)。 --- design/gdd/06-待办清单.md | 5 +++-- design/gdd/systems/冒险循环/奇物.md | 31 +++++++++++++++++++++-------- design/registry/entities.yaml | 2 +- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index 62c359f4..183c5193 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -31,13 +31,14 @@ **用户定案(2026-10-05,v2.1 收口)**:分类 × 渠道交叉开关表—— -| 分类 \ 渠道 | 奖励节点 | 商店 | 终局前 Boss 击败后 | +| 分类 \ 渠道 | 奖励节点 | 商店 | 关底 Boss 击败=通过这一关(末关不给) | |---|---|---|---| | 机制类(专长) | **门票形式** | **门票形式** | **直接给**(唯一直接渠道) | | 属性提升类 | 出 | 出(训练) | 不出现 | | 资源类 | 出 | 出(金币除外;**回复在内**) | 不出现 | -**Boss 渠道是专长的独占渠道,也是唯一直接给专长的渠道**——另两类都不走这里;奖励节点与商店不直接给专长,而是给一个**「专长获取」道具(门票)**,拿到后开专长三选一。形状是"一块独占 + 两块并行",不是三块平分。**终局 Boss 不给**(打赢时冒险已结束,无后续关卡可消费),兑付只发生在终局之前的 Boss。用户原话:"我在获取特性的时候,可以有些比较罕见的道具,让我立马得到一个专长,就给它一点不确定性,一点随机性"。**确定性优先**:专长不因没 roll 到就构筑不起来。用户同时明确:先定大意念再分小类,渠道与分类是两根互不决定的轴。 +**Boss 渠道是专长的独占渠道,也是唯一直接给专长的渠道**——另两类都不走这里;奖励节点与商店不直接给专长,而是给一个**「专长获取」道具(门票)**,拿到后开专长三选一。形状是"一块独占 + 两块并行",不是三块平分。**末关的 Boss 击败后不给**(打赢时冒险已结束,无后续关卡可消费),兑付只发生在还有下一关可去的那些关底 Boss 身上。用户原话:"我在获取特性的时候,可以有些比较罕见的道具,让我立马得到一个专长,就给它一点不确定性,一点随机性"。**确定性优先**:专长不因没 roll 到就构筑不起来。用户同时明确:先定大意念再分小类,渠道与分类是两根互不决定的轴。 +**兑付频率(2026-10-05 用户纠错后写死)**:这条渠道的触发点是**关底 Boss 被击败**,而按 [冒险结构](systems/冒险循环/冒险结构.md) 的定义,**打掉关底 Boss 恰好就等于"通过这一关"**——两者是同一个时刻,不是一条链上的两步。**奇物不是打一场战斗给一份**:关内普通战斗节点打完了什么也不给,一关之内奇物只兑付一次。(此前《奇物》文档的"核心循环位置"图把"战斗结算 → 通关 → 得到一份奇物"画成一条链,读起来像每场战斗通关都给一份——已于 v2.6 修正为分支图并加此口径,勿再改回链式。) **门票归机制类,不归资源类**:它给的不是"余量"而是"一件你以前不会的事",只是把选择推迟到一次三选一。**为什么只给门票**:若商店能直接买到指定专长,玩家就能用金币把构筑买出来,Boss 渠道"打赢才拿到"就失去意义;门票保留惊喜(开出的是三选一不是指定),但不让钱定点购买。 diff --git a/design/gdd/systems/冒险循环/奇物.md b/design/gdd/systems/冒险循环/奇物.md index 005b77ce..2cd0c468 100644 --- a/design/gdd/systems/冒险循环/奇物.md +++ b/design/gdd/systems/冒险循环/奇物.md @@ -5,10 +5,12 @@ > 它是一个概念,不是一套东西。下面有**两根互不相干的轴**: > > - **分类轴**回答"给的是什么"——三个枚举:机制类 / 属性提升类 / 资源类; -> - **渠道轴**回答"从哪来"——奖励节点 / 商店 / 关底 Boss 击败后。 +> - **渠道轴**回答"从哪来"——奖励节点 / 商店 / 关底 Boss 击败(即通过这一关)。 > > 一个奇物属于哪个分类,不决定它从哪个渠道来;反过来也一样。两者的交叉由第 2 节那张开关表定死。 > +> **兑付频率(先看这条,它是三条渠道的共同前提)**:奇物**不是打一场战斗给一份**。关内的普通战斗节点打完了什么也不给;一关之内奇物**只兑付一次**,触发点是**关底 Boss 被击败**——而按 [冒险结构](冒险结构.md) 的定义,打掉关底 Boss 恰好就等于"通过这一关",这两件事是同一个时刻,不是一条链上的两步。 +> > 状态:**已实现**(2026-10-04 双层 BD 实施批落地)。本文件是奇物的唯一定义文档。 > > 数值纪律:本文件只写概念、取值域与指路;每件给多少、效果是什么一律不进正文,事实源是 `game/data/tables/relics.tres` 与 `game/data/tables/adventure.tres`。 @@ -35,11 +37,20 @@ ## 在核心循环中的位置 ``` -【关内】排雷推理 → 战斗结算 → 通关 ──┐ - ├─→ 得到一份奇物 ─→ 后续关卡带着它继续 - 奖励节点・商店・Boss 击败后 ┘ +一次冒险 = 若干关卡串联,每关 = 一条节点链 + 一个关底 Boss + + 关内普通战斗节点 ──▶ 打完不给奇物,继续往下走 + │ + ├─ 奖励节点 ──▶ 一次三选一(属性提升类 / 资源类,罕见门票) + ├─ 商店 ──▶ 花钱买(属性提升类 / 资源类,罕见门票) + │ + 关底 Boss 击败 ═══╗ ← 打掉关底 Boss 就是「通过这一关」,同一件事 + ╰──────────╬──▶ 一次专长三选一(机制类) + ╰──▶ 通关回血 ──▶ 进下一关,带着它继续 ``` +**关键:一关只兑付一次,不是一场战斗给一份。** 触发点是**关底 Boss 被击败**,而这恰好就等于"通过这一关"([冒险结构](冒险结构.md) 定义:通关一关 = 该关关底 Boss 被击杀)——**这两件事是同一个时刻,不是一条链上的两步**。关内普通战斗节点打完了什么也不给,直接往下走。 + 奇物处在「一次冒险」这一层:它不是一场战斗里的临时状态,也不跨冒险留存。上游是三条渠道,下游是之后所有关卡的排雷与结算——拿到了,下一关就开始生效。 ## 核心规则 @@ -107,7 +118,7 @@ 三个渠道各只取走分类的一部分。这张表是奇物概念的第二个维度——它和分类轴互不决定,改其中一根不必动另一根。 -| 分类 \ 渠道 | 奖励节点 | 商店 | 终局前 Boss 击败后(见 2.1) | +| 分类 \ 渠道 | 奖励节点 | 商店 | 关底 Boss 击败=通过这一关(见 2.1) | |---|---|---|---| | **机制类**(专长) | 门票形式(见 2.2) | 门票形式(见 2.2) | **直接给**(唯一的直接渠道) | | **属性提升类** | 出 | 出(口径「训练」) | 不出现 | @@ -122,13 +133,15 @@ 两条的管辖范围不同:前者决定"这张表的格子填不填",后者决定"填了的格子里装不装得全"。 -#### 2.1 机制类的主渠道:终局前 Boss 击败后 +#### 2.1 机制类的主渠道:关底 Boss 击败(即通过这一关) 专长的专属渠道,时机确定——打赢就有,不需要看脸。构筑的节奏由此可预期:玩家能规划"第几关拿到第一个专长"。品类原型是杀戮尖塔(每层 Boss 后必给遗物)与哈迪斯(Boss 后必给恩赐)——打赢了一定拿到东西,是这类游戏的通例。 -**终局 Boss 不给**:兑付只发生在**终局之前的 Boss** 身上——打赢最终 Boss 时冒险已经结束,没有后续关卡可消费,给了也无处生效。三关结构下,一局的确定性专长兑付次数由此确定(每个终局前 Boss 一次)。 +**这个渠道的触发点就是「关底 Boss 被击败」**——而按 [冒险结构](冒险结构.md) 的定义,打掉关底 Boss 恰好就等于"通过这一关"。所以这条渠道的全名是**关底 Boss 击败(即通过这一关)**:它不是"战斗结算之后再来一次奖励"的独立步骤,而**就是关卡推进本身那一刻**。关内的普通战斗节点打完了什么也不给;一关之内奇物只兑付这一次。 -**不新增节点类型**:专长挂在 Boss 节点的兑付面上(击败后追加一次专长三选一),[关卡节点地图](关卡节点地图.md) 的节点类型仍是封闭枚举五种(战斗 / Boss / 奇物 / 恢复 / 商店),词表零扩类。此前"要不要为专长新设一类节点"的悬案由此收口。 +**终局那关的 Boss 击败后不给**:兑付只发生在**还有下一关可去**的那些关底 Boss 身上——打赢最终 Boss 时冒险已经结束,没有后续关卡可消费,给了也无处生效。三关结构下,一局的确定性专长兑付次数由此确定(每个终局前 Boss 一次)。 + +**不新增节点类型**:专长挂在 Boss 节点的兑付面上(击败后追加一次专长三选一),[关卡节点地图](关卡节点地图.md) 的节点类型仍是封闭枚举五种(战斗 / Boss / 奖励 / 恢复 / 商店),词表零扩类。此前"要不要为专长新设一类节点"的悬案由此收口。 #### 2.2 专长门票:非 Boss 渠道怎么给专长 @@ -313,5 +326,7 @@ | v2.1 | 2026-10-05 | **交叉表收口(用户拍板)**:Boss 渠道**只出专长**,属性提升类与资源类在此均不出现——三条渠道的形状定为"一块独占 + 两块并行",专长靠打赢、其余靠抽取与购买。Boss 兑付明确为**终局前**的 Boss,终局 Boss 不给(无后续关卡可消费)。新增 2.4 节**「计价物不自售」规则**:金币不进商店既不拆分类也不开特例,而是写成两轴交叉处的一条约束——商店的计价物是金币,故金币不进商店;按"能不能进商店"反推分类等于用渠道轴去切分类轴,两根轴会缠回去。 | | v2.2 | 2026-10-05 | **门票形态 + 约束分层 + 默认原则**。① 用户明确:奖励节点与商店不直接给专长,而是给一个**「专长获取」道具**,拿到后开专长三选一——交叉表机制类在两渠道由"不出现"改为"**门票形式**";门票归机制类(给的是一件以前不会的事,只是把选择推迟),理由是防止用钱定点买构筑。② 用户质疑「计价物不自售」本质是特判——**承认成立**:它确实是在分类白名单之外加的一道过滤,与死特判的区别在于把"枚举例外"变成"**可计算谓词**"(新渠道/新奖励自动判定)。2.4 改写为**三层约束**(分类白名单 / 可计算谓词 / 显式例外清单),并给出判断标准:结构性原因可写成谓词,设计性原因只能进清单且每条须写理由;三个方案(单独分类 / 谓词 / 死特判)的代价并列摆出,不藏折中。③ 用户定**默认原则**:除已登记的特殊规则外,分类内的东西都要在池子里——据此**回复应在商店内**,现行 shop.tres 货架缺它是"现状与表格不对齐",须在实施批补上。 | | v2.3 | 2026-10-05 | **门票机制细化 + 默认原则表述修正**。① 门票**拿到即开、不可囤积**(用户定)——不进持有集,防止玩家把关键决策无限推迟,也防持有物语义从后门回来。② 门票的"罕见"**只在概率不在价格**,一局限购一次,并加**计步保底**:连续 5 次三选一展示未出现则第 6 次必出;计数跨奖励节点与商店共享、**刷新后的重新展示计入**(用户明定含刷新),限购用满后保底不再触发。③ **修正 v2.2 的误读**:把"分类在某渠道不出现"当成需要理由的缺格是错的——渠道出哪些分类是渠道轴的定位(Boss 只出专长),不是例外;默认原则只管**分类内部**的成员齐不齐。④ 专长总量与档位阈值的匹配按用户决定**延后**(待第四关内容批后实测复裁),另单独登记 charge 标签仅 3 件、永远达不到档二的数据缺陷。 | +| **v2.6** | 2026-10-05 | **修正核心循环位置图:奇物不是打一场战斗给一份**(用户纠错)。原图把"关内 排雷推理 → 战斗结算 → 通关 → 得到一份奇物"画成一条链,读起来就是每场战斗通关都给一份——**错在把关内普通战斗的通关与关底 Boss 的通关混为一谈**。按 [冒险结构](冒险结构.md) 的定义,**通关一关 = 该关关底 Boss 被击杀**,所以"击败 Boss"与"通过这一关"是同一个时刻、不是一条链上的两步。改法:① 图改为分支结构(普通战斗节点→不给、往下走;关底 Boss 击败→专长三选一+通关回血);② **一关只兑付一次**写成显式口径;③ 2.1 节渠道名由"终局前 Boss 击败后"改为"关底 Boss 击败(即通过这一关)",并写明触发点就是关卡推进本身那一刻;④ 文首引言加"兑付频率"条,交叉表渠道名与 registry 同步;⑤ 连带修掉一处污染——节点类型封闭枚举五种里的"奖励"曾被 v2.4 批量替换误伤成"奇物"(节点类型里没有奇物这一类),已复原。 | + | **v2.5** | 2026-10-05 | **第三类定名「资源类」**(用户拍板,父节点定为「奇物」后解锁)。定名依据:行动点上限 / 刷新次数 / 金币 / 回复都是可以调动、可以花掉的余量。「资源」偏泛(能力资源、财富资源都叫资源),因此在 1.5 写死判据句——**给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升**,这一句是把泛用词收回本类定义的唯一凭据。**回复归属同时定案:留在资源类,不独立成第四类**——它与金币同为即时兑付、判据同源,拆出去第四类只剩两项且与本类判据重合。附带修复:1.5 段末与「### 2. 渠道轴」标题粘连(缺换行)。 | | **v2.4** | 2026-10-05 | **顶层由「奖励」改名为「奇物」(Wondrous Item)**。用户否决了「奖励」「收益」与全部自造词(进益/造化/机缘/遇获),要求回到 DND/西幻既有名词。定名依据:DMG 魔法物品九分类中的 Wondrous Item,官方中文译名即「奇物」,是专装不好归类但有奇效之物的兜底杂类——正好对应本概念下三个互不相干的分类。此前考虑过的 Treasure(宝物)因偏财物、装不下专长而落选;roguelike 品类惯例 Relic 因用户否决遗物落选。**代码词族定为 `curio_*`、`ADVENTURE_CURIO`**(`reward_*` 已被 `reward_pick` / `reward_node` / `reward_preview` 占用,不能对齐)。 | diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 3f21506d..523aa068 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -584,7 +584,7 @@ entities: categories: 封闭三类 {机制类, 属性提升类, 资源类}(v2.0 起;v1.1 曾用两类、v1.0 曾用 {rule, stat},均已作废)。机制类(专长 Feat)——在结算管线某个挂点上给自己加一条规则,同标签持有项数达阈值时质变,事实源 relics.tres;属性提升类(ASI)——抬高生命上限 / AC / 攻击三轴基础值,进冒险加算区,事实源 adventure.tres;资源类(命名待定)——给"可用的量",不抬高战斗属性也不改规则:行动点上限 / 刷新次数 / 金币 / 回复,不进加算区、多数不进持有集,事实源 adventure.tres scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,机制类与属性提升类跨关携带、关间不清零,金币与回复即时兑付;归属范围 = 不进账号永久进度,不带到下一次冒险 lifecycle: 候选池构建(冒险开局一次)→ 在渠道上出现(三选一形式)→ 选定(自池中剔除不再复现;选到「专长获取」时立刻再开一次专长 N 选一)→ 持有生效或即时兑付 → 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 - acquisition: 三条渠道的**目标分工(交叉开关,v2.2 收口)**——机制类:主渠道=**终局前** Boss 击败后(**唯一直接给的渠道**,不新增节点类型、挂 Boss 节点兑付面;终局 Boss 不给——无后续关卡可消费),奖励节点与商店**只给「专长获取」门票**——**拿到即开、不可囤积**,不进持有集(选中/买下同一时刻开专长三选一;可囤积会让玩家无限推迟关键决策,且把持有物语义从后门放回)。门票归机制类(给的是一件以前不会的事,只是把选择推迟)。罕见**只在概率不在价格**,一局限购一次,**计步保底**:连续 5 次三选一展示未出现→第 6 次必出(计数=展示次数、刷新重展计入、奖励节点与商店共享、触发清零、限购用满后不再触发);属性提升类:奖励节点 + 商店(口径「训练」);资源类:奖励节点 + 商店(**金币除外、回复在内**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**默认原则**:除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里——任何不出现都须登记理由**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 + acquisition: 三条渠道的**目标分工(交叉开关,v2.2 收口)**——机制类:主渠道=**关底 Boss 击败=通过这一关**(**唯一直接给的渠道**;不新增节点类型、挂 Boss 节点兑付面;末关的 Boss 击败后不给——无后续关卡可消费)。**兑付频率**:奇物不是打一场战斗给一份,关内普通战斗节点不给任何奇物,一关之内只兑付一次(奖励节点与商店同理,各节点各自兑付),奖励节点与商店**只给「专长获取」门票**——**拿到即开、不可囤积**,不进持有集(选中/买下同一时刻开专长三选一;可囤积会让玩家无限推迟关键决策,且把持有物语义从后门放回)。门票归机制类(给的是一件以前不会的事,只是把选择推迟)。罕见**只在概率不在价格**,一局限购一次,**计步保底**:连续 5 次三选一展示未出现→第 6 次必出(计数=展示次数、刷新重展计入、奖励节点与商店共享、触发清零、限购用满后不再触发);属性提升类:奖励节点 + 商店(口径「训练」);资源类:奖励节点 + 商店(**金币除外、回复在内**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**默认原则**:除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里——任何不出现都须登记理由**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 boundary: 判据走生命周期——**一次冒险内获得、冒险收束即清零的是奇物;跨冒险跟着你走的是魔法道具**。奇物永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 data_sources: relics.tres(机制类定义行)/ adventure.tres(属性提升类与资源类的种类配额与值)/ shop.tres(货架取舍) open_questions: ①类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同,靠这条描述把"资源"从泛用词收回到本类定义内;②专长门票尚未入表(出现概率/配额/限购次数/保底阈值四参数均无事实源);③确定性渠道一局两次专长 vs 档位阈值(同标签 ≥2 档一 / ≥4 档二)——**档二在三关结构下几乎不可达**,用户定延后复裁(触发=第四关内容批后实测);④charge 标签仅 3 件、永远达不到档二(数据层缺陷,独立登记,勿被上条盖掉);⑤断点存档键 5 个(bonus_deck / bonus_taken / bonus_pending / bonus_result / bonus_aux_carry)是否随存档版本迁移换名待裁 From 483cf2a39bae6ec6445c7c9e96dd7515bcc4f9c2 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 06:15:01 +0800 Subject: [PATCH 10/15] =?UTF-8?q?=E5=A5=87=E7=89=A9=E6=89=B9=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B9=A6=20+=20=E7=BC=96=E5=85=A5=20roadmap=20?= =?UTF-8?q?=E8=BF=AD=E4=BB=A3=2015?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户令:概念层裁定已完成,代码与配置改动不做,整理成任务书编入迭代 15 作为该迭代的一个需求。任务书须满足 loop engineering 要求。 新增:design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md 按 roadmap §批次 loop 规范八件成文(缺件不开工): ① 目标与完成定义(7 条可验)② 现状事实(代码级,T0 复核) ③ 设计契约(11 条,6 条 🔴 停机级)④ 范围边界(含"收到即停"清单) ⑤ 任务卡 T0-T8(逐卡估时 ≈4.5d,两段切分预案,切分点=T3 出口) ⑥ 验证闸(轻闸/重闸 + **12 条批末专属验收断言** A1-A12) ⑦ 异常分级(含本批预判的 3 个 L3 高风险点) ⑧ 代拍板白名单 5 项 外加:待用户裁点 4 项(不占本批自裁范围)+ 附录**设计裁定链 v1.0→v2.6** (把 6 轮用户裁定的要点列全,供执行者回溯,不用回头翻 9 次提交) 三批内容:①三套旧词族对齐(feature_*→curio_* 103处/relic_*→feat_* 162处/ 运行层 bonus_*→curio_* 160处;**硬约束 reward_* 已被占用不可用**) ②三条渠道按分类分离(现共用 98 张池、三类混编)③两个新种类入池 (刷新次数 + 专长门票四口径)附带 shop.tres 补回复与 charge 补至 ≥4 件。 roadmap 新增迭代 15 行(M-4 里程碑表内),标注: - 与在途 M-4 各批(判式换代/全局变异/配比预设)**撞同一批文件** (adventure_table.gd / level_runner.gd / adventure.tres), **开工门 = 须确认不并行或用户明示插队**——这是本批最实际的调度约束 - 门 = 迭代 14 出口;估时 T0-T8≈4.5d 可两段切分 🔴 红线里最要紧的两条(都是本会话教训固化): - 兑付频率:奇物不是打一场战斗给一份,关底 Boss 击败=通过这一关是 同一个时刻;专长不得挂在"战斗结算后"(v2.6 用户纠错) - 两条轴互不决定:禁止"因为要进商店所以另立分类"这种反向推导 --- ...务书-奇物词族对齐与渠道分离批-2026-10-05.md | 243 ++++++++++++++++++ roadmap.md | 1 + 2 files changed, 244 insertions(+) create mode 100644 design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md diff --git a/design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md b/design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md new file mode 100644 index 00000000..6f0f921f --- /dev/null +++ b/design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md @@ -0,0 +1,243 @@ +# 任务书:奇物概念收口与词族对齐批(迭代 15) + +- 日期:2026-10-05 +- 设计事实源:[奇物.md](../gdd/systems/冒险循环/奇物.md) v2.6(概念唯一定义,2026-10-05 用户逐轮裁定) +- 登记台账:[06-待办清单](../gdd/06-待办清单.md) 三条目(渠道分工目标态 / 资源类两个新种类入池 / 奇物命名统一后续) +- 实体登记:[entities.yaml](../registry/entities.yaml) `curio` 条目 +- 状态:**定稿待发令**——用户 2026-10-05 令:本批只改文档,代码与配置改动整理成任务书编入迭代 15 +- **loop 计划书八件对照**:①目标与完成定义=§一 ②现状事实(代码级,开工自行复核)=§二 ③设计契约(🔴 触碰=L3 停机)=§三 ④范围边界=§四 ⑤任务卡 T0..Tn=§五 ⑥验证闸=§六 ⑦异常分级=§七 ⑧代拍板白名单=§八 +- **本任务书已有约束**:范式为"设计契约先行、代码后跟"——概念已由用户逐轮裁定定稿(v1.0→v2.6 共 6 轮),本批不做二次设计,只做**落地对齐**。任何在执行中冒出的"要不要改设计"念头,一律记 06 不在本批解决 +- 数值全 provisional:本批只改标识符与结构,**不调任何平衡数值**;档位配额 70/25/3=98 是结构锚(schema validate 硬断言),本批零改动 + +--- + +## 一、目标与完成定义 + +一句话目标:把 v2.6 已定稿的「奇物」概念从**文档层**贯彻到**代码层与数据层**——三套旧词族(`feature_*` / `relic_*` / 运行层 `bonus_*`)全部对齐到统一词族,渠道分工与两个新种类入表,使代码与文档不再各说一套。 + +**为什么现在做**:用户 2026-10-05 的原始诉求是"这导致我们的代码实现和文档描述是分开的"。概念层已裁定完(6 轮),但代码层仍是三个旧词族 + 渠道未分离,**债已经欠了 9 次提交**。顶层已改名「奇物」而代码仍叫 `feature_*`,正是用户最初抱怨的"文档与代码分开"的临时态。 + +完成定义(逐条可验): + +1. **词族对齐完成**:`feature_*` → `curio_*`(103 处 / 7 文件)、`relic_*` → `curio_*` 或 `feat_*`(162 处 / 12 文件)、运行层 `bonus_*` → `curio_*`(160 处 / 8 文件)全部改完,`game/` 下 `grep -c "feature_\|relic_\|_bonus_\|pick_bonus\|BonusInteract\|BonusPick"` 归零(存档键 5 个除外,见 T2 裁点) +2. **渠道分工落地**:三条渠道按分类分离——关底 Boss 击败=通过这一关 → 只出机制类;奖励节点 / 商店 → 只出属性提升类 + 资源类,机制类在此只以门票形式出现;三渠道不再共用同一个池 +3. **两个新种类入表**:刷新次数、专长获取门票进入 `adventure.tres`,各自带全参数 +4. **商店货架补回复**:按默认原则,回复必须在商店货架内(现行缺) +5. **数据缺陷修复**:`relics.tres` 的 charge 标签补至 ≥4 件(档二要求同标签 ≥4,现仅 3 件,永远达不到) +6. **冒烟与三闸全绿**:批末 run_smoke 全量 + 三探针 + doc 三闸对基线**零新增** + 熵增闸 PASS +7. **断点存档往返幂等**:改词族不破存档——旧档能读、新档能续(若 T2 裁点选"换名+迁移",须验 v→v+1 往返) + +## 二、现状事实(代码级,T0 开工须自行复核) + +> 以下是 2026-10-05 读出的事实。开工时按 loop 规范 T0 复核,不以本节为准。 + +### 2.1 词族占用实况 + +| 词族 | 处数 | 文件数 | 主要落点 | +|---|---|---|---| +| `feature_*` | 103 | 7 | `adventure_table.gd` / `adventure.tres` / `adventure_runner.gd` / `level_runner.gd` / `config_db_cross_validator.gd` / `bonus_interact_controller.gd` / `smoke_all.gd` | +| `relic_*` | 162 | 12 | `relic_table.gd`(+`.uid`)/ `relics.tres` / `relics_engine.gd` / `config_db.gd` / `battle_orchestrator.gd` / `damage_controller.gd` / `action_economy.gd` / `level_runner.gd` / `battle_narrator.gd` / `adventure_runner.gd` 等 | +| 运行层 `bonus_*` | 160 | 8 | `_bonus_deck` / `_bonus_taken` / `pick_bonus` / `BonusInteractController` / `BonusPickOverlay` / `bonus_interact_controller.gd` / `level_autoplay.gd` / `breakpoint_resume_test.gd` 等 | + +**🔴 硬约束(不可撞车)**:`reward` 词族**已被占用**——`reward_pick`(rng 封闭流 scope)/ `reward_node`(`grant_aux_item` 的 context 字符串)/ `reward_preview`(道具效果 kind)。**统一词族不得使用 `reward_*`**,本批定为 `curio_*`(`treasure` / `trove` / `curio` / `haul` 零占用,2026-10-05 查证)。 + +### 2.2 封闭词表与结构锚(改动即触碰红线) + +- `AdventureTable.FEATURE_KINDS: Array[String]` = `["attack", "max_hp", "armor", "gp", "ap", "heal"]`——**封闭六项**。断点附随件与牌库剔除态依赖它,扩种类须走 schema + registry 同步修订 +- `AdventureTable.TIER_QUOTAS := {"common": 70, "rare": 25, "rarest": 3}`(合计 98)——**结构锚**,schema `validate()` 内有硬断言:"档位配额结构失锚……改总量须重裁"。本批**入新种类须占配额**,若配额总量不够,**只能在本批内重裁并说明**,不得调参绕过 +- `adventure.tres` 现有 22 个键与 schema 的 22 个 `@export` 一一对应(2026-10-05 脚本校验通过),改名须同步两侧 +- 节点类型是**封闭枚举五种**(战斗 / Boss / 奖励 / 恢复 / 商店)——本批**零扩类**(专长挂 Boss 节点兑付面) + +### 2.3 渠道与池的现状 + +- 现行**三渠道共用同一个 98 张固定配额令牌池**(普通 70 / 稀有 25 / 罕见 3),三类混编 +- 机制类(专长)只占稀有/罕见档,与属性大件混编;商店货架靠"零机制类挤掉一张普通卡"保底 +- 商店货架 = 池 ∖ {GP 袋}(`shop.tres` 的 `pool_shelf` 行族,现为 attack / max_hp / armor_class / ap 四项,**缺回复**) +- 奖励节点与通关三选一**共享同一池、同权重同上限**(`node-reward` v2.4) + +### 2.4 数据缺陷(独立于渠道结构,须单独修) + +- `relics.tres` 的 **charge 标签只有 3 件**,而档位激活要求同标签 ≥4 件——**charge 流派永远达不到档二**,即使获取次数无限 +- 一局确定性专长兑付次数 = 终局前 Boss 个数(三关 = 2 次),而档一阈值是同标签 ≥2——档一刚好够,档二(≥4)须靠门票补齐。**此项用户已定延后复裁**(触发=第四关内容批落地后实测),本批只登记不改 + +### 2.5 断点与存档键(5 个) + +`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`——为存档兼容沿用历史名。`adventure_runner.gd` 内同时有 `_node_bonus_pending`(奖励节点停点态)。**是否随存档版本迁移换名须本批裁**(见 T2)。 + +## 三、设计契约(违反即返工,🔴 触碰 = L3 停机) + +1. 🔴 **兑付频率不可改**:奇物**不是打一场战斗给一份**。关内普通战斗节点打完不给任何奇物;一关之内只兑付一次,触发点是**关底 Boss 被击败**——按 [冒险结构](../gdd/systems/冒险循环/冒险结构.md) 定义"通关一关 = 该关关底 Boss 被击杀",**这两件事是同一个时刻,不是一条链上的两步**。任何把专长挂到"战斗结算后"的实现即为 L3 +2. 🔴 **两条轴互不决定**:分类轴(给的是什么:机制类 / 属性提升类 / 资源类)与渠道轴(从哪来:奖励节点 / 商店 / 关底 Boss 击败)**不得互相推导**。禁止"因为它要进商店所以另立一分类"这类反向推导(= 06 已登记的"两轴缠回去") +3. 🔴 **Boss 渠道独占机制类**:关底 Boss 击败=通过这一关**只出机制类**,属性提升类与资源类在此不出现。这是渠道轴的定位决定,不是例外,不需另找理由。末关的 Boss 击败后不给(无后续关卡可消费) +4. 🔴 **专长门票四条口径不可改**:①**拿到即开、不可囤积**(不进持有集,选中/买下同一时刻开专长三选一);②**罕见只在概率、不在价格**(货架价与其他商品相当);③**一局限购一次**;④**计步保底**——连续 5 次三选一展示未出现 → 第 6 次必定出现(计数=**展示次数**,刷新后的重展计入,奖励节点与商店共享计数,触发后清零,限购用满后不再触发) +5. 🔴 **统一词族不得用 `reward_*`**(已被 `reward_pick` / `reward_node` / `reward_preview` 占用,见 §2.1) +6. 🔴 **档位配额结构锚不可绕过**:`TIER_QUOTAS` 的 70/25/3 有 validate 硬断言。改总量须重裁并留说明,不得调参绕过 +7. 🔴 **不新增节点类型**:`关卡节点地图` 的节点类型封闭枚举五种不变,机制类挂 Boss 节点兑付面 +8. 🔴 **魔法道具边界不位移**:奇物**当局清零、跨局带走的是魔法道具**(判据走生命周期,不走"带在身上")。本批任何改动不得让奇物进同调位,也不得让魔法道具进当局随机渠道 +9. 🔴 **层级纪律**:奇物只走当局随机渠道(奖励节点 / 商店 / Boss 兑付),不进元进度天赋树 +10. **本批不改平衡数值**:所有 `feature_value_*` / `feature_quota_*` 的**值零变更**。入新种类属结构改动(占配额),非调参 +11. **零战斗期新动词**:机制类表达全部经"扫雷决策 → 自动结算"间接生效,不新增手动闪避 / 主动施法 + +## 四、范围边界(以下均不在本批,收到即停、不顺手做) + +- **任何平衡数值的调参**——档位阈值、门票四参数的具体取值(概率 / 配额 / 限购次数 / 保底步数)、token 配额重裁方案。门票四参数本批只**建结构与字段**,取值走 provisional + 曲线调参批 +- **第四关内容**——用户已定"后续还会有第四关,到时候试完觉得配合太少再调整"。档二可达性复裁触发条件是第四关落地后实测 +- **charge 补件的内容设计**——本批只把 charge 补到 ≥4 件以打开档二通路,**补哪几件是内容裁决**,走独立内容批;本批若判断内容不可自决,则只做"档二对 charge 不可达"的显式登记(数据缺陷留痕),不硬补 +- **玩家可见面违规改法**(06 独立条目:内部分类禁写入玩家可见面 + 档位呈现三路待裁)——属呈现面设计裁决,须用户拍板,本批不碰 +- **教学引导相关**——用户 2026-10-04 裁改排 Beta +- **资源配比预设 / 判式换代 / 全局变异等 M-4 在途批**——与本批词族改名**撞同一批文件**(`adventure_table.gd` / `level_runner.gd` / `adventure.tres`),**须在 roadmap 排期上确认不与在途批并行**,本批开工门 = 相关在途批出口或用户明示插队 +- **存档键换名的迁移实现**(若 T2 裁"换名")——须与存档版本迁移单独裁定,本批可只做"代码侧改名 + 兼容读旧键",迁移写 v+1 归存档批 + +## 五、任务卡(T0..T8 逐卡估时) + +> **估时合计**(provisional,工作日)≈ 4.5 日,在 ≤3 日软时间盒边缘。**切分预案**:T0-T3 一段(词族对齐)≈ 2 日;T4-T8 二段(渠道分离 + 入表)≈ 2.5 日。切分点 = T3 出口。超限即按 loop 规范切迭代(L3 汇报)。 + +### T0 开工(≈0.3d) + +- 建 worktree(分支名建议 `curio-wordfamily-20261005`),**主工作区只作合并落点** +- 基线复读记档:冒烟全量数字 / 三探针(`ui_input_probe` 十一断言)/ doc 三闸 / MC 对拍基准 / `git status` 归属核对(并行遗留只标旗不碰) +- **复核 §2 全部事实**(词族处数、封闭词表、配额锚、存档键清单),与本节不符以实测为准并回写本任务书 +- 输出:worktree 名 + 基线数字 + 事实复核差异表 + +### T1 词族对齐第一批:`feature_*` → `curio_*`(≈0.7d) + +- 范围:`FEATURE_KINDS` → `CURIO_KINDS`、`feature_quota()` → `curio_quota()`、`feature_value()` → `curio_value()`、`feature_candidate_count` → `curio_candidate_count`、`feature_quota_{kind}_{tier}` → `curio_quota_*`、`feature_value_{kind}_{tier}` → `curio_value_*` +- 涉及:`adventure_table.gd` + `adventure.tres`(键名)+ 6 个引用文件 +- **值零变更**(只改键名与常量名) +- ⚠️ `FEATURE_KINDS` 是封闭词表、断点附随件与牌库剔除态依赖它 → 改名须与 `entities.yaml` 同批同步 +- 轻闸:冒烟全量绿 + 存档往返测试绿 + +### T2 词族对齐第二批:运行层 `bonus_*` + **存档键裁点**(≈0.7d) + +- 范围:`_bonus_deck` / `_bonus_taken` / `pick_bonus` / `BonusInteractController` / `BonusPickOverlay` / `bonus_interact_controller.gd` / `level_autoplay.gd` / `breakpoint_resume_test.gd` +- **文件改名须同步 Godot `.uid` 与 `.tscn` 引用**(非文本层,无法靠 grep 自证) +- **裁点(本任务书内唯一待裁,批内自裁可行但须台账留痕)**: + - 五个**断点存档键**(`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`)换不换名? + - 甲=**不换**(保存档兼容,仅改代码侧变量名)——推荐 + - 乙=换 + 兼容读旧键(旧键读入映射到新键,写出用新键) + - 丙=换 + 存档版本迁移到 v+1(**范围外**,本批不做) + - 建议甲或乙;若判断丙才对,回写本任务书并转 06 +- 轻闸:冒烟全量 + **断点存档往返测试绿** + `ui_click_probe`(触碰 presentation) + +### T3 词族对齐第三批:`relic_*` → 机制类(≈0.8d) + +- 范围:`relic_table.gd`(+`.uid`)/ `relics.tres` / `relics_engine.gd` / 及 9 个引用文件 +- 目标词族:`feat_*`(机制类 = 专长 Feat,**与顶层 `curio_*` 区分**:顶层是容器,内层分类各有各的词族——`curio_*` 是总称、`feat_*` 是机制类、`asi_*` 是属性提升类、`res_*` 是资源类) +- **文件名与 `class_name` 改名须同步 `.uid` 与 `.tscn`**(非文本层) +- **不新增节点类型**;MINE_HOOKS 红线校验逻辑零改动 +- 轻闸:冒烟全量 + 全探针(三) +- **T3 出口 = 切分点**:段落一(词族对齐)完成,出阶段报告 + +### T4 渠道分离:池的拆分(≈0.8d) + +- 目标:三个渠道各按分类白名单取候选,不再共用同一个 98 张池 + - 关底 Boss 击败 → 只出机制类 + - 奖励节点 / 商店 → 机制类**只以门票形式出现** + 属性提升类 + 资源类 +- ⚠️ **配额结构锚处置**:机制类抽离共享池后,属性与资源类的配额总量是否维持 98?**若须改 `TIER_QUOTAS` 总量,走重裁流程并在本任务书回写理由**(不得调参绕过 validate 硬断言) +- 商店货架 = 池 ∖ {GP 袋}(**计价物不自售**规则:凡以某渠道计价物为内容的奖励不进该渠道货架) +- 轻闸:冒烟全量 + 探针 + **MC 逐位对拍**(涉核心,必须) + +### T5 专长门票入表(≈0.7d) + +- 新增门票项到 `adventure.tres`,四参数全部建字段、**取值 provisional**: + - 出现概率 / 配额 / 限购次数(=1)/ 保底步数(=5 展示) +- 机制:**拿到即开、不可囤积**(不进持有集)→ 选中/买下同一时刻开专长三选一 +- **计步保底计数器**:计数=展示次数、刷新后重展计入、奖励节点与商店**共享**计数、触发后清零、限购用满后不触发 +- 稀有档处置须说明:门票进哪一档(罕见?),占多少配额 +- 轻闸:冒烟全量 + 探针 + MC 逐位对拍 + +### T6 刷新次数入表 + 商店补回复(≈0.5d) + +- `FEATURE_KINDS` 扩项须走 schema + registry 同步修订(封闭词表,红线 §3.6) +- ⚠️ **必须先划清边界**:既有「商店独立刷新机制」是**进店后的免费次数 + GP 刷新**(商店自身的服务),本项是**作为奇物授予的**重抽次数——**两者不是一回事**,入表前须在 registry 里把边界写死,防止后续混淆结算 +- 刷新次数的作用对象是**三选一界面而非角色**——不进加算区(§2.2 加算区四轴不含它) +- 补 `shop.tres` 的 `pool_shelf` 货架含回复(按默认原则:除已登记规则外,分类内成员都要在它该出现的渠道池子里) +- 轻闸:冒烟全量 + 探针 + MC 逐位对拍 + +### T7 档位通路与数据缺陷(≈0.4d) + +- 复核 charge 标签件数。若本批能自决则补至 ≥4 件;若内容不可自决,则**只做显式登记**("档二对 charge 不可达,数据缺陷留痕,转内容批")——**不硬补、不塞占位件** +- 档二可达性复裁:**本批只做静态推演与登记**,实测归第四关内容批(用户已定) +- 轻闸:冒烟全量 + +### T8 批末闸与人闸材料(≈0.4d) + +- 重闸:全量轻闸 + doc 三闸(对基线**零新增**)+ 熵增闸 + MC 逐位对拍(涉核心)+ 素材批机检断言(本批无素材则免) +- 人闸材料包(`design/qa/`):真人目检清单(重点 = 奇物列表呈现、档位激活反馈、门票弹出三选一面)+ 代拍板追认清单 + 三渠道兑付点目检指引(**专长兑付发生在关底 Boss 击败那一刻,不是战斗结算后**——这条要单列一个检查项) +- 收口五步:①`active.md` 快照 ②台账条目(查撞号)③里程碑移动更新 roadmap ④`stage.txt` 阶段变更 ⑤闸序列全绿留痕 + +## 六、验证闸 + +### 6.1 轻闸(每轮必跑,headless) + +- `run_smoke` 全量 +- `ui_input_probe`(十一断言) +- 触碰 presentation 时加跑 `ui_click_probe` + `ui_layout_probe`(T2 / T3 触碰) + +### 6.2 重闸(批末 T8) + +- 全量轻闸 + `doc_link` / `gdd_lint` / `doc_term` 三闸**对基线零新增** +- 熵增闸 PASS +- MC 逐位对拍(T4 / T5 / T6 涉核心,必须;T1-T3 纯改名可免但须在报告说明理由) + +### 6.3 本批专属验收断言(概念与代码一致性) + +| # | 断言 | 判据 | +|---|---|---| +| A1 | 词族归零 | `game/` 下 `feature_\|relic_\|_bonus_\|pick_bonus\|BonusInteract\|BonusPick` 命中数 = 0(存档键除外) | +| A2 | 禁词未用 | `game/` 下无 `reward_pick` / `reward_node` / `reward_preview` **新增**(既有三处不动) | +| A3 | 兑付频率正确 | 专长兑付点 = 关底 Boss 击败;**关内普通战斗节点不产奇物**(代码级断言 + 人闸目检双查) | +| A4 | 渠道分离 | 三渠道候选池按分类白名单过滤;机制类在非 Boss 渠道只以门票形态出现 | +| A5 | 门票拿到即开 | 门票不进持有集;选中/买下同帧开专长三选一(断言:持有关卡推进后仍无门票残留) | +| A6 | 保底计数 | 连续 5 次展示未出 → 第 6 次必出;刷新重展计入;限购用满后不触发 | +| A7 | 值零变更 | T1-T3 全部改名的键,值与基线**逐位相等** | +| A8 | 存档往返 | 旧断点可读、可续;存档键按 T2 裁点结论验证 | +| A9 | 池配额锚 | `TIER_QUOTAS` validate 硬断言绿;若改总量须有重裁说明 | +| A10 | 节点类型零扩类 | 节点类型仍为封闭枚举五种 | +| A11 | 玩家可见面无分类名 | 奇物列表 / 三选一面 / 弹窗**不出现**"机制类/属性提升类/资源类"字样(与 06 独立条目协同,本批只做**断言检查**,不改法) | +| A12 | 档二通路 | charge 标签 ≥4 件,或已有显式登记"不可达 + 转内容批" | + +## 七、异常分级(loop 规范) + +- **L1 自救**:一次重试(改名后编译错、`.uid` 未同步等机械错) +- **L2 记录继续**:连续 3 次同红灯升级,写台账继续推进 +- **L3 停机写报告**:触碰 §3 任一 🔴 红线 / 配额结构锚无法自洽 / 发现概念层自相矛盾 / MC 逐位对拍出现无法归因的漂移 + +**本批预判的 L3 高风险点**: +1. `relic_table.gd` 改名连带 `.uid` / `.tscn` 非文本层引用失败(T3) +2. 机制类抽离共享池后配额结构锚失锚,需重裁(T4) +3. 存档键换名导致旧断点读不出(T2) + +## 八、代拍板白名单(批内可自裁,台账留痕) + +1. **词族细分名的具体拼写**——`curio_*` / `feat_*` / `asi_*` / `res_*` 的下划线与单复数形式,在不撞既有占用(`reward_*` 等)的前提下自定 +2. **重命名时的中间态命名**——允许分步改(先改引用再改定义),只要批末归零 +3. **T2 存档键裁点的甲/乙选择**(不选丙) +4. **T7 charge 是否硬补**——若内容不可自决,走"只登记不硬补"(本任务书已授权此判断) +5. **provisional 取值的第一版数字**——门票四参数、刷新次数件值,取 working value 即可,**须标 provisional 且归曲线调参批**,不进终值 + +## 九、待用户裁点(不在本批自裁范围) + +| # | 待裁 | 阻塞面 | 建议 | +|---|---|---|---| +| C1 | 玩家可见面三处违规的改法 + 档位呈现三路 | 06 独立条目;A11 断言只检查不修 | 单独开呈现面批 | +| C2 | 第四关内容与档二可达性复裁 | T7 实测、charge 补件 | 第四关内容批后 | +| C3 | 门票四参数的终值 | T5 provisional 定稿 | 曲线调参批 + MC 采集 | +| C4 | 存档键换名的正式迁移 | T2 裁点丙案 | 存档版本迁移批 | + +--- + +## 附:本任务书引用的设计裁定链(v1.0 → v2.6,供执行者回溯) + +| 版本 | 用户裁定要点 | +|---|---| +| v1.0 | 立《特性》:一次冒险内角色自身得到的提升;命名统一(此前三个名字:流派件 / 数值件 / 本关强化) | +| v1.1 | 分类重构为「属性提升 ASI / 专长 Feat」;刷新次数作用对象是选择界面而非角色,作为例外登记 | +| v1.2 | 专长渠道落定=关底 Boss 击败后;**不新增节点类型**(挂 Boss 节点兑付面) | +| v2.0 | 顶层改名「奖励」;分类扩为三类;重构为**两根轴**(分类轴 × 渠道轴);边界判据改走**生命周期**(当局清零的是奖励,跨局带走的是魔法道具) | +| v2.1 | Boss 渠道只出专长(独占);终局 Boss 不给;金币不进商店写成「计价物不自售」**规则**而非特例 | +| v2.2 | 非 Boss 渠道给**门票**形式(拿到即开、不可囤积);渠道约束重构为**三层**(分类白名单 / 可计算谓词 / 显式例外清单);立**默认原则**——除已登记规则外分类内成员都要在池子里 | +| v2.3 | 门票四条口径细化(含**计步保底**:连续 5 次展示未出第 6 次必出,刷新重展计入);修正默认原则表述——**只管分类内部**,"渠道出哪些分类"是渠道轴自己的定位决定 | +| v2.4 | 顶层定名**「奇物」Wondrous Item**(DND 魔法物品九分类的兜底杂类);落选 Treasure(偏财物)/ Relic(用户否决)/ 全部自造词;**代码词族定为 `curio_*`**(`reward_*` 已被占用) | +| v2.5 | 第三类定名**「资源类」**(偏泛,故在 1.3 写死判据句);**回复留在资源类**不拆第四类 | +| v2.6 | **修正核心循环图**——奇物不是打一场战斗给一份;关底 Boss 击败=通过这一关是同一时刻;兑付频率写进文首 / 2.1 / 待办 / registry | diff --git a/roadmap.md b/roadmap.md index 67eb7fac..3b92ba52 100644 --- a/roadmap.md +++ b/roadmap.md @@ -60,6 +60,7 @@ | 迭代 12 | **双层 BD 实施批(反制批位移承接——变异应对局内化在本批落地)**:**2026-10-03 用户五裁全落**=R1 甲(树形态融合案:主干脊柱 row-gating+三脉+彩蛋 ≤3+A/B 集中同调脉)/R2 乙(**两层全入本迭代**:批次一 T0-T7=机制件基建+七流派全量铺〔R3 乙〕+地形转化件+商店保底+MC 锚;批次二 T8-T10=天赋树+存档 v4+营地 UI 重构;超软时间盒切 12/12b,切分点=批次一出口)/R3 乙(七流派批次一全量铺)/R4 甲(**信息型永不对冲**+复查闸=T10 呈报信息型真人读数仅呈报不提案;净化工兵仅限伤害型、清除工具件族不做、深挖钻头改非信息税设计)/R5 甲(喂雷流不做,06 留正式待办+kill-switch 判据)。未落地备选内容已自包含迁 06「双层 BD 延期与备选内容总登记」。设计事实源=`design/research/双层BD体系-整合定稿-2026-10-03.md`(双模型并行调研仲裁版),任务书=`design/research/任务书-双层BD实施批-2026-10-03.md`(已定稿)。**✅ 已全批落籍(2026-10-04,台账 328-333)**:TP0 令牌池先行(normal 重锚)→批次一 T0-T7(27 件七流派+MC 成型锚 L1 5%→75% 分岔+红线自检①过)→批次二 T8-T10(天赋树 33 节点+存档 v5+营地树 UI+A/B 面 0.0pp)一次合并 e780063;试玩反馈四连修复(钻头 AP 锁死/v2 收益重投/流派件呈现双界面/清图奖励 toast)至 c43276d;批末冒烟 718/0+run_all 15+探针绿+doc 三闸基线同款+熵增 PASS;**出口人闸待用户**(人工检查清单=台账 328-333+design/qa/m4iter12 两报告);前置=迭代 11 三批出口+M-4 数值批令牌池落地+商店批共享池 | 迭代 11 出口 | T0-T10 两段式(任务书 §四) | | 迭代 13 | **工程债与测试基建批(含 D6 爆破工兵包实施)**:六条目=ui_click_probe 完整局适配(D1——分派链序修正+停点/锁期/重放三态断言)/探针只读出口(D2——六出口 26 直入清零)/ArmedTimer helper(D3——P4 乙三处计时收口缝零动)/main.gd 二期瘦身(D4——bonus_interact_controller+camp_shop_presenter 拆件 1370→1119,家族②契约3绑定面留置;~900±50 锚差=族级清单上限不自洽已归因)/aux 二期合并(T5 判不合收口)/杂项尾差四件(D5)/爆破工兵包中立移除雷格(D6——P1 甲邻接冻结/P2 甲退色降档,判定逻辑零改动,充能表驱动零新码)。**✅ 已落籍(2026-10-04,台账 342)**:worktree m4iter13-debt-20261004 八提交 cd7d3ea…2402877 合并 eff8cb8;闸=冒烟 718/0(断言数持平基线)+run_all 15+click 三种子绿+全探针绿+doc 三闸零新增+熵增 PASS+MC 零跑(静态零漂移证明);合并后主区全量复跑同绿 | 迭代 12 出口 | T0-T9 ≈4.8-5.3d(知情超限单批,实际单会话) | | 迭代 14 | **初始展开收窄批(2026-10-04 用户拍板甲乙混合立项)**:甲=先布后删剃雷域收窄至出生 3×3∪外扩 r 环(参数化半径,现值 r=1——开阔地均值从板面 66.5% 根因性降至约三成)+乙=生成重掷闸 R₀≤cap(合法性门序列、cap=板面 30% 锚〔10×10=30/12×12=43/13×13=51〕、重试耗尽走既有三分出口);**玩法侧零改动路线**(排雷玩法「初始展开恰等」验收原样为真,minesweeper_rules.gd 零 diff);裸数字截断路否决退役(可见 0 格+未开邻居=扫雷不可能态)。可行性报告=`design/research/研究-初始展开收窄可行性-2026-10-04.md`,任务书=`design/research/任务书-初始展开收窄批-2026-10-04.md`(T0-T8≈5.25d,读数批 T5-T6 可切独立后批;拍板点 P1-P3 全读数后置;停机点 S1 相变警戒/S2 带越界回调)。**②挖掘风险不等式判式换代批(2026-10-04 用户裁编入本迭代,作为迭代内需求)**:判式三层换代(条款2 标中旗锚/条款3 聚合健康式「(1−ρ̂)E_dig−ρ̂V_mine≥0」/旗边际引理+条件二旗溢价)+β 比值带判读 [1.2,2.5](u=3 登记态)+标中兑付溢价 δ=1.25(形态 a 兑付公式一处·雷安同池冻结不动)+runsum 旗行为五字段+audit 工具常量刷新(池 77/直伤 6-8-8/AP 8);裁决全落零新拍板点(方案报告=`design/research/方案-挖掘风险不等式修订-2026-10-04.md` §九),任务书=`.zcode/plans/mine-inequality-revision-miniloop-plan-2026-10-04.md`(T0-T5≈2.5d;条件二 T3 落文按登记已知破·T4 机制转绿;契约红线=DamageController 零改/直伤雷 6-8-8 与 p_perfect 不动——iter8 缺口四选一解绑独立在案;开工门=U0)。**③全局作用域变异首发批(2026-10-04 用户拍板立项——调研报告 P1-P8+盘问 Q1-Q4 全按推荐案落,批内序位待排)**:L2/L3 Boss 图恒定一型 scope=global 变异,首发型=**案A 资源面·微贫向偏斜**(正向格面池合计不变、进攻族 attack/blast/pierce/magic 权重上浮/生存族 heal/defense 明显下调、EV 微降 3-5% provisional、gp/action 白名单不动;v1.0「沃土+雷密对冲」形勘误作废——雷数为生成器事实、布置段不可加,改生成端=踩结构面否决理由);**替换制**(Boss 图不再布 region 片——L2 完美 Boss 承伤 55.8% 已越带不叠加;迭代 12 四件地形应对件在 Boss 图失效=知情代价,registry/调参日志随批登记);L1 Boss 免疫(带B [50,85] 教学保护);三层预告(开战横幅+HUD 常驻角标+帮助手册行);带A 判读后置 M-4(落地 off/on 对拍只测不判;off 基线=替换制后零变异 Boss 图,与现行带 region 片 Boss 图语义不同须注明);偏运硬币合成序=图级先件级后(代拍随批锚登记)。调研报告(事实源,v1.1 裁决落盘)=`design/research/调研-全局作用域变异设计空间-2026-10-04.md`,任务书=`design/research/任务书-全局作用域变异首发批-2026-10-04.md`(T0-T8≈5.75d,读数批 T7 可切独立后批→主体≈5.25d;零新拍板点·provisional 追认单随批;停机点 S1 普通图逐位漂移/S2 读数越带只呈报/S3 互锁误伤;开工门=U0;**⑥A4 批开工门含本批出口——本批落地图级偏斜投影点为⑥合成链中段**)。与①②互不撞(收窄=普通图初始展开轴/判式=不等式判读口径/全局变异=Boss 图资源面轴),出口读数各自分开归因。**✅ 实施批落地(2026-10-04,worktree m4iter14-gvar-20261004 台账 345)**:T1-T8 实施批全落(T7b MC 读数批按切分预案切独立后批,跑批待用户批准)——skewed_veins 贫矿脉行+互锁三条+effect_value [0,50]/门控第三维节点身份/替换制+兜底回落/装板序全局决议前置(数据依赖调和,出口报告在册)/资源面偏斜投影(整数最大余数守恒 77+合成序图级先件级后)/三层预告三层全接/七正主落文+06 收口;闸=冒烟 747/0(+29)+run_all 15+golden 普通图逐位 12/12 全等+六探针+三闸熵增终录见批报告 design/qa/m4iter14-gvar-exit-report-2026-10-04.md(Q3 四件应对件知情代价登记+静态推演+provisional 追认单+人闸目检清单);**③出口成立——⑥A4 开工门解一半**(另半=②出口);off/on 双档读数待 T7b(带 A 判读归 M-4 只测不判)。**④技能池执行批(2026-10-04 用户点名入列——调研+四裁+任务书全齐,06 Alpha 验证条目随之收口)**:文档五件(敌人系统.md 池构成表补 L2/L3 五敌种行/护甲列改读表口径/Boss 三代错峰句/意图呈现节补解锁弹出规格/版本 v0.13+EV 锚整数口径重登记+enemy.tres 批注消歧)+**新机制一件=Boss 半血解锁新独占伤害技**(三 Boss 血量 ≤50%〔用户口径定死〕解锁:酋长「震地怒击」类 ×2.5/CD4·卓尔遏毒类 ×2.0/CD3·石君王「岩崩」类 ×2.5/CD4——参考档即工作值,命名 T5 定稿、倍率冷却 provisional 归调参;enemy.tres 池条目扩 unlock_hp_pct 键〔int [1,99] 缺省无=无门槛〕;未解锁条目双面过滤不进摇号与保底集合;解锁出一次归因明细行「XX 解锁了 YY」);首拍加权取消(杂鱼纹理注销——巨蜘蛛 52% 读数已被 Package B 抬血自愈、地精两行终裁不加工);呈现=明细行+既有类型级预告+解锁时技能名一次性弹出(零动画资产、不改演出);裁决 D1-D8 零待裁;任务书=`design/research/任务书-技能池执行批-2026-10-04.md`(T0-T7≈4.25d,切分预案在册)——开工=用户发令升计划书。**⑤魔法提灯 +2 效果接线(小卡)**:零调研直入——2026-09-30 拍板④已裁(灯甲视野外扩 +2 格、类型微光不随视野扩),迷雾批已留常量 LIGHT_RADIUS_LANTERN_BONUS,纯接线+断言估 0.5d 内。原候选卡注记终态(2026-10-04):敌人系统内容批=已具化为④;教学引导定稿批=用户裁改排 Beta(06 教学节头注记在案),移出本迭代候选。**⑥冒险前资源配比预设批(A4,2026-10-04 用户令编入本迭代——提案八裁全落,裁决事实源=design/research/提案-冒险前资源配比预设-2026-10-04.md §八§九§十)**:玩家冒险开始前预设格面九型资源分布(预设分布不预设落位,装板摇号定落位)——预算=组合制(总量挪点·九型正向权重总和恒 77+每型上下限包络+容量随营地解锁渐进;gp 首发不可调〔包络 (2,2)〕/预设档 3 套/下限>0);合成序=表值→玩家配比差值→包络钳制→图级变异偏斜→同调硬币偏置(包络只管玩家差值——**序位在②③之后**,三者共用摇号投影点);注入=差值向量 ΣΔ=0 关态逐位零扰动;柜台=奖励格图鉴逐型商品(每型可调权一件);冒险开始锁档中途不可换;包络宽度随容量分级放宽;验收=默认分布锚+极端构筑护栏带。容量定价与包络数值 provisional(包络数值须待②号新当量账+真人读数双锚校准);行动经济对账按包络复算(总量恒 77 只余分布位移变量)。**任务书已起草**=design/research/任务书-冒险前资源配比预设批-2026-10-04.md(T0-T8≈6.0d,两段切分预案在册〔段一机制 T0-T4+T6≈3d/段二界面闸 T5+T7+T8≈3d〕;开工门=②③号卡出口;零新拍板点,provisional 归出口追认;停机点 S1-S3 在册)。 | 迭代 13 出口(**迭代 13 已落籍 2026-10-04 eff8cb8**,台账 342) | 初始展开批 T0-T8(可两段切分)+判式换代批 T0-T5≈2.5d(独立 worktree 合并)+全局变异首发批 T0-T8≈5.75d(读数批可切,独立 worktree 合并)+技能池执行批 T0-T7≈4.25d(独立 worktree 合并)+提灯接线小卡 0.5d(可并入任一批顺路)+配比预设批 A4 T0-T8≈6.0d(两段切分可拆;开工门=②③出口;独立 worktree 合并) | +| 迭代 15 | **奇物概念收口与词族对齐批(2026-10-05 用户令编入)**:概念层已由用户逐轮裁定定稿(《奇物》v1.0→v2.6,6 轮),本批只做**落地对齐**、不做二次设计。三批内容:**①三套旧词族全面对齐**(顶层已改名「奇物」而代码仍叫旧名=用户最初抱怨的"文档与代码分开"):`feature_*`→`curio_*`(103 处/7 文件)、`relic_*`→`feat_*`(162 处/12 文件)、运行层 `bonus_*`→`curio_*`(160 处/8 文件)。**硬约束:`reward_*` 已被 `reward_pick`/`reward_node`/`reward_preview` 占用,统一词族不得使用**;`relic_table.gd` 与两个控制器类改名须同步 Godot `.uid`/`.tscn`(非文本层无法自证)。**②三条渠道按分类分离**(现行三渠道共用同一个 98 张池、三类混编):关底 Boss 击败=通过这一关→只出机制类;奖励节点/商店→属性提升类+资源类、机制类在此**只以门票形式**出现。**兑付频率红线**:奇物不是打一场战斗给一份,关内普通战斗节点打完不给任何奇物,一关之内只兑付一次(用户 2026-10-05 纠错)。**③两个新种类入池**=刷新次数(须先与"商店独立刷新机制"划清边界)+ 专长获取门票(拿到即开不可囤积/罕见只在概率/一局限购一次/计步保底:连续 5 次三选一展示未出→第 6 次必出,刷新重展计入、奖励节点与商店共享计数);附带 `shop.tres` 补回复(默认原则要求分类内成员都在该出现的渠道池里)与 charge 标签补至 ≥4 件(现仅 3 件,档二永远达不到——数据缺陷)。设计事实源=`design/gdd/systems/冒险循环/奇物.md` v2.6,任务书=`design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md`(T0-T8≈4.5d,两段切分预案在册〔段一词族 T0-T3≈2d/段二渠道+入表 T4-T8≈2.5d〕,切分点=T3 出口;11 条设计契约含 6 条 🔴 停机级;12 条批末验收断言;代拍板白名单 5 项;待用户裁点 4 项〔玩家可见面违规/第四关档二复裁/门票四参数终值/存档键正式迁移〕)。**开工门**:与在途 M-4 各批(判式换代/全局变异/配比预设)撞同一批文件(`adventure_table.gd`/`level_runner.gd`/`adventure.tres`),须确认不并行或用户明示插队 | 迭代 14 出口 | T0-T8≈4.5d(可两段切分:词族对齐段 + 渠道入表段) | ## 执行纪律(2026-09-27 用户立规) From b6b43ebc2f045b5f4fca6cc9d8bba9fcd7a1358c Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 06:42:48 +0800 Subject: [PATCH 11/15] =?UTF-8?q?=E5=A5=87=E7=89=A9=20v2.7=EF=BC=9A?= =?UTF-8?q?=E4=B8=89=E4=B8=AA=E5=AD=90=E8=8A=82=E7=82=B9=E6=AD=A3=E5=BC=8F?= =?UTF-8?q?=E5=AE=9A=E5=90=8D=EF=BC=88=E4=B8=93=E9=95=BF=20/=20=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E5=80=BC=E6=8F=90=E5=8D=87=20/=20=E8=B5=84=E6=BA=90?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户指出缺口:父节点有专名,子节点只有描述没有专名。理由站得住——帮助 / 百科 / 成就页一定会把分类露给玩家(「首次集齐 4 件专长」「三件属性值提升」), 效果描述里的指代也需要名字;卡面不带分类是**呈现面规则**,与命名是两件事。 定名:**专长(Feat)/ 属性值提升(ASI)/ 资源**——去掉「类」字后缀。 - 前两个是 DND 官方中文,且与用户 v1.1 原话一致(当时原话就是 「属性提升(ASI)」与「专长」,v1.1 落文时被加了后缀而退化成描述) - 「机制类」这个叫法另有硬伤:28 个成员里没一件是"机制",实际是 "在结算挂点上改一条规则",读者会误解为游戏机制 - 「资源」虽偏泛,但 1.3 已有判据句托底,且是用户自己的裁定 新增 1.6 节「三层结构与命名」——用户拍板的玩家可见三层: 一层 奇物(总称)/二层 专长·属性值提升·资源/三层 具体单件 明确写成规矩:**命名归本节,呈现归 battle.md / node-reward.md 裁决**, 并记明代码侧四套词族对应(curio_* / feat_* / asi_* / res_*)。 连带修掉批量替换撞出的七处自撞(专长(专长)、专长 = 专长、资源(资源))、 1.1 节标题的「专长:专长」、1.5 节残留的「命名待定」与旧括注、 02-系统清单文档树行的重嵌套。另把五处「这一类/这类」改为专名指代—— 专名定下后仍用「这一类」指代会让读者不知道在说哪个。 同步:entities.yaml(categories 补专名与定名依据、新增 hierarchy 字段、 naming_note 记 v2.7)、06-待办清单、02-系统清单 v1.9、任务书 T3 词族目标 (顶层 curio_* 与内层 feat_* 分属两套词族)、两个 schema 概念指路注释。 数据层零变更;未 merge 回 master(本会话零测试)。 --- design/gdd/02-系统清单.md | 9 +- design/gdd/06-待办清单.md | 26 ++-- design/gdd/systems/冒险循环/奇物.md | 111 +++++++++++------- design/registry/entities.yaml | 19 +-- ...务书-奇物词族对齐与渠道分离批-2026-10-05.md | 32 ++--- game/data/schemas/adventure_table.gd | 8 +- game/data/schemas/relic_table.gd | 8 +- 7 files changed, 118 insertions(+), 95 deletions(-) diff --git a/design/gdd/02-系统清单.md b/design/gdd/02-系统清单.md index b160720f..cfc58e4f 100644 --- a/design/gdd/02-系统清单.md +++ b/design/gdd/02-系统清单.md @@ -45,7 +45,7 @@ | `关卡节点图生成.md` | 单关节点图的逐局随机来源:图模板池、抽签与实例化(实施排队 ADR-0007 裁决后) | 设计草案·拍板点全落文 | | `冒险结构.md` | 整局冒险的关卡序列、失败与大奖励 | 已定稿·自旧体系迁移 | | `难度曲线与Boss.md` | 难度曲线、期望值带与 Boss 设计 | 已定稿·自旧体系迁移 | -| `奇物.md` | 一次冒险内各渠道给予玩家的增益总称(机制类 / 属性提升类 / 资源类三个枚举 × 奖励节点·商店·Boss 击败后三条渠道) | 已实现·2026-10-05 新立定义·v2.0 改名并重构为两根轴 | +| `奇物.md` | 一次冒险内各渠道给予玩家的增益总称(三个分类:专长 / 属性值提升 / 资源 × 三条渠道:奖励节点 / 商店 / 关底 Boss 击败) | 已实现·2026-10-05 新立定义·v2.0 改名并重构为两根轴 | ### 跨局循环(`systems/跨局循环/`) @@ -130,8 +130,9 @@ | v1.2 | 2026-10-03 | R3 清账批(gdd_lint 分域随批):四处状态单元格日期批注迁出——敌人系统行事件见敌人系统.md 版本历史 v0.5(技能池批);元进度行见本表 v0.8;camp/shop 行=两文 v1.0 落文(2026-09-30 三裁决执行批);语义零变更 | | v1.3 | 2026-10-05 | 立《特性》:一次冒险内角色自身得到的提升——此前按内部分类被叫成三个名字(规则类称"流派件"、属性类称"数值件"、界面称"本关强化"),现收敛为一个对象的两种形态枚举;文档树冒险循环补行 + 命名对照表补 `ADVENTURE_FEATURE` 行 | | v1.4 | 2026-10-05 | 《特性》v1.1 分类重构:两类由"规则改写型 / 属性加成型"改为"属性提升(ASI)/ 专长(Feat)",属性提升内部再分纯属性组与特殊组;获取途径由两口共用池改为三条分工渠道(专长走特定节点、属性提升走奖励节点与商店)+罕见旁路"专长获取" | -| v1.5 | 2026-10-05 | 《特性》改名为《奖励》并升 v2.0:顶层概念改为"一次冒险内各渠道给予玩家的增益总称",边界判据由"自身提升 vs 持有物"改为生命周期(当局清零的是奖励,跨局带走的是魔法道具);分类由两类扩为三个枚举(机制类 / 属性提升类 / 资源与机会类),并新增分类 × 渠道交叉开关表——两根轴互不决定。文档树冒险循环行改名 + 命名对照表 `ADVENTURE_FEATURE` → `ADVENTURE_REWARD` | +| v1.5 | 2026-10-05 | 《特性》改名为《奖励》并升 v2.0:顶层概念改为"一次冒险内各渠道给予玩家的增益总称",边界判据由"自身提升 vs 持有物"改为生命周期(当局清零的是奖励,跨局带走的是魔法道具);分类由两类扩为三个枚举(专长 / 属性值提升 / 资源与机会类),并新增分类 × 渠道交叉开关表——两根轴互不决定。文档树冒险循环行改名 + 命名对照表 `ADVENTURE_FEATURE` → `ADVENTURE_REWARD` | | v1.6 | 2026-10-05 | 《奖励》v2.1 交叉表收口:Boss 渠道只出专长(终局 Boss 不给),另两类在此不出现;新增「计价物不自售」规则处理金币不进商店——不拆第四个分类、不开特例,而是两轴交叉处的一条约束 | -| v1.7 | 2026-10-05 | 《奖励》v2.2:机制类在非 Boss 渠道改为「专长获取」门票形式(不直接给专长);渠道约束重构为三层(分类白名单/可计算谓词/显式例外清单),并承认「计价物不自售」形式上是白名单外的一道过滤、与死特判的区别在可计算;立默认原则——除已登记规则外分类内的都要在池子里,据此回复应在商店内(现行货架缺它,须补) | -| v1.8 | 2026-10-05 | 《奇物》v2.5:第三类定名「资源类」(资源偏泛,故在命名出处节写死判据句——给的是可消耗或可重掷的余量,不是属性永久抬升);回复归属定案留在本类不拆第四类;修复 1.5 段末与渠道轴标题粘连 | +| v1.7 | 2026-10-05 | 《奖励》v2.2:专长在非 Boss 渠道改为「专长获取」门票形式(不直接给专长);渠道约束重构为三层(分类白名单/可计算谓词/显式例外清单),并承认「计价物不自售」形式上是白名单外的一道过滤、与死特判的区别在可计算;立默认原则——除已登记规则外分类内的都要在池子里,据此回复应在商店内(现行货架缺它,须补) | +| v1.8 | 2026-10-05 | 《奇物》v2.5:第三类定名「资源」(资源偏泛,故在命名出处节写死判据句——给的是可消耗或可重掷的余量,不是属性永久抬升);回复归属定案留在本类不拆第四类;修复 1.5 段末与渠道轴标题粘连 | +| v1.9 | 2026-10-05 | 《奇物》v2.7 三个子节点正式定名:专长(Feat)/ 属性值提升(ASI)/ 资源——去「类」字后缀,此前是描述式叫法不是专名;新增 1.6 节「三层结构与命名」,定玩家可见的三层(奇物 / 三个分类 / 具体单件),并明确命名与呈现是两件事 | | v1.8 | 2026-10-05 | 《奖励》改名为《奇物》并升 v2.4:顶层定名 Wondrous Item(DND 魔法物品九分类中的兜底杂类,官方中文译名「奇物」)。文档树冒险循环行改名;命名对照表 `ADVENTURE_REWARD` → `ADVENTURE_CURIO`(**不用 `reward_*`**——`reward_pick` 流 / `reward_node` context / `reward_preview` kind 已占用该词族) | diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index 183c5193..ad8d320e 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -27,28 +27,28 @@ #### 冒险 BD 各分类获取同渠道、纯概率差——渠道分工目标态(2026-10-04 提问登记;2026-10-05 用户定分工) -**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **奇物**(2026-10-05 定名,v2.4 由「奖励」改名、v2.0 由「特性」改名,定义见 [奇物](systems/冒险循环/奇物.md)),下分**三个枚举分类**:**机制类**(专长——改规则、带流派标签与档位激活,构筑核心)、**属性提升类**(生命/AC/攻击三轴,写统一加算区;账本实为冒险域、关间不清零)、**资源类**(行动点上限·刷新次数·金币·回复——给"可用的量",命名待定)。旧称「流派件 / 数值件 / 本关强化」一律作废;v1.0 的「规则改写型 / 属性加成型」与 v1.1 的两分类亦作废。现行三个分类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),机制类只占稀有/罕见档(与属性大件混编),商店仅「货架零专长挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 +**现状**:BD 分层口径(用户定):基础 BD(账号级,局外天赋树+同调装配)与冒险 BD(局内一次冒险的构筑)两层;冒险 BD 的加强物 = **奇物**(2026-10-05 定名,v2.4 由「奖励」改名、v2.0 由「特性」改名,定义见 [奇物](systems/冒险循环/奇物.md)),下分**三个枚举分类**:**专长**(专长——改规则、带流派标签与档位激活,构筑核心)、**属性值提升**(生命/AC/攻击三轴,写统一加算区;账本实为冒险域、关间不清零)、**资源**(行动点上限·刷新次数·金币·回复——给"可用的量",命名待定)。旧称「流派件 / 数值件 / 本关强化」一律作废;v1.0 的「规则改写型 / 属性加成型」与 v1.1 的两分类亦作废。现行三个分类**共用同一获取渠道**:三选一(奖励节点+通关)+ 商店货架 + 格面令牌同属 98 张固定配额池(普通 70/稀有 25/罕见 3),专长只占稀有/罕见档(与属性大件混编),商店仅「货架零专长挤掉一张普通卡」保底——获取途径与条件完全相同、仅概率不同,构筑核心的获取节奏纯看脸。 **用户定案(2026-10-05,v2.1 收口)**:分类 × 渠道交叉开关表—— | 分类 \ 渠道 | 奖励节点 | 商店 | 关底 Boss 击败=通过这一关(末关不给) | |---|---|---|---| -| 机制类(专长) | **门票形式** | **门票形式** | **直接给**(唯一直接渠道) | -| 属性提升类 | 出 | 出(训练) | 不出现 | -| 资源类 | 出 | 出(金币除外;**回复在内**) | 不出现 | +| 专长 | **门票形式** | **门票形式** | **直接给**(唯一直接渠道) | +| 属性值提升 | 出 | 出(训练) | 不出现 | +| 资源 | 出 | 出(金币除外;**回复在内**) | 不出现 | **Boss 渠道是专长的独占渠道,也是唯一直接给专长的渠道**——另两类都不走这里;奖励节点与商店不直接给专长,而是给一个**「专长获取」道具(门票)**,拿到后开专长三选一。形状是"一块独占 + 两块并行",不是三块平分。**末关的 Boss 击败后不给**(打赢时冒险已结束,无后续关卡可消费),兑付只发生在还有下一关可去的那些关底 Boss 身上。用户原话:"我在获取特性的时候,可以有些比较罕见的道具,让我立马得到一个专长,就给它一点不确定性,一点随机性"。**确定性优先**:专长不因没 roll 到就构筑不起来。用户同时明确:先定大意念再分小类,渠道与分类是两根互不决定的轴。 **兑付频率(2026-10-05 用户纠错后写死)**:这条渠道的触发点是**关底 Boss 被击败**,而按 [冒险结构](systems/冒险循环/冒险结构.md) 的定义,**打掉关底 Boss 恰好就等于"通过这一关"**——两者是同一个时刻,不是一条链上的两步。**奇物不是打一场战斗给一份**:关内普通战斗节点打完了什么也不给,一关之内奇物只兑付一次。(此前《奇物》文档的"核心循环位置"图把"战斗结算 → 通关 → 得到一份奇物"画成一条链,读起来像每场战斗通关都给一份——已于 v2.6 修正为分支图并加此口径,勿再改回链式。) -**门票归机制类,不归资源类**:它给的不是"余量"而是"一件你以前不会的事",只是把选择推迟到一次三选一。**为什么只给门票**:若商店能直接买到指定专长,玩家就能用金币把构筑买出来,Boss 渠道"打赢才拿到"就失去意义;门票保留惊喜(开出的是三选一不是指定),但不让钱定点购买。 +**门票归专长,不归资源**:它给的不是"余量"而是"一件你以前不会的事",只是把选择推迟到一次三选一。**为什么只给门票**:若商店能直接买到指定专长,玩家就能用金币把构筑买出来,Boss 渠道"打赢才拿到"就失去意义;门票保留惊喜(开出的是三选一不是指定),但不让钱定点购买。 **门票机制四条(用户 2026-10-05 定)**:① **拿到即开、不可囤积**——不进持有集,选中或买下同一时刻就开专长三选一(可囤积会让玩家把关键决策无限推迟,且把持有物语义从后门放回来;"道具"只是卡面表现)。② **罕见只在概率,不在价格**——货架价与其他商品相当,不靠高价劝退。③ **一局限购一次**(现行口径)。④ **计步保底**——连续 5 次三选一展示未出现门票,第 6 次展示必定出现;计数对象=**展示次数**(刷新后的重新展示计入,用户明定含刷新),计数范围=奖励节点与商店**共享**,触发后清零,**限购用满后保底不再触发**。 **渠道定位 vs 默认原则(两句,别混)**:**渠道出哪些分类,是渠道轴自己的定位决定,不是例外**——Boss 渠道只出专长,另两类"不出现"是它的同义表述,不需另外找理由(v2.2 曾把它误当成缺理由的缺格,v2.3 修正)。**默认原则只管分类内部**:一个渠道一旦确定要出某个分类,该分类的成员就都要在它的池子里,缺席须有已登记的规则。 -原四备选(① 专长专属三选一 ② 行为条件投放 ③ 计步保底 ④ 双池分离)已被上述定案覆盖——定案≈备选①的确定性路线,余三备选不再单独推进。**节点类型不扩类**:机制类挂在 Boss 节点兑付面上(击败后追加一次专长三选一),[关卡节点地图](systems/冒险循环/关卡节点地图.md) 的节点类型仍为封闭枚举五种——此前的"是否新增节点类型"悬案由此收口。 +原四备选(① 专长专属三选一 ② 行为条件投放 ③ 计步保底 ④ 双池分离)已被上述定案覆盖——定案≈备选①的确定性路线,余三备选不再单独推进。**节点类型不扩类**:专长挂在 Boss 节点兑付面上(击败后追加一次专长三选一),[关卡节点地图](systems/冒险循环/关卡节点地图.md) 的节点类型仍为封闭枚举五种——此前的"是否新增节点类型"悬案由此收口。 -**gp/heal 已安置,不再走迁移**:v2.0 把它们放进资源类(用户 2026-10-05 选"暂不处置"=不做结构性迁移、不动配额),并在该类内显式登记异质性——**金币与回复是即时兑付,不进持有集、不持续生效**,与行动点上限/刷新次数(进持有账本、当局持续有效)生命周期不同。这条异质性必须留在文档里,防止后续把它们当持续生效的东西去结算。 +**gp/heal 已安置,不再走迁移**:v2.0 把它们放进资源(用户 2026-10-05 选"暂不处置"=不做结构性迁移、不动配额),并在该类内显式登记异质性——**金币与回复是即时兑付,不进持有集、不持续生效**,与行动点上限/刷新次数(进持有账本、当局持续有效)生命周期不同。这条异质性必须留在文档里,防止后续把它们当持续生效的东西去结算。 **渠道约束分三层(v2.2,用户质疑后重构)**:用户问"计价物不自售不就是特判吗"。**诚实结论:形式上是的**——它确实是在分类白名单之外加的一道过滤,不是从分类推出来的。但和死特判有实质区别: @@ -62,11 +62,11 @@ 三方案代价并列(不藏折中):甲=GP 单独立第四个分类(例外 0,但用渠道轴切分类轴、两轴缠回、一项一类失衡);**乙=可计算谓词(现行,1 条谓词)**;丙=死特判清单(1 条记录,靠记忆维护)。 -**在册约束就两条**:① 金币不进商店(二层·谓词,理由=计价物不自售);② 机制类在非 Boss 渠道只给门票(一层·分类自身形态,理由=防用钱定点买构筑)。 +**在册约束就两条**:① 金币不进商店(二层·谓词,理由=计价物不自售);② 专长在非 Boss 渠道只给门票(一层·分类自身形态,理由=防用钱定点买构筑)。 **回复应在商店内**(用户 2026-10-05 定):回复不是计价物,套不上「计价物不自售」,按默认原则它应当在商店出现。现行 `shop.tres` 货架只有 attack / max_hp / armor / ap 四项,**现状与表格不对齐,须在实施批补上**。 -**待拍板/待观察两项**:① ~~资源类的命名~~ 与 ~~回复是否属该类~~ **已定(v2.5)=资源类,回复留在其中不拆第四类**(它与金币同为即时兑付、判据同源;拆出去第四类只剩两项)。② **专长门票尚未入表**:出现概率 / 配额 / 全局限量三个参数都没有事实源,入池同样受档位结构锚约束。③ **专长总量与档位阈值的匹配——延后复裁**(用户 2026-10-05 定"先不调整"):终局 Boss 不给已定,一局确定性专长次数=终局前 Boss 个数;**三关结构下是两次,加门票最多三次**,而档位阈值是同标签 ≥2 档一 / ≥4 档二——**档二(完全体)在三关结构下几乎不可达**。用户决定不动,理由是**后续会有第四关**,且届时可能另做获取侧调整。**复裁触发:第四关内容批落地后实测,配合仍太少再调。** 先不调≠不成问题,登记于此防忘。 +**待拍板/待观察两项**:① ~~资源的命名~~ 与 ~~回复是否属该类~~ **已定(v2.5)=资源,回复留在其中不拆第四类**(它与金币同为即时兑付、判据同源;拆出去第四类只剩两项)。② **专长门票尚未入表**:出现概率 / 配额 / 全局限量三个参数都没有事实源,入池同样受档位结构锚约束。③ **专长总量与档位阈值的匹配——延后复裁**(用户 2026-10-05 定"先不调整"):终局 Boss 不给已定,一局确定性专长次数=终局前 Boss 个数;**三关结构下是两次,加门票最多三次**,而档位阈值是同标签 ≥2 档一 / ≥4 档二——**档二(完全体)在三关结构下几乎不可达**。用户决定不动,理由是**后续会有第四关**,且届时可能另做获取侧调整。**复裁触发:第四关内容批落地后实测,配合仍太少再调。** 先不调≠不成问题,登记于此防忘。 ④ **charge 标签件数不足(数据缺陷,独立登记,勿被上条盖掉)**:档二要求同标签 ≥4 件,而 `relics.tres` 里 charge 标签**只有 3 件**——即使获取次数无限,charge 流派也永远达不到档二。这与渠道结构无关,是数据层缺陷。 ⑤ ~~顶层命名待定~~ **已定(v2.4)=「奇物」Wondrous Item**:DND 魔法物品九分类中的兜底杂类,官方中文译名即「奇物」,专装"不好归类但有奇效之物"——正好对应三个互不相干的分类。落选:Treasure(偏财物,装不下专长)、Relic(品类惯例,用户否决「遗物」)、全部自造词(进益/造化/机缘/遇获)。**代码词族随之定为 `curio_*` / `ADVENTURE_CURIO`**——原计划的 `feature_* → reward_*` 对齐**作废**:`reward_pick` 流 / `reward_node` context / `reward_preview` kind 已占用 reward 词族,照做会撞车。 @@ -74,9 +74,9 @@ **状态**:分工已定,**实施待排批**;两项待拍板/待观察(2026-10-05 v2.1 更新) -#### 资源类两个新种类入池——刷新次数、专长获取(2026-10-05 立) +#### 资源两个新种类入池——刷新次数、专长获取(2026-10-05 立) -**现状**:[奇物](systems/冒险循环/奇物.md) v2.0 立了资源类四项,其中**行动点上限**已在池(罕见档)、**金币与回复**已在池,**刷新次数与专长获取两项尚未入表**。注意与既有「商店独立刷新机制」条分清:那条是进店后的免费次数 + GP 刷新(商店自身的服务),本条指的是**作为奖励授予的**重抽次数,两者不是一回事,入池前须先划清边界。 +**现状**:[奇物](systems/冒险循环/奇物.md) v2.0 立了资源四项,其中**行动点上限**已在池(罕见档)、**金币与回复**已在池,**刷新次数与专长获取两项尚未入表**。注意与既有「商店独立刷新机制」条分清:那条是进店后的免费次数 + GP 刷新(商店自身的服务),本条指的是**作为奖励授予的**重抽次数,两者不是一回事,入池前须先划清边界。 **连带约束**:`FEATURE_KINDS` 词表封闭(断点附随件与牌库剔除态依赖它),扩种类须走 `adventure_table.gd` + registry 同步修订;档位配额是**结构锚**(普通 70 / 稀有 25 / 罕见 3 = 98 张,入 schema validate 硬断言),新种类入池要占配额——**改总量须重裁而非调参**。专长获取须带全局限量(一局内可获得次数上限)。 @@ -86,7 +86,7 @@ #### 内部分类禁写入玩家可见面——奇物呈现三处违规待改(2026-10-04 用户立意登记) -**现状**:用户立意(方向已明确):形态(规则改写型/属性加成型)等内部分类**不得写进玩家可见的名称、介绍词或界面**——玩家可根据效果自行推断类别,游戏不得直接点破。查证实态:26 项机制类奖励的 display_name 全风味名(奥术余烬/贯穿射击/矿工的执拗等,合规,符合 2026-09-29 playnote 既有批评);**违规三处**(均系迭代 12 呈现补齐批所落,承载用户「局内奖励选了什么看不到」反馈——缺口承载需求仍成立,撤的只是分类字样):① 三选一+商店特性卡面第二行印流派名(`battle_narrator.gd` relic_card_text,「奥术余烬 · 魔法」式);② 战斗屏 C 区列表标题(现为「特性」)+逐流派聚合行「魔法 ×2 · 档一」(`hero_info_panel_view.gd` + `hud_presenter.gd` relic_holdings_lines);③ 关卡选择页复用同一聚合文案(`level_map_screen.gd`)。**边界**:效果摘要行(「普攻附加必中伤害」)保留——那是件本身在做什么,是玩家推断归类的依据。 +**现状**:用户立意(方向已明确):形态(规则改写型/属性加成型)等内部分类**不得写进玩家可见的名称、介绍词或界面**——玩家可根据效果自行推断类别,游戏不得直接点破。查证实态:26 项专长奖励的 display_name 全风味名(奥术余烬/贯穿射击/矿工的执拗等,合规,符合 2026-09-29 playnote 既有批评);**违规三处**(均系迭代 12 呈现补齐批所落,承载用户「局内奖励选了什么看不到」反馈——缺口承载需求仍成立,撤的只是分类字样):① 三选一+商店特性卡面第二行印流派名(`battle_narrator.gd` relic_card_text,「奥术余烬 · 魔法」式);② 战斗屏 C 区列表标题(现为「特性」)+逐流派聚合行「魔法 ×2 · 档一」(`hero_info_panel_view.gd` + `hud_presenter.gd` relic_holdings_lines);③ 关卡选择页复用同一聚合文案(`level_map_screen.gd`)。**边界**:效果摘要行(「普攻附加必中伤害」)保留——那是件本身在做什么,是玩家推断归类的依据。 **连带裁点**:档位激活(同标签 2 件档一/4 件档二)若完全不呈现,玩家只能靠悟——三路待裁:甲=纯隐藏、机制照跑(以撒套装式,最贴用户「流派是玩家挖掘出来的」原则);乙=档位达成那一刻给一次性风味反馈、不点破流派名;丙=连档位机制一起退役。 @@ -98,7 +98,7 @@ **现状**:概念已统一为「奇物」(2026-10-05 v2.4 由「奖励」改名、v2.0 由「特性」改名,定义见 [奇物](systems/冒险循环/奇物.md))。已完成三件——① 定义文档落位(`design/gdd/systems/冒险循环/奇物.md`);② 称谓统一(代码注释与玩家可见文案,94 处+design/ 侧随改名批同步);③ 数据层标识符统一(`adventure_table.gd` / `adventure.tres` 的常量与字段整体换到 `feature_*` 词族,112 处,值零变更)。 -**未完四件**:⓪ **`feature_*` 词族随顶层改名再换到 `curio_*`**(2026-10-05 v2.0 新增、v2.4 改目标词族)——`FEATURE_KINDS` → `CURIO_KINDS` / `feature_quota()` → `curio_quota()` / `feature_value()` → `curio_value()` / `feature_candidate_count` → `curio_candidate_count` / `feature_quota_*` / `feature_value_*`,涉及 `adventure_table.gd` + `adventure.tres` 键名 + registry。**注意两点**:其一,**目标词族是 `curio_*` 不是 `reward_*`**——`reward_pick`(rng 封闭流 scope)/ `reward_node`(`grant_aux_item` context)/ `reward_preview`(道具 kind)已占用 reward 词族,照 `reward_*` 对齐会撞车;其二,`adventure.tres` 的键名是存档外的表数据,换名只动键不减值,但 `FEATURE_KINDS` 是封闭词表、断点附随件与牌库剔除态依赖它,须走本表 + registry 同步修订。① 机制类那套的 relic 词族(RelicTable / relics.tres / relic_id / _relics)与统一词族对齐——文件名与 class_name 改名须同步 Godot `.uid` 与 `.tscn` 引用,非文本层可自证;② 运行层标识符(`_bonus_deck` / `bonus` 加算区 / `_bonus_taken` / `pick_bonus` / BonusInteractController / BonusPickOverlay)换名;③ 断点与存档键(`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`)为存档兼容沿用历史名,是否随存档版本迁移一并换名待定。 +**未完四件**:⓪ **`feature_*` 词族随顶层改名再换到 `curio_*`**(2026-10-05 v2.0 新增、v2.4 改目标词族)——`FEATURE_KINDS` → `CURIO_KINDS` / `feature_quota()` → `curio_quota()` / `feature_value()` → `curio_value()` / `feature_candidate_count` → `curio_candidate_count` / `feature_quota_*` / `feature_value_*`,涉及 `adventure_table.gd` + `adventure.tres` 键名 + registry。**注意两点**:其一,**目标词族是 `curio_*` 不是 `reward_*`**——`reward_pick`(rng 封闭流 scope)/ `reward_node`(`grant_aux_item` context)/ `reward_preview`(道具 kind)已占用 reward 词族,照 `reward_*` 对齐会撞车;其二,`adventure.tres` 的键名是存档外的表数据,换名只动键不减值,但 `FEATURE_KINDS` 是封闭词表、断点附随件与牌库剔除态依赖它,须走本表 + registry 同步修订。① 专长那套的 relic 词族(RelicTable / relics.tres / relic_id / _relics)与统一词族对齐——文件名与 class_name 改名须同步 Godot `.uid` 与 `.tscn` 引用,非文本层可自证;② 运行层标识符(`_bonus_deck` / `bonus` 加算区 / `_bonus_taken` / `pick_bonus` / BonusInteractController / BonusPickOverlay)换名;③ 断点与存档键(`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`)为存档兼容沿用历史名,是否随存档版本迁移一并换名待定。 **次序建议**:⓪ 与 ① 同为"词族对不齐",可同批;② 涉及运行层最广,单批;③ 须与存档版本迁移一起裁。**顶层已改名而代码仍是 `feature_*`,属"文档与代码分开"的临时态**,应在下一个可跑冒烟的批次内收口。 diff --git a/design/gdd/systems/冒险循环/奇物.md b/design/gdd/systems/冒险循环/奇物.md index 2cd0c468..85717557 100644 --- a/design/gdd/systems/冒险循环/奇物.md +++ b/design/gdd/systems/冒险循环/奇物.md @@ -4,7 +4,7 @@ > > 它是一个概念,不是一套东西。下面有**两根互不相干的轴**: > -> - **分类轴**回答"给的是什么"——三个枚举:机制类 / 属性提升类 / 资源类; +> - **分类轴**回答"给的是什么"——三个枚举:专长 / 属性值提升 / 资源; > - **渠道轴**回答"从哪来"——奖励节点 / 商店 / 关底 Boss 击败(即通过这一关)。 > > 一个奇物属于哪个分类,不决定它从哪个渠道来;反过来也一样。两者的交叉由第 2 节那张开关表定死。 @@ -41,11 +41,11 @@ 关内普通战斗节点 ──▶ 打完不给奇物,继续往下走 │ - ├─ 奖励节点 ──▶ 一次三选一(属性提升类 / 资源类,罕见门票) - ├─ 商店 ──▶ 花钱买(属性提升类 / 资源类,罕见门票) + ├─ 奖励节点 ──▶ 一次三选一(属性值提升 / 资源,罕见门票) + ├─ 商店 ──▶ 花钱买(属性值提升 / 资源,罕见门票) │ 关底 Boss 击败 ═══╗ ← 打掉关底 Boss 就是「通过这一关」,同一件事 - ╰──────────╬──▶ 一次专长三选一(机制类) + ╰──────────╬──▶ 一次专长三选一(专长) ╰──▶ 通关回血 ──▶ 进下一关,带着它继续 ``` @@ -57,25 +57,25 @@ ### 1. 分类轴:三个枚举 -奇物只有一个名词;需要区分时才说它属于哪个分类,不给分类另起名字。 +奇物只有一个名词,但它下面分三类。**这三类各有自己的专名,不是描述**——文档正文、代码词族、帮助与百科页面都用这三个词指代它们。 | 分类 | 它给的是什么 | 落点 | 事实源 | |---|---|---|---| -| **机制类**(专长 Feat) | 给规则。在结算管线某个挂点上给自己加一条规则;同一标签的持有件数达阈值时质变 | 各结算段挂点;标签与档位由求值服务统一算 | `relics.tres`(逐项定义) | -| **属性提升类**(ASI) | 给数字。抬高角色某项战斗属性的基础值 | 冒险加算区的生命上限 / AC / 攻击三轴 | `adventure.tres`(种类配额与值) | -| **资源类** | 给"可用的量"。不抬高战斗属性,也不改规则,而是扩充你能调动的余量与机会 | 行动经济、三选一界面、局内钱包;**不进加算区、多数不进持有集** | `adventure.tres`(种类配额与值) | +| **专长**(Feat) | 给规则。在结算管线某个挂点上给自己加一条规则;同一标签的持有件数达阈值时质变 | 各结算段挂点;标签与档位由求值服务统一算 | `relics.tres`(逐项定义) | +| **属性值提升**(ASI) | 给数字。抬高角色某项战斗属性的基础值 | 冒险加算区的生命上限 / AC / 攻击三轴 | `adventure.tres`(种类配额与值) | +| **资源** | 给"可用的量"。不抬高战斗属性,也不改规则,而是扩充你能调动的余量与机会 | 行动经济、三选一界面、局内钱包;**不进加算区、多数不进持有集** | `adventure.tres`(种类配额与值) | 三类的共性:都在当局获得、都在当局消费完或随冒险收束清零;都不写账号进度——出现与否由抽取决定,玩家的账号强弱不影响它出现在哪一局。 -#### 1.1 机制类:专长 +#### 1.1 专长:规则改写 专长改的是规则而不是数字——它给自己加一条"在某种条件下,本来不会发生的事现在会发生"的规则。它不是任何一条属性轴的延伸,玩家也无法用"加了多少"来衡量它。 专长带流派标签,同一标签的持有件数达到阈值时发生质变(档位机制归 [战斗结算](../战斗循环/战斗结算.md),本文件不展开)。这是它和另两类最直观的体感差别:属性提升是"我更耐打了",专长是"我现在会一件以前不会的事"。 -**专长门票也归这一类**:非 Boss 渠道不直接给专长,而是给一张名为「专长获取」的门票——拿到后立刻开一次专长 N 选一。它给的是"一件你以前不会的事"(只是把选择推迟到一次三选一),按 1.4 的判据归机制类,不归资源类。详见 2.2。 +**专长门票也归专长**:非 Boss 渠道不直接给专长,而是给一张名为「专长获取」的门票——拿到后立刻开一次专长 N 选一。它给的是"一件你以前不会的事"(只是把选择推迟到一次三选一),按 1.4 的判据归专长,不归资源。详见 2.2。 -#### 1.2 属性提升类:纯属性三项 +#### 1.2 属性值提升:纯属性三项 三项,各改一条战斗属性轴: @@ -87,9 +87,9 @@ 三项都直接进冒险加算区,跨关携带且关间不清零。这一类是封闭的:只有这三项,多一项就要走文档修订。 -#### 1.3 资源类:四项 +#### 1.3 资源:四项 -这类装的是"不抬高战斗属性、也不改规则,但让你更有余地"的东西: +资源这一类装的是"不抬高战斗属性、也不改规则,但让你更有余地"的东西: | 项 | 给什么 | 备注 | |---|---|---| @@ -98,21 +98,40 @@ | 金币(GP) | 局内钱包进账 | 进钱包即花掉,不进持有集、不持续生效;**不进商店**(计价物不自售,见 2.4) | | 回复 | 当即回血 | 即时兑付,不进持有集、不持续生效;**在商店内**(见 2.4 的默认原则) | -**这类为什么单独存在**:它的成员不满足"抬高战斗属性"(那归属性提升类),也不满足"改写规则"(那归机制类),但玩家拿到时的感受是一致的——"我能做的事变多了"。把它们跟属性提升混在一起,会让"加了多少攻击"这种可度量的提升和"多一次重抽"这种不可度量的余地摆在同一张候选卡上,玩家没法比。 +**资源为什么单独成一类**:它的成员不满足"抬高战斗属性"(那归属性值提升),也不满足"改写规则"(那归专长),但玩家拿到时的感受是一致的——"我能做的事变多了"。把它们跟属性提升混在一起,会让"加了多少攻击"这种可度量的提升和"多一次重抽"这种不可度量的余地摆在同一张候选卡上,玩家没法比。 -**判据句("资源"这个词太泛,这句是唯一的收口凭据)**:这一类给的是**可以调动、可以花掉的余量**,不是角色基础属性的永久抬升。"资源"是常用词,能力资源、财富资源都叫资源——所以判据必须写死:拿不准一项该归哪类时,问它**会不会进角色自己的属性数值**。会进的归属性提升类,不会进、而是变成你手里多出来的次数或多出来的钱的,归资源类。 +**判据句("资源"这个词太泛,这句是唯一的收口凭据)**:资源给的是**可以调动、可以花掉的余量**,不是角色基础属性的永久抬升。"资源"是常用词,能力资源、财富资源都叫资源——所以判据必须写死:拿不准一项该归哪类时,问它**会不会进角色自己的属性数值**。会进的归属性值提升,不会进、而是变成你手里多出来的次数或多出来的钱的,归资源。 -**这类内部的异质性(要诚实登记)**:金币与回复是**即时兑付**——拿到就消失,不进持有集,也没有"持有→生效→清零"的过程;行动点上限与刷新次数则进持有账本、当局持续有效。它们被归在同一类是因为"给的是余量"这个共同性质,不是因为生命周期相同。这条异质性在此显式登记,防止后续把金币当成会持续生效的东西去结算。 +**资源类内部的异质性(要诚实登记)**:金币与回复是**即时兑付**——拿到就消失,不进持有集,也没有"持有→生效→清零"的过程;行动点上限与刷新次数则进持有账本、当局持续有效。它们被归在同一类是因为"给的是余量"这个共同性质,不是因为生命周期相同。这条异质性在此显式登记,防止后续把金币当成会持续生效的东西去结算。 #### 1.4 分类判据 -**给规则的是机制类,给数字的是属性提升类,给余量的是资源类。** +**给规则的是专长,给数字的是属性值提升,给余量的是资源。** -拿不准的项按这条判:去掉它之后,角色是"某件以前不会的事做不到了"(机制类)、"某个数字少了一截"(属性提升类)、还是"能调动的余地变小了"(资源类)。 +拿不准的项按这条判:去掉它之后,角色是"某件以前不会的事做不到了"(专长)、"某个数字少了一截"(属性值提升)、还是"能调动的余地变小了"(资源)。 #### 1.5 命名出处 -机制类与属性提升类都取自 DND 规则书的既有名词:专长对应 Feat,属性提升对应 Ability Score Improvement(ASI)。**顶层「奇物」取自 DND 魔法物品的九分类之一 Wondrous Item——官方中文译名就是「奇物」,是那个专门装不好归类但有奇效的东西的兜底杂类。** 用它做顶层名的理由:地下城里挖到的、商店里能买到的、能把你变强的、又确实贵重的东西,在 DND 里没有别的总称,只有 Treasure 和 Wondrous Item 两个候选,而 Treasure 偏向财物,装不下专长这种你会了件以前不会的事。奇物天生是杂类兜底,正好对应本概念下三个互不相干的分类(规则 / 数字 / 余量)——它们本来就没有共同点,能拢在一起的只有一个不好归类但有用的名字。**资源类取"资源"这个常用词**(用户 2026-10-05 定)——行动点上限、刷新次数、金币、回复都是可以调动、可以花掉的余量。它确实偏泛(能力资源、财富资源都叫资源),所以这一类的判据句必须写死:**给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升**——这一句是把"资源"从泛用词收回到本类定义里的唯一凭据,不能省。玩家可见文案只写效果,不出现任何分类名。 +专长与属性值提升都取自 DND 规则书的既有名词:专长对应 Feat,属性值提升对应 Ability Score Improvement(ASI)。**顶层「奇物」取自 DND 魔法物品的九分类之一 Wondrous Item——官方中文译名就是「奇物」,是那个专门装不好归类但有奇效的东西的兜底杂类。** 用它做顶层名的理由:地下城里挖到的、商店里能买到的、能把你变强的、又确实贵重的东西,在 DND 里没有别的总称,只有 Treasure 和 Wondrous Item 两个候选,而 Treasure 偏向财物,装不下专长这种你会了件以前不会的事。奇物天生是杂类兜底,正好对应本概念下三个互不相干的分类(专长改规则 / 属性值提升改数字 / 资源给余量)——它们本来就没有共同点,能拢在一起的只有一个不好归类但有用的名字。**资源取"资源"这个常用词**(用户 2026-10-05 定)——行动点上限、刷新次数、金币、回复都是可以调动、可以花掉的余量。它确实偏泛(能力资源、财富资源都叫资源),所以这一类的判据句必须写死:**给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升**——这一句是把"资源"从泛用词收回到本类定义里的唯一凭据,不能省。**三个分类的专名在 v2.7 去掉了「类」字后缀**——此前写作「机制类 / 属性提升类 / 资源类」,那是描述不是专名;去掉后缀后三个词各自都能独立成词、与 DND 官方中文一致,理由与逐条依据见 1.6 节。玩家可见文案只写效果,不出现任何分类名。 + +### 1.6 三层结构与命名(本概念的完整层级) + +奇物这个概念只有三层,任何一处提到它都属于其中一层: + +| 层 | 名称 | 例子 | 谁看得到 | +|---|---|---|---| +| 一层 总称 | **奇物**(Wondrous Item) | 「这一局你捞到的全部奇物」 | 全部玩家可见面 | +| 二层 分类 | **专长** / **属性值提升** / **资源** | 「这四件是属性值提升」 | 帮百科与成就页可见;卡面与详情页**不出现** | +| 三层 单件 | 具体那一件的名称 | 奥术余烬、贯穿射击、小幅提升生命上限 | 全部玩家可见面 | + +**两层是两件事,别混**: + +- **命名是本节的规矩**——三个分类各有一个专名,文档、代码词族、帮百科一律用它。指代某个分类时直接说「专长」,不说「机制类」「专长那一类」。 +- **呈现是另一件事**(归 [battle](../ux/battle.md) 与 [node-reward](../ux/node-reward.md),本节不裁决):玩家看到某件奇物时,卡面只写**这件东西的名字与效果**,不附带它的分类。玩家可以从效果反推它属于哪一类,但界面不替他说破。 + +**为什么两层都要有**:分类名在卡面上不出现,不等于玩家对它没有概念——帮助手册、百科条目、成就名称三处一定会用到它(「首次集齐 4 件专长」「三件属性值提升」),效果描述里出现指代时也需要名字(「本项属专长,同标签达到 4 件时质变」)。所以它必须是一个**玩家读得懂、读一遍就懂**的正式名词,不能是内部描述或自造词。 + +**代码侧词族对应**(本批只做命名对齐,代码改动见任务书):顶层 `curio_*`(奇物总称)/ 专长 `feat_*` / 属性值提升 `asi_*` / 资源 `res_*`。`reward_*` 已被既有标识符占用(`reward_pick` / `reward_node` / `reward_preview`),**不得使用**。 ### 2. 渠道轴:与分类的交叉 @@ -120,9 +139,9 @@ | 分类 \ 渠道 | 奖励节点 | 商店 | 关底 Boss 击败=通过这一关(见 2.1) | |---|---|---|---| -| **机制类**(专长) | 门票形式(见 2.2) | 门票形式(见 2.2) | **直接给**(唯一的直接渠道) | -| **属性提升类** | 出 | 出(口径「训练」) | 不出现 | -| **资源类** | 出 | 出(**金币除外**,见 2.4) | 不出现 | +| **专长**(专长) | 门票形式(见 2.2) | 门票形式(见 2.2) | **直接给**(唯一的直接渠道) | +| **属性值提升** | 出 | 出(口径「训练」) | 不出现 | +| **资源** | 出 | 出(**金币除外**,见 2.4) | 不出现 | **这张表的形状**:Boss 渠道是**专长的独占渠道**,也是唯一**直接**给专长的渠道;奖励节点与商店不直接给专长,但会出现通往专长的**门票**。另两类不走 Boss 渠道,只在奖励节点与商店两个并行出口出现。三条渠道的分工因此是"一块独占 + 两块并行",不是三块平分。这条形状本身要记住:它意味着专长的获取节奏与其他奇物的获取节奏**由完全不同的机制决定**——前者靠打赢,后者靠抽取与购买。 @@ -133,7 +152,7 @@ 两条的管辖范围不同:前者决定"这张表的格子填不填",后者决定"填了的格子里装不装得全"。 -#### 2.1 机制类的主渠道:关底 Boss 击败(即通过这一关) +#### 2.1 专长的主渠道:关底 Boss 击败(即通过这一关) 专长的专属渠道,时机确定——打赢就有,不需要看脸。构筑的节奏由此可预期:玩家能规划"第几关拿到第一个专长"。品类原型是杀戮尖塔(每层 Boss 后必给遗物)与哈迪斯(Boss 后必给恩赐)——打赢了一定拿到东西,是这类游戏的通例。 @@ -147,7 +166,7 @@ 奖励节点与商店**不直接给专长**——它们给的是一张**门票**:一个名为「专长获取」的奇物项,选中或买下之后,**立刻**开一次专长 N 选一(N 与 Boss 渠道的候选数同源)。 -**它归机制类,不归资源类**:它给的不是"余量",而是"一件你以前不会的事"——只是把选择推迟到一次三选一。按 1.4 的分类判据(去掉它之后角色少了什么),它属于机制类。所以在交叉表上,机制类在非 Boss 渠道的表现是**只以门票形式出现**,不是"不出现"。 +**它归专长,不归资源**:它给的不是"余量",而是"一件你以前不会的事"——只是把选择推迟到一次三选一。按 1.4 的分类判据(去掉它之后角色少了什么),它属于专长。所以在交叉表上,专长在非 Boss 渠道的表现是**只以门票形式出现**,不是"不出现"。 **为什么非 Boss 渠道只给门票**:如果商店也能直接买到一个指定的专长,玩家就能用金币把构筑买出来,Boss 渠道的"打赢才拿到"就失去意义了。门票保留了惊喜(开出来的还是三选一,不是指定),但不让玩家用钱直接定点购买。 @@ -184,7 +203,7 @@ | 层 | 是什么 | 判据来源 | 新增渠道或奇物时 | |---|---|---|---| -| **一层 分类白名单** | 分类轴决定渠道——机制类走 Boss、另两类走奖励节点与商店 | 分类本身 | 新分类按 1.4 判据归类,自动继承该类的渠道 | +| **一层 分类白名单** | 分类轴决定渠道——专长走 Boss、另两类走奖励节点与商店 | 分类本身 | 新分类按 1.4 判据归类,自动继承该类的渠道 | | **二层 可计算谓词** | 渠道与奇物之间的**结构性**关系,能算出来 | 对象与渠道的内在关系 | **自动适用,不用改表** | | **三层 显式例外清单** | 人为的设计选择,没有内在理由可推 | 设计决定 | **只能逐条加,每条必须写理由** | @@ -216,8 +235,8 @@ | 约束 | 层 | 理由 | |---|---|---| | 金币不进商店 | 二层·谓词 | 计价物不自售——商店的计价物是 GP | -| 机制类在非 Boss 渠道只给门票 | 一层·分类自身的形态 | 见 2.2——防止用钱定点买构筑 | -| 属性提升类与资源类不出现在 Boss 渠道 | **不是约束** | 见 2.1——这是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖 | +| 专长在非 Boss 渠道只给门票 | 一层·分类自身的形态 | 见 2.2——防止用钱定点买构筑 | +| 属性值提升与资源不出现在 Boss 渠道 | **不是约束** | 见 2.1——这是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖 | #### 2.5 在册事项 @@ -226,8 +245,8 @@ ### 3. 作用对象与范围 - **作用对象**:角色本人,以及角色参与的结算过程。奇物不改敌人、不改棋盘生成、不改关卡内容。 -- **刷新次数的例外**:它作用在三选一界面上,改的是"这一局里你能重选几次",而不是角色身上的任何数字。它是资源类里唯一一条作用对象不是角色的项——留在这里是因为它满足另外三条:当局获得、当局有效、进同一份持有账本。这条例外在此显式登记,避免后续把它当成角色属性去结算。 -- **时间范围**:整局冒险。机制类与属性提升类自获得起对本局剩余所有关卡生效,跨关携带且关间不清零;资源类里的金币与回复是即时兑付,拿到即消费完。 +- **刷新次数的例外**:它作用在三选一界面上,改的是"这一局里你能重选几次",而不是角色身上的任何数字。它是资源里唯一一条作用对象不是角色的项——留在这里是因为它满足另外三条:当局获得、当局有效、进同一份持有账本。这条例外在此显式登记,避免后续把它当成角色属性去结算。 +- **时间范围**:整局冒险。专长与属性值提升自获得起对本局剩余所有关卡生效,跨关携带且关间不清零;资源里的金币与回复是即时兑付,拿到即消费完。 - **归属范围**:不进账号永久进度,不带到下一次冒险。 ### 4. 生命周期 @@ -240,10 +259,10 @@ | 阶段 | 说明 | |---|---| -| 候选池构建 | 冒险开局时一次建成。三个分类的候选**现同处一个令牌池**:属性提升类与资源类按配额铺开,机制类按定义表的有效行铺开。 | +| 候选池构建 | 冒险开局时一次建成。三个分类的候选**现同处一个令牌池**:属性值提升与资源按配额铺开,专长按定义表的有效行铺开。 | | 出现 | 玩家在渠道上看到若干候选(三选一的形式),看不到整个池。 | -| 选定 | 玩家选定一项后,它从池中剔除,此后任何渠道都不会再见。选到「专长获取」时,立刻再开一次专长 N 选一——这次选择走机制类的渠道语义,不占用原本的渠道。 | -| 持有与兑付 | 机制类与属性提升类进入持有集后立即生效,跨关携带;机制类按同一标签的持有项数决定处于哪一档。金币与回复即时兑付,不入持有集。 | +| 选定 | 玩家选定一项后,它从池中剔除,此后任何渠道都不会再见。选到「专长获取」时,立刻再开一次专长 N 选一——这次选择走专长的渠道语义,不占用原本的渠道。 | +| 持有与兑付 | 专长与属性值提升进入持有集后立即生效,跨关携带;专长按同一标签的持有项数决定处于哪一档。金币与回复即时兑付,不入持有集。 | | 清零 | 冒险以任一结局收束时整集清空;下次开局重建。 | | 断点恢复 | 进行中的冒险把持有集与剩余候选池一并写入断点,续玩后恢复到同一状态(断点里的键名沿用历史形态,不随本次改名变动)。 | @@ -253,9 +272,9 @@ |---|---| | [魔法道具](../排雷循环/魔法道具.md) | 最需要分清的一对,判据是生命周期:**奇物当局清零,魔法道具跨冒险保留**。两者互不相通——奇物永不进同调位,魔法道具永不进当局随机渠道。 | | [元进度](../跨局循环/元进度.md)(树) | 树管账号永久的规则与容量,奇物管当局构筑,两层互不代替。 | -| [战斗结算](../战斗循环/战斗结算.md) | 机制类的挂点位于结算管线的各段;挂点清单与语义归结算文档。 | +| [战斗结算](../战斗循环/战斗结算.md) | 专长的挂点位于结算管线的各段;挂点清单与语义归结算文档。 | | [行动经济](../排雷循环/行动经济.md)、[地形变异](../排雷循环/地形变异.md) | 部分挂点落在行动点结转与地形处理上,语义归各自文档。 | -| [关卡节点地图](关卡节点地图.md) | 是渠道的载体,不是奇物的属性。机制类挂在 Boss 节点兑付面上,节点类型词表零扩类。 | +| [关卡节点地图](关卡节点地图.md) | 是渠道的载体,不是奇物的属性。专长挂在 Boss 节点兑付面上,节点类型词表零扩类。 | | [地图战斗资源](../战斗循环/地图战斗资源.md)(格面资源) | 无关:格面资源是单格的一次性产出,不进持有集,也不是渠道给的。 | | [存档序列化](../表现与支撑/存档序列化.md) | 断点负载记录持有集与剩余候选池;键名与版本迁移策略归存档文档。 | @@ -264,7 +283,7 @@ | 类型 | 内容 | |---|---| | 依赖(概念) | 角色、结算管线、行动点、地形、关卡节点地图、局内金币钱包、三选一界面 | -| 依赖(数据) | `relics.tres`(机制类定义行)、`adventure.tres`(属性提升类与资源类的种类配额与值)、`shop.tres`(货架取舍) | +| 依赖(数据) | `relics.tres`(专长定义行)、`adventure.tres`(属性值提升与资源的种类配额与值)、`shop.tres`(货架取舍) | | 输出(对外) | 持有集、生效中的分类投影、剩余候选池、档位求值结果、可用重抽次数 | | 明确边界 | 不写账号进度、不改敌人与关卡内容、不承载具体数值 | @@ -280,10 +299,10 @@ | 参数 | 取值域 | 事实源 | |---|---|---| -| 机制类定义行(标识 / 显示名 / 稀有度 / 标签 / 挂点 / 效果字典) | 各字段封闭枚举,行键白名单封闭 | `game/data/tables/relics.tres` | +| 专长定义行(标识 / 显示名 / 稀有度 / 标签 / 挂点 / 效果字典) | 各字段封闭枚举,行键白名单封闭 | `game/data/tables/relics.tres` | | 专长门票(出现概率 / 配额 / 全局限量) | 整数 | **尚未入表**,见待办 | -| 属性提升类种类 | 封闭三项:生命上限 / AC / 攻击,扩项走文档修订 | `game/data/schemas/adventure_table.gd` | -| 资源类种类 | 行动点上限 / 金币 / 回复(**刷新次数与专长获取两项尚未入表**,见待办) | 同上 | +| 属性值提升种类 | 封闭三项:生命上限 / AC / 攻击,扩项走文档修订 | `game/data/schemas/adventure_table.gd` | +| 资源种类 | 行动点上限 / 金币 / 回复(**刷新次数与专长获取两项尚未入表**,见待办) | 同上 | | 稀有度档位 | 封闭三档(普通 / 稀有 / 罕见);三档配额是结构锚,改总量须重新拍板而非调参 | 同上 | | 各分类种类 × 档位的配额与值 | 整数 | `game/data/tables/adventure.tres` | | 专长获取的全局限量 | 整数(一局内可获得的次数上限) | 同上 | @@ -294,9 +313,9 @@ 1. 三个分类走同一套获取流程,代码里只有一个表示"已持有奇物"的集合。 2. 一次冒险内获得的奇物在之后任何关卡都生效;开新冒险后持有集为空。 3. 一项被选定的奇物不再出现在任何后续渠道。 -4. 每个流派标签至少有一项挂在排雷侧的结算触发点上(防止机制类沦为纯战斗数值)。 +4. 每个流派标签至少有一项挂在排雷侧的结算触发点上(防止专长沦为纯战斗数值)。 5. 玩家可见的文案不出现分类名与内部分组标签——只写效果,归类让玩家自己推断。 -6. 文档与代码里提到它时只有"奇物"这一个名字;需要区分时用"机制类/属性提升类/资源类"描述,不得另造称呼。 +6. 文档与代码里提到它时只有"奇物"这一个名字;需要区分时用"专长/属性值提升/资源"描述,不得另造称呼。 7. 刷新次数不进角色加算区——它只改三选一界面的可用重抽次数。 8. 金币与回复不进持有集——它们是即时兑付,拿到即消费完。 9. 金币不出现在商店货架上——这是「计价物不自售」谓词算出来的结果,不是给金币单独立的一个分类;它确实是在分类白名单之外加的一道过滤,只是这道过滤可自动计算而非靠枚举。 @@ -310,7 +329,7 @@ 本节只点出四条由本版新立、尚未登记的判断来源: -- **回复归属已定(v2.5)**:留在资源类,不独立成第四类。理由是它与金币同为**即时兑付**、都给的是可花掉的余量,拆出去之后第四类只有两项、且与资源类的判据完全同源——分类的价值在于判据能一刀切得开,拆一个判据同源的类只会让读者多查一张表。 +- **回复归属已定(v2.5)**:留在资源,不独立成第四类。理由是它与金币同为**即时兑付**、都给的是可花掉的余量,拆出去之后第四类只有两项、且与资源的判据完全同源——分类的价值在于判据能一刀切得开,拆一个判据同源的类只会让读者多查一张表。 - **专长门票尚未入表**:出现概率、配额、限购次数、保底计数阈值四个参数都没有事实源;入池时同样受档位结构锚约束(改总量须重裁而非调参)。 - **专长总量与档位阈值的匹配——延后复裁(用户 2026-10-05 定"先不调整")**:终局 Boss 不给已定,一局确定性专长次数=终局前 Boss 的个数。三关结构下是两次,加上门票最多三次,而档位阈值是同标签 ≥2 档一 / ≥4 档二——**档二(完全体)在三关结构下几乎不可达**。用户决定不动,理由是后续会有第四关,且届时可能另做获取侧的调整。**复裁触发条件:第四关内容批落地后实测,若配合仍太少再调**。登记于此防止它被忘掉。 - **charge 标签件数不足(数据缺陷,独立登记)**:档二要求同标签 ≥4 件,而 `relics.tres` 里 charge 标签**只有 3 件**——即使获取次数无限,charge 流派也永远达不到档二。这与渠道结构无关,是数据层缺陷,随上一条一并延后,但不要被上一条盖掉。 @@ -322,11 +341,13 @@ | v1.0 | 2026-10-05 | 以「特性」为名首次为本概念立定义文档。此前它按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),现收敛为一个对象下的分类;性质定为「角色自身得到提升」而非「获得物品」。 | | v1.1 | 2026-10-05 | 分类重构:两类由「规则改写型 / 属性加成型」改为「属性提升 / 专长」。 | | v1.2 | 2026-10-05 | 专长渠道落定:关底 Boss 击败后兑付,不新增节点类型;罕见旁路明确为"普通奖励里的专长 N 选一"。 | -| **v2.0** | 2026-10-05 | **顶层改名为「奖励」并重构为两根轴**。改名动因:筐里既装"角色自身的变化"也装金币这类一次性兑付物,用"自身提升 vs 持有物"已切不开,边界判据改由生命周期承担——**当局清零的是奖励,跨局带走的是魔法道具**。分类由两类改为**三个枚举**:机制类(专长)/ 属性提升类(生命·AC·攻击)/ 资源类(行动点上限·刷新次数·金币·回复,命名待定)。新增第 2 节分类 × 渠道交叉开关表,明确两根轴互不决定;金币与回复不再被当作"该移出去的脏东西",而是安置在资源类里,同时把它们的即时兑付性质显式登记为类内异质性。 | -| v2.1 | 2026-10-05 | **交叉表收口(用户拍板)**:Boss 渠道**只出专长**,属性提升类与资源类在此均不出现——三条渠道的形状定为"一块独占 + 两块并行",专长靠打赢、其余靠抽取与购买。Boss 兑付明确为**终局前**的 Boss,终局 Boss 不给(无后续关卡可消费)。新增 2.4 节**「计价物不自售」规则**:金币不进商店既不拆分类也不开特例,而是写成两轴交叉处的一条约束——商店的计价物是金币,故金币不进商店;按"能不能进商店"反推分类等于用渠道轴去切分类轴,两根轴会缠回去。 | -| v2.2 | 2026-10-05 | **门票形态 + 约束分层 + 默认原则**。① 用户明确:奖励节点与商店不直接给专长,而是给一个**「专长获取」道具**,拿到后开专长三选一——交叉表机制类在两渠道由"不出现"改为"**门票形式**";门票归机制类(给的是一件以前不会的事,只是把选择推迟),理由是防止用钱定点买构筑。② 用户质疑「计价物不自售」本质是特判——**承认成立**:它确实是在分类白名单之外加的一道过滤,与死特判的区别在于把"枚举例外"变成"**可计算谓词**"(新渠道/新奖励自动判定)。2.4 改写为**三层约束**(分类白名单 / 可计算谓词 / 显式例外清单),并给出判断标准:结构性原因可写成谓词,设计性原因只能进清单且每条须写理由;三个方案(单独分类 / 谓词 / 死特判)的代价并列摆出,不藏折中。③ 用户定**默认原则**:除已登记的特殊规则外,分类内的东西都要在池子里——据此**回复应在商店内**,现行 shop.tres 货架缺它是"现状与表格不对齐",须在实施批补上。 | +| **v2.0** | 2026-10-05 | **顶层改名为「奖励」并重构为两根轴**。改名动因:筐里既装"角色自身的变化"也装金币这类一次性兑付物,用"自身提升 vs 持有物"已切不开,边界判据改由生命周期承担——**当局清零的是奖励,跨局带走的是魔法道具**。分类由两类改为**三个枚举**(当时的写法是「机制类 / 属性提升类 / 资源与机会类」,v2.7 才定名为专长 / 属性值提升 / 资源):专长 / 属性值提升(生命·AC·攻击)/ 资源(行动点上限·刷新次数·金币·回复)。新增第 2 节分类 × 渠道交叉开关表,明确两根轴互不决定;金币与回复不再被当作"该移出去的脏东西",而是安置在资源里,同时把它们的即时兑付性质显式登记为类内异质性。 | +| v2.1 | 2026-10-05 | **交叉表收口(用户拍板)**:Boss 渠道**只出专长**,属性值提升与资源在此均不出现——三条渠道的形状定为"一块独占 + 两块并行",专长靠打赢、其余靠抽取与购买。Boss 兑付明确为**终局前**的 Boss,终局 Boss 不给(无后续关卡可消费)。新增 2.4 节**「计价物不自售」规则**:金币不进商店既不拆分类也不开特例,而是写成两轴交叉处的一条约束——商店的计价物是金币,故金币不进商店;按"能不能进商店"反推分类等于用渠道轴去切分类轴,两根轴会缠回去。 | +| v2.2 | 2026-10-05 | **门票形态 + 约束分层 + 默认原则**。① 用户明确:奖励节点与商店不直接给专长,而是给一个**「专长获取」道具**,拿到后开专长三选一——交叉表专长在两渠道由"不出现"改为"**门票形式**";门票归专长(给的是一件以前不会的事,只是把选择推迟),理由是防止用钱定点买构筑。② 用户质疑「计价物不自售」本质是特判——**承认成立**:它确实是在分类白名单之外加的一道过滤,与死特判的区别在于把"枚举例外"变成"**可计算谓词**"(新渠道/新奖励自动判定)。2.4 改写为**三层约束**(分类白名单 / 可计算谓词 / 显式例外清单),并给出判断标准:结构性原因可写成谓词,设计性原因只能进清单且每条须写理由;三个方案(单独分类 / 谓词 / 死特判)的代价并列摆出,不藏折中。③ 用户定**默认原则**:除已登记的特殊规则外,分类内的东西都要在池子里——据此**回复应在商店内**,现行 shop.tres 货架缺它是"现状与表格不对齐",须在实施批补上。 | | v2.3 | 2026-10-05 | **门票机制细化 + 默认原则表述修正**。① 门票**拿到即开、不可囤积**(用户定)——不进持有集,防止玩家把关键决策无限推迟,也防持有物语义从后门回来。② 门票的"罕见"**只在概率不在价格**,一局限购一次,并加**计步保底**:连续 5 次三选一展示未出现则第 6 次必出;计数跨奖励节点与商店共享、**刷新后的重新展示计入**(用户明定含刷新),限购用满后保底不再触发。③ **修正 v2.2 的误读**:把"分类在某渠道不出现"当成需要理由的缺格是错的——渠道出哪些分类是渠道轴的定位(Boss 只出专长),不是例外;默认原则只管**分类内部**的成员齐不齐。④ 专长总量与档位阈值的匹配按用户决定**延后**(待第四关内容批后实测复裁),另单独登记 charge 标签仅 3 件、永远达不到档二的数据缺陷。 | +| **v2.7** | 2026-10-05 | **三个子节点正式定名(用户拍板:去「类」字后缀)**。此前三个分类只有带后缀的描述(机制类 / 属性提升类 / 资源类),是文档层临时叫法,既非专名也非玩家可读的词。现定专名:**专长**(Feat)/ **属性值提升**(ASI)/ **资源**。定名依据:前两个是 DND 规则书官方中文,且与用户 v1.1 原话一致(当时原话就是「属性提升(ASI)」与「专长」,v1.1 落文时被加了「类」字后缀而退化成描述)。「机制类」这个叫法本身还有硬伤——它的 28 个成员里没有一件是"机制",实际是"在结算挂点上改一条规则",读者看到会误解为游戏机制。 +**新增 1.6 节「三层结构与命名」**(用户 2026-10-05 拍板做玩家可见的三层):奇物(总称)/三个分类/具体单件。明确**命名是本节规矩、呈现是另一件事**——分类名在卡面不出现(归 battle.md / node-reward.md 裁决),但帮百科、成就名、效果描述的指代三处都要用,所以它必须是玩家读一遍就懂的正式名词。连带:修掉批量替换撞出的五处「专长(专长)」类自撞、v2.0 历史行内的自撞并标注当时的旧称、registry 的「资源(命名待定)」过期标注。 | **v2.6** | 2026-10-05 | **修正核心循环位置图:奇物不是打一场战斗给一份**(用户纠错)。原图把"关内 排雷推理 → 战斗结算 → 通关 → 得到一份奇物"画成一条链,读起来就是每场战斗通关都给一份——**错在把关内普通战斗的通关与关底 Boss 的通关混为一谈**。按 [冒险结构](冒险结构.md) 的定义,**通关一关 = 该关关底 Boss 被击杀**,所以"击败 Boss"与"通过这一关"是同一个时刻、不是一条链上的两步。改法:① 图改为分支结构(普通战斗节点→不给、往下走;关底 Boss 击败→专长三选一+通关回血);② **一关只兑付一次**写成显式口径;③ 2.1 节渠道名由"终局前 Boss 击败后"改为"关底 Boss 击败(即通过这一关)",并写明触发点就是关卡推进本身那一刻;④ 文首引言加"兑付频率"条,交叉表渠道名与 registry 同步;⑤ 连带修掉一处污染——节点类型封闭枚举五种里的"奖励"曾被 v2.4 批量替换误伤成"奇物"(节点类型里没有奇物这一类),已复原。 | -| **v2.5** | 2026-10-05 | **第三类定名「资源类」**(用户拍板,父节点定为「奇物」后解锁)。定名依据:行动点上限 / 刷新次数 / 金币 / 回复都是可以调动、可以花掉的余量。「资源」偏泛(能力资源、财富资源都叫资源),因此在 1.5 写死判据句——**给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升**,这一句是把泛用词收回本类定义的唯一凭据。**回复归属同时定案:留在资源类,不独立成第四类**——它与金币同为即时兑付、判据同源,拆出去第四类只剩两项且与本类判据重合。附带修复:1.5 段末与「### 2. 渠道轴」标题粘连(缺换行)。 | +| **v2.5** | 2026-10-05 | **第三类定名「资源」**(用户拍板,父节点定为「奇物」后解锁)。定名依据:行动点上限 / 刷新次数 / 金币 / 回复都是可以调动、可以花掉的余量。「资源」偏泛(能力资源、财富资源都叫资源),因此在 1.5 写死判据句——**给的是可消耗或可重掷的余量,不是角色基础属性的永久抬升**,这一句是把泛用词收回本类定义的唯一凭据。**回复归属同时定案:留在资源,不独立成第四类**——它与金币同为即时兑付、判据同源,拆出去第四类只剩两项且与本类判据重合。附带修复:1.5 段末与「### 2. 渠道轴」标题粘连(缺换行)。 | | **v2.4** | 2026-10-05 | **顶层由「奖励」改名为「奇物」(Wondrous Item)**。用户否决了「奖励」「收益」与全部自造词(进益/造化/机缘/遇获),要求回到 DND/西幻既有名词。定名依据:DMG 魔法物品九分类中的 Wondrous Item,官方中文译名即「奇物」,是专装不好归类但有奇效之物的兜底杂类——正好对应本概念下三个互不相干的分类。此前考虑过的 Treasure(宝物)因偏财物、装不下专长而落选;roguelike 品类惯例 Relic 因用户否决遗物落选。**代码词族定为 `curio_*`、`ADVENTURE_CURIO`**(`reward_*` 已被 `reward_pick` / `reward_node` / `reward_preview` 占用,不能对齐)。 | diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 523aa068..14542970 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -326,7 +326,7 @@ entities: table: RewardTable(数据配置 承载,键 = reward_id;地图战斗资源 回填 owner;**2026-09-15 格面资源批结构性重写**——旧 category / use_timing / 库存 / 供给轴随可选类删除整批下线,五型 × 极性字典取代〔历史结构见底部修订记录〕) fields: reward_id: String(表内主键) - cell_type: enum {attack, defense, heal, blast, weaken, pierce, magic, action, gp}——九型封闭(2026-09-18 伤害道具批五→七、2026-09-20 格面资源八型批七→八 +action、同日 GP+商店房批八→九 +gp;格面资源类型身份;CELL_TYPE_KEYS 词表十八格 = 九型 × 正负,表里出现清单外值加载拒绝 fail-fast) # 2026-09-15 新增,取代 category;2026-09-18 扩七型;2026-09-20 八型批扩八型;同日 GP+商店房批扩九型 + cell_type: enum {attack, defense, heal, blast, weaken, pierce, magic, action, gp}——九型封闭(2026-09-18 伤害道具批五→七、2026-09-20 格面资源八型批七→八 +action、同日 GP+商店房批八→九 +gp;格面资源型身份;CELL_TYPE_KEYS 词表十八格 = 九型 × 正负,表里出现清单外值加载拒绝 fail-fast) # 2026-09-15 新增,取代 category;2026-09-18 扩七型;2026-09-20 八型批扩八型;同日 GP+商店房批扩九型 polarity: enum {positive, negative}——同型两行:正向行参与摇号(权重 = 类型频次),负向行纯兑付字典、不消费权重 # 2026-09-15 新增 effect_id: String 可空——percent 类行(attack/defense/weaken 正负两向)必填(StatusEffectTable 精确引用,悬空校验已激活);flat 直付行(直伤/群伤/治疗)恒空 stacks: int [1,16] 可省——多层授予行(原 blast 负向 ambush_double ×2 层——该行随 2026-09-20 八型批退役,现行表无 stacks 行、字段保留 schema 位);缺省 1 @@ -579,16 +579,17 @@ entities: owner: design/gdd/systems/冒险循环/奇物.md attributes: definition: 一次冒险之内通过各渠道给予玩家的增益总称——奖励节点给的、商店买的、打赢关底 Boss 给的,都是奇物。装的是"这一局你捞到了什么",不管从哪个渠道来 - channel_constraint_layers: 渠道约束分三层——一层 分类白名单(分类轴决定渠道);二层 可计算谓词(渠道与奇物的结构性关系,如「计价物不自售」:X 是渠道 C 的计价物 → X 不进 C;新渠道/新奇物自动判定,不用改表);三层 显式例外清单(人为设计选择,只能逐条加,每条须写理由)。要害不是有没有例外,而是例外能不能被算出来——结构性原因写成谓词,设计性原因进清单。在册约束两条:①金币不进商店(二层·谓词)②机制类在非 Boss 渠道只给门票(一层·分类形态)。**注意**:属性提升类/资源类不出现在 Boss 渠道**不是约束**——那是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖。**「计价物不自售」形式上确是在白名单外加的一道过滤(用户质疑成立),与死特判的区别在于把枚举例外变成计算谓词** + channel_constraint_layers: 渠道约束分三层——一层 分类白名单(分类轴决定渠道);二层 可计算谓词(渠道与奇物的结构性关系,如「计价物不自售」:X 是渠道 C 的计价物 → X 不进 C;新渠道/新奇物自动判定,不用改表);三层 显式例外清单(人为设计选择,只能逐条加,每条须写理由)。要害不是有没有例外,而是例外能不能被算出来——结构性原因写成谓词,设计性原因进清单。在册约束两条:①金币不进商店(二层·谓词)②专长在非 Boss 渠道只给门票(一层·分类形态)。**注意**:属性值提升/资源不出现在 Boss 渠道**不是约束**——那是渠道轴的定位(Boss 是专长独占渠道),不属默认原则管辖。**「计价物不自售」形式上确是在白名单外加的一道过滤(用户质疑成立),与死特判的区别在于把枚举例外变成计算谓词** axes: 两根互不决定的轴——**分类轴**(给的是什么)与**渠道轴**(从哪来)。一个奇物属于哪个分类不决定它从哪个渠道来;交叉关系由 [奇物](design/gdd/systems/冒险循环/奇物.md) 第 2 节开关表定死 - categories: 封闭三类 {机制类, 属性提升类, 资源类}(v2.0 起;v1.1 曾用两类、v1.0 曾用 {rule, stat},均已作废)。机制类(专长 Feat)——在结算管线某个挂点上给自己加一条规则,同标签持有项数达阈值时质变,事实源 relics.tres;属性提升类(ASI)——抬高生命上限 / AC / 攻击三轴基础值,进冒险加算区,事实源 adventure.tres;资源类(命名待定)——给"可用的量",不抬高战斗属性也不改规则:行动点上限 / 刷新次数 / 金币 / 回复,不进加算区、多数不进持有集,事实源 adventure.tres - scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,机制类与属性提升类跨关携带、关间不清零,金币与回复即时兑付;归属范围 = 不进账号永久进度,不带到下一次冒险 + categories: 封闭三类 {专长 Feat, 属性值提升 ASI, 资源}(v2.7 定名,**去「类」字后缀**——此前为描述式叫法「机制类 / 属性提升类 / 资源类」,非专名;用户 v1.1 原话即「属性提升(ASI)」与「专长」,v1.1 落文时被加后缀而退化。v2.0 起为三类、v1.1 曾用两类、v1.0 曾用 {rule, stat},均已作废)。 + hierarchy: 玩家可见的三层(用户 2026-10-05 拍板)——一层总称「奇物」/二层三个分类/三层具体单件(如 奥术余烬、贯穿射击)。**命名与呈现是两件事**:分类各有一个正式专名,文档、代码词族、帮百科/成就名/效果描述的指代一律用它;但卡面与详情页只写单件名与效果、不附带分类(呈现面归 battle.md / node-reward.md 裁决,本条目不预断)专长(Feat)——在结算管线某个挂点上给自己加一条规则,同标签持有项数达阈值时质变,事实源 relics.tres;属性值提升(ASI)——抬高生命上限 / AC / 攻击三轴基础值,进冒险加算区,事实源 adventure.tres;资源——给"可用的量",不抬高战斗属性也不改规则:行动点上限 / 刷新次数 / 金币 / 回复,不进加算区、多数不进持有集,事实源 adventure.tres + scope: 作用对象 = 角色本人与其参与的结算(不改敌人、不改棋盘生成、不改关卡内容);**例外**——刷新次数作用在三选一界面而非角色身上,不进加算区;时间范围 = 整局冒险,专长与属性值提升跨关携带、关间不清零,金币与回复即时兑付;归属范围 = 不进账号永久进度,不带到下一次冒险 lifecycle: 候选池构建(冒险开局一次)→ 在渠道上出现(三选一形式)→ 选定(自池中剔除不再复现;选到「专长获取」时立刻再开一次专长 N 选一)→ 持有生效或即时兑付 → 冒险以任一结局收束时整集清零;断点记录持有集与剩余候选池 - acquisition: 三条渠道的**目标分工(交叉开关,v2.2 收口)**——机制类:主渠道=**关底 Boss 击败=通过这一关**(**唯一直接给的渠道**;不新增节点类型、挂 Boss 节点兑付面;末关的 Boss 击败后不给——无后续关卡可消费)。**兑付频率**:奇物不是打一场战斗给一份,关内普通战斗节点不给任何奇物,一关之内只兑付一次(奖励节点与商店同理,各节点各自兑付),奖励节点与商店**只给「专长获取」门票**——**拿到即开、不可囤积**,不进持有集(选中/买下同一时刻开专长三选一;可囤积会让玩家无限推迟关键决策,且把持有物语义从后门放回)。门票归机制类(给的是一件以前不会的事,只是把选择推迟)。罕见**只在概率不在价格**,一局限购一次,**计步保底**:连续 5 次三选一展示未出现→第 6 次必出(计数=展示次数、刷新重展计入、奖励节点与商店共享、触发清零、限购用满后不再触发);属性提升类:奖励节点 + 商店(口径「训练」);资源类:奖励节点 + 商店(**金币除外、回复在内**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**默认原则**:除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里——任何不出现都须登记理由**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 + acquisition: 三条渠道的**目标分工(交叉开关,v2.2 收口)**——专长:主渠道=**关底 Boss 击败=通过这一关**(**唯一直接给的渠道**;不新增节点类型、挂 Boss 节点兑付面;末关的 Boss 击败后不给——无后续关卡可消费)。**兑付频率**:奇物不是打一场战斗给一份,关内普通战斗节点不给任何奇物,一关之内只兑付一次(奖励节点与商店同理,各节点各自兑付),奖励节点与商店**只给「专长获取」门票**——**拿到即开、不可囤积**,不进持有集(选中/买下同一时刻开专长三选一;可囤积会让玩家无限推迟关键决策,且把持有物语义从后门放回)。门票归专长(给的是一件以前不会的事,只是把选择推迟)。罕见**只在概率不在价格**,一局限购一次,**计步保底**:连续 5 次三选一展示未出现→第 6 次必出(计数=展示次数、刷新重展计入、奖励节点与商店共享、触发清零、限购用满后不再触发);属性值提升:奖励节点 + 商店(口径「训练」);资源:奖励节点 + 商店(**金币除外、回复在内**);后两类均不出现在 Boss 渠道。形状=「一块独占 + 两块并行」,专长靠打赢、其余靠抽取与购买。**默认原则**:除已登记的特殊规则外,分类内的东西都要在它该出现的渠道池子里——任何不出现都须登记理由**现行实现三渠道共用同一候选池、三类混编**,分工尚未实施,登记于 06-待办清单 BD 分层条目 boundary: 判据走生命周期——**一次冒险内获得、冒险收束即清零的是奇物;跨冒险跟着你走的是魔法道具**。奇物永不进同调位,魔法道具永不进当局随机渠道;与元进度天赋树两层互不代位 - data_sources: relics.tres(机制类定义行)/ adventure.tres(属性提升类与资源类的种类配额与值)/ shop.tres(货架取舍) + data_sources: relics.tres(专长定义行)/ adventure.tres(属性值提升与资源的种类配额与值)/ shop.tres(货架取舍) open_questions: ①类内异质性已登记——金币与回复是即时兑付、不进持有集不持续生效,与行动点上限/刷新次数生命周期不同,靠这条描述把"资源"从泛用词收回到本类定义内;②专长门票尚未入表(出现概率/配额/限购次数/保底阈值四参数均无事实源);③确定性渠道一局两次专长 vs 档位阈值(同标签 ≥2 档一 / ≥4 档二)——**档二在三关结构下几乎不可达**,用户定延后复裁(触发=第四关内容批后实测);④charge 标签仅 3 件、永远达不到档二(数据层缺陷,独立登记,勿被上条盖掉);⑤断点存档键 5 个(bonus_deck / bonus_taken / bonus_pending / bonus_result / bonus_aux_carry)是否随存档版本迁移换名待裁 - naming_note: 2026-10-05 命名统一 + 两次重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),v1.0 统一为「特性」,v2.0 改名为「奖励」,v2.4 定名为「奇物」(因筐里也装金币这类一次性兑付物,"自身提升 vs 持有物"已切不开,判据改由生命周期承担)。v2.5 第三类定名为「资源类」(用户拍板)。**代码侧三套词族均尚未对齐**:`feature_*` → `curio_*`(103 处)、`relic_*` → 机制类(162 处)、运行层 `bonus_*`(160 处),属临时态,登记于 06-待办清单,须在可跑冒烟批次收口 + naming_note: 2026-10-05 命名统一 + 两次重构——此前按内部分类被叫成三个名字(规则类称「流派件」、属性类称「数值件」、界面称「本关强化」),v1.0 统一为「特性」,v2.0 改名为「奖励」,v2.4 定名为「奇物」(因筐里也装金币这类一次性兑付物,"自身提升 vs 持有物"已切不开,判据改由生命周期承担)。v2.5 第三类定名为「资源」(用户拍板)。**v2.7 三个子节点全部正式定名、去「类」字后缀**:专长(Feat)/ 属性值提升(ASI)/ 资源——此前是描述式叫法不是专名。**代码侧三套词族均尚未对齐**:`feature_*` → `curio_*`(103 处,顶层总称)、`relic_*` → `feat_*`(162 处,专长分类的词族——v2.7 定名后顶层与内层分类各有各的词族)、运行层 `bonus_*` → `curio_*`(160 处),属临时态,登记于 06-待办清单,须在可跑冒烟批次收口 referenced_by: [冒险结构, 关卡节点地图, 战斗结算, 行动经济, 地形变异, HUD框架, 魔法道具, 元进度, 数据配置] - name: adventure_table @@ -599,8 +600,8 @@ entities: fields: | 退役两字段(迭代 10 奇物重构批,2026-09-30 用户拍板):level_clear_hp_bonus(「血回满+上限提升」件随大奇物三件套退役——回血改 clear_heal_pct 部分回血、上限提升改三选一件值列)、keystone_per_level(钥石退役出大奇物改 Boss/精英击杀掉落)。 clear_heal_pct: int [0,100](knob 默认 20——非末关通关部分回血回复生效上限的百分比,封顶上限不回满、满血回 0 合法;难度上压方向,带重扫义务归 难度曲线与Boss) - **2026-10-05 命名统一批**:本表的属性提升类奇物字段与常量整体换名(旧 → 新)——BONUS_IDS → FEATURE_KINDS、bonus_token_count() → feature_quota()、bonus_value() → feature_value()、bonus_candidate_count → feature_candidate_count、token_{kind}_{tier} → feature_quota_{kind}_{tier}、bonus_*_flat/_amount(_large) → feature_value_{kind}_{tier};值零变更(句柄改称不改数),断点附随键名沿用历史形态不动(存档兼容)。换名动因见 curio 条目(v2.0 顶层改名为「奇物」)。 - feature_value_attack_common / feature_value_max_hp_common / feature_value_armor_common: int [0,999](三选一属性提升类奇物兑付值——加算区攻击/生命上限/护甲轴累加,经覆盖值通道;值锚与上调约束归 难度曲线与Boss) + **2026-10-05 命名统一批**:本表的属性值提升奇物字段与常量整体换名(旧 → 新)——BONUS_IDS → FEATURE_KINDS、bonus_token_count() → feature_quota()、bonus_value() → feature_value()、bonus_candidate_count → feature_candidate_count、token_{kind}_{tier} → feature_quota_{kind}_{tier}、bonus_*_flat/_amount(_large) → feature_value_{kind}_{tier};值零变更(句柄改称不改数),断点附随键名沿用历史形态不动(存档兼容)。换名动因见 curio 条目(v2.0 顶层改名为「奇物」)。 + feature_value_attack_common / feature_value_max_hp_common / feature_value_armor_common: int [0,999](三选一属性值提升奇物兑付值——加算区攻击/生命上限/护甲轴累加,经覆盖值通道;值锚与上调约束归 难度曲线与Boss) feature_value_gp_common: int [0,999](GP 袋件定额入钱包);feature_value_ap_rarest: int [0,10](AP 件每场战斗首轮行动点基线增量);bonus_aux_item_count: int [1,9](魔法道具件授予件数) ~~bonus_weight_*(E-S 加权洗牌权重族)~~ / ~~bonus_cap_*(种类次数上限族)~~:**v2.2 令牌池换代退役(迭代 12 TP0——2026-10-03 追认 b 实施批;洗牌改令牌 Fisher-Yates、池消耗即上限)** feature_quota_{kind}_{tier}: int [0,99](**TP0 令牌配额族**——kind×tier 计数:attack 18/5 · max_hp 17/5 · armor 17/5 · gp 18/5 · heal 0/5 · ap 0/0/3〔common/rare/rarest〕;未列组合=0;档位结构锚 70/25/3=98 张入 schema validate 硬断言〔罕见档原列「道具件 2」随 aux_item 池种退役收窄——台账自决披露项〕) diff --git a/design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md b/design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md index 6f0f921f..0656330f 100644 --- a/design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md +++ b/design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md @@ -2,7 +2,7 @@ - 日期:2026-10-05 - 设计事实源:[奇物.md](../gdd/systems/冒险循环/奇物.md) v2.6(概念唯一定义,2026-10-05 用户逐轮裁定) -- 登记台账:[06-待办清单](../gdd/06-待办清单.md) 三条目(渠道分工目标态 / 资源类两个新种类入池 / 奇物命名统一后续) +- 登记台账:[06-待办清单](../gdd/06-待办清单.md) 三条目(渠道分工目标态 / 资源两个新种类入池 / 奇物命名统一后续) - 实体登记:[entities.yaml](../registry/entities.yaml) `curio` 条目 - 状态:**定稿待发令**——用户 2026-10-05 令:本批只改文档,代码与配置改动整理成任务书编入迭代 15 - **loop 计划书八件对照**:①目标与完成定义=§一 ②现状事实(代码级,开工自行复核)=§二 ③设计契约(🔴 触碰=L3 停机)=§三 ④范围边界=§四 ⑤任务卡 T0..Tn=§五 ⑥验证闸=§六 ⑦异常分级=§七 ⑧代拍板白名单=§八 @@ -20,7 +20,7 @@ 完成定义(逐条可验): 1. **词族对齐完成**:`feature_*` → `curio_*`(103 处 / 7 文件)、`relic_*` → `curio_*` 或 `feat_*`(162 处 / 12 文件)、运行层 `bonus_*` → `curio_*`(160 处 / 8 文件)全部改完,`game/` 下 `grep -c "feature_\|relic_\|_bonus_\|pick_bonus\|BonusInteract\|BonusPick"` 归零(存档键 5 个除外,见 T2 裁点) -2. **渠道分工落地**:三条渠道按分类分离——关底 Boss 击败=通过这一关 → 只出机制类;奖励节点 / 商店 → 只出属性提升类 + 资源类,机制类在此只以门票形式出现;三渠道不再共用同一个池 +2. **渠道分工落地**:三条渠道按分类分离——关底 Boss 击败=通过这一关 → 只出专长;奖励节点 / 商店 → 只出属性值提升 + 资源,专长在此只以门票形式出现;三渠道不再共用同一个池 3. **两个新种类入表**:刷新次数、专长获取门票进入 `adventure.tres`,各自带全参数 4. **商店货架补回复**:按默认原则,回复必须在商店货架内(现行缺) 5. **数据缺陷修复**:`relics.tres` 的 charge 标签补至 ≥4 件(档二要求同标签 ≥4,现仅 3 件,永远达不到) @@ -51,7 +51,7 @@ ### 2.3 渠道与池的现状 - 现行**三渠道共用同一个 98 张固定配额令牌池**(普通 70 / 稀有 25 / 罕见 3),三类混编 -- 机制类(专长)只占稀有/罕见档,与属性大件混编;商店货架靠"零机制类挤掉一张普通卡"保底 +- 专长只占稀有/罕见档,与属性大件混编;商店货架靠"零专长挤掉一张普通卡"保底 - 商店货架 = 池 ∖ {GP 袋}(`shop.tres` 的 `pool_shelf` 行族,现为 attack / max_hp / armor_class / ap 四项,**缺回复**) - 奖励节点与通关三选一**共享同一池、同权重同上限**(`node-reward` v2.4) @@ -67,16 +67,16 @@ ## 三、设计契约(违反即返工,🔴 触碰 = L3 停机) 1. 🔴 **兑付频率不可改**:奇物**不是打一场战斗给一份**。关内普通战斗节点打完不给任何奇物;一关之内只兑付一次,触发点是**关底 Boss 被击败**——按 [冒险结构](../gdd/systems/冒险循环/冒险结构.md) 定义"通关一关 = 该关关底 Boss 被击杀",**这两件事是同一个时刻,不是一条链上的两步**。任何把专长挂到"战斗结算后"的实现即为 L3 -2. 🔴 **两条轴互不决定**:分类轴(给的是什么:机制类 / 属性提升类 / 资源类)与渠道轴(从哪来:奖励节点 / 商店 / 关底 Boss 击败)**不得互相推导**。禁止"因为它要进商店所以另立一分类"这类反向推导(= 06 已登记的"两轴缠回去") -3. 🔴 **Boss 渠道独占机制类**:关底 Boss 击败=通过这一关**只出机制类**,属性提升类与资源类在此不出现。这是渠道轴的定位决定,不是例外,不需另找理由。末关的 Boss 击败后不给(无后续关卡可消费) +2. 🔴 **两条轴互不决定**:分类轴(给的是什么:专长 / 属性值提升 / 资源)与渠道轴(从哪来:奖励节点 / 商店 / 关底 Boss 击败)**不得互相推导**。禁止"因为它要进商店所以另立一分类"这类反向推导(= 06 已登记的"两轴缠回去") +3. 🔴 **Boss 渠道独占专长**:关底 Boss 击败=通过这一关**只出专长**,属性值提升与资源在此不出现。这是渠道轴的定位决定,不是例外,不需另找理由。末关的 Boss 击败后不给(无后续关卡可消费) 4. 🔴 **专长门票四条口径不可改**:①**拿到即开、不可囤积**(不进持有集,选中/买下同一时刻开专长三选一);②**罕见只在概率、不在价格**(货架价与其他商品相当);③**一局限购一次**;④**计步保底**——连续 5 次三选一展示未出现 → 第 6 次必定出现(计数=**展示次数**,刷新后的重展计入,奖励节点与商店共享计数,触发后清零,限购用满后不再触发) 5. 🔴 **统一词族不得用 `reward_*`**(已被 `reward_pick` / `reward_node` / `reward_preview` 占用,见 §2.1) 6. 🔴 **档位配额结构锚不可绕过**:`TIER_QUOTAS` 的 70/25/3 有 validate 硬断言。改总量须重裁并留说明,不得调参绕过 -7. 🔴 **不新增节点类型**:`关卡节点地图` 的节点类型封闭枚举五种不变,机制类挂 Boss 节点兑付面 +7. 🔴 **不新增节点类型**:`关卡节点地图` 的节点类型封闭枚举五种不变,专长挂 Boss 节点兑付面 8. 🔴 **魔法道具边界不位移**:奇物**当局清零、跨局带走的是魔法道具**(判据走生命周期,不走"带在身上")。本批任何改动不得让奇物进同调位,也不得让魔法道具进当局随机渠道 9. 🔴 **层级纪律**:奇物只走当局随机渠道(奖励节点 / 商店 / Boss 兑付),不进元进度天赋树 10. **本批不改平衡数值**:所有 `feature_value_*` / `feature_quota_*` 的**值零变更**。入新种类属结构改动(占配额),非调参 -11. **零战斗期新动词**:机制类表达全部经"扫雷决策 → 自动结算"间接生效,不新增手动闪避 / 主动施法 +11. **零战斗期新动词**:专长表达全部经"扫雷决策 → 自动结算"间接生效,不新增手动闪避 / 主动施法 ## 四、范围边界(以下均不在本批,收到即停、不顺手做) @@ -119,10 +119,10 @@ - 建议甲或乙;若判断丙才对,回写本任务书并转 06 - 轻闸:冒烟全量 + **断点存档往返测试绿** + `ui_click_probe`(触碰 presentation) -### T3 词族对齐第三批:`relic_*` → 机制类(≈0.8d) +### T3 词族对齐第三批:`relic_*` → 专长(≈0.8d) - 范围:`relic_table.gd`(+`.uid`)/ `relics.tres` / `relics_engine.gd` / 及 9 个引用文件 -- 目标词族:`feat_*`(机制类 = 专长 Feat,**与顶层 `curio_*` 区分**:顶层是容器,内层分类各有各的词族——`curio_*` 是总称、`feat_*` 是机制类、`asi_*` 是属性提升类、`res_*` 是资源类) +- 目标词族:**`feat_*`**(专长 Feat)。**顶层与内层分类各有各的词族**(v2.7 定名后确立):`curio_*` 是总称「奇物」/`feat_*` 是专长/`asi_*` 是属性值提升/`res_*` 是资源 - **文件名与 `class_name` 改名须同步 `.uid` 与 `.tscn`**(非文本层) - **不新增节点类型**;MINE_HOOKS 红线校验逻辑零改动 - 轻闸:冒烟全量 + 全探针(三) @@ -131,9 +131,9 @@ ### T4 渠道分离:池的拆分(≈0.8d) - 目标:三个渠道各按分类白名单取候选,不再共用同一个 98 张池 - - 关底 Boss 击败 → 只出机制类 - - 奖励节点 / 商店 → 机制类**只以门票形式出现** + 属性提升类 + 资源类 -- ⚠️ **配额结构锚处置**:机制类抽离共享池后,属性与资源类的配额总量是否维持 98?**若须改 `TIER_QUOTAS` 总量,走重裁流程并在本任务书回写理由**(不得调参绕过 validate 硬断言) + - 关底 Boss 击败 → 只出专长 + - 奖励节点 / 商店 → 专长**只以门票形式出现** + 属性值提升 + 资源 +- ⚠️ **配额结构锚处置**:专长抽离共享池后,属性与资源的配额总量是否维持 98?**若须改 `TIER_QUOTAS` 总量,走重裁流程并在本任务书回写理由**(不得调参绕过 validate 硬断言) - 商店货架 = 池 ∖ {GP 袋}(**计价物不自售**规则:凡以某渠道计价物为内容的奖励不进该渠道货架) - 轻闸:冒烟全量 + 探针 + **MC 逐位对拍**(涉核心,必须) @@ -187,14 +187,14 @@ | A1 | 词族归零 | `game/` 下 `feature_\|relic_\|_bonus_\|pick_bonus\|BonusInteract\|BonusPick` 命中数 = 0(存档键除外) | | A2 | 禁词未用 | `game/` 下无 `reward_pick` / `reward_node` / `reward_preview` **新增**(既有三处不动) | | A3 | 兑付频率正确 | 专长兑付点 = 关底 Boss 击败;**关内普通战斗节点不产奇物**(代码级断言 + 人闸目检双查) | -| A4 | 渠道分离 | 三渠道候选池按分类白名单过滤;机制类在非 Boss 渠道只以门票形态出现 | +| A4 | 渠道分离 | 三渠道候选池按分类白名单过滤;专长在非 Boss 渠道只以门票形态出现 | | A5 | 门票拿到即开 | 门票不进持有集;选中/买下同帧开专长三选一(断言:持有关卡推进后仍无门票残留) | | A6 | 保底计数 | 连续 5 次展示未出 → 第 6 次必出;刷新重展计入;限购用满后不触发 | | A7 | 值零变更 | T1-T3 全部改名的键,值与基线**逐位相等** | | A8 | 存档往返 | 旧断点可读、可续;存档键按 T2 裁点结论验证 | | A9 | 池配额锚 | `TIER_QUOTAS` validate 硬断言绿;若改总量须有重裁说明 | | A10 | 节点类型零扩类 | 节点类型仍为封闭枚举五种 | -| A11 | 玩家可见面无分类名 | 奇物列表 / 三选一面 / 弹窗**不出现**"机制类/属性提升类/资源类"字样(与 06 独立条目协同,本批只做**断言检查**,不改法) | +| A11 | 玩家可见面无分类名 | 奇物列表 / 三选一面 / 弹窗**不出现**"专长/属性值提升/资源"字样(与 06 独立条目协同,本批只做**断言检查**,不改法) | | A12 | 档二通路 | charge 标签 ≥4 件,或已有显式登记"不可达 + 转内容批" | ## 七、异常分级(loop 规范) @@ -205,7 +205,7 @@ **本批预判的 L3 高风险点**: 1. `relic_table.gd` 改名连带 `.uid` / `.tscn` 非文本层引用失败(T3) -2. 机制类抽离共享池后配额结构锚失锚,需重裁(T4) +2. 专长抽离共享池后配额结构锚失锚,需重裁(T4) 3. 存档键换名导致旧断点读不出(T2) ## 八、代拍板白名单(批内可自裁,台账留痕) @@ -239,5 +239,5 @@ | v2.2 | 非 Boss 渠道给**门票**形式(拿到即开、不可囤积);渠道约束重构为**三层**(分类白名单 / 可计算谓词 / 显式例外清单);立**默认原则**——除已登记规则外分类内成员都要在池子里 | | v2.3 | 门票四条口径细化(含**计步保底**:连续 5 次展示未出第 6 次必出,刷新重展计入);修正默认原则表述——**只管分类内部**,"渠道出哪些分类"是渠道轴自己的定位决定 | | v2.4 | 顶层定名**「奇物」Wondrous Item**(DND 魔法物品九分类的兜底杂类);落选 Treasure(偏财物)/ Relic(用户否决)/ 全部自造词;**代码词族定为 `curio_*`**(`reward_*` 已被占用) | -| v2.5 | 第三类定名**「资源类」**(偏泛,故在 1.3 写死判据句);**回复留在资源类**不拆第四类 | +| v2.5 | 第三类定名**「资源」**(偏泛,故在 1.3 写死判据句);**回复留在资源**不拆第四类 | | v2.6 | **修正核心循环图**——奇物不是打一场战斗给一份;关底 Boss 击败=通过这一关是同一时刻;兑付频率写进文首 / 2.1 / 待办 / registry | diff --git a/game/data/schemas/adventure_table.gd b/game/data/schemas/adventure_table.gd index e06c5784..b253e991 100644 --- a/game/data/schemas/adventure_table.gd +++ b/game/data/schemas/adventure_table.gd @@ -13,13 +13,13 @@ class_name AdventureTable extends Resource -## 概念指路:本表的属性提升类与资源类,与 relics.tres 的机制类,同属一个对象—— +## 概念指路:本表的属性值提升与资源,与 relics.tres 的专长,同属一个对象—— ## 「奇物」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奇物.md。 -## 它们是它的分类轴上的枚举(机制类 / 属性提升类 / 资源类),不是三套系统; -## 本表承载属性提升类与资源类的种类配额与件值。 +## 它们是它的分类轴上的枚举(专长 / 属性值提升 / 资源),不是三套系统; +## 本表承载属性值提升与资源的种类配额与件值。 ## (2026-10-05 命名统一 + v2.0 改名:旧称「数值件」→ 属性提升;顶层「特性」→「奖励」→「奇物」。 ## 常量与字段随之前缀 feature_*,**尚未**随顶层改名换到 reward_*——见 06-待办清单。 -## 分类轴三个枚举:属性提升类〔生命上限 / AC / 攻击〕;资源类〔行动点上限 / +## 分类轴三个枚举:属性值提升〔生命上限 / AC / 攻击〕;资源〔行动点上限 / ## 刷新次数 / 金币 / 回复,命名待定〕——本表两类混编;刷新次数与专长获取两项尚未入表。 ## 类内异质性:金币与回复是即时兑付,不进持有集、不持续生效。) ## 三选一提升池 kind 词表(封闭——断点附随件与牌库剔除态依赖它;扩件走本表+registry 修订)。 diff --git a/game/data/schemas/relic_table.gd b/game/data/schemas/relic_table.gd index 879985ab..6f9a3c65 100644 --- a/game/data/schemas/relic_table.gd +++ b/game/data/schemas/relic_table.gd @@ -2,13 +2,13 @@ # Validation Question: 七核心流派各 ≥3 件入局内随机渠道后,标签+档位激活引擎能否机械判「成型」、 # 专长带能否挂进令牌池稀有/罕见档随机投放(P0——迭代 12 双层 BD 实施批 T1) # Date: 2026-10-04(双层 BD 实施批 T1——任务书五裁定稿;设计权威 双层BD体系-整合定稿-2026-10-03 v3) -# 概念指路:本表的机制类(专长),与 adventure.tres 的属性提升类、资源类,同属一个对象—— +# 概念指路:本表的专长,与 adventure.tres 的属性值提升、资源,同属一个对象—— # 「奇物」(一次冒险内各渠道给予玩家的增益总称)。定义见 design/gdd/systems/冒险循环/奇物.md。 -# 它们是它分类轴上的枚举(机制类 / 属性提升类 / 资源类),不是三套系统;本表承载「机制类」(专长 Feat)的逐项定义。 -# (2026-10-05 命名统一 + 分类重构:旧称「流派件」→「规则改写型特性」→ 现定名「机制类(专长)」; +# 它们是它分类轴上的枚举(专长 / 属性值提升 / 资源),不是三套系统;本表承载「专长」(专长 Feat)的逐项定义。 +# (2026-10-05 命名统一 + 分类重构:旧称「流派件」→「规则改写型特性」→ 现定名「专长」; # 表名与 relic_id 沿用历史命名,与统一词族对齐归后续批次——见 06-待办清单「命名统一」条目。 # 目标渠道:专长走关底 Boss 击败后专属三选一(不新增节点类型),见奇物文档 2.1 节。) -# 数据配置 RelicTable schema(奇物·机制类定义表;行 = Dictionary 键 relic_id,Rule 4 豁免 +# 数据配置 RelicTable schema(奇物·专长定义表;行 = Dictionary 键 relic_id,Rule 4 豁免 # 定义表——AuxItemTable 先例)。 # 行字段:relic_id 主键 / display_name / rarity ∈ {common, rare, rarest}(对齐令牌池三档命名—— # 投放档映射:common/rare→稀有令牌档、rarest→罕见令牌档;relic 令牌永不入普通档=「挂稀有/罕见档」 From aafaa0c6c1e4180e0d1e48e75fd3c2c42d8a15ee Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 06:47:03 +0800 Subject: [PATCH 12/15] =?UTF-8?q?roadmap=20=E8=BF=AD=E4=BB=A3=2015=20?= =?UTF-8?q?=E8=A1=8C=E6=94=B9=E5=86=99=E4=B8=BA=E5=8F=8C=E5=8D=A1=EF=BC=9A?= =?UTF-8?q?=E2=91=A0=E8=B0=83=E8=AF=95=E6=95=B4=E5=90=88=E5=8D=A1=EF=BC=88?= =?UTF-8?q?=E5=B7=B2=E8=90=BD=E7=B1=8D=EF=BC=89+=20=E2=91=A1=E5=A5=87?= =?UTF-8?q?=E7=89=A9=E6=89=B9=EF=BC=88=E6=9C=AC=E6=89=B9=E5=BE=85=E5=BC=80?= =?UTF-8?q?=E5=B7=A5=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 迭代 15 已被调试功能整合批占用(master 8642c2d / 76cad66 已落籍), 用户拍板并入而非改号。按 loop 规范「一迭代 = 一句目标 + 3-8 任务卡」, 两批各作一张卡:卡①已落籍(0.5d),卡②T0-T8≈4.5d。 同时同步本批 v2.7 的子节点定名:分类改用专名「专长 / 属性值提升 / 资源」, 事实源版本 v2.6→v2.7。 --- roadmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roadmap.md b/roadmap.md index 3b92ba52..442574dc 100644 --- a/roadmap.md +++ b/roadmap.md @@ -60,7 +60,7 @@ | 迭代 12 | **双层 BD 实施批(反制批位移承接——变异应对局内化在本批落地)**:**2026-10-03 用户五裁全落**=R1 甲(树形态融合案:主干脊柱 row-gating+三脉+彩蛋 ≤3+A/B 集中同调脉)/R2 乙(**两层全入本迭代**:批次一 T0-T7=机制件基建+七流派全量铺〔R3 乙〕+地形转化件+商店保底+MC 锚;批次二 T8-T10=天赋树+存档 v4+营地 UI 重构;超软时间盒切 12/12b,切分点=批次一出口)/R3 乙(七流派批次一全量铺)/R4 甲(**信息型永不对冲**+复查闸=T10 呈报信息型真人读数仅呈报不提案;净化工兵仅限伤害型、清除工具件族不做、深挖钻头改非信息税设计)/R5 甲(喂雷流不做,06 留正式待办+kill-switch 判据)。未落地备选内容已自包含迁 06「双层 BD 延期与备选内容总登记」。设计事实源=`design/research/双层BD体系-整合定稿-2026-10-03.md`(双模型并行调研仲裁版),任务书=`design/research/任务书-双层BD实施批-2026-10-03.md`(已定稿)。**✅ 已全批落籍(2026-10-04,台账 328-333)**:TP0 令牌池先行(normal 重锚)→批次一 T0-T7(27 件七流派+MC 成型锚 L1 5%→75% 分岔+红线自检①过)→批次二 T8-T10(天赋树 33 节点+存档 v5+营地树 UI+A/B 面 0.0pp)一次合并 e780063;试玩反馈四连修复(钻头 AP 锁死/v2 收益重投/流派件呈现双界面/清图奖励 toast)至 c43276d;批末冒烟 718/0+run_all 15+探针绿+doc 三闸基线同款+熵增 PASS;**出口人闸待用户**(人工检查清单=台账 328-333+design/qa/m4iter12 两报告);前置=迭代 11 三批出口+M-4 数值批令牌池落地+商店批共享池 | 迭代 11 出口 | T0-T10 两段式(任务书 §四) | | 迭代 13 | **工程债与测试基建批(含 D6 爆破工兵包实施)**:六条目=ui_click_probe 完整局适配(D1——分派链序修正+停点/锁期/重放三态断言)/探针只读出口(D2——六出口 26 直入清零)/ArmedTimer helper(D3——P4 乙三处计时收口缝零动)/main.gd 二期瘦身(D4——bonus_interact_controller+camp_shop_presenter 拆件 1370→1119,家族②契约3绑定面留置;~900±50 锚差=族级清单上限不自洽已归因)/aux 二期合并(T5 判不合收口)/杂项尾差四件(D5)/爆破工兵包中立移除雷格(D6——P1 甲邻接冻结/P2 甲退色降档,判定逻辑零改动,充能表驱动零新码)。**✅ 已落籍(2026-10-04,台账 342)**:worktree m4iter13-debt-20261004 八提交 cd7d3ea…2402877 合并 eff8cb8;闸=冒烟 718/0(断言数持平基线)+run_all 15+click 三种子绿+全探针绿+doc 三闸零新增+熵增 PASS+MC 零跑(静态零漂移证明);合并后主区全量复跑同绿 | 迭代 12 出口 | T0-T9 ≈4.8-5.3d(知情超限单批,实际单会话) | | 迭代 14 | **初始展开收窄批(2026-10-04 用户拍板甲乙混合立项)**:甲=先布后删剃雷域收窄至出生 3×3∪外扩 r 环(参数化半径,现值 r=1——开阔地均值从板面 66.5% 根因性降至约三成)+乙=生成重掷闸 R₀≤cap(合法性门序列、cap=板面 30% 锚〔10×10=30/12×12=43/13×13=51〕、重试耗尽走既有三分出口);**玩法侧零改动路线**(排雷玩法「初始展开恰等」验收原样为真,minesweeper_rules.gd 零 diff);裸数字截断路否决退役(可见 0 格+未开邻居=扫雷不可能态)。可行性报告=`design/research/研究-初始展开收窄可行性-2026-10-04.md`,任务书=`design/research/任务书-初始展开收窄批-2026-10-04.md`(T0-T8≈5.25d,读数批 T5-T6 可切独立后批;拍板点 P1-P3 全读数后置;停机点 S1 相变警戒/S2 带越界回调)。**②挖掘风险不等式判式换代批(2026-10-04 用户裁编入本迭代,作为迭代内需求)**:判式三层换代(条款2 标中旗锚/条款3 聚合健康式「(1−ρ̂)E_dig−ρ̂V_mine≥0」/旗边际引理+条件二旗溢价)+β 比值带判读 [1.2,2.5](u=3 登记态)+标中兑付溢价 δ=1.25(形态 a 兑付公式一处·雷安同池冻结不动)+runsum 旗行为五字段+audit 工具常量刷新(池 77/直伤 6-8-8/AP 8);裁决全落零新拍板点(方案报告=`design/research/方案-挖掘风险不等式修订-2026-10-04.md` §九),任务书=`.zcode/plans/mine-inequality-revision-miniloop-plan-2026-10-04.md`(T0-T5≈2.5d;条件二 T3 落文按登记已知破·T4 机制转绿;契约红线=DamageController 零改/直伤雷 6-8-8 与 p_perfect 不动——iter8 缺口四选一解绑独立在案;开工门=U0)。**③全局作用域变异首发批(2026-10-04 用户拍板立项——调研报告 P1-P8+盘问 Q1-Q4 全按推荐案落,批内序位待排)**:L2/L3 Boss 图恒定一型 scope=global 变异,首发型=**案A 资源面·微贫向偏斜**(正向格面池合计不变、进攻族 attack/blast/pierce/magic 权重上浮/生存族 heal/defense 明显下调、EV 微降 3-5% provisional、gp/action 白名单不动;v1.0「沃土+雷密对冲」形勘误作废——雷数为生成器事实、布置段不可加,改生成端=踩结构面否决理由);**替换制**(Boss 图不再布 region 片——L2 完美 Boss 承伤 55.8% 已越带不叠加;迭代 12 四件地形应对件在 Boss 图失效=知情代价,registry/调参日志随批登记);L1 Boss 免疫(带B [50,85] 教学保护);三层预告(开战横幅+HUD 常驻角标+帮助手册行);带A 判读后置 M-4(落地 off/on 对拍只测不判;off 基线=替换制后零变异 Boss 图,与现行带 region 片 Boss 图语义不同须注明);偏运硬币合成序=图级先件级后(代拍随批锚登记)。调研报告(事实源,v1.1 裁决落盘)=`design/research/调研-全局作用域变异设计空间-2026-10-04.md`,任务书=`design/research/任务书-全局作用域变异首发批-2026-10-04.md`(T0-T8≈5.75d,读数批 T7 可切独立后批→主体≈5.25d;零新拍板点·provisional 追认单随批;停机点 S1 普通图逐位漂移/S2 读数越带只呈报/S3 互锁误伤;开工门=U0;**⑥A4 批开工门含本批出口——本批落地图级偏斜投影点为⑥合成链中段**)。与①②互不撞(收窄=普通图初始展开轴/判式=不等式判读口径/全局变异=Boss 图资源面轴),出口读数各自分开归因。**✅ 实施批落地(2026-10-04,worktree m4iter14-gvar-20261004 台账 345)**:T1-T8 实施批全落(T7b MC 读数批按切分预案切独立后批,跑批待用户批准)——skewed_veins 贫矿脉行+互锁三条+effect_value [0,50]/门控第三维节点身份/替换制+兜底回落/装板序全局决议前置(数据依赖调和,出口报告在册)/资源面偏斜投影(整数最大余数守恒 77+合成序图级先件级后)/三层预告三层全接/七正主落文+06 收口;闸=冒烟 747/0(+29)+run_all 15+golden 普通图逐位 12/12 全等+六探针+三闸熵增终录见批报告 design/qa/m4iter14-gvar-exit-report-2026-10-04.md(Q3 四件应对件知情代价登记+静态推演+provisional 追认单+人闸目检清单);**③出口成立——⑥A4 开工门解一半**(另半=②出口);off/on 双档读数待 T7b(带 A 判读归 M-4 只测不判)。**④技能池执行批(2026-10-04 用户点名入列——调研+四裁+任务书全齐,06 Alpha 验证条目随之收口)**:文档五件(敌人系统.md 池构成表补 L2/L3 五敌种行/护甲列改读表口径/Boss 三代错峰句/意图呈现节补解锁弹出规格/版本 v0.13+EV 锚整数口径重登记+enemy.tres 批注消歧)+**新机制一件=Boss 半血解锁新独占伤害技**(三 Boss 血量 ≤50%〔用户口径定死〕解锁:酋长「震地怒击」类 ×2.5/CD4·卓尔遏毒类 ×2.0/CD3·石君王「岩崩」类 ×2.5/CD4——参考档即工作值,命名 T5 定稿、倍率冷却 provisional 归调参;enemy.tres 池条目扩 unlock_hp_pct 键〔int [1,99] 缺省无=无门槛〕;未解锁条目双面过滤不进摇号与保底集合;解锁出一次归因明细行「XX 解锁了 YY」);首拍加权取消(杂鱼纹理注销——巨蜘蛛 52% 读数已被 Package B 抬血自愈、地精两行终裁不加工);呈现=明细行+既有类型级预告+解锁时技能名一次性弹出(零动画资产、不改演出);裁决 D1-D8 零待裁;任务书=`design/research/任务书-技能池执行批-2026-10-04.md`(T0-T7≈4.25d,切分预案在册)——开工=用户发令升计划书。**⑤魔法提灯 +2 效果接线(小卡)**:零调研直入——2026-09-30 拍板④已裁(灯甲视野外扩 +2 格、类型微光不随视野扩),迷雾批已留常量 LIGHT_RADIUS_LANTERN_BONUS,纯接线+断言估 0.5d 内。原候选卡注记终态(2026-10-04):敌人系统内容批=已具化为④;教学引导定稿批=用户裁改排 Beta(06 教学节头注记在案),移出本迭代候选。**⑥冒险前资源配比预设批(A4,2026-10-04 用户令编入本迭代——提案八裁全落,裁决事实源=design/research/提案-冒险前资源配比预设-2026-10-04.md §八§九§十)**:玩家冒险开始前预设格面九型资源分布(预设分布不预设落位,装板摇号定落位)——预算=组合制(总量挪点·九型正向权重总和恒 77+每型上下限包络+容量随营地解锁渐进;gp 首发不可调〔包络 (2,2)〕/预设档 3 套/下限>0);合成序=表值→玩家配比差值→包络钳制→图级变异偏斜→同调硬币偏置(包络只管玩家差值——**序位在②③之后**,三者共用摇号投影点);注入=差值向量 ΣΔ=0 关态逐位零扰动;柜台=奖励格图鉴逐型商品(每型可调权一件);冒险开始锁档中途不可换;包络宽度随容量分级放宽;验收=默认分布锚+极端构筑护栏带。容量定价与包络数值 provisional(包络数值须待②号新当量账+真人读数双锚校准);行动经济对账按包络复算(总量恒 77 只余分布位移变量)。**任务书已起草**=design/research/任务书-冒险前资源配比预设批-2026-10-04.md(T0-T8≈6.0d,两段切分预案在册〔段一机制 T0-T4+T6≈3d/段二界面闸 T5+T7+T8≈3d〕;开工门=②③号卡出口;零新拍板点,provisional 归出口追认;停机点 S1-S3 在册)。 | 迭代 13 出口(**迭代 13 已落籍 2026-10-04 eff8cb8**,台账 342) | 初始展开批 T0-T8(可两段切分)+判式换代批 T0-T5≈2.5d(独立 worktree 合并)+全局变异首发批 T0-T8≈5.75d(读数批可切,独立 worktree 合并)+技能池执行批 T0-T7≈4.25d(独立 worktree 合并)+提灯接线小卡 0.5d(可并入任一批顺路)+配比预设批 A4 T0-T8≈6.0d(两段切分可拆;开工门=②③出口;独立 worktree 合并) | -| 迭代 15 | **奇物概念收口与词族对齐批(2026-10-05 用户令编入)**:概念层已由用户逐轮裁定定稿(《奇物》v1.0→v2.6,6 轮),本批只做**落地对齐**、不做二次设计。三批内容:**①三套旧词族全面对齐**(顶层已改名「奇物」而代码仍叫旧名=用户最初抱怨的"文档与代码分开"):`feature_*`→`curio_*`(103 处/7 文件)、`relic_*`→`feat_*`(162 处/12 文件)、运行层 `bonus_*`→`curio_*`(160 处/8 文件)。**硬约束:`reward_*` 已被 `reward_pick`/`reward_node`/`reward_preview` 占用,统一词族不得使用**;`relic_table.gd` 与两个控制器类改名须同步 Godot `.uid`/`.tscn`(非文本层无法自证)。**②三条渠道按分类分离**(现行三渠道共用同一个 98 张池、三类混编):关底 Boss 击败=通过这一关→只出机制类;奖励节点/商店→属性提升类+资源类、机制类在此**只以门票形式**出现。**兑付频率红线**:奇物不是打一场战斗给一份,关内普通战斗节点打完不给任何奇物,一关之内只兑付一次(用户 2026-10-05 纠错)。**③两个新种类入池**=刷新次数(须先与"商店独立刷新机制"划清边界)+ 专长获取门票(拿到即开不可囤积/罕见只在概率/一局限购一次/计步保底:连续 5 次三选一展示未出→第 6 次必出,刷新重展计入、奖励节点与商店共享计数);附带 `shop.tres` 补回复(默认原则要求分类内成员都在该出现的渠道池里)与 charge 标签补至 ≥4 件(现仅 3 件,档二永远达不到——数据缺陷)。设计事实源=`design/gdd/systems/冒险循环/奇物.md` v2.6,任务书=`design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md`(T0-T8≈4.5d,两段切分预案在册〔段一词族 T0-T3≈2d/段二渠道+入表 T4-T8≈2.5d〕,切分点=T3 出口;11 条设计契约含 6 条 🔴 停机级;12 条批末验收断言;代拍板白名单 5 项;待用户裁点 4 项〔玩家可见面违规/第四关档二复裁/门票四参数终值/存档键正式迁移〕)。**开工门**:与在途 M-4 各批(判式换代/全局变异/配比预设)撞同一批文件(`adventure_table.gd`/`level_runner.gd`/`adventure.tres`),须确认不并行或用户明示插队 | 迭代 14 出口 | T0-T8≈4.5d(可两段切分:词族对齐段 + 渠道入表段) | +| 迭代 15 | **②奇物概念收口与词族对齐批(2026-10-05 用户令编入本迭代)**:概念层已由用户逐轮裁定定稿(《奇物》v1.0→v2.7,7 轮),本批只做**落地对齐**、不做二次设计。三批内容:**①三套旧词族全面对齐**(顶层已改名「奇物」而代码仍叫旧名=用户最初抱怨的"文档与代码分开"):`feature_*`→`curio_*`(103 处/7 文件)、`relic_*`→`feat_*`(162 处/12 文件)、运行层 `bonus_*`→`curio_*`(160 处/8 文件)。**硬约束:`reward_*` 已被 `reward_pick`/`reward_node`/`reward_preview` 占用,统一词族不得使用**;`relic_table.gd` 与两个控制器类改名须同步 Godot `.uid`/`.tscn`(非文本层无法自证)。**②三条渠道按分类分离**(现行三渠道共用同一个 98 张池、三类混编):关底 Boss 击败=通过这一关→只出专长;奖励节点/商店→属性值提升+资源、专长在此**只以门票形式**出现。**兑付频率红线**:奇物不是打一场战斗给一份,关内普通战斗节点打完不给任何奇物,一关之内只兑付一次(用户 2026-10-05 纠错)。**③两个新种类入池**=刷新次数(须先与"商店独立刷新机制"划清边界)+ 专长获取门票(拿到即开不可囤积/罕见只在概率/一局限购一次/计步保底:连续 5 次三选一展示未出→第 6 次必出,刷新重展计入、奖励节点与商店共享计数);附带 `shop.tres` 补回复(默认原则要求分类内成员都在该出现的渠道池里)与 charge 标签补至 ≥4 件(现仅 3 件,档二永远达不到——数据缺陷)。设计事实源=`design/gdd/systems/冒险循环/奇物.md` v2.7,任务书=`design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md`(T0-T8≈4.5d,两段切分预案在册〔段一词族 T0-T3≈2d/段二渠道+入表 T4-T8≈2.5d〕,切分点=T3 出口;11 条设计契约含 6 条 🔴 停机级;12 条批末验收断言;代拍板白名单 5 项;待用户裁点 4 项〔玩家可见面违规/第四关档二复裁/门票四参数终值/存档键正式迁移〕)。**开工门**:与在途 M-4 各批(判式换代/全局变异/配比预设)撞同一批文件(`adventure_table.gd`/`level_runner.gd`/`adventure.tres`),须确认不并行或用户明示插队 | 迭代 14 出口 | 卡①已落籍(原估 0.5d);卡②T0-T8≈4.5d(可两段切分:词族对齐段 + 渠道入表段) | ## 执行纪律(2026-09-27 用户立规) From cde68006b2a9b5123732a776c60f483ce1eabe84 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 07:31:56 +0800 Subject: [PATCH 13/15] =?UTF-8?q?=E7=A7=98=E5=AE=9D=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E8=AF=8D=E6=97=8F=E5=AF=B9=E9=BD=90=E6=89=B9=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E4=B9=A6=20v1.1=EF=BC=88C3=20=E6=B6=88=E8=A7=A3=20+=20?= =?UTF-8?q?=E4=BA=8B=E5=AE=9E=E8=A1=A8=E5=A4=8D=E6=A0=B8=20+=20=E7=BC=96?= =?UTF-8?q?=E5=85=A5=20roadmap=20=E8=BF=AD=E4=BB=A315=E2=91=A2=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 前提:奇物批(迭代15②)已于 2026-10-05 收口落库(合并 c571af2), 本会话前一轮的 UU 冲突态解除,可安全编辑迭代序列。 任务书修订(v1.0 → v1.1): - §7 C3 撞批面**已消解**:② 已落库,本批为迭代 15 唯一在途需求,可独立开工。 残留义务三条:T0 重取基线(判式换代 T5 读数 750/0、②又动数据层,§1.2 的 747 为②前旧数禁沿用)/ T0 复核全部事实表 / 查清②"存档键正式迁移"待裁点状态。 - §2 事实表按②落库后复核修订三处: F1 文件数 35→**36**(`hero_info_panel_view.gd` 被②带入引用),处数 358 不变 F3 玩家可见文案 3→**5 处**——**补入两处初查遗漏的真实玩家可见字符串**: `hero_info_panel_view.gd:56` `UiKit.label("魔法道具", 16, true)` 槽位标题 `hero_info_panel_view.gd:178` `slot.tooltip_text = "魔法道具槽(空)"` tooltip (教训:`grep "魔法道具"` 命中 60+ 行但绝大多数是注释,字符串字面量需逐行核) F5 存档键引用 28→**34 处**(增量来自②带入的调用点;**②未迁移任何键名**, 已核 `git show c571af2 -- game/core/adventure_runner.gd` 无键名改动) - §3 组 A 补入上述两处 UI 文案,并加目检提示(C 区槽位标题与 tooltip 是玩家 唯一会看到的「秘宝」二字) - §1.2 判定 2 判据同步为 5 处基线 roadmap 新增迭代 15 需求③ 行(①调试整合已落籍 / ②奇物已落籍 / ③本批待开工), 标注 T0 重取基线义务与两个待用户裁点(C1 `"aux_item"` 域串是否随全族改 / C2 `aux_items` 一名两义拆分)。 待用户裁点由 3 项降为 2 项(C3 已消解)。C1/C2 未决前不开工。 --- .../任务书-秘宝代码词族对齐批-2026-10-05.md | 38 +++++++++---------- roadmap.md | 1 + 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/design/research/任务书-秘宝代码词族对齐批-2026-10-05.md b/design/research/任务书-秘宝代码词族对齐批-2026-10-05.md index db8c9ff3..db2f9a0e 100644 --- a/design/research/任务书-秘宝代码词族对齐批-2026-10-05.md +++ b/design/research/任务书-秘宝代码词族对齐批-2026-10-05.md @@ -6,7 +6,9 @@ > 满足 loop engineering 八件(见 §9 逐条对照);本任务书 = 计划书八节的前五节落地,§6 任务卡为执行单元。 > **用户三项拍板(2026-10-05)**:①编入迭代 15(追加)②**全族彻底改(含数据表)** ③**断点存档键一律保留**。 -> 🔴 **撞批警示(与同迭代 ② 奇物批)**:本批与 `任务书-奇物词族对齐与渠道分离批-2026-10-05.md` **撞同一批文件**(`core/level_runner.gd` · `data/tables/adventure.tres` · `core/adventure_runner.gd` 断点区),且**双方都动断点存档键**(本批禁改、②批内有"存档键正式迁移"待裁点)。**两批不得并行开工**,须串行或用户明示插队——详见 §7 C3。 +> 🔴 **撞批警示(与同迭代 ② 奇物批)**:本批与 `任务书-奇物词族对齐与渠道分离批-2026-10-05.md` 撞同一批文件(`core/level_runner.gd` · `data/tables/adventure.tres` · `core/adventure_runner.gd` 断点区),且**双方都动断点存档键**(本批禁改、②批内有"存档键正式迁移"待裁点)。 +> **2026-10-05 07:29 复核:② 奇物批已收口落库**(合并提交 `c571af2`,"merge: 奇物概念收口与词族对齐(迭代15②号卡·文档与数据层)")——**并行撞批风险已解除,本批可独立开工**。但 ② 已改动 `adventure_runner.gd`(46 行) / `config_db.gd` / `level_runner.gd`(10 行) / `adventure_table.gd`(113 行) / `adventure.tres`(42 行) / `relic_table.gd` / `shop_table.gd`,**本批事实表须按 T0 重新复核**(已做首轮复核,见 §2 F1/F3 修订)。 + --- @@ -22,7 +24,7 @@ | # | 判定项 | 量化标准 | |---|---|---| | 1 | 词族换尽 | `game/` 下 `aux_*`/`AuxItem*`/`AUX_ITEM*` 出现处**仅剩 §4 白名单**(存档键 + 🔴 冲突面 + 历史留痕注释),其余全数换词 | -| 2 | 玩家可见清零 | `grep -rn "魔法道具" game/` **零命中**(现状 3 处:`battle_narrator.gd:117-118`、`bonus_interact_controller.gd:76`) | +| 2 | 玩家可见清零 | `grep -rn "魔法道具" game/` **零命中**(2026-10-05 收口后复核现基线 = **5 处玩家可见字符串**,见 §3 组 A;其余 60+ 命中均为注释,由组 D 清) | | 3 | 重闸全绿 | 冒烟 **747/0**(现基线,迭代 15 前实测值)· 十一探针全绿 · MC 逐位对拍**零漂移** · doc 三闸**对基线零新增** · 熵增闸 PASS | | 4 | 人闸完成 | 目检清单过 + 代拍板追认清单过 + §8 白名单外无代拍板 | | 5 | 收口五步 | active.md 快照 / 台账条目 / roadmap 里程碑行 / stage.txt(如变)/ 闸序列留痕 | @@ -33,11 +35,11 @@ | # | 事实 | 读数 | |---|---|---| -| F1 | `aux_*` / `AuxItem*` 词族规模 | **358 处 / 35 文件**(`game/` 下 `.gd` + `.tres`) | +| F1 | `aux_*` / `AuxItem*` 词族规模 | **358 处 / 36 文件**(`game/` 下 `.gd` + `.tres`)——⚠️ **2026-10-05 收口后复核:文件数 35→36**(`presentation/views/hero_info_panel_view.gd`,奇物批带入引用),处数不变 | | F2 | 重灾文件 | `core/adventure_runner.gd`(79) · `core/level_runner.gd`(27) · `presentation/bonus_interact_controller.gd`(19) · `core/battle_orchestrator.gd`(18) · `smoke/smoke_all.gd`(14) · `presentation/aux_interact_controller.gd`(14) · `core/config_db.gd`(14) · `presentation/main.gd`(13) | -| F3 | 玩家可见「魔法道具」文案 | **3 处**:`battle_narrator.gd:117` `battle_narrator.gd:118` `bonus_interact_controller.gd:76` | +| F3 | 玩家可见「魔法道具」文案 | **⚠️ 2026-10-05 收口后复核 = 5 处**(初查 3 处,漏 2 处 UI 文案):`battle_narrator.gd:117` · `battle_narrator.gd:118` · `bonus_interact_controller.gd:76` · **`hero_info_panel_view.gd:56`**(`UiKit.label("魔法道具", 16, true)` 槽位标题)· **`hero_info_panel_view.gd:178`**(`slot.tooltip_text = "魔法道具槽(空)"` 悬停提示) | | F4 | 🔴 **`battle_narrator.gd` 同屏两义共现** | 117-118 行输出"魔法道具" ‖ 同文件 **139 行** `arch_names := {"magic": "魔法", ...}` = 敌方伤害语汇——同一 narrator 内两义并存,是歧义的**唯一真实暴露点** | -| F5 | 断点存档键(**禁改**) | `bonus_aux_carry` · `aux_detail` · `aux_cleared` · `aux_cleared_last` · `aux_items`(断点快照数组)· `attunement_charges` —— **28 处引用**(读 28 / 内部变量 26) | +| F5 | 断点存档键(**禁改**) | `bonus_aux_carry` · `aux_detail` · `aux_cleared` · `aux_cleared_last` · `aux_items`(断点快照数组)· `attunement_charges` —— **2026-10-05 收口后复核 = 34 处引用**(初查 28 处,增量来自②奇物批带入的调用点;**②未迁移任何键名**,diff 核实无键名改动) | | F6 | 🔴 **冲突面:`aux_items` 一名两义** | 既是**断点存档键**(`adventure_runner.gd:976` 写入 / `:951-953` 读取,跨局持久,改名即破档)**又是** registry 条目键与 ConfigDB 持有变量名(`config_db.gd:50` `var aux_items: AuxItemTable`)——**同一字符串,语义不同层** | | F7 | 🔴 **冲突面:`"aux_item"` 是加载期校验域串** | `reward_table.gd:15` `CELL_TYPES` 封闭枚举含 `"aux_item"`(十型之一)· `:16` `AUX_ITEM_TYPE` 常量 · `smoke_all.gd:3932-3933` **断言 `CELL_TYPES.size() == 10` 且 `has("aux_item")`** —— 改此串 = 改 schema 契约 + 改 .tres 数据行 + 改冒烟断言,**三重连锁** | | F8 | Godot 类名/文件名 | `AuxItemTable`(schema) · `aux_items.gd` · `aux_item_table.gd` · `aux_interact_controller.gd` —— 改名须同步 `.uid` + `.tscn` 引用(迭代 14.5 有实证先例:主区跑前须 `--import` 重刷类名缓存) | @@ -53,8 +55,12 @@ | `presentation/battle_narrator.gd:117` | `return "魔法道具\n%s" % aux_line` | `return "秘宝\n%s" % aux_line` | | `presentation/battle_narrator.gd:118` | `return "魔法道具\n随机获得一件"` | `return "秘宝\n随机获得一件"` | | `presentation/bonus_interact_controller.gd:76` | `toast.show_toast("上关剩余 %d 件魔法道具已随关卡结束清空" ...)` | `"上关剩余 %d 件秘宝已随关卡结束清空"` | +| **`presentation/views/hero_info_panel_view.gd:56`** | `col.add_child(UiKit.label("魔法道具", 16, true))` | `UiKit.label("秘宝", 16, true)` | +| **`presentation/views/hero_info_panel_view.gd:178`** | `slot.tooltip_text = "魔法道具槽(空)"` | `slot.tooltip_text = "秘宝槽(空)"` | +> **后两处是 2026-10-05 收口后补入的**(初查仅命中 3 处,漏了 UI 标签与 tooltip 两处——`grep "魔法道具"` 命中 60+ 行但绝大多数是注释,**这两处是真实玩家可见字符串**)。 > **组 A 独立成一个提交**——它是本批唯一有玩家可见效果的部分,先行落地上游台账可独立验收。**F4 两义共现随本组一并消解**(117-118 改后同屏不再出现两个"魔法")。 +> **目检提示**:组 A 落地后须实机确认 C 区槽位标题与悬停提示——这是玩家唯一会看到的「秘宝」二字。 ### 组 B · schema 与数据表文件(类名 + 文件名 + @export) @@ -180,24 +186,16 @@ > **我方倾向:甲 + 强制注释标记**——变量改词,存档键在代码旁加显式注释 `// 🔴 存档键,历史名,禁改(2026-10-05 用户拍板)`。**须用户拍板**。 -### C3 · 与同迭代 ② 奇物批的串行次序(🔴 **开工前必须定**) +### C3 · 与同迭代 ② 奇物批的串行次序(✅ **2026-10-05 已消解**) -**事实冲突**:两批同属迭代 15、**撞同一批文件**、**双方都动断点存档键**。 +**原事实冲突**:两批同属迭代 15、**撞同一批文件**、**双方都动断点存档键**。 -| 撞点 | 本批(③秘宝) | ② 奇物批 | 冲突性质 | -|---|---|---|---| -| `core/level_runner.gd` | 改 `restore_aux_items` / `grant_aux_item` / `aux_inventory` 等 | 动 `feature_*` / `relic_*` / `bonus_*` 词族 | 🔴 **同文件不同词族**,机械替换易误伤 | -| `data/tables/adventure.tres` | 只改注释(`aux_item` 池种退役注记) | 改数据行(`feature_*` → `curio_*` 键) | 🔴 同文件,数据 vs 注释混层 | -| `core/adventure_runner.gd` 断点区 | **禁改**(`bonus_aux_carry` / `aux_items` 键) | 有"存档键正式迁移"待裁点 | 🔴 **若 ② 先迁移键名,本批的禁改清单失效** | -| 冒烟基线 | 待 T0 取实际值 | 同样待取 | 🟡 两批先后跑,基线数字不同 | +**✅ 消解结论(2026-10-05 07:29 复核)**:② 奇物批**已收口落库**(合并提交 `c571af2`),**并行撞批风险解除**。本批现为迭代 15 唯一在途需求,可独立开工。 -| 方案 | 做法 | 风险 | -|---|---|---| -| **甲** | ② 先走完(其 T3 出口 = 切分点),③ 开工时**重新取基线**并复核本批事实表 F1–F10 | 🟢 串行无冲突;代价 = ③ 起点后移 | -| **乙** | ③ 先走,② 延后 | 🟡 ③ 改动面小(5 组),先跑代价低;但 ② 的"存档键迁移"待裁点会因 ③ 的"禁改"约束而需重议 | -| **丙** | 两批并行 | 🔴 **禁止**——同文件同区域机械替换,必生不可定位的冲突 | - -> **我方倾向:甲(② 先走)**——② 的 T8 涉及"存档键正式迁移"这一未裁事项,若 ③ 先动完代码再由 ② 迁移键,等于让 ③ 的禁改清单被单方面作废。**须用户拍板并定次序**。 +**⚠️ 残留义务**: +1. **T0 须重新取基线**——② 已把冒烟推进(判式换代批 T5 出口读数 **750/0**、奇物批又动数据层),§1.2 的 747 是②之前的旧数,**禁止沿用**。 +2. **T0 须复核 §2 全部事实表**——② 改动面覆盖 `adventure_runner.gd` / `config_db.gd` / `level_runner.gd` / `adventure_table.gd` / `adventure.tres` / `relic_table.gd` / `shop_table.gd`,其中 `adventure_runner.gd` 是本批 F2 第一重灾文件(79 处)。 +3. **② 的"存档键正式迁移"待裁点状态须查清**——若 ② 已迁移了 `bonus_aux_carry` / `aux_items` 等键名,本批 §4 的禁改清单须同步更新(**这是本批唯一仍需向用户确认的残留项**)。 ## 8. 代拍板白名单 diff --git a/roadmap.md b/roadmap.md index 029f4832..26f71c06 100644 --- a/roadmap.md +++ b/roadmap.md @@ -62,6 +62,7 @@ | 迭代 14 | **初始展开收窄批(2026-10-04 用户拍板甲乙混合立项)**:甲=先布后删剃雷域收窄至出生 3×3∪外扩 r 环(参数化半径,现值 r=1——开阔地均值从板面 66.5% 根因性降至约三成)+乙=生成重掷闸 R₀≤cap(合法性门序列、cap=板面 30% 锚〔10×10=30/12×12=43/13×13=51〕、重试耗尽走既有三分出口);**玩法侧零改动路线**(排雷玩法「初始展开恰等」验收原样为真,minesweeper_rules.gd 零 diff);裸数字截断路否决退役(可见 0 格+未开邻居=扫雷不可能态)。可行性报告=`design/research/研究-初始展开收窄可行性-2026-10-04.md`,任务书=`design/research/任务书-初始展开收窄批-2026-10-04.md`(T0-T8≈5.25d,读数批 T5-T6 可切独立后批;拍板点 P1-P3 全读数后置;停机点 S1 相变警戒/S2 带越界回调)。**②挖掘风险不等式判式换代批(2026-10-04 用户裁编入本迭代,作为迭代内需求)**:判式三层换代(条款2 标中旗锚/条款3 聚合健康式「(1−ρ̂)E_dig−ρ̂V_mine≥0」/旗边际引理+条件二旗溢价)+β 比值带判读 [1.2,2.5](u=3 登记态)+标中兑付溢价 δ=1.25(形态 a 兑付公式一处·雷安同池冻结不动)+runsum 旗行为五字段+audit 工具常量刷新(池 77/直伤 6-8-8/AP 8);裁决全落零新拍板点(方案报告=`design/research/方案-挖掘风险不等式修订-2026-10-04.md` §九),任务书=`.zcode/plans/mine-inequality-revision-miniloop-plan-2026-10-04.md`(T0-T5≈2.5d;条件二 T3 落文按登记已知破·T4 机制转绿;契约红线=DamageController 零改/直伤雷 6-8-8 与 p_perfect 不动——iter8 缺口四选一解绑独立在案;开工门=U0)。**✅ 实施批落地(2026-10-05,worktree m4iter14-mineq-20261005 台账 354)**:T0-T5 全落——audit 工具常量刷新(改前静态锚与方案报告 §四 逐位吻合)+runsum 五字段(行侧判据考证=授予行专带 highlight,87行==87插旗1:1)+F1 条款3 重立三层口径(v0.8)+战斗结算 v0.25+难度联动表+6 行+registry clause3_inequality 重立条(改前锚+P7 修正注记)+06 破线条收口+**T4 标中兑付溢价机制**(settlement.flag_hit_premium=125 provisional,grant 单点只挂 flag_hit 正向·percent 幅度贯穿应用与呈现,标空/挖格不乘,DamageController 零改/同池冻结)+smoke 750/0(+3 断言;max 路径种子 42→43 重采);判读三件=β 带 u=1/2 带内 u=3 登记态/δ 敏感度行为无感(η 位移 <1.4pp<5pp,保留+登记)/条件二判式口径等号压线转绿(整数量级实现 u=1/2 绿·u=3 微欠 −1.1% 登记面);改后锚换代 runsum_m4iter14mineq_post_n200_20261005(perfect 冒险通关 65.3%→72.0% 增强向位移,四带判读归 M-4);出口报告=design/qa/m4iter14-mineq-exit-report-2026-10-05.md(provisional 追认单 8 项+07⑫ 人工项);damage_probe A1 红灯=改前既有非本批新增(在册)。**③全局作用域变异首发批(2026-10-04 用户拍板立项——调研报告 P1-P8+盘问 Q1-Q4 全按推荐案落,批内序位待排)**:L2/L3 Boss 图恒定一型 scope=global 变异,首发型=**案A 资源面·微贫向偏斜**(正向格面池合计不变、进攻族 attack/blast/pierce/magic 权重上浮/生存族 heal/defense 明显下调、EV 微降 3-5% provisional、gp/action 白名单不动;v1.0「沃土+雷密对冲」形勘误作废——雷数为生成器事实、布置段不可加,改生成端=踩结构面否决理由);**替换制**(Boss 图不再布 region 片——L2 完美 Boss 承伤 55.8% 已越带不叠加;迭代 12 四件地形应对件在 Boss 图失效=知情代价,registry/调参日志随批登记);L1 Boss 免疫(带B [50,85] 教学保护);三层预告(开战横幅+HUD 常驻角标+帮助手册行);带A 判读后置 M-4(落地 off/on 对拍只测不判;off 基线=替换制后零变异 Boss 图,与现行带 region 片 Boss 图语义不同须注明);偏运硬币合成序=图级先件级后(代拍随批锚登记)。调研报告(事实源,v1.1 裁决落盘)=`design/research/调研-全局作用域变异设计空间-2026-10-04.md`,任务书=`design/research/任务书-全局作用域变异首发批-2026-10-04.md`(T0-T8≈5.75d,读数批 T7 可切独立后批→主体≈5.25d;零新拍板点·provisional 追认单随批;停机点 S1 普通图逐位漂移/S2 读数越带只呈报/S3 互锁误伤;开工门=U0;**⑥A4 批开工门含本批出口——本批落地图级偏斜投影点为⑥合成链中段**〔2026-10-05 注:⑥已移出迭代 14 挂起,此依赖句冻结待其重启〕)。与①②互不撞(收窄=普通图初始展开轴/判式=不等式判读口径/全局变异=Boss 图资源面轴),出口读数各自分开归因。**✅ 实施批落地(2026-10-04,worktree m4iter14-gvar-20261004 台账 345)**:T1-T8 实施批全落(T7b MC 读数批按切分预案切独立后批,跑批待用户批准)——skewed_veins 贫矿脉行+互锁三条+effect_value [0,50]/门控第三维节点身份/替换制+兜底回落/装板序全局决议前置(数据依赖调和,出口报告在册)/资源面偏斜投影(整数最大余数守恒 77+合成序图级先件级后)/三层预告三层全接/七正主落文+06 收口;闸=冒烟 747/0(+29)+run_all 15+golden 普通图逐位 12/12 全等+六探针+三闸熵增终录见批报告 design/qa/m4iter14-gvar-exit-report-2026-10-04.md(Q3 四件应对件知情代价登记+静态推演+provisional 追认单+人闸目检清单);**③出口成立——⑥A4 开工门解一半**(另半=②出口);off/on 双档读数待 T7b(带 A 判读归 M-4 只测不判)。**④技能池执行批(2026-10-04 用户点名入列——调研+四裁+任务书全齐,06 Alpha 验证条目随之收口)**:文档五件(敌人系统.md 池构成表补 L2/L3 五敌种行/护甲列改读表口径/Boss 三代错峰句/意图呈现节补解锁弹出规格/版本 v0.13+EV 锚整数口径重登记+enemy.tres 批注消歧)+**新机制一件=Boss 半血解锁新独占伤害技**(三 Boss 血量 ≤50%〔用户口径定死〕解锁:酋长「震地怒击」类 ×2.5/CD4·卓尔遏毒类 ×2.0/CD3·石君王「岩崩」类 ×2.5/CD4——参考档即工作值,命名 T5 定稿、倍率冷却 provisional 归调参;enemy.tres 池条目扩 unlock_hp_pct 键〔int [1,99] 缺省无=无门槛〕;未解锁条目双面过滤不进摇号与保底集合;解锁出一次归因明细行「XX 解锁了 YY」);首拍加权取消(杂鱼纹理注销——巨蜘蛛 52% 读数已被 Package B 抬血自愈、地精两行终裁不加工);呈现=明细行+既有类型级预告+解锁时技能名一次性弹出(零动画资产、不改演出);裁决 D1-D8 零待裁;任务书=`design/research/任务书-技能池执行批-2026-10-04.md`(T0-T7≈4.25d,切分预案在册)——开工=用户发令升计划书。**⑤魔法提灯 +2 效果接线(小卡)**:零调研直入——2026-09-30 拍板④已裁(灯甲视野外扩 +2 格、类型微光不随视野扩),迷雾批已留常量 LIGHT_RADIUS_LANTERN_BONUS,纯接线+断言估 0.5d 内。原候选卡注记终态(2026-10-04):敌人系统内容批=已具化为④;教学引导定稿批=用户裁改排 Beta(06 教学节头注记在案),移出本迭代候选。**⑥冒险前资源配比预设批——已移出本迭代(2026-10-05 用户令挂起:暂不做;条目保留 06-待办清单「冒险前资源配比预设(构筑提案)」〔已裁待实施→挂起〕,八项裁决全数有效、任务书冻结保留=design/research/任务书-冒险前资源配比预设批-2026-10-04.md;重启须用户另行发令,届时开工门仍=②③号卡出口〔若②③已落籍 master 则自动解——合成序与包络数值锚依赖②判式换代与③变异投影,三者共用摇号投影点〕)**。 | 迭代 13 出口(**迭代 13 已落籍 2026-10-04 eff8cb8**,台账 342) | 初始展开批 T0-T8(可两段切分)+判式换代批 T0-T5≈2.5d(独立 worktree 合并)+全局变异首发批 T0-T8≈5.75d(读数批可切,独立 worktree 合并)+技能池执行批 T0-T7≈4.25d(独立 worktree 合并)+提灯接线小卡 0.5d(可并入任一批顺路)〔⑥配比预设批 A4 已移出本迭代挂起,2026-10-05 用户令〕 |**③全局作用域变异首发批(2026-10-04 用户拍板立项——调研报告 P1-P8+盘问 Q1-Q4 全按推荐案落,批内序位待排)**:L2/L3 Boss 图恒定一型 scope=global 变异,首发型=**案A 资源面·微贫向偏斜**(正向格面池合计不变、进攻族 attack/blast/pierce/magic 权重上浮/生存族 heal/defense 明显下调、EV 微降 3-5% provisional、gp/action 白名单不动;v1.0「沃土+雷密对冲」形勘误作废——雷数为生成器事实、布置段不可加,改生成端=踩结构面否决理由);**替换制**(Boss 图不再布 region 片——L2 完美 Boss 承伤 55.8% 已越带不叠加;迭代 12 四件地形应对件在 Boss 图失效=知情代价,registry/调参日志随批登记);L1 Boss 免疫(带B [50,85] 教学保护);三层预告(开战横幅+HUD 常驻角标+帮助手册行);带A 判读后置 M-4(落地 off/on 对拍只测不判;off 基线=替换制后零变异 Boss 图,与现行带 region 片 Boss 图语义不同须注明);偏运硬币合成序=图级先件级后(代拍随批锚登记)。调研报告(事实源,v1.1 裁决落盘)=`design/research/调研-全局作用域变异设计空间-2026-10-04.md`,任务书=`design/research/任务书-全局作用域变异首发批-2026-10-04.md`(T0-T8≈5.75d,读数批 T7 可切独立后批→主体≈5.25d;零新拍板点·provisional 追认单随批;停机点 S1 普通图逐位漂移/S2 读数越带只呈报/S3 互锁误伤;开工门=U0;**⑥A4 批开工门含本批出口——本批落地图级偏斜投影点为⑥合成链中段**〔2026-10-05 注:⑥已移出迭代 14 挂起,此依赖句冻结待其重启〕)。与①②互不撞(收窄=普通图初始展开轴/判式=不等式判读口径/全局变异=Boss 图资源面轴),出口读数各自分开归因。**✅ 实施批落地(2026-10-04,worktree m4iter14-gvar-20261004 台账 345)**:T1-T8 实施批全落(T7b MC 读数批按切分预案切独立后批,跑批待用户批准)——skewed_veins 贫矿脉行+互锁三条+effect_value [0,50]/门控第三维节点身份/替换制+兜底回落/装板序全局决议前置(数据依赖调和,出口报告在册)/资源面偏斜投影(整数最大余数守恒 77+合成序图级先件级后)/三层预告三层全接/七正主落文+06 收口;闸=冒烟 747/0(+29)+run_all 15+golden 普通图逐位 12/12 全等+六探针+三闸熵增终录见批报告 design/qa/m4iter14-gvar-exit-report-2026-10-04.md(Q3 四件应对件知情代价登记+静态推演+provisional 追认单+人闸目检清单);**③出口成立——⑥A4 开工门解一半**(另半=②出口);off/on 双档读数待 T7b(带 A 判读归 M-4 只测不判)。**④技能池执行批(2026-10-04 用户点名入列——调研+四裁+任务书全齐,06 Alpha 验证条目随之收口)**:文档五件(敌人系统.md 池构成表补 L2/L3 五敌种行/护甲列改读表口径/Boss 三代错峰句/意图呈现节补解锁弹出规格/版本 v0.13+EV 锚整数口径重登记+enemy.tres 批注消歧)+**新机制一件=Boss 半血解锁新独占伤害技**(三 Boss 血量 ≤50%〔用户口径定死〕解锁:酋长「震地怒击」类 ×2.5/CD4·卓尔遏毒类 ×2.0/CD3·石君王「岩崩」类 ×2.5/CD4——参考档即工作值,命名 T5 定稿、倍率冷却 provisional 归调参;enemy.tres 池条目扩 unlock_hp_pct 键〔int [1,99] 缺省无=无门槛〕;未解锁条目双面过滤不进摇号与保底集合;解锁出一次归因明细行「XX 解锁了 YY」);首拍加权取消(杂鱼纹理注销——巨蜘蛛 52% 读数已被 Package B 抬血自愈、地精两行终裁不加工);呈现=明细行+既有类型级预告+解锁时技能名一次性弹出(零动画资产、不改演出);裁决 D1-D8 零待裁;任务书=`design/research/任务书-技能池执行批-2026-10-04.md`(T0-T7≈4.25d,切分预案在册)——开工=用户发令升计划书。**⑤魔法提灯 +2 效果接线(小卡)**:零调研直入——2026-09-30 拍板④已裁(灯甲视野外扩 +2 格、类型微光不随视野扩),迷雾批已留常量 LIGHT_RADIUS_LANTERN_BONUS,纯接线+断言估 0.5d 内。原候选卡注记终态(2026-10-04):敌人系统内容批=已具化为④;教学引导定稿批=用户裁改排 Beta(06 教学节头注记在案),移出本迭代候选。**⑥冒险前资源配比预设批——已移出本迭代(2026-10-05 用户令挂起:暂不做;条目保留 06-待办清单「冒险前资源配比预设(构筑提案)」〔已裁待实施→挂起〕,八项裁决全数有效、任务书冻结保留=design/research/任务书-冒险前资源配比预设批-2026-10-04.md;重启须用户另行发令,届时开工门仍=②③号卡出口〔若②③已落籍 master 则自动解——合成序与包络数值锚依赖②判式换代与③变异投影,三者共用摇号投影点〕)**。 | 迭代 13 出口(**迭代 13 已落籍 2026-10-04 eff8cb8**,台账 342) | 初始展开批 T0-T8(可两段切分)+判式换代批 T0-T5≈2.5d(独立 worktree 合并)+全局变异首发批 T0-T8≈5.75d(读数批可切,独立 worktree 合并)+技能池执行批 T0-T7≈4.25d(独立 worktree 合并)+提灯接线小卡 0.5d(可并入任一批顺路)〔⑥配比预设批 A4 已移出本迭代挂起,2026-10-05 用户令〕 | | 迭代 15 | **①调试功能整合批(2026-10-05 用户令自「14.5」临时卡改编入册——原周期外 0.5 卡,落地事实与验证读数零变化,只改编号归属)**:主菜单三调试散件(随机种子输入框/角色数值调整板/两层调试入口)收一张调试浮窗 DebugOverlay——入口=开始覆盖层右下角「调试」角标(与主按钮组非平级,DS_DEBUG=1 环境变量门控沿用迭代 8 卡④口径);浮窗=悬浮菜单之上 Dialog(不隐藏开始层,同确认弹窗形态;旧 TunePanel「与开始层互斥」形态与类整体吸收退役含 .uid);可扩展滚动列表页四区块(随机种子/数值调整/批量模拟/两层调试入口——后续调试项往下追加滚轮下探)。四拍板全落(2026-10-04 用户裁)=P1 甲 DS_DEBUG 门控/P2 乙全摊平/P3 仅开始菜单可开·对局不可达(_show_debug_overlay 门禁护栏+对局发起随开随收)/P4 可扩展列表。**✅ 已全批落籍(2026-10-05,worktree iter145-debug-hub 两提交 48c0b34/46dadbb,主区 merge --no-ff d0a3c6b/10c301b,台账 352)**:闸=冒烟 747/0+探针 ui_tune/ui_click/ui 三绿(worktree+主区双跑,主区跑前 --import 重刷类名缓存在册坑);遗留=实机目检归用户(DS_DEBUG=1 启动→右下角角标→浮窗四区块→两层调试入口) | 卡①门:迭代 14 出口(注:本卡先于迭代 14 出口落籍——编入时点迭代 14 ③已闭/①②④⑤在飞/⑥挂起,门列仅记编入时点状态,不构成追溯闸) | 单批已落地(原估 0.5d,实际一次会话);后续扩调试项=debug_overlay.gd _build() 列表区追加区块(P4 扩展口径) | | 迭代 15 | **②奇物概念收口与词族对齐批(2026-10-05 用户令编入本迭代)**:概念层已由用户逐轮裁定定稿(《奇物》v1.0→v2.7,7 轮),本批只做**落地对齐**、不做二次设计。三批内容:**①三套旧词族全面对齐**(顶层已改名「奇物」而代码仍叫旧名=用户最初抱怨的"文档与代码分开"):`feature_*`→`curio_*`(103 处/7 文件)、`relic_*`→`feat_*`(162 处/12 文件)、运行层 `bonus_*`→`curio_*`(160 处/8 文件)。**硬约束:`reward_*` 已被 `reward_pick`/`reward_node`/`reward_preview` 占用,统一词族不得使用**;`relic_table.gd` 与两个控制器类改名须同步 Godot `.uid`/`.tscn`(非文本层无法自证)。**②三条渠道按分类分离**(现行三渠道共用同一个 98 张池、三类混编):关底 Boss 击败=通过这一关→只出专长;奖励节点/商店→属性值提升+资源、专长在此**只以门票形式**出现。**兑付频率红线**:奇物不是打一场战斗给一份,关内普通战斗节点打完不给任何奇物,一关之内只兑付一次(用户 2026-10-05 纠错)。**③两个新种类入池**=刷新次数(须先与"商店独立刷新机制"划清边界)+ 专长获取门票(拿到即开不可囤积/罕见只在概率/一局限购一次/计步保底:连续 5 次三选一展示未出→第 6 次必出,刷新重展计入、奖励节点与商店共享计数);附带 `shop.tres` 补回复(默认原则要求分类内成员都在该出现的渠道池里)与 charge 标签补至 ≥4 件(现仅 3 件,档二永远达不到——数据缺陷)。设计事实源=`design/gdd/systems/冒险循环/奇物.md` v2.7,任务书=`design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md`(T0-T8≈4.5d,两段切分预案在册〔段一词族 T0-T3≈2d/段二渠道+入表 T4-T8≈2.5d〕,切分点=T3 出口;11 条设计契约含 6 条 🔴 停机级;12 条批末验收断言;代拍板白名单 5 项;待用户裁点 4 项〔玩家可见面违规/第四关档二复裁/门票四参数终值/存档键正式迁移〕)。**开工门**:与在途 M-4 各批(判式换代/全局变异/配比预设)撞同一批文件(`adventure_table.gd`/`level_runner.gd`/`adventure.tres`),须确认不并行或用户明示插队 | 卡②门:迭代 14 出口 | 卡①已落籍(原估 0.5d);卡②T0-T8≈4.5d(可两段切分:词族对齐段 + 渠道入表段) | +| 迭代 15 | **③秘宝代码词族对齐批(2026-10-05 用户令编入本迭代)**:设计侧已完成(消歧更名批 `430419c`+`06e94b7`,26 个设计文档「魔法道具」→「**秘宝**」,同调位机制名保留不变),本批只做**代码侧对齐**、不做二次设计。内容:`aux_*`/`AuxItem*` 词族全族换词 **358 处 / 36 文件**(重灾 `adventure_runner.gd`79 / `level_runner.gd`27 / `bonus_interact_controller.gd`19 / `battle_orchestrator.gd`18 / `config_db.gd`14 / `main.gd`13),分五组落:**A 玩家可见文案(P0,5 处)**=`battle_narrator.gd:117-118` + `bonus_interact_controller.gd:76` + `hero_info_panel_view.gd:56`(槽位标题 `UiKit.label`)+ `:178`(tooltip)· B schema 与数据表(`aux_item_table.gd`/`aux_items.tres`/`aux_items.gd` 文件名+类名+`ConfigDB` 持有变量与访问器全链跟改,**须同步 Godot `.uid`/`.tscn` + `--import` 重刷类名缓存**——迭代 14.5 实证在册坑)· C 文档链接修复(含 `architecture.md` 两处既有断债顺带清偿)· D 中文注释层(**须分色**:`魔法矢`/`魔法反噬`/`魔法族`/`魔法护甲` 属敌方伤害护甲语汇🔴不动)· E 测试文件名+内部变量。**用户三项拍板**:全族彻底改(含数据表)· **断点存档键一律保留**(`bonus_aux_carry`/`aux_detail`/`aux_cleared`/`aux_cleared_last`/`aux_items` 断点数组/`attunement_charges` 共 34 处引用一字不改,破档即进度丢失)· registry 条目键 `aux_items` 不改(数据契约键)。设计事实源=`design/gdd/systems/排雷循环/秘宝.md` v0.9,任务书=`design/research/任务书-秘宝代码词族对齐批-2026-10-05.md`(T0-T9≈5.0d,**超软盒 3 日上限·知情预挂**:T7 段末闸后 L3 呈报切点不擅切;**三档降级面 G1/G2/G3 在册**〔G3 下限=仅组 A 完成〕;5 条设计契约含 5 条 🔴 停机级〔存档兼容零破坏/数值零漂移/schema 契约面零变更/零字段更名/核心层零 await〕;代拍板白名单 4 项;**待用户裁点 2 项**)。**撞批已消解**:② 奇物批 2026-10-05 收口落库(合并 `c571af2`),并行风险解除,本批为迭代 15 唯一在途需求;**T0 须重取基线**(判式换代批 T5 读数 750/0、② 又动数据层,§1.2 的 747 为②前旧数禁沿用)并复核事实表。**开工门**:须先裁 C1(`"aux_item"` 是否随全族改·牵动 schema 契约+`reward.tres`+冒烟断言三重连锁)/C2(`aux_items` 一名两义·ConfigDB 变量 vs 断点存档键) | 卡③门:迭代 14 出口 + **C1/C2 二裁点已决** | 卡①已落籍(原估 0.5d);卡②已落籍(`c571af2`);**卡③待开工**(T0 取基线后回填估时;二裁点未决前不开工) | ## 执行纪律(2026-09-27 用户立规) From 3c4291dbd9556e79aa8b6d412cfe4f0d018380c5 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 07:43:57 +0800 Subject: [PATCH 14/15] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E4=B9=A6=20v1.2?= =?UTF-8?q?=EF=BC=9A=E5=85=A8=E6=94=B9=E4=BF=9D=E4=B8=80=E8=87=B4=EF=BC=88?= =?UTF-8?q?C1/C2=20=E8=A3=81=E5=86=B3=E5=85=B3=E9=97=AD=EF=BC=8C=E5=BE=85?= =?UTF-8?q?=E8=A3=81=E7=82=B9=E5=BD=92=E9=9B=B6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户 2026-10-05 裁决:「只要是我们相关的概念对象/变量,全部统一修改, 保证一致性」。两条待裁点据此关闭。 **改名总原则(§4.0 新增)**:凡属本作「秘宝」概念对象的标识符——文件、 类、变量、方法、枚举值、字符串字面量、注册表键——全部换词。判据一句话: 该标识符是否指向「秘宝」这个概念?三类例外穷举:①敌方语汇(magic 格面族 / magic_bolt / ward 魔法护甲 / arch_names)②玩家可见既有柜台名「道具工坊」 ③跨局存档历史键。 **C1 裁决落地(§4.3,实测连锁面比预估小得多)**:`"aux_item"` 域串照改。 - `reward.tres` 已零 aux_item 数据行(池种随迭代 11 T7 退役)→ 原估的 「改数据文件」连锁项**消失** - 全仓 16 处字面量全在代码内闭合,**无跨局存档依赖** → 可彻底改 - 唯一保留连锁项 = `smoke_all.gd:3932-3933` 断言须同步 - 新增**组 F**(分派语汇与域串 16 处:adventure_runner 8 处 / reward_table 枚举与常量 / battle_narrator / bonus_interact_controller / smoke_all 三处 / reward_dangling_aux_test 夹具) **C2 裁决落地(§4.2)**:`aux_items` 一名两义**拆分**—— - ✅ 改:ConfigDB 持有变量 `var aux_items` + 表注册键 `"aux_items"` (纯进程内,加载期取,不落盘) - 🔴 禁改:断点存档键 `adventure_runner.gd:976/844` + 冒烟夹具 `smoke_all.gd:4473/4495`(夹具构造的就是存档键,改则与真存档脱节) - **关键认知:「键名禁改」与「变量名禁改」是两回事**——禁改的只是落盘的 键名字面量,进程内变量名照改不误。这就把一处危险同名拆成 「两可改 + 两禁改」的清晰边界。 - ⚠️ 与 registry 条目键 `aux_items`(`design/registry/entities.yaml`) 区分:registry 条目键禁改(数据契约),ConfigDB 表注册键可改 **§4.1 存档键禁改清单成表**:六个键 12 处引用逐条列出写入点与性质, 要求代码旁加显式禁改注释;T7 卡增设 diff 专项核(逐字节比对,防破档)。 **任务卡 T0-T9 → T0-T10**(新增 T3 组 F),估时 5.0→5.5 日(超软盒 3 日 已知情预挂,T8 后 L3 呈报切点)。§7 标题改为「冲突面裁决记录(C1/C2/C3 已全部关闭)」,roadmap 迭代15③ 门改为「裁点已全决·可开工」。 现状补充:② 奇物批已收口落库(c571af2),C3 撞批消解,本批为迭代 15 唯一 在途需求。T0 须重取基线(判式换代 T5 读数 750/0;§1.2 的 747 为②前旧数 禁沿用)。 --- .../任务书-秘宝代码词族对齐批-2026-10-05.md | 161 ++++++++++++++---- roadmap.md | 2 +- 2 files changed, 127 insertions(+), 36 deletions(-) diff --git a/design/research/任务书-秘宝代码词族对齐批-2026-10-05.md b/design/research/任务书-秘宝代码词族对齐批-2026-10-05.md index db2f9a0e..bb4b8a31 100644 --- a/design/research/任务书-秘宝代码词族对齐批-2026-10-05.md +++ b/design/research/任务书-秘宝代码词族对齐批-2026-10-05.md @@ -9,8 +9,6 @@ > 🔴 **撞批警示(与同迭代 ② 奇物批)**:本批与 `任务书-奇物词族对齐与渠道分离批-2026-10-05.md` 撞同一批文件(`core/level_runner.gd` · `data/tables/adventure.tres` · `core/adventure_runner.gd` 断点区),且**双方都动断点存档键**(本批禁改、②批内有"存档键正式迁移"待裁点)。 > **2026-10-05 07:29 复核:② 奇物批已收口落库**(合并提交 `c571af2`,"merge: 奇物概念收口与词族对齐(迭代15②号卡·文档与数据层)")——**并行撞批风险已解除,本批可独立开工**。但 ② 已改动 `adventure_runner.gd`(46 行) / `config_db.gd` / `level_runner.gd`(10 行) / `adventure_table.gd`(113 行) / `adventure.tres`(42 行) / `relic_table.gd` / `shop_table.gd`,**本批事实表须按 T0 重新复核**(已做首轮复核,见 §2 F1/F3 修订)。 - - --- ## 1. 目标与完成定义 @@ -23,7 +21,7 @@ | # | 判定项 | 量化标准 | |---|---|---| -| 1 | 词族换尽 | `game/` 下 `aux_*`/`AuxItem*`/`AUX_ITEM*` 出现处**仅剩 §4 白名单**(存档键 + 🔴 冲突面 + 历史留痕注释),其余全数换词 | +| 1 | 词族换尽 | `game/` 下 `aux_*`/`AuxItem*`/`AUX_ITEM*`/`"aux_item"` 出现处**仅剩 §4.0 三类例外**(敌方语汇 / 道具工坊 / §4.1 十二处存档键 + 冒烟夹具),其余全数换词。**裁决后无待定欠债——全改** | | 2 | 玩家可见清零 | `grep -rn "魔法道具" game/` **零命中**(2026-10-05 收口后复核现基线 = **5 处玩家可见字符串**,见 §3 组 A;其余 60+ 命中均为注释,由组 D 清) | | 3 | 重闸全绿 | 冒烟 **747/0**(现基线,迭代 15 前实测值)· 十一探针全绿 · MC 逐位对拍**零漂移** · doc 三闸**对基线零新增** · 熵增闸 PASS | | 4 | 人闸完成 | 目检清单过 + 代拍板追认清单过 + §8 白名单外无代拍板 | @@ -46,7 +44,7 @@ | F9 | 中文注释层现状 | 大量注释仍写"魔法道具"(如 `aux_items.gd:2` `aux_items_test.gd:2` `bonus_interact_controller.gd:92` `config_db.gd:27`)——**注释属本批清理对象**(与 §1.2 判定 2 同批) | | F10 | 文档侧已完成 | 2026-10-05 消歧更名批(`430419c` + `06e94b7`):26 个设计文档已改「秘宝」,`秘宝.md` 已重命名,registry 30 处已同步,owner 路径已指向新文件。**本批只做代码侧,文档侧除 §3 链接修复外不动** | -## 3. 改动清单(分五组,逐组独立可提交) +## 3. 改动清单(分六组,逐组独立可提交) ### 组 A · 玩家可见文案(**P0,最高优先**) @@ -107,14 +105,97 @@ | 内部变量 | `_last_aux_cleared` · `_bonus_aux_carry` · `_last_draw_aux` · `aux_inventory` · `aux_items`(局部) | ✅ 换词(**非存档键的**局部变量;存档键见 §4) | | 🔴 冒烟断言 | `smoke_all.gd:3932-3933` `CELL_TYPES.size() == 10 and has("aux_item")` | **见 §7 C1 裁决**——本批不动断言值即需同步改 .tres 与 enum,两条路由 C1 定 | +### 组 F · 分派语汇与域串(**C1 裁决后新增,全改**) + +`"aux_item"` 字面量 **16 处**,全部代码内闭合、**无存档依赖**,一律换词(建议 `treasure_item`;若与局内「奇物」`curio_*` 词族冲突,改 `treasure_*` 全族统一前缀): + +| 文件 | 行 | 处置 | +|---|---|---| +| `core/adventure_runner.gd` | 231 / 366 / 490 / 510 / 556 / 583 / 601 / 672 | ✅ 8 处分派与兑付字面量全改(同源,须一次改齐) | +| `data/schemas/reward_table.gd` | 15 `CELL_TYPES` / 16 `AUX_ITEM_TYPE` / 50 校验分支 | ✅ 改(枚举项 + 常量名 + 分支引用三者同改) | +| `presentation/battle_narrator.gd` | 115 | ✅ 改(叙述分派键) | +| `presentation/bonus_interact_controller.gd` | 127 | ✅ 改(呈现分派键) | +| `smoke/smoke_all.gd` | 562 / 3847 / **3932-3933** | ✅ 改(**断言 `has("aux_item")` 与 `size()==10` 必须同步,否则冒烟红**) | +| `tests/unit/data_config/reward_dangling_aux_test.gd` | 25 | ✅ 改(夹具注入串 `"cell_type": "aux_item"`) | + +> ⚠️ **`reward.tres` 无需改**(已核:零 `aux_item` 数据行,池种随迭代 11 T7 退役)。 +> ⚠️ **枚举项改名后 `CELL_TYPES.size() == 10` 仍为 10**(改的是字面量不是项数),但 `has()` 的参数须同步——这是本组唯一的机械陷阱。 +> 🔴 **`smoke_all.gd:4473/4495` 的 `"aux_items"` 夹具键禁改**(见 §4.2)——它们构造的是断点存档快照,改了夹具就与真存档脱节。 + ## 4. 范围边界(🔴 不可越界) +### 4.0 ✅ 改名总原则(用户 2026-10-05 拍板:**全改,保证一致性**) + +> **凡属本作"秘宝"概念对象的标识符——无论是文件、类、变量、方法、枚举值、字符串字面量,还是注册表键——全部统一换词。** +> 判据一句话:**该标识符是否指向"秘宝"这个概念?** 是 → 改;不是(敌方语汇 / 通用词 / 存档历史键)→ 不改。 + +**三类例外(唯一不改项,穷举)**: + +| 例外 | 具体 | 理由 | +|---|---|---| +| ① **敌方语汇** | `magic` 格面族 · `magic_bolt` / `magic_recoil` · `ward 魔法护甲` · `arch_names["magic"]` | 属敌方伤害/护甲语汇,与秘宝无概念关联 | +| ② **玩家可见既有柜台名** | 「道具工坊」 | 营地三柜台之一,玩家已习惯,本批不动(与秘宝是父子关系,非同义) | +| ③ **跨局存档历史键** | 见 §4.2 白名单 | 改则破档 | + +### 4.1 禁改:跨局存档键(用户 2026-10-05 明令,破档即玩家进度丢失) + +**判据**:凡**写入断点存档 / 跨局持久化**的键名,一律不改。 + +| 键名 | 写入点 | 性质 | +|---|---|---| +| `bonus_aux_carry` | `adventure_runner.gd:982` | 断点:道具件跨关携带 | +| `aux_items` | `adventure_runner.gd:976` 写 / `:844` 读 | 断点:持有集快照 | +| `aux_detail` | `adventure_runner.gd:880/890/538/635/654/665/227/228/685` 读写 | 断点:三选一掷定详情 | +| `aux_cleared` | `adventure_runner.gd:887` 写 / `:864` 读 / `level_runner.gd:523` 写 / `bonus_interact_controller.gd:75` 读 | 断点:关末清空计数 | +| `aux_cleared_last` | `adventure_runner.gd:908` 写 | 断点:末关清空反馈 | +| `attunement_charges` | `adventure_runner.gd:970` 写 / `:251` 读 | 断点:同调主动件充能余量 | + +> **上述键在代码旁必须加显式禁改注释**:`// 🔴 存档键(历史名 aux_*,与中文名「秘宝」对应),禁改——改则破档` +> **配套动作**:对应的**内部变量**(`_bonus_aux_carry` / `_last_draw_aux` / `aux_inventory` / `_last_aux_cleared`)**照改不误**——变量名不落盘,禁改的只是键名字面量。这正是解 C2 一名两义的关键。 + +### 4.2 `aux_items` 三处同名用法(**C2 裁决落地**) + +同一个字面 `aux_items` 在三处语义不同,**处置各异**: + +| 位置 | 实际语义 | 处置 | +|---|---|---| +| `config_db.gd:27` `var aux_items` = `AuxItemTable` | **注册表键 + 持有变量** | ✅ **改**(`treasure_items` / `TreasureItemTable`)——纯进程内,加载期从 `loaded.get()` 取,不落盘 | +| `config_db.gd:27` `"aux_items": "aux_items.tres"` | **表注册项** | ✅ **改**(ConfigDB 内部映射,两端同改即闭合) | +| `adventure_runner.gd:976/844` `"aux_items"` | **断点存档键** | 🔴 **禁改** + 加注释标记 | +| `smoke_all.gd:4473/4495` `"aux_items": [...]` | **冒烟夹具(构造断点快照)** | 🔴 **禁改**——它构造的就是存档键,改了则夹具与真存档脱节、测试失去意义 | + +### 4.3 ✅ C1 裁决落地:`"aux_item"` 域串**照改**(连锁面已实测收窄) + +**用户 2026-10-05 拍板全改。实测复核后连锁面比预估小得多**: + +| 原判断 | 实测 | 结论 | +|---|---|---| +| 要改 `reward.tres` 数据行 | **`reward.tres` 已零 `aux_item` 数据行**(aux_item 池种随迭代 11 第①批 T7 退役) | ✅ **无需改数据文件** | +| 要改冒烟断言 | `smoke_all.gd:3932-3933` 断言 `size()==10 and has("aux_item")` | ⚠️ 断言**必须同步改**(枚举与断言同源) | +| schema 契约 | `reward_table.gd:15/16/50` | ✅ 改(枚举 + 常量 + 校验分支) | + +**全仓 `"aux_item"` 字面量 16 处(全部代码内闭合,**无跨局存档依赖**)**: + +| 文件:行 | 用途 | +|---|---| +| `adventure_runner.gd:231/366/490/510/556/583/601/672` | 分派与兑付(8 处,同一分派语汇) | +| `reward_table.gd:15` `CELL_TYPES` · `:16` `AUX_ITEM_TYPE` | 枚举与常量 | +| `battle_narrator.gd:115` | 叙述分派键 | +| `bonus_interact_controller.gd:127` | 呈现分派键 | +| `smoke_all.gd:562/3847/3932` | 冒烟断言与夹具判断 | +| `reward_dangling_aux_test.gd:25` | 夹具注入串 | + +> ✅ **这 16 处无一是存档键**(对比 §4.1 的 12 处)——**可彻底改,无兼容风险**。 +> ⚠️ 改后 `smoke_all.gd:3932` 断言须同步为新字面量,否则冒烟红。 + +### 4.4 其他禁改项 + ### 本批**不做**(硬边界,违反即 L3 停机) | 禁项 | 理由 | |---|---| | **断点存档键一律保留** | 用户 2026-10-05 明令。`bonus_aux_carry` / `aux_detail` / `aux_cleared` / `aux_cleared_last` / `aux_items`(断点数组)/ `attunement_charges` **一字不改**——破档即玩家进度丢失 | -| **registry 条目键 `aux_items` 不改** | 属数据契约键(`design/registry/entities.yaml`),与 06 更名批的"条目键沿用"口径一致 | +| **registry 条目键 `aux_items` 不改** | 属数据契约键(`design/registry/entities.yaml`),与 06 更名批的"条目键沿用"口径一致。⚠️ 注意与 §4.2 的 ConfigDB 表注册键区分:**registry 条目键禁改,ConfigDB 表注册键可改** | | **数值零触碰** | 本批纯改名。`magnitude` / `charge_n` / `w` / `t` / 权重档位**一律不动** | | **行为零变更** | 不得借改名之机重构逻辑、调参数、改流程 | | **`magic` 格面族与 `ward` 护甲** | 敌方语汇,与本批无关(组 D 已锁) | @@ -152,39 +233,49 @@ | **T0** | 开工:worktree + 基线复读(冒烟实际值/十一探针/MC 基准/三闸)+ `git status` 归属核对 + 记录 `.uid` 清单 + **回填 §1.2 基线数字** | 0.5d | 全量冒烟基线 | 基线数字回填进本文档 §1.2 且全绿 | | **T1** | **组 A + D**(玩家可见文案 + 中文注释层) | 0.5d | 冒烟 + `grep "魔法道具" game/` 零命中 | 组 D 分色表零误改(`魔法矢`/`魔法护甲` 未被误改) | | **T2** | **组 C**(链接修复,含 architecture.md 既有断债清偿) | 0.25d | doc 三闸 | `doc_link` 对基线**零新增** | -| **T3** | **组 B-1**(schema 文件名 + 类名 + `.uid` 同步 + `--import` 重刷) | 0.75d | 冒烟 + `--import` 后类名解析 | `TreasureItemTable` 加载零报错 | -| **T4** | **组 B-2**(ConfigDB 持有变量 + 访问器 + 全部调用方跟改) | 0.75d | 冒烟 + MC 对拍 | 冒烟数值断言全绿(访问器链路完整) | -| **T5** | **组 E-1**(测试文件名 + preload + run_all 登记) | 0.5d | 冒烟(十五套件全跑) | `run_all` 无 fixture 缺失 | -| **T6** | **组 E-2**(内部变量换词) | 0.5d | 冒烟 + MC 对拍 | MC 逐位零漂移 | -| **T7** | **重闸**:全量轻闸 + doc 三闸 + 熵增闸 + MC 逐位对拍 | 0.5d | 重闸全绿 | §1.2 判定 3 五项全绿 | -| **T8** | **人闸**:目检清单 + 代拍板追认 + §7 冲突面裁决回报 | 0.5d | 目检过 | §1.2 判定 4 | -| **T9** | **收口五步** | 0.25d | — | §1.2 判定 5 | +| **T3** | **组 F**(`"aux_item"` 分派语汇与域串 16 处,含冒烟断言同步) | 0.5d | 冒烟 + MC 对拍 | `smoke_all.gd:3932` 断言同步后绿;`reward.tres` 零改动 | +| **T4** | **组 B-1**(schema 文件名 + 类名 + `.uid` 同步 + `--import` 重刷) | 0.75d | 冒烟 + `--import` 后类名解析 | `TreasureItemTable` 加载零报错 | +| **T5** | **组 B-2**(ConfigDB 持有变量 + 表注册键 + 访问器 + 全部调用方跟改) | 0.75d | 冒烟 + MC 对拍 | 冒烟数值断言全绿;**§4.2 四处同名用法按表分置** | +| **T6** | **组 E-1**(测试文件名 + preload + run_all 登记) | 0.5d | 冒烟(十五套件全跑) | `run_all` 无 fixture 缺失 | +| **T7** | **组 E-2**(内部变量换词,**存档键字面量除外**) | 0.5d | 冒烟 + MC 对拍 | MC 逐位零漂移;§4.1 十二处存档键**逐字未变**(diff 专项核) | +| **T8** | **重闸**:全量轻闸 + doc 三闸 + 熵增闸 + MC 逐位对拍 | 0.5d | 重闸全绿 | §1.2 判定 3 五项全绿 | +| **T9** | **人闸**:目检清单(含 C 区槽位标题与 tooltip 实机确认)+ 代拍板追认 | 0.5d | 目检过 | §1.2 判定 4 | +| **T10** | **收口五步** | 0.25d | — | §1.2 判定 5 | -> 估时合计 ≈ **5.0 日**,**超 roadmap 软盒 3 日上限**。知情预挂:T7 后按 L3 呈报切点,不擅切(沿迭代 9 先例:估 4.5–6 日 vs 软盒 3 日,切点=段末闸后呈报)。或执行中触发 G1/G2 降级可压至 3 日内。 +> 估时合计 ≈ **5.5 日**,**超 roadmap 软盒 3 日上限**。知情预挂:T8 后按 L3 呈报切点,不擅切(沿迭代 9 先例)。或执行中触发 G1/G2 降级可压至 3 日内。 +> +> **T7 的存档键零变更核验方法**:`git diff` 后逐条比对 §4.1 表中 12 处键名字面量,须**逐字节一致**——这是本批最容易破档的一卡,须专项核。 -## 7. 待裁决冲突面(🔴 **T0 必须回报用户,不得自行决断**) +## 7. 冲突面裁决记录(C1/C2/C3 **已全部关闭**) -### C1 · `"aux_item"` 格面域串改不改? +### C1 · `"aux_item"` 格面域串改不改? ✅ **已裁决:全改(用户 2026-10-05)** -**事实冲突**:用户拍板"全族彻底改(含数据表)",但该串是**加载期校验的域名字符串**,改动 = 三重连锁:改 `reward_table.gd:15` enum → 改 `reward.tres` 数据行 `cell_type` → 改 `smoke_all.gd:3932` 断言(`size()==10 and has("aux_item")`)。 +**原事实**:`"aux_item"` 是加载期校验域串,改动 = 三重连锁(enum + .tres 数据行 + 冒烟断言)。 -| 方案 | 做法 | 风险 | +**裁决后实测收窄(关键)**: + +| 原判断 | 实测结果 | +|---|---| +| 需改 `reward.tres` 数据行 | **`reward.tres` 已零 `aux_item` 数据行**(池种随迭代 11 T7 退役)→ **该连锁项消失** | +| 需改冒烟断言 | `smoke_all.gd:3932-3933` 断言必须同步改(**唯一保留的连锁项**) | +| schema 契约 | `reward_table.gd:15/16/50` 照改 | + +**结论**:全仓 `"aux_item"` 字面量 **16 处,全部代码内闭合,无跨局存档依赖** → **可彻底改,无兼容风险**。落地细则见 §4.3。 + +### C2 · `aux_items` 一名两义拆不拆? ✅ **已裁决:拆(用户 2026-10-05)** + +**裁决**:内部持有变量与注册表键 ✅ 全改;断点存档键 🔴 保留 + 加禁改注释;冒烟夹具 🔴 保留(它构造的就是存档键)。 + +**解法核心**:**"键名禁改"与"变量名禁改"是两回事**——禁改的只是落盘的键名字面量,进程内的变量名/注册表键照改不误。这就把一处危险同名拆成了「两个可改 + 两个不可改」的清晰边界。 + +| 位置 | 语义 | 处置 | |---|---|---| -| **甲** | 全改(enum + .tres + 断言) | 🔴 **动 schema 契约 + 数据文件**;`reward.tres` 存量数据行须逐行改;`doc_term` 闸可能判新增术语债 | -| **乙** | 保留 `"aux_item"` 域串为**已知欠债**,加注释说明它 = 秘宝 | 零风险;"全族彻底改"打折(但可解释为"域串非用户可见语义") | +| `config_db.gd:27` `var aux_items` / `:50` 持有变量 | 进程内持有 | ✅ 改 `treasure_items` | +| `config_db.gd:27` `"aux_items": "aux_items.tres"` | 表注册项 | ✅ 改(两端同改闭合) | +| `adventure_runner.gd:976/844` `"aux_items"` | 断点存档键 | 🔴 禁改 + 注释 | +| `smoke_all.gd:4473/4495` `"aux_items"` | 冒烟夹具 | 🔴 禁改(改则夹具与真存档脱节) | -> **我方倾向:乙**——该串是数据契约键而非玩家可见语汇,与 registry 条目键同性质(同"沿用不改"口径);且 `reward.tres` 是 MC 对拍的输入,动它会污染 R2 判定。**须用户拍板**。 - -### C2 · `aux_items` 一名两义拆不拆? - -**事实**(F6):`config_db.gd:50` 的持有变量 `var aux_items: AuxItemTable`(可改)与断点存档键 `"aux_items"`(禁改)**字符串相同**。`adventure_runner.gd:951-976` 的断点数组读写用的正是这个键。 - -| 方案 | 做法 | 风险 | -|---|---|---| -| **甲** | 变量改 `treasure_items`、存档键留 `aux_items`(靠字面不同区分) | 🟡 **易误改**:同文件内 `bp.get("aux_items")` 与 `treasure_items` 混排,肉眼难辨 | -| **乙** | 变量保持 `aux_items` 不改、只改类名与文件名 | 与"全族彻底改"打折,但零误改风险 | - -> **我方倾向:甲 + 强制注释标记**——变量改词,存档键在代码旁加显式注释 `// 🔴 存档键,历史名,禁改(2026-10-05 用户拍板)`。**须用户拍板**。 +落地细则见 §4.2。 ### C3 · 与同迭代 ② 奇物批的串行次序(✅ **2026-10-05 已消解**) @@ -197,7 +288,6 @@ 2. **T0 须复核 §2 全部事实表**——② 改动面覆盖 `adventure_runner.gd` / `config_db.gd` / `level_runner.gd` / `adventure_table.gd` / `adventure.tres` / `relic_table.gd` / `shop_table.gd`,其中 `adventure_runner.gd` 是本批 F2 第一重灾文件(79 处)。 3. **② 的"存档键正式迁移"待裁点状态须查清**——若 ② 已迁移了 `bonus_aux_carry` / `aux_items` 等键名,本批 §4 的禁改清单须同步更新(**这是本批唯一仍需向用户确认的残留项**)。 - ## 8. 代拍板白名单 **白名单内**(执行会话可直接决断,commit 记录): @@ -206,11 +296,13 @@ - 改名顺序与提交粒度(§3 五组可再细分) **白名单外**(须回报用户): -- §7 C1 / C2 两条冲突面的任何决断 - 任何 🔴 R1–R5 契约的取舍 - 降级级别选择(G1/G2/G3) -- `.tres` 数据行 `cell_type` 值改与不改(C1 派生) - 冒烟基线数字与本文档不符时的取用 +- **§4.1 存档键白名单的任何增补**(增补即意味着扩大破档面) +- **§4.0 三类例外的边界质疑**(例如某个 `magic_` 标识符到底属敌方语汇还是秘宝概念) + +> ✅ **C1 / C2 已于 2026-10-05 裁决关闭**(全改保一致),不再是待裁点。 ## 9. loop engineering 八件对照(合规自证) @@ -254,4 +346,3 @@ > **注 1**:`entities.yaml` 无法被标准 YAML 解析器读取(项目把 `**粗体**` 当键名用,改动前即如此)——校验结构须用正则提取键集合比对,**勿用 `yaml.safe_load`**。 > > **注 2**:局内「奇物」概念文档 = [奇物.md](../gdd/systems/冒险循环/奇物.md) v2.7(7 轮裁定定稿,2026-10-05 落文),任务书 = `任务书-奇物词族对齐与渠道分离批-2026-10-05.md`。**本批与它分属两套词族**(`aux_*` = 局外秘宝 / `feature_*`·`relic_*`·`bonus_*` = 局内奇物),但撞同一批文件——见 §7 C3。 - diff --git a/roadmap.md b/roadmap.md index 26f71c06..1e634ac3 100644 --- a/roadmap.md +++ b/roadmap.md @@ -62,7 +62,7 @@ | 迭代 14 | **初始展开收窄批(2026-10-04 用户拍板甲乙混合立项)**:甲=先布后删剃雷域收窄至出生 3×3∪外扩 r 环(参数化半径,现值 r=1——开阔地均值从板面 66.5% 根因性降至约三成)+乙=生成重掷闸 R₀≤cap(合法性门序列、cap=板面 30% 锚〔10×10=30/12×12=43/13×13=51〕、重试耗尽走既有三分出口);**玩法侧零改动路线**(排雷玩法「初始展开恰等」验收原样为真,minesweeper_rules.gd 零 diff);裸数字截断路否决退役(可见 0 格+未开邻居=扫雷不可能态)。可行性报告=`design/research/研究-初始展开收窄可行性-2026-10-04.md`,任务书=`design/research/任务书-初始展开收窄批-2026-10-04.md`(T0-T8≈5.25d,读数批 T5-T6 可切独立后批;拍板点 P1-P3 全读数后置;停机点 S1 相变警戒/S2 带越界回调)。**②挖掘风险不等式判式换代批(2026-10-04 用户裁编入本迭代,作为迭代内需求)**:判式三层换代(条款2 标中旗锚/条款3 聚合健康式「(1−ρ̂)E_dig−ρ̂V_mine≥0」/旗边际引理+条件二旗溢价)+β 比值带判读 [1.2,2.5](u=3 登记态)+标中兑付溢价 δ=1.25(形态 a 兑付公式一处·雷安同池冻结不动)+runsum 旗行为五字段+audit 工具常量刷新(池 77/直伤 6-8-8/AP 8);裁决全落零新拍板点(方案报告=`design/research/方案-挖掘风险不等式修订-2026-10-04.md` §九),任务书=`.zcode/plans/mine-inequality-revision-miniloop-plan-2026-10-04.md`(T0-T5≈2.5d;条件二 T3 落文按登记已知破·T4 机制转绿;契约红线=DamageController 零改/直伤雷 6-8-8 与 p_perfect 不动——iter8 缺口四选一解绑独立在案;开工门=U0)。**✅ 实施批落地(2026-10-05,worktree m4iter14-mineq-20261005 台账 354)**:T0-T5 全落——audit 工具常量刷新(改前静态锚与方案报告 §四 逐位吻合)+runsum 五字段(行侧判据考证=授予行专带 highlight,87行==87插旗1:1)+F1 条款3 重立三层口径(v0.8)+战斗结算 v0.25+难度联动表+6 行+registry clause3_inequality 重立条(改前锚+P7 修正注记)+06 破线条收口+**T4 标中兑付溢价机制**(settlement.flag_hit_premium=125 provisional,grant 单点只挂 flag_hit 正向·percent 幅度贯穿应用与呈现,标空/挖格不乘,DamageController 零改/同池冻结)+smoke 750/0(+3 断言;max 路径种子 42→43 重采);判读三件=β 带 u=1/2 带内 u=3 登记态/δ 敏感度行为无感(η 位移 <1.4pp<5pp,保留+登记)/条件二判式口径等号压线转绿(整数量级实现 u=1/2 绿·u=3 微欠 −1.1% 登记面);改后锚换代 runsum_m4iter14mineq_post_n200_20261005(perfect 冒险通关 65.3%→72.0% 增强向位移,四带判读归 M-4);出口报告=design/qa/m4iter14-mineq-exit-report-2026-10-05.md(provisional 追认单 8 项+07⑫ 人工项);damage_probe A1 红灯=改前既有非本批新增(在册)。**③全局作用域变异首发批(2026-10-04 用户拍板立项——调研报告 P1-P8+盘问 Q1-Q4 全按推荐案落,批内序位待排)**:L2/L3 Boss 图恒定一型 scope=global 变异,首发型=**案A 资源面·微贫向偏斜**(正向格面池合计不变、进攻族 attack/blast/pierce/magic 权重上浮/生存族 heal/defense 明显下调、EV 微降 3-5% provisional、gp/action 白名单不动;v1.0「沃土+雷密对冲」形勘误作废——雷数为生成器事实、布置段不可加,改生成端=踩结构面否决理由);**替换制**(Boss 图不再布 region 片——L2 完美 Boss 承伤 55.8% 已越带不叠加;迭代 12 四件地形应对件在 Boss 图失效=知情代价,registry/调参日志随批登记);L1 Boss 免疫(带B [50,85] 教学保护);三层预告(开战横幅+HUD 常驻角标+帮助手册行);带A 判读后置 M-4(落地 off/on 对拍只测不判;off 基线=替换制后零变异 Boss 图,与现行带 region 片 Boss 图语义不同须注明);偏运硬币合成序=图级先件级后(代拍随批锚登记)。调研报告(事实源,v1.1 裁决落盘)=`design/research/调研-全局作用域变异设计空间-2026-10-04.md`,任务书=`design/research/任务书-全局作用域变异首发批-2026-10-04.md`(T0-T8≈5.75d,读数批 T7 可切独立后批→主体≈5.25d;零新拍板点·provisional 追认单随批;停机点 S1 普通图逐位漂移/S2 读数越带只呈报/S3 互锁误伤;开工门=U0;**⑥A4 批开工门含本批出口——本批落地图级偏斜投影点为⑥合成链中段**〔2026-10-05 注:⑥已移出迭代 14 挂起,此依赖句冻结待其重启〕)。与①②互不撞(收窄=普通图初始展开轴/判式=不等式判读口径/全局变异=Boss 图资源面轴),出口读数各自分开归因。**✅ 实施批落地(2026-10-04,worktree m4iter14-gvar-20261004 台账 345)**:T1-T8 实施批全落(T7b MC 读数批按切分预案切独立后批,跑批待用户批准)——skewed_veins 贫矿脉行+互锁三条+effect_value [0,50]/门控第三维节点身份/替换制+兜底回落/装板序全局决议前置(数据依赖调和,出口报告在册)/资源面偏斜投影(整数最大余数守恒 77+合成序图级先件级后)/三层预告三层全接/七正主落文+06 收口;闸=冒烟 747/0(+29)+run_all 15+golden 普通图逐位 12/12 全等+六探针+三闸熵增终录见批报告 design/qa/m4iter14-gvar-exit-report-2026-10-04.md(Q3 四件应对件知情代价登记+静态推演+provisional 追认单+人闸目检清单);**③出口成立——⑥A4 开工门解一半**(另半=②出口);off/on 双档读数待 T7b(带 A 判读归 M-4 只测不判)。**④技能池执行批(2026-10-04 用户点名入列——调研+四裁+任务书全齐,06 Alpha 验证条目随之收口)**:文档五件(敌人系统.md 池构成表补 L2/L3 五敌种行/护甲列改读表口径/Boss 三代错峰句/意图呈现节补解锁弹出规格/版本 v0.13+EV 锚整数口径重登记+enemy.tres 批注消歧)+**新机制一件=Boss 半血解锁新独占伤害技**(三 Boss 血量 ≤50%〔用户口径定死〕解锁:酋长「震地怒击」类 ×2.5/CD4·卓尔遏毒类 ×2.0/CD3·石君王「岩崩」类 ×2.5/CD4——参考档即工作值,命名 T5 定稿、倍率冷却 provisional 归调参;enemy.tres 池条目扩 unlock_hp_pct 键〔int [1,99] 缺省无=无门槛〕;未解锁条目双面过滤不进摇号与保底集合;解锁出一次归因明细行「XX 解锁了 YY」);首拍加权取消(杂鱼纹理注销——巨蜘蛛 52% 读数已被 Package B 抬血自愈、地精两行终裁不加工);呈现=明细行+既有类型级预告+解锁时技能名一次性弹出(零动画资产、不改演出);裁决 D1-D8 零待裁;任务书=`design/research/任务书-技能池执行批-2026-10-04.md`(T0-T7≈4.25d,切分预案在册)——开工=用户发令升计划书。**⑤魔法提灯 +2 效果接线(小卡)**:零调研直入——2026-09-30 拍板④已裁(灯甲视野外扩 +2 格、类型微光不随视野扩),迷雾批已留常量 LIGHT_RADIUS_LANTERN_BONUS,纯接线+断言估 0.5d 内。原候选卡注记终态(2026-10-04):敌人系统内容批=已具化为④;教学引导定稿批=用户裁改排 Beta(06 教学节头注记在案),移出本迭代候选。**⑥冒险前资源配比预设批——已移出本迭代(2026-10-05 用户令挂起:暂不做;条目保留 06-待办清单「冒险前资源配比预设(构筑提案)」〔已裁待实施→挂起〕,八项裁决全数有效、任务书冻结保留=design/research/任务书-冒险前资源配比预设批-2026-10-04.md;重启须用户另行发令,届时开工门仍=②③号卡出口〔若②③已落籍 master 则自动解——合成序与包络数值锚依赖②判式换代与③变异投影,三者共用摇号投影点〕)**。 | 迭代 13 出口(**迭代 13 已落籍 2026-10-04 eff8cb8**,台账 342) | 初始展开批 T0-T8(可两段切分)+判式换代批 T0-T5≈2.5d(独立 worktree 合并)+全局变异首发批 T0-T8≈5.75d(读数批可切,独立 worktree 合并)+技能池执行批 T0-T7≈4.25d(独立 worktree 合并)+提灯接线小卡 0.5d(可并入任一批顺路)〔⑥配比预设批 A4 已移出本迭代挂起,2026-10-05 用户令〕 |**③全局作用域变异首发批(2026-10-04 用户拍板立项——调研报告 P1-P8+盘问 Q1-Q4 全按推荐案落,批内序位待排)**:L2/L3 Boss 图恒定一型 scope=global 变异,首发型=**案A 资源面·微贫向偏斜**(正向格面池合计不变、进攻族 attack/blast/pierce/magic 权重上浮/生存族 heal/defense 明显下调、EV 微降 3-5% provisional、gp/action 白名单不动;v1.0「沃土+雷密对冲」形勘误作废——雷数为生成器事实、布置段不可加,改生成端=踩结构面否决理由);**替换制**(Boss 图不再布 region 片——L2 完美 Boss 承伤 55.8% 已越带不叠加;迭代 12 四件地形应对件在 Boss 图失效=知情代价,registry/调参日志随批登记);L1 Boss 免疫(带B [50,85] 教学保护);三层预告(开战横幅+HUD 常驻角标+帮助手册行);带A 判读后置 M-4(落地 off/on 对拍只测不判;off 基线=替换制后零变异 Boss 图,与现行带 region 片 Boss 图语义不同须注明);偏运硬币合成序=图级先件级后(代拍随批锚登记)。调研报告(事实源,v1.1 裁决落盘)=`design/research/调研-全局作用域变异设计空间-2026-10-04.md`,任务书=`design/research/任务书-全局作用域变异首发批-2026-10-04.md`(T0-T8≈5.75d,读数批 T7 可切独立后批→主体≈5.25d;零新拍板点·provisional 追认单随批;停机点 S1 普通图逐位漂移/S2 读数越带只呈报/S3 互锁误伤;开工门=U0;**⑥A4 批开工门含本批出口——本批落地图级偏斜投影点为⑥合成链中段**〔2026-10-05 注:⑥已移出迭代 14 挂起,此依赖句冻结待其重启〕)。与①②互不撞(收窄=普通图初始展开轴/判式=不等式判读口径/全局变异=Boss 图资源面轴),出口读数各自分开归因。**✅ 实施批落地(2026-10-04,worktree m4iter14-gvar-20261004 台账 345)**:T1-T8 实施批全落(T7b MC 读数批按切分预案切独立后批,跑批待用户批准)——skewed_veins 贫矿脉行+互锁三条+effect_value [0,50]/门控第三维节点身份/替换制+兜底回落/装板序全局决议前置(数据依赖调和,出口报告在册)/资源面偏斜投影(整数最大余数守恒 77+合成序图级先件级后)/三层预告三层全接/七正主落文+06 收口;闸=冒烟 747/0(+29)+run_all 15+golden 普通图逐位 12/12 全等+六探针+三闸熵增终录见批报告 design/qa/m4iter14-gvar-exit-report-2026-10-04.md(Q3 四件应对件知情代价登记+静态推演+provisional 追认单+人闸目检清单);**③出口成立——⑥A4 开工门解一半**(另半=②出口);off/on 双档读数待 T7b(带 A 判读归 M-4 只测不判)。**④技能池执行批(2026-10-04 用户点名入列——调研+四裁+任务书全齐,06 Alpha 验证条目随之收口)**:文档五件(敌人系统.md 池构成表补 L2/L3 五敌种行/护甲列改读表口径/Boss 三代错峰句/意图呈现节补解锁弹出规格/版本 v0.13+EV 锚整数口径重登记+enemy.tres 批注消歧)+**新机制一件=Boss 半血解锁新独占伤害技**(三 Boss 血量 ≤50%〔用户口径定死〕解锁:酋长「震地怒击」类 ×2.5/CD4·卓尔遏毒类 ×2.0/CD3·石君王「岩崩」类 ×2.5/CD4——参考档即工作值,命名 T5 定稿、倍率冷却 provisional 归调参;enemy.tres 池条目扩 unlock_hp_pct 键〔int [1,99] 缺省无=无门槛〕;未解锁条目双面过滤不进摇号与保底集合;解锁出一次归因明细行「XX 解锁了 YY」);首拍加权取消(杂鱼纹理注销——巨蜘蛛 52% 读数已被 Package B 抬血自愈、地精两行终裁不加工);呈现=明细行+既有类型级预告+解锁时技能名一次性弹出(零动画资产、不改演出);裁决 D1-D8 零待裁;任务书=`design/research/任务书-技能池执行批-2026-10-04.md`(T0-T7≈4.25d,切分预案在册)——开工=用户发令升计划书。**⑤魔法提灯 +2 效果接线(小卡)**:零调研直入——2026-09-30 拍板④已裁(灯甲视野外扩 +2 格、类型微光不随视野扩),迷雾批已留常量 LIGHT_RADIUS_LANTERN_BONUS,纯接线+断言估 0.5d 内。原候选卡注记终态(2026-10-04):敌人系统内容批=已具化为④;教学引导定稿批=用户裁改排 Beta(06 教学节头注记在案),移出本迭代候选。**⑥冒险前资源配比预设批——已移出本迭代(2026-10-05 用户令挂起:暂不做;条目保留 06-待办清单「冒险前资源配比预设(构筑提案)」〔已裁待实施→挂起〕,八项裁决全数有效、任务书冻结保留=design/research/任务书-冒险前资源配比预设批-2026-10-04.md;重启须用户另行发令,届时开工门仍=②③号卡出口〔若②③已落籍 master 则自动解——合成序与包络数值锚依赖②判式换代与③变异投影,三者共用摇号投影点〕)**。 | 迭代 13 出口(**迭代 13 已落籍 2026-10-04 eff8cb8**,台账 342) | 初始展开批 T0-T8(可两段切分)+判式换代批 T0-T5≈2.5d(独立 worktree 合并)+全局变异首发批 T0-T8≈5.75d(读数批可切,独立 worktree 合并)+技能池执行批 T0-T7≈4.25d(独立 worktree 合并)+提灯接线小卡 0.5d(可并入任一批顺路)〔⑥配比预设批 A4 已移出本迭代挂起,2026-10-05 用户令〕 | | 迭代 15 | **①调试功能整合批(2026-10-05 用户令自「14.5」临时卡改编入册——原周期外 0.5 卡,落地事实与验证读数零变化,只改编号归属)**:主菜单三调试散件(随机种子输入框/角色数值调整板/两层调试入口)收一张调试浮窗 DebugOverlay——入口=开始覆盖层右下角「调试」角标(与主按钮组非平级,DS_DEBUG=1 环境变量门控沿用迭代 8 卡④口径);浮窗=悬浮菜单之上 Dialog(不隐藏开始层,同确认弹窗形态;旧 TunePanel「与开始层互斥」形态与类整体吸收退役含 .uid);可扩展滚动列表页四区块(随机种子/数值调整/批量模拟/两层调试入口——后续调试项往下追加滚轮下探)。四拍板全落(2026-10-04 用户裁)=P1 甲 DS_DEBUG 门控/P2 乙全摊平/P3 仅开始菜单可开·对局不可达(_show_debug_overlay 门禁护栏+对局发起随开随收)/P4 可扩展列表。**✅ 已全批落籍(2026-10-05,worktree iter145-debug-hub 两提交 48c0b34/46dadbb,主区 merge --no-ff d0a3c6b/10c301b,台账 352)**:闸=冒烟 747/0+探针 ui_tune/ui_click/ui 三绿(worktree+主区双跑,主区跑前 --import 重刷类名缓存在册坑);遗留=实机目检归用户(DS_DEBUG=1 启动→右下角角标→浮窗四区块→两层调试入口) | 卡①门:迭代 14 出口(注:本卡先于迭代 14 出口落籍——编入时点迭代 14 ③已闭/①②④⑤在飞/⑥挂起,门列仅记编入时点状态,不构成追溯闸) | 单批已落地(原估 0.5d,实际一次会话);后续扩调试项=debug_overlay.gd _build() 列表区追加区块(P4 扩展口径) | | 迭代 15 | **②奇物概念收口与词族对齐批(2026-10-05 用户令编入本迭代)**:概念层已由用户逐轮裁定定稿(《奇物》v1.0→v2.7,7 轮),本批只做**落地对齐**、不做二次设计。三批内容:**①三套旧词族全面对齐**(顶层已改名「奇物」而代码仍叫旧名=用户最初抱怨的"文档与代码分开"):`feature_*`→`curio_*`(103 处/7 文件)、`relic_*`→`feat_*`(162 处/12 文件)、运行层 `bonus_*`→`curio_*`(160 处/8 文件)。**硬约束:`reward_*` 已被 `reward_pick`/`reward_node`/`reward_preview` 占用,统一词族不得使用**;`relic_table.gd` 与两个控制器类改名须同步 Godot `.uid`/`.tscn`(非文本层无法自证)。**②三条渠道按分类分离**(现行三渠道共用同一个 98 张池、三类混编):关底 Boss 击败=通过这一关→只出专长;奖励节点/商店→属性值提升+资源、专长在此**只以门票形式**出现。**兑付频率红线**:奇物不是打一场战斗给一份,关内普通战斗节点打完不给任何奇物,一关之内只兑付一次(用户 2026-10-05 纠错)。**③两个新种类入池**=刷新次数(须先与"商店独立刷新机制"划清边界)+ 专长获取门票(拿到即开不可囤积/罕见只在概率/一局限购一次/计步保底:连续 5 次三选一展示未出→第 6 次必出,刷新重展计入、奖励节点与商店共享计数);附带 `shop.tres` 补回复(默认原则要求分类内成员都在该出现的渠道池里)与 charge 标签补至 ≥4 件(现仅 3 件,档二永远达不到——数据缺陷)。设计事实源=`design/gdd/systems/冒险循环/奇物.md` v2.7,任务书=`design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md`(T0-T8≈4.5d,两段切分预案在册〔段一词族 T0-T3≈2d/段二渠道+入表 T4-T8≈2.5d〕,切分点=T3 出口;11 条设计契约含 6 条 🔴 停机级;12 条批末验收断言;代拍板白名单 5 项;待用户裁点 4 项〔玩家可见面违规/第四关档二复裁/门票四参数终值/存档键正式迁移〕)。**开工门**:与在途 M-4 各批(判式换代/全局变异/配比预设)撞同一批文件(`adventure_table.gd`/`level_runner.gd`/`adventure.tres`),须确认不并行或用户明示插队 | 卡②门:迭代 14 出口 | 卡①已落籍(原估 0.5d);卡②T0-T8≈4.5d(可两段切分:词族对齐段 + 渠道入表段) | -| 迭代 15 | **③秘宝代码词族对齐批(2026-10-05 用户令编入本迭代)**:设计侧已完成(消歧更名批 `430419c`+`06e94b7`,26 个设计文档「魔法道具」→「**秘宝**」,同调位机制名保留不变),本批只做**代码侧对齐**、不做二次设计。内容:`aux_*`/`AuxItem*` 词族全族换词 **358 处 / 36 文件**(重灾 `adventure_runner.gd`79 / `level_runner.gd`27 / `bonus_interact_controller.gd`19 / `battle_orchestrator.gd`18 / `config_db.gd`14 / `main.gd`13),分五组落:**A 玩家可见文案(P0,5 处)**=`battle_narrator.gd:117-118` + `bonus_interact_controller.gd:76` + `hero_info_panel_view.gd:56`(槽位标题 `UiKit.label`)+ `:178`(tooltip)· B schema 与数据表(`aux_item_table.gd`/`aux_items.tres`/`aux_items.gd` 文件名+类名+`ConfigDB` 持有变量与访问器全链跟改,**须同步 Godot `.uid`/`.tscn` + `--import` 重刷类名缓存**——迭代 14.5 实证在册坑)· C 文档链接修复(含 `architecture.md` 两处既有断债顺带清偿)· D 中文注释层(**须分色**:`魔法矢`/`魔法反噬`/`魔法族`/`魔法护甲` 属敌方伤害护甲语汇🔴不动)· E 测试文件名+内部变量。**用户三项拍板**:全族彻底改(含数据表)· **断点存档键一律保留**(`bonus_aux_carry`/`aux_detail`/`aux_cleared`/`aux_cleared_last`/`aux_items` 断点数组/`attunement_charges` 共 34 处引用一字不改,破档即进度丢失)· registry 条目键 `aux_items` 不改(数据契约键)。设计事实源=`design/gdd/systems/排雷循环/秘宝.md` v0.9,任务书=`design/research/任务书-秘宝代码词族对齐批-2026-10-05.md`(T0-T9≈5.0d,**超软盒 3 日上限·知情预挂**:T7 段末闸后 L3 呈报切点不擅切;**三档降级面 G1/G2/G3 在册**〔G3 下限=仅组 A 完成〕;5 条设计契约含 5 条 🔴 停机级〔存档兼容零破坏/数值零漂移/schema 契约面零变更/零字段更名/核心层零 await〕;代拍板白名单 4 项;**待用户裁点 2 项**)。**撞批已消解**:② 奇物批 2026-10-05 收口落库(合并 `c571af2`),并行风险解除,本批为迭代 15 唯一在途需求;**T0 须重取基线**(判式换代批 T5 读数 750/0、② 又动数据层,§1.2 的 747 为②前旧数禁沿用)并复核事实表。**开工门**:须先裁 C1(`"aux_item"` 是否随全族改·牵动 schema 契约+`reward.tres`+冒烟断言三重连锁)/C2(`aux_items` 一名两义·ConfigDB 变量 vs 断点存档键) | 卡③门:迭代 14 出口 + **C1/C2 二裁点已决** | 卡①已落籍(原估 0.5d);卡②已落籍(`c571af2`);**卡③待开工**(T0 取基线后回填估时;二裁点未决前不开工) | +| 迭代 15 | **③秘宝代码词族对齐批(2026-10-05 用户令编入本迭代)**:设计侧已完成(消歧更名批 `430419c`+`06e94b7`,26 个设计文档「魔法道具」→「**秘宝**」,同调位机制名保留不变),本批只做**代码侧对齐**、不做二次设计。内容:`aux_*`/`AuxItem*` 词族全族换词 **358 处 / 36 文件**(重灾 `adventure_runner.gd`79 / `level_runner.gd`27 / `bonus_interact_controller.gd`19 / `battle_orchestrator.gd`18 / `config_db.gd`14 / `main.gd`13),分五组落:**A 玩家可见文案(P0,5 处)**=`battle_narrator.gd:117-118` + `bonus_interact_controller.gd:76` + `hero_info_panel_view.gd:56`(槽位标题 `UiKit.label`)+ `:178`(tooltip)· B schema 与数据表(`aux_item_table.gd`/`aux_items.tres`/`aux_items.gd` 文件名+类名+`ConfigDB` 持有变量与访问器全链跟改,**须同步 Godot `.uid`/`.tscn` + `--import` 重刷类名缓存**——迭代 14.5 实证在册坑)· C 文档链接修复(含 `architecture.md` 两处既有断债顺带清偿)· D 中文注释层(**须分色**:`魔法矢`/`魔法反噬`/`魔法族`/`魔法护甲` 属敌方伤害护甲语汇🔴不动)· E 测试文件名+内部变量。**用户三项拍板**:全族彻底改(含数据表)· **断点存档键一律保留**(`bonus_aux_carry`/`aux_detail`/`aux_cleared`/`aux_cleared_last`/`aux_items` 断点数组/`attunement_charges` 共 34 处引用一字不改,破档即进度丢失)· registry 条目键 `aux_items` 不改(数据契约键)。设计事实源=`design/gdd/systems/排雷循环/秘宝.md` v0.9,任务书=`design/research/任务书-秘宝代码词族对齐批-2026-10-05.md`(T0-T9≈5.0d,**超软盒 3 日上限·知情预挂**:T7 段末闸后 L3 呈报切点不擅切;**三档降级面 G1/G2/G3 在册**〔G3 下限=仅组 A 完成〕;5 条设计契约含 5 条 🔴 停机级〔存档兼容零破坏/数值零漂移/schema 契约面零变更/零字段更名/核心层零 await〕;代拍板白名单 5 项;**C1/C2 已裁关闭·全改保一致·待裁点 0 项**)。**撞批已消解**:② 奇物批 2026-10-05 收口落库(合并 `c571af2`),并行风险解除,本批为迭代 15 唯一在途需求;**T0 须重取基线**(判式换代批 T5 读数 750/0、② 又动数据层,§1.2 的 747 为②前旧数禁沿用)并复核事实表。**✅ 裁决(用户 2026-10-05「全改保一致」)**:C1 `"aux_item"` 域串**照改**(实测连锁面收窄——`reward.tres` 已零 aux_item 数据行,池种随迭代 11 T7 退役;16 处字面量全在代码内闭合无存档依赖;唯一连锁项=`smoke_all.gd:3932` 断言须同步)· C2 `aux_items` 一名两义**拆分**(ConfigDB 持有变量+表注册键✅改 / 断点存档键+冒烟夹具🔴禁改——**「键名禁改」与「变量名禁改」是两回事**,禁改的只是落盘字面量)。新增**组 F**(分派语汇与域串 16 处),任务卡扩为 T0-T10≈5.5d。**开工门**:✅ 已无待裁点,可直接发 T0 | 卡③门:迭代 14 出口(**裁点已全决·可开工**) | 卡①已落籍(原估 0.5d);卡②已落籍(`c571af2`);**卡③可开工**(无待裁点;T0 取基线后回填估时) | ## 执行纪律(2026-09-27 用户立规) From cf799b32a31d39e6596c81ec1bf886c28137c4ae Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 5 Oct 2026 08:07:28 +0800 Subject: [PATCH 15/15] =?UTF-8?q?=E9=80=80=E5=BD=B9=E6=89=B9=EF=BC=9A12?= =?UTF-8?q?=E4=BB=BD=E5=B7=B2=E5=AE=8C=E6=88=90=E4=B8=AD=E9=97=B4=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=88=A0=E9=99=A4=EF=BC=88=E7=94=A8=E6=88=B7=E4=BB=A4?= =?UTF-8?q?2026-10-05=EF=BC=89=E2=80=94=E2=80=94git=20rm=20=E4=BA=94?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E4=B9=A6=EF=BC=88=E8=A7=86=E9=87=8E=E8=BF=B7?= =?UTF-8?q?=E9=9B=BE/GP=E5=95=86=E5=BA=97=E6=88=BF=E9=87=8D=E6=9E=84/?= =?UTF-8?q?=E9=AD=94=E6=B3=95=E9=81=93=E5=85=B7=E5=90=8C=E8=B0=83/?= =?UTF-8?q?=E5=8F=8C=E5=B1=82BD/=E7=BE=8E=E6=9C=AF=E5=9C=A3=E7=BB=8Fv3.5?= =?UTF-8?q?=EF=BC=89+=E5=85=A8=E5=B1=80=E4=BD=9C=E7=94=A8=E5=9F=9F?= =?UTF-8?q?=E5=8F=98=E5=BC=82=E4=BB=BB=E5=8A=A1=E4=B9=A6+=E6=8C=96?= =?UTF-8?q?=E6=8E=98=E9=A3=8E=E9=99=A9=E4=B8=8D=E7=AD=89=E5=BC=8F=E6=96=B9?= =?UTF-8?q?=E6=A1=88+ux-review+perfect-l1+=E4=B8=89=E6=8F=90=E6=A1=88?= =?UTF-8?q?=EF=BC=88=E7=A7=98=E5=AE=9D=E5=BA=95=E7=A8=BF/A3=E5=A5=96?= =?UTF-8?q?=E5=8A=B1=E6=A0=BC=E5=B7=AE=E5=BC=82/playnote=E6=9C=BA=E5=88=B6?= =?UTF-8?q?=EF=BC=89=EF=BC=9B=E6=8C=87=E8=B7=AF=E5=8F=A5=E6=94=B9=E5=86=99?= =?UTF-8?q?13=E6=96=87=E4=BB=B6=E5=85=A8=E6=95=B0git=E7=95=99=E7=97=95?= =?UTF-8?q?=EF=BC=88roadmap=E5=85=AD=E5=A4=84/06/=E8=A1=8C=E5=8A=A8?= =?UTF-8?q?=E7=BB=8F=E6=B5=8E/entities=E4=B8=89=E5=A4=84/art-bible?= =?UTF-8?q?=E4=B8=89=E5=A4=84/=E5=9C=B0=E5=BD=A2=E5=8F=98=E5=BC=82?= =?UTF-8?q?=E6=94=B9=E6=8C=87=E8=B0=83=E7=A0=94=C2=A77/=E7=A7=98=E5=AE=9D?= =?UTF-8?q?=E4=B8=A4=E5=A4=84=E6=94=B9=E6=8C=8757da58c/=E5=86=92=E9=99=A9?= =?UTF-8?q?=E7=BB=93=E6=9E=84/=E5=85=B3=E5=8D=A1=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE/=E5=85=83=E8=BF=9B=E5=BA=A6/clear=5Fdominanc?= =?UTF-8?q?e=5Faudit=EF=BC=89+reward=5Fexpectation=E6=97=A7=E5=9F=BA?= =?UTF-8?q?=E5=87=86=E6=B3=A8=E9=87=8A=E6=A0=B8=E6=AD=A3=EF=BC=88=E4=B8=83?= =?UTF-8?q?=E5=9E=8B79=E2=86=92=E4=B9=9D=E5=9E=8B77=E6=8C=89reward.tres?= =?UTF-8?q?=E5=AE=9E=E8=AF=81=EF=BC=89+=E6=AD=BB=E4=BA=A1=E6=B8=85?= =?UTF-8?q?=E5=8D=95=E5=9B=9B=E8=A1=8C=E5=8B=BE=E9=94=80+=E6=89=A7?= =?UTF-8?q?=E8=A1=8C=E6=B3=A8=E8=AE=B0=E2=91=A4=EF=BC=9B=E6=AD=BB=E9=93=BE?= =?UTF-8?q?=E9=97=B86=3D=E5=9F=BA=E7=BA=BF=E5=90=8C=E6=AC=BE=E9=9B=B6?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9B=E7=A7=98=E5=AE=9D=E6=8F=90=E6=A1=88?= =?UTF-8?q?=E5=85=AB=E6=8B=8D=E6=9D=BF/A3=E5=90=A6=E5=86=B3/playnote?= =?UTF-8?q?=E9=A2=98=E4=BA=8C=E5=9D=87git=E5=8F=B7=E7=95=99=E7=97=95?= =?UTF-8?q?=EF=BC=8857da58c/a404a65/12e934b=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- design/art/art-bible.md | 6 +- design/gdd/06-待办清单.md | 2 +- design/gdd/systems/冒险循环/关卡节点地图.md | 2 +- design/gdd/systems/冒险循环/冒险结构.md | 2 +- design/gdd/systems/排雷循环/地形变异.md | 2 +- design/gdd/systems/排雷循环/秘宝.md | 4 +- design/gdd/systems/排雷循环/行动经济.md | 2 +- design/gdd/systems/跨局循环/元进度.md | 2 +- design/qa/中间产物死亡清单-2026-10-02.md | 13 +- design/registry/entities.yaml | 6 +- .../art-bible-ux-review-2026-09-29.md | 130 ------- .../perfect-l1-lever-proposal-2026-09-29.md | 33 -- ...oposal-magic-item-attunement-2026-09-22.md | 182 ---------- ...proposal-playnote-mechanisms-2026-09-30.md | 221 ------------ ...-reward-cell-differentiation-2026-09-17.md | 331 ------------------ ...Š¡书-GP商店房重构-三选一同构化-2026-10-02.md | 113 ------ .../任务书-全局作用域变异首发批-2026-10-04.md | 106 ------ .../任务书-双层BD实施批-2026-10-03.md | 132 ------- ...»»务书-美术圣经v3.5冻结与落码-2026-09-29.md | 54 --- .../任务书-视野迷雾实施批-2026-10-02.md | 65 ---- .../任务书-魔法道具同调实施批-2026-10-02.md | 95 ----- .../方案-挖掘风险不等式修订-2026-10-04.md | 326 ----------------- game/smoke/reward_expectation.gd | 2 +- roadmap.md | 8 +- tools/clear_dominance_audit.py | 2 +- 25 files changed, 27 insertions(+), 1814 deletions(-) delete mode 100644 design/research/art-bible-ux-review-2026-09-29.md delete mode 100644 design/research/perfect-l1-lever-proposal-2026-09-29.md delete mode 100644 design/research/proposal-magic-item-attunement-2026-09-22.md delete mode 100644 design/research/proposal-playnote-mechanisms-2026-09-30.md delete mode 100644 design/research/proposal-reward-cell-differentiation-2026-09-17.md delete mode 100644 design/research/任务书-GP商店房重构-三选一同构化-2026-10-02.md delete mode 100644 design/research/任务书-全局作用域变异首发批-2026-10-04.md delete mode 100644 design/research/任务书-双层BD实施批-2026-10-03.md delete mode 100644 design/research/任务书-美术圣经v3.5冻结与落码-2026-09-29.md delete mode 100644 design/research/任务书-视野迷雾实施批-2026-10-02.md delete mode 100644 design/research/任务书-魔法道具同调实施批-2026-10-02.md delete mode 100644 design/research/方案-挖掘风险不等式修订-2026-10-04.md diff --git a/design/art/art-bible.md b/design/art/art-bible.md index 14b0bed9..e6b2017f 100644 --- a/design/art/art-bible.md +++ b/design/art/art-bible.md @@ -27,7 +27,7 @@ *设计测试:当某信息歧义于"画进格子"还是"收进面板"时,画进格子。* -**原则二|明亮为皮,明度分档为骨**(取自 Moonlighter、Peglin;锚定 P1 可读性前提、P4 探险氛围;2026-09-29 v3.0 修订——原「色牌为骨」降级,病根与修法见 `design/research/art-bible-ux-review-2026-09-29.md` 病根 3) +**原则二|明亮为皮,明度分档为骨**(取自 Moonlighter、Peglin;锚定 P1 可读性前提、P4 探险氛围;2026-09-29 v3.0 修订——原「色牌为骨」降级,病根与修法见审视报告(已退役,git fbaadb8)病根 3) 取 Moonlighter 的暖质地砖与亲和冒险者气质、Peglin 的明快全年龄洞穴色彩:全局暖倾向、无压抑。可读性由**格底明度分档**承载——已开格(数字所在格)明度走世界底层档(§2 明度分层;格态语义见《排雷玩法》;美术侧据此未开格走受光墙顶档、已开格走挖出空间沉暗档,与 §8.5 图底分离同轴),亮族数字墨直接画在格底上,对比硬指标不变(≥4.5:1 恒成立)。**数字色牌降级为后备手段**——仅复杂格底(物件纹样/变异纹带/微光叠加致格底对比不足)时垫牌兜底(画法 §3.3、色值 §4.1)。格子本体美术自此放开:纹理、材质、装饰变体、类型纹样皆可入画;格底参数域见 §4.1 硬指标(分档明度域、饱和上限),仍避 Boss 禁入色相带。与参考之别:ITB 以半透明压暗板承载信息;本作格底功能分档(信息可读性服务,属 §2 明度分层允许域),情绪压暗仍禁。 @@ -503,8 +503,8 @@ - **v3.4(2026-10-01)数字呈现三态修订(甲案深墨族方案渲染帧取证证伪后改版)**:v3.3 的「L2/L3 切深墨族直画」经 board_shot_probe 渲染帧取证证伪——underdark 系地板双峰纹理(近黑斑 p10 0.011+近白筋 p90 0.40+)上深墨直画融黑斑隐形(用户实机复测「还是看不清」实证),任何墨族直画不可救;改**三态**:dungeon 亮族直画(门 p90≥4.5/均值≥2.5)/中暗板深墨直画(门 p90≥4.5/均值≥3.0)/双峰板**色牌垫底**(素牌+深墨 12:1,v2 色牌形制复役);机检三关呈现模式断言 19/19;目视验证面=board_shot_probe 渲染帧取证入流程(机检≠看得清)。§1.4 样张闸第四验收项判读随三态口径件注记。 - **v3.3(2026-10-01)数字墨按板自适应修订(L2/L3 亮瓦融字缺陷修复,用户裁甲案「墨色按关自适应+补三关对比断言」)**:§4.1 数字墨双色制①改**按板自适应双族**——暗纹理板维持亮族三档(样张 v3 冻结原样),亮筋纹板(underdark/deep_underdark)切深墨族三档(青墨/赭墨/锈墨复役);选族判据=所选族对归一后地板 p90 亮斑 ≥4.5:1 且对均值 ≥2.0:1,落码单点 `board_view._digit_ink_mode`,机检=`terrain_tile_sets_test` 三关对比断言 21/21;缺盘平色回退默认深墨族。§4.1 其余条款(字形唯一载体/三档色温/垫牌后备)不变。 - **v3.1(2026-09-30)越权清理批(用户指令:按域内审查修订案修改,概念定义归还 GDD 正主)**:①**微光口径四处改指路**——§1.2 原则三/§1.4 样张清单去「常显」、§4.2 色带条去「常显」、§4.6.3 去「全部未开格」,统一指路《HUD框架》「未开格类型微光」节(2026-09-30 收口批落位的唯一正主,他文只许指路);②**概念越权剥离**——雷格叙事属名与换轴史、封印插旗语义(→registry「封印」条+《排雷玩法》玩家说法)、极性定义(→《地图战斗资源》极性提案)、完美排雷定义与兑付结构(→同)、敌意图预告语义与「待机即预示」(→《敌人系统》意图线索节)、奖励 weight 与兑付/库存语义(→《地图战斗资源》)、键名沿革史(empower/fortify 来源=敌方技能施放、alert 2026-09-20 八型批换装、ac_up 2026-09-16 换装——自 §4.6.1 移除留痕)、甲档 armor 数据实态(L1 全轻甲/L2 除 drider 外全轻甲/L3 duergar·duergar_king 重甲)与旧键集史({grub, ambusher} 随 DND 更名退役——自 §4.6.4 移除留痕)、「敌不占格」断言、「类型分布即先验」机制 rationale、「分布属初始化随机」归属断言(改画法口径「分布每板一次跨轮不复掷」);③**实装状态与排期注记移本历史留痕**——游戏 UiKit.HERO_BLUE 已同步 #2E6E8E→#2E86DE、UiKit.CONTACT_GLOW 同值 #D6ECFF、旧可挖域绿相 DIG_EDGE 已随接触带方案退役、死亡表现切片实装=程序化 tween(灰化罩+碎块弹飞 5 块 0.45s,挂 unit_died)、封印特效「待表现批」、§6.1 背景插画「排期归表现层升级批」、panel_stone/button_stone 接线归最近表现批、§7.2 对比度违例「修复归表现批」、§7.5「占位不空窗」注记;④**角嵌退役条改写**为现行「未开格预读通道(微光单通道)」条(退役史见 v2.12);⑤**残留矛盾清除**——§3.2 呈现基准条「装饰变体一律纹理级」旧措辞随 v3.0 物件级解禁同步;⑥§2.8 营地承载元素/§7.5 钥石呈现位改指 §6.2(事实源边界在该节);⑦**补漏五处(同批完工审计发现,同类剥离留痕)**——§4.1 危险红「机关红」更名史、§6.2 营地贴图「排期归 UI 贴图重构批」与「占位不空窗」注记、§7.4 字体「接入归表现批」注记、§8.1 扩板与 1920 档换算值「归表现层升级批成文」(改债务指路 06「分辨率档位与棋盘格边长口径」条)、§8.3 「终稿目录归表现批定」注记、§1.4 整屏样张闸「表现层落码批开工前」改屏级落码开工前、§7.1 「样式终稿归样张后表现批」改随样张闸后定稿。**零美术信息损失**:全部色值/机检断言/纹样描述/画法参数不动,样张 v2 四冻结之②③维持 -- **v3.2(2026-09-30)样张 v3 冻结批+缩放分级修订+案甲落定(迭代 9 T1/T2/T9;任务书=`design/research/任务书-美术圣经v3.5冻结与落码-2026-09-29.md`)**:①§1.4 补**样张 v3 冻结记录**——机检 17/17 全绿,断言定值两件(A3b 图底分离定值 Δ≥30〔实测 38〕/A4 尺寸基线硬等冻结 立绘 46×48+小人源 32×32),F6 沿用 v3.4;**四冻结①④重冻**——①砖面形态=E 格高墙 30% 词表扩展+格底明度分档(世界底层档 L≈0.10)+装饰物件级解禁/④数字形制=亮墨三档直画+色牌后备;②色板③动画维持冻结。产物 `artwork/mockups/sample-batch-v3-final-2026-09-30.png`+机检报告【冻结】;气质终审=2026-09-29 用户验收豁免(台账 281)。②**§8.2 缩放纪律分级修订**(2026-09-26 用户裁「改规则不豁免」落文,修订窗口=v3.0 落籍):甲类文本语义件(数字/图标/旗/砖面/纹样)维持严格整数倍;乙类角色精灵允许运行时非整数倍(NEAREST 不变,判据=实机目检可感不适即回整数档);1920 档策略经三裁决**案甲落定**(全局等比 stretch keep——v3.2 当日 T9 落文,详见 §8.2)。头注「现行为」随批 v3.2。 -- **v3.0(2026-09-29)中修批(案 B,用户拍板;审视报告=`design/research/art-bible-ux-review-2026-09-29.md`,六病根+三案呈报)**:①**§2 明度恒定→明度分层**——三档明度带(信息面层/世界中层/世界底层),情绪与状态明暗禁令保留(状态区分仍只走色相/饱和/运动/元素),空间纵深/光照/形体塑造开允许域;§2.1/2.2/2.3/2.5/2.7 各状态条措辞随改,§2.7 增「明度带随深度微移」候选。②**原则二色牌降级**——「明亮为皮,色牌为骨」改「明度分档为骨」:已开格走世界底层档(候选 L 0.20–0.32),棋盘数字墨亮族直画(候选 L≥0.75,冷亮/暖白/金亮三档色温承袭密度语义),色牌仅复杂格底后备(垫牌场景用深墨族,12.3:1 实测保留);§1.4 验收 1/2/4 与判定回退口径同步,样张 v2 四冻结之①④(砖面形态之数字承载面/数字形制)**解冻待样张 v3 重冻**(②③冻结〔色板/动画〕不受影响)。③**语义色适用域限定**——§4.2 各条「X 只说 Y」约束信息层与语义物件,纯环境氛围解禁(焦点预算与低饱和后退接管防抢焦);紫赤禁入带环境层低饱和可入、高饱和独占不变;§4.3 换皮槽与不变槽口径随改。④**装饰变体物件级解禁**——专属装饰形状家族+零信息纪律不变+焦点预算约束,配额候选 3–5 种(原则三/§3.2)。⑤**§6.1 舞台正面目标**——B 区=地窟看台(地台/落影/光源氛围候选),补原条只有负面约束之缺。⑥**§1.4 整屏样张闸新增**——战斗/关卡/菜单/营地四屏,验收四项(全局文字 ≥4.5:1/明度三档带/整屏焦点预算/文字禁压纹理),闸形=方向稿目检先行→机检冻结。⑦**§7 三件**——7.1 占位收口条款(占位=临时态,终稿闸=整屏样张)/7.2 全局文字可读性硬指标/7.4 字号下限 16/14px 对齐 ux-designer PC 规范+层级手段解禁(字号档差+墨色+字重)。⑧**§8.2 档位上调方向候选**(主角 64×96/敌 64/96/128 评估,归整屏样张闸,本批不重产资产)。⑨**§9 参考表**——Moonlighter 取列增光照层次、§9.2 DD 条款改名+新增「传统扫雷白牌」反面行。⑩**§3.4 焦点双机制**(完整度+明度带)。**连带文档同步**:character-design.md(提灯点亮解禁候选)/interaction-patterns.md/level-map.md/art-assets-checklist.md/battle.md/04-美术音频方向.md 引用口径随批。**挂账(06 登记)**:样张 v3 重跑批(断言改造+新参数冻结)/ui_kit 与棋盘渲染落码批(明度分层/格底分档/亮墨/UI 对比度修复)/资产升档重产批/mockup v3 方向稿(按 v3.0 重出)。**代拍板三项 2026-09-29 当日已追认**(闸形两段式/色牌后备范围/升档只立方向)。 +- **v3.2(2026-09-30)样张 v3 冻结批+缩放分级修订+案甲落定(迭代 9 T1/T2/T9;任务书已退役(git 710f9b7 出口批))**:①§1.4 补**样张 v3 冻结记录**——机检 17/17 全绿,断言定值两件(A3b 图底分离定值 Δ≥30〔实测 38〕/A4 尺寸基线硬等冻结 立绘 46×48+小人源 32×32),F6 沿用 v3.4;**四冻结①④重冻**——①砖面形态=E 格高墙 30% 词表扩展+格底明度分档(世界底层档 L≈0.10)+装饰物件级解禁/④数字形制=亮墨三档直画+色牌后备;②色板③动画维持冻结。产物 `artwork/mockups/sample-batch-v3-final-2026-09-30.png`+机检报告【冻结】;气质终审=2026-09-29 用户验收豁免(台账 281)。②**§8.2 缩放纪律分级修订**(2026-09-26 用户裁「改规则不豁免」落文,修订窗口=v3.0 落籍):甲类文本语义件(数字/图标/旗/砖面/纹样)维持严格整数倍;乙类角色精灵允许运行时非整数倍(NEAREST 不变,判据=实机目检可感不适即回整数档);1920 档策略经三裁决**案甲落定**(全局等比 stretch keep——v3.2 当日 T9 落文,详见 §8.2)。头注「现行为」随批 v3.2。 +- **v3.0(2026-09-29)中修批(案 B,用户拍板;审视报告=git fbaadb8(已退役),六病根+三案呈报)**:①**§2 明度恒定→明度分层**——三档明度带(信息面层/世界中层/世界底层),情绪与状态明暗禁令保留(状态区分仍只走色相/饱和/运动/元素),空间纵深/光照/形体塑造开允许域;§2.1/2.2/2.3/2.5/2.7 各状态条措辞随改,§2.7 增「明度带随深度微移」候选。②**原则二色牌降级**——「明亮为皮,色牌为骨」改「明度分档为骨」:已开格走世界底层档(候选 L 0.20–0.32),棋盘数字墨亮族直画(候选 L≥0.75,冷亮/暖白/金亮三档色温承袭密度语义),色牌仅复杂格底后备(垫牌场景用深墨族,12.3:1 实测保留);§1.4 验收 1/2/4 与判定回退口径同步,样张 v2 四冻结之①④(砖面形态之数字承载面/数字形制)**解冻待样张 v3 重冻**(②③冻结〔色板/动画〕不受影响)。③**语义色适用域限定**——§4.2 各条「X 只说 Y」约束信息层与语义物件,纯环境氛围解禁(焦点预算与低饱和后退接管防抢焦);紫赤禁入带环境层低饱和可入、高饱和独占不变;§4.3 换皮槽与不变槽口径随改。④**装饰变体物件级解禁**——专属装饰形状家族+零信息纪律不变+焦点预算约束,配额候选 3–5 种(原则三/§3.2)。⑤**§6.1 舞台正面目标**——B 区=地窟看台(地台/落影/光源氛围候选),补原条只有负面约束之缺。⑥**§1.4 整屏样张闸新增**——战斗/关卡/菜单/营地四屏,验收四项(全局文字 ≥4.5:1/明度三档带/整屏焦点预算/文字禁压纹理),闸形=方向稿目检先行→机检冻结。⑦**§7 三件**——7.1 占位收口条款(占位=临时态,终稿闸=整屏样张)/7.2 全局文字可读性硬指标/7.4 字号下限 16/14px 对齐 ux-designer PC 规范+层级手段解禁(字号档差+墨色+字重)。⑧**§8.2 档位上调方向候选**(主角 64×96/敌 64/96/128 评估,归整屏样张闸,本批不重产资产)。⑨**§9 参考表**——Moonlighter 取列增光照层次、§9.2 DD 条款改名+新增「传统扫雷白牌」反面行。⑩**§3.4 焦点双机制**(完整度+明度带)。**连带文档同步**:character-design.md(提灯点亮解禁候选)/interaction-patterns.md/level-map.md/art-assets-checklist.md/battle.md/04-美术音频方向.md 引用口径随批。**挂账(06 登记)**:样张 v3 重跑批(断言改造+新参数冻结)/ui_kit 与棋盘渲染落码批(明度分层/格底分档/亮墨/UI 对比度修复)/资产升档重产批/mockup v3 方向稿(按 v3.0 重出)。**代拍板三项 2026-09-29 当日已追认**(闸形两段式/色牌后备范围/升档只立方向)。 - **v2.15(2026-09-28)人设旗脱钩批(用户拍板)**:§5.4 速览背包旗改旗朱红矩形旗+§4.1 封印黑条红族口径限定棋盘侧;封印黑仍为棋盘封印专属色不变;人设侧详见 character-design 对应版本行(v1.7) - **v2.14(2026-09-28)关卡画面样张 v1 冻结批(M-2 迭代 4 T1–T4,机检闸形 A——11/11 全绿即冻结)**:§7.2 增「暗底呈现态双色墨制」条(暗底系图标/读数=暖白 #F0E2C8、当前金底转深墨 #181410,各态 ≥4.5:1;已过节点暗金冻结 **GOLD_DONE #68562C** 专用呈现态值——旧 GOLD_DIM #8C743C 对双色墨均不达标;Boss 描边=紫赤 2px+外缘 1px 深墨环灰度冗余通道——§4.2 色相独占本色不变);冻结面=节点图标形制(♻ kenney-board-game-icons 五键 bow/award/campfire/crown_b/pouch,20px 烘焙 1:1 消费,WARM 单色,复用闸①②③④)+通道质感(折线 2/3/4px 直角肘形)+画布公式(70+层×122+34/52+槽×58+26+8 下限 620×240——routebug 83c11a1 根修件同源)+底栏样式(暗数据框 WARM/WARM_SOFT 双墨)+屏底(BG_ROOT+backdrop_stone);换层色板渐变挂点落码(§2.7 切片档——level_index→tint 表候选值随 §6.3 方向,明度带归一,终值归色板样张批)。规格承载=level-map.md(修订记录同日行);产物=`artwork/mockups/level-map-sheet-v1-2026-09-28.png`,机检报告=git 提交 9a79927;气质终审=M-2 出口闸真人目检 - **v2.9(2026-09-26)高墙瓦片体系定稿批**(高墙批全程收官,用户拍板;台账 163/164):§3.2 新增「高墙瓦片体系」条——未挖格=一整块 32×32 自含凸起岩体(方案甲核心定义)+术语(墙瓦片/地面瓦片)+墨线边界纪律(1px 深墨线直线零锯齿,职责=分隔不融合)+单一北受光(北缘 1px 微亮棱/南缘立面窄暗条/凹角角点+立面侧 1px 齐平收头),定稿=`game/assets/art/board/terrain_*` 21 枚;§8.5 增「生产分工」条——材质归模型(AI 只出无缝填充纹理)、结构归程序(autotile 拼接约束超 2D 生图能力,实证在案)+镜像规则(只许 flip_h 禁旋转)。条口径=样张批追认(与 §8.4 方向集先例同)。词表与查表逻辑、搜包评估记录归 design/research 两档;过程文档随批清退(中间产物不入库先例,台账 127)。 diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index 5862f50e..0b573c5b 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -118,7 +118,7 @@ **归属**:[难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md)提案,战斗结算闭合共裁 -**状态**:对账复跑出讫(2026-09-29 迭代 8 卡⑧——投值后风险端当量 ×1.9,破线缓解未闭合;全量复算见 git 提交 d70f6c3 §二;结构性修订维持 Alpha 批归属)。**2026-10-04 判读收官+修订立项**:结构性修订已全裁(用户两轮「按推荐的来」+grill 七问——甲+丙先行/形态(a)兑付溢价 δ=1.25/β 带 [1.2,2.5]/条件二落文登记已知破·机制小批转绿,裁决回执=方案报告 §九,`design/research/方案-挖掘风险不等式修订-2026-10-04.md`);**判式换代批编入 roadmap 迭代 14(②号卡)**,任务书=`.zcode/plans/mine-inequality-revision-miniloop-plan-2026-10-04.md`(T0-T5≈2.5d,待 U0)——**原「Alpha 批归属」作废**(M-3 已关闭)。**本条正式收口(2026-10-05 判式换代批 T3 落文=兑现条件)**:判式三层已重立落文(行动经济 F1 条款3 v0.8——聚合健康式只留下限 0 / 旗边际引理 / 条件二旗溢价 δ=0.25 provisional 形态 a,登记已知破·本批 T4 机制闭合)、β 带 [1.2,2.5] 判读制度化(u=3 β=1.17 微破下限=登记态)、registry `clause3_inequality` 重立条+改前静态锚+P7 两点修正注记落位、runsum 五字段(η 读数面)落码。**残留转登记面**:①u=3 微破下限与条件二等号压线不强制回滚(方案 §九 点名);②δ 敏感度判读(≥5pp 判据)随本批出口报告;③后续调参按 β 带逐 u 检算(难度曲线与Boss 调参联动表 +6 行)——不再立独立重跑批 +**状态**:对账复跑出讫(2026-09-29 迭代 8 卡⑧——投值后风险端当量 ×1.9,破线缓解未闭合;全量复算见 git 提交 d70f6c3 §二;结构性修订维持 Alpha 批归属)。**2026-10-04 判读收官+修订立项**:结构性修订已全裁(用户两轮「按推荐的来」+grill 七问——甲+丙先行/形态(a)兑付溢价 δ=1.25/β 带 [1.2,2.5]/条件二落文登记已知破·机制小批转绿,裁决回执=方案报告 §九(已退役,git 1da9a41));**判式换代批编入 roadmap 迭代 14(②号卡)**,任务书=`.zcode/plans/mine-inequality-revision-miniloop-plan-2026-10-04.md`(T0-T5≈2.5d,待 U0)——**原「Alpha 批归属」作废**(M-3 已关闭)。**本条正式收口(2026-10-05 判式换代批 T3 落文=兑现条件)**:判式三层已重立落文(行动经济 F1 条款3 v0.8——聚合健康式只留下限 0 / 旗边际引理 / 条件二旗溢价 δ=0.25 provisional 形态 a,登记已知破·本批 T4 机制闭合)、β 带 [1.2,2.5] 判读制度化(u=3 β=1.17 微破下限=登记态)、registry `clause3_inequality` 重立条+改前静态锚+P7 两点修正注记落位、runsum 五字段(η 读数面)落码。**残留转登记面**:①u=3 微破下限与条件二等号压线不强制回滚(方案 §九 点名);②δ 敏感度判读(≥5pp 判据)随本批出口报告;③后续调参按 β 带逐 u 检算(难度曲线与Boss 调参联动表 +6 行)——不再立独立重跑批 diff --git a/design/gdd/systems/冒险循环/关卡节点地图.md b/design/gdd/systems/冒险循环/关卡节点地图.md index 8c53869d..e65ea100 100644 --- a/design/gdd/systems/冒险循环/关卡节点地图.md +++ b/design/gdd/systems/冒险循环/关卡节点地图.md @@ -109,7 +109,7 @@ Boss 兑付(胜利或英雄死亡)触发关卡收束点,此后不再有选 第二关的"新内容 = 既有池新技能"(技能池构成已定稿入[敌人系统](../战斗循环/敌人系统.md)技能池节)投放时,改的是战斗侧行里引用的技能池内容——节点图结构原样不动,本文无需为投放留任何新结构位。 -**节点奖励 = 提升三选一(迭代 10 追加批——用户 2026-10-01 拍板:与通关三选一共享同池)**:奖励节点到达即开三选一(呈现 = 提升三选一覆盖层共用面,spec:[node-reward.md](../../ux/node-reward.md) v2.0)——从提升池六种(攻击/生命上限/护甲/GP 袋/秘宝/行动点件)按同一加权洗牌抽 3(同权重、同全冒险次数上限、同 reward_pick 封闭流),玩家点选一件兑付;道具件满位触发替换子交互(与通关三选一同构)。件获取次数计数与牌库剔除态为冒险级单例——两渠道合计判上限。原「秘宝投放渠道三选一」(迭代 7 拍板②丙过渡形态)随批退役;终局=秘宝局外同调件的改写义务仍归同调实施批(proposal-magic-item-attunement-2026-09-22.md §9)。「池空直通」合法态随共享池退役——池含无上限 GP/道具件,牌库恒非空。 +**节点奖励 = 提升三选一(迭代 10 追加批——用户 2026-10-01 拍板:与通关三选一共享同池)**:奖励节点到达即开三选一(呈现 = 提升三选一覆盖层共用面,spec:[node-reward.md](../../ux/node-reward.md) v2.0)——从提升池六种(攻击/生命上限/护甲/GP 袋/秘宝/行动点件)按同一加权洗牌抽 3(同权重、同全冒险次数上限、同 reward_pick 封闭流),玩家点选一件兑付;道具件满位触发替换子交互(与通关三选一同构)。件获取次数计数与牌库剔除态为冒险级单例——两渠道合计判上限。原「秘宝投放渠道三选一」(迭代 7 拍板②丙过渡形态)随批退役;终局=秘宝局外同调件的改写义务仍归同调实施批(原提案 §9,git 57da58c 已退役)。「池空直通」合法态随共享池退役——池含无上限 GP/道具件,牌库恒非空。 ### 关卡收束点:先清库、后宣布 diff --git a/design/gdd/systems/冒险循环/冒险结构.md b/design/gdd/systems/冒险循环/冒险结构.md index 7cb00093..42b50a9a 100644 --- a/design/gdd/systems/冒险循环/冒险结构.md +++ b/design/gdd/systems/冒险循环/冒险结构.md @@ -182,7 +182,7 @@ GP(显示名「金币」)是冒险内的一次性属性提升货币:战斗 **抽取机制 = 令牌池洗牌不放回(v0.14 追认 b 实施形态,取代 E-S 加权洗牌)**:池 = 固定配额令牌库(普通 70/稀有 25/罕见 3=98 张,kind×tier 多重集);洗牌 = Fisher-Yates 不放回抽 3(**同 kind 去重每 kind 至多一枚**——「三选一=三种不同选项」体验延续;kind 出现率∝剩余令牌数,档位配额即分布、无独立权重 knob);**选中踢池、未选回池**(抽签不摘牌、兑付才摘牌);**池耗即枯竭**(余库不足出齐剩余,空库=零候选合法态直通);**种类次数上限退役**(池消耗即上限)。消费 reward_pick 封闭随机流(主种子派生、[数据配置](../表现与支撑/数据配置.md)口径),同种子同操作序列同三选项可复放。**MC 策略 316-f**:autoplay 1 级优先度=最稀有(rarest>rare>common)、2 级=最左。**提升池为冒险级单例**(迭代 10 追加批):关卡内奖励节点的三选一与通关三选一共享同一令牌库(同库同摘牌),兑付语义归[关卡节点地图](关卡节点地图.md)。 -**秘宝件受同调位约束**:道具持有上限 = 同调位数。本批挂过渡读数源 transitional_sync_slots(provisional 初始 1——首次冒险即可持 1 件道具,L1 通关大奖励即可体验道具件);正主 = 同调位里程碑谓词表([proposal-magic-item-attunement-2026-09-22](../../../research/proposal-magic-item-attunement-2026-09-22.md):0 起步、硬上限 3、增长 = 通关次数 + Boss 击杀数走 attunement_growth.tres),同调实施批落地后切换读数源为谓词表实时求值。获取渠道约束形态(迭代 10 过渡承载):三选一道具件超位触发**替换交互**(现有件与新件 N+1 选 N——丢任一原有件腾位收新,或放弃新件不获取;终态恒 ≤ 同调位);奖励节点与战斗内渠道超位**不授予**(候选拒绝 + 掉落沉没,逐行归因留痕)——停点渠道全覆盖的替换交互随同调实施批统一收口(06 在册)。 +**秘宝件受同调位约束**:道具持有上限 = 同调位数。本批挂过渡读数源 transitional_sync_slots(provisional 初始 1——首次冒险即可持 1 件道具,L1 通关大奖励即可体验道具件);正主 = 同调位里程碑谓词表(原提案八拍板(git 57da58c 已退役):0 起步、硬上限 3、增长 = 通关次数 + Boss 击杀数走 attunement_growth.tres),同调实施批落地后切换读数源为谓词表实时求值。获取渠道约束形态(迭代 10 过渡承载):三选一道具件超位触发**替换交互**(现有件与新件 N+1 选 N——丢任一原有件腾位收新,或放弃新件不获取;终态恒 ≤ 同调位);奖励节点与战斗内渠道超位**不授予**(候选拒绝 + 掉落沉没,逐行归因留痕)——停点渠道全覆盖的替换交互随同调实施批统一收口(06 在册)。 最后一关通关不发三选一与部分回血:没有下一战可受益——只做冒险完成结算,末关 Boss 钥石照常入账。设计意图:清库之后才兑付、末关不兑付,都是从「奖励只朝下一战生效」这一条推出来的。 diff --git a/design/gdd/systems/排雷循环/地形变异.md b/design/gdd/systems/排雷循环/地形变异.md index d1c4e85d..9e2cec3b 100644 --- a/design/gdd/systems/排雷循环/地形变异.md +++ b/design/gdd/systems/排雷循环/地形变异.md @@ -131,7 +131,7 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照 | 优先级 | 内容 | 后置原因 | |---|---|---| | 迭代 12(调研前置) | 反制路径重定(原:首批四类型的反制道具兑现,counter_items 回填——已作废) | 2026-10-03 用户终裁:同调位反制件=层级错配失败设计,义务作废;变异应对是否以局内形态补入,待双层 BD 调研仲裁后重新立项 | -| ~~Alpha~~ **已落地** | 全局作用域变异(精英/Boss 图整图生效的变异形态) | **2026-10-04 全局作用域变异首发批落地**(迭代 14 ③号卡)——首批型=贫矿脉(案A 资源面·微贫向偏斜,替换制/恒定制/L1 Boss 免疫/三层预告);裁决全录见任务书(design/research/任务书-全局作用域变异首发批-2026-10-04.md);带 A 杠杆注册全局难度批(M-4)随批读数只测不判;精英图留词表前向位(首发零表行) | +| ~~Alpha~~ **已落地** | 全局作用域变异(精英/Boss 图整图生效的变异形态) | **2026-10-04 全局作用域变异首发批落地**(迭代 14 ③号卡)——首批型=贫矿脉(案A 资源面·微贫向偏斜,替换制/恒定制/L1 Boss 免疫/三层预告);裁决全录见调研报告 §7(design/research/调研-全局作用域变异设计空间-2026-10-04.md;原任务书已退役,git b3bbea5/01bfc15);带 A 杠杆注册全局难度批(M-4)随批读数只测不判;精英图留词表前向位(首发零表行) | | P2 | "地形成本修饰"价目钩子启用 | 由行动经济持有;启用须随变异类型扩展,与行动经济重议按格定价的接口 | | P2 | 变异解锁节奏复核 | "每关至少引入一个新元素"的推进节奏,随[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)定稿复核 | | P2 | 变异格视觉标识与预告呈现 | 首批为遭遇式(未开无预告);标识位随表现层升级批 | diff --git a/design/gdd/systems/排雷循环/秘宝.md b/design/gdd/systems/排雷循环/秘宝.md index fad0be4f..b7fee86f 100644 --- a/design/gdd/systems/排雷循环/秘宝.md +++ b/design/gdd/systems/排雷循环/秘宝.md @@ -10,7 +10,7 @@ 秘宝存在**两态**,关系=形态替换而非机制积累。**替换已于 2026-10-03 完成**(M-4 迭代 11 第①批,worktree m4-iter11a-attune-20261003): - ~~**过渡形态**(2026-09-29 迭代 7 落籍)~~ **已退役**:掉落投放(2026-10-01 已随「挖格不掉道具」退役)/奖励节点三选一道具卡(2026-10-03 T7 出池)/关卡域库存/挖掘期两步使用——本文以下正文章节「掉落池获取」「关卡域库存」「什么时候怎么用」诸节随之整体退役,保留为历史口径(本节横幅为准)。 -- **终局形态(现行)= 局外同调件**:开局前在营地装配(营地·道具工坊柜台「同调装配」段)、占同调位(0 起步、硬上限 3,slot_cost 恒 1)、被动件整局生效/主动件每冒险充能(冒险开始重置)。设计权威底稿 = [proposal-magic-item-attunement-2026-09-22.md](../../../research/proposal-magic-item-attunement-2026-09-22.md)(2026-09-22 用户八条拍板)+ 任务书 v1.1(P1-P8 全裁)。 +- **终局形态(现行)= 局外同调件**:开局前在营地装配(营地·道具工坊柜台「同调装配」段)、占同调位(0 起步、硬上限 3,slot_cost 恒 1)、被动件整局生效/主动件每冒险充能(冒险开始重置)。设计权威底稿 = 原提案(git 57da58c 已退役——2026-09-22 用户八条拍板)+ 任务书 v1.1(P1-P8 全裁,已退役)。 **现行形态速览**(实现面 = `game/data/tables/attunement_growth.tres` + `aux_items.tres` + `game/core/attunement.gd`): @@ -211,7 +211,7 @@ playtest 预警(预注册,归难度曲线与Boss): | v0.4 | 2026-09-17 | 数值纪律收口批:正文与调参表 knob 现行值改指路存根(事实源 data/tables/*.tres 与 registry),1 处失同步修正(AP 8→6 漏改:爆破工兵包定位读数段的「每轮行动点默认 8」改指路 action_economy.tres)——道具加量、供给读数、调参表六行 w/t/mag、道具依赖预警阈值 50% 均改指路 registry `aux_items`;行名与表结构列保留 | | v0.6 | 2026-10-04 | **迭代 13 D6 实装修订**:爆破工兵包换装启用(deferred 留位 → active_charged 装配件 charges 2)+「中立移除」实装口径节落文(P1 甲邻接数字冻结/P2 甲退色降档,裁决吸收自批任务书)+投放态注记换代(获渠=营地同调装配,过渡投放池零行) | | v0.5 | 2026-09-29 | **内容批落地修订(迭代 7——用户八拍板)**:①道具定义表六行入表(AuxItemTable——三有效实装:工兵令 ap_grant/探巢摆钟真视/爆破工兵包组合;**探宝罗盘退役留痕**(拍板①乙——未开格类型微光常显覆盖预读价值,retired 标记词表兼容);显影尘/地穴全图卷 deferred「能力封存」(拍板④甲,Alpha 重定);②F2 维度覆盖改**投放维度覆盖**口径+豁免面 {plan, info, counter} 显式登记(罗盘退役+显影件悬置所致,豁免随 Alpha 重定/天赋批消减);③解锁语义定稿=工坊解锁→进掉落投放池(拍板③甲,未解锁权重 0);④奖励节点=三选一构筑点(拍板②丙,node-reward.md v1.0);⑤掉落投放三件总权重 10/池 88(拍板⑥甲,provisional) | -| v0.6 | 2026-09-30 | **拍板点 1 收口批(2026-09-30 用户裁决甲:同调=终局方向)**:①新增「定位与形态沿革」节——现行正文定性=切片期过渡形态、终局=局外同调件(设计权威底稿 proposal-magic-item-attunement-2026-09-22.md 八拍板),两态关系=形态替换、衔接纪律与事故留痕入节;②正文口径回写四处:五维度表信息/规划/反制三行改现行态(罗盘退役/显影件封存/豁免面入正文)、覆盖检查改投放维度覆盖口径、掉落池获取节补解锁门控(2026-09-29 拍板③甲)、板级叠加层预读集改「机制在案无投放来源」;③验收两条(护栏/覆盖检查)与调参表投放态注记、地形变异依赖行同步;④实施批登记见 06「秘宝同调实施批」条。审计冲突 C19/C29 随批收口(全录见审计报告 git 提交 c095916,报告已退役) | +| v0.6 | 2026-09-30 | **拍板点 1 收口批(2026-09-30 用户裁决甲:同调=终局方向)**:①新增「定位与形态沿革」节——现行正文定性=切片期过渡形态、终局=局外同调件(设计权威底稿=原提案八拍板,git 57da58c 已退役),两态关系=形态替换、衔接纪律与事故留痕入节;②正文口径回写四处:五维度表信息/规划/反制三行改现行态(罗盘退役/显影件封存/豁免面入正文)、覆盖检查改投放维度覆盖口径、掉落池获取节补解锁门控(2026-09-29 拍板③甲)、板级叠加层预读集改「机制在案无投放来源」;③验收两条(护栏/覆盖检查)与调参表投放态注记、地形变异依赖行同步;④实施批登记见 06「秘宝同调实施批」条。审计冲突 C19/C29 随批收口(全录见审计报告 git 提交 c095916,报告已退役) | | v0.7 | 2026-10-01 | **奖励节点渠道改写注记(迭代 10 追加批——用户拍板「奖励节点与通关三选一共享同池」)**:①「奖励节点三选一构筑点」形态(v0.5 ④)退役——奖励节点改提升三选一共享池(秘宝件为池中 1/6 权重选项,同调位满位替换交互随 BonusPickOverlay 共用面生效,spec:node-reward.md v2.0);②道具件经节点渠道入本关库存(来源归因 reward_node,与掉落/三选一渠道同受 transitional_sync_slots 过渡上限约束);③战斗掉落渠道零改动;④本批过渡约束形态与切换义务注记见 registry aux_items 条同日批注;同调实施批的全渠道统一收口义务不变 | | v0.8 | 2026-10-03 | **反制契约作废批(2026-10-03 用户终裁——层级错配失败设计)**:①五维度「反制」行与豁免面 {plan, info, counter} 的 counter 注记改终裁态(原框架契约「每变异≥1反制道具」作废,终裁理由见地形变异.md v0.6/本文件 v0.8 版本行(原 06 条目已收口移除));②上游地形变异依赖行、P2 后置行同步改「迭代 12 调研前置重定」;③地形变异.md v0.6 同批落义务作废注记;④迭代 11 范围裁定(同调→商店→迷雾三批)见 roadmap 迭代 11+ 行——反制批移迭代 12 | | v0.9 | 2026-10-05 | **消歧更名批(用户拍板 2026-10-05):系统更名「魔法道具」→「秘宝」**。**更名理由**:「魔法」一词在本作已被征用为敌方侧伤害/护甲语汇(`magic_bolt 魔法矢` / `magic_recoil 魔法反噬` / `magic 魔法族` 格面微光 / `ward 魔法护甲`),「魔法道具」易被读成"魔法属性的道具";「秘宝」取"神秘·强大·稀有"义,与九件内容气质(工兵/工程/手艺向)契合,且与局内道具(奇物)不冲突。**同调位机制名保留不变**(attunement 仍为 DND 词,机制血统不受更名影响)。**本批仅改文档称谓,代码不动**——代码标识符仍为 `aux_*` / `AUXILIARY_ITEMS`(auxiliary 词根为过渡形态遗留,与中文名不同步属已知欠债,另批处理);退役路径残留玩家可见文案(`battle_narrator.gd:117-118`、`bonus_interact_controller.gd:76`)亦留另批。历史定稿文档(research/ 提案与任务书、qa/ 检查单、archive/ 归档)按换名先例原样保留不改。 | diff --git a/design/gdd/systems/排雷循环/行动经济.md b/design/gdd/systems/排雷循环/行动经济.md index b32bc68b..96217eea 100644 --- a/design/gdd/systems/排雷循环/行动经济.md +++ b/design/gdd/systems/排雷循环/行动经济.md @@ -137,7 +137,7 @@ ``` 条款 3(2026-10-05 判式换代批重立——三层口径并行立,2026-10-04 用户裁 P2; - 设计权威 = design/research/方案-挖掘风险不等式修订-2026-10-04.md §四/§九) + 设计权威 = 方案报告 §四/§九(已退役,git 1da9a41;现行判式口径=registry clause3_inequality 条)) 条款 2(标中旗锚,既有不动):标中旗的减益档位必须严格高于最低档安全格增益。 diff --git a/design/gdd/systems/跨局循环/元进度.md b/design/gdd/systems/跨局循环/元进度.md index b88c8035..63827d85 100644 --- a/design/gdd/systems/跨局循环/元进度.md +++ b/design/gdd/systems/跨局循环/元进度.md @@ -61,7 +61,7 @@ | 柜台 | 内容 | 解锁渠道 | |---|---|---| | 属性锻造 | 生命上限、基础攻击、护甲等级——三档可重复升级的属性强化 | 钥石直购 | -| 道具工坊 | 秘宝解锁(现行六行定义,进投放池三件:工兵令/探巢摆钟/爆破工兵包;探宝罗盘已退役、显影尘/地穴全图卷能力封存——退役/封存件不入投放池,营地呈现「已退役 / 已解锁·能力封存中」) | **首版全走关卡通关次数达标**(总通关次数渠道,读 meta.tres workshop_items);钥石直购价随定价批后补,最终双渠道并存。**形态沿革(2026-09-30 用户裁决甲)**:终局=秘宝局外同调件,本柜台职责随同调实施批改写(解锁→谓词表+装配入口,底稿 proposal-magic-item-attunement-2026-09-22.md §9) | +| 道具工坊 | 秘宝解锁(现行六行定义,进投放池三件:工兵令/探巢摆钟/爆破工兵包;探宝罗盘已退役、显影尘/地穴全图卷能力封存——退役/封存件不入投放池,营地呈现「已退役 / 已解锁·能力封存中」) | **首版全走关卡通关次数达标**(总通关次数渠道,读 meta.tres workshop_items);钥石直购价随定价批后补,最终双渠道并存。**形态沿革(2026-09-30 用户裁决甲)**:终局=秘宝局外同调件,本柜台职责随同调实施批改写(解锁→谓词表+装配入口,底稿=原提案 §9(git 57da58c 已退役)) | | 奖励格图鉴 | 特殊奖励格的解锁——更强效果的格面 | 结构位现定;格子内容排 Alpha,随[地图战斗资源](../战斗循环/地图战斗资源.md)差异化批落地 | **投值语言锁定(2026-09-18 数值语言拍板)**:三柜台属性强化一律 **flat 整数加减**("每级 +1 基础攻击"式,而非"+50% 攻击"式)——避开百分比词条被数值成长稀释的先例陷阱、守住数字可读性锚;具体每级数值仍归元进度设计批投值。 diff --git a/design/qa/中间产物死亡清单-2026-10-02.md b/design/qa/中间产物死亡清单-2026-10-02.md index 202bdcea..f182c42d 100644 --- a/design/qa/中间产物死亡清单-2026-10-02.md +++ b/design/qa/中间产物死亡清单-2026-10-02.md @@ -2,15 +2,16 @@ > **清单状态:2026-10-02 用户令挂起**——其他工作完成后用户回来再处理剩余项;挂起期间本单不再有执行批。 > 执行状态:①A1/A2/B1/B2 四桶 2026-10-02 执行完毕(git rm 83 件+主工作区直删未跟踪 10 件,指路句改写 37 处;明细归 git a6833b6/合并 5b3f345 与台账 305/308);②表 C·sim-data 2026-10-02 用户授权整批删——白名单外 100 件 git rm(白名单 17 件留:README/.gitignore/_snap/analyze.py/growth_model.py/iteration_log/三设计 md/现行 MC 锚 8 件);③同日 .gitignore 裁决落文——artwork/ 整目录不入库(取消 md 例外,原两跟踪件解跟踪磁盘保留)、.qoder/ 与 .workbuddy/ 入忽略(合并见台账尾);④**artwork/ 全目录内容 2026-10-02 用户裁永久保留**——美术素材工作区只留磁盘不入 git,.gitignore `artwork/` 强制永不提交,无删除时机(原「ui-redesign 点名 v2 后死」一并撤销)。已删条目不再列于本单。 -> 执行依据:doc-conventions §11「文档生命周期:吸收即死」(2026-10-01 用户立规)。引用面口径:**活引用阻塞面 = design/gdd + design/art + design/dev + design/registry + roadmap.md + tools/**(死链闸扫描域);active.md 台账引用不阻塞。 +> 执行依据:doc-conventions §11「文档生命周期:吸收即死」(2026-10-01 用户立规)。 +> ⑤**2026-10-05 退役批(用户令「12 份任务本体已完成——都删除」)**:git rm 12 件=上二表四行(美术圣经v3.5任务书/perfect-l1/秘宝提案/A3提案/playnote机制提案)+七件 2026-10-02 后新建且已落籍的中间文档(视野迷雾/GP商店房/魔法道具同调/双层BD/全局作用域变异五任务书+挖掘风险不等式方案+art-bible-ux-review);指路句改写 12 文件(roadmap 五处/06/行动经济/entities 三处/art-bible 两处/地形变异/秘宝 两处/冒险结构/关卡节点地图/元进度/clear_dominance_audit.py+reward_expectation.gd 注释核正);秘宝提案八拍板、A3 否决、playnote 题二裁决均以 git 号留痕(57da58c/a404a65/12e934b)。引用面口径:**活引用阻塞面 = design/gdd + design/art + design/dev + design/registry + roadmap.md + tools/**(死链闸扫描域);active.md 台账引用不阻塞。 > 本单只登记**未删项**,每项标明**未删原因**与**待用户动作**。本清单自身亦为中间文档:全部桶收口后随批自删。 ## 一、挂债项(迭代 9 在飞域——出口批顺带处置,现在无需任何动作) | 文件 | 原桶 | 未删原因 | 待用户动作 | |---|---|---|---| -| 任务书-美术圣经v3.5冻结与落码-2026-09-29.md(design/research/) | A2 | roadmap 迭代 9 行指路(在飞返工会话域,改指路会撞在飞批) | 无——迭代 9 出口批将指路句改 git 提交号后删 | -| perfect-l1-lever-proposal-2026-09-29.md(design/research/) | A2 | 06「战斗阶段数值问题」在飞条目指路 | 同上 | +| 任务书-美术圣经v3.5冻结与落码-2026-09-29.md(design/research/) | A2 | roadmap 迭代 9 行指路(在飞返工会话域,改指路会撞在飞批) | ✅ 已执行(2026-10-05 退役批:git rm+roadmap 指路改 git 710f9b7) | +| perfect-l1-lever-proposal-2026-09-29.md(design/research/) | A2 | 06「战斗阶段数值问题」在飞条目指路 | ✅ 已执行(2026-10-05 退役批 git rm——被带换代四带甲案取代,未批准未执行) | | m3-iter5-lever-scan-2026-09-28.md(design/qa/) | B2 | 06 在飞条目指路(证据锚) | 同上 | | m3-iter5-rework-readings-2026-09-29.md(design/qa/) | B2 | 06 在飞条目指路(读数与归因锚) | 同上 | | m3-iter9-9a-checklist / t8-rulings / t17-fullflow-checklist / t18-07-audit(design/qa/ 四件) | B3 | 迭代 9 在飞会话域 | 无——T20 出口批按同规则处置 | @@ -25,9 +26,9 @@ | prototype-report-minesweeper-battle-concept.md | 概念原型 v3 PROCEED 决策记录(项目原点档案) | 原单标「留否由用户裁」——**维持留活,若要删随时说一声** | | 优化方案.md(sim-data/,白名单内) | PackageB 提案母稿——表改项已随 54f2da3 落籍;结构改候选未逐项验吸收(删前核 2026-10-02:暂留) | 后续数值批复核结构改候选去留后裁 | | **artwork/ 整目录**(mockups/、qa-screens×2、remote-gen-2026-09-26、ui-redesign-2026-09-29 等全部产物,磁盘 89MB) | 2026-10-02 用户裁**永久保留**——美术素材工作区只留磁盘不入 git,无删除时机(原「ui-redesign 点名 v2 后死」一并撤销) | 无任何动作(.gitignore `artwork/` 强制永不提交,全会话经 CLAUDE.md Project Layout 获知此裁) | -| proposal-magic-item-attunement-2026-09-22.md | 同调实施批设计权威底稿(06/registry/五文档引用) | 同调实施批落籍后随批死 | -| proposal-reward-cell-differentiation-2026-09-17.md | Alpha 差异化批调研底座(06 指路) | Alpha 差异化批落籍后随批死 | -| proposal-playnote-mechanisms-2026-09-30.md | 06 指路留痕;题一重写未决 | 题一重写落定后死 | +| proposal-magic-item-attunement-2026-09-22.md | 同调实施批设计权威底稿(06/registry/五文档引用) | ✅ 已执行(2026-10-05 退役批:git rm+五正主引用改 git 57da58c) | +| proposal-reward-cell-differentiation-2026-09-17.md | Alpha 差异化批调研底座(06 指路) | ✅ 已执行(2026-10-05 退役批 git rm——差异化批 2026-10-04 用户否决,死条件以否决收口成就;reward_expectation.gd 旧基准注释顺手核正) | +| proposal-playnote-mechanisms-2026-09-30.md | 06 指路留痕;题一重写未决 | ✅ 已执行(2026-10-05 退役批 git rm——题一迷雾已落籍、题二 09-30 已裁不动;「标雷激励待新方向」随用户删除令作放弃,git 12e934b 留痕) | | playnote.md | 试玩反馈正主 | 无(正主不死于本单) | | roguelike-difficulty-benchmark-2026-10-01.md | 难度目标外部类型基准(带值拍板依据) | 新带值拍板落籍后可议死 | | board-tile-vocab-plan-a-2026-09-26.md | 高墙瓦片现行规格(art-bible+两 render 脚本+remote-gen-prompts 活引用) | 无(活规格) | diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index df823123..f4b6ea8e 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -255,7 +255,7 @@ entities: 金币(GP): 冒险内一次性的属性提升货币——战斗掉落(掷定 + 关级加值 + 战斗内缓冲,完成一次战斗后统一到账)与格面金币袋(低概率惊喜获取)进钱包、商店房消费、冒险结束清零;不入存档、不入冒险摘要;玩家侧显示名「金币」,与跨局持久的钥石记账完全分离、永不互兑(冒险结构 首次定义,2026-09-20 GP+商店房批) 统一冒险加算区: 商店购买与关卡大奖励上限提升共用的同一本属性加账——三轴 {攻击, 生命上限, 护甲等级},入战参数 = 基础表值 + 加算区累加,经战斗开始入参的覆盖值通道生效;购血 = 上限与当前生命同步 +Δ(冒险结构 首次定义,2026-09-20 GP+商店房批) 遭遇: 一次完整战斗事件的同义词——战斗节点触发的那一场仗(既有用法:战斗结算"两场遭遇" / HUD框架"双敌种遭遇""Boss 遭遇变体");不作地图层名(2026-09-14 裁决) - 节点奖励: 奖励点节点给的奖励(关卡节点地图 域)——与安全格奖励(地图战斗资源,格内开出)区分;现行(2026-09-29 迭代 7 拍板②丙):奖励节点 = **三选一构筑点**——从可用道具池(aux 活行 ∩ 工坊解锁集)取一件入关卡域库存,选择前不给出口、池空直通合法空态;spec = design/gdd/ux/node-reward.md v1.0;旧「功能道具的正式渠道」拍板(2026-09-17 关卡节点地图 v1.0)已被现行口径取代;**形态沿革(2026-09-30 用户裁决甲)**:现行局内投放系切片期过渡形态,终局 = 秘宝局外同调件(底稿 design/research/proposal-magic-item-attunement-2026-09-22.md 八拍板),本渠道随同调实施批退役改写——三个"reward"各归各位(2026-09-14 拆名注记) + 节点奖励: 奖励点节点给的奖励(关卡节点地图 域)——与安全格奖励(地图战斗资源,格内开出)区分;现行(2026-09-29 迭代 7 拍板②丙):奖励节点 = **三选一构筑点**——从可用道具池(aux 活行 ∩ 工坊解锁集)取一件入关卡域库存,选择前不给出口、池空直通合法空态;spec = design/gdd/ux/node-reward.md v1.0;旧「功能道具的正式渠道」拍板(2026-09-17 关卡节点地图 v1.0)已被现行口径取代;**形态沿革(2026-09-30 用户裁决甲)**:现行局内投放系切片期过渡形态,终局 = 秘宝局外同调件(底稿=原提案八拍板,git 57da58c 已退役),本渠道随同调实施批退役改写——三个"reward"各归各位(2026-09-14 拆名注记) HP 账本: 冒险域主角血量的唯一记录——冒险结构 持有,每战开始交出、战斗结束收回、恢复点与大奖励入账;关卡切换血条不清零(冒险结构 首次定义;跨战斗 HP 持久性归 关卡节点地图/冒险结构 已锁事实的 冒险结构 半边兑现) 关卡收束点: 一关就此定局的时点——Boss 节点战斗胜利(通关)或英雄死亡(失败);关卡节点地图 在收束点先调 战斗结算 关卡清库、再向 冒险结构 宣布关卡结束与结果(冒险结构 首次定义;切片 level_runner 先例转正;2026-09-17 关卡节点地图 v1.0 图版措辞——Boss 节点 = 图唯一终点) 关卡大奖励: 清完一关、进入下一关前的一次性兑付——上限提升 + 血回满 + 钥石入账三件构成,不进背包不占库存域;末关通关不兑付(冒险结构 首次定义;2026-09-17 代币→钥石统一拍板——原「代币记账」即钥石,同一资源两渠道:关卡大奖励入账与 Boss 掉落;game-concept"冒险内大奖励"的落地形态) @@ -391,7 +391,7 @@ entities: type: formula owner: design/gdd/systems/排雷循环/行动经济.md attributes: - rule: (2026-10-05 判式换代批重立——迭代14②号卡 T3,2026-10-04 用户两轮拍板+grill 七问全裁,设计权威=design/research/方案-挖掘风险不等式修订-2026-10-04.md §九)行动经济 F1 条款3 三层口径并行立——**条款3 聚合健康式**:(1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≥ 0 对全部参考板形 × u ∈ {1,2,3}(下限 0 唯一保留,上限 U_band 删〔grill Q3〕由 β_hi 独家承载);**旗边际引理**(同池结构定理):EV_flag−EV_blind = (q+ρ̂−1)(E_dig+V_mine),旗优于盲挖 ⇔ q > 1−ρ̂,与全部当量表值无关;旗对已知安全格边际恒 ≤ 0(L2 结构破线层);**条件二旗溢价式**:E[标中兑付] ≥ (1+δ)·E_dig(u),δ=0.25 provisional(形态 a 兑付溢价 settlement.flag_hit_premium=125 percent 域;形态 b 专属池不启——雷安同池冻结);**β 比值带**:β(u)=V_mine(u)÷E_dig(u) ∈ [1.2, 2.5](2026-10-04 用户裁 P4);**η 读数**(非判式):η=flag_hit÷flag_placed,分母=全部插旗数〔grill Q5〕,标空率次读数——承载=MC runsum 五字段(flag_placed/flag_hit/flag_miss/flag_hit_gain/flag_miss_penalty,2026-10-05 T1 落码) + rule: (2026-10-05 判式换代批重立——迭代14②号卡 T3,2026-10-04 用户两轮拍板+grill 七问全裁,设计权威=方案报告 §九(已退役,git 1da9a41))行动经济 F1 条款3 三层口径并行立——**条款3 聚合健康式**:(1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≥ 0 对全部参考板形 × u ∈ {1,2,3}(下限 0 唯一保留,上限 U_band 删〔grill Q3〕由 β_hi 独家承载);**旗边际引理**(同池结构定理):EV_flag−EV_blind = (q+ρ̂−1)(E_dig+V_mine),旗优于盲挖 ⇔ q > 1−ρ̂,与全部当量表值无关;旗对已知安全格边际恒 ≤ 0(L2 结构破线层);**条件二旗溢价式**:E[标中兑付] ≥ (1+δ)·E_dig(u),δ=0.25 provisional(形态 a 兑付溢价 settlement.flag_hit_premium=125 percent 域;形态 b 专属池不启——雷安同池冻结);**β 比值带**:β(u)=V_mine(u)÷E_dig(u) ∈ [1.2, 2.5](2026-10-04 用户裁 P4);**η 读数**(非判式):η=flag_hit÷flag_placed,分母=全部插旗数〔grill Q5〕,标空率次读数——承载=MC runsum 五字段(flag_placed/flag_hit/flag_miss/flag_hit_gain/flag_miss_penalty,2026-10-05 T1 落码) mechanism_carrier: settlement.tres flag_hit_premium = 125(percent 域 provisional,2026-10-05 T4 落地)——标中旗正向兑付按同型正向 ×(1+δ):flat 行乘 power、percent 行乘幅度(apply_effect magnitude_override 通道)、gp 行乘 power;取整=四舍五入(与伤害管线 round_direction=floor **分域**——溢价系兑付构造非伤害管线取整,登记注记);标空/挖格/清图兑付不乘溢价;DamageController 零改、雷安同池冻结不动、直伤雷 6/8/8 与 p_perfect 不动(契约红线) prechange_snapshot: **改前静态锚(2026-10-05 T0,audit 工具常量刷新后跑出,改后判读的基准)**——池 77 权重(attack14/defense11/blast16/heal4/weaken8/pierce8/magic8/action6/gp2,clear_blast 不入格池):E_dig(1/2/3)=1.442/1.948/2.455,V_mine(1/2/3)=2.460/2.670/2.881(九型负向字典口径乙=唯一口径,伏击口径甲退役删除),β=1.71/1.37/1.17(u=1/2 带内、u=3 微破下限=登记态点名不强制回滚),盲挖净期望(名义ρ)=+0.47/+0.79/+1.12 恒正(条款3 聚合健康式现行即绿),逐型净期望破线残留=pierce −1.25 / magic −0.50 / heal 0 踩线(名义ρ;实测ρ̂ 10×10 下 pierce −0.16 唯一实测也破、magic/heal 转正),条件二改前恒假(E[标中]=E_dig < 1.25·E_dig——登记已知破,T4 机制闭合);改前行为锚=MC n400 种子窗 76000 系+verifier 双窗(T2,读数随批出口报告) p7_corrections: **P7 口径修正注记(2026-10-04 用户裁随批登记)**:①d70f6c3 §二(迭代8 卡⑧全量复算)池 76 系历史混计——clear_blast(清图槽对象)不该入格池,现行口径=77;②同读数直伤雷 4/5/5 已时效化——2026-10-01 数值修复批 6/8/8 + 2026-10-03 带换代转正,现行单雷期望直伤 ≈1.97 HP(×2.2);heal 权重 2→4(Package B 第 2 轮)同链时效 @@ -523,7 +523,7 @@ entities: type: schema_data owner: design/gdd/systems/排雷循环/秘宝.md attributes: - table: AttunementGrowthTable(数据配置 承载,单行全局常量表——AdventureTable 单行先例 Rule 4 豁免;迭代 11 第①批 同调实施批 T1 落籍 2026-10-03;设计权威 = proposal-magic-item-attunement-2026-09-22 §2.1 用户点名要求) + table: AttunementGrowthTable(数据配置 承载,单行全局常量表——AdventureTable 单行先例 Rule 4 豁免;迭代 11 第①批 同调实施批 T1 落籍 2026-10-03;设计权威 = 原提案 §2.1 用户点名要求(git 57da58c 已退役)) fields: slot_cap int [0,9](硬上限 3——底稿裁决)· milestones 行族 {id 唯一, grant ∈ [1,slot_cap], requires = (计数键,阈值) AND 列表非空}——同调位读数唯一口径 = Σ达成 grant clamp slot_cap counter_keys: 封闭枚举 {clear_count(通关次数按关累计——save 复用零改动), boss_kill_count(Boss 击杀总数含重复——本批 T2 新增收束记账)};预留可插拔位 boss_firstkill_count/adventure_count/no_damage_clear_count/run_depth_best(加行即扩展,底稿 §2.1) schema_guards: 阈值 [1,999] · Σgrant ≤ slot_cap · 计数键出域=加载致命;数值全 provisional 归 难度曲线与Boss(形态锁死、调平衡=改表不动码) diff --git a/design/research/art-bible-ux-review-2026-09-29.md b/design/research/art-bible-ux-review-2026-09-29.md deleted file mode 100644 index 35450620..00000000 --- a/design/research/art-bible-ux-review-2026-09-29.md +++ /dev/null @@ -1,130 +0,0 @@ -# 美术圣经审视报告:界面丑的根因是否在圣经本身(ux-designer 方法) - -- **日期**:2026-09-29 · **方法**:ux-designer skill 流程 + WCAG/字体/色彩外部规范对照 + 三组图像实证(现行截图 `artwork/ui-redesign-2026-09-29/current/`、严格按圣经制作的 mockup v2 `artwork/ui-redesign-2026-09-29/mockup/`、圣经点名参考图 `design/art/references/`) -- **起因**:用户假设——「界面丑的根因在美术圣经,它的指导就是错的,所以不管怎么生成画面都丑」 -- **审查对象**:`design/art/art-bible.md` v2.15(499 行全文逐条核) - ---- - -## 判决(一句话) - -**假设成立,但有精确边界:圣经有六条立法直接致丑、一处结构性缺失(全文档只规定"不许怎么丑",从未定义"什么是美");同时它的信息层骨架(图标键契约/色弱双通道/语义色思想/情绪能量谱)是真资产,不能连孩子一起倒掉。** 决定性证据:同日交付的 mockup v2 严格 100% 遵守圣经(对比度全达标、冻结件全保留),成品仍然是一个棕米单色的电子表格,不像游戏——执行无误,丑在图纸。 - ---- - -## 决定性对照:守法成品 vs 点名参考 - -| | mockup v2(100% 按圣经) | Moonlighter(圣经 §9.1 点名要学) | -|---|---|---| -| 色相 | 全屏棕-米一族,彩色只剩指甲盖大的语义点 | 紫墙、青地板、红伤害数字、多彩敌人同屏共存 | -| 明暗 | 无明暗层次(圣经 §2 禁止),全屏同一明度带,糊 | 亮地板 / 黑洞深渊 / 发光道具三档明度,纵深明确 | -| 数字呈现 | 白色便签矩阵贴在格子上(圣经原则二色牌制) | 数字/文字直接融进世界,靠环境明度承载 | -| 角色存在感 | 48px 立绘贴在平色底上,无舞台无光影 | 角色占屏高约 15%,有光照、有投影、有环境烘托 | -| 质感 | 纯色平板 UI(程序化占位即现状) | 每个面板有材质、描边、厚度 | - -讽刺实证:现行战斗屏恰恰是**违反**圣经(下半屏深棕黑、明度割裂)才有了点对比;mockup v2 **遵守**圣经后全屏统一成米棕——违反了丑,遵守了也丑。两头堵的条款,问题在立法不在执行。 - ---- - -## 病根清单(按杀伤力排序,条款引用 + 实证 + 机制) - -### 病根 1|棕-米独裁:语义色纪律错把"色彩"判给了信息层独占 - -- **条款**:§4.2「红只说危险 / 金只说收益 / 蓝只说己方 / 绿只说自然生机 / 紫赤 Boss 独占 / HSV 300°–345° 全场禁入带」+ §4.4/§7.2「UI 不新增语义色,数据只穿墨」+ §6.1 背景「低对比自然后退」(只说不能怎样)。 -- **实证**:mockup v2 全屏色相跨度约 30°(棕到米);Moonlighter 同屏色相跨 200°+。ux-designer 色彩参考里一个健康游戏 UI 需 10+ 功能色(health/mana/XP/success/warning/info/selected/hover/disabled),圣经色域给 UI 只剩米色、墨色、棕石色。 -- **机制**:立法初衷(信息不被色彩噪音淹没)正确,但手段是**把色相本身收缴为信息层专属资源**,世界侧(环境/背景/装饰)被剥夺用色权。真实游戏的做法相反:世界侧色彩丰富但低饱和后退,信息侧靠明度/位置/饱和突出——"防抢焦"是焦点预算(§3.4)的职责,"防语义混淆"才是色彩纪律的职责,圣经让色彩纪律越界把两件事都管了,管死了世界。 - -### 病根 2|明度恒定硬规则:阉割了光影这个最强层次工具 - -- **条款**:§2「全作所有状态共用同一基准明度,禁止以变亮/变暗作为情绪表达或状态区分手段;状态区分只允许色相、饱和、运动、元素」。 -- **实证**:Moonlighter 的洞穴感几乎全部来自明度(亮地板/暗深渊/发光体)。圣经禁掉明度后,画面只剩色相和饱和两个弱手段造层次,结果是平、灰、糊。 -- **机制**:立法动机对头——§9.2 反 Darkest Dungeon 式压暗、roguelike 失败重开"世界无光暗记忆",这些反对的是**用变暗表达情绪/惩罚**,不是明度本身。正确的立法是「明度变化禁用于状态/情绪表达,允许用于空间纵深与光照层次」(砖缘厚度立体面已开了这个先例——§3.2 明确"形体塑造不受明度恒定约束",等于承认了例外必要,但没有把例外上升为通则)。 -- **附带伤害**:病根 3 的直接成因。 - -### 病根 3|数字色牌制:用 UI 补丁解决美术问题,"上世纪扫雷"观感的直接来源 - -- **条款**:原则二「明亮为皮,色牌为骨」——数字一律垫 #F5EAD3 素色直角小牌,「格底不再承担数字对比义务」。 -- **实证**:现行战斗屏与 mockup v2 的棋盘 = 几十个白色便签贴满深色土,这就是"Windows 扫雷/电子表格"观感的来源。ITB(圣经自己的参考)的数字直接画在格子上,靠格子明度设计承载可读性。 -- **机制**:连环债——明度恒定(病根 2)→ 格底不能压暗 → 深色数字在亮底上对比设计空间被锁死 → 只能垫牌。色牌解决了 WCAG(12:1),制造了碎片化。它把"格子美术与数字协调设计"这条正路立法放弃了。 - -### 病根 4|结构性缺失:一份"禁令文档",从未定义目标 - -- **实证**:全文"禁/不得"出现 40+ 次,全部是过程约束;没有一个章节描述"整屏最终画面应该是什么样"。§9.1 取/弃表把三款参考的**功能骨架**取了(ITB 信息分层/Moonlighter 砖缝/Peglin 明快色彩),把它们的**表现魅力**弃了(ITB 的 HUD 材质工艺、Moonlighter 的光照、Peglin 的角色体积魅力——这些恰恰是它们好看的原因)。§1.4 样张验收只验单格,**整屏构图从未有过验收闸**(战斗一屏样张自立项起挂账至今)。 -- **机制**:约束的交集只能收敛出"不违规的安全区",收敛不出"美"。所有生图/执行只能在安全区里打转——这就是"不管怎么生成都丑"的文档级解释。 - -### 病根 5|装饰配额制:「约 2 种、纹理级、低对比」把棋盘判了无期徒刑 - -- **条款**:§1.2 原则三/§3.2——装饰变体约 2 种、一律纹理级、禁物件级(巨石/小石堆)、低对比自然后退。 -- **实证**:10×10 格 100 格几乎全同,大面积重复。ITB 地表耐看恰因每格有物件级变化(石块/草丛/水渍/裂缝)。 -- **机制**:立法初衷(装饰不得伪装逻辑差异、零信息纪律)正确;正确手段不是禁物件级,而是「物件级装饰必须有专属形状家族、与信息元素(数字/小人/旗/纹样)形状语言隔离」——焦点预算管得了"抢读",不需要灭绝装饰。 - -### 病根 6|舞台与体量缺失:角色没有存在感 - -- **条款**:§8.2 主角 48×72 / 敌立绘 48/64/96px 档;§6.1 对 B 区背景只有负面约束(不得抢焦),无正面目标(舞台是什么)。 -- **实证**:1280×800 屏上主角占屏高 9%,周围无任何环境烘托,像贴纸;Moonlighter 约 15% 且有光照投影。mockup v2 已尽力加石台名牌,仍被 48px 资产上限锁死。 - -### 病根 7|UI 全局可读性盲区:圣经只管了格子里的数字 - -- **条款**:棋盘数字 ≥4.5:1 硬指标(§4.1)做得很好;但**全局 UI 文字对比度无硬指标**(§7.2 双色墨制只覆盖关卡屏暗底件),字号下限 13/14px 低于 ux-designer PC 规范(1080p body ≥16px/tooltip ≥14px;本作 1280×800 更低分辨率同字号实际更小),「像素字不作字重区分」自断一层级手段。 -- **实证**:现行 8 处文字实测 4 处不达标(C 区属性行 1.31:1、菜单说明 2.58:1、副标题 3.54:1、放弃冒险 4.42:1 擦线)——全部落在圣经没立规矩的自由发挥区。 - -### 病根 8(执行层,非圣经立法):程序化占位被当成了现状 - -- §7.5/§6.2 允许「现行程序化占位不空窗」,纯色平板 UI 遂成事实标准。panel_stone/button_stone 资产已在包里未接线(mockup v2 已验证可用)。圣经缺一条「占位=临时态,终稿闸=整屏样张」的收口规则——与病根 4 同源。 - ---- - -## 强项保留清单(推翻圣经时这些不能倒) - -1. **图标键契约 §4.6**:键=数据表主键、身份=形状纹样、极性=金/红色相槽+满缺框形——工程与可读性双扎实,ux-designer 规范级。 -2. **色弱双通道纪律 §4.5**:九对语义逐对点名冗余通道,比外部规范还细。 -3. **语义色思想内核**:红=危险/金=收益/蓝=己方的分配本身没问题——病在"只说 X"的独占式立法收缴了世界用色,不在分配本身。 -4. **§2 情绪能量谱**(八状态 × 0–10 能量 × 主情绪/承载元素):框架是真资产,只需删掉"明度恒定"这个手段枷锁。 -5. **形状语言总纲**「圆角为世、直线为信」+ **焦点预算 §3.4**:一致的形式语法,问题只是焦点预算被明度恒定削弱了手段。 -6. **明度恒定的立法动机**(反压抑、失败不惩罚、非暗黑风基调):动机保留,手段换掉。 - ---- - -## 修法备选案(呈报拍板;每案代价与联动如实列) - -### 案 A|最小修(不动 §2,补盲区) -改 4 处:① 语义色"全场独占"改"信息层独占",世界侧色相解禁但低饱和(焦点预算接管防抢焦);② 补全局 UI 文字 ≥4.5:1 硬指标;③ 装饰变体解禁物件级(专属形状家族隔离);④ 补整屏样张验收闸。 -- **代价**:小,一周级;冻结件全保留。 -- **局限**:明度恒定还在,光影层次仍然没有;数字色牌还在,白牌矩阵不变。**能改善"单色世界",改善不了"平"。** - -### 案 B|中修(推荐) -在案 A 基础上加三条: -1. **§2 明度恒定改「明度分层」**:明度禁用于状态/情绪表达(立法初衷保留),允许用于空间纵深与光照——给三档明度带(世界底层/世界中层/信息面层),砖缘立体面既有例外上升为通则;Darkest Dungeon 式压暗仍在 §9.2 反面清单。 -2. **数字色牌降级为后备手段**:格底明度分档(未开亮/已开暗一档差)承载数字对比,色牌只在复杂格底启用;需重跑 §1.4 样张(机检断言改造,工作量已知)。 -3. **§8.2 资产档位上调评估**:主角/敌立绘升一档(如 64×96/96 档),配合 B 区舞台规范(光照/投影/地台进 §6.1 正面目标)。 -- **代价**:中——§1.4 样张重跑、棋盘渲染参数调整、部分冻结件(色牌形制/样张 v2 四冻结之①④)需解冻重冻;ui_kit 色板批联动。 -- **收益**:画面获得光影层次 + 色相解放 + 去白牌,直指三大观感根因。 - -### 案 C|推翻重写 -以 Moonlighter 式光照像素地牢为目标重写圣经。 -- **代价**:大——全部样张、四冻结、21 枚瓦片资产、色板定稿作废重来;前期美术投入沉没。 -- **何时才值**:若用户认为"明快暖石地牢"这个风格基调本身也不要了。本报告判断:基调没错(Moonlighter 同基调且好看),错的是手段,**故不推荐 C**。 - -### 不在三案内的独立小修(随任一案附带) -- 字号下限对齐 ux-designer PC 规范(body ≥16px/tooltip ≥14px @1280×800);解禁字重两档。 -- 「占位=临时态,整屏样张=终稿闸」收口条款(治病根 8)。 - ---- - -## 待拍板清单(登记口径:06-待办清单,待用户逐条表态) - -1. 三案选型(A / B / C,或 B 的子集勾选)。 -2. 若选 B:§1.4 样张重跑的闸形(沿用机检闸形 A 还是先目检方向稿)。 -3. 若选 B:数字色牌退役范围(全退 / 复杂格底后备)。 -4. 资产档位上调是否本批做(牵涉在制敌立绘/主角三态资产返工面)。 -5. 本报告结论是否收编入 art-bible 版本历史(v3.0 修订立项)。 - ---- - -## 证据索引 - -- 现行截图三屏:`artwork/ui-redesign-2026-09-29/current/`(战斗屏上下明度割裂、菜单文字 2.58:1 实证) -- mockup v2 三屏:`artwork/ui-redesign-2026-09-29/mockup/`(严格守法成品实证) -- 对比度实测数据:`artwork/ui-redesign-2026-09-29/对比报告.md` §一(8 处 4 处不达标,最低 1.31:1) -- 参考图:`design/art/references/moonlighter_1.jpg`(色相跨域/明度层次对照) -- 外部规范:ux-designer skill `references/color-palettes.md`(WCAG 对比度/功能色表)、`references/font-guidelines.md`(PC 字号下限) diff --git a/design/research/perfect-l1-lever-proposal-2026-09-29.md b/design/research/perfect-l1-lever-proposal-2026-09-29.md deleted file mode 100644 index 4fc2418b..00000000 --- a/design/research/perfect-l1-lever-proposal-2026-09-29.md +++ /dev/null @@ -1,33 +0,0 @@ -# 完美 L1 加难杠杆设计提案(M-3 迭代 5 返工批 T-B,2026-09-29) - -- **裁决来源**:U2 人闸 a 项推翻丙裁**甲=新杠杆授权**;待批点乙两子路按推荐取 **② L1 专属加难内容**(①敌方攻击基线上探会连坐普通档 L1——其落带余量仅 ~15 点,定向性差)。 -- **本提案状态**:**待用户批准**(行值不在代拍板白名单——批准前零投值)。 -- **目标**:完美档 L1 条件通关率 85–89% → 带内 [35,65];普通档 L1 保持带内 [35,55](现行读数 46–50%,余量 ~11–15 点)。 - -## 一、设计空间复盘(T3 扫描结论为底) - -完美 L1 的强势来源 = 10×10 板形 × 完美画像挖掘效率 × 奖励经济学,不在已注册旋钮的已扫量程内。L1 定向杠杆实测:荆棘 +1 = 完美 −7pp/普通 −2pp(**定向比 3.5:1,全网格最优**);酋长加血对完美无感(L1 Boss 胜率 98%);群战上探被校验域封死。 - -## 二、推荐方案:阶段一 = 荆棘 effect_value 扫描外延(零新注册) - -**关键发现**:荆棘(thorn)为 L1 dungeon 池**独占**变异类型(L2/L3 池无 thorn)——effect_value 天然就是 L1 专属杠杆,且 registry 域为 [1,9]、现行值 1。T3 扫描只试了 1→2(「弱」的结论是相对 −24pp 的目标缺口,不是旋钮本身弱)。 - -- **投值候选**:effect_value 1→3(预估完美 −14pp → ~75%,可能仍差带缘)或 1→4(预估完美 −21pp → ~68%,贴带上缘;普通 L1 预估 −4~−6pp → 44–46% 仍在带)。 -- **线性外推警示**:−7pp/格 的斜率按踩雷频次≈常数假设;实际挖掘策略会自适应(完美画像可能少开低价值邻格),真实读数须配对种子扫描实测,外推仅供立项参考。 -- **配套义务**:荆棘踩雷直伤加大后,与「挖掘风险不等式」风险端定价联动(该挂账本来就在册——风险端定价不足,本投值顺向收窄缺口);恢复数学(恢复概率 1/4 · 恢复量 1/6)不动。 -- **成本**:一次配对种子 OFAT + 组合扫描(对 C1+v1 现行表态),~1 小时;若 1→4 入带即收口,**零新内容、零新注册**。 - -## 三、备用方案:阶段二 = 新增 L1 专属变异类型(仅当阶段一不够) - -若荆棘拉到域内合理上限(建议 ≤5,超过后单格 5 伤在小血量池手感过罚)仍不达带,再立新杠杆——候选形态:**「塌顶」**(rockfall 的 L1 姊妹型:flat_damage on_open,dungeon 池新行,走杠杆注册+类型定稿批流程)。成本 = 新变异类型批(表行+呈现+反制预留),~1 个内容批。 - -## 四、否决面(不予推荐) - -- 敌方攻击基线上探(子路①):全敌轴,普通 L1 连坐超余量,且与 AC v1 重投互相叠加难以归因。 -- L1 Boss 血量/数量:完美对酋长胜率 98%,血量轴已证无感。 -- 板形回退(L1 恢复混编板):推翻棋盘统一批裁决,代价外溢。 - -## 五、批准点 - -1. 阶段一荆棘外延是否批准(批准即跑扫描,入带行值随批落表+registry 同步); -2. 若阶段一不足,阶段二「塌顶」是否立项(或接受完美 L1 残余越带挂账——届时带缺口数字已知,可再次三选一)。 diff --git a/design/research/proposal-magic-item-attunement-2026-09-22.md b/design/research/proposal-magic-item-attunement-2026-09-22.md deleted file mode 100644 index beb2f59a..00000000 --- a/design/research/proposal-magic-item-attunement-2026-09-22.md +++ /dev/null @@ -1,182 +0,0 @@ -# 提案:魔法道具重设计批定稿(局外同调机制件) - -> **⚠ 名称已变更(2026-10-05,用户拍板)**:本文定稿时系统名为「魔法道具」,该名**已改为「秘宝」**。原因:「魔法」一词在本作已被征用为敌方侧伤害/护甲语汇(`魔法矢` / `魔法族` / `魔法护甲`),「魔法道具」易被读成"魔法属性的道具"。**本文正文按历史定稿原样保留旧名**(改写定稿会破坏提案的留痕价值),现行正主 = [秘宝](../gdd/systems/排雷循环/秘宝.md)。读本文时「魔法道具」= 现行「秘宝」,机制内容零变更(仅称谓更名,同调位机制名亦保留不变)。 - -> 日期:2026-09-22 -> 性质:定稿提案(只读提案,未动任何 GDD 正文、表与代码;本批只落档设计,实施另行立项) -> 定位一句话:魔法道具从「局内掉落消耗品」重定义为「开局前在营地装配、占同调位、带每冒险充能的机制增强件」——哈迪斯2 塔罗牌 × 灵魂石幸存者天赋 × DND 同调的合体 -> 依据:现行 [秘宝](../gdd/systems/排雷循环/秘宝.md)(v0.4,切片期空内容合法态,六件设计登记在 registry `aux_items`);[元进度](../gdd/systems/跨局循环/元进度.md) v1.3(营地三柜台、道具工坊解锁渠道、Boss 首杀标记位、覆盖值注入通道);[行动经济](../gdd/systems/排雷循环/行动经济.md)(ap_per_round 调参史 8→6、下轮修正队列);[地图战斗资源](../gdd/systems/战斗循环/地图战斗资源.md) v0.15(九型字典、reward_roll 流、雷安同池冻结);[06-待办清单](../gdd/06-待办清单.md)「探宝罗盘两方案评估」与「未开格类型微光」条;GP 商店房提案(proposal-gp-shop-room-2026-09-20.md)三件全陈列无刷新裁决;[art-bible](../art/art-bible.md) §4.2/§4.5/§4.6.3(类型微光颜色冲突 T1) -> 行值纪律:本文只给**结构、键形态与候选锚点**;正式行值一律随实施批落表(`attunement_growth.tres` / 道具定义表),数值所有权归[难度曲线与Boss](../gdd/systems/冒险循环/难度曲线与Boss.md),不在此双写 - -## 裁决记录(2026-09-22 用户拍板八条) - -**本节是实施批的设计权威:正文中与该节冲突的表述一律以该节为准。** - -1. **定位**:魔法道具为**局外同调件**;局内**不掉落**任何机制道具。局内即便后续增加掉落,也只是**商店式数值道具**,永不含机制。 -2. **轴归属铁律**:魔法道具**只走机制轴**;数值轴只属于「初始天赋(永久强化·属性锻造)」与「局内增强(GP 商店)」。 -3. **初始同调位 = 0**:开局玩家没有任何魔法道具可用(同调位与道具池同步冷启动)。 -4. **同调位增长来源 = 通关次数 + Boss 击杀数(含重复)**:仅按 Boss 首杀计增长被判太简单,弃用。 -5. **单件占位统一 1 槽**。 -6. **道具形态混合**:被动件与主动充能件并存。 -7. **AP 件做两件**:A 被动限时(前 3 轮每轮 +1 AP,之后失效);B 主动充能(本场战斗开够 N 个安全格,触发一次临时 +AP)。 -8. **类型微光全免费(06 清单「探宝罗盘两方案」取备选方案路线)**:奖励类型预读成为人人免费的基础常显能力,`探宝罗盘`(预读类型)随之**退役**。先按此设计,试玩若 imba 再调。 - -## 0. 一句话结论 - -三轴 doctrine 锁死成长边界:**跨局数值轴 = 属性锻造,局内数值轴 = GP 商店(含未来数值掉落),局外装配的机制轴 = 魔法道具同调**——魔法道具是本作唯一的机制修正来源,永不发裸 flat 数值,触及伤害一律做成靠打好雷图挣来的条件触发;同调位从 0 起步、由「通关次数 + Boss 击杀数」经**数据驱动的里程碑谓词表**增长、硬上限 3,作为机制轴的总功率闸。全部增长条件与解锁条件做成可配置表、可插拔计数源,试玩后改平衡 = 改表不动代码。 - -## 1. 系统定位与边界 - -### 1.1 与现行魔法道具 GDD 的关系:重定义(替换) - -现行 `魔法道具.md` 的全部机制骨架——掉落池获取、关卡域库存、挖掘期主动使用、四步编排、板级叠加层随图消亡——**整体退役**,替换为: - -``` -营地(局外)装配 ──占同调位──▶ 带入冒险 ──被动件整局生效 / 主动件按充能于挖掘期发起──▶ 冒险结束充能归零,装配关系可换 -``` - -从旧设计继承的承重资产(不随骨架退役): - -| 继承项 | 新语义 | -|---|---| -| 真视 ≤3×3 窄域护栏(加载期校验) | 原样保留,探巢摆钟适用 | -| 五维度框架(信息/风险/行动/规划/反制) | 从「掉落自查清单」改「装配池内容自查清单」;类型微光免费后「规划(预读奖励身份)」维度失义,维度表随实施批收缩为 {信息→并入风险、风险(真视)、行动、反制}——具体收缩形态实施批拍板 | -| 不做清单边界锚(允许恢复推理原料,不允许道具替代推理) | 原样保留 | -| 「收益在少赌不在单赌更安全」判读口径 | 原样保留,真视件判读沿用 | -| 零随机、使用不扣 AP、效果即时可见 | 原样保留 | -| 主动件挖掘期发起 + 战斗结算四步编排 | 原样保留给主动充能件(信息类件的板级叠加层机制沿用) | - -### 1.2 三轴 doctrine(裁决记录 1+2 的结晶) - -| 轴 | 载体 | 生命周期 | 内容 | 数值语言 | -|---|---|---|---|---| -| 数值轴·跨局 | 永久强化(属性锻造) | 入存档持久 | flat 攻/血/甲 | flat 整数(已锁) | -| 数值轴·局内 | GP 商店(+ 未来数值掉落位) | 冒险内清零 | flat 攻/血/甲 | flat 整数(已锁) | -| **机制轴·局外装配** | **魔法道具同调(本系统)** | 装配关系跨局、充能每冒险重置 | 循环机制修正、条件触发、信息干预 | **禁 flat 裸数值**(本文立约) | - -三轴互不越界:魔法道具永不发无条件裸数值(否则与两数值轴同源叠爆);数值轴永不改循环机制。**「和永久强化会不会叠太强」的结构性回答**:数值威力仍只在两数值轴上(均已有换算率表带平移建模);机制件给的是选项、容错与能动性,难度带本身按"玩家会好好打"计;机制轴总功率被同调位上限 3 × 每冒险充能双重闸死;实施批验收按 attune=off/on 分层读数(照搬商店分层先例)。 - -## 2. 同调位(Attunement Slots) - -背景口径(DND 式):使用魔法道具需要**同调**——冒险者的心神与遗物共鸣,同调位有限,能同时共鸣的神器就有数。同调位上限 3。 - -| 参数 | 定稿值 | 说明 | -|---|---|---| -| 初始槽数 | **0** | 白板存档无可装(裁决 3)——首件同调位的解锁是玩家第一次「装备上遗物」的高光时刻,首里程碑阈值宜低(表值归调参批) | -| 单件占位 | **1 槽** | 统一,无稀有件多占(裁决 5) | -| 硬上限 | **3** | 表字段 `slot_cap`,调整改表 | -| 增长来源 | **通关次数 + Boss 击杀数(含重复)** | 数据驱动,见 §2.1(裁决 4) | -| 装配时机 | 冒险开始前的营地 | 装配关系入存档持久;跨局可换装 | - -### 2.1 ★ 易改易拓展的增长设计:计数器 + 里程碑谓词表(用户点名要求) - -设计目标:试玩后觉得"太简单/太难",改增长曲线必须是**改表行为**,不是代码行为;想加一种新增长来源,必须是**加枚举 + 加计数器**的增量扩展,不动既有逻辑。 - -**计数源(可扩展封闭枚举,存档逐域记账,`save_file` 新增域)**: - -| 计数键 | 语义 | 事件源 | 现状 | -|---|---|---|---| -| `clear_count` | 累计通关次数(按关卡计,含重复关) | 冒险结构·关卡收束 | 通关次数表**已有**(元进度 v1.3 四件存档义务之一),直接复用 | -| `boss_kill_count` | Boss 击杀总数(**含重复击杀**) | 冒险结构·Boss 击杀事件 | 新增累计计数器(首杀标记位已有,总数另记) | - -预留可插拔位(本期不实现,加行不破坏 schema):`boss_firstkill_count`(由首杀标记位派生)、`adventure_count`、`no_damage_clear_count`、`run_depth_best`。 - -**里程碑表 `attunement_growth.tres`(新建;数值全 provisional 归调参批)**: - -``` -slot_cap = 3 -milestones = [ - # 每行 = 一组 AND 谓词,全部满足即授予 grant 槽;同调位数 = Σ已达成 grant,clamp 到 slot_cap - { id = "m1"; grant = 1; requires = [ ("clear_count", 1) ] }, - { id = "m2"; grant = 1; requires = [ ("boss_kill_count", 3) ] }, - { id = "m3"; grant = 1; requires = [ ("clear_count", 3), ("boss_kill_count", 6) ] }, -] -``` - -- `requires` 为 (计数键, 阈值) 对的 AND 列表——谓词形态,schema 校验计数键 ∈ 封闭枚举、阈值 [1,999]、Σgrant ≤ slot_cap;OR/复合需求出现时升级谓词形态走本文修订。 -- **试玩后调平衡的全部动作都落在表上**:嫌 m2 太简单→阈值 3→8;想换成首杀口径→计数键改 `boss_firstkill_count`;想全换通关口径→改行;想开第 4 槽→`slot_cap` 3→4 加一行里程碑。零代码改动。 -- 行示例中的阈值是**形态示意不是候选值**,正式行值随实施批投表。 - -**道具解锁条件同用谓词形态**(§3)——两套条件共享一个谓词 schema 与计数源,一处扩展两处受益。 - -### 2.2 获取条件(按用户指示先放宽) - -**试玩/实施首批:全部道具默认已解锁**(解锁表全达成或直读"全解锁"开关),聚焦验证机制手感。正式态渠道归[元进度](../gdd/systems/跨局循环/元进度.md)道具工坊柜台:解锁条件从"通关次数达标"起步、可扩任意计数键,走同一谓词表(每件道具一行 `unlock_requires`),逐件可调。 - -## 3. 道具目录(机制轴八件 + 一件退役) - -> 形态:被动 = 装上整局生效;主动 = 每冒险 N 次充能,挖掘期发起(冒险结束充能归零,装配关系保留)。数值为候选锚点,正式值归调参批。 - -| 轴 | 道具 | 形态 | 效果 | 设计意图 / 风险注记 | -|---|---|---|---|---| -| 伤害 | **淬毒刃纹** | 被动 | 对被克制敌人的穿刺/魔法直伤 +N | 条件触发、复用克制矩阵,引导"读敌拍板"选装;目录中最接近数值的一件,试玩若与两数值轴体感叠爆,改造为纯触发件(见 §8) | -| 伤害 | **标中殉爆** | 被动 | 每标中一面旗,全体存活敌吃 N 点群伤 | 把正确推理直接兑成伤害;与标中既有正向兑付叠加的上限归效果对照表对账 | -| 伤害 | **惊巢反制** | 被动 | 挖开雷格时该次惩罚减半,并反弹 N 点伤害 | 风险对冲件——盲赌区的保险,警惕其把"踩雷学费"变得无所谓(调 N 收紧) | -| 雷图·AP | **工兵晨令**(裁决 7-A) | 被动·限时 | 每场战斗**前 3 轮**每轮 +1 AP,之后失效 | 只 buff 开局抢速段,不做常驻 AP 加量——避开 ap_per_round 平衡阀门(8→6 调参史在案) | -| 雷图·AP | **掘进蓄能**(裁决 7-B) | 主动·充能 | 本场战斗每开够 N 个安全格积 1 点,可发起一次 +临时 AP(当轮生效) | 充能靠打循环挣——AP 增益从"白给"变"劳动所得",守五条经济契约不破口 | -| 雷图·真视 | **探巢摆钟** | 主动·充能 | 3×3 窗口标出惩罚格(真视窄域护栏 ≤3×3 原样) | **类型微光揭示奖励类型、不揭示雷位(雷安同池下类型≠危险性),真视价值独立成立** | -| 雷图·炸格 | **爆破工兵包** | 主动·充能 | 移除指定格(含雷格):不兑付奖励、不触发惩罚、不计清图进度 | **中立移除格态**是对排雷玩法/战斗结算/清图判定的增补实现面,改动最重——实施前先出影响评估(待办 C) | -| 雷图·概率 | **偏运硬币** | 被动 | 装板摇号时稀有正向资源(heal/gp/pierce/magic)权重 +N | 只动池内权重、雷安仍同池同分布,不破冻结项;属玩家侧杠杆,禁独立调参,带分层验收随批 | - -**退役**:`探宝罗盘`(预读奖励身份)——裁决 8 类型微光全免费后失义,从六件登记中除名。`工兵令`/`显影尘`/`地穴全图卷`的旧效果定位随本批重设计整体并入或除名,实施批在 registry `aux_items` 重构时逐件销账。 - -## 4. 使用限制(三层闸) - -| 闸 | 限什么 | 载体 | -|---|---|---| -| 同调位 | 一次冒险**能带几件** | `attunement_growth.tres` 里程碑表 + `slot_cap` | -| 每冒险充能 | 主动件一次冒险**能用几次** | 道具定义表 `charges_per_adventure`,冒险开始重置 | -| 窄域与合法性护栏 | 单次使用**能照多大、什么目标算数** | ≤3×3 真视校验(加载期致命)、零信息不消耗、边缘交集受理——三件旧裁定原样继承 | - -成本语言变更:旧设计"成本在获取时已付(来源格没出战斗奖励)"随掉落退役而作废;新成本 = **机会成本(3 个槽位你带哪 3 件)+ 充能节奏(这几次干预花在哪张图上)**。 - -## 5. 商店刷新件的去留(裁决遗留开放项) - -GP 商店现行裁决为"三件全陈列、无刷新、无三选一"(2026-09-20)。**商旅信物类(商店房 +1 免费刷新 / 折扣)与该校裁决正面冲突,本批目录先不含此件**。解禁路径二选一,留实施批前拍板:① 商店侧开出"道具特权刷新"(机制件是刷新的唯一入口,商店本体维持无刷新);② 改效果为"到店时商品档位 −1 级价 / 折扣",不碰刷新语义。 - -## 6. 实现拆批预估(本文不实施,仅给排期形状) - -| 集 | 内容 | 落点 | -|---|---|---| -| A 表与 schema | `attunement_growth.tres` 新建 + 谓词 schema;道具定义表重构(形态/充能/占位/解锁谓词行);registry `aux_items` 重构 + `attunement_slots` 新条目 | `data/tables/` + `design/registry/entities.yaml` | -| B 存档与账本 | `save_file` 新增:装配关系、同调位里程碑达成态(或纯派生)、`boss_kill_count`、主动件充能余量;`clear_count` 复用现有表 | 存档序列化 + 元进度账本服务邻接 | -| C 运行期 | 营地装配覆盖层(局外入口);被动件注入通道(沿用 `hero_override`/追加-替换集合语义);主动件挖掘期发起编排(复用旧四步受理)与充能扣减;八件效果各自接入点(淬毒→克制结算、殉爆→旗判定、晨令/蓄能→`queue_ap_delta`/开轮兑现、摆钟→叠加层、炸格→待办 C 评估、硬币→`reward_roll` 权重投影) | 切片代码 | -| D 验证 | 冒烟:谓词表达成/clamp/装配持久/充能重置;**MC 增 attune=off/on 开关 + 贪心装配画像分层读数**;换算率表新增"同调轴"登记行(行值归曲线调参批) | `smoke/` + `production/qa/` | - -## 7. 验收纪律(分层不混读) - -1. attune=off 续用现行基线带(L1 [35,55] / L2 [25,45]),attune=on 带平移归曲线调参批投值——商店(shop=off/on)分层先例同法。 -2. 机制件不当量进换算率表不豁免:淬毒刃纹/偏运硬币/两件 AP 件各有独立带敏感性,逐件一行、逐行归因(护甲行强条目纪律同族)。 -3. MC 读数 ≥50 distinct seeds;确定性装配画像保证同种子可复现。 -4. 红线复查:真视窄域加载护栏、道具不替代推理(不做清单边界锚)、机制件零无条件 flat 数值(本文 §1.2 立约,schema 校验可查"效果字段无裸属性加项"的形态约束——具体校验设计实施批出)。 - -## 8. 开放问题(留给试玩与实施批,不阻塞落档) - -| # | 问题 | 现状 | -|---|---|---| -| 1 | 淬毒刃纹是否改纯触发件 | 试玩判读:与两数值轴的体感叠爆度 | -| 2 | 被动限时件"前 3 轮"是否扩为可调 knob | 倾向表值化(`effective_rounds = 3`),实施批定 | -| 3 | 反制维度道具(地形变异 counter)目录空位 | 框架契约在案(每变异 ≥1 反制件),首批是否铺量随实施批 | -| 4 | 装配 UI 呈现(营地第四柜台 or 道具工坊扩容) | 归营地/HUD 协作批,本批只锁机制面 | -| 5 | 主动件可否在冒险中途换装 | 默认不可(装配 = 冒险开始前的决定);开放留 Alpha | - -## 9. 连带修订登记面(实施批执行,本文不碰 GDD 正文) - -- `魔法道具.md`:定位重写 + 掉落/库存节退役(本文即其重设计权威底稿) -- `元进度.md`:道具工坊柜台职责改写(解锁→谓词表 + 装配入口);Boss 击杀计数与同调位增长登记 -- `06-待办清单.md`:探宝罗盘两方案条目**收口**(裁决 8:类型微光全免费路线 + 罗盘退役);新增待办 B(商店刷新件依赖,随 §5 开放项销行)、待办 C(炸格件实现影响评估) -- `地图战斗资源.md`:偏运硬币权重投影接口注记(池结构与冻结项零触碰) -- `行动经济.md`:两件 AP 件的兑现通道注记(复用 `queue_ap_delta`/开轮兑现,账本零新机制) -- `05-不做清单.md`:道具替代推理边界锚复核(原样保留即通过) -- registry `entities.yaml`:`aux_items` 重构、`attunement_growth`/`attunement_slots` 新条目、`save_file` 新域注记 -- art-bible T1(类型微光颜色冲突):裁决 8 采"全免费常显"路线,颜色方案冲突面移交美术批裁决(微光机制本体仍卡 art-bible §4.2 语义色条款,**本裁决不解除该冲突**,两线独立推进) - -## 10. 拍板状态 - -八条裁决已于 2026-09-22 全部拍板(见裁决记录),本文自讨论预案转为**定稿提案落档**。实施批待用户另行立项;§5、§8 为明列开放项,不阻塞。 - -## 版本历史 - -| 版本 | 日期 | 改动 | -|---|---|---| -| v1.0 | 2026-09-22 | 提案落档:讨论预案 v2 定稿登记(用户八条拍板随批),未动任何 GDD 正文 | diff --git a/design/research/proposal-playnote-mechanisms-2026-09-30.md b/design/research/proposal-playnote-mechanisms-2026-09-30.md deleted file mode 100644 index ac3717ad..00000000 --- a/design/research/proposal-playnote-mechanisms-2026-09-30.md +++ /dev/null @@ -1,221 +0,0 @@ -# 设计提案:试玩反馈两条机制——信息暴露面(视野/初始展开/魔法提灯)与标雷激励 - -> **性质**:设计提案——只设计与记录,不改任何游戏代码与数据表;全部裁决权留用户,文末以待拍板点清单收尾。 -> **日期**:2026-09-30 -> **修订**:v2(2026-09-30 同日)——题一按用户裁决的微光正确口径(**英雄周围 8 格内的未开格显示类型微光**,非全板常显)重写;v1 中「微光常显与视野限制互斥/不遮微光的视野机制是空操作」结论与案甲1(微光收进灯下)作废——它们建立在「微光全板恒亮」的错误前提上;题二不受影响。 -> **裁决(2026-09-30 用户拍板)**:**题一=案甲视野迷雾立项**——已开格政策=暗淡记忆态(灰显可见);菱形半径起步=与微光环 8 格同圈;魔法提灯=灯甲外扩 +2 格、类型微光不随视野扩;初始展开收窄不配套、后置 Alpha 差异化批窗口。**题二=不动**——各案均不采用,标雷激励问题保留待新方向。概念正主已落 HUD框架「未开格类型微光」「视野迷雾」两节;实施编排归主线 roadmap。 -> **上游触发**:真人试玩反馈(`design/research/playnote.md`)两则: -> ① 「每次开图就是开了片面积,是否有生成图计算如此?」「扫雷棋盘增加视野限制;联动道具『魔法提灯』可以看到所有的棋盘视野,或者视野范围变大」; -> ② 「有什么办法可以让玩家去标雷?比如怪物触发了某个状态,你正常打开安全格,普通伤害会变得非常低,但是标雷可以造成满的甚至是倍率的伤害——这样是否可以让玩家主动去标雷;不然的话玩家肯定尽可能开更多安全格,把资源投入到获得清图奖励的伤害了」。 -> **登记**:[06-待办清单](../gdd/06-待办清单.md) 排雷循环→排雷玩法(题一)、战斗循环→地图战斗资源(题二)各一条。 -> **纪律**:雷安同池为结构冻结项,碰它的案只标「破冻结、随 Alpha 差异化批」,不设计绕行暗改;雷罚直伤三行 4/5/5 为 provisional 且数值挂起归用户自行探讨,本提案零触碰;新机制数值一律小整数加法核(flat 点数档),不提乘法堆叠与连续数值;难度只立在数值包络内,雷格=策略纹理不是难度墙;新信息面逐案回答「在哪展示、为何不重复」;全部行号引用已复核(2026-09-30)。 - ---- - -## 题一:信息暴露面——视野限制、初始展开区收窄、魔法提灯 - -### 0. 先用白话把图景讲清 - -现在的每张雷图,玩家能看到**整张板的样貌**:砖面、装饰、已开格上的数字,全板一目了然。类型信息则只亮在**英雄身边**——8 格内的未开格头顶有微光(这格是增益还是治疗……),走出圈子,身后的微光就熄了。玩家要推理的始终只有一件事:**哪块是雷**。 - -试玩反馈要的是把这个「灯光」逻辑推到底:**菱形灯光之外全是黑暗**——像在洞穴里举灯探索,走到哪照亮到哪,只有移动角色才能继续看见。这是视野迷雾。 - -「开图开一大片」是另一个旋钮:开局白开一大片地(免费、计入清图进度、封锁格无资源),要不要少开点。两个旋钮天然配套——迷雾之下,白开的大片地你也看不见。 - -### 1. 现状事实(全部复核过) - -| # | 事实 | 依据 | -|---|---|---| -| 1 | 棋盘无视野迷雾机制:格态只有已开/未开两态(雾格 2026-09-15 整体退役);**渲染上整张板恒可见**——砖面、装饰、全部已开格的数字不分区内外 | `design/gdd/systems/排雷循环/排雷玩法.md` v0.2 版本行及格态规则 | -| 2 | 未开格类型微光:**英雄周围 8 格内的未开格显示资源类型微光**,随角色移动动态亮灭(2026-09-30 用户裁决口径;概念正主已落 `HUD框架.md`「未开格类型微光」节);只表达类型、不泄雷安;实装状态=呈现契约已定稿(样张 v2 冻结五组色相)、**游戏内待实施批**(呈现层仅接触带微光在跑) | `design/gdd/systems/表现与支撑/HUD框架.md`「未开格类型微光」节;art-bible §4.2 | -| 3 | 初始展开 = 装板期免费翻开出生 3×3 及连通开阔地:免费、计入清图进度、**封锁格恒无格面资源**、装板只发生一次;结构前提校验含「初始展开没有大到直接吞掉全图」;10×10 板均值约 66.5 格(全板占比 48–67% 历史实测) | `排雷玩法.md`「开局初始展开」节;active.md 台账 122 口径 | -| 4 | 移动免费:点任何已开格,小人沿已探明区一次走到位,不花行动点——「走过去看」的成本是一次点击,不是资源 | `排雷玩法.md`「挖、插旗、移动」节 | -| 5 | 先例警示:探宝罗盘(预读 3×3 未开格奖励身份)2026-09-29 退役,理由=类型微光覆盖预读价值(3×3 与英雄周边 8 格同区域)——**该先例与微光正确口径自洽** | 06-待办清单「探宝罗盘效果重定」收口行;`aux_items.tres` loot_compass 行 `retired: true` | -| 6 | 魔法提灯只在美术侧:主角立绘提灯元素;「提灯点亮」呈现解禁候选挂「资产升档重产批」随迭代 9 卡⑤整屏样张闸重议;玩法侧零登记 | 06-待办清单「资产升档重产批」条 | -| 7 | 道具载体现成六行(aux_items.tres):显影尘(deferred)、工兵令、探宝罗盘(retired)、**探巢摆钟(雷位揭示 3×3)**、**地穴全图卷(board_wide 信息位,deferred)**、**爆破工兵包(雷位揭示 3×3 + 行动点)**——「雷在哪」已有两个在售道具,「全板信息」有一个封存位 | `game/data/tables/aux_items.tres` 六行(2026-09-30 复核) | -| 8 | 美术语言已有「灯光边界」世界观:未开格=墙、已开格=挖出的空间、接触带微光=空间的灯光边界——视野迷雾与既有美术叙事同向 | art-bible §2.1、§3.2、§4.2 蓝条 | - -### 2. 备选案全表 - -#### 案甲:视野迷雾(试玩反馈原案) - -机制描述:以角色为中心的菱形可见区;界外一切(含已开格)呈迷雾/黑暗;移动角色逐步照亮。**纯呈现层机制**——游戏数据(已开格、数字真值、清图判定、微光规则)零改动,迷雾只改「画多少」。 - -本案内嵌三个设计决策(子项,不是独立案): - -| 子项 | 选项 | 影响 | -|---|---|---| -| 已开格政策 | a 全黑(要看走回去)/ b 暗淡记忆态(灰显可见)/ c 照常亮只黑未开区 | 决定迷雾吃掉多少推理燃料——远处的**数字**是规划素材;a 是探索感最强、记忆税最重的一档,b 是多数洞穴探索游戏的折中 | -| 菱形半径 | 与微光环(8 格)同圈 / 更大 | 同圈=灯光边界统一;更大=圈外砖可见但不亮类型 | -| 配套收窄 | 是否连初始展开一并收(见 §3) | 迷雾之下白开的地看不见,收窄才让「开图开大片」的体感真正消失 | - -冲击面:**棋盘生成零改动**(纯呈现遮罩);**微光呈现零政策翻转**(本就只在 8 格内亮——迷雾只是把「圈外不亮」扩展成「圈外全黑」,两者天然同边界、零概念冲突);art-bible 需**新增**迷雾渲染规格(黑暗语义、明度分层下的暗区档)——归 art-bible 越权审查后的修订批,属增量不属翻案;**读数机采面预计近中性**(移动免费,策略可达性不变;模拟策略不消费渲染)——验证靠真人试玩。 - -#### 案乙:迷雾 + 收窄初始展开(配套案) - -案甲之上把「白开大片」一并收掉。理由:只上迷雾不收窄,初始展开仍在装板期把大片地开掉(进度被消耗、资源位被封冻),只是玩家看不见——体感问题只解决一半。收窄方案见 §3。实施窗口与读数重测义务随 §3。 - -#### 案丙:维持现状 - -不开迷雾、不收窄。试玩反馈的回答=「开图开大片是计算如此(初始展开=出生 3×3+连通开阔地,含防吞全图的结构前提),不是缺陷;看不看得到是另一道题」。零改动、零读数影响。 - -### 3. 初始展开区收窄方案(若走收窄,无论挂在案乙还是单独走) - -**收窄到什么量级(四档候选)**: - -| 档 | 口径 | 量级感(10×10 为例) | 代价 | -|---|---|---|---| -| 窄① | 只开出生 3×3,不泛洪开阔地 | 9 格(约 9%) | 开局数字极少、开局必猜风险最高;「初始展开恰等」验收线改动最大 | -| 窄② | 泛洪上限 K 格(K=20 / 30 两档候选,触顶即截断) | 20–30%(现状 66.5%) | 截断处半开的走廊观感生硬;K 是新参数 | -| 窄③ | 生成侧密度法:抬升出生区外围雷密度,开阔地自然变小 | 由生成参数涌现,形态自然 | 动棋盘生成参数与可推理性保证的联合检算;P(安全) 分布漂移 | -| 窄④ | 维持现状 | 66.5% | 零 | - -**按板形还是固定值**:推荐按板形参数化——board_gen.tres 每行(板形各异:10×10 小板 / 12×12 Boss / 13×13、14×14 矿城)带自己的展开口径(格数或占比),不做全局一刀切。窄①②是排雷玩法「初始展开恰等」验收线的修订(GDD 修订流程);窄③是棋盘生成参数批。 - -**对清图奖励完成度的影响(必读的连锁账)**:清图=全部安全格开完。初始展开每收窄 1 格,玩家就要实挖 1 格上下(每格 1 行动点);以 10×10 从 66.5 收到 30 计,每板约多挖 36 格 ≈ 多 4–5 轮(现行每轮行动点=8,`action_economy.tres` Package B 首版投值)——**每板战斗拉长三到五成,敌方输出轮次同比增多**。这是包络内的真实加压:关级恒等式(奖励输出占比带)与清图支配性条款须同批重推。对冲面:封锁格同步变少,可挖格资源总量上升(每个非封锁格独立摇类型身份),玩家总收益与总时长同涨——当量对账两头一起算。**全部读数基线作废重测**,与当前 Alpha 读数冻结期正面冲突——实施窗口只能归 Alpha 差异化批或其后,这也是把收窄与「雷格与安全格的资源分布差异化(Alpha 批)」合并立项的天然理由。 - -### 4. 魔法提灯定位 - -迷雾之下提灯生态位直接成立:**灯=视野资源**(玩家原话「可以看到所有的棋盘视野,或者视野范围变大」就是它)。三形态: - -| 形态 | 机制 | 价值锚 | 相容性 | -|---|---|---|---| -| 灯甲·视野扩大(推荐) | 光照圈外扩 +2 格(flat 整数档,键候选 `lantern_radius_bonus`) | 多看远处的已开格数字与板面布局,规划余量变大 | 与微光/探巢摆钟信息面不重叠 | -| 灯乙·全图视野 | 持有即全板可见 | 一步到顶 | **撞地穴全图卷**(board_wide 信息位,deferred 随 Alpha 重定)——两个都留必须分语义,分工归该批一并裁 | -| 灯丙·临时点亮 | 消耗品,点亮指定区域一轮 | 一次性侦察 | **撞显影尘**(info 位,deferred 随 Alpha 重定)——分工归同一批 | - -**微光耦合(本案新增的待拍点)**:视野扩大后,8 格类型微光跟不跟着扩?两种读法都通——微光锚定「可挖域」(不跟扩:灯只照亮砖面与数字,类型先读永远只贴身)或锚定「可见范围」(跟扩:灯下远处未开格也亮类型,提灯变成「远处的类型侦察」)。后者信息增量更大、也更接近原罗盘的生态位,需显式裁决。 - -**载体建议**:aux_items 新行(`dimension_tags` 走 `["info","plan"]` 词表;`effect_kinds` 需新枚举一词如 `vision_expand`)。**登记时机=随显影尘/地穴全图卷的 Alpha 重定批一并**(信息 family 一次定清)。呈现面(提灯点亮画面)已挂「资产升档重产批」随迭代 9 卡⑤样张闸,实装排期两边对齐。 - -**UI 两铁律回答**:迷雾不新增任何信息面板——只改「画多少格」;提灯持有态在战斗屏 C 区道具槽既有位呈现,不重复展示。 - -### 5. 信息经济学分析 - -- **推理价值**:迷雾把「一眼看全图数字」改成「逐区探索」——全局规划(远处哪片数字好)降级,局部推理(数字恒真的邻接 deduction)原样保留。配合**移动免费**,缺的信息一次点击就能补——所以迷雾的成本货币是**注意力与节奏**,不是行动点。这是本案最重要的定性:它是体感/节奏机制,不是经济机制。 -- **挫败感**:风险集中在已开格政策——取「全黑」则玩家必须记路或走回头路(记忆税);「暗淡记忆态」是常见折中。迷雾本身不制造必猜点(可推理性由棋盘生成参数保证,本案不动它们)。 -- **节奏**:迷雾不改挖掘次数,改的是「看」的方式;真正的节奏旋钮是收窄初始展开(§3 的连锁账:每收 1 格 ≈ +1/8 轮,AP=8)。若两案配套,体感变化叠加——试玩另有一条「轮间没有结算过程」的反馈在办,板子拉长会放大该不满,两案实施时互相知会。 - -**验收读数建议**(标注采集面): - -| 读数 | 采集面 | 看什么 | -|---|---|---| -| 每板实际挖掘数 / 每板轮数 / 清图完成度 | 机采 | 收窄档的节奏与支配性代价(条款⑤) | -| 通关率带、每板正向兑付总量 | 机采 | 收窄的包络闭合检查(恒等式带) | -| 已探索区重复访问率(同格二次进入次数) | 机采(可埋点) | 已开格政策的记忆税定量——「全黑」档的直接代价读数 | -| 微光误读率(圈内抽测口径不变) | 机采+样张抽检 | 无障碍底线(微光口径不变,本项目不受迷雾影响) | -| 探索体感/迷雾外信息需求问卷、走回头路主观负担 | **仅真人试玩** | 迷雾的核心验证面(机采近中性) | -| 提灯感知价值 | **仅真人试玩** | 灯甲/乙/丙取舍依据 | - -### 6. 题一待拍板点 - -1. 是否引入视野迷雾(案甲)。 -2. 已开格政策三选:全黑 / 暗淡记忆态 / 照常亮只黑未开区。 -3. 菱形半径口径:与微光环(8 格)同圈,还是更大(几格)。 -4. 是否配套收窄初始展开(案乙)+ §3 四档量级与按板形参数 vs 全局。 -5. 魔法提灯是否立项、形态(灯甲/乙/丙)、**微光是否随视野扩**(锚=可挖域 or 可见范围)、载体时机(建议随 Alpha 信息件重定批)。 -6. art-bible 迷雾渲染规格的修订窗口(与越权审查批衔接:先审后改)。 - ---- - -## 题二:标雷激励机制 - -### 0. 先用白话把图景讲清 - -现在插一面旗花 1 行动点(和挖一格同价)。旗插对了(旗下真是雷):轮末结算时那颗雷被「控制」,兑付它身上摇到的资源类型的一份正向收益(比如增伤、护甲);旗插错了(旗下是安全格):兑付一份负向。另外标中金币雷格还有 GP 入账。听起来有价值,但真玩起来玩家不标——原因是一笔很简单的账:**挖安全格=增益+清图进度(清图奖励是战斗的大头),插旗=只有兑付、没有进度**。行动点永远不够花,全砸开格是理性的。试玩反馈问的正是:能不能给标雷造一个「值得花行动点」的独立理由。 - -有个现成的坑要先指出来:2026-09-19 充能退役批把「标雷攒充能换伤害」这条路整个拆了(三分量伤害模型废弃,主角攻击=唯一基础分量)——任何「标雷充能」形态的方案都是在已退役的轴上盖楼,本题一律不再列。另外「倍率伤害」的原始设想按数值纪律平移:小整数加法核下没有倍率,只有 flat 点数档,下文所有「满的/倍率的」都翻译成 flat 加值。 - -### 1. 现状事实(全部复核过) - -| # | 事实 | 依据 | -|---|---|---| -| 1 | 插旗=标准价 1 行动点(`flag_place_ap_cost=1`,域 [0,8];现行表值:每轮 AP=8、挖=1、刷新门槛=8、每轮刷新≤2 次) | `game/data/tables/action_economy.tres`(2026-09-30 复核;AP=8 为 Package B 首版投值) | -| 2 | 插旗不可逆(2026-09-19 批):无拔旗动作,纠错=直接挖开该格;插雷格再挖开=只受挖雷一层惩罚、标中不发 | `排雷玩法.md` v0.5;`battle_orchestrator.gd:297-305` 四情况注 | -| 3 | 旗判定=每轮轮末逐旗上报;兑付五条硬约束:一次性/当轮结算/资格认雷格实例/不逐轮重复/换图重置——「认雷不认旗」;标中=该雷格资源正向兑付(每雷实例一次),标空=安全格资源负向(每安全格实例一次) | `行动经济.md`「标中旗的兑付约束」;`排雷玩法.md` 旗生命周期节;`battle_orchestrator.gd:69,265-266,524-547`(`_flag_consumed` 以雷格实例为键) | -| 4 | 标中金币雷格=GP 入账;挖开金币安全格亦然 | `battle_orchestrator.gd:442,455`(`_apply_gp_row`) | -| 5 | 锚原则(行动经济条款②):**标中旗的减益档位必须严格高于最低档安全格增益,否则没人愿意插旗**;条款①单一当量(新收益源须入同一对照表);条款⑤清图支配性 | `行动经济.md`「收益直兑与五条经济契约」 | -| 6 | 挖雷负向:极性字典按雷格类型取负向行,直伤只有三行 4/5/5 provisional(heal 反噬 4 / pierce 穿刺陷阱 5 / magic 魔法反噬 5),其余六型零直伤(暴走/失衡/警觉=敌 AC+1/乏力/AP−1/破财);**数值挂起归用户自行探讨,本提案零触碰** | 06-待办清单「雷格负向当量抬升」状态行(2026-09-29 迭代 8 出口闸裁决) | -| 7 | 削弱系现状:同名状态叠层=续时刷新(层数恒 1);sapped(乏力)=hero_offense −25%(percent,既有轴);主角攻击=唯一基础伤害分量(充能退役后) | `增益状态.md`;`battle_orchestrator.gd:614-616` 注 | -| 8 | 任何伤害取值域 [1,+∞)、全来源最小 1 | 伤害下限全来源批(2026-09-20 落籍) | -| 9 | GP/钥石已迁出战斗屏(战斗内 GP 兑付无即时展示位) | 06-待办清单「GP/钥石迁出战斗屏后的展示面接线」 | -| 10 | 战斗核心层零 await 结算契约:玩家动作经批次结算入口、按固定语义序仲裁,轮末兑现 | `排雷玩法.md` 批次仲裁节 | - -### 2. 备选案全表(含淘汰案)与推荐序 - -#### 案B·标中旗追加 flat 直伤——「工兵爆破」(推荐★首选) - -机制描述:旗判定标中时,在既有兑付(该雷格资源正向)之外**追加一笔 flat 直伤 +1**(显示名候选「工兵爆破」,英文键候选 `flag_detonation`),全体存活敌人各一笔(沿 spark_aoe 全体惯例);+1/+2 两档候选留拍板。每雷实例一次(`_flag_consumed` 现成),不逐轮重复,零新状态、零新窗口、零新随机。 - -- **当量代价**:一张 10×10 板雷约 8–12 颗,全标中=全场多打 8–12 点 flat;跨一场战斗(3–4 板)约 20–40 点——对血量 14–50+ 的敌人阶梯是有感的添头,不是决胜刀。新伤害源按条款①入同一对照表。 -- **与锚原则相容性**:同向加强——标中旗总兑付(资源正向+工兵直伤)仍严格高于最低档安全格增益,且差距拉大。金币雷格=GP+直伤双份,当量对账时计入。 -- **与「雷格=策略纹理」相容性**:几案中最好。它把标雷变成一条干净的**行动点兑换管道**:挖安全格=行动点换增益+进度,标中雷=行动点换直伤——两条管道并行,玩家在「确定能标中」时才换,推理好的人换得更多。插旗不可逆+标空负向是现成的惩罚秤:信心不足乱标=行动点沉没+负向兑付,喷旗自然被抑制,不需要新护栏。 -- **冻结面**:不碰雷安同池、不碰插旗不可逆、不碰 4/5/5、不碰零 await 契约(兑付在轮末既有单据管线内)。文档层须把「标中旗兑付=资源正向」改写为「资源正向+工兵直伤」(战斗结算.md + 行动经济条款②注记),属文档修订非结构冻结。 -- **UI 两铁律**:直伤走既有伤害数字流+标中旗高光(双落高光已在),零新信息面。 -- **实施窗口建议**:表行+结算钩子的小批即可实施;因标旗率上升会轻微扰动轮数读数,建议随下一个平衡窗口同批落,避开 Alpha 读数冻结。 - -#### 案A·状态联动窗口(试玩反馈原案,敌方技能形态)——次选,内容批窗口 - -机制描述:新敌方状态词「龟缩」(显示名候选:龟缩/岩壳;英文键候选 `hardened`):特定怪物施放,自身获得持续 2 记号的龟缩——期间**主角攻击伤害 −2 flat**(伤害下限 1 兜底;只削攻击分量,**格子兑付不动**),期间**标中旗追加直伤 +3 flat**(比常驻档高,即「满的甚至倍率」的加法核翻译)。 - -- **成立/不成立判断**:**作为特定怪物的内容技能=成立;作为全局常驻激励=不成立。** 依据:① 全局化=把「开格贬值」常态化,系统性压低主循环(挖格)的收益线,惩罚结构变常驻杠杆,违背「雷格=策略纹理」立场,也压锚原则的地板;作为个别怪的插曲技能,窗口是节奏变奏不是税,立场无恙。② 触发源归敌方技能池(第四类型妨害技有先例:sapped 首发于第二关 Boss 卓尔);变异格触发作为备选源会叠加两层随机(板随机×变异随机),逐行归因变糊,列为备选不推荐。③ 现行 sapped 已占「削主角输出」词位(−25% percent),窗口衰减若复用 sapped 需破「同名叠层=刷新、层数恒 1」——**不复用,新词新行**,各自独立计时,加法核下两笔衰减并存无冲突。 -- **子档**:「标中即碎」(标中解除龟缩)反馈爽点强、天然限次(每只怪一次),但引入新触发类型(状态被动作打破)=增益状态.md 修订;「不解除」=零新触发类型(纯定时状态+结算期查窗口),持续压力但因果不如前者直观。推荐前者,修订代价已标注。 -- **冻结面**:不碰三大结构面;新技能词走敌人技能池既有修订流程;数值新增(窗口当量改变战斗期望)→ **后 Alpha 内容批+平衡批**,当前冻结期不动。 - -#### 案D·标中旗返行动点——条件备选(第三顺位) - -机制描述:标中旗→下轮行动点 +1(复用 `queue_ap_delta` 修正队列,现成机制)。 -- **为什么不是「当场返还」**:插旗瞬间退款=系统直接告诉玩家「这格是雷」,泄露雷安身份,违反「微光不泄雷安」同一呈现契约——当场返还这条路封死;轮末判定后入下轮队列不泄露(判定时标中已公开)。 -- **当量代价**:标中旗净价从 1 行动点变 0——强激励,且重开「首轮全标旗」的赌徒节拍(2026-09-16 AP 压速批刚杀过一轮标旗 rush),包络敏感度是几案最高。 -- **相容性**:锚原则同向;纹理立场中性(换一种行动点管道)。 -- **冻结面**:零新机制(队列现成);窗口=后 Alpha 平衡批,且建议只在案B 落地后读数仍偏低时再议,不并行叠两套激励。 - -#### 案C·标中雷计入清图进度 / 清图奖励加档——留档,不推荐 - -- 强形态(清图改判为「安全格全开+全雷标中」):把激励做成强制税——不标雷就清不了图,直接违背「激励而非强制」的反馈初衷,且动排雷玩法清图判定(冻结设计:清图=安全格全部开完)=GDD 修订流程。淘汰。 -- 弱形态(C′:清图奖励按标中数加 flat 档):不强制但反馈时点后置到清图瞬间——玩家标旗当下没有体感,激励信号最弱的一档,与案B 同质而反馈更差。留档。 - -#### 案E·纯行动经济位(降旗价/零价)——淘汰 - -旗价是「标不标」这杆秤的秤砣:降价=推理价值稀释,零价=喷旗噪声(每格都插一面当笔记用)。「便宜」不等于「值得」,方向就错了。淘汰。 - -#### 案F·标中雷充能魔法道具——淘汰 - -充能轴 2026-09-19 整体退役(三分量伤害模型废弃),轴已死,无楼可盖。若未来魔法道具内容批要给标雷找联动,那是新轴立项题,不在本题范围。淘汰留痕。 - -#### 案G·标中雷给 GP——淘汰 - -金币雷格已有此兑付(认雷格实例);泛化到全部雷=把元进度货币塞进战斗微决策,且 GP 已迁出战斗屏——战斗内兑付没有即时展示位,玩家标中了也看不见(UI 铁律「就近原则」破坏)。淘汰。 - -#### 案H·标中雷联动 C 区本关强化列表——留档 - -战斗屏 C 区强化列表接线本身还是欠账(06「战斗屏 C 区预留区接线」条),欠账上叠新机制=归因灾难。留档待 C 区接线落籍后再议。 - -**推荐序**:**案B(首选,纯增量小批)→ 案A(次选,后 Alpha 内容批,特定怪技能)→ 案D(条件备选,B 后读数仍低再议)→ 案C′/案H(留档)→ 案C 强形态/案E/案F/案G(淘汰,依据如上)**。B 与 A 不互斥:B 是常驻地基,A 是地基上的内容变奏,可分批先后落。 - -### 3. 验收读数建议 - -| 读数 | 采集面 | 看什么 | -|---|---|---| -| 标旗数/板、标中率、标空率 | 机采 | 激励是否改变行为(现状基线极低,正是本题动机) | -| AP 剩余率/轮 | 机采 | 激励有效的最直接证据:行动点从「全砸开格」变成有第二去处 | -| 通关率带、挖掘风险不等式对账 | 机采 | 案B/A 的包络闭合检查(直伤总量与窗口当量入恒等式) | -| 弃图率 | 机采 | 与清图支配性联动检查 | -| 「值得标吗」体感问卷、案A 窗口可读性(知道为什么开格不疼了)、标中直伤的反馈感知 | **仅真人试玩** | 激励的「被感知」面只有真人能答 | - -### 4. 题二待拍板点 - -1. 主案选型(推荐序见上;B 单独走 / B+A 分批 / 只 A / 全部不动)。 -2. 若取案B:直伤档位(+1 / +2)与作用面(全体存活敌【推荐,沿 spark_aoe 惯例】/ 仅最近敌)。 -3. 若取案A:触发源(敌方技能【推荐】/ 变异格)、子档(标中即碎【推荐】/ 不解除)、施放怪种与窗口当量(归内容批投值)。 -4. 案D 是否保留为条件备选(建议保留,B 落地后凭读数议)。 -5. 实施窗口追认:案B 建议随下一个平衡窗口;案A/D 后 Alpha——均避让当前读数冻结期。 - ---- - -## 附:两题共享的边界声明 - -- 本提案未改任何游戏代码与数据表(.tres);写入面=本文件 + 06-待办清单条目 + HUD框架「未开格类型微光」概念节(2026-09-30 概念收口批落位,见其版本历史 v0.12)。 -- 雷罚直伤三行 4/5/5 维持 provisional 原样;「雷格与安全格的资源分布差异化」维持 Alpha 批归属,本提案不提前动它的任何参数。 -- 全部新数值(菱形半径、收窄档、flat 直伤档、窗口当量)为候选档位非投值;任何案的实装都须经对应批的计划书投值+读数闭环。 -- v1→v2 修订记录:题一全节按微光正确口径(英雄周围 8 格内未开格显示,2026-09-30 用户裁决)重写;v1 的案甲1(微光收进灯下)删除——它描述的就是现状;「微光常显与视野限制互斥」结论作废——它建立在错误前提上;题二零改动。 diff --git a/design/research/proposal-reward-cell-differentiation-2026-09-17.md b/design/research/proposal-reward-cell-differentiation-2026-09-17.md deleted file mode 100644 index 9b1a59ea..00000000 --- a/design/research/proposal-reward-cell-differentiation-2026-09-17.md +++ /dev/null @@ -1,331 +0,0 @@ -# 调研:地图战斗资源·雷安同池现状与差异化/整体权重调整空间 - -> **性质**:研究报告——只读取证,不修改任何文件,不下设计结论。 -> **日期**:2026-09-17 -> **上游触发**:用户「棋盘格战斗资源拟重新设计」关注(06-待办清单既有语境)+ 行动经济表注记「保留标中旗正向兑付——雷格/安全格概率差异化设计的前提」(`data/tables/action_economy.tres:18-19`)。 -> **纪律**:全文禁止「应该/建议/我推荐」;只呈现「现状 → 改这条会动什么 → 风险」链与「若决策方向是 X,则路径 Y」的条件映射。所有事实断言引用 §9 附录所列文件 + 行号;推演值(计算所得)显式标注〔推演〕。 - ---- - -## 1. 调研目标与方法 - -**目标**:盘点「地图战斗资源」系统的雷安同池现状(A 层)、按格型差异化的候选路径空间(B 层)、整体权重调整空间(C 层)、外部同类做法(D 层),为后续设计决策提供事实与权衡依据。 - -**方法**(四层): - -| 层 | 手段 | 产出 | -|---|---|---| -| 事实层 | 逐文件读取 §9 清单全部文件 | 第 2、3 章现状盘点 | -| 关系层 | 全仓关键词检索:`雷安同池`(15 处,排除 archive)、`类型频次合计`、`_rollable_rows`、`roll_board`、`equivalence_supply` | 第 2 章 A3 证据链 | -| 推演层 | 权重敏感性计算、路径改动面推导 | 第 4、5 章(推演值标〔推演〕) | -| 对照层 | 外部案例联网核验两例(Peglin / Let's! Revolution!),其余为知识盘点并标注 | 第 6 章 | - -**边界**:本报告不触 v0.4/v0.6 结构冻结项的任何现行文件;第 7 章只列冻结项当前状态。文档/代码如有不一致,只并列呈现、方向归用户拍板(先例:三种方向都出现过,不默认代码为准)。 - ---- - -## 2. 现状盘点·结构与通道(A1/A2/A3) - -### 2.1 A1:reward 表 11 行逐行行值 - -事实源 = `game/data/tables/reward.tres`(行号指该文件): - -| # | reward_id | cell_type | polarity | power | power_min/max | weight | stacks | effect_id | display_name | pool_tag | tier | -|---|---|---|---|---|---|---|---|---|---|---|---| -| 1 | attack_up | attack | positive | 0 | — | 20 | 1(缺省) | attack_up | 增伤 | cell | 2 | -| 2 | ac_up | defense | positive | 0 | — | 16 | 1(缺省) | ac_up | 护甲强化 | cell | 2 | -| 3 | spark_aoe | blast | positive | 1 | — | 16 | 1(缺省) | —(空) | 爆裂粉尘 | cell | 1 | -| 4 | heal_minor | heal | positive | 1 | [1,1] | 3 | 1(缺省) | —(空) | 急救敷料 | cell | 1 | -| 5 | weaken | weaken | positive | 0 | — | 12 | 1(缺省) | weaken | 削弱 | cell | 1 | -| 6 | enrage | attack | negative | 0 | — | 0 | 1(缺省) | enrage | 敌方暴走 | cell | 2 | -| 7 | off_guard | defense | negative | 0 | — | 0 | 1(缺省) | off_guard | 我方失衡 | cell | 2 | -| 8 | heal_backlash | heal | negative | 1 | — | 0 | 1(缺省) | —(空) | 反噬震荡 | cell | 1 | -| 9 | ambush_double | blast | negative | 0 | — | 0 | **2** | —(空) | 敌方伏击 | cell | 1 | -| 10 | sapped | weaken | negative | 0 | — | 0 | 1(缺省) | sapped | 我方乏力 | cell | 1 | -| 11 | clear_blast | blast | positive | 13 | [8,18] | 1 | 1(缺省) | —(空) | 清障炸药 | clear_default | 2 | - -- 行 1–5 = 正向五行(#8-16、18-26、28-36、38-48、50-58);行 6–10 = 负向五行(#60-68、70-78、80-88、90-99、101-109);行 11 = 清图槽(#111-121)。 -- `stacks` 仅 ambush_double 显式携带 2(#96);其余行无 `stacks` 键,缺省 1(schema `data/schemas/reward_table.gd:57`)。 -- 区间字段仅 heal_minor [1,1](#44-45,定值占位——注释明言「区间字段保留 min=max=1 占位,量级再调时恢复区间结构」,`reward.tres:141-142`)与 clear_blast [8,18](#117-118)。 -- 区间行 schema 约束:必成对、percent 行禁止、`power = (min+max)/2` 中点锚(`reward_table.gd:70-84`)。 - -### 2.2 A2:类型频次合计 67 的来源分解 - -类型频次 = cell 池正向行 weight 合计(`reward.tres:126,145`;GDD `design/gdd/systems/战斗循环/地图战斗资源.md:72,76`): - -| 行 | weight | 占比〔推演〕 | -|---|---|---| -| attack_up(attack) | 20 | 29.9% | -| ac_up(defense) | 16 | 23.9% | -| spark_aoe(blast) | 16 | 23.9% | -| heal_minor(heal) | 3 | 4.5% | -| weaken(weaken) | 12 | 17.9% | -| **合计** | **67** | 100% | - -- 历史:v0.6 批时合计 79(heal 15);v0.7 数值压缩批 heal 15→3,合计降至 67(`地图战斗资源.md:232-233`;`reward.tres:140-145`)。 -- clear_blast weight=1 **不入**类型频次:`_rollable_rows()` 只收 `pool_tag == "cell"`(`core/reward_economy.gd:211`),清图槽走独立 `_pool_rows("clear_default")`(`reward_economy.gd:63`)。 -- 频次涌现机制:每非封锁格独立 `weighted_pick`(`reward_economy.gd:66-67`),大数频率收敛于行权重比例;reward_expectation 实测即验证此涌现(`smoke/reward_expectation.gd:58-70`)。 - -### 2.3 A3:雷安同池证据链(精确行号) - -三处声明 + 两处执行 + 测试断言,全链如下: - -**声明① 代码头注释**:`core/reward_economy.gd:6`——「安全格与雷格一视同仁(同一类型池、同一权重分布——雷安同池);封锁格不入摇号清单」。 - -**声明② 数据注释段**:`data/tables/reward.tres:125`——「安全格与雷格同池同分布(雷安同池)」;连带语义在 `reward.tres:143-144`——「heal 权重下调同比例降低踩中 heal 型雷(反噬)的频率」(雷安同池的自动同侧效应,标注「结构冻结,自动同侧」)。 - -**声明③ GDD**:`design/gdd/systems/战斗循环/地图战斗资源.md:61`(摇号纪律表「雷安同池」行,含「分布按格型差异化若未来需要,走本文修订」的预留出口)、`:207`(结构冻结七项含雷安同池)、`:212`(验收标准「任何'按格型差异化分配'的分支不存在」)。 - -**执行① 摇号实现**:`reward_economy.gd` `roll_board`(36-81 行)——`_rollable_rows()`(207-213 行,211 行过滤 `pool_tag=cell & polarity=positive & weight>0`,**无任何格型参数**)产出的单一行集对全部 eligible 格逐一 `weighted_pick`(65-67 行,64 行行内注释「① 身份批:每非封锁格恰一类型身份(雷安同池——同一行集同一权重分布)」)。 - -**执行② 资格清单与揭示通道**: -- 资格清单构建:`core/battle_orchestrator.gd:140-151`——eligible = 全部安全格 + 全部雷格、各自剔除 R₀(144-150 行),安全格与雷格进**同一个数组**(140 行注释「资格格 = 全部非封锁格(安全格 + 雷格,雷安同池)」)。 -- 揭示通道:`core/minesweeper_rules.gd` `cell_revealed` 信号(10 行);`_do_dig`(236-274 行)内雷格 emit `resource: true`(262-265 行)、安全格 emit `resource: true`(268-271 行),资格注释在 258-259 行(「chain/dig 恒 true——安全格与雷格一视同仁(雷格亦携带,负向兑付归 战斗结算 极性路由)」);initial 通道(封锁格)恒 `resource: false`(100-103 行)。 - -**测试断言**:`smoke/smoke_all.gd:1347`(chain/dig 揭示事件 resource 恒 true——「雷安同池」命名断言)、`:1349`(雷格揭示携带资源 ≥1)、`:1365-1367`(封锁格 R₀ 身份查询 = null;未开雷格身份恒可查);分布涌现实测 = `smoke/reward_expectation.gd:58-72`。 - -**同池的运行时含义**:格子的资源类型身份在 install 期摇定(雷格同样携带身份);格子的**极性不在资源内**,由「动作 × 格型」矩阵在结算期决定(开安全格/标中雷 = positive,开雷格/标错安全格 = negative)——路由执行 = `battle_orchestrator.gd:253-260`(`_grant_routed` → `polarity_row`),字典查询面 = `reward_economy.gd:165-172`。**因此「雷格 vs 安全格」的差异通道在现行架构里 = 极性通道,而非类型分布通道。** - ---- - -## 3. 现状盘点·字典与同步状态(A4/A5/A6) - -### 3.1 A4:五型 × 极性字典完整内容(10 行兑付语义) - -字典完整性为加载前提:五型 × 正负缺任一行即加载致命(`reward_table.gd:92-96`;运行时缺行 `_fatal`:`reward_economy.gd:171`)。兑付分派:effect_id 非空 = percent 行进增益状态容器;空 = flat 行当场兑付(`battle_orchestrator.gd:264-269`)。幅度行值源 = `data/tables/status_effects.tres`(九行)。 - -| 类型 | 正向兑付语义(格面池行 → 效果行) | 负向兑付语义(字典行 → 效果行) | -|---|---|---| -| attack | attack_up → 增益状态 attack_up:+50 percent、hero_offense 池、dur 1、max 2(`status_effects.tres:8-15`) | enrage → 敌方暴走:+25 percent、enemy_output 池、max 16(`status_effects.tres:44-51`) | -| defense | ac_up → 护甲强化:+1 ac/层 ×2 层,**AC 掷点阈值轴、不入任何池**(`status_effects.tres:17-24`;`design/gdd/systems/战斗循环/增益状态.md:132,154`) | off_guard → 我方失衡:+25 percent、hero_defense 池(承伤加深)、max 16(`status_effects.tres:53-60`) | -| heal | heal_minor → flat 治疗定值 1(满血零兑付照旧,`地图战斗资源.md:112`) | heal_backlash → **主角直伤 1,不经增益状态**(`reward.tres:80-88`;`地图战斗资源.md:112`;量级锚待办见 `06-待办清单.md:329-335`) | -| blast | spark_aoe → flat 群伤 1,全体存活敌各一笔 | ambush_double → 伏击 +2 层(stacks=2,`reward.tres:96`),受敌人系统单轮伏击上限 advantage_per_round_cap 护栏、溢出记「溢出未生效」行(`敌人系统.md:254`;`战斗结算.md:142`;冒烟直验 `smoke_all.gd:1309-1321`) | -| weaken | weaken → 削弱:−65 percent、enemy_output 池(`status_effects.tres:35-42`) | sapped → 我方乏力:−25 percent、hero_offense 池(`status_effects.tres:62-69`;`增益状态.md:159,219`) | - -负向行为纯字典不消费权重(`reward_economy.gd:208`);负向恒即时、无库存语义(`地图战斗资源.md:122-124`)。四池对称口径:敌打主角 = hero_defense × enemy_output,主角打敌 = hero_offense × enemy_defense(`增益状态.md:163`)。 - -### 3.2 A5:当前测试在跑的分布假设与等价性断言 - -| 工具 | 与奖励分布的关系 | 具体断言/口径 | -|---|---|---| -| `smoke/reward_expectation.gd` | **直接**:类型频次涌现实测(N=200 板/深度,9 行) | ① 类型频次应涌现自正向行权重——**但头注释(4 行)与尾注(71-72 行)仍写「heal 15 · 合计 79 · heal 19.0%」旧基准(v0.7 压缩批未同步,见 3.3)**;② 封锁格零泄漏 = R₀ 格 `is_mapped` 恒 false(52-57 行) | -| `smoke/smoke_all.gd` | **直接**:资源资格面 + 负向字典 | ① chain/dig 事件 resource 恒 true(1347 行)② initial 恒 false(1348 行)③ 雷格携带资源 ≥1(1349 行)④ R₀ 查询 null / 未开雷格可查(1365-1367 行)⑤ 负向五型逐型直验(1244-1321 行)——**1255-1256 行注记:heal 权重 15→3 后单板五型齐备不再必然(无 heal 板概率 ≈1/3),改 6 板扫描取第一块齐备板** | -| `smoke/monte_carlo.gd` | 间接消费 | 无同池断言;统计攻防 buff 授予数(28、64 行:attack_up/ac_up 计数)与每轮承伤 | -| `smoke/level_monte_carlo.gd` | 间接消费 | 「踩雷/战 = 每战斗负向兑付触发期望」(106 行口径);完美档零踩雷构造断言(107-109 行);F4 承伤带 / 通关率带读数出口 | -| `smoke/experiment_density.gd` | **零耦合** | FakeDB 只供 `resolve_board_gen`/`status_effect_row`(59-64 行)——不消费 reward 表,密度实验与奖励分布无关 | -| `smoke/auto_player.gd` | 等价性载体 | 「等价性证明:smoke_all 同种子回放断言(步骤流逐行相同)在重构后保持全绿」(7 行)——确定性回放是全部奖励读数的前提 | - -**雷安同池等价性测试的现状归纳**:现无「安全格分布 == 雷格分布」的统计等价断言(如卡方检验);等价性以**结构断言**承载(同一行集、同一清单、resource 恒 true)+ **涌现实测**(类型频次不分格型统计)。若未来差异化落地,`reward_expectation.gd` 的频次统计(58-61 行按格聚合,不分公司 kind)需按格型拆列才可验证差异。 - -### 3.3 A6:registry 与 .tres 的同步状态(v0.7 指路化后) - -**结论:数值本体已单源化(.tres),但派生快照仍有三处需随批同步,且已发现两处漏网。** - -- registry `design/registry/entities.yaml:320`(reward_table.mvp_content):2026-09-17 数值压缩批「具体数值列(power/weight/power_min/power_max)**改指路存根**:现行行值读 `data/tables/reward.tres`」——但同段保留了「压缩后锚行快照」(spark_aoe power=1 / heal_minor [1,1] / clear_blast [8,18] 中点 13 / **类型频次合计 79→67**)。即现行形态 = **指路存根 + 锚行快照**混合:weight 再动时锚行快照即失同步,需按 doc-conventions §5① 双写失同步禁止条款随批更新(`docs/doc-conventions.md:68`)。 -- GDD 调参表已指路化:`地图战斗资源.md:193-203` 现行值列全部为「见 `data/tables/reward.tres` + registry mvp_content」存根,表格只锁字段语义与取值域(v0.7 双写失同步收口,`地图战斗资源.md:233`)。 -- **漏网实证①**:`smoke/reward_expectation.gd:4`(「heal 15 / weaken 12,合计 79」)与 `:71-72`(「heal 19.0%」等 79 基准百分比)——v0.7 压缩批只同步了 .tres/smoke_all/GDD/registry/06 清单,此文件注释未同步,现行实测输出与注释口径已不一致。 -- **漏网实证②**:`core/reward_economy.gd:184`(tier_min_buff 注释「attack_up/defense_up」——defense_up 已于 2026-09-16 换装为 ac_up,`status_effects.tres:97-99`)。功能不受影响(判据按 effect_id 查表 target_side,见 5.3),注释文本过期。 - ---- - -## 4. 差异化路径对比(B1–B5) - -**先行事实**:差异化在 GDD 侧已有预留出口——「分布按格型差异化若未来需要,走本文修订」(`地图战斗资源.md:61`);行动经济表注记已把「保留标中旗正向兑付」表述为「雷格/安全格概率差异化设计的前提」(`action_economy.tres:18-19`)。三条候选路径按「改动从表到逻辑递深」排列。 - -### 4.1 B1+B2+B3:三路径对比表 - -| 维度 | 路径甲:双池切分 | 路径乙:格型权重列 | 路径丙:修饰位摇后过滤 | -|---|---|---|---| -| **核心思路** | pool_tag 增值(`cell` / `mine_cell`),雷、安各持一套正向权重行集 | 同表每行增设可选列 `weight_mine`(缺省 = weight,向后兼容),摇号按格的雷/安身份选列 | 身份仍同池摇定;对雷格(或带变异标签的格)在身份批后追加一次重摇/替换 pass,修饰规则独立成表 | -| **schema 层变化** | `POOL_TAGS` 枚举增值 + `clear_` 预留拒绝逻辑并存(`reward_table.gd:15,43-47`);池空护栏拆为双池各 ≥1 活行(`reward_table.gd:97-99`);字典完整性校验轴扩为(池 × 类型 × 极性)(`reward_table.gd:86-96`) | 新增可选配对列校验(缺省回退 weight——区间字段「缺省 = 定值行向后兼容」同款先例,`reward_table.gd:70-84`);行数不变 | 修饰规则新表(或 board_gen 行加列);`BoardData.variants` 字段已在板契约存在(`core/board_data.gd:14`),若挂变异标签可零新表 | -| **数据层变化** | reward.tres 正向 5 行复制出雷池行集(行数 11→16+),或负向行侧挂雷池权重 | 11 行各加一列(或仅正向 5 行加),初值同构 = 零行为变更上线 | 新增修饰规则行(如「雷格 heal 重摇为 attack」);现有 11 行不动 | -| **逻辑层变化** | `_rollable_rows()` 分池双份(`reward_economy.gd:207-213`);eligible 清单需携带雷/安事实(现 `battle_orchestrator.gd:144-150` 构建时无 kind 字段——需分两组或加字段);`roll_board` 65-67 行按格取对应池 | `weighted_pick` 选列参数化(`reward_economy.gd:195-204` 纯函数面签名变化);`_pool_weight` 双轨(224-228 行) | `roll_board` ③ 段(区间 roll,70-77 行)后插修饰 pass;若重掷则 reward_roll 流取号序变化 | -| **B2 差异化粒度** | 按格型(雷/安)× 行——两池各自独立的 5 行权重面 | 同甲:按格型 × 行;单表内维护 | 最细:可按格型 / biome(`board_data.gd:15`)/ 变异标签(`board_data.gd:14`)/ 坐标任意轴组合——粒度过细时逐行归因复杂化 | -| **B3 回归面** | `reward.tres` · `reward_table.gd` · `reward_economy.gd` · `battle_orchestrator.gd` · `smoke_all.gd`(1347/1349/1365 断言重写)· `reward_expectation.gd`(频次统计需按格型拆列)· registry mechanics/mvp_content(`entities.yaml:318,320`)· GDD 冻结项修订 | 与甲同文件集,少 pool_tag 枚举扩散、多 `weighted_pick` 签名变化;equivalence_supply 活行口径需定义(取哪列,`reward_economy.gd:177-190`) | `reward_economy.gd` 确定性链 · 排雷玩法变异不变式 inv2a/inv2b(`minesweeper_rules.gd:124-137`)· 全部既有种子读数(修饰 pass 改变取号序则黄金向量全变) | -| **确定性/回放影响** | 取号次数不变(每格仍恰一次);同种子回放保持,但身份表内容随池权重变化 → 既有种子读数作废重测 | 同左 | 若修饰不额外取号(确定性映射)则取号序不变;若重摇则 reward_roll 流消耗序变化,同种子身份表全变 | -| **对账面(行动经济 F1)** | P(安全)/P(雷) 两侧类型分布分化 → 条款③挖掘风险不等式、条款⑤清图支配性需按侧重推(`design/gdd/systems/排雷循环/行动经济.md:110-128`) | 同左 | 同左(若修饰只动类型边际分布,等价于甲/乙的分布结果) | -| **B4 破冻结判定** | **破 v0.4 冻结**(雷安同池 + 验收标准 212 行),走 GDD 修订 | **同破**(结构上同为「按格型差异化分配」分支) | **实质等效于破**(「同一权重分布摇定」的字面保留、分布实质改变——212 行语义被绕过,需修订裁决其是否算差异化分支) | - -### 4.2 B4:v0.4 + v0.6「结构冻结」项范围(改哪项算破冻结) - -**v0.4 结构冻结七项**(`地图战斗资源.md:207`,改动走 GDD 修订流程、不走调参): - -1. 五型封闭枚举(加第六型 = 修订文档,`:116`) -2. **雷安同池**(差异化三路径全部命中此项——`候选集合`节 :72-77 与验收标准 :212 同锚) -3. 极性矩阵(「动作 × 格型 → 符号」定义,`:90-100`) -4. 装板期预分配且无重摇(`:56-60`) -5. 负向恒即时无库存(`:122-124`) -6. 清图恒非空(`:136`;schema 护栏 `reward_table.gd:100-102`) -7. 除摇号外零随机(`:15,162`) - -**v0.6 批内零改动承诺**(非长期冻结,是批次范围声明):「cell_type defense / 权重 16 / 档位 2 零改动(类型频次合计 79 不变)」(`reward.tres:133-135`;`地图战斗资源.md:232`)——v0.7 已改 heal 权重证明该承诺是批内性的;类型频次合计本身**不在冻结范围**(79→67 已发生,`地图战斗资源.md:233-234`)。 - -**冻结边界的现行口径**:权重数值 = 调参(provisional 归难度曲线与Boss,`地图战斗资源.md:157,187`);权重所附着的结构(单池、正向行集、极性字典五型×正负) = 冻结。「只调 weight 数值」永不破冻结;「让雷格与安全格读到不同权重/行集」必破第 2 项。 - -### 4.3 B5:旧提案「行权重 vs 类型权重」区分的可借鉴点 - -`design/research/proposal-reward-polarity-2026-09-13.md` 与差异化的四点衔接: - -1. **「类型 = 行的家族属性,类型频次由行权重涌现」**(R1,`:20`)——差异化后若想分别控制雷、安两侧的类型频次,沿用该原则意味着两池各自维护行权重、频次各自涌现;若想直接以「类型频次」为调参对象(而非行权重),需新增类型→行的聚合换算层,proposal 当时明确放弃了这层(「难度曲线与Boss 调参对象 = 行权重」)。 -2. **「roll 保持单段 weighted_pick 结构不动(不引入两段式)」**(R1 实现面钉死,`:20`)——该钉死与路径丙(摇后修饰 pass)的实现形态相悖;甲/乙保持单段摇号、只在入口分行集/分列,与该钉死兼容。 -3. **`mine_cell` 池成案**:v3 §3 曾设计「pool_tag 新值 mine_cell;roll_board 批次扩雷格 roll(同一 scope 批内)」(`:49`)——路径甲在旧提案时代有完整 schema/批次设计先例;v4 用户裁决(2026-09-15)最终落地为「雷安一视同仁 + 可选类删除」(`:94`),`mine_cell` 随之搁置,**结构图纸仍在案可翻**。 -4. **playtest 预注册指标**(§4,`:67-73`):路线选择率、图标误读率、类型选择性探测率三项可直接复用为差异化落地后的验收观测面(指标定义与「类型分布即先验信息是有意的规划素材」拍板——R3,`:29`——在差异化场景语义更强:两侧分布差值本身成为可读信息)。 - ---- - -## 5. 整体权重调整空间(C1–C5) - -### 5.1 C1:权重敏感性——单行 ±25%/±50% 对类型频次的影响 - -**口径**〔推演〕:单行独立调整、其余四行不动;份额 = weight′/合计′。现行基准 67(`reward.tres:126,145`)。 - -| 调整行(现行 weight / 份额) | +25% | +50% | −25% | −50% | -|---|---|---|---|---| -| attack_up(20 / 29.9%) | 25 → 34.7%(+4.9pt,合计 72) | 30 → 39.0%(+9.1pt,合计 77) | 15 → 24.2%(−5.7pt,合计 62) | 10 → 17.5%(−12.3pt,合计 57) | -| ac_up(16 / 23.9%) | 20 → 28.2%(+4.3pt,合计 71) | 24 → 32.0%(+8.1pt,合计 75) | 12 → 19.0%(−4.8pt,合计 63) | 8 → 13.6%(−10.3pt,合计 59) | -| spark_aoe(16 / 23.9%) | 同 ac_up 对称 | 同上 | 同上 | 同上 | -| heal_minor(3 / 4.5%) | 3.75 → **非整数**(取 4 → 5.9%,合计 68) | 4.5 → **非整数**(取 4 → 5.9% 或 5 → 7.2%) | 2.25 → 取 2 → 3.0%(合计 66) | 1.5 → 取 1 → 1.5% 或取 2 → 3.0% | -| weaken(12 / 17.9%) | 15 → 21.4%(+3.5pt,合计 70) | 18 → 24.7%(+6.8pt,合计 73) | 9 → 14.1%(−3.9pt,合计 64) | 6 → 10.3%(−7.6pt,合计 58) | - -**三点敏感性结论**〔推演〕: - -1. **整数权重域的最小步长问题**:weight 域 [0,999](`reward_table.gd:53`),但 heal_minor 现值 3 的 ±25% 落非整数——小权重行(≤3)的可调粒度是 ±1(33%/50% 步长),做不了 ±25% 级别的细调。v0.7 的 15→3 实际步长就是 −80%。 -2. **同池线性传导到负向字典命中率**:雷安同池下,踩雷格/标错格命中某型负向的频率 = 该型类型频次 × 格位雷概率——类型频次变多少,该型负向兑付频率同比例变。特例已由 v0.7 注记背书:「heal 权重下调同比例降低踩中 heal 型雷(反噬)的频率」(`reward.tres:143-144`)。 -3. **五型齐备板概率对 heal 权重高度敏感**:单板无 heal 格概率 = (64/67)^非封锁格数〔推演〕。smoke_all 负向字典直验因此已改 6 板扫描(`smoke_all.gd:1255-1256,1284`——heal 权重若再降,该断言的扫描通过率继续下降;heal 3→2 时〔推演〕非封锁格 55 格的板无 heal 概率约 8%→19%,6 板扫描失败概率约 0→35% 量级)。 -4. **全行同比例缩放 = 零频次影响**:份额不变,但 reward_roll 取号域宽度变化(`reward_economy.gd:67` 的 `randi_range(0, 合计−1)`)会改变同种子下各格摇中的 reward_id——「整体权重轴」调整若不动相对结构,频次读数不变而**既有种子读数仍作废**。 - -### 5.2 C2:区间行离散度对局体验影响 - -- **heal_minor [1,1]**:区间已塌缩为定值占位(`reward.tres:44-45,141-142`——「量级再调时恢复区间结构」)。重开区间掷点**零新机制**:schema 配对/中点锚校验在位(`reward_table.gd:70-84`)、身份批内追加取号实现在位(`reward_economy.gd:70-74`)、快照 power 覆盖授予链路在位(`battle_orchestrator.gd:259`)。重开的唯一变量 = 治疗量的局内方差。 -- **clear_blast [8,18]**:现行区间跨度 10、中点 13、相对半宽 ≈38%〔推演〕;摇定时机 = 装板批尾、**每板恰一次**跨轮不变(`reward_economy.gd:68-69,75-77`),非每次清图重掷。波动影响的是「清图轮的斩杀线稳定性」(Boss 前最后一张板的清图奖励量级浮动),期望当量由中点锚锁定(行动经济条款①锚口径,`reward_table.gd:82-84`)。 -- 区间行与定值行的并存先例:v0.7 压缩批同时动过两种形态([25,55]→[8,18] 与 [2,6]→[1,1],`reward.tres:138-142`)——「开不开区间」在现行 schema 里是行级自由度,不是机制级开关。 - -### 5.3 C3:tier_min_buff 当前算法与影响行 - -算法(`reward_economy.gd:177-190`):遍历 reward 全表,取 `pool_tag=cell & polarity=positive & effect_id≠""`(= percent 正向行)且其状态行 `target_side == "hero"` 的行集,`tier_min_buff = min(tier)`。 - -- **当前命中行**:attack_up(tier 2,状态行 target_side=hero,`status_effects.tres:10`)、ac_up(tier 2,target_side=hero,`status_effects.tres:19`)→ **tier_min_buff = 2**(registry 同值:`entities.yaml:320`「tier_min_buff = 2」)。weaken 虽是 percent 正向行但 target_side=enemy(`status_effects.tres:37`),被排除。 -- **口径注记**:ac_up 是 AC 阈值轴行、不入任何池(`增益状态.md:132`),但判据只查 target_side 不查 unit——ac 行目前参与「我侧增益最低档」计算。该判据文本写于换装批之前(184 行注释仍称 defense_up,见 3.3 漏网②)。 -- **影响面**:tier_min_buff 是「最低档安全格增益」的数据源——行动经济条款②「标中旗锚:标中旗的减益档位必须严格高于最低档安全格增益」(`行动经济.md:113`;`增益状态.md:165`)。凡 target_side=hero 的 percent 正向行 tier 变动,或未来 heal/blast 增挂 effect_id 行,都会改变该锚值。 -- **消费方现状**:`equivalence_supply()` 在切片代码内**零调用**(全仓 grep 仅定义处 `reward_economy.gd:177`)——当量对账目前是文档层义务(战斗结算为唯一对账责任方,`战斗结算.md:103`),非运行时强制。 - -### 5.4 C4:equivalence_supply 当前活行清单与权值 - -活行 = `weight > 0` 全行投影(`reward_economy.gd:180-183`):attack_up 20 · ac_up 16 · spark_aoe 16 · heal_minor 3 · weaken 12 · clear_blast 1,共 **6 活行**;负向 5 行 weight=0 不入。对账锚关系:条款①单一当量(对照表载体归战斗结算,`战斗结算.md:103`)、条款②锚 = tier_min_buff(见 5.3)、条款③⑤不等式两侧的原材料 = 正向当量与惩罚当量(`行动经济.md:122-128`)。上游对账约束:关级通关恒等式「奖励输出占比 ∈ [15%, 40%]」(`难度曲线与Boss.md:100-104`)——活行权重/威力的单边移动必须走恒等式联合检算(`:153`)。 - -### 5.5 C5:调权重连带必动位置清单(当前实测) - -v0.6 先例用「零改动」避开连带(`reward.tres:134`);v0.7 先例实动一处权重(heal 15→3),连带同步面实测如下——**第 4、5 项即该批漏网处**: - -| # | 位置 | 性质 | 证据 | -|---|---|---|---| -| 1 | `data/tables/reward.tres` 行值 + 注释段合计数 | 数据本体 | `reward.tres:14-145`(注释段 137-145 记压缩前后值) | -| 2 | registry `entities.yaml` mvp_content 锚行快照 + 合计 | 派生快照 | `entities.yaml:320`(「79→67」已随批写) | -| 3 | GDD `地图战斗资源.md` 候选集合节合计 + v0.x 版本历史 | 派生快照 | `地图战斗资源.md:72,76`(67);`:232-234` | -| 4 | `smoke/reward_expectation.gd` 头注释与尾注基准值 | **漏网实证(现行过期)** | `reward_expectation.gd:4,71-72`(仍 79 基准) | -| 5 | `core/reward_economy.gd` 行内注释(行名引用) | **漏网实证(现行过期)** | `reward_economy.gd:184`(仍写 defense_up) | -| 6 | `smoke/smoke_all.gd` 五型齐备断言口径 | 随 heal 权重敏感 | `smoke_all.gd:1255-1256,1284` | -| 7 | 难度曲线恒等式与通关率带读数重跑 | 对账义务 | `难度曲线与Boss.md:100-104,115,153`;EV/读数重锚随批纪律先例 `:275` | -| 8 | 行动经济 F1 条款②③⑤重推 | 对账义务 | `行动经济.md:110-128` | -| 9 | doc-conventions §5 五步收口流程 | 流程义务 | `doc-conventions.md:68`(①双写失同步禁止⑤五步全收) | - ---- - -## 6. 外部参考(D1–D2) - -> 说明:D1/D2 案例中 Peglin 与 Let's! Revolution! 经联网核验(来源见 §9 附录);其余为知识盘点、未逐项联网核验,置信度逐条标注。本节只做事实盘点。 - -### 6.1 D1:雷格 vs 安全格差异化在其他游戏里的常见做法 - -| 做法 | 案例 | 与本项目结构的关系 | -|---|---|---| -| 格下内容物混布、**不分格型**同池 | Let's! Revolution!(2023,核验):雷图翻格 roguelite,格下混布金子/敌人/通路,挖到金子=收益、惊动敌人=战斗——极性由**内容物**决定,与本项目「极性由动作 × 格型决定」取向相反 | 与现行雷安同池同构度最高 | -| **按节点/格型分池**,每型独立奖励池 | Slay the Spire:地图节点分型(战斗/精英/商店/宝箱),各型独立掉落表(知识盘点) | 路径甲(双池切分)的同构先例——节点型 ≈ 格型 | -| 板内**位型差异化密度**(特殊位限量混布) | Peglin(2022,核验):板混布普通钉与特殊钉(暴击/刷新/爆炸/治疗钉),特殊钉有独立效果与生成控制 | 与「雷/安二值绑定」不同:特殊位是增量维度,不与「危险/安全」二值共轴 | -| **按格修饰位**改变产出 | Loop Hero:地形卡改变格子刷出的怪物与资源(知识盘点) | 路径丙(修饰位过滤)的同构先例 | -| 单池统一权重表 + 稀有度列 | Luck be a Landlord:符号池加权摇号(知识盘点) | 现行结构(单池行权重)的同类 | -| 无资源层 | 传统扫雷及其多数变体(知识盘点) | 差异化问题的空白基线 | - -### 6.2 D2:同类「按格型差异化权重」做与不做的案例 - -- **做的**:Slay the Spire(节点型分池,路线规划 = 核心策略层);Peglin(特殊钉密度即难度旋钮);杀戮尖塔式「按节点类型选路」与本项目「未开格类型预读 → 读敌拍板」(proposal §4 指标,`:69-73`)在设计动机上同族。 -- **不做的**:Let's! Revolution!(资源与危险混布、不按格型分权重——其策略素材来自数字推理而非分布先验);传统扫雷变体(无资源层可差异)。 -- **中间态事实**:本次盘点未发现「同格型空间、雷格与安全格同池但权重不同」的知名先例——现有作品要么全同池(Let's! Revolution!),要么彻底按型分池(StS 节点)。中间态的体验先例缺口本身是一个待验证风险(无对照读数可借)。 - ---- - -## 7. 风险与冻结项(v0.4 + v0.6 拍板项当前状态) - -### 7.1 冻结项清单与差异化/调权的关系 - -| v0.4 冻结项(`地图战斗资源.md:207`) | 纯调 weight 是否触碰 | 差异化三路径是否触碰 | -|---|---|---| -| 五型封闭枚举 | 否 | 甲/乙:否(类型集不变);丙:视修饰规则(若把某格摇成清单外类型则触碰) | -| **雷安同池** | 否 | **甲/乙/丙全部触碰**(见 4.1 B4 行) | -| 极性矩阵 | 否 | 否(三路径都不动「动作 × 格型 → 符号」) | -| 装板期预分配且无重摇 | 否 | 甲/乙:否;丙:若修饰 = 重摇则触碰第 4 项、若为确定性映射则不触碰 | -| 负向恒即时无库存 | 否 | 否 | -| 清图恒非空 | 否 | 否(clear_default 池在三路径中均不动) | -| 除摇号外零随机 | 否 | 丙:修饰 pass 若引入摇号外的随机即触碰;甲/乙:否 | - -**综合判定**:整体权重调整(C 层)在现行冻结框架内是纯调参(provisional 归难度曲线与Boss,`地图战斗资源.md:157,187`),零破冻结;差异化(B 层三路径)必破 v0.4 冻结第 2 项、走 GDD 修订流程(`地图战斗资源.md:61` 预留出口即为此设)。 - -### 7.2 风险登记 - -1. **确定性读数作废风险**:任何 weight 变动(含同比例缩放)改变同种子身份表(5.1 结论 4)——冒烟 296 断言中依赖具体身份的用例、种子 421 等既有读数、验收批读数全部重测(先例纪律:`难度曲线与Boss.md:275`「行值零改动、重锚与权重投值随批合并」;上一轮换装/压缩批后「全部旧读数失效、验收读数另批重测」为既有惯例)。 -2. **连带同步缺口风险**:v0.7 批实测漏网两处(3.3);doc-conventions §5① 已把三类同步定为完成判据(`doc-conventions.md:68`),但 §5 覆盖清单是**文档类**字段——smoke 脚本注释与 .gd 行内注释不在其列(第 4、5 项均属此类),流程上需扩充口径或另立检查项。 -3. **对账耦合风险**:heal 权重与行动经济条款③⑤不等式、难度曲线恒等式 [15,40]% 带、通关率带三方耦合(5.4、5.5 #7/#8)——单动 heal 权重即触发三处对账义务(v0.7 已实测触发:`06-待办清单.md:331`「量级当量对账待难度曲线与Boss 调参批执行」)。 -4. **差异化后信息面风险**:若雷、安分布分化且未开格类型可预读(待办 `地图战斗资源.md:180`;06 清单 `:323`),类型分布本身从「零信息」变为「雷/安属性的先验证据」——proposal R3 已拍板「类型分布即先验信息是有意的规划素材」(`:29`),差异化将该拍板的强度放大(分布差值成为可推理量),与排雷推理本征的边界需重新裁决。 -5. **小权重行整数化风险**:heal_minor=3 已落入 ±25% 不可整调区间(5.1 结论 1)——后续任何以百分比为步长的 heal 调参都会遇到取整歧义。 -6. **equivalence_supply 零消费方**:当量对账为文档层人工义务、无运行时守卫(5.3)——差异化若使两侧当量结构分化,人工对账的出错面扩大。 - ---- - -## 8. 后续设计决策待决项清单(用户拍板时须给出的输入) - -1. **差异化的问题定义**:要区分的轴是什么——雷格 vs 安全格(分布差异化)?还是类型本身的出现频率(纯权重调整)?两者分属 B 层(破冻结、走修订)与 C 层(调参、零破冻结)。 -2. **若决策方向是差异化**:粒度选择——甲(双池,行集独立)/ 乙(单池双列)/ 丙(修饰位,粒度最细)——三路径的取舍依据见 4.1 对比表;甲有 `mine_cell` 旧成案可翻(4.3)。 -3. **若决策方向是差异化**:负向字典是否随差异化的分布侧联动(如某型在雷池权重为 0 时,其负向行仍须在字典内——字典完整性校验 `reward_table.gd:92-96` 不因权重为零而豁免)。 -4. **若决策方向是纯权重调整**:调整的对账义务批次窗口——恒等式带 [15,40]%、通关率带、条款③⑤重推是否同批执行(7.2 风险 3)。 -5. **heal 权重档位**:现行 3 的相邻整数档(2/4/5)各有不同离散后果(5.1 表)——取整规则(四舍五入/向下/手工指定)与档位粒度须明示。 -6. **clear_blast 区间**:维持 [8,18]、收窄、或塌缩为定值(C2)——机制面三态零成本,属纯体验方差决策。 -7. **tier_min_buff 口径**:ac 行(AC 阈值轴)是否应计入「我侧增益最低档」(5.3 口径注记)——影响行动经济条款②锚值。 -8. **同步流程口径**:smoke 脚本注释与 .gd 行内注释是否纳入 doc-conventions §5 强制收口范围(7.2 风险 2——两处现行漏网皆属此类)。 - ---- - -## 9. 附录:必读资料引用表 - -| 文件(§3 清单) | 本报告引用的关键行 | -|---|---| -| `game/core/reward_economy.gd` | 6, 36-81(roll_board), 62-67, 70-77, 165-172(polarity_row), 177-190(equivalence_supply/tier_min_buff), 184, 195-213(weighted_pick/_rollable_rows) | -| `game/core/minesweeper_rules.gd` | 10(信号), 100-103(initial 通道), 124-137(不变式), 236-274(_do_dig), 258-259, 262-271(resource 通道) | -| `game/core/board_data.gd` | 14(variants), 15(biome), 81-86(safe_cells), 90-103(compute_r0) | -| `game/core/battle_orchestrator.gd` | 75, 131-161(_install_new_board/roll_board 调用), 166-178(facts 缓冲), 200-260(授予段/极性路由), 253-260, 264-269 | -| `game/data/schemas/reward_table.gd` | 13-16(枚举), 53-59(weight/stacks 域), 57, 70-84(区间/中点锚), 86-102(字典完整性/池护栏) | -| `game/data/tables/reward.tres` | #7-122(11 行), 124-145(注释段:同池声明 125 / 频次 126 / 换装 133-135 / 压缩批 137-145) | -| `game/data/tables/status_effects.tres` | #7-88(九行), 90-113(批注:减伤墙/换装/技能池/压缩) | -| `game/data/tables/board_gen.tres` | #7-139(12 行板参数), 141-154(调参登记) | -| `game/data/tables/action_economy.tres` | 7-14(行值), 16-23(AP 压速批注——差异化前提注记 18-19) | -| `game/smoke/reward_expectation.gd` | 4, 9, 21-72(频次实测/口径注——过期基准 4,71-72) | -| `game/smoke/monte_carlo.gd` | 8, 28, 54-68(读数口径) | -| `game/smoke/experiment_density.gd` | 59-69(FakeDB——零 reward 耦合) | -| `game/smoke/level_monte_carlo.gd` | 45-48, 100-109(带口径/完美档断言) | -| `game/smoke/level_autoplay.gd` | 18-21, 85-89(mine_hits 埋点), 122-191(双策略档驱动) | -| `game/smoke/smoke_all.gd` | 91, 1244-1321(负向字典直验——1255-1256, 1284), 1326-1367(资源面断言——1347,1349,1365-1367) | -| `game/smoke/auto_player.gd` | 7(同种子回放等价性), 31-48(完美策略档) | -| `design/gdd/systems/战斗循环/地图战斗资源.md` | 9, 52-61(摇号纪律——61 雷安同池行), 70-88(候选集合), 90-100(极性矩阵), 104-118(五型字典), 122-124(负向即时), 128-141(清图), 153, 157, 187, 191-205(调参表指路化), **207(结构冻结七项)**, 209-217(验收标准——212), 225-234(版本历史 v0.4-v0.8) | -| `design/gdd/systems/战斗循环/战斗结算.md` | 103(对账唯一责任方), 124(极性路由兑付), 142(伏击溢出), 146(标错类型化), 180(奖励定义分离) | -| `design/gdd/systems/战斗循环/增益状态.md` | 132, 138(九行), 154-161(状态行表), 163(四池对称), 165(当量锚), 214-221(调参表) | -| `design/gdd/systems/战斗循环/敌人系统.md` | 151(反灾难护栏), 254(advantage_per_round_cap) | -| `design/gdd/systems/冒险循环/难度曲线与Boss.md` | 9, 21, 35, 100-104(关级恒等式 [15,40]%), 115(通关率带), 153(联合检算), 174, 220-236(投值表), 255-257, 275(EV 重锚纪律) | -| `design/gdd/systems/排雷循环/行动经济.md` | 88, 106-118(五条款), 122-135(推导与锚表) | -| `design/research/proposal-reward-polarity-2026-09-13.md` | 20(R1 行权重/单段钉死), 29(R3 分布先验拍板), 44(雷池权重独立可调), 49(mine_cell 成案), 67-73(预注册指标), 89-98(v4 四点裁决) | -| `design/registry/entities.yaml` | 300-325(reward_table 条目——318 mechanics / 319 api / **320 mvp_content 指路存根+锚行快照**) | -| `design/gdd/06-待办清单.md` | 11, 125-131(连锁溢出), 133(充能归属), 315-319(功能道具渠道), 323(预读深度), 329-335(heal 量级锚), 409(大奖励联动) | -| `docs/doc-conventions.md` | 68(§5 数值纪律·强制收口五条款) | -| 外部(联网核验) | Peglin:[Peglin Wiki – Critical Peg](https://peglin.wiki.gg/wiki/Critical_Peg);Let's! Revolution!:[GameOrNought 评测](https://gameornought.wordpress.com/2023/07/19/lets-revolution-review/)、[Game Developer postmortem](https://www.gamedeveloper.com/production/prototyping-i-let-s-revolution-i-transforming-i-minesweeper-i-into-a-turn-based-strategy-roguelike)、[Steam 页面](https://store.steamcommunity.com/app/1966280) | - ---- - -*报告完。全文未修改任何被引用文件;推演值均已标注〔推演〕;未含任何「应该/建议/推荐」式结论。* diff --git a/design/research/任务书-GP商店房重构-三选一同构化-2026-10-02.md b/design/research/任务书-GP商店房重构-三选一同构化-2026-10-02.md deleted file mode 100644 index 6ad06d64..00000000 --- a/design/research/任务书-GP商店房重构-三选一同构化-2026-10-02.md +++ /dev/null @@ -1,113 +0,0 @@ -# 任务书:GP 商店房重构——三选一同构化(v1.3 定稿——P1-P5+子项 P1-a/P1-b 全裁,待 Alpha 后发令开工) - -> 成文 2026-10-02。裁决权威 = [06-待办清单](../gdd/06-待办清单.md)「GP 商店房重构——三选一同构化」条(2026-10-02 用户裁决,取代 2026-09-20「三件全陈列、无刷新」裁决)+本文 §五 裁决记录。**开工门 = Alpha 到手后 M-4 迭代 11 评估窗口(与同调实施批并列排序,动奖励经济必扰通关率读数);排期随用户发令,本文不占迭代号。批体估 5-5.5 工作日 = 知情超限单批(迭代 9/同调批 P6 先例)。** - -## 一、迭代目标与完成定义 - -**目标一句话**:商店房从「固定三件常驻、按件计档加价」改写为与三选一奖励同构的「进店抽 3、买 1 全重抽、双系数乘法定价」的重复购买循环——奖励=一次免费购买,商店=付费可重复购买,同一个交互语言。 - -**完成定义**:①进店从共享池抽 3 展示(统一随机流新用途标签);②买 1 → 三个全重抽(未买不保留),循环购买以**池库存尽=硬闸、A 链爬价=软闸**双重收敛;③价格 = 基价 × b^(关序−1) × A^(本次进店已购次数)(A/b 表 knob,provisional,ceil 取整);④**共享池账本落地**(P1 改裁:商店池=奖励池同一池,跨渠道消耗,库存=上限);⑤断点兼容(P2 甲:货架+池账本入断点);⑥MC autoplay 策略更新+shop=off/on 分层+通关率双窗复测出讫;⑦连带修订面落文+重闸全绿+出口人闸过。 - -## 二、现状事实(代码级,2026-10-02 核证) - -| 面 | 现状 | 位置 | -|---|---|---| -| 商品面 | **固定三件常驻**:atk_up+1 价 4 / hp_up+3 价 2 / armor_up+1 价 4;买完不消失、可对同件重复购买加档 | `game/data/tables/shop.tres` products 三行 | -| 定价 | 加法公式:`base_price + price_level_bonus(关) + price_increment(步长2) × 该件已购档数` | `game/core/level_runner.gd:620-626`(呈现层禁复算定价公式——只读投影纪律) | -| 购买 | `buy_product`:未知商品/属性键出域/余额不足三拒绝零副作用;出账→加算区→购血同步当前生命封顶 | `level_runner.gd:632-654` | -| 断点 | `shop_purchased`(product_id→档数)入 run 快照七字段;冒险开始清零 | `level_runner.gd:62,145,187`;`save_manager.gd:148,705` | -| rng | 用途标签封闭词表,扩签=改代码+评审(未知标签 assert 致命 EC12)——商店抽签需新标签 | `game/core/rng_service.gd:17,94-98` | -| 模拟面 | MC autoplay 商店策略=「贪心买齐」(读 shop_products 投影逐件买至钱尽),shop_gp_seq 读数面在册 | `game/smoke/level_autoplay.gd:25,212-213,258-273` | -| 冒烟断言 | 现价硬编码断言(现价 6/4/6 等)——新公式下期望随动 | `game/smoke/smoke_all.gd:476,3240-3267` | -| registry | shop_table 行族四轴(gp_drops/level_gp_bonus/products/price_level_bonus),全 provisional-pending-调参批 | `design/registry/entities.yaml:573-585` | - -## 三、设计契约(违反即返工,🔴 触碰=L3 停机) - -1. 🔴 **三轴 doctrine**:**机制件永不入店面**——共享池中的「魔法道具件」对商店抽签域**切边剔除**(奖励面照常,商店面只出数值件);2026-09-22 同调裁决 1 锁死,本批不动摇。GP 袋同剔除(用钱买钱恒负交易,经济无意义;如需保留须用户明示翻案)。 -2. 🔴 **核心层零 await**——MC 逐位对拍漂移即 L3;**shop=off 必须与现行锚逐位一致**(商店关着时零扰动是硬断言——P1-b 乙全冒险一次性库存是 off 态等价的前提,见 §五)。 -3. 🔴 **共享池单点账本**:商店购买与奖励三选一消费**同一库存状态源**(per-adventure stock ledger),两渠道不得各自私记库存;「属性件上限 3/AP 件上限 2 达上限剔牌库」语义统一并入库存数(库存=上限,行为等价断言随 T6 验证)。 -4. **统一随机流纪律**:商店抽签=新用途标签扩签(单盐派生),不私开流、不复用战斗流取数。 -5. **呈现层禁复算定价公式**(现行纪律维持):现价只在 core 现算,UI 只读投影。 -6. **数值主权**:池行值/A/b/取整档全部 provisional 归难度曲线与Boss;本文与任务卡只锁形态。 -7. **断点确定性**:断点写读往返+续玩确定性对拍不破(迭代 8 纪律)。 -8. 素材不入 git;UI 程序占位(P3 甲)用 UiKit 既有件。 - -## 四、范围边界 - -**本批做**:共享池账本(含奖励侧库存接线的行为等价改写)+抽签货架+重抽循环+乘法定价+断点改写+UI 程序占位+MC/读数复测+连带修订面。 - -**本批不做**:商店房节点位置/出现规则改版(关卡节点图不动);GP 掉落面(gp_drops 行族零触碰);**机制件与 GP 袋入店面(切边,永久,除非用户翻案)**;UI 视觉终稿(P3 甲,归表现批);三选一奖励侧的**结构性**改动(其刷新增强归同调批;本批奖励侧只做「上限剔牌→库存账本」的行为等价改写)。 - -## 五、裁决记录(2026-10-02 用户全裁)+ 待裁子项 - -#### P1 【改裁】商店池=奖励池同一池(共享库存池)——用户 10-02 二次裁决,取代 v1.0 甲/乙/丙三案 - -**裁决原文语义**:商店池与三选一奖励池是**同一个池**——某些东西会被买完,或被奖励领完。**可以办到**,且比双池更干净:池=迭代 10 提升池六种现行形态(攻击/生命上限/护甲/GP 袋/魔法道具/行动点件,权重属性/GP 各 3、道具/AP 各 1),商店与奖励从同一池抽件、跨渠道消耗同一库存账本——买完或领完即从池移除。 - -**两处 doctrine/经济切边(随裁决自动生效,用户可翻案)**: -- **魔法道具件对店面切边**:六种之一「魔法道具」=机制件,入店违反三轴 doctrine(09-22 裁决 1「机制件永不入店」锁死)——奖励面照常,商店抽签域剔除。 -- **GP 袋对店面切边**:用钱买钱恒负交易(A 链爬价下尤其无意义)——商店面剔除;奖励面照常。 - -**库存模型(形态锁死,数值 provisional)**:per-adventure 库存账本——属性件各 3 份、AP 件 2 份(=现行「达上限剔牌库」语义并入库存,奖励侧行为等价)、GP 袋/道具件奖励面无限;商店可购面=五种减切边=属性 3+3+3+AP 2 共 **11 份有限库存**;「无限购买」收敛为**钱尽或池空为止**(池空=硬闸、A 链=软闸);商店空货架=合法态(奖励面 GP/道具无限故永不空)。 - -**战略张力(预期设计意图,随批读数注记)**:商店花钱与奖励留件互斥——买一件,奖励面就少一件;「现在买强还是留池等三选一」成为新决策面。 - -**衍生子拍板点【已裁(2026-10-02 用户「没有问题」=双甲)】**: -- **P1-a 每行库存数形态【已裁·甲】**:沿用现行上限口径(属性件 3 份/AP 件 2 份,上限即库存)——off 态等价的前提成立。 -- **P1-b 跨关补给【已裁·甲】**:**全冒险一次性**——现行「全冒险次数上限」语义零变化,shop=off 逐位等价成立;L1 买光则 L2/L3 商店与奖励属性件枯竭(池空硬闸的既定后果,用户知情)。 - -#### P2 断点粒度【已裁·甲】 - -**甲·货架三件+池账本入断点**:续玩恢复原货架与库存态——「中断恢复至最近停点」纪律同向,确定性对拍最友好;断点域扩列(3 商品 id+库存账本)。 - -#### P3 UI 档位【已裁·甲】 - -**甲·程序占位**:UiKit 既有行板件改三选一卡面,视觉终稿归表现批,不卡样张闸。 - -#### P4 乘法价格取整【已裁·甲】 - -**甲·ceil 向上取整**:玩家不利向,杜绝「差 1 GP 反复钓」套利角。 - -#### P5 A/b 系数研究时点【已裁·甲】 - -**甲·随批立项先跑**:T6 挂 game-balancer 研究卡——定价锚沿用现行「正常运气/运气极好可购档数」期望读数纪律,方向 A≈1.5-2 ≫ b≈1.1,研究出提案值→用户拍板→落表。 - -## 六、任务卡(T0–T8) - -| 卡 | 内容 | 估时 | -|---|---|---| -| T0 | 开工基线:worktree+归属核对+冒烟复读+MC 现行锚对拍基准记档 | 0.5h | -| T1 | **表与 schema**:共享池账本建模(六种行+库存字段;products 行族退役入池行族)+A/b 两 knob+registry shop_table 行族改写+rng 扩签 `shop_draw` | 0.5-1d | -| T2 | **共享池账本与奖励侧接线**:per-adventure 库存账本(单点状态源);三选一 pick 改读库存(上限剔牌逻辑退役,行为等价断言);商店侧抽签域=切边后五种子集 | 1d | -| T3 | **抽签货架**:进店抽 3(无放回)+买 1 全重抽循环+池空硬闸/空货架合法态+shop=off 直通开关面 | 0.5d | -| T4 | **乘法定价**:基价×b^(关序−1)×A^(进店已购次数)(P4 ceil);price_level_bonus/price_increment 退役改写;`_shop_purchased`→进店购买次计数 | 0.5d | -| T5 | **UI 程序占位**(P3 甲):商店覆盖层三选一卡面+买后重抽+现价贴卡+库存余量呈现(就近原则);wallet_changed 事件链适配;ui_click_probe 断言 | 0.5-1d | -| T6 | **断点改写**(P2 甲):货架+A 链+池账本入 run 快照+写读往返+续玩确定性对拍断言 | 0.5d | -| T7 | **MC 与读数**:autoplay 贪心策略适配(共享池机会成本注记:买件=奖励面少一件);shop=off/on 分层;通关率双窗复测;GP 供给对账复跑;A/b 研究卡(P5 甲)出提案值呈报 | 1d | -| T8 | **连带修订面**:冒险结构 GP 冒险账本节/关卡节点地图 商店房词条/难度曲线与Boss 商店与 GP 经济杠杆节/node-reward.md(池共享改写 v2.2)/registry/06 收口 | 0.5d | -| T9 | 重闸+出口人闸:全量轻闸+doc 三闸+熵增闸+MC 对拍+出口检查单+代拍板追认 | 0.5h+人闸 | - -## 七、验证闸 - -轻闸(每轮):run_smoke 全量+ui_input_probe+ui_click_probe(商店覆盖层触碰 presentation)。重闸(T9):全量+doc 三闸零新增+熵增闸+MC 逐位对拍(**shop=off 与现行锚逐位一致**硬断言——成立前提=P1-b 甲全冒险一次性库存+库存制/上限剔牌制奖励侧行为逐位等价断言随 T2 验证)。读数纪律:shop=off 续用现行带;shop=on 带平移归调参批(shop 分层先例同法);现价硬编码冒烟断言改公式推导或随表重锚。 - -## 八、异常分级 - -L1 自救一次重试;L2 连续 3 次同红灯记录继续+升级呈报;L3 停机(触发面:契约 1-3、shop=off 锚漂移、断点确定性破、库存制与上限剔牌制奖励侧不等价且无法调和、P1-a/P1-b 子项裁乙引发读数面超预期漂移)。 - -## 九、代拍板白名单 - -可代拍:池权重与库存具体数值(形态已锁、provisional 归调参批)、无放回抽 3 的回补细节、空货架呈现文案、冒烟断言期望随表重锚、doc 措辞。禁代拍:P1/P2/P3/P4/P5 裁决本体、**P1-a/P1-b 子项**、切边面翻案(机制件/GP 袋回店面须用户明示)、带值、A/b 语义变更。 - -## 十、连带修订面(执行于 T7) - -`冒险结构.md`(GP 冒险账本节+商店定价公式换代)/ `关卡节点地图.md`(商店房词条改写)/ `难度曲线与Boss.md`(商店与 GP 经济杠杆节——shop=on 带平移投值义务)/ `node-reward.md`(池共享改写 v2.2——共享库存账本+切边注记)/ `registry/entities.yaml`(shop_table 行族改写+共享池账本+rng 标签注记)/ `06-待办清单.md`(本条收口)/ 断点 v2 域注记随 save 文档。 - -## 版本历史 - -| 版本 | 日期 | 改动 | -|---|---|---| -| v1.0(草案) | 2026-10-02 | 成文:P1-P5 拍板点呈报(池扩容/断点粒度/UI 档位/取整/研究时点)+T0-T8;现状按 2026-10-02 代码核证 | -| v1.1 | 2026-10-02 | §五由四列表格展开为逐项详述节(每案含内容+代价+联动+推荐标注——拍板呈报规范加厚,裁决内容零变化) | -| v1.2 | 2026-10-02 | **P1-P5 全裁落文**:P1 改裁**共享池**(商店池=奖励池同一池,跨渠道消耗,库存=上限;魔法道具件/GP 袋对店面切边);P2-P5 甲落锁;新增子项 P1-a(库存数形态)/P1-b(跨关补给)待裁;T0-T9 卡随裁重排(+共享池账本与奖励侧接线);「无限购买」收敛为钱尽或池空 | -| v1.3 | 2026-10-02 | **子项双甲落锁,全裁定稿**:P1-a 甲(库存=现行上限口径 3/2)/P1-b 甲(全冒险一次性,L1 买光则后关枯竭为池空硬闸既定后果,用户知情)——裁决面全闭,开工门=Alpha 后发令 | diff --git a/design/research/任务书-全局作用域变异首发批-2026-10-04.md b/design/research/任务书-全局作用域变异首发批-2026-10-04.md deleted file mode 100644 index 767af154..00000000 --- a/design/research/任务书-全局作用域变异首发批-2026-10-04.md +++ /dev/null @@ -1,106 +0,0 @@ -# 任务书:全局作用域变异首发批(迭代 14 ③号卡) - -> 一句话:L2/L3 Boss 图恒定一型整图变异(scope=global 首发型=资源面微贫向偏斜「险地肥矿」),替换 region 布置;开战横幅+HUD 常驻角标+帮助手册行三层预告;带A 判读后置 M-4 只测不判。 -> 状态:**裁决已齐零待裁**(2026-10-04 用户:调研报告拍板点 P1-P8+盘问前沿 Q1-Q4 全按推荐案落)——待用户发令开工(U0)。 -> 归属:迭代 14 ③号卡(roadmap M-4 表已编卡;批内序位待用户排;门=迭代 13 出口)。 -> 事实源:[调研-全局作用域变异设计空间-2026-10-04.md](调研-全局作用域变异设计空间-2026-10-04.md) v1.1(§7 裁决记录+§8 实现面补强注记为本任务书直接依据)。本任务书按逐段自包含原则重录裁决与参数,机理与外部先例论证不重复展开。 - -## 一、立项依据与裁决记录(已齐,实施批零拍板点) - -**立项链**:06「全局作用域变异」条(2026-09-19 拍板「Boss 图变异暂无设计想法,留 Alpha 再设计」)→ 2026-10-04 设计空间调研(六案+四先例一手核证)→ **用户裁决 P1-P8+Q1-Q4 全按推荐案** → 编入迭代 14 ③号卡(本批)→ 本任务书。 - -| # | 裁决 | 内容 | -|---|---|---| -| P1 | 立项 | 撤「Alpha 再设计」挂起,立项首发批 | -| P2 | 首发型=案A 资源面 | 经 Q1 勘误换形=**微贫向偏斜**(见 §二) | -| P3 | **替换制** | scope=global 上板的 Boss/精英图**不再布 region 片**(每图一型纪律的板级推广:普通图=region,Boss/精英图=global)——L2 完美 Boss 承伤 55.8% 已越 ≤50% 带,叠加制火上浇油不采纳 | -| P4 | 恒定制+固定演进 | L2/L3 Boss 图 100% 带一型;首发批 L2/L3 同上一型(Q2 甲);类型是配置事实非掷定结果——Boss 图 `variant_place` 流零取号=合法态 | -| P5 | 三层预告 | 开战横幅一行+HUD 常驻角标+帮助手册一行(region 遭遇式口径对整图语义不适用——藏着等于暗改规则) | -| P6 | L1 Boss 免疫 | 带 B(白板 L1 通过率 [50,85],首关=过滤器不是墙)教学保护;门控第三维按关卡+节点身份双重约束 | -| P7 | 带 A 杠杆注册 M-4 | 全局变异注册进全局难度批(M-4)杠杆表;落地批 off/on 对拍只测不判,带 A 收敛判读统一归 M-4(Q4 甲) | -| P8 | 远期案留档 | 案B 诡雷(远期)/案E 信息面(冻结,解封条件三件在案)/案C 规则改写(远期概念池)按调研报告档位留档;案F 结构面不进变异框架 | -| Q1 | 案A 换形=微贫向偏斜 | v1.0「沃土+雷密对冲」形**勘误作废**——雷数与密度是生成器事实(board_generator 产物),变异布置在装板序第 4 步(生成之后)加不了雷;改生成端=破坏生成/布置两阶段结构(与案F 否决同一条理由)。定稿形见 §二 | -| Q2 | L2/L3 双关同型 | 关间台阶纪律由 L3 既有新内容(落石/矿尘/灰矮人/钩爪恐魔)满足;同型双关白送同型对照读数 | -| Q3 | 四件应对件失效=知情代价 | 替换制+案A(无地形伤)⇒ 迭代 12 四件地形应对件(地脉采撷/荆棘编织者/净化工兵/熔火之躯)在 Boss 图无的放矢——主战场普通图(每关 6/7 张,Boss 覆盖 1/7),registry/调参日志随批登记知情,MC on 档读数观察 | -| Q4 | 独立批先行 | 本批落地与读数取证独立先行,带 A 收敛判读后置 M-4(与判式换代批②号卡解绑) | -| 代拍 | 偏运硬币合成序 | 图级偏斜投影先、件级 luck_bias 后(环境事实先定型、玩家构筑叠其上);随批逐位锚登记,实现期可翻 | - -## 二、形态定稿(首发型=案A 资源面·微贫向偏斜) - -**语义**:整图修摇号分布(板级作用域),不修任何格子数据、不动生成端。正向格面池**合计守恒**(77,挖掘风险批口径——clear_blast 系清图槽不挂格),内部结构倾斜: - -| 面 | 行 | 处理 | -|---|---|---| -| 进攻族(上浮) | attack_up / spark_aoe / pierce_strike / magic_bolt | 权重等比上浮 | -| 生存族(下调) | heal_minor / ac_up | 权重按 effect_value% 下调 | -| 豁免(白名单) | weaken / gp_gain / ap_up | 权重恒不动(gp/action 豁免防商店分层带联动破线;weaken 维持报告 §8-2 口径,provisional) | -| 负向九行 | — | 不参与摇号口径不变,零触碰 | - -下调量按进攻族原权重比例分配,重归一到原合计 77。**总期望微降 3-5% 为 provisional 设计目标**(生存族当量价值高于进攻族的静态估计)——精确方向与幅度归 T7 读数批判读(只测不判)。玩家体验=「这层奶薄、枪很肥」:生存资源变薄、进攻资源变肥,转向用进攻续命的主动策略——不是纯挨打(深挖钻头净负期望二连反馈红线已避开)。 - -**替换制**:Boss/精英图布置全局型时跳过 region 布置;普通图 region 路径逐位不变。**兜底回落**:Boss/精英图全局候选池为空时回落 region 布置(保守向后兼容,防配置缺行静默裸奔——provisional,与普通图「池空=静默零布置」合法态口径并行)。 - -**承载**:`BoardData` 加板级字段 `board_variants: Array[String]`(板级只读快照,随图生灭同 `variants`);门控第三维=节点身份(normal/boss/elite,读 encounter 既有字段)——normal 候选池遇 scope=global 行静默跳过(筛空回落池空合法态,零报错零警告);**不动 level.tres 结构**(Boss→变异绑定是门控结果,非表行)。boss 与 elite 前向兼容进同一全局池,首发批只放 boss。 - -**三层预告**:①开战横幅一行(board_variants 非空时显示;减动效开=静态化,轮横幅先例)②HUD 常驻角标(战斗全程可见防中局遗忘;摆位 provisional 归 HUD 框架批内定,空态隐藏=流派件段先例)③帮助手册一行(教学定稿批 P4 丙「手册零再教」承载位,零交互教学)。 - -**MC 三态对账链**(读数批依据):现行锚(旧·Boss 图带 region 片)→ **off**(effect_value=0:替换制生效+偏斜中性=零变异 Boss 图)→ **on**(替换制+偏斜 30)。off 隔离替换制单项效应、on/off 差值=偏斜效应;off 与现行锚语义不同(Boss 图少了 region 片)须在读数报告注明,旧 Boss 读数(含台账 96 承伤 55.8%)换代作废只测不判。 - -## 三、参数面(一行新类型+一枚新旋钮,走 ConfigDB) - -| 参数 | 域(建议) | 现值(建议投值) | 说明 | -|---|---|---|---| -| variation.tres 新行 variant_id | — | skewed_veins | display_name=贫矿脉(provisional 文案归本地化批);scope=global;unlock_level=2;effect=resource_face;trigger=always(新词);placement=any;board_types=∅ 通配(L2/L3 双关同型由 unlock_level+门控节点身份承载);counter_items 恒空 | -| effect_value(resource_face 行语义) | int [0, 50] | 30 | 生存族权重下调百分比;0=中性合法态(off 锚用)。**不适用 flat_damage 的 [1,9] 加法核互锁**——新域随本表定稿;加载期校验违例致命 | - -域值与投值实施批 T0 定稿;effect_value 为调参项(非结构冻结),后续走调参不走修订。 - -## 四、T 卡分解(估时合计 ≈5.75 日;切分预案见末尾) - -| 卡 | 内容 | 估时 | -|---|---|---| -| T0 | **schema 词表与新行**:variation_table.gd——EFFECTS 加 `resource_face`、TRIGGERS 加 `always`;跨字段互锁三条(resource_face ⇒ scope=global;scope=global ⇒ placement=any 且 trigger=always;scope=global ⇒ effect=resource_face)+ effect_value 新域 [0,50] 校验(互锁顺序须保证既有六 region 行零误伤);variation.tres 加 skewed_veins 行;registry variation_table 条目换代 | 0.5d | -| T1 | **板级承载+门控第三维**:BoardData 加 `board_variants` 字段+访问器;config_db.variant_pool 扩节点身份参数(battle_orchestrator 调用点同步);普通图遇 global 行跳过断言;boss/elite 全局池分离逻辑 | 0.5d | -| T2 | **布置段全局分支+替换制**:_place_variants 加 Boss/精英分支——全局池恰一行=确定性取用(不消费 variant_place 流,零取号合法态)→ 写 board_variants+跳过 region 布置;全局池空回落 region(兜底);普通图路径零改动 | 0.75d | -| T3 | **资源面偏斜投影+合成序**:reward_economy 图级投影(effect_value 单旋钮:生存族 ×(1−v/100)、进攻族等比上浮、重归一 77、白名单豁免);合成序=图级先(乘法偏斜)、件级后(luck_bias 加法)——与⑥A4 配比批全链序相容(全链=表值→玩家配比差值→包络钳制→**图级变异偏斜**→同调硬币偏置;本批落地中段+末段衔接,前两段⑥批落位前缺位=逐位等价图级直投);**值面静态推演**呈报(期望变化方向与幅度,3-5% provisional 目标的静态核对) | 1d | -| T4 | **呈现三层**:开战横幅(战斗初始化段一行+减动效双态)+HUD 常驻角标(空态隐藏)+帮助手册一行;文案全 provisional 归本地化批 | 0.75d | -| T5 | **文档批七正主+06 收口**:地形变异.md v0.7(类型清单加行+scope=global 语义节+「每图一型」板级推广+替换制注记)/难度曲线与Boss.md(P2「全局投放计划」行升级现行+调参表 resource_face 行 provisional)/registry(variation_table+variant_pool_gate 两条件目)/HUD框架.md(横幅+角标义务)/教学引导.md(手册行)/行动经济.md(P2 价目钩子行注记=案D 留位不启用)/06「全局作用域变异」条解决移除 | 0.5d | -| T6 | **重闸:断言+确定性回归**:smoke 新段(T0-T4 全断言集中:互锁负样本/门控兜底/替换制 Boss 图恰一行+零 region 格/零取号/白名单 off 逐位零扰动/合成序构造例/三层呈现/呈现件 Boss 图闲置=无格子级变异标记);**普通图布置逐位回归断言**(同种子布置快照对拍批前基线——golden 或重导);普通图 region 布置与资源摇号全链路确定性断言 | 1d | -| T7 | **MC 读数批(可切独立后批)**:三态对账链取证——现行锚(只读既有)/off/on 双档 N=60 同种子配对;读数面=战役通关率+Boss 场承伤+奖励占比带 [15,40] 复算+偏斜期望实测;**只测不判**(带 A 判读归 M-4,Q4 甲);读数报告注明 off 语义(§二);⚠ 跑批须用户批准(先推算后重跑) | 0.5d | -| T8 | **出口**:人闸材料(实机目检清单:L2 Boss 横幅/角标/「奶薄枪肥」体感/手册行/L1 Boss 无变异/普通图零角标+provisional 追认单=偏斜幅度 30/命名/文案/N=60)+registry/调参日志登记 Q3 知情代价+roadmap ③卡状态更新 | 0.25d | - -**切分预案**:T0-T6+T8 = 实施批 ≈5.25d;T7 = 读数批 ≈0.5d 可切独立后批(读数与判读本就后置 M-4;切分时实施批出口闸=冒烟+doc 三闸+确定性回归断言)。 - -## 五、拍板点(零) - -裁决全落(§一)。全部 provisional 值(偏斜幅度 30/variant 命名/横幅与角标文案/角标摆位/N=60/兜底回落行为)随批出口追认单呈报,不阻塞实施。 - -## 六、批级验收标准 - -- 替换制生效:Boss 图恰一行 board_variants+零 region 变异格;普通图 region 路径逐位不变(布置快照对拍批前基线全绿)。 -- off 态零扰动:effect_value=0 时资源摇号结果与无偏斜逐位相同;luck_bias=0 叠加仍逐位相同;白名单三行任何状态下逐位不动。 -- 门控正确:普通图遇 global 行静默跳过零报错;L1 Boss 零全局变异(免疫);Boss 图全局池空回落 region(兜底断言)。 -- 合计守恒:偏斜后正向池权重合计=77(基准口径);负向行不参与摇号口径不变。 -- 互锁零误伤:既有六 region 行加载全绿;新互锁负样本全部拒绝。 -- 确定性复现:同种子同图两遍布置/摇号逐位相同;Boss 图 variant_place 零取号断言。 -- 闸全绿:冒烟+run_all 关联套件+doc 三闸零新增(loop 开发挂出口闸,两入口铁规)。 -- 文档七正主随批落籍;06 条目收口移除。 - -## 七、红线与停机点 - -**红线(违反即停)**: -1. 排雷玩法/棋盘生成器零 diff(零特判原则+生成/布置两阶段结构——board_generator.gd 与 minesweeper_rules.gd 不许出现本批任何改动)。 -2. 数字恒真与可推理率 ≥0.85 绝对锚零触碰。 -3. 雷安同池+池成员集合不变(九型不增删,偏斜只动六行权重数值);负向行不参与摇号、负向兑付零改动。 -4. DamageController 零改(案A 无伤害面);直伤雷 6-8-8 与判式批 δ=1.25 零交集。 -5. 禁触碰信息型(R4 甲:信息型永不对冲永不清除——案E 冻结,本批零实现)。 -6. 清图槽(clear_default/clear_blast)与完美排雷第二份兑付零改动(独立池,不受偏斜影响)。 - -**停机点**: -- **S1** = 普通图布置/摇号逐位漂移(回归破)→ 停工归因,禁带病前进。 -- **S2** = 读数批占比带 [15,40] 越界或 Boss 承伤异常 → 只呈报不回调(行值 provisional 归曲线调参批;带 A 判读归 M-4)。 -- **S3** = 新互锁误伤既有 region 行加载 → 停工修互锁顺序。 - -## 八、并行面 - -迭代 14 内①初始展开收窄批(生成器域)/②挖掘风险判式换代批(兑付公式 δ 一处)/③本批(布置段+资源摇号投影+呈现)三轴互不撞;**②与③共享 battle_orchestrator.gd 不同区域**(兑付公式 vs 布置段)——合并序后落者解撞,预期零语义冲突。④技能池执行批/⑤提灯接线小卡同理。**⑥A4 配比预设批开工门=②③出口(③=本批)**——本批落地的图级偏斜投影点是⑥合成链(表值→配比差值→包络→图级偏斜→硬币偏置)的中段,序位上③应先于⑥开工;两批同用摇号投影点,⑥落位时本批投影函数留参承接(前两段缺位=逐位等价图级直投)。读数批各自分开归因(roadmap ③卡在案)。 diff --git a/design/research/任务书-双层BD实施批-2026-10-03.md b/design/research/任务书-双层BD实施批-2026-10-03.md deleted file mode 100644 index fd622c99..00000000 --- a/design/research/任务书-双层BD实施批-2026-10-03.md +++ /dev/null @@ -1,132 +0,0 @@ -# 任务书:双层 BD 实施批(迭代 12) - -- 日期:2026-10-03 -- 设计事实源:[双层BD体系-整合定稿-2026-10-03.md](双层BD体系-整合定稿-2026-10-03.md)(双模型并行调研仲裁版) -- 状态:**五裁全落(2026-10-03 用户):R1 甲/R2 乙/R3 乙/R4 甲/R5 甲——任务书定稿,待用户发令升 loop 计划书 → T0 开工**;已编入 roadmap 迭代 12(反制批位移承接位);R2 乙=两层全入本迭代,超软时间盒在批次一出口切 12/12b。未落地备选内容已自包含迁 06「双层 BD 延期与备选内容总登记」(任务书退役不丢内容) -- **loop 计划书八件对照(2026-10-03 核验齐备)**:①目标与完成定义=§一 ②现状事实(代码级)=整合定稿 §2.2 锚点+§三开工复核条款 ③设计契约(🔴 停机级)=§二 ④范围边界=§三 ⑤任务卡 T0..Tn 逐卡估时=§四 ⑥验证闸=§五 ⑦异常分级=§六 ⑧代拍板白名单=§七;§八/§九=裁定存档。升格动作=T0(复制 `.zcode/plans/m4-iter12-loop-plan-<日期>.md`+计划书头+U0 呈批节) -- 数值全 provisional:本批只锁机制形态与交互关系,具体数字归数值批/游戏平衡师联审;所有 ~N 为占位 - ---- - -## 一、目标与完成定义 - -一句话目标:局内 BD 从「纯数值件」扩为「七流派+标签档位」的构筑面,地形变异从纯税转第三资源带(承接被废反制批的应对义务);局外三体系(锻造/钥石/同调)收敛为一棵营地天赋树。 - -完成定义: -1. 七核心流派各 ≥3 件入局内随机渠道,标签+档位激活引擎可判「成型」; -2. 七流派成型态 MC 读数可判、红线自检①全流派通过(R3 乙单锚全量); -3. 天赋树可购可切可迁移(R1 甲融合案落码)、存档 v4 往返幂等(R2 乙=本迭代批次二); -4. 文档正主七处吸收落文(见整合定稿 §文档面); -5. 批末闸:冒烟+run_all+探针+doc 三闸/熵增零新增;MC 锚按两入口铁规只在本批数值验证点触发。 - -## 二、红线(违反即返工,🔴 触碰=L3 停机) - -1. 🔴 **扫雷推理保持胜利主因**:任何件不得使「按数字推理雷位」降格为次要变量;每流派 ≥1 件挂扫雷结算触发点;信息型地形对冲边界=R4 裁定面。 -2. 🔴 **层级纪律**:流派件只走局内随机渠道(三选一/商店/格面);局外树只放全局规则件;两层不互相代位;流派件禁入同调位。 -3. 🔴 **零战斗期新动词**:流派表达全部经「扫雷决策→自动结算」间接生效;不新增手动闪避/主动施法。 -4. **数值 provisional**:机制形态本批锁死,数值批联调;本批 MC 只验「分岔方向」不验具体值。 - -## 三、前置依赖(开工闸)与范围边界 - -| 依赖 | 状态 | 影响 | -|---|---|---| -| 迭代 11 出口(同调批→商店批→迷雾批三批串行) | 未开工 | 本批门=迭代 11 出口 | -| M-4 数值批:70/25/5 令牌池落地(node-reward v2.2) | 已裁待实施 | 机制件带挂进令牌池稀有/罕见档;令牌池未落地则机制件带延后 | -| 商店重构批共享池(迭代 11 ②) | 任务书在案 | 商店机制件上架+保底逻辑建在其终局池上 | -| 同调实施批 0/3+谓词表(迭代 11 ①) | 任务书在案 | (批次二天赋树)树批收编 Socket 节点的输入;同调批按已裁任务书独立落地不为树批预留 | - -**范围边界(以下均不在本批,已在 06 正主登记,收到即停、不顺手做)**: -- 喂雷流/巢穴经济流(R5 甲——06「双层 BD 实施批」条遗留登记) -- 二期件组六件(跨阶段回流/穿甲锥/孤注一掷/悬浮魔法球/置换服务/件派生动词白名单)+三期合成进化+淘金流立派(06「双层 BD 延期与备选内容总登记」) -- 信息型清除件族/深挖钻头「信息 −1」原案/概率收窄派生动词(R4 甲冻结组,同上条) -- 魔法道具同调位体系重设计(本批只加一句「流派件禁入同调位」边界说明;重设计归同调批 2026-10-02 任务书) -- 数值终值与验收带(本批 provisional 投值;终审归 M-4 数值批/游戏平衡师联审) -- 树内容门区扩量(首期树=收编 item_unlocks 现有解锁+骨架+三脉+Fork 4-6 槽;新道具/新板型等内容件不入本批) -- 营地树 UI 美术终稿(T9 只做功能重构+程序占位呈现;视觉终稿归资产升档决策窗) - -## 四、任务卡(T0-T10 逐卡估时;已裁口径:R3 乙=七流派批次一全量铺,R2 乙=天赋树批次二并入本迭代) - -> **估时合计**(provisional,工作日):批次一 T0-T7 ≈ 6 日——**超软时间盒(≤3 日/迭代),按 12/12b 切分为预期执行**,切分点=T7 出口闸;批次二 T8-T10 ≈ 4 日。卡数 11 超「3-8 更改任务」粒度界——按迭代 9 先例两段式组织一次合并,段排布随 loop 计划书 U0 追认。 - -**批次一(局内流派全量铺量,T0-T7,估 ~6 工作日)** -- **T0** 计划书升格+基线确认(估 ~0.5 日):升格 `.zcode/plans/m4-iter12-loop-plan-<日期>.md`(本任务书八件已齐,补计划书头+U0 呈批节)→呈 U0 批准;五裁结果复核(R1 甲/R2 乙/R3 乙/R4 甲/R5 甲均已落任务书);代码锚点复核(整合定稿 §2.2 行号);MC 锚规划(遵 316-f 裁:策略 1 级最稀有 2 级最左;只在本批触发点跑 normal 档)。 -- **T1** 机制件基建(估 ~1 日):新 schema relic_table(件 id/稀有度〔普通/稀有/罕见〕/流派标签/挂点枚举/正负双修参数/档位贡献)+标签档位激活引擎(集 2 件→档一/4 件→档二,散件单体保底)+三选一池机制件带接线(挂令牌池稀有/罕见档配额)。 -- **T2** 魔法流四件+英雄侧 rider 配方(估 ~0.5 日):奥术余烬/魔网织者/湛蓝誓约/魔能共鸣;damage_controller 扩 hero_attack_rider(enemy_skill rider 为对称先例);克制矩阵联动。单元测试+rider 必中不掷骰断言。 -- **T3** 标旗流四件+旗伤开单点(估 ~0.5 日):雷区图谱/猎巢人/完美布防/战旗军规;flag_judged 批后开单(复用 board_typed 零新配方);巢穴控制数查询口。单元测试+盲标盈亏平衡断言(信息不足板旗伤期望低于开格轮)。 -- **T4** 穿刺流四件+普攻流四件(估 ~1 日):贯穿射击(溢出弹射)/连珠矢/猎弱本能(折扣档前移)/猎手刺剑 + 矿工的执拗/矿工重锤/专注(免掷骰改写)/碎甲震击;掷骰路径改写挂点。单元测试+重锤高 AC 负期望断言。 -- **T5** 开格流+蓄力流(估 ~1 日):贪婪矿灯/矿脉直觉(连击计数)/赌徒的血签(件乘区槽)+深挖钻头(**R4 甲已裁=改设计为非信息税形态**:深层资源代价候选=开掘需额外 ~1 AP 或踩雷惩罚加重,数值批择一投值;原「雷位信息 −1」案已冻结迁 06 备选登记)+整备军备(AP 结转段+cleared 作废口径改写)/铁壁整备/厚积薄发;mine_hit 监听(普攻执拗清零判定同口)。 -- **T6** 吞噬流+地形转化件+商店保底(估 ~1 日):地脉采撷/荆棘编织者/净化工兵(**R4 甲已裁=仅限伤害型** thorn/magma/rockfall)/熔火之躯(variant 监听反打);reward.tres 地脉补偿行;商店保底(本关变异交互件必刷,前置=商店批落地)。信息型清除工具件族**不做**(R4 甲,备选案迁 06)。 -- **T7** 批次一 MC 锚+全流派红线自检+出口(估 ~0.5 日):七流派成型态通关率分岔全读数(验收带参照:成型流派不得 >基线 +5pp 除有专项论证;每流派场均开格/旗占比不塌陷);报告 design/qa/;批次一出口闸(切 12/12b 判定点)。 - -**批次二(天赋树+存档 v4+营地 UI,T8-T10,估 ~4 工作日)** -- **T8** 树系统(R1 甲融合案)(估 ~1.5 日):节点表 schema(脉/币种/档位/前置/Fork 面)+主干脊柱 row-gating+锻造/钥石/同调三脉+A/B Fork 集中同调脉+彩蛋觉醒节点 ≤3;四线(生命/攻击/命中/护甲)+首期 Fork 4-6 槽落值(provisional)。 -- **T9** 存档 v3→v4+三体系迁移(估 ~1.5 日):tree 域+差额补偿+旧域只读一版+迁移链自注册;营地 UI 重构(三柜台→一树;装配交互不动)。 -- **T10** 树验证+批末出口(估 ~1 日):v2/v3 存档迁移幂等断言、A/B 面切换后读数分岔(两侧差 <~3pp)、批末闸(冒烟+run_all+探针+doc 三闸/熵增)+目检人闸(七流派成型观感+件文案+营地树 UI)+**R4 复查闸**:呈报信息型三型(藤蔓/烬覆/矿尘)真人行为读数(绕开率/挫败信号),仅呈报不提案。 - -## 五、验证闸 - -1. 每卡:单元测试+相关探针;批次末:MC 锚(只测本批触发点,normal 档为主——两入口铁规)。 -2. 红线自检①硬断言:各流派成型态「场均安全开格数」「旗占比」不得显著塌陷(阈值数值批定,方向本批锁)。 -3. 档位激活确定性断言:同集合同标签件集→同档位状态(MC 逐位可复放)。 -4. 批末:冒烟+run_all 15 套+探针+doc 三闸/熵增零新增;目检人闸=用户实机(流派成型观感/件文案/营地树 UI)。 - -## 六、异常分级 - -- L1(表值/文案):批内自修自记。 -- L2(机制形态与任务书冲突):停卡呈报,改任务书再继续。 -- L3(🔴 红线触碰/R1-R5 改选引发的连锁):停机呈报用户。 - -## 七、代拍板白名单(批内可自裁,台账留痕) - -1. 件文案/命名微调(机制不变)。 -2. 档位效果具体数值 provisional 投值(数值批终审)。 -3. 探针断言阈值随读数校准(方向不改)。 -4. 非红线交互细则(如同持件优先级)按整合定稿推荐案落,登记待追认。 - -## 八、裁断点 R1-R5 裁定状态 - -| # | 裁断点 | 裁定 | 内容 | -|---|--------|------|------| -| R1 | 树形态 | **甲(2026-10-03 用户)** | 融合案:主干脊柱 row-gating+锻造/钥石/同调三脉+彩蛋 ≤3+区制语义(A/B 集中同调脉、命中第四线、双币铁律、MC 两侧差 <~3pp) | -| R2 | 迭代 12 范围 | **乙(2026-10-03 用户)** | 两层全入迭代 12(批次一 T0-T7 局内流派+批次二 T8-T10 天赋树);超软时间盒切 12/12b,切分点=批次一出口 | -| R3 | 首批流派节奏 | **乙(2026-10-03 用户)** | 七流派批次一全量铺(放弃「魔法+标旗先行验证对」两段铺法;管线风险由 T1 基建卡先行+每卡单元测试吸收) | -| R4 | 信息型地形+信息类边界 | **甲(2026-10-03 用户)** | 永不对冲:净化工兵仅限伤害型;信息型清除工具件族不做;深挖钻头改非信息税设计;信息类派生动词维持全禁;附复查闸(批次二出口呈报信息型真人读数,仅呈报不提案);乙案备选内容已迁 06「双层 BD 延期与备选内容总登记」 | -| R5 | 喂雷流(实验性) | **甲(2026-10-03 用户)** | 迭代 12 不做;06 已留正式待办(重启条件+砍除判据),设计存整合定稿 §2.3 S8 | - -## 九、R4 裁断详报:信息型地形与信息类边界(2026-10-03 呈报待裁) - -### 9.1 背景 - -- **信息型地形是什么**:六变异中三型——藤蔓缠绕(L1)/烬覆(L2)/矿尘(L3),效果=hide_number:该格挖开后显示「?」而非数字(触发 on_number_shown;不进伤害结算,纯信息剥夺,board_view.gd:192-200/:692)。它们是每关的信息轴难度:数字是扫雷推理的唯一解题原料,遮蔽数字=在瞎区里做推理。 -- **为什么现在没手段**:反制道具已终裁废弃(层级错配:跨局常驻件对抗关卡局部威胁);counter_items 恒空=合法态。信息型三型今天是**纯税**(无解、必吃)。 -- **R4 问题**:伤害型三型(荆棘/岩浆/落石)已由吞噬流转成「第三资源带」(明码定价:开格前有危险红角标可见)。**同样的局内件待遇给不给信息型三型**——即玩家能不能通过局内随机获取的件,清除/穿透遮蔽、拿回数字?附带裁决「信息类」的边界在哪(派生动词、自携信息税件)。 - -### 9.2 具体改动点(R4 落在哪五处) - -| # | 改动点 | R4 甲(永不对冲) | R4 乙(限量可对冲) | -|---|--------|-------------------|---------------------| -| 1 | **净化工兵**(吞噬流件 3,T6):标中旗中和相邻地形格 | 范围锁伤害型(现行文本) | 扩展至信息型:标中旗可清除相邻一格藤蔓/烬覆/矿尘(恢复数字),限价限量(如每关 ~N 次) | -| 2 | **信息型清除工具件族**(新件,T6) | **不做**——该件族不存在 | 做一件独立工具件(如「除尘风箱」稀有):限次清除遮蔽;只在局内随机渠道+对应关卡商店保底 | -| 3 | **深挖钻头**(开格流件 3,T5):开深层资源但「雷位信息 −1」(主动吃信息税换收益) | 改设计——信息税换成别的代价(如额外 AP 成本/踩雷惩罚加重),或退役(开格流剩 3 件+档位引擎仍够成型) | 保留原设计(自携信息税=风险重定价合法形态) | -| 4 | **二期件派生动词白名单边界**(§2.4 B 级预案) | 禁一切信息类派生动词(探测/收窄/重开已揭数字全禁) | 允许「概率收窄」类(花 AP 把某格是雷概率收窄,非确定信息);确定性信息仍禁 | -| 5 | **文档落文口径**:地形变异.md「第三资源带」节+红线①表述 | 「伤害型=资源带;信息型=永久税(红线①看门税,设计上不可对冲)」 | 「六型皆入资源带;信息型清除限价限量」+红线①附「限量信息对冲」豁免条款 | - -> 不在 R4 裁决面内但受同一红线监控:天赋树 Fork「稳健拓荒」B 面(每关开局点亮 ~2 安全格)——属局外全局规则件,量级小,已有反例条件监控(A-3/A-4),两案下都保留。 - -### 9.3 两案影响对照 - -| 维度 | 甲(永不对冲) | 乙(限量可对冲) | -|------|----------------|------------------| -| 红线①(推理主因) | 最稳:信息遮蔽区推理仍是唯一解;遮蔽税的难度意义永久成立 | 有实质风险:清除=花钱买回信息,若定价/获取率偏松,信息型退化成「小 GP 罚款」,L3 后期退化回标准扫雷;护栏(限次+局内随机+商店保底)是否够**只有 MC+真人读数能验证**,存在验证失败返工成本 | -| 流派素材利用率 | 6 变异只有 3 型入带;信息型=设计上故意无解的死角 | 6/6 全入带;「先推理定位→再花资源清除」本身也是推理应用(乙稿判据②:利用它须先经扫雷信息) | -| 玩家体验风险 | 反向风险:若 playtest 出现「看到矿尘就烦、毫无可玩性」信号(乙稿反例条件同族),甲案没有释放阀 | 无死角抱怨;但口子打开后二期件设计会持续试探边界(滑坡风险,靠限价限量+红线复审压) | -| 可逆性 | **甲→乙可随时放宽**(后补一件即可,随时做) | **乙→甲难收回**(删件+管理玩家已建立的「可以清」预期) | -| 实现成本 | 零新增(净化工兵范围更小;深挖钻头改设计或删) | 新增清除件+限次状态+信息型中和逻辑(地形格状态机扩展) | - -### 9.4 推荐:甲(可附「复查闸」) - -推荐**甲**:红线①是本作难度口径基石,甲的代价(三型无解)是**设计声明**而非缺陷,且甲→乙单向可逆——先声明永不对冲,拿迭代 12 出口读数(含信息型格的绕开行为/挫败信号)说话,若确有释放阀需求再以带数据的 mini 裁断放宽到乙。乙的本钱(6/6 利用率+释放阀)真实但全部建立在「护栏够」的未验证假设上,且收回不可逆。若裁甲,可加一条**复查闸**(代拍板白名单外、L2 级):批次二出口目检时呈报信息型三型的真人行为读数,仅呈报不提案。 - -### 9.5 裁定(2026-10-03 用户) - -**裁甲+复查闸**。落点:T5 深挖钻头改非信息税设计(原案冻结)/T6 净化工兵仅限伤害型+清除工具件族不做/T10 复查闸呈报/信息类派生动词维持全禁/文档口径=「伤害型=资源带;信息型=永久税(红线①看门税,设计上不可对冲)」。**乙案备选内容(信息型清除工具件族/深挖钻头原案/概率收窄派生动词)已自包含迁 06「双层 BD 延期与备选内容总登记」**——重启条件=R4 甲复查闸读数支持+用户显式放宽红线①边界(属红线变更,须用户发起),任务书/定稿退役后内容不丢。 diff --git a/design/research/任务书-美术圣经v3.5冻结与落码-2026-09-29.md b/design/research/任务书-美术圣经v3.5冻结与落码-2026-09-29.md deleted file mode 100644 index c3603ff6..00000000 --- a/design/research/任务书-美术圣经v3.5冻结与落码-2026-09-29.md +++ /dev/null @@ -1,54 +0,0 @@ -# 任务书:美术圣经 v3.5 冻结与落码(棋盘高墙+UI 视觉规格落地,迭代 9 前置卡组) - -> 2026-09-29 由主会话固化,交执行会话。用户新 v3.5 方向稿验收通过(原话「暂时没有其他问题,可以使用」,台账 281 验收记录)后立项;本任务书=批 A(机检冻结)+批 B(落码)两段的执行规格,编入 roadmap 迭代 9 前置卡组。 -> **执行前必读**(按序): -> 1. `tools/render_sample_sheet_v3.py`——**视觉规格正文**(用户验收态脚本,新 v3.5=merge 4f6ac17);三条用户指令的落地实现都在此文件 -> 2. `design/art/art-bible.md` v3.0(2026-09-29 中修批——明度分层/色牌降级/语义色域限定/装饰解禁/整屏样张闸/舞台正面目标/全局对比度/字号 16-14) -> 3. `design/research/art-bible-ux-review-2026-09-29.md`(六病根审视报告——本批修法依据,merge d88dae8) -> 4. `artwork/mockups/sample-batch-v35-draft-2026-09-29.png` + `v35-new-board-zoom-2026-09-29.png`——**用户验收基准图**(落码后实机与此对齐) -> 5. `artwork/mockups/v33-tile-consensus-2026-09-29.png`——板块共识图((a)–(j) 概念定案,用户全确认) -> 6. `CLAUDE.md` 分支纪律(worktree 铁律) -> 规格均已拍板,勿重新发明需求;**规格理解有分歧→停下向用户复述确认,勿自行变通**(2026-09-29 流程红线:复述确认制——视觉类改动先文字复述+疑点列清,用户逐条确认后才动手;「顺手改」零容忍)。 - -## 1. 背景与现状 - -- 圣经 v3.0 中修批已落(案 B,merge 9d69c7e);样张方向稿 v3.x 系列经用户逐轮目检+复述确认制收敛至**新 v3.5**(旧 v3.5/v3.6 被用户删除视同不存在,基线=v3.4 文件+三条指令)。 -- **新 v3.5 视觉规格(用户验收定案,本任务事实源)**: - 1. **格底明度分档**:已开格底=地板瓦片归一 L≈0.10(候选带 0.08–0.14;现行瓦片 L0.036 实为**提亮**;方向稿用程序归一示意,终稿归地板素材重产,§8.5); - 2. **数字亮墨直画**:三档色温——1–3 冷亮 `#D8ECF0`/4–5 暖白 `#F0E2C8`/6–8 金亮 `#F8E3A8`,直接画已开格底,实测对比 6.0–6.3:1; - 3. **色牌后备**:`#F5EAD3` 仅复杂格底(物件纹样/装饰变体格)垫牌兜底,牌上用深墨族(12:1); - 4. **E 格高墙(用户三条指令)**:地面格南邻墙→南部 **30%** 承接墙面(=墙顶瓦片纹理**原亮度**直贴,零暗档零阴影——用户终裁「没有什么阴影影响,它们是同样颜色的」);(b)-(c) 连接处**无边框**(渲染格线跳过该交界段);连续墙体内侧不出立面; - 5. **南向厚度面**:v3.4 现状保留(南向墙格底部暗档+D 投影黑带在用户验收图内,本批不动); - 6. **装饰物件级解禁**(小石块堆演示态,专属形状家族+零信息纪律)、**B 区舞台**(世界底层暗背景+顶光柱+地台落影,§6.1); - 7. **整屏四屏方向稿已出**(战斗=样张内嵌;关卡/菜单/营地=`artwork/mockups/v3-draft-2026-09-29/`;营地屏首次成稿)。 - -## 2. 批 A:机检冻结批(纯脚本断言定值,零视觉变化,半日级) - -- **A1 断言定值**:`render_sample_sheet_v3.py` 内「候选/参考/待校准」口径转正式——A3b 图底分离 Δ≥30 定值(实测 38);F6 沿用 v3.4 双明度带口径;A4 尺寸基线按现行资产实态固化(立绘 46×48 等)。 -- **A2 产物转正**:输出名转 `sample-batch-v3-final-<日期>.png`+机检报告落 `design/research/` 标注「冻结」;圣经 §1.4 补样张 v3 冻结条目(四冻结之①④**重冻**:数字形制=亮墨直画+色牌后备;砖面形态=E 格高墙 30% 词表扩展)——圣经版本号 v3.1。 -- **A3 人闸豁免说明**:气质终审已由用户 2026-09-29 验收完成(台账 281),冻结批不再开人闸。 -- **验收**:机检 17/17 全绿+圣经 v3.1 落籍。 - -## 3. 批 B:落码批(迭代 9 前置卡组,逐卡对应 06 条目) - -- **B1 棋盘渲染**(`board_world.gd`/`board_cell_unit.gd`):E 格高墙进实机渲染(方向稿 draw_facade/is_facade_cell 算法移植——30% 高/顶面纹理原亮度/连续墙内不出立面;(b)-(c) 交界无边框=格线绘制跳过该段);地板归一 L0.10(程序归一同方向稿,素材重产归资产批);南向厚度面保持现行。 -- **B2 数字承载切换**(`ui_kit.gd`+数字渲染路径):亮墨三档直画+色牌后备路径(复杂格底判定=物件纹样/装饰变体格);旧「数字必垫色牌」路径退役。 -- **B3 ui_kit 对比度与字号**:现行 4 处不达标修复(C 区属性行 1.31:1/结算明细条 2.63:1/菜单说明 2.58:1/菜单副标题 3.54:1——实测数据=`artwork/ui-redesign-2026-09-29/对比报告.md` §一,其「落地顺序」1/2 步并入本卡);字号下限正文 ≥16px/tooltip ≥14px;暗底呈现态双色墨制扩展到全部暗底件。 -- **B4 B 区舞台**:世界底层暗背景+立绘地台落影+顶光柱氛围(§6.1 正面目标落码;方向稿 B 区画法=render_sample_sheet_v3.py render_battle_screen)。 -- **B5 整屏样张闸首跑**(§1.4 新闸):战斗/关卡/菜单/营地四屏断言——全局文字 ≥4.5:1/明度三档带(信息面>世界中>世界底)/整屏焦点预算/文字禁压纹理;HTML 方向稿(v3-draft 目录)为关卡/菜单/营地屏基准。 -- **B6 探针与冒烟**:ui_input/click/layout 三探针随动+run_smoke 全量;**重闸**=全量轻闸+doc 三闸+熵增闸(涉呈现不涉核心,MC 对拍预期零扰动——呈现层改动不触逻辑)。 -- **人闸**:实机目检由用户终验(对照 v35 验收基准图)。 - -## 4. 纪律与边界 - -- worktree 铁律;**复述确认制**(视觉类改动先复述后动手);素材不入 git(`load_tex` exists 守卫);§8.5 结构件纪律(禁渐变伪造结构件)。 -- **明确不在本批**:资产升档重产(64/96 档——06「资产升档重产批」独立挂账)/地板瓦片素材重产(落码用程序归一,重产归资产批)/underdark·deep_underdark 换色/营地 2D 画面(M-4)/关卡地图屏结构改动(冻结件不动)。 -- 已知限制逐条知悉,不在本批顺手修。 - -## 5. 参考料 - -- 06-待办清单对应条目:「样张 v3 重跑批」(本任务书批 A 即其执行)/「ui_kit 与棋盘渲染落码批」(=批 B)/「资产升档重产批」(不在本批)。 -- 用户验收链:审视报告(d88dae8)→圣经 v3.0(9d69c7e)→方向稿 v3.x 系列(273-281 台账)→新 v3.5 验收(4f6ac17)。 -- 反面清单(已有教训,勿重犯):E 墙面禁平涂新颜色(材质必须取墙顶瓦片);禁自加光影/明度分档类「专业表达」;改渲染层先清查既有结构件叠加时序;worktree remove 前先拷产物回主区。 - -*任务书 2026-09-29 由主会话固化;规格源头=用户逐条拍板(台账 273–281+圣经 v3.0+新 v3.5 三条指令)。* diff --git a/design/research/任务书-视野迷雾实施批-2026-10-02.md b/design/research/任务书-视野迷雾实施批-2026-10-02.md deleted file mode 100644 index cc4b2f18..00000000 --- a/design/research/任务书-视野迷雾实施批-2026-10-02.md +++ /dev/null @@ -1,65 +0,0 @@ -# 任务书:视野迷雾实施批(编卡草案——裁决已齐,待主线排期点名) - -> 成文 2026-10-02。裁决权威 = [HUD框架](../gdd/systems/表现与支撑/HUD框架.md)「视野迷雾:菱形灯光区与黑暗边界」节 v0.13(全项目唯一正主,2026-09-30 用户拍板立项+四配套裁决随节)+ [06-待办清单](../gdd/06-待办清单.md)「视野限制/魔法提灯」条状态节。**本批无待裁拍板点**——四裁决(甲案迷雾/暗淡记忆态/8 格同圈/提灯+2 微光不扩)全部已落正主节。**排期:默认 M-4 窗口(迷雾改玩家可见信息面,若插 Alpha 前会顺延 T19 真人读数采集——插队须用户点名);点名即开工,本文不占迭代号。** - -## 一、迭代目标与完成定义 - -**目标一句话**:棋盘只完整渲染以角色为中心的菱形灯光区(起步半径=微光环 8 格同圈),区外未开格全黑、区外已开格暗淡记忆态(灰显可读、数字可读),灯光随角色移动实时跟随——洞穴举灯探索的纯呈现层机制。 - -**完成定义**:①迷雾遮蔽+灯光区跟随上线(迷雾开关可分层验证);②暗淡记忆态呈现(区外已开格灰显、数字仍可读);③art-bible 黑暗区域渲染规格落文(暗淡态明度/迷雾过渡——现圣经零此节,T1 补);④探针断言(迷雾边界/记忆态/两态逐位一致);⑤正主节验收线(HUD框架:264)全过+实机目检人闸。 - -## 二、现状事实(代码级,2026-10-02 核证) - -| 面 | 现状 | 位置 | -|---|---|---| -| 正主定义 | 迷雾节 v0.13 全定义在案(生命周期/边界/验收线 264),**实施零开工** | `design/gdd/systems/表现与支撑/HUD框架.md:157-168,264,299` | -| art-bible | **无黑暗区域/迷雾渲染节**——暗淡态明度与迷雾过渡规格缺位,归本批补 | `design/art/art-bible.md`(grep 零命中) | -| 格态 | 已开/未开两态(雾格 2026-09-15 整体退役);初始展开=出生 3×3+连通开阔地(10×10 板均值 66.5 格——**收窄不在本案**) | 排雷玩法 v0.2 版本行 | -| 微光 | 英雄周围 8 格未开格类型微光(五组色相样张 v2 冻结,art-bible §4.2)——灯光圈与微光环同圈起步 | art-bible §4.2 | -| 提灯 | **效果载体不在本批**:提灯=aux_items 新行随 Alpha 信息件重定批登记;灯甲呈现面挂「资产升档重产批」——本批只把半径做成参数化(+2 留插值位) | HUD框架:168 | -| 渲染载体 | CellUnit 逐格 CanvasItem(144 格/12×12 板)——per-cell 调制为最小侵入路径;结算期去饱和偏移(settlement_fx_view)为同族先例 | `game/presentation/views/` | -| 探针 | ui_input_probe 十一断言现行——迷雾新增呈现态断言随批扩 | `game/smoke/ui_input_probe.gd` | - -## 三、设计契约(违反即返工,🔴 触碰=L3 停机) - -1. 🔴 **纯呈现层**:已开/未开格态、数字真值、清图判定零影响——同板同动作序列迷雾开/关两态结算结果**逐位一致**(MC 对拍零扰动是硬断言);核心层零改动零触碰。 -2. 🔴 **类型微光不随视野扩**(裁决④):类型先读仍只贴身 8 格,微光锚=可挖域;迷雾只遮蔽「灯光区外」的视觉,不改微光语义。 -3. **黑暗区域规格先落 art-bible 再落码**(规格不重发明纪律——T1 前置 T2)。 -4. 素材不入 git;迷雾渲染零新素材(程序化遮罩/调制)。 -5. 半径参数化(LIGHT_RADIUS 表值/常量),+2 提灯插值位预留但不接效果。 - -## 四、范围边界 - -**本批做**:迷雾遮蔽+菱形灯光区(8 格起步参数化)+暗淡记忆态+art-bible 黑暗区域节+探针断言+实机目检人闸。 - -**本批不做**:初始展开收窄(后置与「雷格与安全格资源分布差异化」Alpha 批窗口合并再议);提灯效果接线(aux_items 行归 Alpha 信息件重定批);提灯灯甲立绘呈现(挂资产升档重产批);微光语义任何改动;核心层任何改动。 - -## 五、任务卡(T0–T6) - -| 卡 | 内容 | 估时 | -|---|---|---| -| T0 | 开工基线:worktree+归属核对+冒烟复读+MC 对拍基准记档(纯呈现批零漂移预挂) | 0.5h | -| T1 | **art-bible 黑暗区域渲染规格落文**(新节):区外未开格全黑(不透明 vs 高遮蔽档二选一落定)、暗淡记忆态明度值(灰显可读档)、迷雾过渡边(硬边 vs 渐过渡)、与亮墨三档/色牌的叠读可辨性自查 | 0.5d | -| T2 | **迷雾渲染落码**:菱形灯光区(曼哈顿距离 ≤8 参数化)随角色位置实时跟随;区外未开格全黑遮蔽;战斗内持续/换图重置生命周期 | 1d | -| T3 | **暗淡记忆态**:区外已开格灰显+数字仍可读(明度按 T1 冻结值);与结算期去饱和的叠加态共存校验 | 0.5d | -| T4 | **探针断言**:迷雾开/关两态结算逐位一致(确定性夹具)、灯光边界格呈态、记忆态可读性、半径参数生效 | 0.5d | -| T5 | **连带修订**:HUD框架 迷雾节补「已实施」注记+art-bible 版本行+06 条目收口 | 0.5h | -| T6 | 重闸+出口人闸:全量轻闸+MC 对拍零漂移+实机目检(迷雾观感/记忆态可读性/移动跟随流畅度) | 0.5h+人闸 | - -## 六、验证闸 - -轻闸(每轮):run_smoke 全量+ui_input_probe(触碰 presentation 加 ui_click_probe+ui_layout_probe)。重闸(T6):全量+doc 三闸零新增+熵增闸+**MC 逐位对拍零漂移**(纯呈现硬断言)。 - -## 七、异常分级 - -L1 自救一次重试;L2 连续 3 次同红灯记录继续;L3 停机(触发面:契约 1 两态漂移、契约 2 微光语义被触碰、渲染性能塌方〔迷雾层致 draw calls 超 200 基线——须回 T2 换遮罩实现〕)。 - -## 八、代拍板白名单 - -可代拍:T1 规格落文的明度具体值(样张闸自检锚)、探针断言期望、doc 措辞。禁代拍:全黑 vs 高遮蔽档(人闸目检裁)、半径基准值改动、任何微光/格态语义。 - -## 版本历史 - -| 版本 | 日期 | 改动 | -|---|---|---| -| v1.0 | 2026-10-02 | 编卡草案成文:正主节四裁决已齐故无待裁拍板点;T0-T6;提灯效果面划出本批(归 Alpha 信息件批) | diff --git a/design/research/任务书-魔法道具同调实施批-2026-10-02.md b/design/research/任务书-魔法道具同调实施批-2026-10-02.md deleted file mode 100644 index ff31e4d9..00000000 --- a/design/research/任务书-魔法道具同调实施批-2026-10-02.md +++ /dev/null @@ -1,95 +0,0 @@ -# 任务书:魔法道具同调实施批(v1.1 定稿——P1-P8 已全裁,待 Alpha 后发令开工) - -> **⚠ 名称已变更(2026-10-05,用户拍板)**:本任务书成文时系统名为「魔法道具」,该名**已改为「秘宝」**(「魔法」一词在本作已被征用为敌方侧伤害/护甲语汇)。**本文正文按定稿原样保留旧名**,现行正主 = [秘宝](../gdd/systems/排雷循环/秘宝.md)。读本文时「魔法道具」= 现行「秘宝」;**任务内容与 P1-P8 裁决零变更**,同调位机制名亦保留不变。 - -> 成文 2026-10-02(v1.0 草案同日获 P1-P8 全裁,v1.1 落文)。设计权威底稿 = [proposal-magic-item-attunement-2026-09-22.md](proposal-magic-item-attunement-2026-09-22.md)(2026-09-22 用户八条拍板在案,本文不得与该裁决记录冲突)。**开工门(P7 乙)= Alpha 到手(M-3 关闭)+ 用户发任务书;届时迭代归属 M-4 迭代 11 评估窗口,与反制批/商店重构批并列排序。** - -## 一、迭代目标与完成定义 - -**目标一句话**:魔法道具从「局内掉落+关卡域库存+挖掘期两步使用」的切片期过渡形态,整体替换为「开局前营地装配、占同调位(0 起步/硬上限 3/里程碑谓词表增长)、被动件整局生效/主动件每冒险充能」的终局形态(八拍板底稿 §1.1)。 - -**完成定义**:①`attunement_growth.tres` 谓词表上线,同调位读数源从 `transitional_sync_slots` 过渡键切换(迭代 10 欠账③清偿);②营地装配覆盖层可装配/换装,装配关系入存档持久;③**九件**(被动 6+主动 3,含刷新件)效果全部接线可用;④局内 aux 获取渠道(掉落投放/停点渠道 aux 卡)退役,三选一池收缩注记;⑤attune=off/on 分层读数出讫;⑥连带修订面(§十)全部落文;⑦重闸全绿+出口人闸过。 - -## 二、现状事实(代码级,2026-10-02 核证) - -| 面 | 现状 | 位置 | -|---|---|---| -| 过渡键 | `transitional_sync_slots = 1`(provisional,schema 钳 [0,9]) | `game/data/tables/adventure.tres:24`;schema `adventure_table.gd` | -| 上限约束接线 | 停点渠道满位触发替换交互(N+1 选 N、可放弃);战斗内渠道满位沉没不入 | `game/core/level_runner.gd:562-566`(注释自认「全渠道统一收口随同调实施批」)、`game/core/battle_orchestrator.gd:375-378` | -| aux 表 | AuxItemTable 七字段 + MVP 六行(罗盘 retired/失义件 deferred);effect_kinds 现枚举 `mine_reveal/reward_preview/ap_grant`,dimensions 五维,use_phase 单值 `active_dig` | `game/data/schemas/aux_item_table.gd:24-29` | -| 存档 | v3 现行(断点附随件+摘要 keystone_drops);meta 域已有 `level_clear_counts`/`boss_first_kill`/`keystone_balance`/`forge_levels`/`item_unlocks`;**无 boss 击杀总数(含重复)计数器** | `game/core/save_manager.gd:33,78-79,202-224` | -| 计数源 | `clear_count()` 按关累计已有(裁决 4 的一半);Boss 首杀标记位已有、**总数另记未做** | `save_manager.gd:202-207` | -| 营地 | CampOverlay 三柜台(属性锻造/道具工坊/奖励格图鉴),行板结构带探针依赖 | `game/presentation/views/camp_overlay_view.gd:4-27` | -| 奖励面耦合 | 迭代 10 三选一池含 aux_item 候选卡(冒烟 a11 `_bonus_aux_carry` 断言在册)——同调批须把 aux 卡从池退役并收缩池 | `game/smoke/smoke_all.gd:517-529` | -| 工坊 | `workshop_items` 行族 clear_threshold [1,99] 六件,解锁门槛挂总通关次数 | `design/registry/entities.yaml:622` | - -## 三、设计契约(违反即返工,🔴 触碰=L3 停机) - -1. 🔴 **机制轴禁裸 flat 数值**(底稿 §1.2 立约)——效果字段出现无条件属性加项即返工;schema 校验「形态约束」随 T1 落。 -2. 🔴 **真视窄域护栏 ≤3×3**(承重,加载期校验)——探巢摆钟沿用,不得扩域。 -3. 🔴 **核心层零 await**(battle_orchestrator 文件头契约)——MC 逐位对拍漂移即 L3。 -4. **零随机**纪律:主动件效果信息全部来自既有事实源(恒真数字/Ready 映射/账本),零 RNG 流消费;三选一刷新的重抽消费 reward_pick 既有洗牌流,不开新流。 -5. **排雷玩法零特判延伸**:代码零魔法道具分支(现有承重规则,随批复核)。 -6. **雷安同池冻结不动**:偏运硬币只动池内权重投影,不碰池结构(底稿 §3)。 -7. **数值主权**:里程碑阈值/充能数/效果 N 值/X/Y 值全部 provisional 投表,归难度曲线与Boss;本文与任务卡只锁形态。 -8. **素材不入 git 维持**;装配 UI 程序占位面用 UiKit 既有件(字形回退合法)。 - -## 四、范围边界 - -**本批做**:A 表与 schema / B 存档与账本 / C 运行期(装配+被动+主动+三选一刷新)/ 退役面切换 / D 分层验证 / 连带修订面。 - -**本批不做**:装配 UI 视觉终稿(P2 甲——归营地批,本批程序占位);**GP 商店房重构(P1 衍生另立项,06 在册「GP 商店房重构」条)**;反制件铺量(§8.3,Alpha 反制批);淬毒刃纹形态终裁(§8.1 随试玩判读,本批按提案现形态投 provisional);属性锻造/GP 商店两数值轴任何改动;教学/引导面。 - -**退役面清单**(T7 执行):①掉落投放三件渠道(迭代 7 投放权重面)②停点渠道 aux_item 卡(三选一池收缩,注记随批)③关卡域库存+挖掘期两步使用的 aux 面拆改(四步受理保留给主动充能件复用)④`transitional_sync_slots` 过渡键退役(读取点切换 attunement 求值,迭代 10 欠账③注记)⑤F2 覆盖面与工坊「已退役」呈现面改写。 - -## 五、前置拍板点裁决记录(2026-10-02 用户全裁) - -| # | 拍板点 | 裁决 | -|---|---|---| -| P1 | 商店刷新件去留 | **甲+衍生新工作项**:①三选一刷新=X/Y 双源——X=魔法道具刷新件(**同调目录新增第九件**,占 1 同调位,每次碰三选一重新给 X 次、优先消耗、不结转)+Y=营地升级行(每冒险开局给 Y 次、冒险周期池、用完即无);初始 0=无刷新能力(与同调位 0 起步同构);刷新=重抽三候选,池规则(不放回/达上限剔牌/掷定前置直显/可中断停点)全保留。②**GP 商店房重构另立项**(06 已登记):与三选一同构交互——进店随机池抽 3、买 1 → **三个全重抽**(未买不保留)、无独立刷新动作(重抽绑定购买)、价格=基价×b^(关序−1)×A^(本次进店已购次数)(A 方向 1.5-2 ≫ b 方向 1.1,系数归 game-balancer 研究提案后用户拍板);商店池维持纯数值道具(三轴 doctrine 裁决 1 锁死);**2026-09-20「三件全陈列、无刷新」裁决正式取代** | -| P2 | 装配 UI 本批做到哪 | **甲**·程序占位面(复用 CampOverlay 行板件;视觉终稿归营地批,不卡样张闸) | -| P3 | 首批铺量 | **甲**·八件全上(淬毒/殉爆/惊巢/晨令/蓄能/摆钟/炸格/硬币)+P1 刷新件=九件 | -| P4 | 「前 3 轮」表值化 | **甲**·`effective_rounds=3` 入道具定义表(调平衡改表不改码) | -| P5 | 爆破工兵包 | **甲**·T6 前置半日影响评估(中立移除格态触排雷玩法/战斗结算/清图判定三面),破面大即拆后批 | -| P6 | 批体形态 | **甲**·知情超限单批(估 7-8 工作日 vs 软盒 3 日,迭代 9 两段式先例) | -| P7 | 迭代归属与门 | **乙**·M-4 迭代 11 评估窗口(**Alpha 到手后**开工;依据:aux 卡退役+同调带再扰通关率读数,迭代 10 刚锚 80000,Alpha 读数采完再动内容面) | -| P8 | 存档版本 | **甲**·v4+兼容迁移体(semver 断言,迭代 10 g 裁先例) | - -## 六、任务卡(T0–T10) - -| 卡 | 内容 | 估时 | -|---|---|---| -| T0 | 开工基线:worktree+归属核对+冒烟复读+MC 现行锚对拍基准记档 | 0.5h | -| T1 | **A 表与 schema**:`attunement_growth.tres` 新建(slot_cap/milestones 谓词行:计数键封闭枚举+阈值 [1,999]+Σgrant≤slot_cap 校验);道具定义表重构(形态 passive/active_charged、`charges_per_adventure`、`slot_cost=1`、`unlock_requires` 谓词行、`effective_rounds`)+**刷新件行(X 表值)**;「零裸 flat」形态校验入 schema;registry `attunement_growth`/`attunement_slots` 新条目 | 1d | -| T2 | **B 存档与账本**:save v4(装配关系/里程碑达成态〔或纯派生〕/`boss_kill_count` 总数/主动件充能余量/**Y 升级解锁态**);Boss 击杀总数事件挂收束入账处(`save_manager.gd:216-224` 邻接);`clear_count` 复用零改动 | 0.5-1d | -| T3 | **求值服务**:里程碑谓词实时求值(营地进冒险前求同调位 Slots=Σ达成 grant clamp slot_cap);过渡键读取点切换(level_runner/battle_orchestrator 两处+smoke 断言随动);迭代 10 欠账③切换注记 | 0.5d | -| T4 | **营地装配覆盖层**(P2 甲 程序占位):第四柜台 or 工坊扩容;装配/换装/同调位点亮呈现+**Y 升级行(购买/等级呈现)**;装配关系写存档;探针断言(装配持久/满位禁选) | 1d | -| T5 | **被动件接入**(P3 甲):淬毒→克制结算面;标中殉爆→旗判定面;惊巢反制→雷罚兑付减半+反弹;工兵晨令→`queue_ap_delta` 前 N 轮(P4 表值);偏运硬币→`reward_roll` 权重投影(池结构零触碰);**刷新件→三选一刷新消费逻辑**(BonusPickOverlay 刷新钮+X/Y 双计数器+优先 X+重抽保池规则) | 1.5-2d | -| T6 | **主动件充能编排**(P5 甲 前置半日影响评估,破面大拆后批):复用旧四步受理+每冒险充能扣减+冒险开始重置;掘进蓄能开格计数;探巢摆钟叠加层;爆破工兵包按评估结论 | 1.5d | -| T7 | **退役面切换**(§四清单五件):掉落渠道/停点 aux 卡/库存两步使用拆改/过渡键退役/F2 与工坊呈现改写;三选一池收缩与权重注记 | 1d | -| T8 | **D 验证**:冒烟新增断言(谓词达成/clamp/装配持久/充能重置/退役面零残/**刷新双计数器语义**);MC 增 attune=off/on 开关+贪心装配画像分层读数(≥50 distinct seeds;autoplay **默认不刷**——钓鱼归玩家,策略面注记随批;off 态 X=Y=0 零扰动);换算率表新增「同调轴」登记行(行值归调参批) | 1d | -| T9 | **连带修订面**(§十清单)+doc 三闸+熵增闸 | 0.5d | -| T10 | 重闸+出口人闸:全量轻闸+MC 对拍+出口检查单+代拍板追认清单 | 0.5h+人闸 | - -## 七、验证闸 - -轻闸(每轮):run_smoke 全量+ui_input_probe;触碰 presentation 加跑 ui_click_probe+ui_layout_probe。重闸(T10):全量+doc 三闸零新增+熵增闸+MC 逐位对拍(**attune=off 必须与现行锚逐位一致**——机制轴关着时零扰动是硬断言)。分层读数:attune=off 续用现行带;attune=on 带平移归调参批投值(底稿 §7,商店 shop=off/on 分层先例同法)。 - -## 八、异常分级 - -L1 自救一次重试;L2 连续 3 次同红灯记录继续+升级呈报;L3 停机写报告(触发面:契约 1-3 任何一条、炸格影响评估破面、MC off 态漂移、谓词表 schema 无法表达用户裁决的增长形态)。 - -## 九、代拍板白名单 - -可代拍:provisional 表值具体数字(形态已锁、归调参批复核)、冒烟断言期望值随实现微调、doc 措辞。禁代拍:目录增删件、同调位增长形态变更(谓词 schema 升级)、带值、X/Y 语义变更。 - -## 十、连带修订面(执行于 T9,底稿 §9 展开) - -`魔法道具.md`(定位重写+掉落/库存节退役,底稿即权威底稿)/ `元进度.md`(道具工坊柜台职责改写+Boss 击杀计数登记+**Y 刷新升级行登记**)/ `地图战斗资源.md`(硬币权重投影注记)/ `行动经济.md`(两 AP 件兑现通道注记)/ `05-不做清单.md`(道具替代推理边界锚复核)/ `关卡节点地图.md`+`node-reward.md`(奖励节点渠道退役改写 v2.1 随批修订+**三选一刷新注记**)/ registry `entities.yaml`(aux_items 重构+attunement 两新条目+save_file 新域注记)/ `06-待办清单.md`(同调实施批条目收口+迭代 10 欠账③销账+炸格待办 C 处置)/ art-bible 微光语义色冲突面(独立线,本批零触碰)。 - -## 版本历史 - -| 版本 | 日期 | 改动 | -|---|---|---| -| v1.0 | 2026-10-02 | 草案成文:提案 §6/§9 细化为 T0-T10+P1-P8 拍板点;现状事实按 2026-10-02 代码核证 | -| v1.1 | 2026-10-02 | **P1-P8 全裁落文**:三选一刷新 X/Y 双源入批(目录第九件刷新件+Y 营地升级行+T5 消费逻辑);GP 商店房重构另立项(06 在册);九件目录/T1-T8 卡调整;P7 乙定门=Alpha 后 M-4 迭代 11 评估窗口 | diff --git a/design/research/方案-挖掘风险不等式修订-2026-10-04.md b/design/research/方案-挖掘风险不等式修订-2026-10-04.md deleted file mode 100644 index e7db1e73..00000000 --- a/design/research/方案-挖掘风险不等式修订-2026-10-04.md +++ /dev/null @@ -1,326 +0,0 @@ -# 方案:挖掘风险不等式结构性修订(纯调研,零代码) - -> 日期:2026-10-04 -> 性质:调研报告——只推演、不跑模拟、不动代码与表值;拍板点全部归用户(见 §八) -> 事实源:战斗结算.md / 难度曲线与Boss.md / 增益状态.md(三正主)+ git 提交 d70f6c3 §二 + 现行 `game/data/tables/*.tres` + `tools/clear_dominance_audit.py`(注册重跑入口) - -## 一、摘要 - -**破线不是一个点,是四层,其中两层是结构性的(表值调不掉),两层是数值性的(现行值链下已有变化)。** - -| 层 | 判式 | 现行状态 | 量级 | 性质 | -|---|---|---|---|---| -| L1 界形式条款3 | P(安全)×增益当量**下界** > P(雷)×惩罚**上界** | 破线 | ×4.4 ~ ×13.3(缺口倍数) | **结构性**——最弱奖励 0.2 当量 vs 最强惩罚 8 当量,量纲断裂,任何表值微调闭不上 | -| L2 旗对已知安全格边际 | E[标中兑付] vs E[挖已知安全格] | 恒 ≤ 0 | 相对损失 = 清图进度 + 信息价值(当量外) | **结构性**——雷安同池 + 同正向字典 ⇒ 旗兑付分布 ≡ 安全格兑付分布,期望永不胜出;d70f6c3 的风险端 ×1.9 对此层**零效力** | -| L3 逐型条件净期望 | (1−ρ)P_t > ρN_t 逐型 | pierce 型破线 / magic 型破线 / heal 型踩线 | −1.25 / −0.50 / 0 当量·格(名义 ρ);pierce 型实测 ρ 下仍 −0.16 | 数值性——直伤三型(权重 26%)是残留破线的具体格子 | -| L4 盲挖净期望(聚合) | (1−ρ)E_dig − ρV_mine ≥ 0 | **已翻正** | +0.47 ~ +1.12 当量·格(u=1..3,名义 ρ) | 数值性——6/8/8 转正后比 d70f6c3 复算时更健康;但 V/E 比值在 u=3(多敌满配)最劣,与历史「多敌满配深度破线」同源 | - -**另一关键结论(推演引理,§四.3)**:雷安同池结构下,「标中旗 vs 盲挖」的比较退化为纯概率比较 **q > 1−ρ**(q = 玩家对该格为雷的置信),与全部当量表值无关——雷当量抬到多高都动不了这一支。风险端定价只影响「盲挖有多舒服」,不影响「旗相对盲挖有多值」。这就是 d70f6c3「缓解未闭合」的结构根源:**缓解的是 L3/L4,闭不了 L1/L2。** - -修订主推:**案甲(判式换代双条件)+ 案丙(比值带判读)组合**——先立新尺(判式换代是文档修订不是调参),旗溢价条款给 L2 结构破线一个正当地位。案乙(η 系数)降格为案甲的实测化读数而非独立判式;案丁(异池/累积惩罚)列结构后备,与 6/8/8 刚转正 + 普通 L2 缺口加深的现状有方向冲突,须用户裁。 - ---- - -## 二、口径与判式沿革 - -### 2.1 判式的四个历史形态 - -1. **注册判式(首版验算所据,现行文档已退役待重立)**——旧版行动经济五条契约条款3 原文: - ``` - 条款 3(挖掘决策健康不等式): - P(安全) × 增益当量下界 > P(雷) × 敌方增益当量上界 - ``` - 出处:git `7876642^`(八型批前)行动经济.md。首版验算破线记录见 06-待办清单「挖掘风险不等式对账破线」条(归档值链:防御增益时长 1、行值 −30;两参考板形破线、多敌满配深度破线;升格曲线级约束——相关参数处禁独立调参联动)。 -2. **八型批改写(2026-09-20,现行文本)**——行动经济.md:130:「原『敌方伏击暴露不等式』随伏击机制退役作废——blast 负向现况 = 警觉……**惩罚当量对账模型归难度曲线与Boss 调参批重立**」。→ 本报告即「重立」的底稿。 -3. **重立记录(M-3 迭代 5 T3,2026-09-28)**——`design/qa/m3-iter5-lever-scan-2026-09-28.md` §三②:当量换算走效果档位对照表(flat E=表值;percent E=|层×行值|÷100×D_ref 每结算每层;**AC 轴=点数×5pp×D_ref=0.2 当量/次攻击**);结论「风险端定价对收益端系统性不足的状态未闭合;修正位=雷格惩罚行值/负向权重池,不在本批注册杠杆集」。 -4. **全量复算(迭代 8 卡⑧,2026-09-29,git d70f6c3 §二)**:直伤三行 1/2/2→4/5/5 后风险端当量 ×1.9,「与收益端的差距收窄但未反转(收益端含资源/成长复利,风险端为一次性直伤)——破线状态缓解、未闭合;结构性修订(雷安同池/差异化/累积惩罚)留 Alpha 批」。 - -### 2.2 本任务工作定义与口径判读 - -任务书定义:「标中旗的期望收益必须优于随便挖一格(当量比较式)」。与在册条款的映射:这是**条款2(标中旗锚)+ 条款3(挖掘风险不等式)合并的行为学读法**——条款2 只保「weaken > 最低档增益」的单点对照,条款3 管「挖一格净期望 > 0」,两者都管不住「旗 vs 挖」的**边际比较**。本报告按任务定义展开推演,同时把三层口径(条款2 单点锚 / 条款3 聚合健康 / 旗-挖边际)分开判读——**口径取舍本身列为拍板点 P2**。 - -### 2.3 事实源核证两处(与 d70f6c3 §二 的口径差异) - -- **格池 = 77 权重,不是 76**。代码核证:`reward_economy.gd` `_rollable_rows()`(207-213 行一带)收 `pool_tag=cell & polarity=positive & weight>0` 全集;`clear_blast` pool_tag=`clear_default` 是**清图槽对象、不挂格**(地图战斗资源.md §清图槽明文)。d70f6c3 §二 的 76 口径把清障炸药 weight 1 混计入池,系历史混计。现行正向行权重:attack 14 / defense 11 / blast 16 / heal **4** / weaken 8 / pierce 8 / magic 8 / action 6 / gp 2 = **77**。 -- **直伤雷现行 6/8/8,不是 4/5/5**。d70f6c3 投的是 4/5/5(provisional);2026-10-01 数值修复批「配套直伤雷当量同步上调(reward.tres 4/5/5→6/8/8,雷痛回归用户口径)」;2026-10-03 带换代批「直伤雷当量 6/8/8 转正(去 provisional)」。heal 权重同批链 2→4(Package B 第 2 轮)。**即 d70f6c3 复算之后风险端又被抬了一轮,其「×1.9」读数已时效化**——本报告 §四 为现行值链重算。 - ---- - -## 三、现行值链快照与推演假设 - -### 3.1 表值快照(全部读表核证,2026-10-04) - -| 件 | 值 | 出处 | -|---|---|---| -| 参考敞口 D_ref | 4 | settlement.tres equivalence_ref_damage | -| 完美乘数 p_perfect | 200(×2 第二份) | settlement.tres | -| AC 掷点 | d20;缺口 1-3→×0.75 / 4-7→×0.5 / 8+→×0.25;nat20 ×2 恒全额;floor 1 | settlement.tres | -| 主角 | max_hp 26 / atk 2 / armor_class 10 | hero.tres | -| 行动经济 | ap_per_round 8 / dig 1 / flag 1 / refresh 8(cap 2) | action_economy.tres | -| 棋盘 | 10×10(L1 前段)与 12×12(后段/Boss),mine_density 0.25,inferability 0.88 | board_gen.tres | -| 实测幸存雷率 | 10×10 ≈ 12.91/100 ≈ 0.129;12×12 ≈ 22.6/144 ≈ 0.157(先布后删落地值) | smoke/board_stat_probe 200 样本(2026-09-19 读数;板形行值此后未变) | -| 格池正向行 | attack_up 14(+50%×1拍)/ ac_up 11(AC+1×1拍)/ spark_aoe 16(flat 1 全体)/ heal_minor 4(flat 2)/ weaken 8(−65% 敌输出,dur2=有效1拍)/ pierce_strike 8(flat 2+克制)/ magic_bolt 8(flat 2)/ ap_up 6(+1AP)/ gp_coin 2(+3GP) | reward.tres(77 合计) | -| 负向字典行(weight=0) | enrage +25%×1拍(attack)/ off_guard AC−1×1拍(defense)/ 警觉 敌AC+1×1拍(blast)/ heal_backlash **6**(heal)/ sapped −25%×1拍(weaken)/ pierce_snare **8**(pierce)/ magic_recoil **8**(magic)/ ap_drain −1AP(action)/ gp_lose −2GP(gp) | reward.tres + status_effects.tres | - -### 3.2 推演假设(判读时必须带着看) - -- **A1 当量口径**:效果档位对照表单一口径(战斗结算.md 收益对照表 + lever-scan 重立模型):flat E=表值;percent E=|层×行值|÷100×D_ref(每结算每层);AC 轴=点数×5pp×D_ref(每吃掷点攻击)。 -- **A2 u 缩放**:u = 敌方单位数。hero 侧单目标效果不随 u 缩放;enemy 侧 side-wide 效果(ac_up 承伤面 / spark_aoe / weaken / enrage / off_guard)随 u 缩放——沿 audit 工具既有口径。 -- **A3 duration**:weaken dur2 按「先兑付后衰减」计有效 1 拍;enrage/off_guard/警觉/sapped dur1 计 1 拍。 -- **A4 警觉消费面**:主角每拍恰 1 次攻击 × 警觉 1 拍寿命 ⇒ E = 0.2 当量,u 无关。 -- **A5 gp 当量 = flat power 代理**(金币袋 3 / 破财 2)。对照表 flat 类枚举(直伤、治疗、行动点)**不含 gp——口径空白,本报告按代理计并登记**;精确口径应经商店定价换算(1 GP 的边际属性当量),归状态层/商店批复核。 -- **A6 ap 当量 = flat 表值 1**。机会成本口径(+1AP ≈ 多挖一格 ≈ E_dig + 进度 + 信息)更高——差异登记,不进主算。 -- **A7 ρ 双口径**:名义 0.25 与实测包络(0.129 / 0.157)并报;主表用名义(保守)。 -- **A8 复利不建模**:收益端静态口径。d70f6c3/lever-scan 的「收益端含资源/成长复利」作为定性输入保留——含复利口径下 L4 的判读会更保守,量化归复算批(需先给复利系数定义,见拍板点 P5)。 -- **A9 简化**:治疗不做满血封顶折减、溢杀不折减、清图奖励不入逐格当量(单独在 §四.4 讨论其对旗激励的支配性)。 - ---- - -## 四、① 破线残留的具体位置与量级(静态推演) - -### 4.1 单格收益端 E_dig(u) 与风险端 V_mine(u) - -E_dig = Σ_t w_t·P_t ÷ 77(安全格类型正向期望当量);V_mine = Σ_t w_t·N_t ÷ 77(踩雷/标空惩罚期望当量,同池同分布)。 - -| 分型(权重) | P_t(正向当量) | N_t(负向当量) | P_t 项合计 | N_t 项合计 | -|---|---|---|---|---| -| attack(14) | 0.50×4 = 2.0 | 0.25×4×u = 1.0u | 28.0 | 14.0u | -| defense(11) | 1×0.05×4×u = 0.2u | 0.2u | 2.2u | 2.2u | -| blast(16) | 1×u = 1.0u | 0.2(警觉,A4) | 16.0u | 3.2 | -| heal(4) | 2 | **6** | 8.0 | 24.0 | -| weaken(8) | 0.65×4×u = 2.6u | 0.25×4 = 1.0 | 20.8u | 8.0 | -| pierce(8) | max(1, 2−1) = **1**(轻甲 −1) | **8** | 8.0 | 64.0 | -| magic(8) | max(1, 2+0) = 2 | **8** | 16.0 | 64.0 | -| action(6) | 1(A6) | 1 | 6.0 | 6.0 | -| gp(2) | 3(A5 代理) | 2 | 6.0 | 4.0 | - -| | u=1 | u=2 | u=3 | -|---|---|---|---| -| **E_dig** | 111.0/77 = **1.442** | 150.0/77 = **1.948** | 189.0/77 = **2.455** | -| **V_mine** | 189.4/77 = **2.460** | 205.6/77 = **2.670** | 221.8/77 = **2.881** | -| **V/E 比值** | **1.71** | **1.37** | **1.17** | -| 盲挖净期望(名义 ρ=0.25) | 0.75×1.442−0.25×2.460 = **+0.47** | **+0.79** | **+1.12** | -| 盲挖净期望(实测 ρ=0.129,10×10) | **+0.94** | — | — | -| 界形式(min P_t × 0.75 vs max N_t × 0.25) | 0.15 vs 2.00 → **缺 13.3×** | 0.30 vs 2.00 → 6.7× | 0.45 vs 2.00 → **4.4×** | -| 界形式(实测 ρ=0.129,u=1) | 0.174 vs 1.033 → **缺 5.9×** | — | — | - -### 4.2 逐型条件净期望(挖一格已知其类型,名义 ρ=0.25) - -(1−ρ)P_t − ρN_t,单位当量/格: - -| 型 | 净期望 | 判 | 备注 | -|---|---|---|---| -| attack | +1.25 | ✓ | | -| defense | +0.10u | ✓ | 对称轴,恒 3:1 | -| blast | +0.75u − 0.05 | ✓ | | -| **heal** | **0**(1.5 − 1.5) | **踩线** | 恰好等号;实测 ρ 下 +0.97 转正 | -| weaken | +1.70(u=1) | ✓ | | -| **pierce** | **−1.25**(0.75 − 2.00) | **破线** | 实测 ρ 下仍 **−0.16**——唯一实测口径也破的型 | -| **magic** | **−0.50**(1.50 − 2.00) | **破线** | 实测 ρ 下 +0.71 转正 | -| action | +0.50 | ✓ | | -| gp | +1.75(代理口径) | ✓ | | - -加权合计 +0.466/格(与 4.1 聚合式吻合,交叉验证通过)。**残留破线的具体格子 = 直伤三型,根源是同轴镜像比失衡**:pierce 正 1 vs 负 8(1:8)、magic 正 2 vs 负 8(1:4)、heal 正 2 vs 负 6(1:3)——d70f6c3 投值时的设计意图是「负向 ≈ 正向 2–2.5 倍」,6/8/8 转正后实为 **3/4/4 倍**,叠加甲效加法核对穿刺正向下行(轻甲 −1 点 → 落地 1),pierce 轴被压到 1:8。 - -### 4.3 引理:旗-盲挖比较的概率化退化(同池结构定理) - -设玩家对某格为雷的置信为 q,旗判式两侧(标中兑付 W、标空惩罚 C)与盲挖两侧(安全格收益 R、踩雷惩罚 M): - -``` -EV_flag(q) = q·W − (1−q)·C -EV_blind = (1−ρ)·R − ρ·M -雷安同池 + 极性矩阵同字典 ⇒ W = R = E_dig,C = M = V_mine -⇒ EV_flag − EV_blind = (q + ρ − 1)(E_dig + V_mine) -``` - -因 E_dig + V_mine > 0 恒成立,**符号只由 q + ρ − 1 决定**: - -- 旗优于盲挖 ⇔ **q > 1−ρ**。名义 ρ=0.25 → 阈值 0.75;**实测幸存雷率 0.129 → 阈值 0.87**(「先布后删」删掉的雷把盲挖变安全,间接抬高了插旗的置信门槛)。 -- **与 E_dig、V_mine、D_ref、直伤雷 6/8/8 全部无关**。风险端定价影响的是「盲挖有多舒服」(L3/L4),不是「旗相对盲挖有多值」——d70f6c3 ×1.9 的「缓解」不落在此支。 -- 可推理率 ι=0.88 下,可推理格的 q ∈ {0,1}(证明级),可证雷的旗恒胜盲挖——**真正卡住旗的是与「挖已知安全格」的边际比较**(下条)。 - -### 4.4 L2 结构破线:旗对已知安全格恒非正 + 完美排雷的支配性 - -``` -EV_flag(q) − E_dig = −(1−q)(E_dig + V_mine) ≤ 0,等号仅 q=1 -``` - -q=1 时旗与挖已知安全格**期望兑付恰好相等**(同为 E_dig),但挖格额外产出:①清图进度(通往清图奖励 + 终局)②数字信息(抬全体后续 q)。⇒ **完美信息下旗仍严格次优**。现行旗的真实经济支柱不是标中兑付,而是**完美排雷 ×2**(需至少一面标中:clear_blast 32 当量级第二份,比 E_dig 高一个数量级)。这解释了行为面:旗只在「凑完美排雷」时被策略性插,日常边际上无人为兑付插旗——与 d70f6c3「缓解未闭合」的行为学含义一致。 - -### 4.5 d70f6c3 §二 读数的时效性修正 - -| 指标 | d70f6c3 时(4/5/5,heal 2,池 76 口径) | 现行(6/8/8,heal 4,池 77) | 变化 | -|---|---|---|---| -| 直伤型概率 | 18/76 = 23.7% | 20/77 = **26.0%** | +2.3pp | -| 直伤型雷条件期望 power | 3.78 | (4×6+8×8+8×8)/20 = **7.60** | ×2.01 | -| 单雷期望直伤(条件于踩雷) | 0.89 HP | 0.260×7.60 = **1.97 HP** | **×2.2** | -| V_mine 全字典(u=1) | 125.4/76 = 1.650 | **2.460** | ×1.49 | -| V/E 比值(u=1) | ≈1.19 | **1.71** | 风险端相对更重 | - -即:**d70f6c3 之后的两批(数值修复批 6/8/8 + heal 4)已把风险端再推高一截,静态口径下 L4 聚合已翻正、L3 只剩 pierce/magic 两型、L1/L2 两层结构性破线依旧**。「破线残留」的准确表述:结构层(L1 界形式、L2 旗边际)未动;数值层(L3/L4)在现行值链下已大体闭合,唯 pierce 型与 u=3 比值劣化点(1.17,多敌满配与历史「多敌满配深度破线」同源)仍在带外。 - ---- - -## 五、② 结构性修订候选案 - -> 每案给:数学形态 / 对难度包络的冲击方向 / 实施与复算设计 / 代价与风险。**全部为提案,选型归用户。** - -### 案甲:判式换代——单点不等式改双条件 - -**数学形态**(接替旧界形式条款3,落行动经济 F1 条款3 重立 + 战斗结算对照验收): - -``` -条件一(挖掘健康式,聚合): - 0 ≤ (1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≤ U_band 对全部参考板形 × u ∈ {1,2,3} - (ρ̂ = 名义 ρ 与实测幸存雷率取包络;下限 0 = 盲挖不为负;上限 U_band = 防收益端通胀) -条件二(旗溢价式,直击 L2): - E[标中兑付当量] ≥ (1+δ)·E_dig(u) δ = 旗溢价系数(provisional 0.25–0.5) -``` - -条件二的实施形态二选一(P3 拍板):**(a) 兑付溢价**——标中兑付按同型正向 ×(1+δ) 兑付(改战斗结算兑付公式,一处);**(b) 专属池重摇**——标中兑付从加重的强化池重摇类型(改地图战斗资源摇号结构,打破同池 parity,W 可独立于 R 抬升,是唯一能让引理失效的结构改动)。 - -**对难度包络的冲击方向**:抬旗吸引力 → 早期标旗率↑ → AP 从挖掘转向插旗 → 清图进度变慢、轮数↑ → 敌方结算次数↑(**难度上行**);同时完美排雷达成率↑ → 清图奖励第二份频度↑(**难度下行**)。两向对冲,净方向须 MC 判读;形态 (a) 实施最小、(b) 语义最正(溢价来自「巢穴被控制」的叙事位)。 - -**实施与复算**:文档修订批(行动经济 F1 / 战斗结算收益对照表与验收标准 / 难度曲线联动表 / registry clause3 重立条)+ 若取 (a) 一处兑付公式 + smoke 断言随批。复算 = §七锚全套。 - -**代价与风险**:δ 与 p_perfect 叠加会放大旗激励 → **标旗 rush 退化复发风险**(AP 压速批的根因正是首轮全标旗)——须与 ap_per_round 联动检算;形态 (b) 动摇「雷安同池」结构冻结项,走修订不走调参。 - -### 案乙:引入旗命中率系数 η - -**数学形态**:把判式的玩家侧参数显式化为可测命中率 η = 标中旗数 ÷ 总插旗数(按策略画像实测),判式改为可验收的行为锚: - -``` -锚一(正期望线):η ≥ V_mine ÷ (E_dig + V_mine) 现行 u=1:η ≥ 2.46/3.90 = 0.63 -锚二(占优盲挖线):η ≥ 1 − ρ̂ 名义 0.75 / 实测 0.87 -``` - -**对难度包络的冲击方向**:零直接冲击(不改任何表值)——它给后续调参提供**合法方向与预警线**:任何抬 ρ / 抬直伤雷的提案须先过「η 阈值会不会被推过画像实际命中率」的检算;反过来 η 实测值长期高于锚 = 风险端定价不足的实锤。 - -**实施与复算**:runsum 扩字段(flag_placed / flag_hit / flag_miss——结算流水 source_label 已有 flag_hit/flag_miss,聚合即可、零新随机);MC 双画像各取 η 读数;判式锚值随 V/E 比值联动重算。 - -**代价与风险**:η 依赖策略画像定义(模拟档位重构先例——画像漂移则锚漂移);普通档画像若不插旗(现行近似如此),η 读数无意义,锚退化为只对完美档成立——须与教学引导批的「教扫雷」口径对齐(只教扫雷已裁定,插旗教学面现状=零)。 - -### 案丙:当量锚改区间判读(比值带) - -**数学形态**:把点值判式换成**带判读**,与 2026-10-03 四带验收(带 A–D)同族形态: - -``` -主带:β(u) = V_mine(u) ÷ E_dig(u) ∈ [β_lo, β_hi] - β_lo = 风险端定价下限(旗的避险价值为真) - β_hi = 盲挖健康上限:β_hi < (1−ρ̂)÷ρ̂ (保证条件一 L4 恒成立) - 现行读数:β = 1.71 / 1.37 / 1.17(u=1/2/3);名义 ρ 上限 3.0,实测 ρ 上限 6.7 - 参考带端点(provisional 待拍):[1.2, 2.5] —— 现行 u=1/2 落带内,u=3(1.17)微破下限 -响应曲线:β 对直伤雷行值/ρ 的边际 ≤15pp·S 形(接带 D 形状纪律) -``` - -**对难度包络的冲击方向**:框架批零冲击(先立尺);后续按带调参时,β 下限约束「不许再单向削雷罚」,β 上限约束「不许把盲挖打到负」——**把 d70f6c3 那类单点投值(×1.9)升级为带内判读**,投值前先看落带。 - -**实施与复算**:audit 工具(clear_dominance_audit.py)加 β 输出与带判定(工具自述「重跑批按当期 .tres 更新默认值即可,公式本体不动」);registry 登记带端点;复算 = 静态全表 + 改表值提案逐个落带检算。 - -**代价与风险**:β 端点是新的用户拍板面(P4);带不解决 L2 结构破线(旗边际与 β 无关)——**必须与案甲条件二配套**,单独立丙只是把「未闭合」量得更准。 - -### 案丁:风险端结构化(d70f6c3 点名的三结构,列后备) - -1. **雷安异池(差异化)**:雷格负向从独立权重池摇定——打破引理前提,W 独立于 R,是 L2 的根治理形态(案甲形态 (b) 的完整版);代价 = 摇号器第二池 + 「雷安同池」结构冻结项修订 + 全对账重跑。 -2. **累积惩罚**:第 N 颗起逐颗加价(如第 3 颗起直伤 ×2)——tail-risk 定价,专打盲挖流;**方向冲突登记**:普通档踩雷 ~2.5/战画像、普通 L2 通关率 7.9% 已越下带缺口加深,6/8/8 刚转正,再单向加难与「缺口四选一」待裁案(甲·维持)相抵——**须先裁缺口口径再谈此案**。 -3. **惩罚分布化**:直伤雷部分换掷点折扣型(把 8 flat 的一部分折成警觉类分布惩罚)——降低 tail、保期望,对 normal 档友好;代价 = 新负向行 + 对照表口径扩写。 - ---- - -### 案对比与推荐 - -| | 数学形态 | 触 L1 | 触 L2 | 触 L3/L4 | 表值改动 | 结构改动 | -|---|---|---|---|---|---|---| -| 甲 双条件 | 判式换代+旗溢价 δ | ✓(条件一替换界形式) | ✓(条件二) | ✓ | δ 兑付面(可选) | (a) 无 / (b) 池结构 | -| 乙 η 系数 | 行为锚 | ✗ | 间接(读数) | ✗ | 无 | 无 | -| 丙 比值带 | 带判读 | ✓(β_hi 蕴含 L4) | ✗ | ✓(β 双向) | 无 | 无 | -| 丁 结构化 | 池/tail | ✗ | ✓(异池根治) | ✓ | 有 | 有 | - -**推荐**:**甲+丙组合先行**(判式换代是文档修订非调参,丙给甲的条件一提供带形态;乙的 η 作为甲条件二的实测化读数随批落字段),丁挂后备待缺口口径拍板后再议。理由:L1/L2 是结构破线,只有甲的二条件对得上病灶;丙把数值层(L3/L4)的日常判读制度化,防止下一次单点投值再盲投。 - ---- - -## 六、③ 修订后进入「禁独立调参联动」清单的参数 - -既存网络维持(难度曲线与Boss.md 调参联动表 + 战斗结算调参表注:全部结算/曲线参数每次调参须重跑收益对照表与五契约对账)。修订**新增**联动行如下(按案标注生效条件): - -| 新增联动组 | 对方 | 生效条件 | 纪律 | -|---|---|---|---| -| 旗溢价系数 δ ↔ 完美乘数 p_perfect ↔ ap_per_round | 战斗结算、行动经济 | 案甲 | 旗激励三件套同窗检算(防标旗 rush 复发:δ 与 ×2 叠加通胀、AP 吞吐上限)——任一变动须重跑双画像标旗率读数 | -| 标中强化池权重(若形态 b) ↔ 正向池权重(77 分母) ↔ 关级恒等式奖励占比 [15,40%] | 地图战斗资源、难度曲线 | 案甲(b) | 双池分布变动 = E_dig 与 W 同时漂移,须联合检算 + 恒等式占比复核 | -| η 读数 ↔ 模拟画像定义 ↔ 可推理率 ι ↔ min_safe_count/生成尝试上限 | sim 档位、棋盘生成 | 案乙/甲读数面 | η 是画像条件量:画像重构即锚漂移,重锚随批;可推理率三元组既有联动扩一员 | -| 比值带端点 β_lo/β_hi ↔ D_ref ↔ hero max_hp ↔ AC 折扣档(5pp 模型系数) | 战斗结算、难度曲线 | 案丙 | 带是 D_ref 的函数:换锚(D_ref/max_hp)须全带重推;AC 档值变更改 5pp 系数,同罪 | -| 直伤雷三行(6/8/8) ↔ 正向同轴行(heal_minor/pierce_strike/magic_bolt) | 地图战斗资源 | 无条件(本报告已证同轴镜像比是 L3 破线根源) | **同轴镜像比入对账面**:负向/正向比超出注册区间(案丙带内推导)即越带;单边动负向三行(d70f6c3、数值修复批两先例)今后必须带正向镜像行联合检算 | -| clear_blast 区间(24/40/32) ↔ p_perfect | 地图战斗资源、难度曲线 | 案甲(旗激励对账面扩容) | 完美排雷第二份的补贴基数进旗激励对账;单边动清图奖励 = 变相动旗 | - -通用纪律不变式:以上任一参数修订 → 调参日志留联合检算记录 + 重跑五契约对账 + 带判读;越带回滚或登记,禁带病前进(既有四级回滚阶梯照用,判式换代属文档修订、不走该阶梯)。 - ---- - -## 七、④ 验收读数设计(改前改后锚) - -**总原则(用户既定规)**:先推算后重跑——静态推演为第一读数,昂贵的 MC/verifier 只用于行为级验证与锚换代;冒烟一遍即权威(固定种子确定性复放)。 - -1. **改前静态锚(本报告 §四 即锚)**:E_dig(u)/V_mine(u)/β(u)/逐型净期望/双条件判值六张表(2026-10-04 值链快照)——落 registry(clause3 重立条附读数快照)或随批 qa 报告留档,作为修订批的「改前」基准。 -2. **工具锚(修订批 T0 义务)**:`tools/clear_dominance_audit.py` 常量刷新——67→**77** 池、SPARK 1 / HEAL 2 / BACKLASH **6** / SNARE **8** / RECOIL **8**、C_MIN/MAX→**24/40**(中点 32)、AP_R→**8**、OFF_GUARD→ac 轴 −1(0.2u 模型)、ambush 历史口径退役、V_mine 口径乙换现行字典、板形实测值随 board_stat_probe 复测——该工具是条款3/⑤ 的常设重跑入口,刷新后一次跑出改前全套判值(**先刷新工具,再谈任何表值提案**)。 -3. **MC 对拍锚**:改前 = 现行锚系(`runsum_m4iter12_t7off_n20_20261004` 现行对拍正主 + `runsum_numfix_final_n200_20261001`);改后 = `runsum_<案名>_n_` 按现行命名换代;种子窗 76000 系、N≥200/策略(≥50 distinct seeds 铁规满足);对拍字段 hero_dmg / mine_hits / 通关率。**判读注意**:纯判式/判读案(乙、丙)预期零行为位移——对拍逐位 PASS 本身就是验收判据;表值案(甲 a/b、丁)才预期位移。 -4. **行为读数新增(旗经济首次可测)**:runsum 扩字段 flag_placed / flag_hit / flag_miss / 标中兑付当量合计 / 标空惩罚当量合计——全部自结算流水 source_label(flag_hit / flag_miss / 标旗未中行)聚合,零新随机源;派生读数 η = flag_hit÷flag_placed 与标空率,按双画像分列。改前改后各测一轮,即为案乙双锚的实测基线。 -5. **verifier 双窗**:冒险条件通关率(na=150 / k=100 / hp_first 口径,与迭代 8 同参)改前改后各一窗;普通 L2 7.9% 缺口读数随窗复测——**与「缺口四选一」待裁案同窗呈报,不单独判读**。 -6. **人闸**:判式换代文本(行动经济 F1 条款3 / 战斗结算验收标准 / 难度曲线联动表三处)修订稿随批呈用户;表值类案的所有行值变动逐行呈报(含镜像行联动检算记录);带端点/δ 值为拍板项不代拟终值。 - ---- - -## 八、拍板点汇总(全归用户) - -| # | 拍板点 | 备选 | -|---|---|---| -| P1 | 案选型 | 甲+丙组合(推荐)/ 甲单行 / 乙丙轻量(零表值)/ 丁结构案 / 维持现状只刷新工具锚 | -| P2 | 判式换代口径 | 任务书定义(旗-挖边际式)单立 / 三层口径并行立(条款2 锚+条款3 聚合+旗边际,本报告形态)/ 维持旧界形式不改 | -| P3 | 若案甲:δ 值与形态 | 兑付溢价 ×1.25 / ×1.5;专属池重摇(b);δ 域 [0.25, 0.5] provisional | -| P4 | 若案丙:带端点 | [1.2, 2.5](参考值,u=3 微破下限的现状即被点名)/ 其他端点;判读用名义 ρ 或实测包络 | -| P5 | 复利系数是否立项量化 | 收益端复利维持定性(现状)/ 立项定义复利系数入对照表(前置:先有定义才能进带判读) | -| P6 | 直伤雷 6/8/8 与普通 L2 缺口的处置序 | 先裁「缺口四选一」再议案丁 / 缺口与修订并行呈报(本报告按并行呈报) | -| P7 | 口径修正登记 | d70f6c3 §二 池 76→77 混计、直伤 4/5/5→6/8/8 时效化两点,是否随批在 registry 留修正注记 | - -## 九、判读与 grill 裁决回填(2026-10-04,用户两轮「按推荐的来」全裁) - -**§八 拍板点全裁**:P1=甲+丙组合先行(乙 η 降为读数非判式、丁挂后备)/P2=三层口径并行立(条款2 锚+条款3 聚合健康式+旗边际引理)/P3=形态 **(a) 兑付溢价 · δ=1.25(provisional)**——(b) 专属池重摇不启,留给丁案异池立项一并裁/P4=带端点 **[1.2, 2.5]**,u=3(β=1.17)微破下限=登记态点名,不强制回滚/P5=复利维持定性/P6=缺口并行呈报;iter8「缺口四选一」(普通 L2 7.9% 处置)**确认仍独立在案**,与本修订解绑/P7=随批 registry 修正注记。 - -**grill 七问全按推荐裁**: - -- **Q2 落文即越带**:判式先行,条件二现行值按「越带登记」纪律落文为**已知破·限期闭合**(T 机制小批转绿),文档批不被代码批绑架。 -- **Q3 判式文本瘦身**:条件一删 U_band——只留下限 0(盲挖不为负),上限由 β_hi 独家承载(同一约束单一承载);丙案删「≤15pp·S 形」装饰条款,改「直伤雷行值/ρ 每次提案逐档检算落带」。 -- **Q4 δ 行为敏感度判据**:≥5pp(N=200 可辨线)为「有感」;行为无效时 δ **仍保留**(规范条款,不等式诚实性不依赖行为弹性),登记「行为无感」读数——防修订批出口重演「缓解未闭合」官司。 -- **Q5 η 分母**:=全部插旗数(可测零歧义),标空率作次读数分列;防呆旗未来成风再扩字段。 -- **Q7 立项时点**:任务书草案已呈(`.zcode/plans/mine-inequality-revision-miniloop-plan-2026-10-04.md`,T0-T5≈2.5 日),待 U0 批准开工。**2026-10-04 用户续裁:本批编入 roadmap 迭代 14、作为迭代内需求之一(②号卡)**——原「独立 mini-loop、不占迭代 13/14 序」表述作废;迭代内序位待排,开工门不变=U0。 - -**数学注记(T4 判读用)**:δ=1.25 时条件二以**等号压线成立**(E[标中]=1.25·E_dig = (1+0.25)·E_dig,判式取 ≥ 故成立);严格大于须 δ>0.25,×1.5 档留余量。形态 (a) 落地后 L2 首次翻正:旗对已知安全格边际 = +0.25·E_dig ≈ +0.36 当量(u=1)——四层病灶(L1 由条件一+β 带接替、L2 由条件二接替、L3/L4 由带判读看护)全覆盖确认。 - -## 附录 A:判值全表(复算用,名义 ρ=0.25) - -``` -E_dig(1)=1.442 E_dig(2)=1.948 E_dig(3)=2.455 (当量/安全格) -V_mine(1)=2.460 V_mine(2)=2.670 V_mine(3)=2.881 (当量/雷) -β=V/E: 1.71 / 1.37 / 1.17 (u=1/2/3) -盲挖净期望: +0.47 / +0.79 / +1.12 (名义 ρ) -盲挖净期望(ρ̂=0.129): +0.94(u=1);ρ̂=0.157(12×12): +0.83(u=1) -界形式缺口: 13.3×(u1) / 6.7×(u2) / 4.4×(u3);实测 ρ̂ u1 = 5.9× -逐型净期望: attack +1.25 / defense +0.10u / blast +0.70(u1) / heal 0 / - weaken +1.70(u1) / pierce −1.25 / magic −0.50 / action +0.50 / gp +1.75 -旗-盲挖阈值: q > 1−ρ̂(0.75 名义 / 0.87 实测 10×10) -旗-已知安全格边际: −(1−q)(E_dig+V_mine) ≤ 0(u1 满置信差值 = 进度+信息价值) -η 正期望线: 0.63(u1);η 占优线: 0.75 名义 / 0.87 实测 -单雷期望直伤: 1.97 HP(0.260×7.60);d70f6c3 时 0.89 → ×2.2 -``` - -## 附录 B:主要事实源索引 - -- 判式原文(界形式):git `7876642^` design/gdd/systems/排雷循环/行动经济.md(五条经济契约节) -- 八型批改写条:design/gdd/systems/排雷循环/行动经济.md:130-134、136-146(推导节) -- 全量复算 §二:git show d70f6c3(design/qa/m3-iter8-t7-mine-power-readings-2026-09-29.md §二) -- 重立模型与 5pp/0.2 当量口径:design/qa/m3-iter5-lever-scan-2026-09-28.md §三② -- 判式常设重跑入口:tools/clear_dominance_audit.py(E_dig / V_mine 甲乙双口径 / 板形双口径) -- 池语义与 77 权重:game/core/reward_economy.gd(_rollable_rows)+ design/gdd/systems/战斗循环/地图战斗资源.md(雷安同池节、清图槽节)+ game/data/tables/reward.tres -- 破线升格与对账义务:design/gdd/06-待办清单.md「挖掘风险不等式对账破线」条 + 难度曲线与Boss.md(调参联动表、P1 后置行) -- 当量对照表正主:design/gdd/systems/战斗循环/战斗结算.md(收益对照表节)+ 增益状态.md(削弱行=当量锚容器侧落点节) -- 现行带与验收形态:难度曲线与Boss.md「带换代(2026-10-03 四带甲案)」节 diff --git a/game/smoke/reward_expectation.gd b/game/smoke/reward_expectation.gd index 9b57ae86..4087900e 100644 --- a/game/smoke/reward_expectation.gd +++ b/game/smoke/reward_expectation.gd @@ -1,7 +1,7 @@ # VERTICAL SLICE - NOT FOR PRODUCTION # Date: 2026-09-11(2026-09-15 格面资源批重写:类型频次测量——供给控制器批口径随可选类删除退役) # 奖励期望测量:逐深度实测 |非封锁格|(safe ∪ mines ∖ R₀)分布、格面资源类型频次 -# (应涌现自正向行权重 attack 20 / defense 16 / blast 16 / heal 15 / weaken 12,合计 79)、 +# (应涌现自正向行九型权重 attack 14 / defense 11 / blast 16 / heal 4 / weaken 8 / pierce 8 / magic 8 / action 6 / gp 2,合计 77——reward.tres 现行)、 # 封锁格零泄漏(R₀ 格不在摇号清单)——走真实 地图战斗资源.roll_board 管线。 # 运行:Godot_console.exe --headless --path . --script res://smoke/reward_expectation.gd extends SceneTree diff --git a/roadmap.md b/roadmap.md index 1e634ac3..e5dd122f 100644 --- a/roadmap.md +++ b/roadmap.md @@ -50,16 +50,16 @@ | 迭代 6 | 战斗演出完善(原 M-4 迭代 7,2026-09-29 前移;2026-09-28 用户立项,收编历史登记「战斗表现批」——台账 106「真实立绘/动画密度终稿归战斗表现批」,前置 P0 样张已随 M-1 解除) | 迭代 5 出口(已解) | ①资产管线正式化:pixelfixer 网格段+封闭灰袋清除并入 `tools/pixelize_candidates.py`(--fixer)+九张 48px 站桩槽位档生成(8 敌种+主角 normal,底中锚/NEAREST)②敌种立绘落位:按 `ui_kit.gd` TEX_ENEMY_* 常量名入 `game/assets/art/character/`,字形「敌」回退退役,目检 ③主角 portrait 替换(新 normal 态)+attack/hit 两态素材入包(命名/路径随计划书定)④主角三态切换挂事件:攻击演出→attack 态/受击→hit 态/回 idle,槽位 2× 整数放大适配 ⑤命中特效密度终稿:命中瞬间打击特效(台账 106 动画密度欠账清偿)⑥受击白光/演出链复核:弹道→闪白→血条→灰化全链+flash_hit 强度时长 ⑦fx_probe 断言扩充+轻闸接线 ⑧用户实机目检清单(战斗演出专项,本迭代人闸);**2026-09-29 全流程审计追加四件(用户裁定归本迭代,台账 243)**:⑨终局面板「明细回看」z 序修复(main.gd:361 绕模态栈直开,回看层登记序在终局层下、被全屏遮罩压死——改走 _open_modal+ui_click_probe 补终局入口断言)⑩GP 冒险收束呈现(adventure_runner.gd:231 清零前,冒险终局面板补「本局 GP 入账」行,兑现 ui_assembler.gd:52 双展示位承诺)⑪主角受击反馈+死亡演出(敌→主角伤害弹道 main.gd:505 直接 return、无白光——补弹道+flash_hit,死亡补专属演出,与敌方演出密度对等)⑫flat_damage 变异格视觉标记(tex_mutation 槽恒空、数字照常显示——接变异纹理或角标,可归因)。**T0 注(2026-09-29 裁定)**:美术素材不入 git 维持,`game/assets/art/` 目录补 .gitignore(现行素材在盘不入库,缺位走字形回退;素材移交方式=用户放盘,打包发布方案随 Alpha 前另议);**2026-09-29 落地**:T0-T8 十轮全落(worktree m3-iter6-20260929,台账 247-255)——卡①-⑫全兑现+审计四件;重闸全绿(冒烟 576/0+五探针+doc 三闸/熵增零新增+素材机检 11/11+MC 对拍 400/400 逐位一致〔锚已重锚 HEAD,原迭代 5 锚过期〕);**出口人闸=T9 目检进行中**(检查单+代拍板追认五项=git 提交 8e74483(检查单已按生命周期条款退役),素材移交口径更新=八敌+主角三态已管线自产落盘用户无需放盘);**已完成(2026-09-29 用户 U2 目检过闸,台账 256)**——迭代 6 出口成立,迭代 7 门解 | | 迭代 7 | 魔法道具内容+元进度数值标定(原迭代 8+ 前两项编入) | 迭代 6 出口 | node-reward spec 随批出生+C 区道具槽接线+魔法道具内容(奖励节点空占位 node_overlay.gd:36 由本迭代兑现,营地工坊六件死解锁同批接局内效果);换算率复核/柜台定价标定;批末复跑 verifier 关键带(新力量源入局读数漂移属预期,破带才回调);**2026-09-29 落地**:T0-T8 八卡全落(worktree m3-iter7-20260929,台账 259-263)——八拍板点裁决落锁(①乙罗盘退役/②丙三选一/③甲解锁进投放池/④甲封存呈现/⑤甲两步交互/⑥甲三件 10/池 88/⑦⑧读数后裁与只测不判);重闸=冒烟 577/0+五探针+单测 12 套(含 aux 三新套件)+doc 三闸/熵增零新增+素材机检 11/11+MC 剥 additive 字段 0/400 逐位(门控空集=夹具态零投放零扰动);verifier 换算率复核读数出讫(生命 6→实测 1.7/攻击 9→4.1/护甲 1→0.0——U1 呈报待裁);**已完成(2026-09-29 用户 U2 目检过闸——七项目检过+追认五项全认+T5-hotfix 实机复验;台账 267)**——迭代 7 出口成立,迭代 8 门解 | | 迭代 8 | 冒险续玩断点+设置面+打磨包(2026-09-29 立项:用户裁「中断可续玩/退出即结算」两口径分离+审计 #5#6 随移;**同日二批:真人试玩反馈三件编入+排布与选型已追认**〔2026-09-29 用户拍板:雷当量甲·直伤当量抬升/胜利总结结算接线按既有拍板面/轮间节奏甲·演出层排播队列,三件全编本迭代——计划书 `.zcode/plans/m3-iter8-loop-plan-2026-09-29.md`〕) | 迭代 7 出口 | ①run 快照序列化:停点粒度断点(关卡序号/节点位/生命/本关加成区/GP 钱包/商店已购档/已抽模板),入 save.json 新域+schema 版本迁移;战斗中中断不存棋盘中局,续玩恢复至最近停点、当场战斗从头打 ②开始菜单「继续上局」按钮(存在断点才亮起;续玩与新冒险互斥确认)③中断/退出口径分离:中断=关游戏留断点可续;退出冒险=现行放弃流程(失败结算+清除断点)④最小设置面(音量/全屏/退出按钮/减动效开关从测试调整板转正+调试入口门控)⑤打磨包(RAP 与九徽章图例解码入 legend、封印旗纹理落位退役文字占位、放弃按钮文案收敛至 level-map 4 字上限、判定文案两处措辞统一)⑥**战斗胜利总结结算接线**(冒险模式普通战斗胜利挂 BattleEndOverlay 胜利形态:金蜡封+GP 增量+总量+判定行+「下一节点」——battle.md OQ14 已拍板面接线,Boss/失败分支不动;06「战斗胜利总结结算接线」条目)⑦**轮间结算节奏化**(演出层排播队列:结算行按段分组阶梯延迟进明细带+轮切换「第 N 轮」横幅驻留——核心层零 await 契约与 MC 对拍不破、减动效开=延迟归零横幅静态化,与卡④减动效开关联动;06「轮间结算节奏化」条目)⑧**雷格负向当量抬升**(直伤三行 power 抬档投值+挖掘风险不等式对账复跑+通关率双窗复测;前置=普通 L2 缺口数字批点丙追认;06「雷格负向当量抬升」条目)⑨冒烟/探针断言:断点写读往返、续玩幂等、退出清断点、无断点时按钮隐藏+卡⑥结算框呈现断言+卡⑦节奏断言(减动效双态)⑩实机目检人闸(中断重开续玩全流程+战后结算框+轮间节奏);**2026-09-29 落地(T0-T10 全落,worktree m3-iter8-20260929 六批次,台账 274-277+280,合并 77cc727)**:断点域 save v2(七字段+附随件,续玩确定性 400 局对拍零扰动)+继续上局/互斥确认/退出口径分离+最小设置面(减动效转正/DS_DEBUG 门控)+打磨包三件一降级(旗纹理缺盘 06 债务)+战斗胜利总结结算框+轮间排播队列与轮横幅(核心层零 await 零触碰,pacing_queue_test 第 15 套)+雷当量 4/5/5 provisional(MC 完美档读数逐位不动=只打踩雷轴反证;**普通 L2 7.9% 缺口加深四选一待裁**)+人闸三件交付=git 提交 d70f6c3(检查单已按生命周期条款退役);**已完成(2026-09-29 用户三轮目检过闸,台账 287)**——迭代 8 出口成立,迭代 9 门解(T7 数值四选一用户裁决挂起自行探讨,表值维持 4/5/5) | -| 迭代 9 | **视觉规格落码 + Alpha 验收**(2026-09-29 用户验收样张新 v3.5 并立项插入:美术圣经 v3.0 中修+方向稿收敛后的落码批为 Alpha 验收前置——验收对象应是视觉完整版本;任务书=`design/research/任务书-美术圣经v3.5冻结与落码-2026-09-29.md`;**2026-09-30 用户扩编**:呈现欠账四件+样张闸同窗件全编入〔06 在册欠账清偿,台账 288〕) | 迭代 8 出口 | **前置卡组·视觉落码**(任务书批 A+批 B):⓪批 A 机检冻结(断言定值+产物转正+圣经 v3.1 记录,人闸已由 2026-09-29 方向稿验收豁免)①棋盘渲染落码(E 格高墙 30%/连接无边框/地板归一 L0.10)②数字承载切换(亮墨三档直画+色牌后备)③ui_kit 对比度修复(现行 4 处不达标+字号 16/14)④B 区舞台(暗背景+地台落影+顶光柱)⑤整屏样张闸首跑(四屏断言;**随闸三裁决**=1920 档缩放策略对照/动画帧数规格/资产升档与否〔06「美术资产规格两项」「资产升档重产批」两欠账随闸呈,裁升档→主角三态+八敌种重产转加卡〕)⑥探针与冒烟重闸;**扩编卡组·呈现欠账**(2026-09-30 用户拍板第一/二档全编):⑪关卡画面 GP 常驻徽章接线(level-map spec 顶栏徽章,纯呈现欠账——06「GP/钥石迁出展示面接线」剩余面)⑫C 区「本关强化列表」数据接线(壳已落,set_level_bonuses→runner 加算区投影)⑬封印旗纹理自产+tex_flag 接线(迭代 8 卡⑤降级债务清偿,程序槽位零改码)⑭营地界面视觉终稿(解锁界面剩余面,前置=本迭代样张闸过审)⑮分辨率档位与格边长落码+HUD 框架「两档定值 36/45px」条款修订(1280×800/1920×1080 已定案)⑯art-bible §8.2 缩放纪律分级修订落文(甲文本/乙角色两类,圣经 v3.0 落籍窗口已开)⑰B 档视口截图像素断言试点+C 档黄金图基准建立(测试分级批同窗件,C 档后置于⑤冻结);**Alpha 验收(原卡组不变)**:⑦draw calls 真机测量(270→<200)⑧真人目检清单总清 ⑨07-体验验证清单总对账 ⑩真人通关率标定(真人 k 补跑并入)。**代排待追认**:卡数超 8 卡上限,计划书按「视觉落码段(⓪-⑥+⑪-⑰)→ Alpha 验收段(⑦-⑩)」两段组织、一次合并,段排布随计划书 U0 追认;呈现/文档卡全不扰卡⑩真人读数(数值/内容面不编入本迭代,归 M-4)。**⚠ 2026-10-01 用户否决迭代 9 标完成(数值轴)**:真人实证推翻模拟尺(旧普通档=新手画像弱真人 20 倍/完美档非元游戏上界)——数值修复批落籍(数字可读甲案+模拟档位重构+数值三刀,报告 design/qa/numfix-newruler-readings-2026-10-01.md)后**迭代 9 维持未过闸,卡用户实机验收新数值+新带值拍板**;全旧带读数作废待新尺重锚;**✅ 完成(2026-10-03 出口闸过,台账 315)**:9B Alpha 验收段收口——T17 36 项全判(13✅/35 两处修复/32 环境限制)+T16 修复批 11 件全落(硬锁 v3.1/演播后排窗/出度≤2/掉落渠道退役等)+T19 真人批佐证级收口(有效局 2 用户裁+k=0.60 落 >0.5 带内)+带值四带甲案落正主(A[0,10]/B[50,85]/C[30,60] 预立/D 响应曲线 ≤15pp·S 形,旧三带作废)+81000 锚(非数值验证——k 源+出度重建位移存档)+06 draw calls 销号(504→196)+stage.txt 换代;批末闸=冒烟 636/0+run_all 15 套+探针 4/5 绿(click_probe 已知红挂 06 专项)。**出口检查单=design/qa/m3-iter9-exit-checklist-2026-10-03.md**——**迭代 9 出口成立、M-3 关闭、Alpha 到手、M-4 门解** | +| 迭代 9 | **视觉规格落码 + Alpha 验收**(2026-09-29 用户验收样张新 v3.5 并立项插入:美术圣经 v3.0 中修+方向稿收敛后的落码批为 Alpha 验收前置——验收对象应是视觉完整版本;任务书已退役(git 710f9b7 出口批);**2026-09-30 用户扩编**:呈现欠账四件+样张闸同窗件全编入〔06 在册欠账清偿,台账 288〕) | 迭代 8 出口 | **前置卡组·视觉落码**(任务书批 A+批 B):⓪批 A 机检冻结(断言定值+产物转正+圣经 v3.1 记录,人闸已由 2026-09-29 方向稿验收豁免)①棋盘渲染落码(E 格高墙 30%/连接无边框/地板归一 L0.10)②数字承载切换(亮墨三档直画+色牌后备)③ui_kit 对比度修复(现行 4 处不达标+字号 16/14)④B 区舞台(暗背景+地台落影+顶光柱)⑤整屏样张闸首跑(四屏断言;**随闸三裁决**=1920 档缩放策略对照/动画帧数规格/资产升档与否〔06「美术资产规格两项」「资产升档重产批」两欠账随闸呈,裁升档→主角三态+八敌种重产转加卡〕)⑥探针与冒烟重闸;**扩编卡组·呈现欠账**(2026-09-30 用户拍板第一/二档全编):⑪关卡画面 GP 常驻徽章接线(level-map spec 顶栏徽章,纯呈现欠账——06「GP/钥石迁出展示面接线」剩余面)⑫C 区「本关强化列表」数据接线(壳已落,set_level_bonuses→runner 加算区投影)⑬封印旗纹理自产+tex_flag 接线(迭代 8 卡⑤降级债务清偿,程序槽位零改码)⑭营地界面视觉终稿(解锁界面剩余面,前置=本迭代样张闸过审)⑮分辨率档位与格边长落码+HUD 框架「两档定值 36/45px」条款修订(1280×800/1920×1080 已定案)⑯art-bible §8.2 缩放纪律分级修订落文(甲文本/乙角色两类,圣经 v3.0 落籍窗口已开)⑰B 档视口截图像素断言试点+C 档黄金图基准建立(测试分级批同窗件,C 档后置于⑤冻结);**Alpha 验收(原卡组不变)**:⑦draw calls 真机测量(270→<200)⑧真人目检清单总清 ⑨07-体验验证清单总对账 ⑩真人通关率标定(真人 k 补跑并入)。**代排待追认**:卡数超 8 卡上限,计划书按「视觉落码段(⓪-⑥+⑪-⑰)→ Alpha 验收段(⑦-⑩)」两段组织、一次合并,段排布随计划书 U0 追认;呈现/文档卡全不扰卡⑩真人读数(数值/内容面不编入本迭代,归 M-4)。**⚠ 2026-10-01 用户否决迭代 9 标完成(数值轴)**:真人实证推翻模拟尺(旧普通档=新手画像弱真人 20 倍/完美档非元游戏上界)——数值修复批落籍(数字可读甲案+模拟档位重构+数值三刀,报告 design/qa/numfix-newruler-readings-2026-10-01.md)后**迭代 9 维持未过闸,卡用户实机验收新数值+新带值拍板**;全旧带读数作废待新尺重锚;**✅ 完成(2026-10-03 出口闸过,台账 315)**:9B Alpha 验收段收口——T17 36 项全判(13✅/35 两处修复/32 环境限制)+T16 修复批 11 件全落(硬锁 v3.1/演播后排窗/出度≤2/掉落渠道退役等)+T19 真人批佐证级收口(有效局 2 用户裁+k=0.60 落 >0.5 带内)+带值四带甲案落正主(A[0,10]/B[50,85]/C[30,60] 预立/D 响应曲线 ≤15pp·S 形,旧三带作废)+81000 锚(非数值验证——k 源+出度重建位移存档)+06 draw calls 销号(504→196)+stage.txt 换代;批末闸=冒烟 636/0+run_all 15 套+探针 4/5 绿(click_probe 已知红挂 06 专项)。**出口检查单=design/qa/m3-iter9-exit-checklist-2026-10-03.md**——**迭代 9 出口成立、M-3 关闭、Alpha 到手、M-4 门解** | | 迭代 10 | **奖励结构重构——通关三选一 + 钥石掉落挪转 + 精英怪立项预留 + 通关部分回血**(2026-09-30 用户拍板案丙+P-A~P-E,计划书=`.zcode/plans/m3-iter10-loop-plan-2026-09-30.md`;**2026-10-01 用户提前开工拍板**:不合入 master、渲染层验证冻结——T0 开工门改规随批追认) | 迭代 9 出口(**改规注记**:Alpha 验收未过闸,用户拍板提前并行开工——并行安全性由「不合入」保证,master 读数面零污染) | **T0-T10+追加批全落**(worktree m3-iter10-20261001,10 提交 34dd8de→7f5caa3):①大奖励三件套退役改三层框架——部分回血 20%(clear_heal_pct)+提升三选一(池六种加权洗牌 E-S 不放回/reward_pick 扩签/属性件上限 3·AP 件上限 2 达上限剔牌库/选择停点零自动推进可中断)②加算区四轴+行动点(AP 件每战首轮 +1,排队通道兑现;行动经济.md 失同步清偿 AP 6→8)③钥石退役出大奖励改 Boss/精英逐杀掉落(boss_keystone 重锚首杀 3/复杀 2/2/3——a 裁备选;末关照常入账;收束无二次派生)④同调位过渡承载(transitional_sync_slots=1;三选一面替换子交互两路/战斗内沉没;正主归同调实施批)⑤**奖励节点共享池**(追加批用户拍板——与通关三选一同池同权重同上限,node-reward.md v2.1 掷定前置卡片直显具体道具)⑥断点 save v3(奖励选择态+件计数+aux_detail;v1/v2→v3 semver 兼容断言——g 裁)⑦BonusPickOverlay 共用面+目检修复批(候选一致降级为现状注记);**裁决面**:七项代拍板全裁(a 用备选/b-f 认同/g semver)+e 白话追认;**实机目检一轮**:1/3/4/5/6/9/14 PASS(8 项根因=减动效开关遗留已翻回;2/12 延后同调批;逐行结算演出定性迭代 8 事项不追);**合并 master 数值修复批**(bc737fb 解 2 冲突——autoplay 注释双留/smoke_all 取新断言+模拟档购血容差窗)后冒烟 628/0+run_all 15 套+五探针+三闸零新增(死链 4=存量;master 新引 1 条环境死链已修)+熵增 PASS;**MC 四代锚** 77000/78000/79000/80000 各 400 局(普通 L1 41.8%/L2 10.2% 带内、完美 L1 86.5%/L2 15.6%、钥石 1.38/3.01——报告 design/qa/m3-iter10-clear-rate-readings-2026-10-01.md);**人工参与项入 07 清单⑩**;**已完成(2026-10-01 开发闭合)**——迭代 11 门解(M-3 内顺延),Alpha 总闸仍卡迭代 9 数值实机验收 | ### M-4 Alpha 后深化与内容扩展(Release 4,**现行里程碑**(2026-10-03 M-3 关闭升现行);2026-09-29 起内容闭环迭代(战斗演出/魔法道具/元进度标定)上移 M-3,本里程碑=Alpha 验收通过后的深化批) | # | 迭代 | 门(进入条件) | 更改任务 | |---|---|---|---| -| 迭代 11+ | **✅ 三批已落籍(2026-10-03,台账 323-325)**:①魔法道具同调实施批 bc17b66(冒烟 645/0→671/0 基线演进)→ ②GP 商店房重构批 395b2ab(共享池账本+抽 3 买 1 全重抽+A=1.8/b=1.1 provisional+MC off 对拍逐位 PASS+on 新锚 N=60)→ ④视野迷雾实施批 e6260a5(菱形灯光区 R8+区外全黑+暗淡记忆态+探针 case⑮;纯呈现 MC 零跑)——各批合并后主区全量冒烟复跑全绿;**迭代 11 门=待出口人闸关闭(人闸材料包=design/qa/m4-iter11-exit-package-2026-10-03.md:三批检查单+追认清单 18 项+迷雾目检指引+读数报告)**。原登记:**2026-10-03 用户裁迭代 11 范围(三批,推荐序)**:①魔法道具同调实施批 → ②GP 商店房重构批 → ④视野迷雾实施批(各批独立出口闸;同调批先行——商店批共享池账本与通关率复测建在 aux 卡退役后的终局池上,读数只锚一次;迷雾批纯呈现不扰读数,序位可穿插);**反制批移迭代 12**(前置=双层 BD 外部调研+仲裁后重新立项;2026-10-03 用户终裁=同调位反制道具层级错配失败设计废弃,「每变异≥1反制道具」契约作废——地形变异.md v0.6/魔法道具.md v0.8 同批落文(06 条目已收口移除));**Beta 方向立项撤出本窗口**(待 Alpha 内容填充+试玩轮次后再议);关卡内容扩展留讨论位(世界观设定待用户补正主——摩索不达城 repo 无载)。↓ 原登记:反制批 Alpha · **魔法道具同调实施批**(任务书 v1.1 全裁 P1-P8=`design/research/任务书-魔法道具同调实施批-2026-10-02.md`,2026-10-02 用户裁 P7 乙归本窗口,发令即开工——任务书含 T0-T10 可升 loop 计划书)· **GP 商店房重构批**(2026-10-02 用户裁三选一同构化:买一全重抽/重抽绑购买/价格=基价×b^(关序−1)×A^(进店已购次数)〔系数归 game-balancer 研究〕,取代 09-20 无刷新裁决——06「GP 商店房重构」条在册待立项)· 关卡内容扩展 · Beta 方向立项(原迭代 10+ 三主题顺延——迭代 10 位已由奖励结构重构批占用,2026-09-30 用户拍板 P-E;各批顺序按 Alpha 读数定;含营地 2D 画面议题——2026-09-29 裁缓至此再议) | M-3 出口闸(**已解**——2026-10-03 迭代 9 出口闸收官:M-3 关闭、Alpha 到手) | 立项时按「迭代粒度界定」拆任务卡 | -| 迭代 12 | **双层 BD 实施批(反制批位移承接——变异应对局内化在本批落地)**:**2026-10-03 用户五裁全落**=R1 甲(树形态融合案:主干脊柱 row-gating+三脉+彩蛋 ≤3+A/B 集中同调脉)/R2 乙(**两层全入本迭代**:批次一 T0-T7=机制件基建+七流派全量铺〔R3 乙〕+地形转化件+商店保底+MC 锚;批次二 T8-T10=天赋树+存档 v4+营地 UI 重构;超软时间盒切 12/12b,切分点=批次一出口)/R3 乙(七流派批次一全量铺)/R4 甲(**信息型永不对冲**+复查闸=T10 呈报信息型真人读数仅呈报不提案;净化工兵仅限伤害型、清除工具件族不做、深挖钻头改非信息税设计)/R5 甲(喂雷流不做,06 留正式待办+kill-switch 判据)。未落地备选内容已自包含迁 06「双层 BD 延期与备选内容总登记」。设计事实源=`design/research/双层BD体系-整合定稿-2026-10-03.md`(双模型并行调研仲裁版),任务书=`design/research/任务书-双层BD实施批-2026-10-03.md`(已定稿)。**✅ 已全批落籍(2026-10-04,台账 328-333)**:TP0 令牌池先行(normal 重锚)→批次一 T0-T7(27 件七流派+MC 成型锚 L1 5%→75% 分岔+红线自检①过)→批次二 T8-T10(天赋树 33 节点+存档 v5+营地树 UI+A/B 面 0.0pp)一次合并 e780063;试玩反馈四连修复(钻头 AP 锁死/v2 收益重投/流派件呈现双界面/清图奖励 toast)至 c43276d;批末冒烟 718/0+run_all 15+探针绿+doc 三闸基线同款+熵增 PASS;**出口人闸待用户**(人工检查清单=台账 328-333+design/qa/m4iter12 两报告);前置=迭代 11 三批出口+M-4 数值批令牌池落地+商店批共享池 | 迭代 11 出口 | T0-T10 两段式(任务书 §四) | +| 迭代 11+ | **✅ 三批已落籍(2026-10-03,台账 323-325)**:①魔法道具同调实施批 bc17b66(冒烟 645/0→671/0 基线演进)→ ②GP 商店房重构批 395b2ab(共享池账本+抽 3 买 1 全重抽+A=1.8/b=1.1 provisional+MC off 对拍逐位 PASS+on 新锚 N=60)→ ④视野迷雾实施批 e6260a5(菱形灯光区 R8+区外全黑+暗淡记忆态+探针 case⑮;纯呈现 MC 零跑)——各批合并后主区全量冒烟复跑全绿;**迭代 11 门=待出口人闸关闭(人闸材料包=design/qa/m4-iter11-exit-package-2026-10-03.md:三批检查单+追认清单 18 项+迷雾目检指引+读数报告)**。原登记:**2026-10-03 用户裁迭代 11 范围(三批,推荐序)**:①魔法道具同调实施批 → ②GP 商店房重构批 → ④视野迷雾实施批(各批独立出口闸;同调批先行——商店批共享池账本与通关率复测建在 aux 卡退役后的终局池上,读数只锚一次;迷雾批纯呈现不扰读数,序位可穿插);**反制批移迭代 12**(前置=双层 BD 外部调研+仲裁后重新立项;2026-10-03 用户终裁=同调位反制道具层级错配失败设计废弃,「每变异≥1反制道具」契约作废——地形变异.md v0.6/魔法道具.md v0.8 同批落文(06 条目已收口移除));**Beta 方向立项撤出本窗口**(待 Alpha 内容填充+试玩轮次后再议);关卡内容扩展留讨论位(世界观设定待用户补正主——摩索不达城 repo 无载)。↓ 原登记:反制批 Alpha · **魔法道具同调实施批**(任务书 v1.1 全裁 P1-P8(任务书已退役,落籍=①bc17b66),2026-10-02 用户裁 P7 乙归本窗口,发令即开工——任务书含 T0-T10 可升 loop 计划书)· **GP 商店房重构批**(2026-10-02 用户裁三选一同构化:买一全重抽/重抽绑购买/价格=基价×b^(关序−1)×A^(进店已购次数)〔系数归 game-balancer 研究〕,取代 09-20 无刷新裁决——06「GP 商店房重构」条在册待立项)· 关卡内容扩展 · Beta 方向立项(原迭代 10+ 三主题顺延——迭代 10 位已由奖励结构重构批占用,2026-09-30 用户拍板 P-E;各批顺序按 Alpha 读数定;含营地 2D 画面议题——2026-09-29 裁缓至此再议) | M-3 出口闸(**已解**——2026-10-03 迭代 9 出口闸收官:M-3 关闭、Alpha 到手) | 立项时按「迭代粒度界定」拆任务卡 | +| 迭代 12 | **双层 BD 实施批(反制批位移承接——变异应对局内化在本批落地)**:**2026-10-03 用户五裁全落**=R1 甲(树形态融合案:主干脊柱 row-gating+三脉+彩蛋 ≤3+A/B 集中同调脉)/R2 乙(**两层全入本迭代**:批次一 T0-T7=机制件基建+七流派全量铺〔R3 乙〕+地形转化件+商店保底+MC 锚;批次二 T8-T10=天赋树+存档 v4+营地 UI 重构;超软时间盒切 12/12b,切分点=批次一出口)/R3 乙(七流派批次一全量铺)/R4 甲(**信息型永不对冲**+复查闸=T10 呈报信息型真人读数仅呈报不提案;净化工兵仅限伤害型、清除工具件族不做、深挖钻头改非信息税设计)/R5 甲(喂雷流不做,06 留正式待办+kill-switch 判据)。未落地备选内容已自包含迁 06「双层 BD 延期与备选内容总登记」。设计事实源=`design/research/双层BD体系-整合定稿-2026-10-03.md`(双模型并行调研仲裁版),任务书已退役(落籍=e780063)。**✅ 已全批落籍(2026-10-04,台账 328-333)**:TP0 令牌池先行(normal 重锚)→批次一 T0-T7(27 件七流派+MC 成型锚 L1 5%→75% 分岔+红线自检①过)→批次二 T8-T10(天赋树 33 节点+存档 v5+营地树 UI+A/B 面 0.0pp)一次合并 e780063;试玩反馈四连修复(钻头 AP 锁死/v2 收益重投/流派件呈现双界面/清图奖励 toast)至 c43276d;批末冒烟 718/0+run_all 15+探针绿+doc 三闸基线同款+熵增 PASS;**出口人闸待用户**(人工检查清单=台账 328-333+design/qa/m4iter12 两报告);前置=迭代 11 三批出口+M-4 数值批令牌池落地+商店批共享池 | 迭代 11 出口 | T0-T10 两段式(任务书 §四) | | 迭代 13 | **工程债与测试基建批(含 D6 爆破工兵包实施)**:六条目=ui_click_probe 完整局适配(D1——分派链序修正+停点/锁期/重放三态断言)/探针只读出口(D2——六出口 26 直入清零)/ArmedTimer helper(D3——P4 乙三处计时收口缝零动)/main.gd 二期瘦身(D4——bonus_interact_controller+camp_shop_presenter 拆件 1370→1119,家族②契约3绑定面留置;~900±50 锚差=族级清单上限不自洽已归因)/aux 二期合并(T5 判不合收口)/杂项尾差四件(D5)/爆破工兵包中立移除雷格(D6——P1 甲邻接冻结/P2 甲退色降档,判定逻辑零改动,充能表驱动零新码)。**✅ 已落籍(2026-10-04,台账 342)**:worktree m4iter13-debt-20261004 八提交 cd7d3ea…2402877 合并 eff8cb8;闸=冒烟 718/0(断言数持平基线)+run_all 15+click 三种子绿+全探针绿+doc 三闸零新增+熵增 PASS+MC 零跑(静态零漂移证明);合并后主区全量复跑同绿 | 迭代 12 出口 | T0-T9 ≈4.8-5.3d(知情超限单批,实际单会话) | -| 迭代 14 | **初始展开收窄批(2026-10-04 用户拍板甲乙混合立项)**:甲=先布后删剃雷域收窄至出生 3×3∪外扩 r 环(参数化半径,现值 r=1——开阔地均值从板面 66.5% 根因性降至约三成)+乙=生成重掷闸 R₀≤cap(合法性门序列、cap=板面 30% 锚〔10×10=30/12×12=43/13×13=51〕、重试耗尽走既有三分出口);**玩法侧零改动路线**(排雷玩法「初始展开恰等」验收原样为真,minesweeper_rules.gd 零 diff);裸数字截断路否决退役(可见 0 格+未开邻居=扫雷不可能态)。可行性报告=`design/research/研究-初始展开收窄可行性-2026-10-04.md`,任务书=`design/research/任务书-初始展开收窄批-2026-10-04.md`(T0-T8≈5.25d,读数批 T5-T6 可切独立后批;拍板点 P1-P3 全读数后置;停机点 S1 相变警戒/S2 带越界回调)。**②挖掘风险不等式判式换代批(2026-10-04 用户裁编入本迭代,作为迭代内需求)**:判式三层换代(条款2 标中旗锚/条款3 聚合健康式「(1−ρ̂)E_dig−ρ̂V_mine≥0」/旗边际引理+条件二旗溢价)+β 比值带判读 [1.2,2.5](u=3 登记态)+标中兑付溢价 δ=1.25(形态 a 兑付公式一处·雷安同池冻结不动)+runsum 旗行为五字段+audit 工具常量刷新(池 77/直伤 6-8-8/AP 8);裁决全落零新拍板点(方案报告=`design/research/方案-挖掘风险不等式修订-2026-10-04.md` §九),任务书=`.zcode/plans/mine-inequality-revision-miniloop-plan-2026-10-04.md`(T0-T5≈2.5d;条件二 T3 落文按登记已知破·T4 机制转绿;契约红线=DamageController 零改/直伤雷 6-8-8 与 p_perfect 不动——iter8 缺口四选一解绑独立在案;开工门=U0)。**✅ 实施批落地(2026-10-05,worktree m4iter14-mineq-20261005 台账 354)**:T0-T5 全落——audit 工具常量刷新(改前静态锚与方案报告 §四 逐位吻合)+runsum 五字段(行侧判据考证=授予行专带 highlight,87行==87插旗1:1)+F1 条款3 重立三层口径(v0.8)+战斗结算 v0.25+难度联动表+6 行+registry clause3_inequality 重立条(改前锚+P7 修正注记)+06 破线条收口+**T4 标中兑付溢价机制**(settlement.flag_hit_premium=125 provisional,grant 单点只挂 flag_hit 正向·percent 幅度贯穿应用与呈现,标空/挖格不乘,DamageController 零改/同池冻结)+smoke 750/0(+3 断言;max 路径种子 42→43 重采);判读三件=β 带 u=1/2 带内 u=3 登记态/δ 敏感度行为无感(η 位移 <1.4pp<5pp,保留+登记)/条件二判式口径等号压线转绿(整数量级实现 u=1/2 绿·u=3 微欠 −1.1% 登记面);改后锚换代 runsum_m4iter14mineq_post_n200_20261005(perfect 冒险通关 65.3%→72.0% 增强向位移,四带判读归 M-4);出口报告=design/qa/m4iter14-mineq-exit-report-2026-10-05.md(provisional 追认单 8 项+07⑫ 人工项);damage_probe A1 红灯=改前既有非本批新增(在册)。**③全局作用域变异首发批(2026-10-04 用户拍板立项——调研报告 P1-P8+盘问 Q1-Q4 全按推荐案落,批内序位待排)**:L2/L3 Boss 图恒定一型 scope=global 变异,首发型=**案A 资源面·微贫向偏斜**(正向格面池合计不变、进攻族 attack/blast/pierce/magic 权重上浮/生存族 heal/defense 明显下调、EV 微降 3-5% provisional、gp/action 白名单不动;v1.0「沃土+雷密对冲」形勘误作废——雷数为生成器事实、布置段不可加,改生成端=踩结构面否决理由);**替换制**(Boss 图不再布 region 片——L2 完美 Boss 承伤 55.8% 已越带不叠加;迭代 12 四件地形应对件在 Boss 图失效=知情代价,registry/调参日志随批登记);L1 Boss 免疫(带B [50,85] 教学保护);三层预告(开战横幅+HUD 常驻角标+帮助手册行);带A 判读后置 M-4(落地 off/on 对拍只测不判;off 基线=替换制后零变异 Boss 图,与现行带 region 片 Boss 图语义不同须注明);偏运硬币合成序=图级先件级后(代拍随批锚登记)。调研报告(事实源,v1.1 裁决落盘)=`design/research/调研-全局作用域变异设计空间-2026-10-04.md`,任务书=`design/research/任务书-全局作用域变异首发批-2026-10-04.md`(T0-T8≈5.75d,读数批 T7 可切独立后批→主体≈5.25d;零新拍板点·provisional 追认单随批;停机点 S1 普通图逐位漂移/S2 读数越带只呈报/S3 互锁误伤;开工门=U0;**⑥A4 批开工门含本批出口——本批落地图级偏斜投影点为⑥合成链中段**〔2026-10-05 注:⑥已移出迭代 14 挂起,此依赖句冻结待其重启〕)。与①②互不撞(收窄=普通图初始展开轴/判式=不等式判读口径/全局变异=Boss 图资源面轴),出口读数各自分开归因。**✅ 实施批落地(2026-10-04,worktree m4iter14-gvar-20261004 台账 345)**:T1-T8 实施批全落(T7b MC 读数批按切分预案切独立后批,跑批待用户批准)——skewed_veins 贫矿脉行+互锁三条+effect_value [0,50]/门控第三维节点身份/替换制+兜底回落/装板序全局决议前置(数据依赖调和,出口报告在册)/资源面偏斜投影(整数最大余数守恒 77+合成序图级先件级后)/三层预告三层全接/七正主落文+06 收口;闸=冒烟 747/0(+29)+run_all 15+golden 普通图逐位 12/12 全等+六探针+三闸熵增终录见批报告 design/qa/m4iter14-gvar-exit-report-2026-10-04.md(Q3 四件应对件知情代价登记+静态推演+provisional 追认单+人闸目检清单);**③出口成立——⑥A4 开工门解一半**(另半=②出口);off/on 双档读数待 T7b(带 A 判读归 M-4 只测不判)。**④技能池执行批(2026-10-04 用户点名入列——调研+四裁+任务书全齐,06 Alpha 验证条目随之收口)**:文档五件(敌人系统.md 池构成表补 L2/L3 五敌种行/护甲列改读表口径/Boss 三代错峰句/意图呈现节补解锁弹出规格/版本 v0.13+EV 锚整数口径重登记+enemy.tres 批注消歧)+**新机制一件=Boss 半血解锁新独占伤害技**(三 Boss 血量 ≤50%〔用户口径定死〕解锁:酋长「震地怒击」类 ×2.5/CD4·卓尔遏毒类 ×2.0/CD3·石君王「岩崩」类 ×2.5/CD4——参考档即工作值,命名 T5 定稿、倍率冷却 provisional 归调参;enemy.tres 池条目扩 unlock_hp_pct 键〔int [1,99] 缺省无=无门槛〕;未解锁条目双面过滤不进摇号与保底集合;解锁出一次归因明细行「XX 解锁了 YY」);首拍加权取消(杂鱼纹理注销——巨蜘蛛 52% 读数已被 Package B 抬血自愈、地精两行终裁不加工);呈现=明细行+既有类型级预告+解锁时技能名一次性弹出(零动画资产、不改演出);裁决 D1-D8 零待裁;任务书=`design/research/任务书-技能池执行批-2026-10-04.md`(T0-T7≈4.25d,切分预案在册)——开工=用户发令升计划书。**⑤魔法提灯 +2 效果接线(小卡)**:零调研直入——2026-09-30 拍板④已裁(灯甲视野外扩 +2 格、类型微光不随视野扩),迷雾批已留常量 LIGHT_RADIUS_LANTERN_BONUS,纯接线+断言估 0.5d 内。原候选卡注记终态(2026-10-04):敌人系统内容批=已具化为④;教学引导定稿批=用户裁改排 Beta(06 教学节头注记在案),移出本迭代候选。**⑥冒险前资源配比预设批——已移出本迭代(2026-10-05 用户令挂起:暂不做;条目保留 06-待办清单「冒险前资源配比预设(构筑提案)」〔已裁待实施→挂起〕,八项裁决全数有效、任务书冻结保留=design/research/任务书-冒险前资源配比预设批-2026-10-04.md;重启须用户另行发令,届时开工门仍=②③号卡出口〔若②③已落籍 master 则自动解——合成序与包络数值锚依赖②判式换代与③变异投影,三者共用摇号投影点〕)**。 | 迭代 13 出口(**迭代 13 已落籍 2026-10-04 eff8cb8**,台账 342) | 初始展开批 T0-T8(可两段切分)+判式换代批 T0-T5≈2.5d(独立 worktree 合并)+全局变异首发批 T0-T8≈5.75d(读数批可切,独立 worktree 合并)+技能池执行批 T0-T7≈4.25d(独立 worktree 合并)+提灯接线小卡 0.5d(可并入任一批顺路)〔⑥配比预设批 A4 已移出本迭代挂起,2026-10-05 用户令〕 |**③全局作用域变异首发批(2026-10-04 用户拍板立项——调研报告 P1-P8+盘问 Q1-Q4 全按推荐案落,批内序位待排)**:L2/L3 Boss 图恒定一型 scope=global 变异,首发型=**案A 资源面·微贫向偏斜**(正向格面池合计不变、进攻族 attack/blast/pierce/magic 权重上浮/生存族 heal/defense 明显下调、EV 微降 3-5% provisional、gp/action 白名单不动;v1.0「沃土+雷密对冲」形勘误作废——雷数为生成器事实、布置段不可加,改生成端=踩结构面否决理由);**替换制**(Boss 图不再布 region 片——L2 完美 Boss 承伤 55.8% 已越带不叠加;迭代 12 四件地形应对件在 Boss 图失效=知情代价,registry/调参日志随批登记);L1 Boss 免疫(带B [50,85] 教学保护);三层预告(开战横幅+HUD 常驻角标+帮助手册行);带A 判读后置 M-4(落地 off/on 对拍只测不判;off 基线=替换制后零变异 Boss 图,与现行带 region 片 Boss 图语义不同须注明);偏运硬币合成序=图级先件级后(代拍随批锚登记)。调研报告(事实源,v1.1 裁决落盘)=`design/research/调研-全局作用域变异设计空间-2026-10-04.md`,任务书=`design/research/任务书-全局作用域变异首发批-2026-10-04.md`(T0-T8≈5.75d,读数批 T7 可切独立后批→主体≈5.25d;零新拍板点·provisional 追认单随批;停机点 S1 普通图逐位漂移/S2 读数越带只呈报/S3 互锁误伤;开工门=U0;**⑥A4 批开工门含本批出口——本批落地图级偏斜投影点为⑥合成链中段**〔2026-10-05 注:⑥已移出迭代 14 挂起,此依赖句冻结待其重启〕)。与①②互不撞(收窄=普通图初始展开轴/判式=不等式判读口径/全局变异=Boss 图资源面轴),出口读数各自分开归因。**✅ 实施批落地(2026-10-04,worktree m4iter14-gvar-20261004 台账 345)**:T1-T8 实施批全落(T7b MC 读数批按切分预案切独立后批,跑批待用户批准)——skewed_veins 贫矿脉行+互锁三条+effect_value [0,50]/门控第三维节点身份/替换制+兜底回落/装板序全局决议前置(数据依赖调和,出口报告在册)/资源面偏斜投影(整数最大余数守恒 77+合成序图级先件级后)/三层预告三层全接/七正主落文+06 收口;闸=冒烟 747/0(+29)+run_all 15+golden 普通图逐位 12/12 全等+六探针+三闸熵增终录见批报告 design/qa/m4iter14-gvar-exit-report-2026-10-04.md(Q3 四件应对件知情代价登记+静态推演+provisional 追认单+人闸目检清单);**③出口成立——⑥A4 开工门解一半**(另半=②出口);off/on 双档读数待 T7b(带 A 判读归 M-4 只测不判)。**④技能池执行批(2026-10-04 用户点名入列——调研+四裁+任务书全齐,06 Alpha 验证条目随之收口)**:文档五件(敌人系统.md 池构成表补 L2/L3 五敌种行/护甲列改读表口径/Boss 三代错峰句/意图呈现节补解锁弹出规格/版本 v0.13+EV 锚整数口径重登记+enemy.tres 批注消歧)+**新机制一件=Boss 半血解锁新独占伤害技**(三 Boss 血量 ≤50%〔用户口径定死〕解锁:酋长「震地怒击」类 ×2.5/CD4·卓尔遏毒类 ×2.0/CD3·石君王「岩崩」类 ×2.5/CD4——参考档即工作值,命名 T5 定稿、倍率冷却 provisional 归调参;enemy.tres 池条目扩 unlock_hp_pct 键〔int [1,99] 缺省无=无门槛〕;未解锁条目双面过滤不进摇号与保底集合;解锁出一次归因明细行「XX 解锁了 YY」);首拍加权取消(杂鱼纹理注销——巨蜘蛛 52% 读数已被 Package B 抬血自愈、地精两行终裁不加工);呈现=明细行+既有类型级预告+解锁时技能名一次性弹出(零动画资产、不改演出);裁决 D1-D8 零待裁;任务书=`design/research/任务书-技能池执行批-2026-10-04.md`(T0-T7≈4.25d,切分预案在册)——开工=用户发令升计划书。**⑤魔法提灯 +2 效果接线(小卡)**:零调研直入——2026-09-30 拍板④已裁(灯甲视野外扩 +2 格、类型微光不随视野扩),迷雾批已留常量 LIGHT_RADIUS_LANTERN_BONUS,纯接线+断言估 0.5d 内。原候选卡注记终态(2026-10-04):敌人系统内容批=已具化为④;教学引导定稿批=用户裁改排 Beta(06 教学节头注记在案),移出本迭代候选。**⑥冒险前资源配比预设批——已移出本迭代(2026-10-05 用户令挂起:暂不做;条目保留 06-待办清单「冒险前资源配比预设(构筑提案)」〔已裁待实施→挂起〕,八项裁决全数有效、任务书冻结保留=design/research/任务书-冒险前资源配比预设批-2026-10-04.md;重启须用户另行发令,届时开工门仍=②③号卡出口〔若②③已落籍 master 则自动解——合成序与包络数值锚依赖②判式换代与③变异投影,三者共用摇号投影点〕)**。 | 迭代 13 出口(**迭代 13 已落籍 2026-10-04 eff8cb8**,台账 342) | 初始展开批 T0-T8(可两段切分)+判式换代批 T0-T5≈2.5d(独立 worktree 合并)+全局变异首发批 T0-T8≈5.75d(读数批可切,独立 worktree 合并)+技能池执行批 T0-T7≈4.25d(独立 worktree 合并)+提灯接线小卡 0.5d(可并入任一批顺路)〔⑥配比预设批 A4 已移出本迭代挂起,2026-10-05 用户令〕 | +| 迭代 14 | **初始展开收窄批(2026-10-04 用户拍板甲乙混合立项)**:甲=先布后删剃雷域收窄至出生 3×3∪外扩 r 环(参数化半径,现值 r=1——开阔地均值从板面 66.5% 根因性降至约三成)+乙=生成重掷闸 R₀≤cap(合法性门序列、cap=板面 30% 锚〔10×10=30/12×12=43/13×13=51〕、重试耗尽走既有三分出口);**玩法侧零改动路线**(排雷玩法「初始展开恰等」验收原样为真,minesweeper_rules.gd 零 diff);裸数字截断路否决退役(可见 0 格+未开邻居=扫雷不可能态)。可行性报告=`design/research/研究-初始展开收窄可行性-2026-10-04.md`,任务书=`design/research/任务书-初始展开收窄批-2026-10-04.md`(T0-T8≈5.25d,读数批 T5-T6 可切独立后批;拍板点 P1-P3 全读数后置;停机点 S1 相变警戒/S2 带越界回调)。**②挖掘风险不等式判式换代批(2026-10-04 用户裁编入本迭代,作为迭代内需求)**:判式三层换代(条款2 标中旗锚/条款3 聚合健康式「(1−ρ̂)E_dig−ρ̂V_mine≥0」/旗边际引理+条件二旗溢价)+β 比值带判读 [1.2,2.5](u=3 登记态)+标中兑付溢价 δ=1.25(形态 a 兑付公式一处·雷安同池冻结不动)+runsum 旗行为五字段+audit 工具常量刷新(池 77/直伤 6-8-8/AP 8);裁决全落零新拍板点(方案报告 §九(已退役,git 1da9a41)),任务书=`.zcode/plans/mine-inequality-revision-miniloop-plan-2026-10-04.md`(T0-T5≈2.5d;条件二 T3 落文按登记已知破·T4 机制转绿;契约红线=DamageController 零改/直伤雷 6-8-8 与 p_perfect 不动——iter8 缺口四选一解绑独立在案;开工门=U0)。**✅ 实施批落地(2026-10-05,worktree m4iter14-mineq-20261005 台账 354)**:T0-T5 全落——audit 工具常量刷新(改前静态锚与方案报告 §四 逐位吻合)+runsum 五字段(行侧判据考证=授予行专带 highlight,87行==87插旗1:1)+F1 条款3 重立三层口径(v0.8)+战斗结算 v0.25+难度联动表+6 行+registry clause3_inequality 重立条(改前锚+P7 修正注记)+06 破线条收口+**T4 标中兑付溢价机制**(settlement.flag_hit_premium=125 provisional,grant 单点只挂 flag_hit 正向·percent 幅度贯穿应用与呈现,标空/挖格不乘,DamageController 零改/同池冻结)+smoke 750/0(+3 断言;max 路径种子 42→43 重采);判读三件=β 带 u=1/2 带内 u=3 登记态/δ 敏感度行为无感(η 位移 <1.4pp<5pp,保留+登记)/条件二判式口径等号压线转绿(整数量级实现 u=1/2 绿·u=3 微欠 −1.1% 登记面);改后锚换代 runsum_m4iter14mineq_post_n200_20261005(perfect 冒险通关 65.3%→72.0% 增强向位移,四带判读归 M-4);出口报告=design/qa/m4iter14-mineq-exit-report-2026-10-05.md(provisional 追认单 8 项+07⑫ 人工项);damage_probe A1 红灯=改前既有非本批新增(在册)。**③全局作用域变异首发批(2026-10-04 用户拍板立项——调研报告 P1-P8+盘问 Q1-Q4 全按推荐案落,批内序位待排)**:L2/L3 Boss 图恒定一型 scope=global 变异,首发型=**案A 资源面·微贫向偏斜**(正向格面池合计不变、进攻族 attack/blast/pierce/magic 权重上浮/生存族 heal/defense 明显下调、EV 微降 3-5% provisional、gp/action 白名单不动;v1.0「沃土+雷密对冲」形勘误作废——雷数为生成器事实、布置段不可加,改生成端=踩结构面否决理由);**替换制**(Boss 图不再布 region 片——L2 完美 Boss 承伤 55.8% 已越带不叠加;迭代 12 四件地形应对件在 Boss 图失效=知情代价,registry/调参日志随批登记);L1 Boss 免疫(带B [50,85] 教学保护);三层预告(开战横幅+HUD 常驻角标+帮助手册行);带A 判读后置 M-4(落地 off/on 对拍只测不判;off 基线=替换制后零变异 Boss 图,与现行带 region 片 Boss 图语义不同须注明);偏运硬币合成序=图级先件级后(代拍随批锚登记)。调研报告(事实源,v1.1 裁决落盘)=`design/research/调研-全局作用域变异设计空间-2026-10-04.md`,任务书已退役(git 01bfc15 批;裁决全录另见调研报告 §7)(T0-T8≈5.75d,读数批 T7 可切独立后批→主体≈5.25d;零新拍板点·provisional 追认单随批;停机点 S1 普通图逐位漂移/S2 读数越带只呈报/S3 互锁误伤;开工门=U0;**⑥A4 批开工门含本批出口——本批落地图级偏斜投影点为⑥合成链中段**〔2026-10-05 注:⑥已移出迭代 14 挂起,此依赖句冻结待其重启〕)。与①②互不撞(收窄=普通图初始展开轴/判式=不等式判读口径/全局变异=Boss 图资源面轴),出口读数各自分开归因。**✅ 实施批落地(2026-10-04,worktree m4iter14-gvar-20261004 台账 345)**:T1-T8 实施批全落(T7b MC 读数批按切分预案切独立后批,跑批待用户批准)——skewed_veins 贫矿脉行+互锁三条+effect_value [0,50]/门控第三维节点身份/替换制+兜底回落/装板序全局决议前置(数据依赖调和,出口报告在册)/资源面偏斜投影(整数最大余数守恒 77+合成序图级先件级后)/三层预告三层全接/七正主落文+06 收口;闸=冒烟 747/0(+29)+run_all 15+golden 普通图逐位 12/12 全等+六探针+三闸熵增终录见批报告 design/qa/m4iter14-gvar-exit-report-2026-10-04.md(Q3 四件应对件知情代价登记+静态推演+provisional 追认单+人闸目检清单);**③出口成立——⑥A4 开工门解一半**(另半=②出口);off/on 双档读数待 T7b(带 A 判读归 M-4 只测不判)。**④技能池执行批(2026-10-04 用户点名入列——调研+四裁+任务书全齐,06 Alpha 验证条目随之收口)**:文档五件(敌人系统.md 池构成表补 L2/L3 五敌种行/护甲列改读表口径/Boss 三代错峰句/意图呈现节补解锁弹出规格/版本 v0.13+EV 锚整数口径重登记+enemy.tres 批注消歧)+**新机制一件=Boss 半血解锁新独占伤害技**(三 Boss 血量 ≤50%〔用户口径定死〕解锁:酋长「震地怒击」类 ×2.5/CD4·卓尔遏毒类 ×2.0/CD3·石君王「岩崩」类 ×2.5/CD4——参考档即工作值,命名 T5 定稿、倍率冷却 provisional 归调参;enemy.tres 池条目扩 unlock_hp_pct 键〔int [1,99] 缺省无=无门槛〕;未解锁条目双面过滤不进摇号与保底集合;解锁出一次归因明细行「XX 解锁了 YY」);首拍加权取消(杂鱼纹理注销——巨蜘蛛 52% 读数已被 Package B 抬血自愈、地精两行终裁不加工);呈现=明细行+既有类型级预告+解锁时技能名一次性弹出(零动画资产、不改演出);裁决 D1-D8 零待裁;任务书=`design/research/任务书-技能池执行批-2026-10-04.md`(T0-T7≈4.25d,切分预案在册)——开工=用户发令升计划书。**⑤魔法提灯 +2 效果接线(小卡)**:零调研直入——2026-09-30 拍板④已裁(灯甲视野外扩 +2 格、类型微光不随视野扩),迷雾批已留常量 LIGHT_RADIUS_LANTERN_BONUS,纯接线+断言估 0.5d 内。原候选卡注记终态(2026-10-04):敌人系统内容批=已具化为④;教学引导定稿批=用户裁改排 Beta(06 教学节头注记在案),移出本迭代候选。**⑥冒险前资源配比预设批——已移出本迭代(2026-10-05 用户令挂起:暂不做;条目保留 06-待办清单「冒险前资源配比预设(构筑提案)」〔已裁待实施→挂起〕,八项裁决全数有效、任务书冻结保留=design/research/任务书-冒险前资源配比预设批-2026-10-04.md;重启须用户另行发令,届时开工门仍=②③号卡出口〔若②③已落籍 master 则自动解——合成序与包络数值锚依赖②判式换代与③变异投影,三者共用摇号投影点〕)**。 | 迭代 13 出口(**迭代 13 已落籍 2026-10-04 eff8cb8**,台账 342) | 初始展开批 T0-T8(可两段切分)+判式换代批 T0-T5≈2.5d(独立 worktree 合并)+全局变异首发批 T0-T8≈5.75d(读数批可切,独立 worktree 合并)+技能池执行批 T0-T7≈4.25d(独立 worktree 合并)+提灯接线小卡 0.5d(可并入任一批顺路)〔⑥配比预设批 A4 已移出本迭代挂起,2026-10-05 用户令〕 |**③全局作用域变异首发批(2026-10-04 用户拍板立项——调研报告 P1-P8+盘问 Q1-Q4 全按推荐案落,批内序位待排)**:L2/L3 Boss 图恒定一型 scope=global 变异,首发型=**案A 资源面·微贫向偏斜**(正向格面池合计不变、进攻族 attack/blast/pierce/magic 权重上浮/生存族 heal/defense 明显下调、EV 微降 3-5% provisional、gp/action 白名单不动;v1.0「沃土+雷密对冲」形勘误作废——雷数为生成器事实、布置段不可加,改生成端=踩结构面否决理由);**替换制**(Boss 图不再布 region 片——L2 完美 Boss 承伤 55.8% 已越带不叠加;迭代 12 四件地形应对件在 Boss 图失效=知情代价,registry/调参日志随批登记);L1 Boss 免疫(带B [50,85] 教学保护);三层预告(开战横幅+HUD 常驻角标+帮助手册行);带A 判读后置 M-4(落地 off/on 对拍只测不判;off 基线=替换制后零变异 Boss 图,与现行带 region 片 Boss 图语义不同须注明);偏运硬币合成序=图级先件级后(代拍随批锚登记)。调研报告(事实源,v1.1 裁决落盘)=`design/research/调研-全局作用域变异设计空间-2026-10-04.md`,任务书已退役(git 01bfc15 批;裁决全录另见调研报告 §7)(T0-T8≈5.75d,读数批 T7 可切独立后批→主体≈5.25d;零新拍板点·provisional 追认单随批;停机点 S1 普通图逐位漂移/S2 读数越带只呈报/S3 互锁误伤;开工门=U0;**⑥A4 批开工门含本批出口——本批落地图级偏斜投影点为⑥合成链中段**〔2026-10-05 注:⑥已移出迭代 14 挂起,此依赖句冻结待其重启〕)。与①②互不撞(收窄=普通图初始展开轴/判式=不等式判读口径/全局变异=Boss 图资源面轴),出口读数各自分开归因。**✅ 实施批落地(2026-10-04,worktree m4iter14-gvar-20261004 台账 345)**:T1-T8 实施批全落(T7b MC 读数批按切分预案切独立后批,跑批待用户批准)——skewed_veins 贫矿脉行+互锁三条+effect_value [0,50]/门控第三维节点身份/替换制+兜底回落/装板序全局决议前置(数据依赖调和,出口报告在册)/资源面偏斜投影(整数最大余数守恒 77+合成序图级先件级后)/三层预告三层全接/七正主落文+06 收口;闸=冒烟 747/0(+29)+run_all 15+golden 普通图逐位 12/12 全等+六探针+三闸熵增终录见批报告 design/qa/m4iter14-gvar-exit-report-2026-10-04.md(Q3 四件应对件知情代价登记+静态推演+provisional 追认单+人闸目检清单);**③出口成立——⑥A4 开工门解一半**(另半=②出口);off/on 双档读数待 T7b(带 A 判读归 M-4 只测不判)。**④技能池执行批(2026-10-04 用户点名入列——调研+四裁+任务书全齐,06 Alpha 验证条目随之收口)**:文档五件(敌人系统.md 池构成表补 L2/L3 五敌种行/护甲列改读表口径/Boss 三代错峰句/意图呈现节补解锁弹出规格/版本 v0.13+EV 锚整数口径重登记+enemy.tres 批注消歧)+**新机制一件=Boss 半血解锁新独占伤害技**(三 Boss 血量 ≤50%〔用户口径定死〕解锁:酋长「震地怒击」类 ×2.5/CD4·卓尔遏毒类 ×2.0/CD3·石君王「岩崩」类 ×2.5/CD4——参考档即工作值,命名 T5 定稿、倍率冷却 provisional 归调参;enemy.tres 池条目扩 unlock_hp_pct 键〔int [1,99] 缺省无=无门槛〕;未解锁条目双面过滤不进摇号与保底集合;解锁出一次归因明细行「XX 解锁了 YY」);首拍加权取消(杂鱼纹理注销——巨蜘蛛 52% 读数已被 Package B 抬血自愈、地精两行终裁不加工);呈现=明细行+既有类型级预告+解锁时技能名一次性弹出(零动画资产、不改演出);裁决 D1-D8 零待裁;任务书=`design/research/任务书-技能池执行批-2026-10-04.md`(T0-T7≈4.25d,切分预案在册)——开工=用户发令升计划书。**⑤魔法提灯 +2 效果接线(小卡)**:零调研直入——2026-09-30 拍板④已裁(灯甲视野外扩 +2 格、类型微光不随视野扩),迷雾批已留常量 LIGHT_RADIUS_LANTERN_BONUS,纯接线+断言估 0.5d 内。原候选卡注记终态(2026-10-04):敌人系统内容批=已具化为④;教学引导定稿批=用户裁改排 Beta(06 教学节头注记在案),移出本迭代候选。**⑥冒险前资源配比预设批——已移出本迭代(2026-10-05 用户令挂起:暂不做;条目保留 06-待办清单「冒险前资源配比预设(构筑提案)」〔已裁待实施→挂起〕,八项裁决全数有效、任务书冻结保留=design/research/任务书-冒险前资源配比预设批-2026-10-04.md;重启须用户另行发令,届时开工门仍=②③号卡出口〔若②③已落籍 master 则自动解——合成序与包络数值锚依赖②判式换代与③变异投影,三者共用摇号投影点〕)**。 | 迭代 13 出口(**迭代 13 已落籍 2026-10-04 eff8cb8**,台账 342) | 初始展开批 T0-T8(可两段切分)+判式换代批 T0-T5≈2.5d(独立 worktree 合并)+全局变异首发批 T0-T8≈5.75d(读数批可切,独立 worktree 合并)+技能池执行批 T0-T7≈4.25d(独立 worktree 合并)+提灯接线小卡 0.5d(可并入任一批顺路)〔⑥配比预设批 A4 已移出本迭代挂起,2026-10-05 用户令〕 | | 迭代 15 | **①调试功能整合批(2026-10-05 用户令自「14.5」临时卡改编入册——原周期外 0.5 卡,落地事实与验证读数零变化,只改编号归属)**:主菜单三调试散件(随机种子输入框/角色数值调整板/两层调试入口)收一张调试浮窗 DebugOverlay——入口=开始覆盖层右下角「调试」角标(与主按钮组非平级,DS_DEBUG=1 环境变量门控沿用迭代 8 卡④口径);浮窗=悬浮菜单之上 Dialog(不隐藏开始层,同确认弹窗形态;旧 TunePanel「与开始层互斥」形态与类整体吸收退役含 .uid);可扩展滚动列表页四区块(随机种子/数值调整/批量模拟/两层调试入口——后续调试项往下追加滚轮下探)。四拍板全落(2026-10-04 用户裁)=P1 甲 DS_DEBUG 门控/P2 乙全摊平/P3 仅开始菜单可开·对局不可达(_show_debug_overlay 门禁护栏+对局发起随开随收)/P4 可扩展列表。**✅ 已全批落籍(2026-10-05,worktree iter145-debug-hub 两提交 48c0b34/46dadbb,主区 merge --no-ff d0a3c6b/10c301b,台账 352)**:闸=冒烟 747/0+探针 ui_tune/ui_click/ui 三绿(worktree+主区双跑,主区跑前 --import 重刷类名缓存在册坑);遗留=实机目检归用户(DS_DEBUG=1 启动→右下角角标→浮窗四区块→两层调试入口) | 卡①门:迭代 14 出口(注:本卡先于迭代 14 出口落籍——编入时点迭代 14 ③已闭/①②④⑤在飞/⑥挂起,门列仅记编入时点状态,不构成追溯闸) | 单批已落地(原估 0.5d,实际一次会话);后续扩调试项=debug_overlay.gd _build() 列表区追加区块(P4 扩展口径) | | 迭代 15 | **②奇物概念收口与词族对齐批(2026-10-05 用户令编入本迭代)**:概念层已由用户逐轮裁定定稿(《奇物》v1.0→v2.7,7 轮),本批只做**落地对齐**、不做二次设计。三批内容:**①三套旧词族全面对齐**(顶层已改名「奇物」而代码仍叫旧名=用户最初抱怨的"文档与代码分开"):`feature_*`→`curio_*`(103 处/7 文件)、`relic_*`→`feat_*`(162 处/12 文件)、运行层 `bonus_*`→`curio_*`(160 处/8 文件)。**硬约束:`reward_*` 已被 `reward_pick`/`reward_node`/`reward_preview` 占用,统一词族不得使用**;`relic_table.gd` 与两个控制器类改名须同步 Godot `.uid`/`.tscn`(非文本层无法自证)。**②三条渠道按分类分离**(现行三渠道共用同一个 98 张池、三类混编):关底 Boss 击败=通过这一关→只出专长;奖励节点/商店→属性值提升+资源、专长在此**只以门票形式**出现。**兑付频率红线**:奇物不是打一场战斗给一份,关内普通战斗节点打完不给任何奇物,一关之内只兑付一次(用户 2026-10-05 纠错)。**③两个新种类入池**=刷新次数(须先与"商店独立刷新机制"划清边界)+ 专长获取门票(拿到即开不可囤积/罕见只在概率/一局限购一次/计步保底:连续 5 次三选一展示未出→第 6 次必出,刷新重展计入、奖励节点与商店共享计数);附带 `shop.tres` 补回复(默认原则要求分类内成员都在该出现的渠道池里)与 charge 标签补至 ≥4 件(现仅 3 件,档二永远达不到——数据缺陷)。设计事实源=`design/gdd/systems/冒险循环/奇物.md` v2.7,任务书=`design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md`(T0-T8≈4.5d,两段切分预案在册〔段一词族 T0-T3≈2d/段二渠道+入表 T4-T8≈2.5d〕,切分点=T3 出口;11 条设计契约含 6 条 🔴 停机级;12 条批末验收断言;代拍板白名单 5 项;待用户裁点 4 项〔玩家可见面违规/第四关档二复裁/门票四参数终值/存档键正式迁移〕)。**开工门**:与在途 M-4 各批(判式换代/全局变异/配比预设)撞同一批文件(`adventure_table.gd`/`level_runner.gd`/`adventure.tres`),须确认不并行或用户明示插队 | 卡②门:迭代 14 出口 | 卡①已落籍(原估 0.5d);卡②T0-T8≈4.5d(可两段切分:词族对齐段 + 渠道入表段) | | 迭代 15 | **③秘宝代码词族对齐批(2026-10-05 用户令编入本迭代)**:设计侧已完成(消歧更名批 `430419c`+`06e94b7`,26 个设计文档「魔法道具」→「**秘宝**」,同调位机制名保留不变),本批只做**代码侧对齐**、不做二次设计。内容:`aux_*`/`AuxItem*` 词族全族换词 **358 处 / 36 文件**(重灾 `adventure_runner.gd`79 / `level_runner.gd`27 / `bonus_interact_controller.gd`19 / `battle_orchestrator.gd`18 / `config_db.gd`14 / `main.gd`13),分五组落:**A 玩家可见文案(P0,5 处)**=`battle_narrator.gd:117-118` + `bonus_interact_controller.gd:76` + `hero_info_panel_view.gd:56`(槽位标题 `UiKit.label`)+ `:178`(tooltip)· B schema 与数据表(`aux_item_table.gd`/`aux_items.tres`/`aux_items.gd` 文件名+类名+`ConfigDB` 持有变量与访问器全链跟改,**须同步 Godot `.uid`/`.tscn` + `--import` 重刷类名缓存**——迭代 14.5 实证在册坑)· C 文档链接修复(含 `architecture.md` 两处既有断债顺带清偿)· D 中文注释层(**须分色**:`魔法矢`/`魔法反噬`/`魔法族`/`魔法护甲` 属敌方伤害护甲语汇🔴不动)· E 测试文件名+内部变量。**用户三项拍板**:全族彻底改(含数据表)· **断点存档键一律保留**(`bonus_aux_carry`/`aux_detail`/`aux_cleared`/`aux_cleared_last`/`aux_items` 断点数组/`attunement_charges` 共 34 处引用一字不改,破档即进度丢失)· registry 条目键 `aux_items` 不改(数据契约键)。设计事实源=`design/gdd/systems/排雷循环/秘宝.md` v0.9,任务书=`design/research/任务书-秘宝代码词族对齐批-2026-10-05.md`(T0-T9≈5.0d,**超软盒 3 日上限·知情预挂**:T7 段末闸后 L3 呈报切点不擅切;**三档降级面 G1/G2/G3 在册**〔G3 下限=仅组 A 完成〕;5 条设计契约含 5 条 🔴 停机级〔存档兼容零破坏/数值零漂移/schema 契约面零变更/零字段更名/核心层零 await〕;代拍板白名单 5 项;**C1/C2 已裁关闭·全改保一致·待裁点 0 项**)。**撞批已消解**:② 奇物批 2026-10-05 收口落库(合并 `c571af2`),并行风险解除,本批为迭代 15 唯一在途需求;**T0 须重取基线**(判式换代批 T5 读数 750/0、② 又动数据层,§1.2 的 747 为②前旧数禁沿用)并复核事实表。**✅ 裁决(用户 2026-10-05「全改保一致」)**:C1 `"aux_item"` 域串**照改**(实测连锁面收窄——`reward.tres` 已零 aux_item 数据行,池种随迭代 11 T7 退役;16 处字面量全在代码内闭合无存档依赖;唯一连锁项=`smoke_all.gd:3932` 断言须同步)· C2 `aux_items` 一名两义**拆分**(ConfigDB 持有变量+表注册键✅改 / 断点存档键+冒烟夹具🔴禁改——**「键名禁改」与「变量名禁改」是两回事**,禁改的只是落盘字面量)。新增**组 F**(分派语汇与域串 16 处),任务卡扩为 T0-T10≈5.5d。**开工门**:✅ 已无待裁点,可直接发 T0 | 卡③门:迭代 14 出口(**裁点已全决·可开工**) | 卡①已落籍(原估 0.5d);卡②已落籍(`c571af2`);**卡③可开工**(无待裁点;T0 取基线后回填估时) | diff --git a/tools/clear_dominance_audit.py b/tools/clear_dominance_audit.py index f74a5a75..545de94d 100644 --- a/tools/clear_dominance_audit.py +++ b/tools/clear_dominance_audit.py @@ -28,7 +28,7 @@ V_mine 只保留现行矩阵加权口径(原口径乙升为主口径)。 - V_mine 换现行九型负向字典(enrage/off_guard/警觉/backlash/sapped/snare/recoil/ ap_drain/gp_lose——ap_drain 按 A6 flat 1、gp_lose 按 A5 代理 2 计)。 - - 新增 β 比值带判读与逐型净期望输出(方案-挖掘风险不等式修订-2026-10-04 §四/§九): + - 新增 β 比值带判读与逐型净期望输出(原方案报告 §四/§九,已退役 git 1da9a41): β(u)=V_mine/E_dig ∈ [1.2, 2.5];条件一 (1−ρ̂)E_dig−ρ̂V_mine ≥ 0(下限 0,上限归 β_hi); 条件二 E[标中兑付] ≥ (1+δ)·E_dig(δ=1.25 provisional,兑付溢价形态 a)。 """