diff --git a/design/engineering/doc-conventions.md b/design/engineering/doc-conventions.md index 789410c0..e11eddb1 100644 --- a/design/engineering/doc-conventions.md +++ b/design/engineering/doc-conventions.md @@ -67,9 +67,10 @@ | 一页纸节点 | 一节、一条规则 ≤一页纸(约 ≤80 行);装不下就拆节 | | 一系统一文档 | 不建 analysis 推演件;两三句能说清的"为什么"直接写进设计目的或规则正文 | | 正文只写现行规则 | 禁删除线、"(作废)"、"(日期+拍板)"式注记;审计信息入对应文档附录 | -| 禁实现内容 | 系统文档与概念文档全文禁写实现细节——代码路径(`.gd`/`.py`/`.sh`)、测试文件名、断言名一律不出现;唯一例外=配置文件索引(`game/data/tables/*.tres` 这类表路径与表名)。实现事实归 `architecture.md`;验收标准只写玩家或系统可观测面。本行由文档域闸的能力审计机检,闸件清单与域划分的唯一出处=`tools/run_all_gates.sh` 头部 | +| 禁实现内容 | 系统文档与概念文档全文禁写实现细节——代码路径(`.gd`/`.py`/`.sh` 与运行时文件路径)、测试文件名、断言名、类名/方法名/信号名/常量名/调试与遥测入口名、提交号一律不出现;唯一例外=数据索引(`game/data/tables/*.tres` 这类表路径与表名、表字段名与表内枚值、存档键、封闭词表标签)。实现事实归 `architecture.md`;验收标准只写玩家或系统可观测面。本行由文档域闸的能力审计机检两个可判死的面(带后缀路径、反引号调用形态),其余靠写卡段人工核对;闸件清单与域划分的唯一出处=`tools/run_all_gates.sh` 头部 | | 正文单点维护 | 一条规则句只写在定义它的那份文档(owner 文档);其他文档要引用时写指针或语义概括,禁复制色值、尺寸、路径等可核对的具体值——上一句管不住数值之外的双写,本句补上。豁免面 = 执行侧文件必须带字面值才能工作时(生图提示词里的十六进制色、脚本参数),转写不算双写,但该文件头部必须写明"冲突时以 owner 文档为准" | -| 禁写变更记录 | 文档与代码文件内一律禁设「版本历史/修订记录/变更记录/修改记录/更新记录/更新日志」节或表格,禁逐版本叙述「改了哪些条款」;沿革与改动明细只进 git commit log。版本号可作为文档现行身份标记出现在文首状态行与正文引用中,但不得再挂变更表 || 后置 ≠ 删除 | P1/P2 后置内容逐条列出;复活后置项 = 修订文档,禁静默加回 | +| 禁写变更记录 | 文档与代码文件内一律禁设「版本历史/修订记录/变更记录/修改记录/更新记录/更新日志」节或表格,禁逐版本叙述「改了哪些条款」;沿革与改动明细只进 git commit log。版本号可作为文档现行身份标记出现在文首状态行与正文引用中,但不得再挂变更表 | +| 后置 ≠ 删除 | P1/P2 后置内容逐条列出;复活后置项 = 修订文档,禁静默加回 | | 活体清单不冻结计数 | 对会生长的清单(文档树构成、UI 层项、RNG 流词表等)不写死计数与枚举——写指针到 owner(根索引/常量表/实现文件),现状值由 owner 承载;历史计数只进 git 提交信息 | **数值纪律**:正文定规则、取值域、单位;平衡值进 `data/tables/`,provisional 必须标注;已锁数值事实源 = `game/data/tables/*.tres`(现行值)与 owner 文档正文(规则、取值域、单位)。 diff --git a/design/gdd/00-游戏概念.md b/design/gdd/00-游戏概念.md index 3359be61..c7909c41 100644 --- a/design/gdd/00-游戏概念.md +++ b/design/gdd/00-游戏概念.md @@ -59,4 +59,4 @@ 注意:上表六件秘宝为旧目录,已全数退役、只作素材库(新现行事实源=[秘宝](systems/跨局循环/秘宝.md)「目录(重设计 v1)」节——新目录 15 件为代号制、正式命名归用户);新目录正式命名定稿后本表同步。 -另:元进度系统资源定名**钥石**——每一层关底 Boss 看守他那块区域的钥石,击杀即取走,用于在存档内解锁永久提升(属性 / 怪物遭遇 / 道具池)。2026-09-14 用户拍板,registry 术语登记随元进度设计批补登。 +另:元进度系统资源定名**钥石**——每一层关底 Boss 看守他那块区域的钥石,击杀即取走,用于在存档内解锁永久提升(属性 / 怪物遭遇 / 道具池)。2026-09-14 用户拍板,登记册术语登记随元进度设计批补登。 diff --git a/design/gdd/08-Alpha版本标准.md b/design/gdd/08-Alpha版本标准.md index b2c65d8d..0b4b46a4 100644 --- a/design/gdd/08-Alpha版本标准.md +++ b/design/gdd/08-Alpha版本标准.md @@ -110,7 +110,7 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 战斗屏 | [battle](ux/battle.md) | 在役 | | 战斗结算总结框 | [settlement-summary](ux/settlement-summary.md) | 在役 | | 关卡结算屏 | [level-clear](ux/level-clear.md) | 在役 | -| 三选一(奖励节点 / 关卡完成) | [node-reward](ux/node-reward.md) | 在役(两渠道均三选一停点:关卡完成与奖励节点各停一次,奖励节点经 present_node_curio 拉起兑付) | +| 三选一(奖励节点 / 关卡完成) | [node-reward](ux/node-reward.md) | 在役(两渠道均三选一停点:关卡完成与奖励节点各停一次,奖励节点经兑付拉起开三选一) | | 商店 | [shop](ux/shop.md) | 在役 | | 状态面板(局内) | [元进度](systems/跨局循环/元进度.md)(「解锁界面:双入口框架」节) | 在役 | | 冒险终局面板 | —— | 在役 | diff --git a/design/gdd/systems/冒险循环/关卡节点图生成.md b/design/gdd/systems/冒险循环/关卡节点图生成.md index d56e0be4..3e276f35 100644 --- a/design/gdd/systems/冒险循环/关卡节点图生成.md +++ b/design/gdd/systems/冒险循环/关卡节点图生成.md @@ -60,7 +60,7 @@ | 不合格产出禁止进玩法 | 产出不过产出规格即无效,无效图绝不上给玩家 | | 无兜底图 | 不设固定兜底图——软回退一律禁止 | | 参数无解即中止 | 参数档本身给不出合法图=配置错误,致命中止 | -| 同种子同图 | 同种子+同参数档产出同一张图;随机只经 RngService 统一流 | +| 同种子同图 | 同种子+同参数档产出同一张图;随机只经统一随机流服务 | ### 生成参数:五个旋钮与三套关卡参数档 @@ -104,7 +104,7 @@ ## 调参表 -数值事实源=game/data/tables(定值批落表);本表只留取值域与设计意图。 +数值事实源=data/tables(定值批落表);本表只留取值域与设计意图。 | 参数 | 取值域 | 设计意图 | 状态 | |---|---|---|---| diff --git a/design/gdd/systems/冒险循环/关卡节点地图.md b/design/gdd/systems/冒险循环/关卡节点地图.md index ec8be5e1..f5356794 100644 --- a/design/gdd/systems/冒险循环/关卡节点地图.md +++ b/design/gdd/systems/冒险循环/关卡节点地图.md @@ -123,7 +123,7 @@ Boss 兑付(胜利或英雄死亡)触发关卡收束点,此后不再有选 第二关的"新内容 = 既有池新技能"(技能池构成已定稿入[敌人系统](../战斗循环/敌人系统.md)技能池节)投放时,改的是战斗侧行里引用的技能池内容——节点图结构原样不动,本文无需为投放留任何新结构位。 -**节点奖励 = 提升三选一(迭代 10 追加批——用户 2026-10-01 拍板:与通关三选一共享同池)**:奖励节点到达即开三选一(呈现 = 提升三选一覆盖层共用面,spec:[node-reward.md](../../ux/node-reward.md) v2.0)——从提升池七种(攻击/生命上限/护甲/GP 袋/行动点件/恢复件/刷新件)按同一令牌库洗牌不放回抽 3(同 kind 去重、同 reward_pick 封闭流),玩家点选一件兑付(选中踢池、未选回池;秘宝件已随迭代 11 第①批出池,满位替换子交互随之不再触发)。件获取次数计数与令牌库为冒险级单例——两渠道同一令牌库合计消耗。原「秘宝投放渠道三选一」(迭代 7 拍板②丙过渡形态)顺带退役;秘宝局外同调件形态已随同调实施批落地(迭代 11 第①批;原提案 §9,git 57da58c 已退役)。「池空直通」为合法态——池耗即枯竭,空库 = 零候选合法态直通(见[冒险结构](冒险结构.md)令牌池节)。 +**节点奖励 = 提升三选一(迭代 10 追加批——用户 2026-10-01 拍板:与通关三选一共享同池)**:奖励节点到达即开三选一(呈现 = 提升三选一覆盖层共用面,spec:[node-reward.md](../../ux/node-reward.md) v2.0)——从提升池七种(攻击/生命上限/护甲/GP 袋/行动点件/恢复件/刷新件)按同一令牌库洗牌不放回抽 3(同 kind 去重、同一封闭随机流),玩家点选一件兑付(选中踢池、未选回池;秘宝件已随迭代 11 第①批出池,满位替换子交互随之不再触发)。件获取次数计数与令牌库为冒险级单例——两渠道同一令牌库合计消耗。原「秘宝投放渠道三选一」(迭代 7 拍板②丙过渡形态)顺带退役;秘宝局外同调件形态已随同调实施批落地(迭代 11 第①批;原提案 §9 已退役)。「池空直通」为合法态——池耗即枯竭,空库 = 零候选合法态直通(见[冒险结构](冒险结构.md)令牌池节)。 ### 关卡收束点:先清库、后宣布 diff --git a/design/gdd/systems/冒险循环/冒险结构.md b/design/gdd/systems/冒险循环/冒险结构.md index fe78853c..7d9cbacd 100644 --- a/design/gdd/systems/冒险循环/冒险结构.md +++ b/design/gdd/systems/冒险循环/冒险结构.md @@ -142,17 +142,17 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜 | 收支口 | 方向 | 规则 | |---|---|---| -| 战斗完成 | 入 | 每完成一场战斗统一到账一次:金额 = 掉落掷定 + 关级掉落加值 + 本战战斗内缓冲,随战斗结束信号携带的 gp_dropped 一笔入账 | +| 战斗完成 | 入 | 每完成一场战斗统一到账一次:金额 = 掉落掷定 + 关级掉落加值 + 本战战斗内缓冲,随战斗结束信号携带的掉落额一笔入账 | | 商店购买 | 出 | 商店房购买按现行价扣减钱包,余额不足拒绝。价格公式(**v0.13 换代——pool 模式现行**):ceil(基价 × b^(关序−1) × A^(本次进店已购次数)),A=店内递增/b=跨关递增表因子(provisional 1.8/1.1),ceil 向上单一取整(玩家不利向,杜绝「差 1 GP 反复钓」套利角);legacy 固定三件模式(shop=off 对照承载)沿用旧式 = 基价 + 关级价格加成 + 步长 × 已购档数 | | 冒险收束 | 清零 | 完成 / 失败 / 放弃三种结局都清零;重开后钱包从零开始 | -**战斗内缓冲隔离**:战斗进行中从格面兑付拿到的 GP(GP 袋正向、破财负向——字典归[地图战斗资源](../战斗循环/地图战斗资源.md))不直接进钱包,而是记入战斗域的中间态缓冲;战斗完成时缓冲随掉落掷定与关级加值一并折进 gp_dropped 统一到账。钱包只在战斗边界变动,战斗域自身零钱包状态——这条隔离让战斗结算保持"折算归我、GP 归冒险结构"的既有边界。 +**战斗内缓冲隔离**:战斗进行中从格面兑付拿到的 GP(GP 袋正向、破财负向——字典归[地图战斗资源](../战斗循环/地图战斗资源.md))不直接进钱包,而是记入战斗域的中间态缓冲;战斗完成时缓冲随掉落掷定与关级加值一并折进掉落额统一到账。钱包只在战斗边界变动,战斗域自身零钱包状态——这条隔离让战斗结算保持"折算归我、GP 归冒险结构"的既有边界。 **统一冒险加算区**:商店购买的属性提升与奖励节点三选一的属性件记**同一笔**——加算区四轴 {攻击, 生命上限, 护甲等级, 行动点},入战参数 = 基础表值 + 加算区累加,经战斗开始入参的覆盖值通道生效(与生命的上参同一条通道)。购买生命上限时:pool 模式(v0.13——货架件=奖励件本体)只加上限不回当前生命(与三选一件同语义);legacy 模式当前生命与上限同步 +Δ(生命的连带写入口)。属性轴累加源 = 商店购买与奖励节点三选一属性件两类;行动点轴累加源 = 奖励节点三选一 AP 件与商店 AP 件两类(每场战斗开始的首轮行动点基线 +1,语义细节归[行动经济](../排雷循环/行动经济.md)跨冒险加成轴节;~~全冒险获取次数上限最紧 provisional 2 次~~——v0.14 次数上限退役,池消耗即上限,pool 模式下商店购买与三选一共用令牌库,见下)。 -掉落掷定消费 gp_drop 封闭随机流(主种子派生、可回放)。**商店货架抽签消费 shop_draw 封闭随机流**(v0.13 扩签——每次抽 3〔进店+每次买后重抽〕恰一 scope,与 reward_pick 分签防取数序互扰)。掉落与价格的现行行值读商店表,数值所有权归[难度曲线与Boss](难度曲线与Boss.md)曲线调参批——本批骨架先行,全部数值 provisional。 +掉落掷定消费 gp_drop 封闭随机流(主种子派生、可回放)。**商店货架抽签消费 shop_draw 封闭随机流**(v0.13 扩签——每次抽 3〔进店+每次买后重抽〕恰一 scope,与三选一抽签分签防取数序互扰)。掉落与价格的现行行值读商店表,数值所有权归[难度曲线与Boss](难度曲线与Boss.md)曲线调参批——本批骨架先行,全部数值 provisional。 -**共享池账本(v0.13 P1 共享池单点;v0.14 令牌库换代;迭代 20 案D 四级 104 张——池机制事实源=[奇物](奇物.md)「池结构与抽取」节)**:商店货架与奖励节点三选一是**同一个池**——货架候选 = 池∖{GP 袋, 刷新件}∪{凭证} = {攻击, 生命上限, 护甲, 行动点, 回复, 凭证} 六种(GP 袋计价物不自售切边、刷新件不上货架、秘宝件已随同调批出池;凭证与回复随迭代15② 入架——shop.tres pool_shelf 六行);**库存 = 剩余令牌数**(TP0——「池消耗即上限」,种类次数上限退役,与奖励兑付摘牌同一令牌库承载,全冒险一次性跨关卡不补给):商店买一件,奖励面就少一枚;「无限购买」收敛为**钱尽或池空为止**(池空=硬闸、A 链爬价=软闸),空货架合法态。货架 = **令牌级抽签**(同 kind 去重每 kind 至多一卡,价格公式 tier-blind 维持批②裁定,购买消费在架令牌本体 kind+tier)。禁止两渠道各自私记库存——消费走同一入口写同一令牌库(令牌多重集单点:池与判定归该单点持有,各 kind 的派生计数与断点附随件同在这一点上承载)。**货架独立刷新(v0.15 MC-1 2026-10-04——P-C2+Q2 裁)**:进店免费刷新次数(基础 0,天赋/营地侧增益位预留)用尽后 GP 付费刷新(ceil(20×1.8^已付费刷) provisional——调参表旋钮 shop_refresh_*);重抽=同 pool_draw 共享池抽签(shop_draw 恰一新 scope),池空=不可刷新合法态;进店/离开双向清零付费刷计数。**三选一同款付费档(v0.16 2026-10-06 用户令——刷新对齐商店)**:三选一免费双源(刷新件 X/冒险池 Y,机制现行事实源=[秘宝](../跨局循环/秘宝.md)三选一刷新双源节)用尽后 GP 付费刷新——读同 shop_refresh_* 两旋钮(单点调参)、扣同一 GP 冒险账本(同一扣账入口)、重抽同 reward_pick 共享池抽签;付费刷计数每停点清零(与进店清零同构);钮常驻选择态、免费与付费两源皆穷=禁用。 +**共享池账本(v0.13 P1 共享池单点;v0.14 令牌库换代;迭代 20 案D 四级 104 张——池机制事实源=[奇物](奇物.md)「池结构与抽取」节)**:商店货架与奖励节点三选一是**同一个池**——货架候选 = 池∖{GP 袋, 刷新件}∪{凭证} = {攻击, 生命上限, 护甲, 行动点, 回复, 凭证} 六种(GP 袋计价物不自售切边、刷新件不上货架、秘宝件已随同调批出池;凭证与回复随迭代15② 入架——shop.tres pool_shelf 六行);**库存 = 剩余令牌数**(TP0——「池消耗即上限」,种类次数上限退役,与奖励兑付摘牌同一令牌库承载,全冒险一次性跨关卡不补给):商店买一件,奖励面就少一枚;「无限购买」收敛为**钱尽或池空为止**(池空=硬闸、A 链爬价=软闸),空货架合法态。货架 = **令牌级抽签**(同 kind 去重每 kind 至多一卡,价格公式 tier-blind 维持批②裁定,购买消费在架令牌本体 kind+tier)。禁止两渠道各自私记库存——消费走同一入口写同一令牌库(令牌多重集单点:池与判定归该单点持有,各 kind 的派生计数与断点附随件同在这一点上承载)。**货架独立刷新(v0.15 MC-1 2026-10-04——P-C2+Q2 裁)**:进店免费刷新次数(基础 0,天赋/营地侧增益位预留)用尽后 GP 付费刷新(ceil(20×1.8^已付费刷) provisional——调参表旋钮 shop_refresh_*);重抽=共享池抽签(shop_draw 恰一新 scope),池空=不可刷新合法态;进店/离开双向清零付费刷计数。**三选一同款付费档(v0.16 2026-10-06 用户令——刷新对齐商店)**:三选一免费双源(刷新件与冒险池两笔,机制现行事实源=[秘宝](../跨局循环/秘宝.md)三选一刷新双源节)用尽后 GP 付费刷新——读同 shop_refresh_* 两旋钮(单点调参)、扣同一 GP 冒险账本(同一扣账入口)、重抽同三选一共享池抽签;付费刷计数每停点清零(与进店清零同构);钮常驻选择态、免费与付费两源皆穷=禁用。 ### 关卡大奖励:关卡完成回血 + 专长三选一(钥石退役出大奖励) @@ -168,9 +168,9 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜 兑付次序:部分回血先行(按当刻生命与上限结算),随后呈现三选一**选择停点**——零自动推进,必须玩家点选才兑付,重复兑付被拒(结算受理只算一次语义同族)。选择停点可中断:断点附随件扩「奖励选择态 + 件获取次数计数」,续玩已选件不静默丢失;**候选逐位一致系停点快照承载的实现现状、非验收义务**(不一致不影响玩法——2026-10-01 用户裁决,见「冒险断点」节)。 -**奖励节点三选一池(结构层——池机制事实源=[奇物](奇物.md)「池结构与抽取」节,2026-10-11 迭代 20 案D 换代)**:池 = 四级令牌库(案D——普通打底/优秀·稀有做翼/传说惊喜位空集;曝光槽 = 三选一 2 格全池 + 1 格优秀档以上子池,令牌 = 出现次数上限、概率与已拿上限解耦;构成数字与抽取细节全读[奇物](奇物.md)与 `adventure.tres`,provisional 归[难度曲线与Boss](难度曲线与Boss.md)曲线调参批,本节零复制)。**池为冒险级单例**(迭代 10 追加批):关卡内奖励节点的三选一与商店货架共享同一令牌库(同库同摘牌),库存 = 剩余令牌数;消费 reward_pick 封闭随机流(主种子派生、[数据配置](../表现与支撑/数据配置.md)口径),同种子同操作序列同三选项可复放;**MC 策略 316-f**:autoplay 1 级优先度=最稀有(rarest>rare>common)、2 级=最左。断点附随件承载池余库逐枚还原;兑付语义归[关卡节点地图](关卡节点地图.md)。 +**奖励节点三选一池(结构层——池机制事实源=[奇物](奇物.md)「池结构与抽取」节,2026-10-11 迭代 20 案D 换代)**:池 = 四级令牌库(案D——普通打底/优秀·稀有做翼/传说惊喜位空集;曝光槽 = 三选一 2 格全池 + 1 格优秀档以上子池,令牌 = 出现次数上限、概率与已拿上限解耦;构成数字与抽取细节全读[奇物](奇物.md)与 `adventure.tres`,provisional 归[难度曲线与Boss](难度曲线与Boss.md)曲线调参批,本节零复制)。**池为冒险级单例**(迭代 10 追加批):关卡内奖励节点的三选一与商店货架共享同一令牌库(同库同摘牌),库存 = 剩余令牌数;消费三选一封闭随机流(主种子派生、[数据配置](../表现与支撑/数据配置.md)口径),同种子同操作序列同三选项可复放;**MC 策略 316-f**:自动游玩 1 级优先度=最稀有(rarest>rare>common)、2 级=最左。断点附随件承载池余库逐枚还原;兑付语义归[关卡节点地图](关卡节点地图.md)。 -**秘宝件受同调位约束**(2026-10-09 注:道具件已随迭代 11 第①批 T7 出池——三选一/奖励节点/战斗内渠道现行零道具件投放,下述渠道约束与替换交互无现役触发面,保留作渠道恢复时的契约口径;同调位读数现行事实源=attunement_growth.tres 谓词表实时求值):道具持有上限 = 同调位数。读数源 = 同调位里程碑谓词表 attunement_growth.tres 实时求值(0 起步、硬上限 3、增长 = 通关次数 + Boss 击杀数——同调实施批 2026-10-03 落地,过渡读数源 transitional_sync_slots 已顺带退役;原提案八拍板 git 57da58c 已退役)。获取渠道约束形态(迭代 10 过渡承载):三选一道具件超位触发**替换交互**(现有件与新件 N+1 选 N——丢任一原有件腾位收新,或放弃新件不获取;终态恒 ≤ 同调位);奖励节点与战斗内渠道超位**不授予**(候选拒绝 + 掉落沉没,逐行归因留痕)——停点渠道全覆盖的替换交互随同调实施批统一完成(原待办清单条目已随完成移除)。 +**秘宝件受同调位约束**(2026-10-09 注:道具件已随迭代 11 第①批 T7 出池——三选一/奖励节点/战斗内渠道现行零道具件投放,下述渠道约束与替换交互无现役触发面,保留作渠道恢复时的契约口径;同调位读数现行事实源=attunement_growth.tres 谓词表实时求值):道具持有上限 = 同调位数。读数源 = 同调位里程碑谓词表 attunement_growth.tres 实时求值(0 起步、硬上限 3、增长 = 通关次数 + Boss 击杀数——同调实施批 2026-10-03 落地,过渡读数源已顺带退役;原提案八拍板已退役)。获取渠道约束形态(迭代 10 过渡承载):三选一道具件超位触发**替换交互**(现有件与新件 N+1 选 N——丢任一原有件腾位收新,或放弃新件不获取;终态恒 ≤ 同调位);奖励节点与战斗内渠道超位**不授予**(候选拒绝 + 掉落沉没,逐行归因留痕)——停点渠道全覆盖的替换交互随同调实施批统一完成(原待办清单条目已随完成移除)。 末关完成不发三选一与部分回血:没有下一战可受益——只做冒险完成结算,末关 Boss 钥石照常入账。设计意图:清库之后才兑付、末关不兑付,都是从「奖励只朝下一战生效」这一条推出来的。 @@ -233,7 +233,7 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜 |---|---|---| | 上游 | [难度曲线与Boss](难度曲线与Boss.md) | 逐关关卡完成率带是序列难度排布的输入;三关序列均已生效(地精洞窟→幽暗地域→灰矮人矿城),无未落前置;大奖励与恢复点数值的联动复验归它 | | 上游 | [数据配置](../表现与支撑/数据配置.md) | 关卡表与冒险表(单行全局)的承载与统一读取,本文是两表的内容与回填责任方;主种子的注入入口(随机服务) | -| 上游 | [战斗结算](../战斗循环/战斗结算.md) | 主角战斗入参覆盖值通道(本文供生命与上限);关卡收束接口由关卡节点地图收束点调用,本文零直调;战后生命终值与本战 GP 掉落(gp_dropped)经上报读回 | +| 上游 | [战斗结算](../战斗循环/战斗结算.md) | 主角战斗入参覆盖值通道(本文供生命与上限);关卡收束接口由关卡节点地图收束点调用,本文零直调;战后生命终值与本战 GP 掉落(掉落额)经上报读回 | | 下游 | [关卡节点地图](关卡节点地图.md) | 接口契约四件套 + 收束点语义,本文是定义源,也是其文档的强制输入 | | 下游 | [元进度](../跨局循环/元进度.md) | 冒险摘要承载钥石入账合计(元进度是消费方);冒险开始参数面预留(未来跨局加成在此注入,MVP 空参数) | | 下游 | [存档序列化](../表现与支撑/存档序列化.md) | 快照契约域单位 = 冒险(主种子 + 随机流计数器);摘要含主种子供复盘;断点域 `breakpoint` 内容 owner = 本文(迭代 8 卡①——七字段+附随件,见「冒险断点」节) | @@ -287,7 +287,7 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜 - 生命一致性:每战开始的上参 = 生命当前值与生效上限;战后生命 = 上报终值;三处写入口均封顶在 [0, 生效上限]。 - 恢复点:回复 = floor(生效上限 × 恢复比例 ÷ 100) 后封顶;满血腿回复 0 合法。 - 大奖励覆盖:三选一兑付后首战的入参 = 基础表值 + 加算区累加含选中件(覆盖值通道);AP 件兑付后每场战斗开始首轮行动点基线 +1。 -- 抽签封闭:三选一掷 3 消费 reward_pick 封闭流,同种子同操作序列同三选项;单次零重复;令牌耗尽快即枯竭、不再出现在候选(池消耗即上限)。 +- 抽签封闭:三选一掷 3 消费三选一封闭流,同种子同操作序列同三选项;单次零重复;令牌耗尽快即枯竭、不再出现在候选(池消耗即上限)。 - 同调位约束:道具终态持有恒 ≤ 同调位(谓词表实时求值);超位时停点渠道触发替换交互(丢旧收新 / 放弃新件两路),战斗内渠道沉没不入;奖励节点渠道同受约束。(现行零道具件投放——约束保留作契约,见「秘宝件受同调位约束」节注。) - 钥石逐杀:Boss 击杀后钥石累计增量 = boss_keystone 行值(首杀/复杀两档);大奖励面钥石入账零残留。 - 收束次序:关卡完成宣布到达时库存已被关卡节点地图先行清空;重复的关卡结束宣布被拒绝,状态与摘要零变化。 diff --git a/design/gdd/systems/冒险循环/奇物.md b/design/gdd/systems/冒险循环/奇物.md index f012a895..1d8a06f1 100644 --- a/design/gdd/systems/冒险循环/奇物.md +++ b/design/gdd/systems/冒险循环/奇物.md @@ -13,7 +13,7 @@ > > 状态:**已实现**(2026-10-04 双层 BD 实施批落地);现行为 v1.1。本文件是奇物的唯一定义文档。 > -> 数值纪律:本文件只写概念、取值域与指路;每件给多少、效果是什么一律不进正文,事实源是 `game/data/tables/feats.tres` 与 `game/data/tables/adventure.tres`。 +> 数值纪律:本文件只写概念、取值域与指路;每件给多少、效果是什么一律不进正文,事实源是 `data/tables/feats.tres` 与 `data/tables/adventure.tres`。 ## 专长(重设计·基础框架 v1) @@ -27,7 +27,7 @@ 4. **信息红线**:禁止任何效果让数字说谎(信息规则不豁免);揭示类效果只揭真格。 5. **防兑换环**:互相转换的通道必须有损耗或每轮上限;单向通道优先。 -> **落行注记(迭代 20 反哺写入,2026-10-12 追认⑤)**:「每第 N 次 / 积满触发」的数据行条件写 **N−1**——效果引擎 dispatch 时 when 先于 do 读计数器现值(预评估),故「满 N 触发」落行写 N−1(例:地质学家「满 4 种」写 eq 3、封印匠「每第 3 次」写 mod_eq ref 2、双管镐「每第 2 次」写 mod_eq ref 1)。行为仍为每第 N 次准点触发,单元测试钉住;新件落行照此口径。 +> **落行注记(迭代 20 反哺写入,2026-10-12 追认⑤)**:「每第 N 次 / 积满触发」的数据行条件写 **N−1**——效果引擎分发时 when 先于 do 读计数器现值(预评估),故「满 N 触发」落行写 N−1(例:地质学家「满 4 种」写 eq 3、封印匠「每第 3 次」写 mod_eq ref 2、双管镐「每第 2 次」写 mod_eq ref 1)。行为仍为每第 N 次准点触发,单元测试钉住;新件落行照此口径。 ### 基础件表(27 件,五族 + 跨族桥 + 契约尖点) @@ -93,7 +93,7 @@ | 代号 | 契约 | 账 | |---|---|---| -| 血税 | 本局:踩雷 −2 最大生命;标中 +1 攻击(**均下一战起生效**——战末汇入冒险加算区) | 双向都痛都爽,一句话讲得清;双向同账、本局累积、冒险收束清零。max_hp/攻击系战界重建属性,即时改会被重建冲掉,故滞后一战兑付(2026-10-12 追认⑨回写;卡面 desc 同步补「下一战起生效」) | +| 血税 | 本局:踩雷 −2 最大生命;标中 +1 攻击(**均下一战起生效**——战末汇入冒险加算区) | 双向都痛都爽,一句话讲得清;双向同账、本局累积、冒险收束清零。生命上限/攻击系属战界重建属性,即时改会被重建冲掉,故滞后一战兑付(2026-10-12 追认⑨回写;卡面 desc 同步补「下一战起生效」) | ### 迁入登记(秘宝域迁出件;实装批落地后并入件表) @@ -104,11 +104,11 @@ 惊巢反制=退役进素材库(不迁入)。 -**资源类迁出件(2026-10-18 用户裁)**:完美保险自资源类迁入专长——理由:它给的是**规则豁免**而非可调动的余量(§1.1 判据「给规则的是专长」),效果=本场首次封印落空不计入完美封印判定。旧「资源类成员」归类系 2026-10-08 框架批写入、无用户裁断支撑,随本次改判注销。专长行已于迭代 31 卡② 落表(合并 `3e076e22`):`feats.tres` 单行 `when counter(insurance_used) lt 1` 承载「本场首次」,效果类型 `forgive_seal_miss` 随引擎扩签;稀有档配额随净删重裁下调,现行值读 `game/data/tables/adventure.tres`。 +**资源类迁出件(2026-10-18 用户裁)**:完美保险自资源类迁入专长——理由:它给的是**规则豁免**而非可调动的余量(§1.1 判据「给规则的是专长」),效果=本场首次封印落空不计入完美封印判定。旧「资源类成员」归类系 2026-10-08 框架批写入、无用户裁断支撑,随本次改判注销。专长行已于迭代 31 卡② 落表:`feats.tres` 单行 `when counter(insurance_used) lt 1` 承载「本场首次」,效果类型 `forgive_seal_miss` 随引擎扩签;稀有档配额随净删重裁下调,现行值读 `data/tables/adventure.tres`。 ### 扩签登记(迭代 20 实装已承载——2026-10-12 追认④写入文档换代) -- **落地结果**:事实候选 10 条中 6 条落 FACTS 词位(边缘格判定/空白连锁判定/单次伤害量/被挖格当时有封印印记/雷罚伤害量/生命比例),4 条改道 adventure 域计数器(类型集合计数器/本轮挖格花费/本轮开格数/本轮踩雷数计数器——跨事件累积量走计数器+value_event 比较,不占 fact 词位,T0 定架构);停手事件已落(dig_stop);实现随裁补位=battle_won 事件(战地包扎所需,登记未列)、mod_eq 算子(周期触发)、hp_ratio(百分比 int 口径)等 3 项事实、新效果类型 7 项。 +- **落地结果**:事实候选 10 条中 6 条落事实词位(边缘格判定/空白连锁判定/单次伤害量/被挖格当时有封印印记/雷罚伤害量/生命比例),4 条改道 adventure 域计数器(类型集合计数器/本轮挖格花费/本轮开格数/本轮踩雷数计数器——跨事件累积量走计数器+value_event 比较,不占 fact 词位,T0 定架构);停手事件已落(dig_stop);实现随裁补位=battle_won 事件(战地包扎所需,登记未列)、mod_eq 算子(周期触发)、hp_ratio(百分比 int 口径)等 3 项事实、新效果类型 7 项。 - **连带**:净化工兵退役,rewrite_board 效果类型自引擎除名(扩签「暂缓:清图事件」不受影响,继续挂起)。 - **暂缓**:清图事件(随清图奖励题)。 @@ -122,13 +122,13 @@ ### 凭证件表(新 3 + 留任 2;代号制命名归用户;稀有度档、配额与面值数值归调参批) -> **2026-10-18 用户裁削两件**:**同调电池**删除——秘宝是「局外同调件」、冒险中零更换途径,与 `cf04bd66` 撤换装券/删回能器同一原则(且 UI 层从未接线选件入口);**完美保险**迁出资源类改归专长——它给的是规则豁免,不是余量,见 §1.4 判据。两件原职责账(秘宝充能/完美资格)同步自 §1.3 账清单注销。 +> **2026-10-18 用户裁削两件**:**同调电池**删除——秘宝是「局外同调件」、冒险中零更换途径,与撤换装券/删回能器同一原则(且 UI 层从未接线选件入口);**完美保险**迁出资源类改归专长——它给的是规则豁免,不是余量,见 §1.4 判据。两件原职责账(秘宝充能/完美资格)同步自 §1.3 账清单注销。 | 代号 | 写进哪笔系统资源(寿命档) | 一句话 | 备注 | |---|---|---|---| | 刷新券 | 刷新存量账(冒险级) | 存量刷新次数 +1 | 语义=存量加仓(已裁);实现依赖刷新件写错账修复(同批) | | 储备金袋 | 储备池 RAP(节点级) | 储备池 +N | 给停手/刷新雷图经济加燃料;战斗结束清零系既有语义,兼容 | -| 时沙 | 下一战首轮 AP 队列(拾取挂账,兑付即消尽) | 下一战首轮 AP +2 | 一次性节奏件;与「AP 上限+1」(属性轴)不撞——一个改池子、一个改上限(落法=hero_ap_bonus 既有通道,2026-10-12 追认⑦回写;拾取时战斗在途同样等下一战首轮) | +| 时沙 | 下一战首轮 AP 队列(拾取挂账,兑付即消尽) | 下一战首轮 AP +2 | 一次性节奏件;与「AP 上限+1」(属性轴)不撞——一个改池子、一个改上限(落法=AP 加成既有通道,2026-10-12 追认⑦回写;拾取时战斗在途同样等下一战首轮) | | 小 GP 袋 | GP 钱包(冒险级) | (留任)+20 / +50 | 计价物不自售维持(不进商店) | | 应急口粮 | 生命账(冒险级) | (留任)回复 +6 | 在商店内(默认原则) | @@ -230,7 +230,7 @@ **补给类内部的异质性(统一表述)**:凭证全部即时消尽——不存在「持有凭证」这种状态;异质性不在凭证上,而在**被写入的系统资源的寿命**上:GP 钱包 / 生命 / 刷新存量 = 冒险级,储备池 = 节点级,时沙暂记 = 至下一战首轮兑付(系统资源清单对齐「凭证件表(新 3+留任 2)」节;「AP 上限」已归属性值提升轴,见 1.2)。 -- 原在册的「秘宝充能」「完美资格」两笔随 2026-10-18 两件裁削注销——`attune_charges` 账本本身仍为秘宝基础设施保留(迭代 11,主动件充能每冒险重置),本次只删奇物侧写它的入口。 +- 原在册的「秘宝充能」「完美资格」两笔随 2026-10-18 两件裁削注销——充能账本本身仍为秘宝基础设施保留(迭代 11,主动件充能每冒险重置),本次只删奇物侧写它的入口。 - 完美资格的豁免走**订阅式自有累加账**:授予段在 `seal_missed` 命中时累加豁免数,判定取「误标总数 − 豁免数」得有效数;**不改写误标账本身、不拦截事件**(迭代 31 卡② 契约 2/3)。 - 登记此节防止把凭证当成会持续生效的东西去结算。 @@ -263,8 +263,6 @@ **为什么两层都要有**:分类名在卡面上不出现,不等于玩家对它没有概念——帮助手册、百科条目、成就名称三处一定会用到它(「首次集齐 4 件专长」「三件属性值提升」),效果描述里出现指代时也需要名字(如「本项属专长」类归类指代)。所以它必须是一个**玩家读得懂、读一遍就懂**的正式名词,不能是内部描述或自造词。 -**代码侧词族对应**(本批只做命名对齐,代码改动见需求卡片):顶层 `curio_*`(奇物总称)/ 专长 `feat_*` / 属性值提升 `asi_*` / 资源 `res_*`。`reward_*` 已被既有标识符占用(`reward_pick` / `reward_node` / `reward_preview`),**禁止使用**。 - ### 2. 渠道轴:与分类的交叉 三个渠道各只取走分类的一部分。这张表是奇物概念的第二个维度——它和分类轴互不决定,改其中一根不必动另一根。 @@ -433,12 +431,12 @@ | 参数 | 取值域 | 事实源 | |---|---|---| -| 专长定义行(标识 / 显示名 / 稀有度 / 效果说明 / 订阅行〔订阅哪个事件 on / 什么条件 when / 什么效果 do〕) | 各字段封闭枚举,行键白名单封闭;事件 / 效果类型 / 条件事实 / 算子四词表封闭(效果引擎单一事实源);稀有度档=新四级(普通/优秀/稀有/传说),schema 字段双脱钩(字段在、设计面按档配比加权) | `game/data/tables/feats.tres` | +| 专长定义行(标识 / 显示名 / 稀有度 / 效果说明 / 订阅行〔订阅哪个事件 on / 什么条件 when / 什么效果 do〕) | 各字段封闭枚举,行键白名单封闭;事件 / 效果类型 / 条件事实 / 算子四词表封闭(效果引擎单一事实源);稀有度档=新四级(普通/优秀/稀有/传说),schema 字段双脱钩(字段在、设计面按档配比加权) | `data/tables/feats.tres` | | 专长凭证(出现概率 / 配额 / 限购次数 / 保底计数阈值) | 整数,四参数全 provisional | 已入表(`shop.tres` 凭证行 + 冒险表凭证三计数行) | -| 属性值提升种类 | 封闭三项:生命上限 / AC / 攻击,扩项走文档修订 | 冒险表结构声明(AdventureTable) | +| 属性值提升种类 | 封闭三项:生命上限 / AC / 攻击,扩项走文档修订 | 冒险表结构声明 | | 补给种类 | 种类现行事实源=「凭证件表(新 3+留任 2)」节;凭证已入表(迭代15②) | 同上 | | 稀有度档位 | 封闭四级(普通 / 优秀 / 稀有 / 传说);配额是结构锚,改总量须重新拍板而非调参 | 同上 | -| 各分类种类 × 档位的配额与值 | 整数 | `game/data/tables/adventure.tres` | +| 各分类种类 × 档位的配额与值 | 整数 | `data/tables/adventure.tres` | | 专长获取的全局限量 | 整数(一局内可获得的次数上限) | 同上 | | 一次三选一的候选展示数 | [1,6] | 同上 | diff --git a/design/gdd/systems/冒险循环/难度曲线与Boss.md b/design/gdd/systems/冒险循环/难度曲线与Boss.md index 7f4c7970..fb1d892f 100644 --- a/design/gdd/systems/冒险循环/难度曲线与Boss.md +++ b/design/gdd/systems/冒险循环/难度曲线与Boss.md @@ -111,7 +111,7 @@ MVP 行值并不逐式现算,而是按此式量级直填经切片验证过的 | 带 | 定稿口径 | 含义 | |---|---|---| -| 通关率带 | 口径已换代·现行带 = 四带甲案(2026-10-03 用户拍板):带 A 白板完美执行战役全通率 [0%,10%] / 带 B 白板第一关通过率 [50%,85%] / 带 C 营地满成长战役全通率 [30%,60%](预立) / 带 D 响应曲线每雷边际 ≤15pp·S 形——旧普通档 L1 [35,55] / L2 [10,15] 与完美档 [35,65] 正式作废,全文见本节末「带换代」条。实证:直入口 L2 普通 5% vs 冒险条件口径 L2 90% 同期并存〔「营地检查点」= balance_verifier 营地循环判定段旧称(现名营地循环战役)——2026-09-30 词源考证完成,见审计报告 git 提交 c095916 拍板点 9(已按生命周期条款退役);与冒险结构「没有检查点」铁律的字面相撞就此解除〕 | 四带按类型基准锚定、每条带均有外部锚点:带 B 管首关 = 过滤器不是墙;带 A 管白板全通的顶尖难度;带 C 留元进度爬升空间(满成长实装后启用);带 D 管响应曲线无悬崖 | +| 通关率带 | 口径已换代·现行带 = 四带甲案(2026-10-03 用户拍板):带 A 白板完美执行战役全通率 [0%,10%] / 带 B 白板第一关通过率 [50%,85%] / 带 C 营地满成长战役全通率 [30%,60%](预立) / 带 D 响应曲线每雷边际 ≤15pp·S 形——旧普通档 L1 [35,55] / L2 [10,15] 与完美档 [35,65] 正式作废,全文见本节末「带换代」条。实证:直入口 L2 普通 5% vs 冒险条件口径 L2 90% 同期并存〔「营地检查点」= 数值验证工具营地循环判定段旧称(现名营地循环战役)——2026-09-30 词源考证完成,见审计报告拍板点 9(已按生命周期条款退役);与冒险结构「没有检查点」铁律的字面相撞就此解除〕 | 四带按类型基准锚定、每条带均有外部锚点:带 B 管首关 = 过滤器不是墙;带 A 管白板全通的顶尖难度;带 C 留元进度爬升空间(满成长实装后启用);带 D 管响应曲线无悬崖 | | 关卡完成余量带 | 关卡完成者关卡完成时剩余生命的 p90 / p10 按现生命轴上限百分比表达(压缩前绝对血量带已作废;界值重标随验收批) | **关卡完成余量** = 关卡完成瞬间还剩多少血。余量太肥说明赢得太从容,压生存侧;太瘦说明"剩一两滴血惨胜"成常态,抬治疗供给或恢复点收益 | | 第一关形态带 | 教学位绿档 + 中段黄档 + Boss 黄档不红 | **形态带**管一关内各战三档判定的排布形状:第一战必须稳过,中段有输的可能,Boss 战紧但不许是配置事故 | @@ -123,7 +123,7 @@ MVP 行值并不逐式现算,而是按此式量级直填经切片验证过的 **迭代 24 敌人表内容修批读数(只测不判——2026-10-14 反哺写入批登记,用户裁「全部按呈报写入文档」;数值终值归 M4 数值批)**:同种子配对 seed0=9000(沿用迭代 23 配对种子)改前/改后各 40 局×both——①**N2 普通敌技能投放**(毒吐/盾击两新行六池)后 perfect L2 通关 8/20→13/20(+25pp)、L3 全通 6/20→10/20(+20pp)——方向符合预期(L1 减压后更健康抵达 L2/L3),量级低于二档配对判读带 ~30pp,倍率 provisional 归 M4;normal 档基率地板(0/20)无判读力;②**N3 敌方攻击类型轴**(20 行全填 normal+敌方兑付路径克制消费)后全局平移 = 主角穿重甲受伤点数 −1 / 魔法护甲 +1 / 轻甲 0(V5 冒烟同种子三甲型配对实测单发恒 ±1:heavy 2==light 3−1 · ward 4==light 3+1);taken 中位 normal 29.5→27.5、perfect 76.5→97.0——后者系**构成效应**(全通 6→10 局通关更深自然累计更多承伤),非单发异常;③N1 (1,2) 降档(hp 50→22·ac 3→2)后 perfect L1 通关 19/20→20/20——5 倍墙消除方向符合预期。判读与带重锚随 M4 数值批,本注记只登记不判读。 -**判读口径同步(迭代 5 基线重测批,2026-09-28)**:通关率带的测量口径 = 冒险条件通关率(打通 k−1 关才到达第 k 关,balance_verifier 冒险段派生;单关直入口口径已随 2026-09-23 拍板退役)——带值沿用 2026-09-20 分带修正(普通档 L1 [35,55] / L2 [25,45]、完美档 [35,65];迭代 5 计划书 C4 冻结:改带=用户拍板)。上方行 115 的「带退役待重锚、重锚前只测不判」注记按本条同步理解:迭代 5 基线重测已按现行带对冒险条件口径判读(读数报告见 git 提交 e55dc10,已按生命周期条款退役);是否在新口径上重取带值,归迭代 5 出口判读由用户拍板,本批不动带数字。 +**判读口径同步(迭代 5 基线重测批,2026-09-28)**:通关率带的测量口径 = 冒险条件通关率(打通 k−1 关才到达第 k 关,由数值验证工具冒险段派生;单关直入口口径已随 2026-09-23 拍板退役)——带值沿用 2026-09-20 分带修正(普通档 L1 [35,55] / L2 [25,45]、完美档 [35,65];迭代 5 计划书 C4 冻结:改带=用户拍板)。上方行 115 的「带退役待重锚、重锚前只测不判」注记按本条同步理解:迭代 5 基线重测已按现行带对冒险条件口径判读(读数报告已按生命周期条款退役);是否在新口径上重取带值,归迭代 5 出口判读由用户拍板,本批不动带数字。 > **⚠ 带失效待重锚(2026-10-01 数值修复批)**:模拟档位重构(普通档 v2 新手画像→v3=完美策略+受控失误注入;完美档补元游戏选路与商店购买)+数值三刀(hero max_hp 20→26/直伤雷 4/5/5→6/8/8/L1 系敌 atk 2→1)后,上方三条验收带的测量基准已失义——旧普通档=比真人弱 20 倍的新手画像(真人实证推翻),旧带值系照坏尺子校定。新尺读数(N=100/200)与调优轨迹见 `数值修复批读数(已退役,git 历史可查)`;~~新带值须新尺重测后用户拍板,重锚前只测不判~~(已由下行带换代完成)。 @@ -175,7 +175,7 @@ GP 与商店房随 2026-09-20 GP+商店房批落地,给难度引入第三族 公式语义与 GP 归[冒险结构](冒险结构.md)(GP 节),商店房编排归[关卡节点地图](关卡节点地图.md);行值读 `data/tables/shop.tres`,全部 provisional 归本文曲线调参批。 -**分层验收 defer(2026-09-20 用户拍板成文)**:按"商店存在与否"分层的通关率验收——MC 双格(shop=off 现行基线 / shop=on 购买画像)、shop=on 的带平移量、商店属性提升的换算率登记(换算率强条目纪律同类)——**全部随曲线调参批执行**,与「基线通关率越带」同窗(原「L2 Boss 承伤微越带」「大奖励数值随难度曲线联动」两待办清单条目已完成移除——前者 2026-09-28 读数自愈、后者随迭代 10 大奖励退役失义)。执行前 shop=off 续用现行带判读,shop=on 读数只登记不判读、禁止用 shop=off 读数外推 shop=on。L3 首遇绿档冒烟断言仍按成长代理档口径,不因商店批改判。**v0.22 注记(迭代 11 第②批)**:shop=off 对照 = legacy 固定三件模式(MC 逐项比对 off_n60 逐位,迭代 11 第②批 T5);shop=on 首锚 = 共享池货架面 N=60 双策略(`runsum_m4iter11b_t5shopon_n60_20261003.jsonl`,attune=off 同种子配对)——带平移判读仍归调参批,终局池读数(pool_stock)随行只测不判。 +**分层验收 defer(2026-09-20 用户拍板成文)**:按"商店存在与否"分层的通关率验收——MC 双格(shop=off 现行基线 / shop=on 购买画像)、shop=on 的带平移量、商店属性提升的换算率登记(换算率强条目纪律同类)——**全部随曲线调参批执行**,与「基线通关率越带」同窗(原「L2 Boss 承伤微越带」「大奖励数值随难度曲线联动」两待办清单条目已完成移除——前者 2026-09-28 读数自愈、后者随迭代 10 大奖励退役失义)。执行前 shop=off 续用现行带判读,shop=on 读数只登记不判读、禁止用 shop=off 读数外推 shop=on。L3 首遇绿档冒烟断言仍按成长代理档口径,不因商店批改判。**v0.22 注记(迭代 11 第②批)**:shop=off 对照 = legacy 固定三件模式(MC 逐项比对 off_n60 逐位,迭代 11 第②批 T5);shop=on 首锚 = 共享池货架面 N=60 双策略(同调关闭同种子配对)——带平移判读仍归调参批,终局池读数(pool_stock)随行只测不判。 ### Boss 设计:食人魔酋长与关底血量锚 @@ -220,7 +220,7 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 | 封印溢价系数 δ ↔ 完美乘数 p_perfect ↔ ap_per_round | [战斗结算](../战斗循环/战斗结算.md)、[行动经济](../排雷循环/行动经济.md) | 封印激励三件套同窗检算(防封印 rush 复发:δ 与 ×2 叠加通胀、AP 吞吐上限)——任一变动须重跑双画像封印率读数(2026-10-05 判式换代批新增) | | η 读数 ↔ 模拟画像定义 ↔ 可推理率 ι ↔ min_safe_count/生成尝试上限 | sim 档位、[棋盘生成](../排雷循环/棋盘生成.md) | η 是画像条件量:画像重构即锚漂移,重锚顺带;可推理率三元组既有联动扩一员(2026-10-05 判式换代批新增) | | β 带端点 β_lo/β_hi ↔ D_ref ↔ hero max_hp ↔ AC 折算档(5pp 系数) | [战斗结算](../战斗循环/战斗结算.md) | 带是 D_ref 的函数:换锚(D_ref/max_hp)须全带重推;AC 档值变更改 5pp 系数,同罪(2026-10-05 判式换代批新增) | -| 直伤雷三行(6/8/8) ↔ 正向同轴行(heal_minor/pierce_strike/magic_bolt) | [地图战斗资源](../战斗循环/地图战斗资源.md) | **同轴镜像比入对账面**:负向/正向比超出 β 带内推导区间即越带;单边动负向三行今后必须带正向镜像行联合检算(2026-10-05 判式换代批新增——d70f6c3/数值修复批两先例的单边动教训成文) | +| 直伤雷三行(6/8/8) ↔ 正向同轴行(heal_minor/pierce_strike/magic_bolt) | [地图战斗资源](../战斗循环/地图战斗资源.md) | **同轴镜像比入对账面**:负向/正向比超出 β 带内推导区间即越带;单边动负向三行今后必须带正向镜像行联合检算(2026-10-05 判式换代批新增——数值修复批两先例的单边动教训成文) | | clear_blast 区间(24/40/32) ↔ p_perfect | [地图战斗资源](../战斗循环/地图战斗资源.md) | 完美封印第二份的补贴基数进封印激励对账;单边动清图奖励 = 变相动封印(2026-10-05 判式换代批新增) | | 标中强化池权重 ↔ 正向池权重(77 分母) ↔ 关级恒等式奖励占比 [15,40%] | [地图战斗资源](../战斗循环/地图战斗资源.md) | 形态 (b) 专属池重摇启用时生效(现行不启):双池分布变动 = E_dig 与 W 同时漂移,须联合检算 + 恒等式占比复核(2026-10-05 判式换代批新增,条件生效行) | @@ -270,7 +270,7 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 ## 调参表 -本系统是全项目行值最多的系统。数值纪律(2026-09-17 降级批定稿):**正文与调参表只定规则、取值域与口径,具体行值一律读配置表(切片 `game/data/tables/` 的 enemy / skills / hero / board_gen / reward / settlement / status_effects 等),已锁数值以 `data/tables/` 对应表为准,本文不登记具体数值——防双写失同步**(切片 `.tres` 数值压缩批后文档行值滞后,双写失同步已被实证)。 +本系统是全项目行值最多的系统。数值纪律(2026-09-17 降级批定稿):**正文与调参表只定规则、取值域与口径,具体行值一律读配置表(切片 `data/tables/` 的 enemy / skills / hero / board_gen / reward / settlement / status_effects 等),已锁数值以 `data/tables/` 对应表为准,本文不登记具体数值——防双写失同步**(切片 `.tres` 数值压缩批后文档行值滞后,双写失同步已被实证)。 首发行值几乎全部 provisional,其中加难相关数值处于 provisional-pending-scan(扫描未执行);完整行集读表,不在此整表搬运。 @@ -325,7 +325,7 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板 - 零红档:全部行集经区间扫描,不存在"最好情况也打不过"的战斗组合。 - 教学位绿档:第一关第一战与各新敌种首遇位的区间判定为绿档。 - 形态带成立:第一关形态 = 教学位绿 + 中段黄 + Boss 黄不红。 -- 通关率带:**2026-10-03 带换代(用户拍板四带甲案)**——带 A 白板完美执行战役 [0,10%] / 带 B 白板 L1 [50,85%] / 带 C 满成长 [30,60%] 预立 / 带 D 响应曲线 ≤15pp·S 形;旧普通 L1 [35,55] / L2 [10,15]、完美 [35,65] 正式作废。测量口径维持冒险条件通关率(balance_verifier 冒险段派生);四带定稿全文见「期望值带」节「带换代」条。 +- 通关率带:**2026-10-03 带换代(用户拍板四带甲案)**——带 A 白板完美执行战役 [0,10%] / 带 B 白板 L1 [50,85%] / 带 C 满成长 [30,60%] 预立 / 带 D 响应曲线 ≤15pp·S 形;旧普通 L1 [35,55] / L2 [10,15]、完美 [35,65] 正式作废。测量口径维持冒险条件通关率(由数值验证工具冒险段派生);四带定稿全文见「期望值带」节「带换代」条。 - 关卡完成余量带:关卡完成者剩余生命 p90 / p10 按现生命轴上限百分比表达,界值重标随验收批。 - 恒等式闭合:关级恒等式逐项对账闭合,残差 <5%(provisional 阈值);奖励输出占比 ∈ [15%, 40%]。 - Boss 锚在案:每个 Boss 行的血量锚比率记录在案且落在现行带内;越带须登记,不静默变更。 diff --git a/design/gdd/systems/战斗循环/地图战斗资源.md b/design/gdd/systems/战斗循环/地图战斗资源.md index 04ecbadf..ea313de8 100644 --- a/design/gdd/systems/战斗循环/地图战斗资源.md +++ b/design/gdd/systems/战斗循环/地图战斗资源.md @@ -5,7 +5,7 @@ ## 设计目的 -地图战斗资源是战斗域的资源层:每张雷图上每个格子携带什么资源、资源怎么摇定、正向与负向各兑付成什么效果、清图时整张板发什么,由它统一裁决。核心抽象是**格面资源(CellResource)**——关联到格子上的资源对象:装板时摇定类型身份,安全格与危险格一视同仁、同一类型池;资源本身不分好坏,被当成奖励还是惩罚,由玩家对这一格做的动作在结算期决定——开安全格、标中雷是正向,开危险格、标错安全格是负向(极性矩阵的定义归本文,路由执行归[战斗结算](战斗结算.md))。开局初始展开白送的那批格是**封锁格**——恒无资源,不再有任何加成(定义见[排雷玩法](../排雷循环/排雷玩法.md))。 +地图战斗资源是战斗域的资源层:每张雷图上每个格子携带什么资源、资源怎么摇定、正向与负向各兑付成什么效果、清图时整张板发什么,由它统一裁决。核心抽象是**格面资源**——关联到格子上的资源对象:装板时摇定类型身份,安全格与危险格一视同仁、同一类型池;资源本身不分好坏,被当成奖励还是惩罚,由玩家对这一格做的动作在结算期决定——开安全格、标中雷是正向,开危险格、标错安全格是负向(极性矩阵的定义归本文,路由执行归[战斗结算](战斗结算.md))。开局初始展开白送的那批格是**封锁格**——恒无资源,不再有任何加成(定义见[排雷玩法](../排雷循环/排雷玩法.md))。 它守住三件事:每个非封锁格都有资源可兑(结构保证,不靠逐次掷运气);类型身份在装板期一次摇定、全程只读(在"数字恒真"的推理之外,类型是第二层规划素材);每个兑付都能在结算明细里指回挖开的哪一格。缺了这一层,挖格没有收益语言,"扫雷攒因、战斗结果"的兑现就断在最后一环。 @@ -96,7 +96,7 @@ - **档由两个参数定义:概率位 + 保底上限**。「永不保底」不单立规则——T4 的保底上限 = 0 即其统一表达;T1/T2 上限同为 0。 - **保底数量挂在型上、不挂在档上**:每个型各自登记「每板至少出几个」。档内登记保底的型数 ≤ 档上限 → 全部兑现;> 上限 → 每板从登记型中随机选定「上限」个兑现,其余型该板按普通概率出现、不保底。 -- **补签纪律**:执行序 = 装板摇号(含偏运硬币/board_skew 投影)→ 按上限定本期保底型集合 → 校验补签 → 板上全程只读。补签只改类型身份:危险格与安全格不动(补签格可为雷可为安全格,危险格与安全格同池不破)、不消费权重(补签不是一次取号)、清图判定不动、不泄露元信息(补签格与摇号格不可区分)。粒度 = 板,换板重新校验。 +- **补签纪律**:执行序 = 装板摇号(含偏运硬币投影)→ 按上限定本期保底型集合 → 校验补签 → 板上全程只读。补签只改类型身份:危险格与安全格不动(补签格可为雷可为安全格,危险格与安全格同池不破)、不消费权重(补签不是一次取号)、清图判定不动、不泄露元信息(补签格与摇号格不可区分)。粒度 = 板,换板重新校验。 - **GP 数值锚**:以战斗结束 GP 奖励为锚——小 GP 袋 ≈ 其 1/10、大宝箱 ≈ 其 1 倍(具体数值归调参批)。 - 大宝箱为枚举新增(九型→十型走本文修订流程,不随手加行);微光归通用增益组(五色相不变,组内不细分正好容下)。 - **对外稀有度映射**(现行事实源=[核心循环](../../01-核心循环.md)「档位与获取规则」节):T1=普通 / T2=优秀 / T3=稀有 / T4=传说;任何概率提升禁止改变本档保底承诺(保底=承诺非概率)。 @@ -123,13 +123,13 @@ | 类型 | 正向(奖励) | 负向(惩罚) | |---|---|---| -| attack 增伤 | attack_up(hero_offense 池)——幅度/上限/权重见 `reward.tres` | enrage(enemy_output 池)——幅度/上限见 `status_effects.tres` enrage 行 | -| defense 护甲 | ac_up 盾牌加护(AC 掷点阈值轴——2026-09-16 换装,不入池)——幅度/上限/权重见 `reward.tres` | off_guard 失衡(AC 掷点阈值轴负向——2026-09-18 换装,不入池、退出 hero_defense 池)——幅度/上限见 `status_effects.tres` off_guard 行 | +| attack 增伤 | attack_up(主角输出池)——幅度/上限/权重见 `reward.tres` | enrage(敌方输出池)——幅度/上限见 `status_effects.tres` enrage 行 | +| defense 护甲 | ac_up 盾牌加护(AC 掷点阈值轴——2026-09-16 换装,不入池)——幅度/上限/权重见 `reward.tres` | off_guard 失衡(AC 掷点阈值轴负向——2026-09-18 换装,不入池、退出主角防御池)——幅度/上限见 `status_effects.tres` off_guard 行 | | heal 回血 | heal_minor(满血零兑付照旧)——威力/权重见 `reward.tres` | heal_backlash 直伤:战斗结算直接扣血,不经增益状态——威力见 `reward.tres` | | blast 群伤 | spark_aoe 全体存活敌各吃一笔——威力/权重见 `reward.tres` | enemy_alert 警觉:敌方全体护甲等级 +1/层(`status_effects.tres` alert 行)——见 `reward.tres` | -| weaken 削弱 | weaken(enemy_output 池;同名重复授予只刷新剩余次数——2026-09-18 续时定案)——幅度见 `status_effects.tres` weaken 行 | sapped(hero_offense 池)——幅度见 `status_effects.tres` sapped 行 | +| weaken 削弱 | weaken(敌方输出池;同名重复授予只刷新剩余次数——2026-09-18 续时定案)——幅度见 `status_effects.tres` weaken 行 | sapped(主角输出池)——幅度见 `status_effects.tres` sapped 行 | | action 行动点 | ap_up:下轮行动点 +1——见 `reward.tres` | ap_drain 迟滞:下轮行动点 −1——见 `reward.tres` | -| gp 财货 | gp_gain GP 袋:战斗内 GP 缓冲 +power,战斗完成随 gp_dropped 统一入钱包账本(兑付编排归[战斗结算](战斗结算.md)、账本归[冒险结构](../冒险循环/冒险结构.md))——威力/权重见 `reward.tres` | gp_loss 破财:战斗内 GP 缓冲 −power,weight=0 纯字典不参与摇号——见 `reward.tres` | +| gp 财货 | gp_gain GP 袋:战斗内 GP 缓冲 +power,战斗完成随 GP 掉落统一入钱包账本(兑付编排归[战斗结算](战斗结算.md)、账本归[冒险结构](../冒险循环/冒险结构.md))——威力/权重见 `reward.tres` | gp_loss 破财:战斗内 GP 缓冲 −power,weight=0 纯字典不参与摇号——见 `reward.tres` | | pierce 穿刺 | pierce_strike 穿刺弹:单目标克制直伤(attack_type=pierce 查克制矩阵,必中全额不掷点;目标 = 固定顺位最前存活敌)——威力/权重见 `reward.tres` | pierce_snare 穿刺陷阱:主角直伤,不经增益状态——威力见 `reward.tres` | | magic 魔法 | magic_bolt 魔法矢:单目标克制直伤(attack_type=magic,同上)——威力/权重见 `reward.tres` | magic_recoil 魔法反噬:主角直伤,不经增益状态——威力见 `reward.tres` | @@ -141,7 +141,7 @@ ### 负向恒即时:惩罚没有库存语义 -负向兑付的账户动作全部在授予段受理,不入库、不出窗口——惩罚不设库存、不留存量;其中**伤害形态(群伤/直伤类负向行)的扣血落地殿后到战斗段末**(2026-10-06 用户裁,单据暂存,见[战斗结算](战斗结算.md));主角在敌方还手中倒下则地图伤害账整体不兑(逐单留「未生效」行)。正向里的 percent 类(增益行)进[增益状态](增益状态.md)的状态池;heal 正向当场结算;gp 正负两向(GP 袋 / 破财)当场执行——记入战斗内 GP 缓冲,战斗完成随 gp_dropped 与钱包结算(账本归[冒险结构](../冒险循环/冒险结构.md)),同样无库存语义。叠层饱和由战斗结算既有池 clamp 承载;blast 负向(警觉)与 action 负向(迟滞)直授无上限。 +负向兑付的账户动作全部在授予段受理,不入库、不出窗口——惩罚不设库存、不留存量;其中**伤害形态(群伤/直伤类负向行)的扣血落地殿后到战斗段末**(2026-10-06 用户裁,单据暂存,见[战斗结算](战斗结算.md));主角在敌方还手中倒下则地图伤害账整体不兑(逐单留「未生效」行)。正向里的 percent 类(增益行)进[增益状态](增益状态.md)的状态池;heal 正向当场结算;gp 正负两向(GP 袋 / 破财)当场执行——记入战斗内 GP 缓冲,战斗完成随 GP 掉落与钱包结算(账本归[冒险结构](../冒险循环/冒险结构.md)),同样无库存语义。叠层饱和由战斗结算既有池 clamp 承载;blast 负向(警觉)与 action 负向(迟滞)直授无上限。 举证:本节为兑付语义,无计算。 @@ -210,23 +210,23 @@ | 行 | 类型 | 极性 | 取值域 / 字段语义 | 现行值 | 所在池 | |---|---|---|---|---|---| -| attack_up | attack | 正向 | weight [0,999] · power 不消费(percent 行 effect_id → StatusEffectTable attack_up 引用) | 见 `data/tables/reward.tres` | 格面池 | -| ac_up | defense | 正向 | weight [0,999] · power 不消费(percent 行 effect_id → StatusEffectTable ac_up 引用) | 同上 | 同上 | +| attack_up | attack | 正向 | weight [0,999] · power 不消费(percent 行 effect_id → 状态效果表 attack_up 引用) | 见 `data/tables/reward.tres` | 格面池 | +| ac_up | defense | 正向 | weight [0,999] · power 不消费(percent 行 effect_id → 状态效果表 ac_up 引用) | 同上 | 同上 | | spark_aoe | blast | 正向 | power [0,999]·power_min/power_max 可选区间·weight [0,999](flat 行 effect_id 恒空) | 同上 | 同上 | | heal_minor | heal | 正向 | power [0,999]·power_min/power_max 可选区间·weight [0,999](flat 行 effect_id 恒空) | 同上 | 同上 | -| weaken | weaken | 正向 | weight [0,999] · power 不消费(percent 行 effect_id → StatusEffectTable weaken 引用) | 同上 | 同上 | -| enrage | attack | 负向 | weight=0 不参与摇号·power 不消费(percent 行 effect_id → StatusEffectTable enrage 引用) | 同上 | 同上 | -| off_guard | defense | 负向 | weight=0 不参与摇号·power 不消费(percent 行 effect_id → StatusEffectTable off_guard 引用) | 同上 | 同上 | +| weaken | weaken | 正向 | weight [0,999] · power 不消费(percent 行 effect_id → 状态效果表 weaken 引用) | 同上 | 同上 | +| enrage | attack | 负向 | weight=0 不参与摇号·power 不消费(percent 行 effect_id → 状态效果表 enrage 引用) | 同上 | 同上 | +| off_guard | defense | 负向 | weight=0 不参与摇号·power 不消费(percent 行 effect_id → 状态效果表 off_guard 引用) | 同上 | 同上 | | heal_backlash | heal | 负向 | weight=0 不参与摇号·power [0,999](flat 行 effect_id 恒空) | 同上 | 同上 | | enemy_alert | blast | 负向 | weight=0 不参与摇号·effect_id=alert(敌方护甲等级 +1——effect 引用行,unit=ac) | 同上 | 同上 | | ap_up | action | 正向 | weight [0,999] 参与摇号 | 同上 | 同上 | | ap_drain | action | 负向 | weight=0 不参与摇号 | 同上 | 同上 | | gp_gain | gp | 正向 | weight [0,999] 参与摇号 · power [0,999]·power_min/power_max 可选区间(flat 行 effect_id 恒空) | 同上 | 同上 | | gp_loss | gp | 负向 | weight=0 不参与摇号 · power [0,999](flat 行 effect_id 恒空) | 同上 | 同上 | -| sapped | weaken | 负向 | weight=0 不参与摇号·power 不消费(percent 行 effect_id → StatusEffectTable sapped 引用) | 同上 | 同上 | +| sapped | weaken | 负向 | weight=0 不参与摇号·power 不消费(percent 行 effect_id → 状态效果表 sapped 引用) | 同上 | 同上 | | clear_blast | blast | 正向 | clear_default 池·power [0,999]·power_min/power_max 可选区间·weight [0,999] | 同上 | 清图槽 | -摇号只消费正向格面池的权重(类型频次由此涌现——具体权重读 `reward.tres`);负向行是纯兑付字典,按(类型,极性)查表取用,不消费权重。权重分布按四档概率结构组织(档成员与保底规则见「四档概率结构与保底」节;现行权重为基准锚,数值调整归调参批)。clear_blast 对全体存活敌各吃一笔当场兑付的 flat 伤害。RewardConfigTable 已随可选类删除下线——注入概率、按板保底等参数全部失义(旧「按板保底」指已删除的可选类道具注入保底,与四档结构的型级保底无关)。 +摇号只消费正向格面池的权重(类型频次由此涌现——具体权重读 `reward.tres`);负向行是纯兑付字典,按(类型,极性)查表取用,不消费权重。权重分布按四档概率结构组织(档成员与保底规则见「四档概率结构与保底」节;现行权重为基准锚,数值调整归调参批)。clear_blast 对全体存活敌各吃一笔当场兑付的 flat 伤害。奖励配置表已随可选类删除下线——注入概率、按板保底等参数全部失义(旧「按板保底」指已删除的可选类道具注入保底,与四档结构的型级保底无关)。 结构冻结(改动走本文修订流程,不走调参):九型封闭枚举(伤害道具批 2026-09-18 修订五→七、格面资源八型批 2026-09-20 修订七→八、同日 GP+商店房批修订八→九)、危险格与安全格同池、极性矩阵、装板期预分配且无重摇、负向恒即时无库存、清图恒非空、除摇号外零随机(四档保底补签属装板期校验环节,消费摇号环节随机流,非重摇——补签后身份全程只读)。 diff --git a/design/gdd/systems/战斗循环/增益状态.md b/design/gdd/systems/战斗循环/增益状态.md index c348fe93..99be6bb9 100644 --- a/design/gdd/systems/战斗循环/增益状态.md +++ b/design/gdd/systems/战斗循环/增益状态.md @@ -168,11 +168,11 @@ | weaken 削弱 | 敌方攻击被削弱(同名重复标中只刷新剩余次数、层数恒 1) | 敌方 | 见 `status_effects.tres` weaken 行(取值域 [60,85],取负生效) | 时限读表 / 刷新(2026-09-18 续时定案) | 封印标中 | | enrage 暴走 | 敌方攻击提升 | 敌方 | 见 `status_effects.tres` enrage 行 | 时限/上限读表 / 叠加 | 标空封印反噬 / 踩雷(attack 型负向) | | off_guard 失衡 | 主角护甲等级降低(AC 轴——掷点判定阈值下调、更易被命中;2026-09-18 换装,原百分比承伤池已退) | 主角 | 见 `status_effects.tres` off_guard 行 | 时限/上限读表 / 叠加 | 标空封印反噬 / 踩雷(defense 型负向)/ 敌方妨害技(2026-09-19 新效应词汇批——蛛网束缚载体,duration 由技能行覆盖) | -| sapped 乏力 | 主角输出降低(weaken 型负向,hero_offense 池) | 主角 | 见 `status_effects.tres` sapped 行 | 时限/上限读表 / 叠加 | 危险格负向 / 标空封印(2026-09-15 格面资源批)/ 敌方妨害技(大地脉动——L3 Boss 石君王独占,2026-09-20 第三关内容批) | -| empower 蓄力 | 敌方输出倍率增益(enemy_output 池——蓄力技载体;幅度读表) | 敌方 | 见 `status_effects.tres` empower 行 | duration 读表 = 1 个有效增益拍 / 刷新 | 敌方技能施放(2026-09-16 敌人技能池批) | -| fortify 硬化 | 敌方防御提升(**敌方防御池 enemy_defense**——硬化技载体;负值入池 = 主角攻击折半,2026-09-18 符号纠正——旧正值实际翻倍) | 敌方 | 见 `status_effects.tres` fortify 行 | duration 读表 = 1 个有效增益拍 / 刷新 | 敌方技能施放(2026-09-16 敌人技能池批) | +| sapped 乏力 | 主角输出降低(weaken 型负向,主角输出池) | 主角 | 见 `status_effects.tres` sapped 行 | 时限/上限读表 / 叠加 | 危险格负向 / 标空封印(2026-09-15 格面资源批)/ 敌方妨害技(大地脉动——L3 Boss 石君王独占,2026-09-20 第三关内容批) | +| empower 蓄力 | 敌方输出倍率增益(敌方输出池——蓄力技载体;幅度读表) | 敌方 | 见 `status_effects.tres` empower 行 | duration 读表 = 1 个有效增益拍 / 刷新 | 敌方技能施放(2026-09-16 敌人技能池批) | +| fortify 硬化 | 敌方防御提升(**敌方防御池**——硬化技载体;负值入池 = 主角攻击折半,2026-09-18 符号纠正——旧正值实际翻倍) | 敌方 | 见 `status_effects.tres` fortify 行 | duration 读表 = 1 个有效增益拍 / 刷新 | 敌方技能施放(2026-09-16 敌人技能池批) | -empower 与 fortify 是敌方技能池增益技在状态池侧的数据落点(技能行 buff_ref 引用,施放时长由技能行覆盖——技能冷却与增益持续是两个计时器):两行 duration 表值(读表)的口径是"先兑付后衰减含施放当轮"——施放发生在第 N 结算战斗段,存活到第 N+1 结算战斗段才兑付"下一拍",即"持续 1 个有效结算"(proposal 语义的状态池落地)。敌方防御池(enemy_defense)是第四个乘区池:敌方作为防守方的百分比修正池,消费面 = [战斗结算](战斗结算.md)主角攻击的池乘区——四池对称(敌打主角 = hero_defense × enemy_output,主角打敌 = hero_offense × enemy_defense),状态池语义零延伸:仍是同构实例、side-wide 加算、不封顶不保底。 +empower 与 fortify 是敌方技能池增益技在状态池侧的数据落点(技能行 buff_ref 引用,施放时长由技能行覆盖——技能冷却与增益持续是两个计时器):两行 duration 表值(读表)的口径是"先兑付后衰减含施放当轮"——施放发生在第 N 结算战斗段,存活到第 N+1 结算战斗段才兑付"下一拍",即"持续 1 个有效结算"(proposal 语义的状态池落地)。敌方防御池是第四个乘区池:敌方作为防守方的百分比修正池,消费面 = [战斗结算](战斗结算.md)主角攻击的池乘区——四池对称(敌打主角 = 主角防御池 × 敌方输出池,主角打敌 = 主角输出池 × 敌方防御池),状态池语义零延伸:仍是同构实例、side-wide 加算、不封顶不保底。 削弱行是当量锚在状态池侧的数据落点:封印标中的收益折算成统一价值后,必须严格高于最低档主角增益——"封印标中必须比随便挖一格更值",否则没人愿意封印。这条锚的契约归[行动经济](../排雷循环/行动经济.md),对照验收归[战斗结算](战斗结算.md);暴走与失衡两行分别是 attack/defense 型负向(极性矩阵"标错/踩雷"分支兑付)在状态池侧的数据落点:行内容与载体裁决归它,本表只承载行值(失衡已换装 AC 轴不入池——2026-09-18 结构修复批)。**失衡另有第二来源**:敌方妨害技(2026-09-19 新效应词汇批——蛛化卓尔精灵"蛛网束缚",敌方技能施放来源、duration 由技能行 buff_duration 覆盖)——状态池零新语义,同构实例照常受理;乏力 sapped = 妨害第二词汇,载体已落地(L3 Boss 灰矮人石君王独占妨害技「大地脉动」,2026-09-20 第三关内容批)。 @@ -226,16 +226,16 @@ empower 与 fortify 是敌方技能池增益技在状态池侧的数据落点( | alert 幅度 | [0, 4] | ac 行 magnitude | 警觉(敌方护甲等级 +1/层 provisional);消费 = 战斗结算护甲等级掷点判定 | | weaken 幅度 | 百分比取值域 [60,85],取负生效 | percent 行 magnitude | 削弱;须过"封印标中锚"对照 | | enrage 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 暴走;attack 型负向行,进敌方输出修正池 | -| off_guard 幅度 | 护甲等级 [−20,20] 且非 0 | ac 行 magnitude | 失衡;标空封印反噬载体,掷点判定阈值逐层下调(2026-09-18 换装 AC 轴,不入池、退出 hero_defense 池) | +| off_guard 幅度 | 护甲等级 [−20,20] 且非 0 | ac 行 magnitude | 失衡;标空封印反噬载体,掷点判定阈值逐层下调(2026-09-18 换装 AC 轴,不入池、退出主角防御池) | | sapped 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 乏力;危险格负向 weaken 型,进主角输出修正池(2026-09-15 格面资源批补登记) | | empower 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 蓄力;敌方技能池增益技载体,进敌方输出修正池 | -| fortify 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 硬化;敌方技能池增益技载体,进**敌方防御池 enemy_defense**(负值 = 减伤方向——2026-09-18 符号纠正) | -| 初始剩余次数 | 整数 [1,99] | duration_settlements | 一次性语义行逐行读表;续时行 = weaken(2026-09-18 定案,duration 2)+ empower/fortify(1 个有效增益拍——先兑付后衰减含施放当轮)+ **attack_up / ac_up(2026-09-20 主角增益续时批,duration 表值 1 维持——续时语义在 dur=1 下表现为重复拿重置当轮倒数;跨轮延续随将来 duration 拉长自然显形,数值归状态层重设计批)**;拉长 = 恢复跨轮延续、规划变简单 | +| fortify 幅度 | 百分比 [−100,100] 且非 0 | percent 行 magnitude | 硬化;敌方技能池增益技载体,进**敌方防御池**(负值 = 减伤方向——2026-09-18 符号纠正) | +| 初始剩余次数 | 整数 [1,99] | duration_settlements | 一次性语义行逐行读表;续时行 = weaken(2026-09-18 定案,duration 2)+ empower/fortify(1 个有效增益拍——先兑付后衰减含施放当轮)+ **attack_up / ac_up(2026-09-20 主角增益续时批,duration 表值 1 维持——续时语义在 duration=1 下表现为重复拿重置当轮倒数;跨轮延续随将来 duration 拉长自然显形,数值归状态层重设计批)**;拉长 = 恢复跨轮延续、规划变简单 | | 叠层上限 | 整数 [1,16] | max_stack | 仅叠加策略消费;刷新行层数恒 1——weaken / attack_up / ac_up 表值上限在续时语义下不消费(2026-09-18 / 2026-09-20),empower/fortify ×1(冷却闸下不可能自叠加) | 非调参的冻结项:三类合并策略语义、两种量纲语义、来源类别枚举、"先兑付后衰减"时序、拒绝原子性、零随机——改动走本文修订流程,不走调参。 -联动纪律:增伤与削弱是当量锚的两端;盾牌加护与[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)的承伤预期联动(掷点折扣轴——AC 行值变更须复算生存链区间;2026-09-20 主角增益续时批后 ac_up 层数恒 1、局内可达 AC 上限 11,复算随调参批);削弱改续时后"单轮层数上限受[行动经济](../排雷循环/行动经济.md)行动点约束"的联动随之失效(2026-09-18 续时定案——同名重复标中只刷新剩余次数、层数恒 1;2026-09-20 起主角侧 attack_up / ac_up 同口径)。这些联动值禁止独立调参,修订须重跑锚对照并同步 registry。 +联动纪律:增伤与削弱是当量锚的两端;盾牌加护与[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)的承伤预期联动(掷点折扣轴——AC 行值变更须复算生存链区间;2026-09-20 主角增益续时批后 ac_up 层数恒 1、局内可达 AC 上限 11,复算随调参批);削弱改续时后"单轮层数上限受[行动经济](../排雷循环/行动经济.md)行动点约束"的联动随之失效(2026-09-18 续时定案——同名重复标中只刷新剩余次数、层数恒 1;2026-09-20 起主角侧 attack_up / ac_up 同口径)。这些联动值禁止独立调参,修订须重跑锚对照并同步登记册。 ## 验收标准 diff --git a/design/gdd/systems/战斗循环/战斗结算.md b/design/gdd/systems/战斗循环/战斗结算.md index 9868aec9..259ac283 100644 --- a/design/gdd/systems/战斗循环/战斗结算.md +++ b/design/gdd/systems/战斗循环/战斗结算.md @@ -64,7 +64,7 @@ | ④ 衰减段 | 移除到期的临时效果;每轮恰好一次,含末轮——清图奖励先兑付、效果后衰减 | | ⑤ 判定段 | 先判主角倒下(负),再判敌人清空(胜),都不满足则继续下一轮 | -结算本体是纯逻辑步骤流:零界面依赖、禁止动画等待,随机消费只走封闭随机流。触发只读行动经济的相位读数与轮末标记,这条消息有棋盘路径和停手路径两个发射源,到达先后不承载语义。这些性质共同保证结算可回放:同样的种子、同样的事件序列,跑出的步骤流逐位复现——录像回放与断言复测都建立在它上面。随机消费恰七处(2026-09-16 敌人技能池批由两处扩为三处;2026-09-17 分支节点图批换板入编排后扩为五处;2026-09-20 地形变异首批类型定稿批扩为六处——变异布置;同日 GP+商店房批扩为七处——战斗结束掉落掷定):战斗开始掷骰定敌方实际数量与攻击基线浮动,属于初始化随机、发生在结算步骤流之外;技能摇号属于回合内随机,但时点前置到每轮开轮、同样发生在结算步骤流之外(消费专用 `behavior_roll` 封闭流,每敌按生成序派生独立子流,单敌出招轨迹可独立复放、互不穿插);护甲等级掷点属于回合内随机、发生在步骤流之内(消费专用 `armor_roll` 封闭流,逐次掷逐次取号,可逐位回放);奖励格摇号(消费 `reward_roll` 封闭流,装板期格面资源批派发)、变异布置(消费 `variant_place` 封闭流,装板与资源预分配之后——棋盘设置顺序第 4 步)与换板棋盘生成(消费 `board_gen` 封闭流,清图轮换板时点)均属初始化随机、发生在结算步骤流之外;战斗结束掉落掷定属出口随机(消费 `gp_drop` 封闭流,按战斗节点身份查商店表掷定 GP 掉落,与关级加值、战斗内缓冲合成本战 gp_dropped),发生在结算步骤流之外。七处皆封闭随机流,同种子同输入逐位复现。 +结算本体是纯逻辑步骤流:零界面依赖、禁止动画等待,随机消费只走封闭随机流。触发只读行动经济的相位读数与轮末标记,这条消息有棋盘路径和停手路径两个发射源,到达先后不承载语义。这些性质共同保证结算可回放:同样的种子、同样的事件序列,跑出的步骤流逐位复现——录像回放与断言复测都建立在它上面。随机消费恰七处(2026-09-16 敌人技能池批由两处扩为三处;2026-09-17 分支节点图批换板入编排后扩为五处;2026-09-20 地形变异首批类型定稿批扩为六处——变异布置;同日 GP+商店房批扩为七处——战斗结束掉落掷定):战斗开始掷骰定敌方实际数量与攻击基线浮动,属于初始化随机、发生在结算步骤流之外;技能摇号属于回合内随机,但时点前置到每轮开轮、同样发生在结算步骤流之外(消费专用 `behavior_roll` 封闭流,每敌按生成序派生独立子流,单敌出招轨迹可独立复放、互不穿插);护甲等级掷点属于回合内随机、发生在步骤流之内(消费专用 `armor_roll` 封闭流,逐次掷逐次取号,可逐位回放);奖励格摇号(消费 `reward_roll` 封闭流,装板期格面资源批派发)、变异布置(消费 `variant_place` 封闭流,装板与资源预分配之后——棋盘设置顺序第 4 步)与换板棋盘生成(消费 `board_gen` 封闭流,清图轮换板时点)均属初始化随机、发生在结算步骤流之外;战斗结束掉落掷定属出口随机(消费 `gp_drop` 封闭流,按战斗节点身份查商店表掷定 GP 掉落,与关级加值、战斗内缓冲合成本战 GP 掉落),发生在结算步骤流之外。七处皆封闭随机流,同种子同输入逐位复现。 举证:五段为流程编排,无计算;段序常量存配置表,加载时校验与定稿顺序完全一致,不一致拒绝启动。 @@ -79,7 +79,7 @@ | 治疗行 | 治疗生效一行:封顶后的真实回复量 | | 奖励未生效行 | 满层拒收、满血治疗等合法例外一行 | | 封印未中行 | 封印落空的零值归因行,每颗雷只记一次;标错的负向兑付另记效果行 | -| 蓄力行 | 敌人本拍蓄力不动手(攒下一击)时记一行 **(2026-09-16 敌人技能池批改型为施放行 `cast`:敌人本拍施放增益技——0 伤害动作、具名技能、不掷不折〔原"不兑付伏击"读怪奖励语义随 2026-09-20 八型批伏击退役作废〕;蓄力语义改写为纯攻击增益技,见[敌人系统](敌人系统.md))** | +| 蓄力行 | 敌人本拍蓄力不动手(攒下一击)时记一行 **(2026-09-16 敌人技能池批改型为施放行:敌人本拍施放增益技——0 伤害动作、具名技能、不掷不折〔原"不兑付伏击"读怪奖励语义随 2026-09-20 八型批伏击退役作废〕;蓄力语义改写为纯攻击增益技,见[敌人系统](敌人系统.md))** | | 衰减行 | 到期临时效果移除一行 | | 判定行 | 胜 / 负 / 继续各一行;终局判定行同时是胜负画面的数据锚 | | 高光行 | 完美封印成立时一行,只记实际有效兑付 | @@ -123,7 +123,7 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × | 层数 × 行值 | 单条效果的叠层数与行值,读[增益状态](增益状态.md)的实例数据 | 行值归该系统 | | 完美乘数 | 完美封印给清图奖励的乘数,配置值 | 读 `settlement.tres` p_perfect(现行值读表) | -**gp / ap 当量口径注记(2026-10-05 判式换代批 T3——口径空白登记)**:上式 flat 类枚举(直伤、治疗、行动点)不含 gp——现行对账按 **gp 当量 = flat power 代理**计(GP 袋 3 / 破财 2,方案报告假设 A5);ap 当量 = flat 表值 1,机会成本口径(+1AP ≈ 多挖一格 ≈ E_dig + 进度 + 信息价值)更高,差异仅登记不进主算(假设 A6)。gp 的精确口径应经商店定价换算(1 GP 的边际属性当量),归状态层/商店批复核后换代。封印溢价兑付(条款3 条件二形态 a,`settlement.tres` flag_hit_premium=125 provisional)按同型正向 ×(1+δ) 兑付——当量换算随同型行口径同步放大,整数量级取整四舍五入(与伤害管线 round_direction=floor 分域,registry 顺带登记)。 +**gp / ap 当量口径注记(2026-10-05 判式换代批 T3——口径空白登记)**:上式 flat 类枚举(直伤、治疗、行动点)不含 gp——现行对账按 **gp 当量 = flat power 代理**计(GP 袋 3 / 破财 2,方案报告假设 A5);ap 当量 = flat 表值 1,机会成本口径(+1AP ≈ 多挖一格 ≈ E_dig + 进度 + 信息价值)更高,差异仅登记不进主算(假设 A6)。gp 的精确口径应经商店定价换算(1 GP 的边际属性当量),归状态层/商店批复核后换代。封印溢价兑付(条款3 条件二形态 a,`settlement.tres` flag_hit_premium=125 provisional)按同型正向 ×(1+δ) 兑付——当量换算随同型行口径同步放大,整数量级取整四舍五入(与伤害管线向下取整口径分域,登记册顺带登记)。 ### 授予段兑付:极性路由,四类动作各归各系统资源 @@ -138,7 +138,7 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × | ① 插危险格、留到轮末判定 | 标中照常(该危险格资源正向) | | ② 插危险格、再直接挖开 | 只受挖雷一层惩罚(该危险格资源负向照常兑付;挖雷惩罚因惊动触发);标中不发(封印已随挖掘消失、不入判定基线) | | ③ 插安全格、留到轮末判定 | 标空惩罚照常(该安全格资源负向) | -| ④ 插安全格、再直接挖开 | 零惩罚零奖励——正向兑付作废,记「奖励作废(封印格直接挖开)」归因行(reward_ineffective 行型);标空判定同②自然缺席 | +| ④ 插安全格、再直接挖开 | 零惩罚零奖励——正向兑付作废,记「奖励作废(封印格直接挖开)」归因行;标空判定同②自然缺席 | | 批 | 兑付 | |---|---| @@ -157,8 +157,8 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × | 即时治疗(flat) | heal 正向 | 主角按表值回复并封顶上限 | 满血时零兑付,记"奖励未生效"行 | | 直伤(flat) | heal 负向 | 主角在战斗段末扣表值生命(暂存单殿后统一落地),不经增益状态 | 主角倒下则地图账整体不兑,逐单留"未生效"行 | | 警觉加层 | blast 负向 | 敌方全体护甲等级 +1/层(读 `reward.tres` enemy_alert 行 → `status_effects.tres` alert 行),入状态池 | 直授无上限;战斗段由防守方护甲等级读数消费 | -| GP 缓冲(flat) | gp 正 / 负向 | GP 袋 / 破财按 power 记入战斗内 GP 缓冲(+power / −power);缓冲随战斗完成折进 battle_finished 的 gp_dropped 统一到账(GP 归[冒险结构](../冒险循环/冒险结构.md)) | 无拒收态——缓冲只在战斗边界与钱包结算,战斗域零钱包状态 | -| 行动点修正 | action 正/负向 | 下轮行动点 ±power(action_economy 排队,下一轮开始兑现后清零;下限 0) | 排队净值不跨轮保留;明细记效果行(effect_id=ap_delta) | +| GP 缓冲(flat) | gp 正 / 负向 | GP 袋 / 破财按 power 记入战斗内 GP 缓冲(+power / −power);缓冲随战斗完成折进战斗结束信号的 GP 掉落统一到账(GP 归[冒险结构](../冒险循环/冒险结构.md)) | 无拒收态——缓冲只在战斗边界与钱包结算,战斗域零钱包状态 | +| 行动点修正 | action 正/负向 | 下轮行动点 ±power(行动经济排队,下一轮开始兑现后清零;下限 0) | 排队净值不跨轮保留;明细记效果行(effect_id=ap_delta) | 警觉(blast 负向——2026-09-20 八型批伏击退役换装)为敌方 side-wide 状态:多个敌人共享同一状态值、互不消耗,只活一轮、轮末清零;战斗段由防守方护甲等级读数消费(我打敌 = 敌方 armor_class + Σ敌方侧 ac 型状态)。其余各型负向受池 clamp 与叠层上限承载。 @@ -216,7 +216,7 @@ percent 类(每结算、每层): E = |层数 × 行值| ÷ 100 × | 穿刺 | 被克 | 克制 | 中性 | 对魔法护甲克制;对轻甲被克;**重甲中性**(挡得住刀刃、不排斥穿刺——2026-09-18 用户拍板;现行无重甲敌种,纯结构位) | | 魔法 | 中性 | 被克 | 克制 | 绕得过重甲,被魔法护甲吸收 | -修正三档:克制 +1 / 中性 0 / 被克 −1(加法点数,九格分布读 `settlement.tres` 甲效矩阵——2026-09-18 加法核换装:量纲由百分比改点数、五档词表退役;三档而非五档的理由 = 攻击基线个位数刻度下 ±2 触伤害下限或翻倍超重,假粒度;攻击成长后可扩弱档)。攻击类型是分量的固有属性(每个分量恒属普通 / 穿刺 / 魔法 之一),护甲类型是防守单位的固有属性,两者都不随层数、来源与轮次漂移;基础分量的类型归属是主角表的可配置值(营地永久强化的换型落点),矩阵键集 3×3 满格、结构冻结,数值 provisional。矩阵消费面 = 主角侧(奖励直伤道具 / 主角攻击基础分量)——敌方攻击现行不查矩阵,主角 armor_type 轴仍休眠、生效待敌方技能攻击类型批。主角增益与乏力经 hero_offense 池修正攻击合计(2026-09-18 结构修复批:普通分量直乘旁路退役;2026-09-19 充能退役后合计 = 单分量,见池乘区公式行)。 +修正三档:克制 +1 / 中性 0 / 被克 −1(加法点数,九格分布读 `settlement.tres` 甲效矩阵——2026-09-18 加法核换装:量纲由百分比改点数、五档词表退役;三档而非五档的理由 = 攻击基线个位数刻度下 ±2 触伤害下限或翻倍超重,假粒度;攻击成长后可扩弱档)。攻击类型是分量的固有属性(每个分量恒属普通 / 穿刺 / 魔法 之一),护甲类型是防守单位的固有属性,两者都不随层数、来源与轮次漂移;基础分量的类型归属是主角表的可配置值(营地永久强化的换型落点),矩阵键集 3×3 满格、结构冻结,数值 provisional。矩阵消费面 = 主角侧(奖励直伤道具 / 主角攻击基础分量)——敌方攻击现行不查矩阵,主角 armor_type 轴仍休眠、生效待敌方技能攻击类型批。主角增益与乏力经主角输出池修正攻击合计(2026-09-18 结构修复批:普通分量直乘旁路退役;2026-09-19 充能退役后合计 = 单分量,见池乘区公式行)。 主角攻击 = 单一基础分量(2026-09-19 充能退役批):量 = 攻击力基线(表值),类型 = 主角表 `attack_type`(营地永久强化换型 = 改字段;未来冒险前参数面承接"按关配型"的策略位)。原"普通 + 穿刺/魔法充能三分量"模型整体退役——挖掘期与战斗期之间不再有弹药供给线,克制应对从局内攒桶改为冒险前配型 + 棋盘火力(穿刺弹/魔法矢等直伤奖励道具,消费面不变)。 @@ -228,9 +228,9 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 ``` 敌方一次技能攻击 = max(damage_floor, floor( 掷点档位技能基础分量 ) × 主角防御乘数 × 敌方输出乘数 ) + 必中附加分量 rider(若有——2026-09-19 新效应词汇批:max(damage_floor, floor(攻击基线 × rider_mult)),rider 为后置加法不进乘区不掷不折);增益/妨害技 = 0 伤害施放行(不掷不折),妨害状态按状态行 target_side 落主角 -主角一次攻击 = max(damage_floor, floor( 攻击合计 × (100 + 主角输出乘数池合成值) ÷ 100 × (100 + 敌方防御乘数池合成值) ÷ 100 ) )——hero_offense(增伤/乏力载体)与 enemy_defense(硬化载体)两池串乘在攻击合计之后(2026-09-19 充能退役后合计 = 单分量) +主角一次攻击 = max(damage_floor, floor( 攻击合计 × (100 + 主角输出乘数池合成值) ÷ 100 × (100 + 敌方防御乘数池合成值) ÷ 100 ) )——主角输出池(增伤/乏力载体)与敌方防御池(硬化载体)两池串乘在攻击合计之后(2026-09-19 充能退役后合计 = 单分量) 粒度口径:增益池乘区作用在攻击合计层——合计为个位数时百分比档存在粒度取整(如合计 2 点 ×0.75 → 1,实际约 −33% 大于名义 −25%),为已知行为、接受现状;2026-09-18 数值语言拍板后百分比仅保留增益池 / AC 折扣档 / 暴击三处既有粗档,终值与量纲复核归状态层重设计批 -乘数 = 1 + 池合成值 ÷ 100;池内加算、每池独立封顶 ±100 百分点 → 乘数域 [0, 2];四池对称:敌打主角 = hero_defense × enemy_output,主角打敌 = hero_offense × enemy_defense(2026-09-18 结构修复批:hero_offense 乘区接线落地——attack_up 普通分量直乘旁路退役,旧"切片现状"注记销项) +乘数 = 1 + 池合成值 ÷ 100;池内加算、每池独立封顶 ±100 百分点 → 乘数域 [0, 2];四池对称:敌打主角 = 主角防御池 × 敌方输出池,主角打敌 = 主角输出池 × 敌方防御池(2026-09-18 结构修复批:主角输出池乘区接线落地——attack_up 普通分量直乘旁路退役,旧"切片现状"注记销项) 护甲等级掷点:掷单骰(骰面读表),掷点 ≥ 护甲等级 + 攻击加成 → 全额;低掷按缺口查减伤档位表(边界与档值读表,无零档) 暴击:天然最大面(读表)→ 该次基础攻击分量 ×暴击倍率(读表)且恒全额(双方同规;掷点层概念,与技能重击严格区分) 伤害下限:任何来源的伤害落地 ≥ damage_floor(读表,全局 max(damage_floor, ·)——折扣与池归零都不产生 v=0 伤害行;2026-09-20 扩全来源,取值域 [1, +∞)) @@ -262,7 +262,7 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 └─ 关卡结束(上层显式调用)→ 清空秘宝背包,给出可见反馈 ``` -停手与耗尽收轮的回合恒为同图继续;换图指令只允许出现在清图轮,其他轮发换图属于程序错误、立即上抛。秘宝背包以关卡为界:战斗结束不清背包,跨战斗延续;关卡结束时一次性清空,清空前先返回快照计数,作为"剩余秘宝随关卡结束清空"的可见反馈。战斗道具背包已随可选类删除(2026-09-15)下线。(2026-10-09 注:清空对象 = 关卡域库存 treasure_inventory——秘宝过渡形态的机械惰性承载,其投放渠道已随迭代 11 第①批全退役、现行恒空;现行秘宝=营地同调装配件、整局冒险生效不经此域,拆线归实装批——见[秘宝](../跨局循环/秘宝.md)沿革节。) +停手与耗尽收轮的回合恒为同图继续;换图指令只允许出现在清图轮,其他轮发换图属于程序错误、立即上抛。秘宝背包以关卡为界:战斗结束不清背包,跨战斗延续;关卡结束时一次性清空,清空前先返回快照计数,作为"剩余秘宝随关卡结束清空"的可见反馈。战斗道具背包已随可选类删除(2026-09-15)下线。(2026-10-09 注:清空对象 = 关卡域秘宝库存——秘宝过渡形态的机械惰性承载,其投放渠道已随迭代 11 第①批全退役、现行恒空;现行秘宝=营地同调装配件、整局冒险生效不经此域,拆线归实装批——见[秘宝](../跨局循环/秘宝.md)沿革节。) 挖掘期刷新是玩家在挖掘中途主动换图,经[行动经济](../排雷循环/行动经济.md)扣费:扣费成功后按"旧板退役、生成新板、装板、资源预分配恰一次、变异布置"编排,本轮不打断——没有结算段、没有轮次结束。储备不足被拒是玩家决策的合法结果,不是编排错误。刷新图不发清图奖励,完美封印计数随装板重置。 @@ -294,13 +294,13 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 | 呈现面 | 形态 | 载荷与语义 | |---|---|---| -| 呈现状态快照 `presentation_snapshot` | 只读函数,全量 | 轮次、战斗结果、相位、行动点与储备、刷新可用性、主角(生命/上限/攻击/存活)、敌人数组(顺位/显示名/生命/敌种/护甲类型/护甲等级/摇定动作〔pending_skill/type/name〕/敌方增益 effects/存活)、主角活跃效果投影——呈现层唯一的状态读取出口(敌人技能池批批 2 定稿:行为环当前拍/环进度字段随行为环退役拆除——2026-09-16,池与权重不公开) | -| 战斗进行中谓词 `is_battle_live` | 只读函数,布尔 | 战斗未出结果且主角在场——组合根高频相位判断的低成本面 | -| 奖励身份查询 `query_reward_identity` | 只读函数,单格 | 已开格奖励身份解析的代理,转[地图战斗资源](地图战斗资源.md)的身份查询(就绪相位守卫归对方)——组合根注入棋盘徽章回调 | -| 结算快照信号 `settlement_snapshot` | 信号,每次结算末 | 对象销毁前组装的全量状态快照(终局含胜负结果)——测试记录与数值分析消费 | -| 战斗结束信号 `battle_finished` | 信号,战斗结束时 | 载荷 = 胜负结果、主角余量生命与本战 GP 掉落 `gp_dropped`(掉落掷定 + 关级加值 + 战斗内缓冲的合计;销毁前捕获)——呈现层在核心对象销毁后读状态的时序防护,钱包入账归[冒险结构](../冒险循环/冒险结构.md) | +| 呈现状态快照 | 只读函数,全量 | 轮次、战斗结果、相位、行动点与储备、刷新可用性、主角(生命/上限/攻击/存活)、敌人数组(顺位/显示名/生命/敌种/护甲类型/护甲等级/摇定动作〔技能编号/类型/名〕/敌方增益/存活)、主角活跃效果投影——呈现层唯一的状态读取出口(敌人技能池批批 2 定稿:行为环当前拍/环进度字段随行为环退役拆除——2026-09-16,池与权重不公开) | +| 战斗进行中谓词 | 只读函数,布尔 | 战斗未出结果且主角在场——组合根高频相位判断的低成本面 | +| 奖励身份查询 | 只读函数,单格 | 已开格奖励身份解析的代理,转[地图战斗资源](地图战斗资源.md)的身份查询(就绪相位守卫归对方)——组合根注入棋盘徽章回调 | +| 结算快照信号 | 信号,每次结算末 | 对象销毁前组装的全量状态快照(终局含胜负结果)——测试记录与数值分析消费 | +| 战斗结束信号 | 信号,战斗结束时 | 载荷 = 胜负结果、主角余量生命与本战 GP 掉落(掉落掷定 + 关级加值 + 战斗内缓冲的合计;销毁前捕获)——呈现层在核心对象销毁后读状态的时序防护,钱包入账归[冒险结构](../冒险循环/冒险结构.md) | -另设一个诊断观测面(诊断快照 `diagnostic_snapshot`)供组合根诊断转储与行为探针消费:它暴露编排内部状态,不属于呈现契约,不作其他用途。 +另设一个诊断观测面(诊断快照)供组合根诊断转储与行为探针消费:它暴露编排内部状态,不属于呈现契约,不作其他用途。 ## P0 最小闭环 @@ -360,7 +360,7 @@ EV 参考数不入正文(派生读数,需要时按判定式与现行表值 - 无来源即炸:每行明细都能指回一个来源事实(棋盘格、单位、清图或段级结论);找不到来源即断言失败,行型与来源类别两层豁免清单见明细流水一节,豁免行仍受其它契约约束。 - 行型封闭:流水行型只出现本文登记的基础 9 类与扩展行;行型词表改动必须走本文修订并同步呈现层行格式化,未登记行型禁止落行。 - 伤害单据管线(2026-09-24):全部伤害(主角先手、敌方伤害技、棋盘克制直伤、群伤、反噬、地形变异)经伤害控制器单据管线兑现,兑付配方封闭五种;目标在结账时刻照规则解析;死亡事件由单位自行宣布——怪死其未结单据作废(零行、不进冷却不进保底计数)、主角死兑付终止;段界结账为现行口径、开单即结为回切结构位,两模式各自同种子同输入逐位复现。 -- 条款3 对账(2026-10-05 判式换代批 T3——与行动经济 F1 条款3 重立同步):①聚合健康式 (1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≥ 0 与 β 比值带 [1.2, 2.5] 判读逐 u 检算(清图支配性审计为常设重跑项,读数快照归 registry clause3 重立条);②封印溢价兑付正确:封印标中正向兑付 = 同型正向 ×(1+δ)(δ 读 `settlement.tres` flag_hit_premium,100=无溢价直通零扰动),三类形态全覆盖(flat power / percent 幅度 / gp 缓冲)、标空与挖格兑付不乘溢价、危险格与安全格同池结构零触碰。 +- 条款3 对账(2026-10-05 判式换代批 T3——与行动经济 F1 条款3 重立同步):①聚合健康式 (1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≥ 0 与 β 比值带 [1.2, 2.5] 判读逐 u 检算(清图支配性审计为常设重跑项,读数快照登记归 clause3 重立条);②封印溢价兑付正确:封印标中正向兑付 = 同型正向 ×(1+δ)(δ 读 `settlement.tres` flag_hit_premium,100=无溢价直通零扰动),三类形态全覆盖(flat power / percent 幅度 / gp 缓冲)、标空与挖格兑付不乘溢价、危险格与安全格同池结构零触碰。 ## 待办 diff --git a/design/gdd/systems/战斗循环/战斗表现.md b/design/gdd/systems/战斗循环/战斗表现.md index 5dadfe8a..46eb7a41 100644 --- a/design/gdd/systems/战斗循环/战斗表现.md +++ b/design/gdd/systems/战斗循环/战斗表现.md @@ -74,7 +74,7 @@ 附着在同一次样张上的还有一项已登记的裁决(登记出处 = 敌人系统的呈现契约):敌人层绘制优先级的插入位置——白话就是敌人的姿态精灵画在绘制顺序的哪一层,会不会、以及如何与棋盘上的数字、封印印记、小人发生遮挡。它随美术测试一并裁决,不在本文提前定。 -两项相邻裁定已有结论,设计时直接继承:**敌人呈现形态已裁决(2026-09-20 用户看对照样张拍板)——全站桩式(无框立绘+底座),主角同样站桩、状态小图标挂血条正下方,卡片式整体退役**(待办清单「敌人卡形态」解决移除,状态记录 99;battle.md 起草条款已随裁决改写,对照样张存档 `production/mockups/`);art-bible 的图标键契约已冻结,动画设计不必等图标终稿。 +两项相邻裁定已有结论,设计时直接继承:**敌人呈现形态已裁决(2026-09-20 用户看对照样张拍板)——全站桩式(无框立绘+底座),主角同样站桩、状态小图标挂血条正下方,卡片式整体退役**(待办清单「敌人卡形态」解决移除,状态记录 99;battle.md 起草条款已随裁决改写,对照样张已在案存档);art-bible 的图标键契约已冻结,动画设计不必等图标终稿。 ### 一屏样张的验收标准 diff --git a/design/gdd/systems/战斗循环/敌人系统.md b/design/gdd/systems/战斗循环/敌人系统.md index 0200830d..37ec57af 100644 --- a/design/gdd/systems/战斗循环/敌人系统.md +++ b/design/gdd/systems/战斗循环/敌人系统.md @@ -71,7 +71,7 @@ | 规则 | 含义 | |---|---| | 敌方效果对全体生效 | 范围效果作用于所有存活敌人——混编放开后(2026-10-07 行集多行批)场上可多种敌种共存,结算语义按存活单位逐一生效、不依赖"场上全同种"前提;"只打某一个"的单体寻址接口已在[增益状态](增益状态.md)〈单体寻址扩展位〉节定稿,随首个单体效果的内容批开放(见 P1) | -| 行集构成纪律 | 敌人表按(关卡序号 × 深度带)存放;深度带=节点深度的区间——逐局生成使单点深度不再固定,配池按带不按点,难度坡随带递增。同一带键行集允许多行、允许不同敌种混编;Boss 行按终点配置,多终点各配一行(走哪条路决定打谁)。纪律三条,违规加载期返回错误并止动:①行集内 enemy_id 唯一(同一敌种在同行集仍只许一行);②同带键多行必须表文件内相邻,行序 = 声明序 = 生成序(行序即契约);③行集实例总数(各行骰后数量求和)≤ 4,单行数量域 [1,3] 不变(UNIT_COUNT_MAX 语义 = 单种数)。行数不设上限;同关随深度换敌种合法 | +| 行集构成纪律 | 敌人表按(关卡序号 × 深度带)存放;深度带=节点深度的区间——逐局生成使单点深度不再固定,配池按带不按点,难度坡随带递增。同一带键行集允许多行、允许不同敌种混编;Boss 行按终点配置,多终点各配一行(走哪条路决定打谁)。纪律三条,违规加载期返回错误并止动:①行集内 enemy_id 唯一(同一敌种在同行集仍只许一行);②同带键多行必须表文件内相邻,行序 = 声明序 = 生成序(行序即契约);③行集实例总数(各行骰后数量求和)≤ 4,单行数量域 [1,3] 不变(单行数量上限语义 = 单种数)。行数不设上限;同关随深度换敌种合法 | | 主角数据行 | 主角战斗数值单独放一张全局单行表:生命上限、基础攻击力、护甲等级三字段(见调参表) | | 基础攻击恒存在 | 基础攻击不许配 0(配置为 0 加载期拒绝)——零基线乘任何百分比增益恒为零,"胜利路径恒有"的保障从数据层杜绝死锁 | | 先手攻击不是敌方技能拍 | 每次结算战斗段主角先手攻击顺位最前的存活敌人,这是固定动作;奖励侧的道具与增益是基础攻击之外的规划面伤害,归[地图战斗资源](地图战斗资源.md) | @@ -91,7 +91,7 @@ | 钩爪恐魔 | 普通攻击 + 撕咬 + 蓄力 | 行值读表 | 行值读表 | L2/L3 群行位(蜘蛛同构池) | | 灰矮人石君王 | 普通攻击 + 重击 + 大地脉动 + **岩崩**(半血解锁) | 行值读表 | 行值读表 | L3 关底 Boss;大地脉动独占 | -护甲类型(轻甲 / 魔法护甲 / 重甲)与攻击类型的克制结算矩阵归[战斗结算](战斗结算.md),本系统只提供每个敌种的护甲类型数据——**护甲列自 2026-10-05 技能池执行批起改读表口径**(本表轮廓列不再记具体甲型:现行 L1 全轻甲 / L2 仅 Boss 魔法甲 / L3 heavy 登台的错峰投放以 `enemy.tres` 行值为准;历史「本表写魔甲/重甲」与表失同步的欠账顺带清偿)。护甲等级是另一条数值轴(防守方字段,基础攻击掷点的折扣判定读数):敌人表与主角表各增 `armor_class` 一列(域 [0, 999]),掷点与折扣的结算归[战斗结算](战斗结算.md),行值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)——三敌种首关与主角的护甲等级行值读配置表(第一关怪物 AC 相对较低,正式行值待怪物设定投值,登记[待办清单](../../../../待办清单.md)),两条轴的概念与字段禁止混用。举证:生成与护甲为数据面规则,无计算。 +护甲类型(轻甲 / 魔法护甲 / 重甲)与攻击类型的克制结算矩阵归[战斗结算](战斗结算.md),本系统只提供每个敌种的护甲类型数据——**护甲列自 2026-10-05 技能池执行批起改读表口径**(本表轮廓列不再记具体甲型:现行 L1 全轻甲 / L2 仅 Boss 魔法甲 / L3 重甲登台的错峰投放以 `enemy.tres` 行值为准;历史「本表写魔甲/重甲」与表失同步的欠账顺带清偿)。护甲等级是另一条数值轴(防守方字段,基础攻击掷点的折扣判定读数):敌人表与主角表各增 `armor_class` 一列(域 [0, 999]),掷点与折扣的结算归[战斗结算](战斗结算.md),行值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)——三敌种首关与主角的护甲等级行值读配置表(第一关怪物 AC 相对较低,正式行值待怪物设定投值,登记[待办清单](../../../../待办清单.md)),两条轴的概念与字段禁止混用。举证:生成与护甲为数据面规则,无计算。 ### 技能池:每敌种一张带权技能池,每拍开轮摇号出招 @@ -111,12 +111,12 @@ |---|---|---| | skill_id | 全部 | 主键,池条目引用键 | | display_name | 全部 | 玩家可见名(明细行与动画共用) | -| type | 全部 | 封闭枚举 {普通攻击, 伤害, 增益, 妨害}——**新效应词汇批 2026-09-19 由三扩四**(设计权威 proposal-status-vocabulary.md〔提案已吸收退役 git a6833b6a——现行事实源=敌人系统.md 词汇表/增益状态.md〕 v1.0;多段命中经用户拍板退役不入枚举);新类型走本文修订 | +| type | 全部 | 封闭枚举 {普通攻击, 伤害, 增益, 妨害}——**新效应词汇批 2026-09-19 由三扩四**(设计权威 proposal-status-vocabulary.md〔提案已吸收退役——现行事实源=敌人系统.md 词汇表/增益状态.md〕 v1.0;多段命中经用户拍板退役不入枚举);新类型走本文修订 | | damage_mult | 仅伤害 | 伤害倍率;域 [1.1, 16] provisional。普通攻击恒 1、不可配 | | rider_mult | 仅伤害、可省 | **必中附加分量(2026-09-19 新增)**:域 (0, 1],缺省无字段 = 无附加;分量值 = max(伤害下限, floor(攻击基线 × rider_mult))——随施放者攻击基线缩放,后置加法、必中全额、不进乘区、不出暴击(后置加法同族);价位锚 0.75 = AC 折扣档最轻档"不掉档的稳定伤害" | | cooldown_beats | 全部 | 施放后连续 N 拍不可摇中;普通攻击恒 0、不可配 | | buff_ref / buff_duration | 仅增益与妨害 | 效果引用(指向状态效果行)与持续回合数;**落点由状态行 target_side 路由**(增益 → 敌方侧 / 妨害 → 主角侧,施放类 side 守卫加载拒绝)——妨害技零新授予通道 | -| trigger(触发条件) | 全部,可省 | {fact, op, value, latch} 四键——fact 与 op 取「触发条件」节封闭词表,value 类型与域随 fact,出域加载期拒绝;缺省无字段=无条件技,旧行为零变化(2026-10-26 情境条件触发器批立列、2026-10-27 迭代 39 实装落地;原池条目字段 unlock_hp_pct 收编为本字段闩型首用例) | +| trigger(触发条件) | 全部,可省 | {fact, op, value, latch} 四键——fact 与 op 取「触发条件」节封闭词表,value 类型与域随 fact,出域加载期拒绝;缺省无字段=无条件技,旧行为零变化(2026-10-26 情境条件触发器批立列、2026-10-27 迭代 39 实装落地;原池条目的血量百分比字段收编为本字段闩型首用例) | | P1 字段位 | — | 命中段数、目标数——随对应后置批加列(触发条件位已由 trigger 立列收编——2026-10-26 立列、2026-10-27 实装;原"固定值分量"位已由 rider_mult 实装收编——2026-09-19;多段命中「命中段数」保留以防复活) | 普通攻击也是一行技能行,两条域校验锁死它的特殊性:倍率恒 1、冷却恒 0——想配倍率或冷却的就不是普攻,是伤害技。技能伤害存倍率、不存固定值:伤害 = 施放者攻击基线 × 技能倍率——同一行"重击",不同敌种按各自攻击基线缩放 = 基线 A × 技能倍率 M(行值读 enemy.tres / skills.tres),深层强化行自动缩放,这是共享技能表成立的前提;**固定的绝对值伤害不满足该前提**(不随基线缩放、跨关稀释——Brotato 教训),"固定值伤害"的合法形态是**必中附加分量 rider_mult**(×攻击基线的必中小倍率,2026-09-19 实装)。增益技带效果引用与持续回合,百分比天然按施放者同池生效,无缩放问题;妨害技同构,落点由状态行 target_side 路由到主角。 @@ -179,7 +179,7 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错 | 死亡作废 | 照常——摇定后兑现前死亡,本拍作废、不进冷却不进保底计数 | | 意图呈现 | 三档规格不变——情境技属特殊技,走类型级预告+结算明细具名,因果由技能名承载(如"趁隙偷袭");闩型保留解锁弹出规格(见"目标顺位与意图线索"节) | -半血解锁的收编:原池条目字段 unlock_hp_pct(2026-10-05 技能池执行批)收编为本字段闩型首用例——Boss 解锁技=trigger {fact: self_hp_pct, op: lte, value: 行值, latch: 真};解锁弹出规格(归因明细行+一次性技能名 toast)、单向闩语义、双面过滤行为全部不变(字段换代与三 Boss 行值迁移已随 2026-10-27 迭代 39 实装落地)。 +半血解锁的收编:原池条目的血量百分比字段(2026-10-05 技能池执行批)收编为本字段闩型首用例——Boss 解锁技=trigger {fact: self_hp_pct, op: lte, value: 行值, latch: 真};解锁弹出规格(归因明细行+一次性技能名 toast)、单向闩语义、双面过滤行为全部不变(字段换代与三 Boss 行值迁移已随 2026-10-27 迭代 39 实装落地)。 首批落地(已实装——2026-10-27 迭代 39):①三 Boss 解锁技迁移为闩型条件(行为零变化);②两个示范投放——地精池+低血防御增益「孤注守势」(self_hp_pct lte 35,纯增益)、L2/L3 群行位+停手偷袭伤害技「趁隙偷袭」(last_round_end eq 停手)。投放敌种、权重与阈值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md);"每池增益≤1"纪律不动,条件技照常计入预算。 @@ -203,7 +203,7 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错 即:普攻完全不可预测;特殊技有一次类型级预告,不可撤销,但给"继续挖还是停手"的决策依据。 -**半血解锁弹出规格(2026-10-05 技能池执行批,D8 用户裁;内容数据驱动扩展批 T1 补登记——解锁判定点=通用事件「血量阈值 `enemy_hp_threshold`」的发射点,对所有带闩型血量触发条件的敌人逐个发射、非 Boss 专属——Boss 语义留给订阅条件判定;条件载体 2026-10-26 触发条件批起改技能行 trigger 闩型〔原池条目字段 `unlock_hp_pct` 收编,行为零变化,见「触发条件」节〕)**:Boss 血量降至解锁阈值(trigger 行值,域 [1,99],缺省无字段=无门槛)时,下一个开轮摇号前出一次归因明细行「XX 解锁了 YY」(高光键 `skill_unlock`,行型复用 highlight 零新增);呈现层对该行弹**一次性技能名 toast**(轻量提示,非演出——零动画资产、不改演出规格),只报技能名不报数值,池与权重不公开纪律不变。解锁=单向闩(治疗抬血不解锁);锁定条目双面过滤(不进可摇集合与保底特殊技集合——保底禁止逼出未解锁技);解锁后冷却初值 0 即可摇。投放纪律=机制通用、闩型解锁用例仅 Boss 专属技投放(enemy 表无 boss 编码位,硬闸须跨表查节点类型——不做硬闸,本句即文档纪律登记)。旧环"下一拍全程亮出(意图徽标 + 环点)"的预告粒度随行为环退役。技能动画的攻/防系映射归[战斗表现](战斗表现.md),敌人侧摇定动画位归[HUD 框架](../表现与支撑/HUD框架.md)(呈现载体 = 站桩立绘,2026-09-20 全站桩拍板),本系统只锁上面这张三档规格。 +**半血解锁弹出规格(2026-10-05 技能池执行批,D8 用户裁;内容数据驱动扩展批 T1 补登记——解锁判定点=通用事件「血量阈值 `enemy_hp_threshold`」的发射点,对所有带闩型血量触发条件的敌人逐个发射、非 Boss 专属——Boss 语义留给订阅条件判定;条件载体 2026-10-26 触发条件批起改技能行 trigger 闩型〔原池条目的血量百分比字段收编,行为零变化,见「触发条件」节〕)**:Boss 血量降至解锁阈值(trigger 行值,域 [1,99],缺省无字段=无门槛)时,下一个开轮摇号前出一次归因明细行「XX 解锁了 YY」(高光键为技能解锁,行型复用高光行零新增);呈现层对该行弹**一次性技能名 toast**(轻量提示,非演出——零动画资产、不改演出规格),只报技能名不报数值,池与权重不公开纪律不变。解锁=单向闩(治疗抬血不解锁);锁定条目双面过滤(不进可摇集合与保底特殊技集合——保底禁止逼出未解锁技);解锁后冷却初值 0 即可摇。投放纪律=机制通用、闩型解锁用例仅 Boss 专属技投放(enemy 表无 boss 编码位,硬闸须跨表查节点类型——不做硬闸,本句即文档纪律登记)。旧环"下一拍全程亮出(意图徽标 + 环点)"的预告粒度随行为环退役。技能动画的攻/防系映射归[战斗表现](战斗表现.md),敌人侧摇定动画位归[HUD 框架](../表现与支撑/HUD框架.md)(呈现载体 = 站桩立绘,2026-09-20 全站桩拍板),本系统只锁上面这张三档规格。 | 规格 | 含义 | |---|---| @@ -251,7 +251,7 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错 | P1 | 情境条件触发器(低血触发防御、玩家停手时偷袭技等) | 已实装(2026-10-27 迭代 39——三 Boss 闩型迁移+两示范投放,见「触发条件」节与「首批落地」段) | | P1 | 个体化变体池(A 型好斗 / B 型守势、精英专属池) | 共识点 A 的 A2 案;登记[待办清单](../../../../待办清单.md) | | P1 | 全局特殊间隔旋钮 | 特殊技背靠背实测仍嫌时的备用闸;登记[待办清单](../../../../待办清单.md) | -| P1 | 新效应词汇批(妨害技 + 必中附加分量已实装 2026-09-19——设计权威 proposal-status-vocabulary.md〔提案已吸收退役 git a6833b6a——现行事实源=敌人系统.md 词汇表/增益状态.md〕 v1.0,实装面 = L2 Boss 卓尔;多段命中经用户拍板退役) | 妨害类型 + rider_mult 字段已落地;登记[待办清单](../../../../待办清单.md)(已解决移除,去向见状态记录) | +| P1 | 新效应词汇批(妨害技 + 必中附加分量已实装 2026-09-19——设计权威 proposal-status-vocabulary.md〔提案已吸收退役——现行事实源=敌人系统.md 词汇表/增益状态.md〕 v1.0,实装面 = L2 Boss 卓尔;多段命中经用户拍板退役) | 妨害类型 + rider_mult 字段已落地;登记[待办清单](../../../../待办清单.md)(已解决移除,去向见状态记录) | | P1 | 敌种名录扩容与投放节奏(含第二关池与投放) | 投放节奏是关卡命脉,归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | | P1 | 单体寻址("只打某一个敌人"的目标指定) | 归集语义与呈现已裁定(2026-10-26;语义归[增益状态](增益状态.md)〈单体寻址扩展位〉节);实现随首个单体效果的内容批落地 | | P2 | 敌方技能图鉴 / 学习呈现(玩家侧技能知识系统) | 池不公开口径下的进阶信息面;登记[待办清单](../../../../待办清单.md) | @@ -269,7 +269,7 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错 | unit_count_max | [unit_count, 3],可省略 | 数量区间上界;开战时在区间内掷定本战实际数量;缺省 = 定值 | | atk_min / atk_max | [0, 999] 可选配对 | 攻击基线区间:开战掷定一次、整战持久;缺省 = 定值行 | | armor_type | {轻甲, 魔法护甲, 重甲},缺省轻甲 | 克制结算归[战斗结算](战斗结算.md) | -| attack_type | {普通, 穿刺, 魔法},缺省普通 | 敌方攻击类型轴(**2026-10-13 迭代 24 N3 开列实装**:20 行全填 normal,ATTACK_TYPES 闭集枚举+缺省回退向后兼容,与 armor_type 同位同款);消费面 = 战斗结算敌方技兑付路径的护甲克制矩阵查表(敌方开单第 9 参传值+克制消费点,见战斗结算);行值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | +| attack_type | {普通, 穿刺, 魔法},缺省普通 | 敌方攻击类型轴(**2026-10-13 迭代 24 N3 开列实装**:20 行全填 normal,攻击类型闭集枚举+缺省回退向后兼容,与 armor_type 同位同款);消费面 = 战斗结算敌方技兑付路径的护甲克制矩阵查表(敌方开单第 9 参传值+克制消费点,见战斗结算);行值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | | armor_class(护甲等级) | int [0, 999],缺省 0 | 防守方护甲等级——基础攻击掷点的折扣判定读数,掷点结算归[战斗结算](战斗结算.md);与 armor_type(克制属性轴)两概念禁止混用;行值投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | | hp | [1, 999] | 单位生命基线(难度修饰前) | | atk | [0, 999] | 攻击基线 | @@ -298,7 +298,7 @@ Boss 专属身份 = 专属池承载:独占技能 + 权重轮廓(**技能错 各敌种行值、池权重与池 EV 读数(含闸长期速率实测)一律读配置表与调参日志,本文不登记具体数值;EV 重锚与权重投值归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)。 -结构冻结(非调参项,修订走本文流程):技能类型枚举封闭、每池恰一普攻、每池增益 ≤1、死亡即不动手(摇定后兑现前死亡作废不进账)、每结算每存活敌恰行动一次、行序、先作用后推进、固定顺位、**行集构成纪律(2026-10-07 行集多行批换代——原「每坐标恰一敌种」退役:行集内 enemy_id 唯一 + 同带键多行文件内相邻且行序 = 声明序 = 生成序 + 行集实例总数 ≤ 4)**、零随机(本系统自身语义零随机不变——摇号与掷点随机一律在[战斗结算](战斗结算.md)结算换算层按封闭随机流掷定,可回放契约 = 同种子同输入逐位复现,单敌出招轨迹可独立复放)。联动纪律:技能倍率 × 攻击(伤害拍支配)、权重 × 冷却 × 保底(池节奏三联动)禁止独立调参,联调须重跑方向性预检并同步 registry(登记 [待办清单](../../../../待办清单.md))。 +结构冻结(非调参项,修订走本文流程):技能类型枚举封闭、每池恰一普攻、每池增益 ≤1、死亡即不动手(摇定后兑现前死亡作废不进账)、每结算每存活敌恰行动一次、行序、先作用后推进、固定顺位、**行集构成纪律(2026-10-07 行集多行批换代——原「每坐标恰一敌种」退役:行集内 enemy_id 唯一 + 同带键多行文件内相邻且行序 = 声明序 = 生成序 + 行集实例总数 ≤ 4)**、零随机(本系统自身语义零随机不变——摇号与掷点随机一律在[战斗结算](战斗结算.md)结算换算层按封闭随机流掷定,可回放契约 = 同种子同输入逐位复现,单敌出招轨迹可独立复放)。联动纪律:技能倍率 × 攻击(伤害拍支配)、权重 × 冷却 × 保底(池节奏三联动)禁止独立调参,联调须重跑方向性预检并同步登记册(登记 [待办清单](../../../../待办清单.md))。 ## 验收标准 diff --git a/design/gdd/systems/排雷循环/地形变异.md b/design/gdd/systems/排雷循环/地形变异.md index 919558cb..f8530f1a 100644 --- a/design/gdd/systems/排雷循环/地形变异.md +++ b/design/gdd/systems/排雷循环/地形变异.md @@ -73,7 +73,7 @@ ### 全局作用域型(scope=global——Boss 图整图变异) -region 型变异是「格子级」的:布置段往候选格域写格子快照。global 型变异是「整图」的:整图一个类型生效,不落任何格子(棋盘持有整图 `board_variants` 字段,逐格 `variants` 恒空)。**每图一型的整图推广(2026-10-04 用户裁决)**:普通图带 region 片,Boss/精英图带 global 型——两类图各自至多一型。 +region 型变异是「格子级」的:布置段往候选格域写格子快照。global 型变异是「整图」的:整图一个类型生效,不落任何格子(棋盘持有整图变异记录,逐格变异记录恒空)。**每图一型的整图推广(2026-10-04 用户裁决)**:普通图带 region 片,Boss/精英图带 global 型——两类图各自至多一型。 **替换制**:Boss/精英图命中全局型时,布置段跳过 region 布置(该图既无 region 片、也无格子级变异标记)——L2 完美 Boss 承伤已越 ≤50% 带,region 叠全局的叠加制火上浇油,不采纳。**兜底回落**:Boss/精英图的全局候选池为空时(含第 1 关 Boss 解锁门控未达=免疫,第 1 关是过滤器不是墙的教学保护)回落 region 布置,即回批前行为(保守向后兼容,防配置缺行静默裸奔——provisional)。 @@ -130,7 +130,7 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照 | 优先级 | 内容 | 后置原因 | |---|---|---| | 迭代 12(调研前置) | 反制路径重定(原:首批四类型的反制道具兑现,counter_items 回填——已作废) | 2026-10-03 用户终裁:同调位反制件=层级错配失败设计,义务作废;变异应对是否以局内形态补入,待双层 BD 调研仲裁后重新立项 | -| ~~Alpha~~ **已落地** | 全局作用域变异(精英/Boss 图整图生效的变异形态) | **2026-10-04 全局作用域变异首发批落地**(迭代 14 ③号卡)——首批型=贫矿脉(案A 资源面·微贫向偏斜,替换制/恒定制/L1 Boss 免疫/三层预告);裁决全录见调研报告 §7(全局作用域设计空间调研(已退役,git 历史可查);原需求卡片已退役,git b3bbea5/01bfc15);带 A 杠杆注册全局难度批(Beta 阶段,未排期)顺带读数只测不判;精英图留词表前向位(首发零表行) | +| ~~Alpha~~ **已落地** | 全局作用域变异(精英/Boss 图整图生效的变异形态) | **2026-10-04 全局作用域变异首发批落地**(迭代 14 ③号卡)——首批型=贫矿脉(案A 资源面·微贫向偏斜,替换制/恒定制/L1 Boss 免疫/三层预告);裁决全录见调研报告 §7(全局作用域设计空间调研(已退役,git 历史可查);原需求卡片已退役);带 A 杠杆注册全局难度批(Beta 阶段,未排期)顺带读数只测不判;精英图留词表前向位(首发零表行) | | P2 | "地形成本修饰"价目钩子启用 | 由行动经济持有;启用须随变异类型扩展,与行动经济重议按格定价的接口 | | P2 | 变异解锁节奏复核 | "每关至少引入一个新元素"的推进节奏,随[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)定稿复核 | | P2 | 变异格视觉标识与预告呈现 | 首批为遭遇式(未开无预告);标识位随表现层升级批 | diff --git a/design/gdd/systems/排雷循环/排雷玩法.md b/design/gdd/systems/排雷循环/排雷玩法.md index 4aef8b2d..51db2402 100644 --- a/design/gdd/systems/排雷循环/排雷玩法.md +++ b/design/gdd/systems/排雷循环/排雷玩法.md @@ -214,7 +214,7 @@ | 优先级 | 内容 | 后置原因 | |---|---|---| -| P2 | 探测类道具的查询接口 | 接口已由 `query_reward_identity` 只读面桥接,本系统不预写 | +| P2 | 探测类道具的查询接口 | 接口已由身份解析只读面桥接,本系统不预写 | | P2 | 地形变异接入的格面规则 | 地形变异已定稿落地(2026-09-19 四类型两轴×两关、2026-09-20 枚举化 schema 扩批),新增类型走双方修订流程 | ## 调参表 diff --git a/design/gdd/systems/排雷循环/棋盘生成.md b/design/gdd/systems/排雷循环/棋盘生成.md index 70619de7..f02af99c 100644 --- a/design/gdd/systems/排雷循环/棋盘生成.md +++ b/design/gdd/systems/排雷循环/棋盘生成.md @@ -213,7 +213,7 @@ | shave_ring_radius | int [0, 2] | 现行 1(board_gen.tres 全行) | 先布后删剃雷半径:剃雷域=距出生中心切比雪夫距离 ≤1+r 的格(r=1 → 5×5=25 格;r=0 即只剃出生 3×3 本身=无环剃雷)。**2026-10-05 初始展开收窄批新参数**(调参项非结构冻结) | | r0_max_cap | int [出生格数 9, 板格数一半](护栏,违例加载期致命) | 现行按板形:10×10=45 / 12×12=43 / 13×13=51 / 14×14=59(board_gen.tres) | 自然 R₀(开局免费展开格数)上限闸=合法性门;超阈整板重掷、耗尽走三分出口。板面 30% 锚(30/43/51/59)经 S1 停机呈报用户裁上调:10×10→45(r=1 自然均值 39>30 结构性倒挂;其余行 30% 锚维持)。**2026-10-05 初始展开收窄批新参数** | -结构冻结(非调参项):键结构与每关深度 0 锚行、四阶段顺序(变异布置段 2026-09-20 已移出管线)、solver_rules、可推理率的合法信息源枚举、及格线域下限 0.85、成本闸常数(结构护栏,登记于 registry board_gen_table 条目,调整走文档修订)、先布后删语义。 +结构冻结(非调参项):键结构与每关深度 0 锚行、四阶段顺序(变异布置段 2026-09-20 已移出管线)、solver_rules、可推理率的合法信息源枚举、及格线域下限 0.85、成本闸常数(结构护栏,登记在案,调整走文档修订)、先布后删语义。 ## 验收标准 @@ -229,6 +229,6 @@ - 降级诚实:零合法板照常出图,必带非法产物标记与最高级告警;进程不死锁,玩家界面得到诚实告知。 - 加载期校验:布雷数下限、计数可行性、标签非空等违例组合加载期致命。 - 黄金图回归:手工核验小板集的可推理率输出与登记整数对逐位相等(整数对比对,禁浮点容差);换生成参数(推理定义、信息源、定义版本号)必须重制向量并入版本库。 -- R₀≤cap 闸(2026-10-05 初始展开收窄批):每张出图自然 R₀ ≤ 该行 r0_max_cap(合法板),或带非法产物标记(accept_worst 诚实降级);闸触发次数入指标集 r0_cap_rejected。 +- R₀≤cap 闸(2026-10-05 初始展开收窄批):每张出图自然 R₀ ≤ 该行 r0_max_cap(合法板),或带非法产物标记(接受最不坏·诚实降级);闸触发次数入指标集 r0_cap_rejected。 - 剃雷域参数化(同批):剃雷域=出生中心切比雪夫 ≤1+shave_ring_radius 的方域,出图 ring_removed ≤ 域内候选危险格数 (3+2r)²−9;同种子布雷序列与收窄前逐位一致(零 RNG 消费变化)。 - 表实一致:配置表字段与棋盘参数表字段定义一致。 diff --git a/design/gdd/systems/排雷循环/行动经济.md b/design/gdd/systems/排雷循环/行动经济.md index 432b048f..a9a8b4dd 100644 --- a/design/gdd/systems/排雷循环/行动经济.md +++ b/design/gdd/systems/排雷循环/行动经济.md @@ -79,7 +79,7 @@ ### 停手与储备行动点 -停手是玩家在挖掘期任意时刻的主动决定:立即结束本轮,剩余行动点按 1:1 原值存入储备池——基线没有乘数、没有加成。图没开完,下一轮接着在同一张图上挖。停手不是收入来源,而是纯粹的风险管理工具:它买到的是"退出权",不是战斗收益。停手意图经排雷玩法的批次提交入口进入账本(保证单一结算序),由账本仲裁后自行外发轮次结束消息。**转存率参数化(迭代 22 秘宝批反哺写入,2026-10-12)**:转存率实现为 `finish_round_stop(transfer_pct)` 参数面——缺省 100=1:1 与旧口径逐位一致;秘宝「储备罐」注入 125=1.25:1(整数除法向下取整——每 4 点剩余 AP 多转 1 点 RAP,零头顺延向下);无装配时行为与参数化前逐位相同。转存率归秘宝操作包络参数,本账本的仲裁与发射结构不变。 +停手是玩家在挖掘期任意时刻的主动决定:立即结束本轮,剩余行动点按 1:1 原值存入储备池——基线没有乘数、没有加成。图没开完,下一轮接着在同一张图上挖。停手不是收入来源,而是纯粹的风险管理工具:它买到的是"退出权",不是战斗收益。停手意图经排雷玩法的批次提交入口进入账本(保证单一结算序),由账本仲裁后自行外发轮次结束消息。**转存率参数化(迭代 22 秘宝批反哺写入,2026-10-12)**:转存率实现为停手收轮时的转存率参数——缺省 100=1:1 与旧口径逐位一致;秘宝「储备罐」注入 125=1.25:1(整数除法向下取整——每 4 点剩余 AP 多转 1 点 RAP,零头顺延向下);无装配时行为与参数化前逐位相同。转存率归秘宝操作包络参数,本账本的仲裁与发射结构不变。 储备池的生命周期以一场战斗为界:战斗内跨轮次、跨雷图一直累积;战斗结束立刻清零。清零必须在界面上可见,防止玩家觉得"攒的钱凭空没了"。MVP 阶段储备池没有上限。 @@ -93,7 +93,7 @@ ### 下轮行动点修正(格面资源八型批 2026-09-20) -格面资源八型批(2026-09-20)新增 action 型格面资源:正向行 ap_up = 下轮行动点 +1,负向行 ap_drain(迟滞)= 下轮行动点 −1。修正不在授予当轮生效:结算期经 `action_economy.queue_ap_delta` 排队(同轮多笔按净值累加),下一轮开始时(notify_round_start)一次性兑现——兑现值 = 基线 ap_per_round + 排队净值,下限 0,兑现后队列清零;排队净值不跨轮保留。明细在结算流水记效果行(effect_id=ap_delta)。 +格面资源八型批(2026-09-20)新增 action 型格面资源:正向行 ap_up = 下轮行动点 +1,负向行 ap_drain(迟滞)= 下轮行动点 −1。修正不在授予当轮生效:结算期经行动经济的行动点修正队列登记(同轮多笔按净值累加),下一轮开始时(开轮通知)一次性兑现——兑现值 = 基线 ap_per_round + 排队净值,下限 0,兑现后队列清零;排队净值不跨轮保留。明细在结算流水记效果行(effect_id=ap_delta)。 跨轮携带量口径随之改写:RAP 仍是唯一显式携带的系统资源(停手转存、玩家可见可花),行动点修正队列是第二携带量——一次性、自动清零、不可主动消费。 @@ -138,7 +138,7 @@ ``` 条款 3(2026-10-05 判式换代批重立——三层口径并行立,2026-10-04 用户裁 P2; - 设计权威 = 方案报告 §四/§九(已退役,git 1da9a41;现行判式口径=本文条款③)) + 设计权威 = 方案报告 §四/§九(已退役;现行判式口径=本文条款③)) 条款 2(封印标中锚,既有不动):封印标中的减益档位必须严格高于最低档安全格增益。 @@ -172,7 +172,7 @@ η 读数(行为面,非判式——2026-10-04 用户裁 P1 乙降格读数): η = flag_hit ÷ flag_placed(分母 = 全部封印数,2026-10-04 grill Q5 裁), - 标空率 = flag_miss ÷ flag_placed 次读数分列。字段随 runsum 五字段承载 + 标空率 = flag_miss ÷ flag_placed 次读数分列。字段随结算摘要五字段承载 (flag_placed/flag_hit/flag_miss/标中兑付合计/标空惩罚合计——结算流水聚合)。 条款 5(清图支配性,不动): @@ -238,7 +238,7 @@ | refresh_cap_per_round | int | 表值(provisional,结构位预留) | 每轮刷新上限,开轮重置计数 | | (跨表)跨冒险行动点加成 | int [0,10] / int [0,99],冒险表 | adventure_table bonus_ap_flat / bonus_cap_ap(provisional) | 三选一 AP 件兑现值与全冒险次数上限;加成轴语义见「跨冒险行动点加成轴」节 | -字段名注记:2026-09-18 措辞完成批已全链对齐正式名——表字段与本文行名统一为 `refresh_cap_per_round`,行动点入口统一为 `request_refresh`(registry naming_unification 兑现,切片临时名零残留)。 +字段名注记:2026-09-18 措辞完成批已全链对齐正式名——表字段与本文行名统一为 `refresh_cap_per_round`,刷新入口命名与表字段口径对齐(命名统一登记兑现,切片临时名零残留)。 跨字段校验:任一动作成本禁止超过每轮预算,违反即加载期致命(fail-fast)。各域上界(8 / 64)是 MVP 量级护栏而非推导界,随调参需要修订。 diff --git a/design/gdd/systems/表现与支撑/HUD框架.md b/design/gdd/systems/表现与支撑/HUD框架.md index d4ed4507..66474843 100644 --- a/design/gdd/systems/表现与支撑/HUD框架.md +++ b/design/gdd/systems/表现与支撑/HUD框架.md @@ -102,7 +102,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | 棋盘(封印印记、小人位置) | 意图批次调用返回后重查 | | 行动点 / 储备 | 每次写路径回执后重读 | | 状态效果 | 绑定结算编排完成时点 | -| 已开格奖励身份 | 已开格揭显时经身份解析只读回调查询(`query_identity`,组合根注入) | +| 已开格奖励身份 | 已开格揭显时经身份解析只读回调查询(组合根注入) | 就地更新指只改变化的字段、不整块重建界面——整块重建会把敌人立绘死亡灰化这类就地状态吞掉。 @@ -134,7 +134,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | 信息内容 | 只表达格面资源的类型(九类格面资源归五组色相呈现,色相/明度/画法规格归 [art-bible](../../../art/art-bible.md) §4.2);不表达极性(安全/雷)、不表达具体收益档位 | | 生命周期 | 资源身份装板期摇定(微光只是显示,不改任何游戏数据)→ 未开 ∧ 在 8 格内 → 亮;格子被挖开/连锁开/踩雷 → 灭;角色走远出圈 → 灭,走回 → 复亮;换图随旧图全重置 | | 关联与边界 | 信息本体(格面资源身份)归[地图战斗资源](../战斗循环/地图战斗资源.md);棋盘格态与动作合法性归[排雷玩法](../排雷循环/排雷玩法.md);与「接触带微光」同圈不同职责——接触带微光=可挖域的交互反馈光(「这里能挖」),类型微光=相邻格的类型先读(「这格是什么类型」) | -| 实装状态 | 呈现契约已定稿(五组色相经样张 v2 冻结 2026-09-28);**已实装(迭代 30 卡① 2026-10-17 入库,合并 `7ffd1dc0`)**——2026-09-30 核证的「呈现层仅接触带微光在跑,类型微光无独立实现」状态自此注销;在役实现(五组色相 = ui_kit TG_GLOW_*、格面微光子件 + 距离场 shader)与验收转正见本节末「验收标准」类型微光行,登记面归 [待办清单](../../../../待办清单.md)「未开格类型徽章呈现时机」条(已完成) | +| 实装状态 | 呈现契约已定稿(五组色相经样张 v2 冻结 2026-09-28);**已实装(迭代 30 卡① 2026-10-17 入库)**——2026-09-30 核证的「呈现层仅接触带微光在跑,类型微光无独立实现」状态自此注销;在役实现(五组色相 = 呈现套件色相常量、格面微光子件 + 距离场渲染)与验收转正见本节末「验收标准」类型微光行,登记面归 [待办清单](../../../../待办清单.md)「未开格类型徽章呈现时机」条(已完成) | 口径史注记(防复发):本概念曾只活在待办清单登记与 art-bible 复述里,「常显」「全部未开格」等无范围表述于 2026-09-30 酿成理解事故;用户裁决「英雄周围 8 格」为正确口径并落位本节。教训=概念必须落地权威文档,零散复述不是定义。 @@ -148,7 +148,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 |---|---| | 定义与作用范围 | 接触带微光 = 可挖域的交互反馈光(「这里能挖」)——英雄格与可挖域(8 向相邻未开格;概念本体与动作合法性归[排雷玩法](../排雷循环/排雷玩法.md))接触面上的呼吸微光;与「未开格类型微光」同圈不同职责(类型微光=「这格是什么类型」,本光=「这里能挖」) | | 画法 | 光画英雄格周界空间侧:正交邻墙=该侧整条边,斜向邻墙=共享角点+向两侧各延伸半条边;光只画英雄格一侧、不进墙格;色相=蓝族浅一档——画法细则归 [art-bible](../../../art/art-bible.md) §3.2 | -| 生命周期 | 挖掘期呈现且呼吸(挖掘期唯一在动元素——art-bible §2.1;相位门控 `set_dig_glow_enabled`,结算期停息);减动效开启=呼吸停格(静态保留指界功能);换图/装板随新可挖域重算 | +| 生命周期 | 挖掘期呈现且呼吸(挖掘期唯一在动元素——art-bible §2.1;相位门控,结算期停息);减动效开启=呼吸停格(静态保留指界功能);换图/装板随新可挖域重算 | | 关联与边界 | 逐格指认=悬停金框(pattern 4 悬停预承诺——微光是常驻指界、悬停是意图预承诺,两概念分工);不携带类型/极性信息(那是类型微光的职责);零信息写入(纯呈现层) | | 实装状态 | 已实装(呈现层现行在跑——2026-09-30 核证;程序化占位,画法终稿随样张批) | @@ -163,9 +163,9 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | 关联与边界 | 与「未开格类型微光」同边界——灯光区起步半径=微光环 8 格(同圈起步,实测后可调);格态数据归[排雷玩法](../排雷循环/排雷玩法.md);黑暗区域渲染规格(暗淡态明度、迷雾过渡)归 [art-bible](../../../art/art-bible.md) 修订随实施批;初始展开收窄不在本案(后置与 Alpha 差异化批窗口合并再议) | | 实装状态 | **已实装**(2026-10-03 迭代 11 第④批已入库;四裁决逐条对账与验收线转正见本节末「实施状态」注记;渲染规格 = [art-bible](../../../art/art-bible.md) §6.5) | -配套拍板(同日):魔法提灯=灯甲形态(光照圈外扩 +2 格,flat 整数档)随迷雾立项;**类型微光不随视野扩大**(类型先读仍只贴身 8 格,微光锚=可挖域);提灯载体归 aux_items 新行(登记原文——2026-10-07 用户令改道为独立卡,2026-10-08 裁案A=秘宝·同调位新行落位,见下方实施状态注记;**2026-10-09 用户裁退役**——新目录 15 件未收提灯,fog_lantern 数据行与卡④接线拆除归退役删行批〔实装批〕,功能由新目录普通档「阔视野带」承接,待办清单登记条在册),呈现面挂「资产升档重产批」(挂账不动)。 +配套拍板(同日):魔法提灯=灯甲形态(光照圈外扩 +2 格,flat 整数档)随迷雾立项;**类型微光不随视野扩大**(类型先读仍只贴身 8 格,微光锚=可挖域);提灯载体归 aux_items 新行(登记原文——2026-10-07 用户令改道为独立卡,2026-10-08 裁案A=秘宝·同调位新行落位,见下方实施状态注记;**2026-10-09 用户裁退役**——新目录 15 件未收提灯,提灯数据行与卡④接线拆除归退役删行批〔实装批〕,功能由新目录普通档「阔视野带」承接,待办清单登记条在册),呈现面挂「资产升档重产批」(挂账不动)。 -**实施状态(2026-10-03 迭代 11 第④批已入库)**:迷雾遮蔽+菱形灯光区跟随+暗淡记忆态上线,探针断言顺带扩(ui_input_probe case⑮)。四裁决逐条对账——①案甲视野迷雾立项(纯呈现层):迷雾开关分层验证可用(呈现态布尔,off 态=无迷雾基线),同板同动作序列与 MC 逐项比对逐位一致;②暗淡记忆态:区外已开格灰显+数字可读,明度按 [art-bible](../../../art/art-bible.md) §6.5 写入文档值(记忆板 #3A3A3A/记忆墨 #C4C4C4,provisional);③灯光半径=微光环 8 格同圈:LIGHT_RADIUS=8 参数化(曼哈顿菱形,常量);④提灯 +2、微光不扩:FOG_LANTERN_BONUS=+2(落码常量实名——本条旧记 LIGHT_RADIUS_LANTERN_BONUS 系文档侧拟名,随卡④入库对齐),类型微光仍贴身 8 邻格零改动。**〔2026-10-05 迭代14⑤接线注记〕公共接线面已就位**——`board_view.set_fog_lantern(enabled)`(true=半径 8+2、false=复原 0;写入即 refresh 重算雾态),半径算式消费 `_fog_lantern` 迷雾批已在位;ui_input_probe case⑮ 增接线断言(开=dist 9 格转可见+lantern=2/关=复原)。**〔2026-10-08 迭代 19 卡④入库注记〕载体到位+接线闭环=功能可达**——载体=秘宝·同调位新行 `fog_lantern`「魔法提灯」(treasure_items.tres 表尾追加,desc「灯光区半径+2」,slot_cost 1、营地秘宝匣同调装配获渠,行字段=用户「按推荐」全收);生产路径=runner set_attunement→enc.attunement→begin_battle 注入 orchestrator 装配集→公共只读出口 `attune_has`→组合根呈现桥 `main._sync_fog_lantern` 每战首轮装配链**显式重算含否**(🔴 复原语义=禁战斗结束隐式复原——卸装/未装配写 0,断点续玩/跨关天然正确);未装配=false 写 0=缺省零扰动基线逐位不变。顺带测试:case⑮ 载体级段(装配→lantern=2+dist R+1 转可见+卸装复原)+smoke 行字段/同调目录投影(九件→十件)/装配贯通断言+存档回归 Part 6+单测 fog_lantern_wiring(run_all 17→18 套)。原「提灯载体归 aux_items 新行随 Alpha 信息件重定批」登记去向就此注销(改道留痕=需求卡片-提灯载体道具批-2026-10-07 §一)。验收线(本篇「验收标准」视野迷雾行)逐条转正式验收:区内完整渲染/区外已开格灰显可读/区外未开格不可见/灯光区随移动跟随/两态结算逐位一致;实机目检人闸(迷雾观感/记忆态可读性/移动跟随流畅度)随出口闸。黑暗区域渲染规格承载 = art-bible §6.5(v3.5)。 +**实施状态(2026-10-03 迭代 11 第④批已入库)**:迷雾遮蔽+菱形灯光区跟随+暗淡记忆态上线,输入探针断言顺带扩(迷雾案)。四裁决逐条对账——①案甲视野迷雾立项(纯呈现层):迷雾开关分层验证可用(呈现态布尔,off 态=无迷雾基线),同板同动作序列与 MC 逐项比对逐位一致;②暗淡记忆态:区外已开格灰显+数字可读,明度按 [art-bible](../../../art/art-bible.md) §6.5 写入文档值(记忆板 #3A3A3A/记忆墨 #C4C4C4,provisional);③灯光半径=微光环 8 格同圈:半径 8 参数化(曼哈顿菱形,常量);④提灯 +2、微光不扩:提灯加成 +2,类型微光仍贴身 8 邻格零改动。**〔2026-10-05 迭代14⑤接线注记〕公共接线面已就位**——公共提灯开关接口(开=半径 8+2、关=复原 0;写入即重算雾态),迷雾批已在位消费该值;输入探针增接线断言(开=距离 9 格转可见+提灯 2/关=复原)。**〔2026-10-08 迭代 19 卡④入库注记〕载体到位+接线闭环=功能可达**——载体=秘宝·同调位新行「魔法提灯」(treasure_items.tres 表尾追加,desc「灯光区半径+2」,slot_cost 1、营地秘宝匣同调装配获渠,行字段=用户「按推荐」全收);生产路径=冒险装配→战斗装配集注入→公共只读出口查装配含否→组合根呈现桥每战首轮装配链**显式重算含否**(🔴 复原语义=禁战斗结束隐式复原——卸装/未装配写 0,断点续玩/跨关天然正确);未装配=零加成(缺省零扰动基线逐位不变)。顺带测试:载体级迷雾案(装配→提灯 2+距离 R+1 转可见+卸装复原)+冒烟行字段/同调目录投影(九件→十件)/装配贯通断言+存档回归 Part 6+单测提灯接线(全套 17→18 套)。原「提灯载体归 aux_items 新行随 Alpha 信息件重定批」登记去向就此注销(改道留痕=需求卡片-提灯载体道具批-2026-10-07 §一)。验收线(本篇「验收标准」视野迷雾行)逐条转正式验收:区内完整渲染/区外已开格灰显可读/区外未开格不可见/灯光区随移动跟随/两态结算逐位一致;实机目检人闸(迷雾观感/记忆态可读性/移动跟随流畅度)随出口闸。黑暗区域渲染规格承载 = art-bible §6.5(v3.5)。 ### 营地:可点击场景图(旧四柜台并排形态已随卡④改版取代) @@ -196,9 +196,9 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | 上游 | [排雷玩法](../排雷循环/排雷玩法.md) | 棋盘只读投影(格态、数字、封印印记、小人)与移动路径查询;玩家意图批次经组合根提交 | | 上游 | [行动经济](../排雷循环/行动经济.md) | 行动点 / 储备 / 相位只读值;刷新入口可用性预判加返回值兜底 | | 上游 | [战斗结算](../战斗循环/战斗结算.md) | 明细流水是结算明细带的统一数据源(现行 9 类行封闭协议);段序编排信号经组合根接线 | -| 上游 | [敌人系统](../战斗循环/敌人系统.md) | 英雄与敌人的只读投影(血量、顺位、摇定动作〔pending_skill/type/name〕、敌方增益 effects、存活——经战斗结算呈现快照;敌人技能池批批 2 定稿:当前拍/行动环进度字段拆除,池与权重不公开) | +| 上游 | [敌人系统](../战斗循环/敌人系统.md) | 英雄与敌人的只读投影(血量、顺位、摇定动作〔技能标识·类型·名称〕、敌方增益、存活——经战斗结算呈现快照;敌人技能池批批 2 定稿:当前拍/行动环进度字段拆除,池与权重不公开) | | 上游 | [增益状态](../战斗循环/增益状态.md) | 状态投影经战斗结算呈现面取得,零直读 | -| 上游 | [地图战斗资源](../战斗循环/地图战斗资源.md) | 已开格奖励身份投影(`query_identity` 只读回调,组合根注入)零直读 | +| 上游 | [地图战斗资源](../战斗循环/地图战斗资源.md) | 已开格奖励身份投影(只读回调,组合根注入)零直读 | | 上游 | [关卡节点地图](../冒险循环/关卡节点地图.md) | 节点链、当前节点、跨战斗生命携带的读数;胜利后推进 | | 下游 | [战斗表现](../战斗循环/战斗表现.md) | 交付三区布局、明细带呈现位、敌人呈现语义(站桩形态);它只叠加动画密度与演出 | | 下游 | [音频](音频.md) | 挂点事件源(明细行类型流、toast 触发);MVP 无音频 | @@ -218,7 +218,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 | [地图战斗资源](../战斗循环/地图战斗资源.md) | 已开格的奖励身份常读;未开格类型微光(英雄周围 8 格内的未开格显示资源类型——概念定义见本篇「未开格类型微光」节) | | [秘宝](../跨局循环/秘宝.md) | 装配件与充能常读;使用交互与目标拾取;整图叠加层信息呈现(在役旧框架——随实装批整体替换,秘宝.md v1.7 同款口径) | | [棋盘生成](../排雷循环/棋盘生成.md) | 零合法板的诚实告知(数据面经战斗结算上抛,本系统只管提示形态) | -| [地形变异](../排雷循环/地形变异.md) | 全局作用域型三层预告(2026-10-04 首发批——语义现行事实源=地形变异 §全局作用域型):①开战横幅一行(整图变异非空时显示;减动效=静态驻留,轮横幅先例同款双态)②HUD 常驻角标(C 区战斗全程可见防中局遗忘,空态整节隐藏=奇物段先例;摆位 provisional)③帮助手册一行(零交互教学,承载=玩法帮助文案块);数据面经呈现快照 board_variants 投影(核心→呈现唯一读取面),普通图三层恒空态零打扰 | +| [地形变异](../排雷循环/地形变异.md) | 全局作用域型三层预告(2026-10-04 首发批——语义现行事实源=地形变异 §全局作用域型):①开战横幅一行(整图变异非空时显示;减动效=静态驻留,轮横幅先例同款双态)②HUD 常驻角标(C 区战斗全程可见防中局遗忘,空态整节隐藏=奇物段先例;摆位 provisional)③帮助手册一行(零交互教学,承载=玩法帮助文案块);数据面经呈现快照的整图变异投影(核心→呈现唯一读取面),普通图三层恒空态零打扰 | ## P0 最小闭环 diff --git a/design/gdd/systems/表现与支撑/存档序列化.md b/design/gdd/systems/表现与支撑/存档序列化.md index 66dd87d7..2f171125 100644 --- a/design/gdd/systems/表现与支撑/存档序列化.md +++ b/design/gdd/systems/表现与支撑/存档序列化.md @@ -7,7 +7,7 @@ 本系统管的是"关掉游戏之后,玩家的东西还在不在"。序列化(本文含义:把游戏运行中的数据写成可存盘的档案,下次启动再原样读回来)与版本迁移(本文含义:游戏更新后,旧版本写下的存档要能被新版本继续读懂,必要时把旧结构改写成新结构)合起来,就是"存档契约"这门生意的全部。 -这件事是[核心循环](../../01-核心循环.md)里"存档在变厚"那条故事线的底层承载:钥石攒进存档、倒下也不丢——写在纸面上就是本系统的职责。本系统在切片里的落地面是存档管理器(SaveManager):Core 层,零界面依赖、零玩法依赖。本文描述的就是这份契约:存什么、何时读写、版本怎么走、坏了怎么办。 +这件事是[核心循环](../../01-核心循环.md)里"存档在变厚"那条故事线的底层承载:钥石攒进存档、倒下也不丢——写在纸面上就是本系统的职责。本系统在切片里的落地面是存档管理器:Core 层,零界面依赖、零玩法依赖。本文描述的就是这份契约:存什么、何时读写、版本怎么走、坏了怎么办。 ## 系统范围 @@ -48,7 +48,7 @@ ### 基础层身份:无上游依赖的承载方 -SaveManager 不依赖任何玩法系统就能工作:它是被动的承载方,任何系统要把数据活过单局,都向本系统登记持久化归属,而不是本系统去追认每个系统。这条身份可验证:SaveManager 不引入任何玩法脚本、不碰数值表(ConfigDB)与随机服务(RngService),可以独立实例化、独立读写验证(冒烟独立段承载)。 +存档系统不依赖任何玩法系统就能工作:它是被动的承载方,任何系统要把数据活过单局,都向本系统登记持久化归属,而不是本系统去追认每个系统。这条身份可验证:存档系统不引入任何玩法脚本、不碰数值表与随机服务,可以独立实例化、独立读写验证(冒烟独立段承载)。 ### 存什么:表与档分家,局内系统资源不入档 @@ -58,7 +58,7 @@ SaveManager 不依赖任何玩法系统就能工作:它是被动的承载方 **唯一豁免 = `breakpoint` 断点域**(2026-09-29 迭代 8 卡①顺带修订):断点是冒险进行中的瞬态快照,不是跨局携带——里面的生命/GP/道具库存只在「续玩上局」时还原进局内,冒险收束(通关/失败/放弃)即整域清除,永远不会渗进永久进度。反面清单的管辖对象因此收窄为 `meta` 永久进度域(冒烟域界扫描顺带收窄到 meta 域);断点域自身的字段口径归[冒险结构](../冒险循环/冒险结构.md)登记。断点顶层键(27 键+2026-10-27 迭代 39 获得日记键扩列至 28)的登记单源=冒险应用层的断点键表(键→回退策略;现行契约见架构文档「冒险域拆分」节);写读已换代为各件自交片段——主角账/停点件/关卡件各自写读自己的键(缺键回退策略随领域知识归各件),冒险应用层是唯一拼盘落盘口(收齐各件片段拼成顶层快照后写盘,写触发点不变)。**关卡完成停点的同调未用行留存**(2026-10-27 迭代 39 副卡边界裁定):`aux_items` 键在此停点形态含同调未用行(关卡末清空改选择性保留——「同调行始终留在 treasure_inventory」与「键值形态逐位不变」在关卡完成停点互斥,采行留存;玩家可见 C 区投影零变化,24 停点充能读数逐位一致)。 -**三存档位(迭代 33 卡①,2026-10-22 反哺写入)**:存档是 3 个独立的 JSON 文件(`user://save_slot_1/2/3.json`,槽文件名只经 `slot_path()` 单点派生,槽 1 禁复用旧单档名),字典键一律字符串。写盘目标=当前激活槽的文件;启动(boot)不读任何槽文件——启动态=无激活态,不读写;激活态由选档界面的「新档」(`create_slot`)或「进档」(`activate_slot`)建立(选档界面归迭代 33 卡③)。数据模型(现行 = v7;示例值全为零值默认态): +**三存档位(迭代 33 卡①,2026-10-22 反哺写入)**:存档是 3 个独立的 JSON 文件(三个独立存档文件,槽文件名只经存档系统单点派生,槽 1 禁复用旧单档名),字典键一律字符串。写盘目标=当前激活槽的文件;启动(boot)不读任何槽文件——启动态=无激活态,不读写;激活态由选档界面的「新档」或「进档」建立(选档界面归迭代 33 卡③)。数据模型(现行 = v7;示例值全为零值默认态): ```json { @@ -95,28 +95,28 @@ SaveManager 不依赖任何玩法系统就能工作:它是被动的承载方 | `attune_refresh_level` | 营地刷新升级(Y 源)等级(v4) | [秘宝](../跨局循环/秘宝.md)(三选一刷新双源) | | `tree_nodes` | 天赋树已购等级(node_id→int,v5) | [天赋树](../跨局循环/天赋树.md) | | `fork_sides` | Fork 组激活侧(fork_group→a/b,v5) | [天赋树](../跨局循环/天赋树.md) | -| `tree_struct` | 树结构版本标记(=TREE_STRUCT_VERSION,迭代 21 T5;缺失 = 换代前结构,加载废弃重置) | [天赋树](../跨局循环/天赋树.md) | +| `tree_struct` | 树结构版本标记(迭代 21 T5;缺失 = 换代前结构,加载废弃重置) | [天赋树](../跨局循环/天赋树.md) | | `recent_summaries` | 最近冒险摘要副本,最新在前,最多 10 条 | [冒险结构](../冒险循环/冒险结构.md) | | `first_adventure_done` | 首冒险完成标记(新档默认 false;旧档缺省按已完成兜底) | [元进度](../跨局循环/元进度.md) | | `adventure_total` | 冒险总局数终身计数(开局即计、含放弃与失败,v6) | [生涯](../跨局循环/生涯.md) | | `adventure_cleared` | 冒险成功局数终身计数(三关全通才计 1,v6;秘宝条件解锁计数键) | [生涯](../跨局循环/生涯.md) | -| `vision_used` | 真视类工具累计使用次数终身计数(迭代 22 新增——信标网络解锁行为条件;**v6 域后扩列补零、不升版本**;写入唯一经 `add_vision_used`,冒险收束聚合入账;断点随件键=`vision_counter_used`,续玩回填缺省 0) | [秘宝](../跨局循环/秘宝.md) | +| `vision_used` | 真视类工具累计使用次数终身计数(迭代 22 新增——信标网络解锁行为条件;**v6 域后扩列补零、不升版本**;写入唯一经真视计数入口,冒险收束聚合入账;断点随件键=`vision_counter_used`,续玩回填缺省 0) | [秘宝](../跨局循环/秘宝.md) | | ~~`forge_levels`~~ | ~~属性锻造三档等级~~ | **已退役**(迭代 21 T5:域与访问器随攻防所有权切分删除;继任 = 锻造路线等级域) | | `forge_routes`(**已落地 v7——锻造工坊实装批 T5,迭代 23**) | {levels: 六路线等级(sword/spear/staff/light/heavy/ward), unlocked: 直购解锁路线 id 清单, weapon: 当前武器路线 id, armor: 当前甲路线 id};无特效域;旧档缺键补齐 = 初始持有态 | [锻造工坊](../跨局循环/锻造工坊.md) | | `breakpoint` | 冒险断点快照(停点粒度续玩域;空字典 = 无断点合法态——「继续上局」隐藏) | [冒险结构](../冒险循环/冒险结构.md) | -v4/v5/v6 各域缺键由读取方按默认值补齐(空集合/0),旧档零迁移损失;收束自增域(通关次数/Boss 计数/终身计数/真视使用计数)的唯一入账点 = `apply_adventure_summary`(vision_used 走 `add_vision_used` 收束)。**v6 域后扩列不升版先例**:`vision_used`(迭代 22,2026-10-12——迭代 21 同款口径;断点随件 `vision_counter_used` 同批新增;旧断点随件键 `bonus_aux_carry` 已随替换子交互拆除退役,迭代 22 T5)。 +v4/v5/v6 各域缺键由读取方按默认值补齐(空集合/0),旧档零迁移损失;收束自增域(通关次数/Boss 计数/终身计数/真视使用计数)的唯一入账点 = 冒险摘要入账(vision_used 走真视计数入口收束)。**v6 域后扩列不升版先例**:`vision_used`(迭代 22,2026-10-12——迭代 21 同款口径;断点随件 `vision_counter_used` 同批新增;旧断点随件键 `bonus_aux_carry` 已随替换子交互拆除退役,迭代 22 T5)。 -消费面纪律:其他系统只经 SaveManager 的类型化访问器(读余额/加钥石/花钥石、读写树等级等)与域更新原语(`apply_adventure_summary`)操作存档,不碰内部数据结构。三条槽位纪律(迭代 33 卡①):一、无激活态下一切写盘路径拒绝并返回 false(boot 后未进档/未新档即结算或购买=不落盘,激活后照常);二、槽文件名单点派生——消费方禁各自拼槽文件名,测试与探针的隔离走注入口(`attach_slot_template`/`peek_summary_at`);三、UI 读别槽摘要只走窥视 API `peek_slot_summary(slot)`(不激活、不写内存、零盘面副作用),返回结构 `{"readable", "has_file", "keystone", "cleared", "total"}`——`readable`=槽文件可读(空槽=零值合法态可读;损坏/高版本/缺版本字段=不可读标记),`has_file`=槽主文件在盘与否(空槽/有档的操作集二分判定来处;非摘要第四项、零 UI 语义),三项摘要值(`keystone`/`cleared`/`total`)只在 `readable=true` 时有意义。 +消费面纪律:其他系统只经存档系统的类型化访问器(读余额/加钥石/花钥石、读写树等级等)与域更新原语(冒险摘要入账)操作存档,不碰内部数据结构。三条槽位纪律(迭代 33 卡①):一、无激活态下一切写盘路径拒绝并返回 false(boot 后未进档/未新档即结算或购买=不落盘,激活后照常);二、槽文件名单点派生——消费方禁各自拼槽文件名,测试与探针的隔离走注入口(槽模板注入/摘要窥视);三、UI 读别槽摘要只走窥视 API(不激活、不写内存、零盘面副作用),返回结构 = 可读标记 + 三项摘要值(钥石/通关数/总局数)——可读标记 = 槽文件可读(空槽=零值合法态可读;损坏/高版本/缺版本字段=不可读标记);槽主文件在盘与否不作摘要项、只供操作集二分判定(零 UI 语义),三项摘要值只在可读时有意义。 ### 读写时机 ``` 启动 ──▶ 不读盘(boot 无激活态,不读写任何槽;只做一次旧单档迁移,见「版本与迁移」节) -选档界面「新档」/「进档」──▶ create_slot / activate_slot(读盘=该槽文件,建立激活态;迭代 33 卡①/卡③) -正式冒险收束(adventure_finished)──▶ apply_adventure_summary 入账 ──▶ 原子写盘(落当前激活槽) +选档界面「新档」/「进档」──▶ 建立激活态(读盘=该槽文件;迭代 33 卡①/卡③) +正式冒险收束 ──▶ 冒险摘要入账 ──▶ 原子写盘(落当前激活槽) 营地钥石消费(元进度实现批接线)──▶ 每笔变更后即时写盘(落当前激活槽) -冒险停点(choices_presented 选路停点)──▶ 断点快照写盘(迭代 8 卡①) +冒险停点(选路停点)──▶ 断点快照写盘(迭代 8 卡①) 冒险三结局收束(冒险成功/失败/放弃)──▶ 清除断点 + 原子写盘(迭代 8 卡①/T3 退出口径) ``` @@ -124,9 +124,9 @@ v4/v5/v6 各域缺键由读取方按默认值补齐(空集合/0),旧档零 断点写盘纪律(迭代 8 卡①):停点快照在每个选路停点(战斗胜利/兑付确认/入口呈现后的选路态)整体覆写——战斗进行中不写(棋盘中局不入档,续玩恢复至最近停点、当场战斗从头打)。因为快照总在每个停点即时落盘,「关游戏走人」在任何停点都不丢续玩进度,无需窗口关闭钩子。 -写盘是原子操作:先写临时文件(`<路径>.tmp`),写完改名覆盖正式档——写一半断电不留烂档。 +写盘是原子操作:先写同目录临时文件,写完改名覆盖正式档——写一半断电不留烂档。 -单局测试入口不写档:调试两层与 headless 单关测试路径(LevelRunner.start_level,仅 QA 工具使用)不接写盘——测试模式不污染生涯数据;只有正式冒险(AdventureRunner)收束才入账。 +单局测试入口不写档:调试两层与 headless 单关测试路径(仅 QA 工具使用)不接写盘——测试模式不污染生涯数据;只有正式冒险收束才入账。 ### 版本与迁移 @@ -140,11 +140,11 @@ v4/v5/v6 各域缺键由读取方按默认值补齐(空集合/0),旧档零 迁移函数按旧版本号逐一注册:函数把数据从「旧版本」改写成「旧版本 + 1」。生产迁移链现行六件(v2 起自注册):v1→v2 = 断点域补空;v2→v3 = 断点附随件与摘要 keystone_drops 补键(读取方 .get 兜底);v3→v4 = 同调三域补键;v4→v5 = 树域两键补齐(原挂接的「三体系迁移」体已随迭代 21 T5 攻防所有权切分删除;forge_levels 旧域同批清退,加载时按默认模型键集白名单收窄);v5→v6 = 生涯两终身计数域补零;**v6→v7 = 锻造工坊域 forge_routes 缺键补齐(迭代 23 T5——无结构迁移体,版本号推进仅随表结构变化;解锁态派生不落档:初始持有〔表 initial_owned〕∨ 直购〔unlocked 清单〕∨ 练满前一档〔levels[prereq]≥cap〕)**。任一步失败按损坏兜底处理。 -旧单档一次性迁移(迭代 33 卡①,用户裁决 Q1 甲):本系统从单档制换代为 3 存档位制时,盘上残留的旧单档 `user://save.json` 在启动时被处理——文件**字节级原样搬运**进槽 1(`user://save_slot_1.json`,零解析零改造:损坏或高版本的旧档也原样迁入,之后由该槽进档时的损坏兜底/高版本拒读接管,不静默丢数据),源文件改名 `user://save.json.migrated.bak` 留痕不删;槽 1 文件已存在则不重迁(幂等,二次启动零操作);迁移失败(拷贝或改名失败)源文件保留、下次启动重试。留痕与结果记在启动日志(开发者向,非玩家面)。 +旧单档一次性迁移(迭代 33 卡①,用户裁决 Q1 甲):本系统从单档制换代为 3 存档位制时,盘上残留的旧单档文件在启动时被处理——文件**字节级原样搬运**进槽 1(零解析零改造:损坏或高版本的旧档也原样迁入,之后由该槽进档时的损坏兜底/高版本拒读接管,不静默丢数据),源文件改名留痕不删;槽 1 文件已存在则不重迁(幂等,二次启动零操作);迁移失败(拷贝或改名失败)源文件保留、下次启动重试。留痕与结果记在启动日志(开发者向,非玩家面)。 ### 损坏兜底 -档案读不开(文件损坏、JSON 解析失败、结构出域、缺版本字段)时:原文件改名为 `<路径>.corrupt.bak`(已有同名备份则覆盖)留下现场,游戏用默认新档继续运行,并留下警告日志。两条底线:不静默丢档(坏档永远可人工找回)、不崩溃(坏档不挡玩)。 +档案读不开(文件损坏、JSON 解析失败、结构出域、缺版本字段)时:原文件改名留一份坏档备份(已有同名备份则覆盖)留下现场,游戏用默认新档继续运行,并留下警告日志。两条底线:不静默丢档(坏档永远可人工找回)、不崩溃(坏档不挡玩)。 ## 依赖与输出 @@ -164,7 +164,7 @@ MVP 不要求本系统的闭环([不做清单](../../05-不做清单.md)把单 | 优先级 | 内容 | 后置原因 | |---|---|---| -| ~~P1~~ | ~~快照与复盘的持久化承接~~ | **已兑现**(2026-09-29 迭代 8 卡①:断点域承载 + rng「主种子+计数器」快照契约回填面 `restore_adventure`) | +| ~~P1~~ | ~~快照与复盘的持久化承接~~ | **已兑现**(2026-09-29 迭代 8 卡①:断点域承载 + rng「主种子+计数器」快照契约回填面) | | ~~P2~~ | ~~多存档槽位~~ | **已实现**(2026-10-22 迭代 33 卡①——3 存档位三文件制落地,口径见「三存档位」段;原「单档 MVP(2026-09-21 裁决)」后置条随兑现注销) | ## 调参表 @@ -179,7 +179,7 @@ MVP 不要求本系统的闭环([不做清单](../../05-不做清单.md)把单 - 改版不弃档:旧版本档经迁移链读回;低版本档缺新域按默认补齐,既有值保留(冒烟承载)。 - 断点域契约(迭代 8 卡①):七字段拍板面写读往返逐位一致;旧档无断点域迁移为合法空态;三结局清除(冒烟+单测承载)。 - 域界干净:meta 永久进度域不含局内系统资源键(行动点/储备行动点/道具库存/生命/GP)——断点域按豁免条款单列(冒烟承载,2026-09-29 卡①修订)。 -- 零玩法依赖:SaveManager 不引入任何玩法脚本、不碰数值表与随机服务,可独立实例化验证(冒烟独立段承载)。 +- 零玩法依赖:存档系统不引入任何玩法脚本、不碰数值表与随机服务,可独立实例化验证(冒烟独立段承载)。 ## 待办 diff --git a/design/gdd/systems/表现与支撑/数据配置.md b/design/gdd/systems/表现与支撑/数据配置.md index c7d70409..b2106b48 100644 --- a/design/gdd/systems/表现与支撑/数据配置.md +++ b/design/gdd/systems/表现与支撑/数据配置.md @@ -18,7 +18,7 @@ | 负责 | 说明 | |---|---| | 全部数值表的结构与数据 | 表结构类(声明每列的类型、取值域与默认值)与数据文件成对交付;结构先行,数值由各回填责任方回填 | -| 全局读取口与随机服务 | 两个进程级单例:类型化读取口(代码标识符 ConfigDB)与统一随机流服务(代码标识符 RngService) | +| 全局读取口与随机服务 | 两个进程级单例:类型化读取口与统一随机流服务 | | 加载、校验与热重载管线 | 启动加载、fail-fast 校验、调试构建热重载的状态管理 | | 进度坐标查行 | 进度键表(跟着冒险进度成长的表)按(关卡序号 × 节点深度)两维坐标解析取行 | | 表清单与对账 | 表路径固定、清单封闭;表实与 schema 声明逐字段对账 | @@ -52,24 +52,24 @@ 一句话总结这条规则:改数值 = 改表回填,不动代码;表不变,行为逐位相同。仅调试构建存在两个额外通道:从命令行注入的根目录加载测试夹具表;调试覆盖值可临时改读数、不回写表文件,正式构建结构性不存在覆盖源。 -现行表集合如下(表结构类名供代码标识与工具链检索): +现行表集合如下: | 表 | 载什么 | 回填责任方 | |---|---|---| -| 行动经济表 `ActionEconomyTable` | 每轮行动点、动作价目、停手与刷新门槛 | [行动经济](../排雷循环/行动经济.md) | -| 棋盘生成参数表 `BoardGenTable` | 板尺寸、雷密度、可推理率目标等(进度键表) | [棋盘生成](../排雷循环/棋盘生成.md) | -| 变异表 `VariationTable` | 变异类型清单(现行六行:region 六行两轴×三关〔2026-09-20 落地〕;首发 global 整图型贫矿脉 2026-10-16 用户令屏蔽删行,global 型机制代码保留) | [地形变异](../排雷循环/地形变异.md) | -| 敌人表 `EnemyTable` | 敌种基线数值、遭遇数量区间、护甲类型、技能池模板(进度键表) | [敌人系统](../战斗循环/敌人系统.md) | -| 技能表 `SkillTable` | 技能行定义(类型/倍率/冷却/增益引用/触发条件)与保底阈值 | [敌人系统](../战斗循环/敌人系统.md) | -| 主角表 `HeroTable` | 主角生命上限、基础攻击与护甲等级(armor_class)等单行战斗数值 | [敌人系统](../战斗循环/敌人系统.md) | -| 状态效果表 `StatusEffectTable` | 增益/减益效果定义行 | [增益状态](../战斗循环/增益状态.md) | -| 奖励表 `RewardTable` | 奖励条目、类别、权重与档位 | [地图战斗资源](../战斗循环/地图战斗资源.md) | -| 结算表 `SettlementTable` | 结算段序、当量参考敞口、封顶与克制矩阵(单行全局) | [战斗结算](../战斗循环/战斗结算.md) | -| 秘宝表 `TreasureItemTable`(`treasure_items.tres`) | 秘宝定义行 | [秘宝](../跨局循环/秘宝.md) | -| 难度表 `DifficultyTable` | 难度修饰乘数(占位空表) | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | -| 关卡表 `LevelTable` | 逐关节点图与层名 | [冒险结构](../冒险循环/冒险结构.md) | -| 冒险表 `AdventureTable` | 关卡大奖励与钥石入账(单行全局) | [冒险结构](../冒险循环/冒险结构.md) | -| 元进度表 `MetaTable` | 元进度字段(已建表 2026-09-21——现行五行族:属性锻造 / Boss 钥石 / 工坊阈值 / 换算率 / 同调刷新升级行族,顺带扩列) | [元进度](../跨局循环/元进度.md) | +| 行动经济表 | 每轮行动点、动作价目、停手与刷新门槛 | [行动经济](../排雷循环/行动经济.md) | +| 棋盘生成参数表 | 板尺寸、雷密度、可推理率目标等(进度键表) | [棋盘生成](../排雷循环/棋盘生成.md) | +| 变异表 | 变异类型清单(现行六行:region 六行两轴×三关〔2026-09-20 落地〕;首发 global 整图型贫矿脉 2026-10-16 用户令屏蔽删行,global 型机制代码保留) | [地形变异](../排雷循环/地形变异.md) | +| 敌人表 | 敌种基线数值、遭遇数量区间、护甲类型、技能池模板(进度键表) | [敌人系统](../战斗循环/敌人系统.md) | +| 技能表 | 技能行定义(类型/倍率/冷却/增益引用/触发条件)与保底阈值 | [敌人系统](../战斗循环/敌人系统.md) | +| 主角表 | 主角生命上限、基础攻击与护甲等级(armor_class)等单行战斗数值 | [敌人系统](../战斗循环/敌人系统.md) | +| 状态效果表 | 增益/减益效果定义行 | [增益状态](../战斗循环/增益状态.md) | +| 奖励表 | 奖励条目、类别、权重与档位 | [地图战斗资源](../战斗循环/地图战斗资源.md) | +| 结算表 | 结算段序、当量参考敞口、封顶与克制矩阵(单行全局) | [战斗结算](../战斗循环/战斗结算.md) | +| 秘宝表(`treasure_items.tres`) | 秘宝定义行 | [秘宝](../跨局循环/秘宝.md) | +| 难度表 | 难度修饰乘数(占位空表) | [难度曲线与Boss](../冒险循环/难度曲线与Boss.md) | +| 关卡表 | 逐关节点图与层名 | [冒险结构](../冒险循环/冒险结构.md) | +| 冒险表 | 关卡大奖励与钥石入账(单行全局) | [冒险结构](../冒险循环/冒险结构.md) | +| 元进度表 | 元进度字段(已建表 2026-09-21——现行五行族:属性锻造 / Boss 钥石 / 工坊阈值 / 换算率 / 同调刷新升级行族,顺带扩列) | [元进度](../跨局循环/元进度.md) | 举证:本节为数据纪律约定,无计算。违规检测 = 静态扫描加人工复核,随各表回填定稿与里程碑检查执行。 @@ -88,7 +88,7 @@ 取数有两个入口。玩法代码用取号入口:每调用一次,全局计数器加一并派生新种子,同一事件内共享同一实例。测试与预览用纯函数入口:按指定全局序号计算种子、不推计数器——预览不污染正式序列。种子由登记的派生公式计算(单盐),纯函数、跨引擎版本恒定,并登记了可复算的黄金向量。 -全事件日志(并流批新增):冒险开始即开日志会话(user://logs/rng_log_<主种子>.jsonl),每次取数落一行——全局序号、用途标签、派生种子。号位在全序账本下不再单独回答"第 N 次某类事件"(路线依赖为已裁决代价),单点定位与复盘由日志承载。写盘失败只告警降级,不致命、不影响玩法随机。 +全事件日志(并流批新增):冒险开始即开日志会话(随机事件日志文件,每主种子一份),每次取数落一行——全局序号、用途标签、派生种子。号位在全序账本下不再单独回答"第 N 次某类事件"(路线依赖为已裁决代价),单点定位与复盘由日志承载。写盘失败只告警降级,不致命、不影响玩法随机。 生命周期:进程启动后流待命(未注入主种子就取数,致命中止,禁止默认种子兜底)→ 冒险开始注入主种子并开日志会话 → 冒险中按事件取号(全局计数器只增不重置)→ 冒险结束流保留供复盘。续玩与复盘的快照 = 主种子加全局取数计数器,由[存档序列化](存档序列化.md)消费;快照切出须发生在没有在用取号实例的时刻。要新增随机用途(含战斗内随机),走扩签通道:改代码加用途标签并通过评审——词表封闭是刻意的设卡。 @@ -203,7 +203,7 @@ - 热重载门:战斗中重载被拒绝且读数不变、不发通知;门未置位时新值可读且通知恰一次;校验失败保留旧表停留就绪态。 - 零字面量、零第二路径:静态扫描加人工复核确认玩法代码无数值字面量、无读取口之外的表加载、无全局随机函数调用。 - 零界面依赖:本系统代码不引用任何界面类,无窗口实跑通过(静态扫描与实跑两项合成判定)。 -- 表实一致:各表结构与已锁字段和 `data/schemas/` 对应声明逐字段一致。 +- 表实一致:各表结构与已锁字段和表结构声明逐字段一致。 ## 待办 diff --git a/design/gdd/systems/跨局循环/元进度.md b/design/gdd/systems/跨局循环/元进度.md index 548fd6d4..643b463a 100644 --- a/design/gdd/systems/跨局循环/元进度.md +++ b/design/gdd/systems/跨局循环/元进度.md @@ -62,18 +62,18 @@ | 功能界面 | 内容 | 解锁渠道 | |---|---|---| | 属性锻造 | 生命上限、基础攻击、护甲等级——三档可重复升级的属性强化 | 钥石直购 | -| 秘宝匣 | 秘宝解锁与同调装配——**件的目录与效果权威定义在[秘宝](秘宝.md)「目录(重设计 v1)」**(12 件三档〔2026-10-11 裁回能器删/换装券撤/第四只手删〕;旧目录全退役只作素材库) | 解锁=混合制(基础件钥石购买/特定件条件解锁——见秘宝.md「道具从哪来」;装配只在冒险开始前配置,冒险中零更换途径〔2026-10-11 终裁〕);**迭代 22 实装批落地(2026-10-12)**:购买钮(余额不足禁用态)+条件解锁进度呈现+分档装配呈现(名后缀·档位/未解锁禁装)+空目录合法态;界面数据投影=`treasure_shop_status`(解锁态/条件进度/价格单点);旧道具工坊渠道面(行族/词表/解锁函数)已顺带退役;钥石定价与阈值 provisional 归调参批 | +| 秘宝匣 | 秘宝解锁与同调装配——**件的目录与效果权威定义在[秘宝](秘宝.md)「目录(重设计 v1)」**(12 件三档〔2026-10-11 裁回能器删/换装券撤/第四只手删〕;旧目录全退役只作素材库) | 解锁=混合制(基础件钥石购买/特定件条件解锁——见秘宝.md「道具从哪来」;装配只在冒险开始前配置,冒险中零更换途径〔2026-10-11 终裁〕);**迭代 22 实装批落地(2026-10-12)**:购买钮(余额不足禁用态)+条件解锁进度呈现+分档装配呈现(名后缀·档位/未解锁禁装)+空目录合法态;界面数据投影=秘宝匣柜台状态(解锁态/条件进度/价格单点);旧道具工坊渠道面(行族/词表/解锁函数)已顺带退役;钥石定价与阈值 provisional 归调参批 | | 奖励格图鉴 | 特殊奖励格的解锁——更强效果的格面 | 结构位现定;格子内容排 Alpha,随[地图战斗资源](../战斗循环/地图战斗资源.md)差异化批落地 | 属性锻造的树形节点结构已随迭代 12 落地在役——**结构/节点/数值的现行事实源 = [天赋树](天赋树.md),本文不复制树侧内容、只作指路**;本界面三档直线强化与树淬炼 flat 在注入面叠加生效(注入口径见下文「跨局注入」节)。 -属性锻造的攻击、护甲两档已按[锻造工坊](锻造工坊.md) v0.6(成文时名「武器锻造」,2026-10-11 更名)设计定案转为武器与护甲的独立等级路线——**行族本体随迭代 21 T5 退役、路线为新建行族,已随迭代 23 实装入库(2026-10-12,新表 `forge.tres`)**。营地钥石入口族换代(2026-10-13 v1.18 迭代 23 反哺写入):buy_forge 随 forge_products 退役删除后,本柜台钥石消费写口 = **forge_buy_level(逐级锻造价)/ forge_buy_unlock(一次性解锁价)/ forge_select_weapon·armor(免费选中)**——写口唯一经 MetaProgression 锻造写口族(契约 9 写口单点,UI 只发意图);钥石定价历史考古参数 20 钥石/150% 公比见 `meta.tres:82-84` 退役批注,provisional 投值终值归 M4。 +属性锻造的攻击、护甲两档已按[锻造工坊](锻造工坊.md) v0.6(成文时名「武器锻造」,2026-10-11 更名)设计定案转为武器与护甲的独立等级路线——**行族本体随迭代 21 T5 退役、路线为新建行族,已随迭代 23 实装入库(2026-10-12,新表 `forge.tres`)**。营地钥石入口族换代(2026-10-13 v1.18 迭代 23 反哺写入):原逐级购买写口随 forge_products 退役删除后,本柜台钥石消费写口 = **逐级锻造价 / 一次性解锁价 / 免费选中武器·甲**——写口唯一经元进度锻造写口族(契约 9 写口单点,UI 只发意图);钥石定价历史考古参数 20 钥石/150% 公比见 `meta.tres` 退役批注,provisional 投值终值归 M4。 **营地统一(2026-10-11 天赋树设计会话裁案甲;2026-10-13 v1.20 迭代 21 反哺写入——「落地前维持现役」过渡态终结)**:树=营地本体,本属性锻造柜台已随迭代 21 退役、属性升级唯一入口=树脊柱淬炼节点(四柜台并排已实装,2026-10-12 入库)。**完整模型(四柜台并排/钥匙工作间/图鉴常开)唯一事实源 = [天赋树](天赋树.md)「营地=树:统一模型」节——本文只登记本柜台在系统内的去留,不复制树侧内容。** **投值语言锁定(2026-09-18 数值语言拍板)**:营地属性强化一律 **flat 整数加减**("每级 +1 基础攻击"式,而非"+50% 攻击"式)——避开百分比词条被数值成长稀释的先例陷阱、守住数字可读性锚;具体每级数值仍归元进度设计批投值。 -各界面定价纪律:**定价曲线一律几何递增**(每级费用按公比上浮——原则已拍板,起步价与公比数字归设计批配读数),与产出逻辑配套:深层关钥石产出多、后级强化贵,逼玩家往深处走。~~秘宝匣首版只挂通关次数渠道~~(历史排期裁决已消解:秘宝匣现役=钥石直购+条件解锁混合制,迭代 22 落地,2026-10-12)。**存档义务随柜台产生**:钥石余额、永久强化等级表、每关通关次数表、Boss 首杀标记位——四件已逐域登记在 registry `save_file` 条目(内容 owner = 元进度,承载 owner = [存档序列化](../表现与支撑/存档序列化.md))。 +各界面定价纪律:**定价曲线一律几何递增**(每级费用按公比上浮——原则已拍板,起步价与公比数字归设计批配读数),与产出逻辑配套:深层关钥石产出多、后级强化贵,逼玩家往深处走。~~秘宝匣首版只挂通关次数渠道~~(历史排期裁决已消解:秘宝匣现役=钥石直购+条件解锁混合制,迭代 22 落地,2026-10-12)。**存档义务随柜台产生**:钥石余额、永久强化等级表、每关通关次数表、Boss 首杀标记位——四件已逐域登记在存档登记条目(内容 owner = 元进度,承载 owner = [存档序列化](../表现与支撑/存档序列化.md))。 护甲等级进首版属性柜台是 2026-09-18 拍板(用户选 A),其代价条款见下方换算率节的强条目登记。 @@ -81,7 +81,7 @@ 解锁让玩家变强,难度验收区间随之需要平移——双方约定(难度曲线与Boss 定稿口径)永久强化的影响**不直接改难度判据**,而是按统一换算率折算成关卡完成率带的平移量后套用:完美档 gate 与 normal 目标带的判读口径不变,带随解锁等级平移。 -换算率表(registry 键 `meta_progression_conversion_table`,数值行读 `data/tables/meta.tres` conversion 行族)登记三个属性维度(2026-09-18 拍板;"行" = 表内一条记录,一个属性维度即一行条目,全仓与"行值"同义)。现行表值(2026-09-23 换算率标定批投值——OFAT 冒险注入档与白板同种子配对的逐关条件通关率差实测,冒险条件口径 + 当日数值包现行态;报告已按生命周期条款退役,判定端 ④ 段可复判): +换算率表(数值行读 `data/tables/meta.tres` conversion 行族)登记三个属性维度(2026-09-18 拍板;"行" = 表内一条记录,一个属性维度即一行条目,全仓与"行值"同义)。现行表值(2026-09-23 换算率标定批投值——OFAT 冒险注入档与白板同种子配对的逐关条件通关率差实测,冒险条件口径 + 当日数值包现行态;报告已按生命周期条款退役,判定端 ④ 段可复判): | 换算行 | 折算语义 | 每级带平移量(现行表值) | |---|---|---| @@ -95,11 +95,11 @@ ### 跨局注入:解锁怎么进下一局 -注入通道沿用两处预留位(2026-09-18 拍板确认):[冒险结构](../冒险循环/冒险结构.md)的**冒险开始参数面**(无解锁时为空参数)+ registry `hero_override_parameter_passing`(战斗初始化显式入参,-1 = 表值兜底)。 +注入通道沿用两处预留位(2026-09-18 拍板确认):[冒险结构](../冒险循环/冒险结构.md)的**冒险开始参数面**(无解锁时为空参数)+ 英雄覆盖参数传递通道(战斗初始化显式入参,-1 = 表值兜底)。 执行口径:开始一次新冒险时,本系统按存档内的永久强化状态算好一份 override,逐字段显式传给战斗初始化——配置因此不是完全静态的,随游戏进程动态改变(用户拍板原话口径)。字段清单随柜台扩展:道具池、遭遇权重、奖励格解锁是集合操作,参数面登记**追加 / 替换**两种语义。 -**开局属性四层叠加(2026-10-12 v1.16 补登记——事实源=[锻造工坊](锻造工坊.md)「注入衔接」节 v0.6 / [天赋树](天赋树.md);原「属性锻造三档是数值覆盖」随迭代 21 T5 行族退役换代为下述分层;2026-10-13 v1.18 迭代 23 反哺写入补终态句)**:开局属性 = 角色基础值 + 树生命/命中淬炼 flat + 锻造路线加值(当前选中武器的攻击加值 + 当前甲的 AC 加值——默认值由锻造工坊配置常驻持有、与柜台解锁状态解耦,当前选中读存档域)+ 局内加算区 flat。入战 AC 三层可加 = 甲型基础 AC + 甲路线等级加值 + 局内加算区累加——**第一层「甲型基础 AC」= 选中甲路线行 `base_ac`(`forge.tres`,轻 10/重 12/魔法护甲 9 provisional),已随迭代 23 实装在役(`effective_ac` 三层公式第一层,树 flat + 锻造路线加值同批在役)**。 +**开局属性四层叠加(2026-10-12 v1.16 补登记——事实源=[锻造工坊](锻造工坊.md)「注入衔接」节 v0.6 / [天赋树](天赋树.md);原「属性锻造三档是数值覆盖」随迭代 21 T5 行族退役换代为下述分层;2026-10-13 v1.18 迭代 23 反哺写入补终态句)**:开局属性 = 角色基础值 + 树生命/命中淬炼 flat + 锻造路线加值(当前选中武器的攻击加值 + 当前甲的 AC 加值——默认值由锻造工坊配置常驻持有、与柜台解锁状态解耦,当前选中读存档域)+ 局内加算区 flat。入战 AC 三层可加 = 甲型基础 AC + 甲路线等级加值 + 局内加算区累加——**第一层「甲型基础 AC」= 选中甲路线行 `base_ac`(`forge.tres`,轻 10/重 12/魔法护甲 9 provisional),已随迭代 23 实装在役(入战 AC 三层公式第一层,树 flat + 锻造路线加值同批在役)**。 ### 解锁界面:双入口框架 @@ -132,7 +132,7 @@ MVP 不要求本系统的闭环([不做清单](../../05-不做清单.md)整体 | P1 | 营地功能界面内容铺量与定价数字 | 界面结构已定稿;清单明细、几何定价的起步价与公比、Boss 两档产出数值,随设计批配读数投值 | | P1 | 秘宝匣钥石直购价 | **已投 provisional 占位**(普通档 10/优秀档 25 钥石,迭代 22 落地,2026-10-12);终值归调参批(原「首版只挂通关次数渠道」排期态随混合制落地消解) | | P1 | 奖励格图鉴的格子内容 | 排 Alpha,随[地图战斗资源](../战斗循环/地图战斗资源.md)差异化批 | -| P1 | 换算率表数值行标定 | **已完成**(2026-09-23 换算率标定批——首版三行投值 6/9/1,护甲行强条目重测顺带履行并修复护甲断链)(原系笔误孤例,registry 与 meta.tres 均为 6/9/1——2026-09-30 勘误) | +| P1 | 换算率表数值行标定 | **已完成**(2026-09-23 换算率标定批——首版三行投值 6/9/1,护甲行强条目重测顺带履行并修复护甲断链)(原系笔误孤例,换算率登记与 meta.tres 均为 6/9/1——2026-09-30 勘误) | | P2 | 营地界面与解锁呈现实现 | 归[HUD 框架](../表现与支撑/HUD框架.md)协作批,以表现层样张过审为前置 | ## 调参表 @@ -141,7 +141,7 @@ MVP 不要求本系统的闭环([不做清单](../../05-不做清单.md)整体 | 表 | 键结构归属 | 数值行 | |---|---|---| -| 换算率表(`meta_progression_conversion_table`) | 本文 owner,键结构见元进度表结构声明(MetaTable) | `data/tables/`,设计批投值(首版三行,护甲行强条目) | +| 换算率表 | 本文 owner,键结构见元进度表结构声明 | `data/tables/`,设计批投值(首版三行,护甲行强条目) | | 定价表(属性锻造 / 秘宝匣 / 奖励格图鉴费用曲线) | 随设计批建表 | `data/tables/`,几何递增参数 | | 钥石产出(Boss 首杀额 / 重复杀小额) | 入账挂点见[冒险结构](../冒险循环/冒险结构.md)调参表(boss_keystone 行);Boss 两档归本文设计批(每关入账值 keystone_per_level 已随迭代 10 奖励重构退役) | `data/tables/` | diff --git a/design/gdd/systems/跨局循环/天赋树.md b/design/gdd/systems/跨局循环/天赋树.md index c385a3b5..e30dc42b 100644 --- a/design/gdd/systems/跨局循环/天赋树.md +++ b/design/gdd/systems/跨局循环/天赋树.md @@ -3,7 +3,7 @@ > 一句话:营地本身——跨局成长的结构承载:钥石逐节点点亮一棵树,属性淬炼、工作间解锁、规则抉择与同调挂载全部组织在树上 > 状态:**已定稿(现行为 v0.11)**——12 节点结构在役(脊柱=生命/命中一线一节点,Fork 三节点双态);「等级阈值前置」为机制位(前置节点等级 ≥ n 才可购;键悬空 / 阈值 <1 / 类型错加载即拒;未达标节点锁标 + 悬停门槛文案),现役 12 行零配置=零行为影响;全部数值行 provisional,归数值批。 -> **📖 节点状态记录指引(读这份文档先看这里)**:本树全部 12 个节点=下方「核心规则 → 节点总表」,逐节点列名称/脉/类型/前置/效果方向;**全部数值行(价格 / 等级上限 / 每级效果取值 / 限次值)不在本文**,事实源 = 配置文件 `game/data/tables/meta_tree.tres`(provisional 归数值批)。要查"有哪些节点、怎么连"看本文总表,要查"多少钱、加多少"开配置文件。 +> **📖 节点状态记录指引(读这份文档先看这里)**:本树全部 12 个节点=下方「核心规则 → 节点总表」,逐节点列名称/脉/类型/前置/效果方向;**全部数值行(价格 / 等级上限 / 每级效果取值 / 限次值)不在本文**,事实源 = 配置文件 `data/tables/meta_tree.tres`(provisional 归数值批)。要查"有哪些节点、怎么连"看本文总表,要查"多少钱、加多少"开配置文件。 ## 设计目的 @@ -19,7 +19,7 @@ | 负责 | 说明 | |---|---| -| 节点结构与解锁规则 | 12 节点的一脊三脉构成、脊柱行门槛(节点第 N 级)、点亮前置(requires)+ **等级阈值前置(requires_level——R1 机制位 2026-10-13 顺带重立,现役零配置空转)**、Fork 一节点双态与免费切换、彩蛋觉醒——结构事实源 = `data/tables/meta_tree.tres` + schema MetaTreeTable(**已实装在役,迭代 21 T1**) | +| 节点结构与解锁规则 | 12 节点的一脊三脉构成、脊柱行门槛(节点第 N 级)、点亮前置(requires)+ **等级阈值前置(requires_level——R1 机制位 2026-10-13 顺带重立,现役零配置空转)**、Fork 一节点双态与免费切换、彩蛋觉醒——结构事实源 = `data/tables/meta_tree.tres`(**已实装在役,迭代 21 T1**) | | 树的购买与货币规则 | 全树钥石单币;free 节点零币;购买校验四件套(等级上限 / 行门槛 / 前置 / 未解锁) | | 营地统一模型 | 树=营地本体(呈现=四柜台并排):生命/命中淬炼唯一入口=树脊柱淬炼节点,攻/AC 唯一入口=锻造工坊路线(所有权切分,2026-10-11 裁);工作间钥匙模型(锻造工坊 / 秘宝匣);图鉴常开;旧属性锻造柜台退役(生命归脊柱、攻防归锻造工坊) | | 树域存档的内容语义 | tree_nodes(node_id→已购等级)与 fork_sides(fork_group→激活态)两域语义;旧档废弃规则(开发阶段无迁移——2026-10-11 用户裁) | @@ -58,20 +58,20 @@ ### 一脊三脉:节点构成 -天赋树(玩家可见名;代码面 `meta_tree`)换代后 12 节点,按脉(vein)分四族: +天赋树(玩家可见名)换代后 12 节点,按脉(vein)分四族: | 脉 | 节点数 | 内容 | 结构要点 | |---|---|---|---| -| 主干脊柱(spine) | 2 | 生命淬炼 / 命中淬炼——一线一节点(kind=stat),每节点内 4 个等级状态 | 行门槛:节点第 N 级可购需全树已购总等级 ≥ 4×(N−1)。2026-10-11 一线一节点换代(用户裁:一个内容一个节点、等级在节点内、不拆多节点)——原「一线 4 层×层内 3 购」收编为单节点 4 级(层=级),SPINE_ROW_GATE=4 公式平移到等级轴,row 字段随层行退役;达成节奏重算=注记在册、值归数值批 | +| 主干脊柱(spine) | 2 | 生命淬炼 / 命中淬炼——一线一节点(kind=stat),每节点内 4 个等级状态 | 行门槛:节点第 N 级可购需全树已购总等级 ≥ 4×(N−1)。2026-10-11 一线一节点换代(用户裁:一个内容一个节点、等级在节点内、不拆多节点)——原「一线 4 层×层内 3 购」收编为单节点 4 级(层=级),行门槛常量=4 的公式平移到等级轴,row 字段随层行退役;达成节奏重算=注记在册、值归数值批 | | 锻造脉(forge) | 2 | 锻造工坊(kind=unlock,free,工作间钥匙)+ 彩蛋节点地脉共鸣(kind=easter) | 锻造工坊前置 = **无**(free,直接可点亮——2026-10-11 攻防所有权切分裁,原「攻击淬炼累计 ≥2 且 护甲淬炼累计 ≥2」等级阈值前置随两线砍除作废);彩蛋挂本脉 | | 钥石脉(keystone) | 2 | 秘宝匣(kind=unlock,free,工作间钥匙)/ 刷新升级(kind=rule) | 前置链:秘宝匣 ← 脊柱生命第 1 级;刷新升级 ← 秘宝匣 | | 同调脉(attune) | 6 | 同调位 1/2/3 三节点(kind=socket)+ Fork 3 节点(kind=fork,一节点双态)= **3 同调位 + 3 双态开关节点** | **同调位 1 为根节点、无前置**,其后逐级前置(1→2→3);全部 Fork 前置 = 同调位 1;Fork=开局姿态/危险直觉/财富之道各一节点(2026-10-11 用户裁:一节点双态、解锁后 A/B 可切——非六节点) | -节点类型是封闭枚举六类:stat(生命/命中两线数值)/ rule(全局规则)/ unlock(内容解锁)/ socket(同调位)/ fork(一节点双态开关)/ easter(彩蛋觉醒)。字段、词表与跨字段约束由 schema 校验(MetaTreeTable.validate:脉 / 类型 / 币出域即拒、effects 键封闭、Fork 三组每组恰一节点、彩蛋 ≤3、禁 archetype 键——加载期校验)。**schema 连带已随迭代 21 T1 落地**:Fork 由 A/B 双行改单行双态(行持 a/b 双效果键 effects_a/b+name_a/b,效果按激活态取值;Fork 组词表 4→3 组)、规则键词表 2→6 键(见 Fork 节)、row 字段随一线一节点退役;「等级阈值前置」机制位 **2026-10-13 顺带重立**(requires_level 字段+加载校验,现役零配置——见头部状态行)。 +节点类型是封闭枚举六类:stat(生命/命中两线数值)/ rule(全局规则)/ unlock(内容解锁)/ socket(同调位)/ fork(一节点双态开关)/ easter(彩蛋觉醒)。字段、词表与跨字段约束由 schema 校验(加载期校验:脉 / 类型 / 币出域即拒、effects 键封闭、Fork 三组每组恰一节点、彩蛋 ≤3、禁 archetype 键)。**schema 连带已随迭代 21 T1 落地**:Fork 由 A/B 双行改单行双态(行持 a/b 双效果键 effects_a/b+name_a/b,效果按激活态取值;Fork 组词表 4→3 组)、规则键词表 2→6 键(见 Fork 节)、row 字段随一线一节点退役;「等级阈值前置」机制位 **2026-10-13 顺带重立**(requires_level 字段+加载校验,现役零配置——见头部状态行)。 ### 节点总表(12 节点) -换代后全名单(2026-10-11 Fork 一节点双态批换代:15→12)。数值行(价格/上限/效果取值)不在此表,读配置文件 `game/data/tables/meta_tree.tres`(**12 行结构已实装在役——迭代 21 T1,33 行旧结构已废弃重置不迁移**): +换代后全名单(2026-10-11 Fork 一节点双态批换代:15→12)。数值行(价格/上限/效果取值)不在此表,读配置文件 `data/tables/meta_tree.tres`(**12 行结构已实装在役——迭代 21 T1,33 行旧结构已废弃重置不迁移**): | 节点 | 脉 | 类型 | 前置 | 效果方向 | |---|---|---|---|---| @@ -94,9 +94,9 @@ 所有付费节点只收钥石(2026-10-07 用户裁甲落定;行内 currency 字段保留为呈现元数据)。free 节点零币:两枚工作间钥匙(锻造工坊 / 秘宝匣)与彩蛋(觉醒)不经购买消费。 -购买校验四件套,全部通过才受理:①当前等级未满上限;②行门槛——脊柱节点第 N 级需全树已购总等级 ≥ 4×(N−1)(总等级口径 = tree_nodes 全部节点等级之和,免费点亮与分叉激活均计入——2026-10-11 歧义扫描裁甲沿现役实态;常量 SPINE_ROW_GATE=4;2026-10-11 一线一节点换代后门槛主语=节点目标等级,原层行判定作废;达成节奏重算归数值批);③requires 前置满足——点亮前置(前置节点全部已点亮)+ **等级阈值前置(requires_level:指定前置节点等级 ≥ n——R1 机制位 2026-10-13 顺带重立,2026-10-12 曾按卡片默认裁撤案执行、用户推翻补机制位;现役 12 行零配置空转,配置归表行随需填)**;④Fork 节点未解锁(一节点双态——解锁后的态切换走零币切换口,不经购买)。执行购买时另查钥石余额:余额不足则购买失败,存档零副作用(等级、余额、激活态均不动)。 +购买校验四件套,全部通过才受理:①当前等级未满上限;②行门槛——脊柱节点第 N 级需全树已购总等级 ≥ 4×(N−1)(总等级口径 = tree_nodes 全部节点等级之和,免费点亮与分叉激活均计入——2026-10-11 歧义扫描裁甲沿现役实态;常量行门槛=4;2026-10-11 一线一节点换代后门槛主语=节点目标等级,原层行判定作废;达成节奏重算归数值批);③requires 前置满足——点亮前置(前置节点全部已点亮)+ **等级阈值前置(requires_level:指定前置节点等级 ≥ n——R1 机制位 2026-10-13 顺带重立,2026-10-12 曾按卡片默认裁撤案执行、用户推翻补机制位;现役 12 行零配置空转,配置归表行随需填)**;④Fork 节点未解锁(一节点双态——解锁后的态切换走零币切换口,不经购买)。执行购买时另查钥石余额:余额不足则购买失败,存档零副作用(等级、余额、激活态均不动)。 -写口唯一:营地界面只发购买意图信号(tree_buy_requested),扣币、升级、写盘全部经 MetaProgression.tree_buy;Fork 节点购买走 tree_buy_fork(购即解锁、默认 A 态),态切换走 tree_toggle_fork(零币、只改激活态)。 +写口唯一:营地界面只发购买意图信号,扣币、升级、写盘全部经元进度系统的树上购买写口;Fork 节点购买走树上分叉购买写口(购即解锁、默认 A 态),态切换走树上分叉切换写口(零币、只改激活态)。 ### Fork 三组:一节点双态与免费切换 @@ -108,11 +108,11 @@ Fork 组是封闭词表三组(2026-10-11 裁:克制专精整组砍除,类 |---|---|---|---| | fg_posture 开局姿态 | 先手压制 = 每关首轮 AP +1 | 稳健拓荒 = 每关首轮内受击减伤 | 两侧同收**每关首轮窗**(每关第一场战斗的第一轮,第二关自动刷新——时间范围一致性裁甲) | | fg_sense 危险直觉 | 锋 = 踩中危险格伤害减半·每关限次 | 守 = 危险格标记错误返还行动点·每关限次 | 唯一根植排雷半边的组;玩家文案沿用「危险格 / 安全格」正主词,不出现雷字、不另造别名(2026-10-11 歧义扫描裁甲,废「陷阱/危险标记」自造词)。**前提核实在册**:标记错误机制存在性随实装批 T0 实查,查无则守侧换安全网向等价效果经用户裁 | -| fg_economy 财富之道 | 聚 = 战斗掉落 GP 增益 | 散 = GP 消费折价 | 范围(2026-10-11 歧义扫描裁):聚 = **仅战斗掉落渠道**;散 = **全部 GP 消费面**。**折扣定义边界(2026-10-12 卡片 v1.7 ⑪②裁决写入文档——原「设计避让」句按裁决改写)**:散的折价只覆盖商品购买价(键 `gp_cost_mult`),不含三选一付费刷新与商店刷新(`shop_refresh_cost` 不折)——这是折扣的定义边界本身,非对外两处旋钮的临时避让 | +| fg_economy 财富之道 | 聚 = 战斗掉落 GP 增益 | 散 = GP 消费折价 | 范围(2026-10-11 歧义扫描裁):聚 = **仅战斗掉落渠道**;散 = **全部 GP 消费面**。**折扣定义边界(2026-10-12 卡片 v1.7 ⑪②裁决写入文档——原「设计避让」句按裁决改写)**:散的折价只覆盖商品购买价(消费折价系数),不含三选一付费刷新与商店刷新(`shop_refresh_cost` 不折)——这是折扣的定义边界本身,非对外两处旋钮的临时避让 | 「每关限次」的计数生命周期(2026-10-11 歧义扫描裁甲):限次计数随单次冒险持久、按关重置、新冒险清零、断点续玩保留。 -A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表 RULE_KEYS 六键——**已随迭代 21 T3 扩签落地**:posture 双键收每关首轮窗、sense 锋/守双键限次按关重置、economy 聚/散双键接线),效果按激活态取值,不接数值线。两侧的设计判据是「不同强、非强弱」:MC 配对锚验收两侧关卡完成率差 <~3pp(**迭代 21 V19 已验:perfect+max 档三组配对差全部 0.0pp 在带**)。 +A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表六键——**已随迭代 21 T3 扩签落地**:posture 双键收每关首轮窗、sense 锋/守双键限次按关重置、economy 聚/散双键接线),效果按激活态取值,不接数值线。两侧的设计判据是「不同强、非强弱」:MC 配对锚验收两侧关卡完成率差 <~3pp(**迭代 21 V19 已验:perfect+max 档三组配对差全部 0.0pp 在带**)。 层级纪律(红线):局外树只放全局规则件——effects 禁 archetype 键(schema 加载致命);规则改写型特性(流派件)只走局内随机渠道,永不入树。 @@ -124,36 +124,36 @@ A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表 R 存档 v5 起树域两键(meta 域下):tree_nodes = node_id→已购等级(Fork 节点购买态=1 级解锁标记);fork_sides = fork_group→激活态("a" / "b")。承载与读写归[存档序列化](../表现与支撑/存档序列化.md),本文登记内容语义。 -**旧档废弃(2026-10-11 用户裁:开发阶段无迁移)**——Alpha 未出、无存量玩家,结构换代 = 破坏性废弃:加载检测到换代前结构(已删节点 id 残留)即废弃树域重置(或整档废弃),**禁做数据迁移与折算**;三体系迁移函数 `migrate_tree` 与旧域 `forge_levels` 随实装批清退删除。 +**旧档废弃(2026-10-11 用户裁:开发阶段无迁移)**——Alpha 未出、无存量玩家,结构换代 = 破坏性废弃:加载检测到换代前结构(已删节点 id 残留)即废弃树域重置(或整档废弃),**禁做数据迁移与折算**;三体系迁移函数与旧域 `forge_levels` 随实装批清退删除。 ### 跨局注入:树效果怎么进下一局 树的效果经两条通道随冒险开始参数面下传(通道现行事实源 = [元进度](元进度.md)「跨局注入」节): -① 属性通道——开局属性 = **角色基础值 + 树生命/命中淬炼 flat(Σ 节点 effects × 等级)+ 锻造路线加值(当前武器攻击加值 + 当前甲 AC 加值,只按当前选中生效,正主 = [锻造工坊](锻造工坊.md))+ 局内加算区 flat**(2026-10-11 攻防所有权切分叠加公式换代:树脊柱只持生命/命中,攻/AC 唯一来源=锻造路线——每根数值轴全游戏单一来源;旧「柜台三档 flat」项随柜台退役移除,树淬炼成账号全局基础层、锻造路线成专精层,两层相加)。写入覆盖值通道(atk / max_hp / armor_class),开局显式传入战斗初始化。命中线已购等级已记但未入注入面——消费面(命中折扣档)归数值批(代码批注在册披露)。 +① 属性通道——开局属性 = **角色基础值 + 树生命/命中淬炼 flat(Σ 节点 effects × 等级)+ 锻造路线加值(当前武器攻击加值 + 当前甲 AC 加值,只按当前选中生效,正主 = [锻造工坊](锻造工坊.md))+ 局内加算区 flat**(2026-10-11 攻防所有权切分叠加公式换代:树脊柱只持生命/命中,攻/AC 唯一来源=锻造路线——每根数值轴全游戏单一来源;旧「柜台三档 flat」项随柜台退役移除,树淬炼成账号全局基础层、锻造路线成专精层,两层相加)。写入覆盖值通道(攻击 / 生命上限 / 护甲等级),开局显式传入战斗初始化。命中线已购等级已记但未入注入面——消费面(命中折扣档)归数值批(代码批注在册披露)。 -② 规则通道——tree_rule_keys = 各 Fork 组激活态的效果键集,经冒险开始参数面 tree_rules 下传;每场战斗 begin_battle 时由效果引擎 rebuild 合成订阅行生效。开新冒险与继续上局两入口同参同值。 +② 规则通道——各 Fork 组激活态的效果键集经冒险开始参数面下传;每场战斗开始时由效果引擎重建合成订阅行生效。开新冒险与继续上局两入口同参同值。 ### 已建未接面(接线落地态——2026-10-13 迭代 21 反哺写入换代) 三条原「已建表/已可购但消费面未接」的实态,**两条已随迭代 21 接线在役、一条维持纪律**: -- 同调位数量判定源——**已接(迭代 21 T4)**:`Attunement.slots` 判定源已切树点亮数(att_socket1..3),旧条件表(按 Boss 击杀次数自动涨)已随迭代 21 T5 删除(attunement_growth.tres 谓词表退役)。 -- 刷新升级节点——**已接(迭代 21 T4)**:树上购买(ks_refresh)同路由 `buy_attune_refresh`,价格/cap 单一事实源 = Y 行表值;双入口并存(树上节点与秘宝匣装配段升级钮写同一笔,Q1 裁)。 -- 命中线 flat 不入注入面——**维持(契约 6 纪律)**:override 无 hit 字段,命中未注入;消费面开启归数值批(M4)。 +- 同调位数量判定源——**已接(迭代 21 T4)**:同调位判定源已切树点亮数(同调位 1/2/3 三节点),旧条件表(按 Boss 击杀次数自动涨)已随迭代 21 T5 删除(attunement_growth.tres 谓词表退役)。 +- 刷新升级节点——**已接(迭代 21 T4)**:树上购买(刷新升级节点)同路由营地刷新升级写口,价格/cap 单一事实源 = Y 行表值;双入口并存(树上节点与秘宝匣装配段升级钮写同一笔,Q1 裁)。 +- 命中线 flat 不入注入面——**维持(契约 6 纪律)**:注入参数面无命中字段,命中未注入;消费面开启归数值批(M4)。 ## 依赖与输出 | 方向 | 系统 / 文档 | 接口要点 | |---|---|---| -| 上游 | [元进度](元进度.md) | 钥石——树是永久强化的承载结构与营地本体;消费经钥石余额(写口 SaveManager),注入通道现行事实源在对方;旧柜台退役面在对方登记 | +| 上游 | [元进度](元进度.md) | 钥石——树是永久强化的承载结构与营地本体;消费经钥石余额(写口存档系统),注入通道现行事实源在对方;旧柜台退役面在对方登记 | | 上游 | [数据配置](../表现与支撑/数据配置.md) | meta_tree.tres 承载与 schema 校验机制——本系统为结构 owner、数值回填归数值批 | | 上游 | [存档序列化](../表现与支撑/存档序列化.md) | tree_nodes / fork_sides 持久化与旧档废弃承载 | | 上游 | [秘宝](秘宝.md) | 同调位槽位判定源 = 树点亮数(**已切换在役,迭代 21 T4**;旧条件表已删);秘宝匣工作间内目录与装配现行事实源在彼 | | 上游 | [锻造工坊](锻造工坊.md) | 武器/护甲路线升级现行事实源在彼——树持钥匙节点(无前置),工作间柜台=钥匙展开面板;攻/AC 数值唯一来源在彼(所有权切分红线) | -| 下游 | [冒险结构](../冒险循环/冒险结构.md) | 冒险开始参数面——树生命/命中淬炼 flat(叠加进覆盖值通道)与 tree_rules 键集的注入通道 | -| 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 营地四柜台并排呈现——树淬炼柜台=树脊柱界面形态(案甲);信号 = tree_buy_requested / tree_fork_toggled | -| 下游 | 战斗侧效果引擎 | 规则键消费面——begin_battle rebuild 合成订阅(机制硬编码,无表行) | +| 下游 | [冒险结构](../冒险循环/冒险结构.md) | 冒险开始参数面——树生命/命中淬炼 flat(叠加进覆盖值通道)与规则键集的注入通道 | +| 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 营地四柜台并排呈现——树淬炼柜台=树脊柱界面形态(案甲);信号 = 树上购买意图 / 树上分叉切换意图 | +| 下游 | 战斗侧效果引擎 | 规则键消费面——每场战斗开始时重建合成订阅(机制硬编码,无表行) | ## P0 最小闭环 @@ -174,7 +174,7 @@ A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表 R | 表 / 常量 | 键结构归属 | 数值行 | |---|---|---| -| 节点表 `data/tables/meta_tree.tres`(换代后 12 行:价格 / 等级上限 / requires(点亮前置)/ **requires_level(等级阈值前置——R1 机制位,现役零配置)** / effects 取值(Fork 行持 a/b 双效果键)/ 限次值;row 字段随一线一节点退役) | schema MetaTreeTable,本文 owner | 全 provisional,归数值批投值 | +| 节点表 `data/tables/meta_tree.tres`(换代后 12 行:价格 / 等级上限 / requires(点亮前置)/ **requires_level(等级阈值前置——R1 机制位,现役零配置)** / effects 取值(Fork 行持 a/b 双效果键)/ 限次值;row 字段随一线一节点退役) | schema 声明,本文 owner | 全 provisional,归数值批投值 | | 脊柱行门槛 = 4 | 节点表结构声明持有,本文 owner | 规则即门槛(节点第 N 级需全树总等级 ≥ 4×(N−1)) | | Fork 组词表(三组)/ 规则键词表(换代后六键,扩表随实装批) | 三组 Fork 词表与六键规则词表由节点表结构声明持有(封闭词表) | 词表即规则;规则键效果值由效果引擎合成 | | 钥石产出、刷新升级行族 | 现行事实源 = [元进度](元进度.md)调参表 | `data/tables/meta.tres` | @@ -188,7 +188,7 @@ A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表 R - 单币可判:任一付费节点购买只扣钥石;余额不足购买失败,且存档零变化(等级、余额、激活态均不动)。 - 双态可判:Fork 节点购买解锁后默认 A 态;切换零币,切换后规则键集=新激活态效果键;同态重复切换零操作;未解锁 Fork 不可切换、不可重复购买。 - 彩蛋可判:生命/命中两节点均买满(4 级拉满)且同调位 1/2/3 全部解锁时彩蛋节点自动点亮且零消费;任一条件不满足则不亮。 -- 注入可判:开局覆盖值 = 角色基础值 + 树生命/命中淬炼 flat(命中暂不注入——消费面开启归数值批,契约 6 纪律维持、非缺陷)+ 锻造路线加值 + 局内加算区(各层语义清晰可加);tree_rules = 全部 Fork 组激活态效果键集;开新冒险与继续上局两入口参数同值;全新存档(树全零)开局与零树状态完全一致。 +- 注入可判:开局覆盖值 = 角色基础值 + 树生命/命中淬炼 flat(命中暂不注入——消费面开启归数值批,契约 6 纪律维持、非缺陷)+ 锻造路线加值 + 局内加算区(各层语义清晰可加);规则键集 = 全部 Fork 组激活态效果键集;开新冒险与继续上局两入口参数同值;全新存档(树全零)开局与零树状态完全一致。 - 旧档废弃可判:加载换代前结构存档 → 树域废弃重置 → 后续游玩正常且无残留脏节点(开发阶段纪律,禁迁移);全新存档(树全零)开局与零树状态完全一致。 ## 待办 diff --git a/design/gdd/systems/跨局循环/生涯.md b/design/gdd/systems/跨局循环/生涯.md index bc23e5cf..e4e39b6d 100644 --- a/design/gdd/systems/跨局循环/生涯.md +++ b/design/gdd/systems/跨局循环/生涯.md @@ -15,8 +15,8 @@ ├─ 设置 └─ 退出游戏 -调试浮窗(发布态恒隐:`_debug_entry` 写死行已随迭代 38 卡⑦ 删除,开始层与战斗屏/关卡地图屏均零调试入口与角标; - 开发期临时启用=本地改 `_debug_entry` 缺省、不提交) +调试浮窗(发布态恒隐:调试入口的写死行已随迭代 38 卡⑦ 删除,开始层与战斗屏/关卡地图屏均零调试入口与角标; + 开发期临时启用=本地改调试入口缺省、不提交) 营地(存档内,进档/新档落点) └─ 生涯(局外只读面;入口=营地笔记本,迭代 34 卡④承载) @@ -43,7 +43,7 @@ | 各关完成次数 | 存档域 `level_clear_counts`(按关卡序号计) | 现成 | | Boss 首杀与总击杀 | Boss 首杀标记(存档域 `boss_first_kill`)/ Boss 击杀总数(存档域 `boss_kill_count`) | 现成 | | 钥石余额 | 存档域 `keystone_balance`;累计收支流水不入存档 | 现成。加钥石与花钥石只动余额——如要做属新增流水域,期一实装批另呈报,本文只登记 | -| ~~三柜台解锁完成度概览~~ | (整行删——2026-10-12 用户裁:生涯页不统计天赋树与账号成长态,只统计终身计数;数据源 forge_level/workshop_status/tree_nodes 三投影随天赋树实装批退役,体验验证清单⑲两观测项同步摘除) | — | +| ~~三柜台解锁完成度概览~~ | (整行删——2026-10-12 用户裁:生涯页不统计天赋树与账号成长态,只统计终身计数;数据源属性锻造等级/工坊状态/树节点三投影随天赋树实装批退役,体验验证清单⑲两观测项同步摘除) | — | ### 历史冒险回看(期二) @@ -52,7 +52,7 @@ 2026-10-06 用户裁(P2 甲):每局一行摘要,行内给**结局 / 到达关卡 / 钥石收入 / 用时**四件事,上限存最近 N 局。对应三件实绩(本批代码级复核确认的缺口,非新建数据面): 1. **扩容**:cap 10 → N。N 候选 20 / 50 / 维持 10,实装期按存档体积读数三选一;读数方法与列表形态的参数化维度由设计稿给出、实装期执行。 -2. **补「用时」埋点**:全仓现在没有任何用时采集点(`game/core/` 内 grep elapsed / ticks / duration / Time 零命中;摘要字段集〔`adventure_runner` 收束受理组装面〕无此项)——属新增埋点,随期二。 +2. **补「用时」埋点**:全仓现在没有任何用时采集点(摘要字段集〔冒险收束受理组装面〕无此项)——属新增埋点,随期二。 3. **旧档迁移**:旧档既有 ≤10 条摘要原样保留迁移,向后兼容。 单局结算明细回看:遗留的单局结算明细界面本体仍在、未接入任何入口,由期二复活承接,改挂生涯(2026-10-06 用户裁 P5 甲)。 @@ -73,7 +73,7 @@ | 状态面板(迭代 17 卡③,并行批开发中) | **局内**只读查看这一局进行中的钥石与本局冒险进度 | 状态面板看当局当前值,生涯看跨局累计与历史;局内无生涯入口(P4 甲) | | 结算屏([settlement-summary UX spec](../../ux/settlement-summary.md)) | 冒险收束当下的入账明细——冒险收束时由结算屏呈现入账明细与钥石明细(复用终局面账行的呈现形态) | 收束当下的呈现保留不动;生涯承接的是收束之后的任意时刻回看 | | 帮助手册(Beta 批,未实装——教学内容归 Beta 帮助手册) | 讲「怎么玩」 | 生涯讲「我玩过什么」。图鉴条目文案与手册是否共用内容源,接口登记归 Beta 批一并裁 | -| 图例面板(legend_overlay) | 局内符号/徽标即时解码 | 不合并——图例是局内解码面,图鉴是跨局收集面 | +| 图例面板 | 局内符号/徽标即时解码 | 不合并——图例是局内解码面,图鉴是跨局收集面 | ## 四、分期实装建议 @@ -85,7 +85,7 @@ | 期二 | 历史冒险回看整段:N 扩容 + 用时埋点 + 旧档摘要迁移 + 逐局列表 + 单局明细(遗留明细界面复活承接)+ 营地条带处置(P6 裁案落地) | 期一。实装批开工前须向用户呈报两件:N 终值读数(20 / 50 / 维持 10 三选一)与「用时」埋点口径(计时起点、暂停是否计入——字段级细节本文不做) | 期一落地后独立批 | | 期三 | 图鉴承接(敌人优先,范围与顺序随 P3 甲);「见过」记账面 schema 义务随该批执行 | 期二或独立评估 | Beta 窗口候选(与教学引导同段评估——图鉴的「认得」轴与教学相关;待办清单教学引导节各条 2026-10-04 起已整体标 Beta 阶段) | -本地化文案权:生涯界面本体按钮、页签、空态文案归[设置与本地化](../表现与支撑/设置与本地化.md)线(全仓无多语言实装——`game/` 内 grep TranslationServer 零命中;文案权先例 = 教学文案定稿权登记于待办清单),实装批承接。 +本地化文案权:生涯界面本体按钮、页签、空态文案归[设置与本地化](../表现与支撑/设置与本地化.md)线(全仓无多语言实装;文案权先例 = 教学文案定稿权登记于待办清单),实装批承接。 ## 五、待裁点 diff --git a/design/gdd/systems/跨局循环/秘宝.md b/design/gdd/systems/跨局循环/秘宝.md index b8ced2ff..4c68004a 100644 --- a/design/gdd/systems/跨局循环/秘宝.md +++ b/design/gdd/systems/跨局循环/秘宝.md @@ -15,7 +15,7 @@ - **同调位分档**(2026-10-07 用户裁):同调位分三档=普通格/优秀格/稀有格;装配规则=**槽位可装 ≤ 槽位档位的件**(向下兼容,不惩罚早解锁);格品质随天赋树同调位节点递增(1=普通格/2=优秀格/3=稀有格,2026-10-10 用户裁;树侧接线=迭代 21 T4 槽位收编落地)。装配面呈现槽位档位(迭代 22 秘宝匣柜台落地)。 - **旧目录退役指针**:旧目录九件、魔法提灯、机制向三件处置已全数退役入素材库(表一 14 件)——现行目录见下方「目录(重设计 v1)」节;代码旧行已全数删除(迭代 20 先行删 2 行+迭代 22 T1 删 12 行,2026-10-12)。 -- **三选一刷新双源**:刷新能力=**存量+临时**两笔系统资源——存量=持久(开局注入基值 0;来源=秘宝匣刷新升级行购买〔meta.tres attune_refresh_upgrade 行族〕+刷新练习件加仓;跨呈现持续、用完即无)、临时量=每次三选一呈现重置为基线 0(来源=效果件的临时注入,未用不结转);**消耗顺序=先扣临时、不足再扣存量**(2026-10-10 用户复述定案;代码字段名 X/Y 与两笔的字母对表归实装批 T0,正文不依赖字母)。重抽复用现有洗牌逻辑(reward_pick),池规则全保留;自动游玩模式默认不刷。**GP 付费档(2026-10-06 用户令)**:免费双源用尽后可 GP 付费刷新,价=ceil(20×1.8^本次停点已付费刷) provisional(与商店货架刷新读同两个调参参数 shop_refresh_*,单点调参);付费刷计数每停点清零;钱包=冒险 GP 同一笔系统资源(唯一入口 LevelRunner.spend_gp);余额不足=钮禁用(不隐藏)。店内专长凭证三选一暂不挂刷新面(扩面须先裁凭证保底计数交互)。**两笔语义**两笔语义的框架定义见[核心循环](../../01-核心循环.md)「生命周期轴」节。「三选一呈现」是比节点更细的事件——奖励节点、Boss 通关奖励、商店(凭证)三处都触发。奇物「刷新次数+1」类资源件的语义=存量一次性加仓。 +- **三选一刷新双源**:刷新能力=**存量+临时**两笔系统资源——存量=持久(开局注入基值 0;来源=秘宝匣刷新升级行购买〔meta.tres attune_refresh_upgrade 行族〕+刷新练习件加仓;跨呈现持续、用完即无)、临时量=每次三选一呈现重置为基线 0(来源=效果件的临时注入,未用不结转);**消耗顺序=先扣临时、不足再扣存量**(2026-10-10 用户复述定案;代码字段名 X/Y 与两笔的字母对表归实装批 T0,正文不依赖字母)。重抽复用现有洗牌逻辑,池规则全保留;自动游玩模式默认不刷。**GP 付费档(2026-10-06 用户令)**:免费双源用尽后可 GP 付费刷新,价=ceil(20×1.8^本次停点已付费刷) provisional(与商店货架刷新读同两个调参参数 shop_refresh_*,单点调参);付费刷计数每停点清零;钱包=冒险 GP 同一笔系统资源(唯一入口=冒险 GP 扣账口);余额不足=钮禁用(不隐藏)。店内专长凭证三选一暂不挂刷新面(扩面须先裁凭证保底计数交互)。**两笔语义**两笔语义的框架定义见[核心循环](../../01-核心循环.md)「生命周期轴」节。「三选一呈现」是比节点更细的事件——奖励节点、Boss 通关奖励、商店(凭证)三处都触发。奇物「刷新次数+1」类资源件的语义=存量一次性加仓。 - **🔴 承重契约**(红线;其中真视范围等由数据加载校验强制):效果不允许写成直接加减属性的裸数值——效果类型只能取封闭白名单;真视(直接标出危险格的效果,定义见「核心规则」)单次范围 ≤3×3;核心逻辑不做异步等待;零随机;排雷玩法零特判;危险格与安全格的分布同池冻结——资源类件只能调整权重投影、不能改池结构;**棋盘事实不可变**(秘宝效果不移除、不增改危险格位置与邻接数字——效果形态只允许信息呈现与开格动作;2026-10-10 用户裁,原爆破工兵包「中立移除」即违规形态、随件退役废止)。 - **验收分层**:难度验收分两层——同调系统关闭时沿用现行关卡完成率验收带;开启时验收带按投值平移(归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)投值;商店开关分层同法)。 @@ -228,7 +228,7 @@ ## 调参表 -道具定义表的全部数值均为 provisional,归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)调参;registry `aux_items` 条目已随迭代 22 换代为新目录 12 件登记(2026-10-12);表 schema 归[数据配置](../表现与支撑/数据配置.md)承载、本系统回填。 +道具定义表的全部数值均为 provisional,归[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)调参;`aux_items` 条目已随迭代 22 换代为新目录 12 件登记(2026-10-12);表 schema 归[数据配置](../表现与支撑/数据配置.md)承载、本系统回填。 结构冻结(非调参项,改动走本文修订流程):真视窄域护栏、零信息目标不消耗、边缘窗口照常受理、使用零行动点成本、同调位装配与充能每冒险重置、用后不可逆、零随机。 diff --git a/design/gdd/systems/跨局循环/锻造工坊.md b/design/gdd/systems/跨局循环/锻造工坊.md index b32661a3..679e80ab 100644 --- a/design/gdd/systems/跨局循环/锻造工坊.md +++ b/design/gdd/systems/跨局循环/锻造工坊.md @@ -49,7 +49,7 @@ **工作间内两区并列**(A③ 裁):武器区/护甲区并列呈现,机制层面零顺序门槛;同屏分栏或页签切换=呈现细节归 HUD 批。 -**树侧钥匙(2026-10-11 裁:无前置)**:本柜台由天赋树「锻造工坊」钥匙节点展开——free 节点、**无前置条件、直接可点亮**(原「攻击淬炼累计 ≥2 级 且 护甲淬炼累计 ≥2 级」等级阈值前置,随树脊柱砍攻/护两线作废);未点亮时本柜台锁定态,点亮后开放。树侧结构换代(脊柱砍攻/护两线 + 一线一节点 + Fork 一节点双态,三轮换代 **29→21→15→12**,地脉共鸣条件效果随之换代——2026-10-12 订正:原记「29→21」系 v0.6 时点旧数,树侧现行终态 12 节点)设计权威文档 = [天赋树](天赋树.md);**钥匙节点 forge_workshop 已随迭代 21 实装在役(2026-10-12 入库——free 无前置、点亮展开本柜台、锁定态零购买路径),2026-10-13 反哺写入换代原「实装归待办清单」悬置指针**。 +**树侧钥匙(2026-10-11 裁:无前置)**:本柜台由天赋树「锻造工坊」钥匙节点展开——free 节点、**无前置条件、直接可点亮**(原「攻击淬炼累计 ≥2 级 且 护甲淬炼累计 ≥2 级」等级阈值前置,随树脊柱砍攻/护两线作废);未点亮时本柜台锁定态,点亮后开放。树侧结构换代(脊柱砍攻/护两线 + 一线一节点 + Fork 一节点双态,三轮换代 **29→21→15→12**,地脉共鸣条件效果随之换代——2026-10-12 订正:原记「29→21」系 v0.6 时点旧数,树侧现行终态 12 节点)设计权威文档 = [天赋树](天赋树.md);**钥匙节点已随迭代 21 实装在役(2026-10-12 入库——free 无前置、点亮展开本柜台、锁定态零购买路径),2026-10-13 反哺写入换代原「实装归待办清单」悬置指针**。 **注入衔接(所有权切分,2026-10-11 裁)**:每根数值轴全游戏单一来源——生命/命中唯一入口=树脊柱;**攻击唯一入口=武器路线、AC 唯一入口=甲路线(本系统)**,树零攻防来源(红线)。锻造路线加值 = 当前武器攻击加值 + 当前甲路线 AC 加值,与树淬炼 flat、局内加算区在开局属性注入面分层相加(通道现行事实源 = [元进度](元进度.md)「跨局注入」节);锻造加值只按**当前选中**的武器/甲生效(长剑的练度在换带长枪后回家待命,不丢级、不生效)。 @@ -63,7 +63,7 @@ | 长枪 | **长枪锻造** | 穿刺 | 解锁后从 1 级练起 | | 法杖 | **法杖锻造** | 魔法 | 解锁后从 1 级练起 | -> **改名注(2026-10-12,8a 裁·Y 层)**:六条路线的行名统一为「件名 + 锻造」——长剑锻造 / 长枪锻造 / 法杖锻造、轻甲锻造 / 重甲锻造 / 魔法护甲锻造。其中第一件武器的正式显示名由「剑」改「长剑」(用户原话口径)。`attack_type` 字段值、矩阵语义、registry 攻击类型词条均不受此改名影响——改的只是显示名。 +> **改名注(2026-10-12,8a 裁·Y 层)**:六条路线的行名统一为「件名 + 锻造」——长剑锻造 / 长枪锻造 / 法杖锻造、轻甲锻造 / 重甲锻造 / 魔法护甲锻造。其中第一件武器的正式显示名由「剑」改「长剑」(用户原话口径)。`attack_type` 字段值、矩阵语义、攻击类型词条登记均不受此改名影响——改的只是显示名。 - 每件武器有**独立等级**(1 到上限,锚点 5 级量级,provisional;**0 级 = 未练合法态**——未解锁或已解锁未锻造均为 0 加值裸体态,锻出第 1 级 = 首个 +1,Q1 裁 2026-10-12)、独立成长曲线、独立的满级特效挂位(**本期为空位**——6 裁,见「满级特效扩展位」节)——三件武器的等级各自保留,换当前武器不丢任何进度。 - **当前武器单选出场**:类型由武器决定(选长枪=穿刺)。选中态写**存档域**(与等级域同批新增),冒险开始经参数面注入;`attack_type` 的默认值归锻造工坊配置常驻持有、hero.tres 静态表该轴随实装删除(原「写入 hero.tres 休眠轴」口径与现役「表运行期只读、永久强化写存档」纪律冲突,且与本文存档域条目自相矛盾;现役静态值 normal 由锻造工坊配置默认值接管)。 @@ -110,14 +110,14 @@ | 路线 | 候选特效(量纲方向) | 实现代价分档(2026-10-21 按现役代码复核) | |---|---|---| | 长剑 | 破甲:命中重甲时克制修正额外 +1 点量级 | 零新代码——`modify_ticket` 效果类型与 matchup 条件算子均在现役闭集 | -| 长剑(第二条) | 暴击面扩大:暴击骰面 −1 量级 | **需新参数位**——暴击面现役是表上恒定值(`settlement.tres:52 crit_roll=20`),改成武器级可变=实装批改读表面 | +| 长剑(第二条) | 暴击面扩大:暴击骰面 −1 量级 | **需新参数位**——暴击面现役是表上恒定值(`settlement.tres` 的 `crit_roll=20`),改成武器级可变=实装批改读表面 | | 长枪 | 先手连击:战斗开场追加一次普攻量级的攻击 | 零新代码——`attack_segments` 在册 | | 法杖 | 开局魔法矢:每场战斗开场自动对最前敌人放一次魔法直伤(必中全额量级) | 零新代码——`spawn_spell` 在册(次数/回合数 provisional) | -| 轻甲 | 灵巧:掷点折扣临界档再缓一档量级 | **需新参数位**——折扣档现役读表恒定(`settlement.tres:51 roll_tier_discounts=[75,50,25]`) | +| 轻甲 | 灵巧:掷点折扣临界档再缓一档量级 | **需新参数位**——折扣档现役读表恒定(`settlement.tres` 的 `roll_tier_discounts=[75,50,25]`) | | 重甲 | 反震:被命中时对攻击者反贴 1 点量级伤害 | 零新代码——`spike` 在册 | | 魔法护甲 | 护盾:每场战斗开场自带护盾(层数 X 量级,终值归 M4) | 零新代码+参数面桥接——`shield` 在册,护盾层数进战斗开场参数需接线 | -- 候选池的实现深度前提(沿用过程稿结论并经现役复核):七条全部可用现役 `EFFECT_KINDS` 闭集词或参数位表达,**无一条需要往闭集加新效果类型词**——加词是高代价变更面(加载校验/文档词表/回归测试三处连带),启用时禁走此路。 +- 候选池的实现深度前提(沿用过程稿结论并经现役复核):七条全部可用现役效果类型闭集词或参数位表达,**无一条需要往闭集加新效果类型词**——加词是高代价变更面(加载校验/文档词表/回归测试三处连带),启用时禁走此路。 **对相邻口径的两处连带**:① 设计目的节"能力解锁的节奏"台阶收缩为新武器 / 新甲型解锁(不再含特效);② 存档域不设特效域。 @@ -155,7 +155,7 @@ | 5b | 货币 | 纯钥石(用户注:当前无其他材料,钥石 = 统一货币;后续若要区分再重构,不预先建面) | 「经济」节 | 按推荐案(且受两币分工条款锁定) | | 5c | 材料经济 | 纯钥石零材料 | 「经济」节 | 按推荐案 | | 6 | 满级特效深度 | **本期不做,只留扩展位**——不设计清单 / 不定数值 / 不实装 / 不开参数位 | 「满级特效扩展位」节 | **推翻推荐案**(原 = 复用为主 + 三条新参数位) | -| 8a | 货架现名 → 实裁 = 工作间命名(区名 + 路线行名)+ 局内核结 | **区名**:武器锻造区 / 护甲锻造区;**路线行名**统一「件名 + 锻造」= 长剑锻造 / 长枪锻造 / 法杖锻造、轻甲锻造 / 重甲锻造 / 魔法护甲锻造(第一件武器显示名 剑 → **长剑**)。**局内核结**:局内不存在武器 / 护甲的提升——商店货架三行「攻击锻升 / 生命锻升 / 护甲锻升」即奇物「属性值提升」三轴的货架前台标签(`shop.tres` pool_shelf kind_id → `adventure.tres` CURIO_KINDS),与锻造无关;是否去"锻"字归实装批呈现面 | 「与相邻系统的边界·工作间两区定名 / 局内不存在武器提升」 | 裁点重定向 + Y 层命名 | +| 8a | 货架现名 → 实裁 = 工作间命名(区名 + 路线行名)+ 局内核结 | **区名**:武器锻造区 / 护甲锻造区;**路线行名**统一「件名 + 锻造」= 长剑锻造 / 长枪锻造 / 法杖锻造、轻甲锻造 / 重甲锻造 / 魔法护甲锻造(第一件武器显示名 剑 → **长剑**)。**局内核结**:局内不存在武器 / 护甲的提升——商店货架三行「攻击锻升 / 生命锻升 / 护甲锻升」即奇物「属性值提升」三轴的货架前台标签(`shop.tres` pool_shelf 种类字段 → `adventure.tres` 奇物种类词表),与锻造无关;是否去"锻"字归实装批呈现面 | 「与相邻系统的边界·工作间两区定名 / 局内不存在武器提升」 | 裁点重定向 + Y 层命名 | ## 工作间内容清单(实装批需求卡片输入) diff --git a/design/gdd/ux/battle.md b/design/gdd/ux/battle.md index 6e2195ea..0bb20299 100644 --- a/design/gdd/ux/battle.md +++ b/design/gdd/ux/battle.md @@ -4,7 +4,7 @@ > **Author**: user + ux-designer > **Last Updated**: 2026-10-29 > **Platform Target**: PC (Steam)——Keyboard/Mouse 主(全部操作纯鼠标可完成)、Gamepad Partial 非 MVP、Touch None(同 technical-preferences) -> **上游修订依赖**: 弃图刷新挖掘期受理已随布局决策 4 落稿上游(2026-09-12:行动经济 Active 受理 + 每轮上限 2 次、排雷玩法 Active·仅刷新路径装板、战斗结算 `refresh_board` 编排 + 恒 same_board、registry `rap_rules` 同步——见 OQ11) +> **上游修订依赖**: 弃图刷新挖掘期受理已随布局决策 4 落稿上游(2026-09-12:行动经济 Active 受理 + 每轮上限 2 次、排雷玩法 Active·仅刷新路径装板、战斗结算的挖掘期刷新编排 + 恒同盘不变、系统索引的刷新规则同步——见 OQ11) > **Template**: UX Spec > **覆盖子屏**: 挖掘阶段主界面 · 轮末自动战斗结算(战斗结算明细屏) · 胜利/失败终局 · ~~结算明细回看~~(2026-10-04 P-C7 裁:冒险中回看退役归「生涯」——待办清单登记) > **输入义务**: 排雷玩法×6 + 行动经济 + 战斗结算×3 + 敌人系统×4 + 增益状态×4 + 地图战斗资源×5(旧版 systems-index 门禁增补记录,缺项即 blocking——承接落点见 §13 义务对照表) @@ -28,7 +28,7 @@ ## Player Context on Arrival - **首次到达**:从关卡首节点(战×2 的第一战)进入。MVP 无引导流,chord 肌肉记忆提示等非模态提示承担首次教学(见 §States) -- **到达前刚在做**:关卡画面(独立屏)上点击战斗节点(LevelRunner 推进);或上一场战斗胜利后返回关卡画面再选下一节点 +- **到达前刚在做**:关卡画面(独立屏)上点击战斗节点(关卡推进方受理);或上一场战斗胜利后返回关卡画面再选下一节点 - **情绪状态**:棋手式清明专注(art-bible §2.1,能量 2/10)——挖掘期画面必须无杂音;结算期转为清算爽感(7/10) - **到达方式**:游戏推进送入(非自愿导航),进入即处于挖掘阶段(棋盘已 install、初始 3×3 已展开、小人出生) @@ -41,14 +41,14 @@ ``` 存档 → 冒险 → 关卡(关卡画面 = 节点图选路常驻枢纽) → 【战斗屏】 ├─ 胜利 → 返回关卡画面选下一节点(落地奖励/恢复节点时开节点覆盖层确认 → 下一场战斗屏) - ├─ 胜利(末节点 Boss)→ 关卡结算(level_clear,spec:[level-clear.md](level-clear.md))→ 下关 + ├─ 胜利(末节点 Boss)→ 关卡结算(关卡完成,spec:[level-clear.md](level-clear.md))→ 下关 └─ 失败 → 冒险落幕 → 返回存档/营地 ``` 战斗屏是**上下文相关屏**(仅由战斗节点进入),非顶层常驻。关卡内节点进度常驻关卡画面(独立屏的常驻枢纽形态,节点态即进度呈现:已过暗金、当前金、候选通道亮金、Boss 紫赤描边),战斗屏零进度承载——战斗结束返回关卡画面,玩家始终知道自己身处图中第几环。 - 上游屏:关卡画面(选路枢纽,屏级 spec:[level-map.md](level-map.md)——2026-09-27 建档;分支节点图形态,切片第一关为单链特例) -- 下游屏:关卡画面(选路枢纽,spec:[level-map.md](level-map.md))——战斗胜利后返回选路;落地奖励/恢复节点时由关卡画面域开节点覆盖层(NodeOverlay,恢复点全量服务、奖励点=三选一构筑点)确认兑付——节点奖励屏 spec 已出生:[node-reward.md](node-reward.md) v1.0(2026-09-29 迭代 7 T5 顺带出生,待办清单条目兑现;2026-09-27「不立独立 spec」拍板随之被取代) +- 下游屏:关卡画面(选路枢纽,spec:[level-map.md](level-map.md))——战斗胜利后返回选路;落地奖励/恢复节点时由关卡画面域开节点覆盖层(恢复点全量服务、奖励点=三选一构筑点)确认兑付——节点奖励屏 spec 已出生:[node-reward.md](node-reward.md) v1.0(2026-09-29 迭代 7 T5 顺带出生,待办清单条目兑现;2026-09-27「不立独立 spec」拍板随之被取代) - 下游屏:关卡结算([level-clear.md](level-clear.md),末节点 Boss 胜利——2026-09-27 建档) - 平行屏:图例面板 overlay(本屏内域屏);~~结算明细回看 overlay~~(2026-10-04 P-C7 退役——冒险中回看归「生涯」) @@ -60,16 +60,16 @@ | Entry Source | Trigger | Player carries this context | |---|---|---| -| 关卡战斗节点 | 点击节点(LevelRunner 推进 encounter) | 携带 HP(跨战斗延续)、RAP=0(战斗域新开) | +| 关卡战斗节点 | 点击节点(关卡推进方受理本场遭遇) | 携带 HP(跨战斗延续)、RAP=0(战斗域新开) | | 上一场战斗胜利 → 返回关卡画面 → 选下一节点 | 同上 | 同上 | **离开**: | Exit Destination | Trigger | Notes | |---|---|---| -| 关卡画面(选路枢纽) | 敌方全灭(战斗结算判定段 verdict=win)且非末节点 | 不可逆:battle_over 已发生,RAP 清零;落地奖励/恢复节点时开节点覆盖层确认(NodeOverlay,关卡画面域) | -| 关卡结算 | Boss 战胜利 → level_clear(spec:[level-clear.md](level-clear.md)) | 不可逆:~~关卡收束清库义务载体 = 秘宝背包~~(秘宝过渡形态〔关卡域库存/局内两步使用〕已随迭代 11 第①批退役——现行形态 = 营地同调装配、整局冒险生效,无关卡域清库面〔旧关卡域库存 treasure_inventory 为投放渠道全退役后恒空的机械惰性承载,拆线归实装批——见战斗结算「轮次生命周期」节注〕,见秘宝.md) | -| 冒险落幕 | 主角 HP=0(verdict=lose) | 不可逆:Roguelike 死亡重开(art-bible §2.5 温柔惋惜调性) | +| 关卡画面(选路枢纽) | 敌方全灭(战斗结算判定段判胜)且非末节点 | 不可逆:战斗结束已发生,RAP 清零;落地奖励/恢复节点时开节点覆盖层确认(关卡画面域) | +| 关卡结算 | Boss 战胜利 → 关卡完成(spec:[level-clear.md](level-clear.md)) | 不可逆:~~关卡收束清库义务载体 = 秘宝背包~~(秘宝过渡形态〔关卡域库存/局内两步使用〕已随迭代 11 第①批退役——现行形态 = 营地同调装配、整局冒险生效,无关卡域清库面〔旧关卡域库存 treasure_inventory 为投放渠道全退役后恒空的机械惰性承载,拆线归实装批——见战斗结算「轮次生命周期」节注〕,见秘宝.md) | +| 冒险落幕 | 主角 HP=0(判负) | 不可逆:Roguelike 死亡重开(art-bible §2.5 温柔惋惜调性) | | 无中途退出 | — | MVP 不设战斗内放弃/暂停菜单(回合制无时间压力;如需暂停留 Playtest 诊断按钮,调试用) | --- @@ -125,7 +125,7 @@ > 布局为 B/C/D 三区——关卡进度条不在战斗屏(节点链进度常驻关卡画面,见 Navigation Position;字母不重编沿用 B/C/D)。 -> 呈现术语注记(2026-09-25):封印 = 正式动作名(全库统一;registry terminology 与术语表 v1.13;印记 = 封印印记,art-bible §3.2)——机制与键名不变;封印特效未实装,占位 = 封印黑「封」字形(棋盘视图程序化占位,现行代码仍为旧「旗」字形、随代码术语批换代,贴图在位=字形退役;旗朱→封印紫 2026-09-26→封印黑 2026-09-28 用户拍板)。 +> 呈现术语注记(2026-09-25):封印 = 正式动作名(全库统一;登记册术语与术语表 v1.13;印记 = 封印印记,art-bible §3.2)——机制与键名不变;封印特效未实装,占位 = 封印黑「封」字形(棋盘视图程序化占位,现行代码仍为旧「旗」字形、随代码术语批换代,贴图在位=字形退役;旗朱→封印紫 2026-09-26→封印黑 2026-09-28 用户拍板)。 > 可挖域微光画法定稿(2026-09-25 用户拍板):**接触带·空间侧 + 蓝族**——光画英雄格周界接触面(正交邻墙=整边,斜向邻墙=角点+两半边),详见 art-bible §3.2;现行墙格整框绿相呼吸为待退役占位,实现切换归表现批(探针断言顺带)。 @@ -164,14 +164,14 @@ | C | 秘宝槽 | 图标槽 ×4 | 四槽壳在役、空槽占位(标题「秘宝」,悬停「秘宝槽(空)」);局内两步使用与关卡域库存随秘宝过渡形态退役——现行秘宝 = 营地同调装配件(秘宝.md),本区展示重接归装配面批次 | 悬停 tooltip | 已实装 | | C | 奇物列表(现行标题「特性」) | 列表/图标行 | 已实装(迭代 9 卡⑫ 接线、迭代 12 呈现补齐;2026-10-12 呈现修复批整改——逐件行「件名 ×N」,零内部分类字样);锻造/大奖励/关卡奖励节点获得的属性提升——中循环数据,因改变战斗数学且无其他展示面准入战斗屏;与战斗内状态效果(B 区站桩)分区,防「战斗结束被清」误读 | 只读 | 已实装 | | D | AP 条 | 点阵 + 按钮组 | 本轮 AP 点阵、停手按钮(左)、**RAP 点阵+数字(自 C 区迁入 2026-09-26——RAP 唯一消费口 = 弃图刷新,资源数字贴消费按钮;RAP 清零可见反馈〔行动经济〕载体随迁)**、弃图刷新按钮(右端·雷图右上角;RAP−8 · 本轮剩 N 次——上限 2 次已随行动经济 2026-09-12 修订生效) | 点击提交意图 | HUD 视图拆分 | -| D | BoardView | 网格 | 棋盘全部格态 + 小人 + 封印印记 + 变异纹带 + 奖励身份 icon(已开格;绘制优先级 数字>小人>封印印记>奖励徽章>变异纹带>底色——徽章不进数字区,样张验收项) | 左/右键意图提交 | ✅ 已实装 | +| D | 棋盘视图 | 网格 | 棋盘全部格态 + 小人 + 封印印记 + 变异纹带 + 奖励身份 icon(已开格;绘制优先级 数字>小人>封印印记>奖励徽章>变异纹带>底色——徽章不进数字区,样张验收项) | 左/右键意图提交 | ✅ 已实装 | | D | 悬停预承诺光标 | 光标态 | 移动/挖/封印三语义光标 + 目标格边框高亮 | 自动 | 新建(排雷玩法×6③) | | D | 可挖域指示 | 常驻微高亮 | 小人 8 向相邻可操作格 | 自动 | 新建(排雷玩法×6③) | | D | 移动路径预览 | 路径高亮 | 悬停已开格显示 BFS 路径(合法性指示) | 自动 | 新建(排雷玩法×6⑤,裁决见下) | | D | toast 槽 | 非模态提示 | 拒绝原因(双源)、voided、满层溢出、chord 提示、零合法板告知 | 自动消退 2.5s | 新建 | | D | 图例按钮 + 面板 | 按钮+模态 overlay | 格态/变异语义图例 | 开/关 | 新建 | | 全屏 | 胜利/失败 overlay | 模态 | 金蜡封/暮蓝收印 + 判定行(明细回看入口已随 P-C7 退役——回看归「生涯」) | 继续/下一节点 | 已实装 | -| 调试 | 调试浮窗 | 调试面板 | 种子/数值调整/批量模拟/两层调试入口(发布态恒隐,无 UI 开启口——写死行已随迭代 38 卡⑦ 删除,调试开关门控口径见「调试变体」行;TunePanel 已随迭代 15 卡①吸收退役) | 调试 | 调试浮窗 | +| 调试 | 调试浮窗 | 调试面板 | 种子/数值调整/批量模拟/两层调试入口(发布态恒隐,无 UI 开启口——写死行已随迭代 38 卡⑦ 删除,调试开关门控口径见「调试变体」行;调参面板已随迭代 15 卡①吸收退役) | 调试 | 调试浮窗 | **布局决策 2 —(已删除,编号留空)**:原「窗口形态 = 右栏原位激活」决策随可选类道具整体下线(2026-09-15 格面资源批)。编号留空,免布局决策 3/4 的既有交叉引用失锚。 @@ -179,10 +179,10 @@ - 备选(登记不采纳):穿行动画轨道——移动免费高频,动画时间税违反 P4 点击摩擦护栏(每轮输入动作:AP ≤2 的观测假设);正式版若 playtest 反馈"移动太瞬"再议(留痕) **布局决策 4 — 弃图刷新 = 挖掘期当场换图(2026-09-12 用户拍板,同日落稿上游)**:按钮置 AP 条右端(雷图右上角)。点击即当轮就地换新图继续挖——AP 不重置、剩余 AP 保留,RAP−8,本轮上限 2 次。 -- **上游修订(2026-09-12 已落稿,OQ11)**:① 行动经济 `request_refresh` Active 相位受理 + 每轮上限 2 次(Waiting 代理退役)② 排雷玩法装板受理域增 Active·仅刷新路径 ③ 编排 owner = **战斗结算 `refresh_board`**(行动经济扣费 → 排雷玩法 retire → 棋盘生成 generate → 排雷玩法 install → 地图战斗资源 roll_board 恰一次;无结算段、无 round_end——战斗结算编排唯一性原则保持)④ 旧板封印印记随旧板**作废**(零兑付、封印 AP 不返还——排雷玩法 EC11 全量重置承载;确认微交互须显式提示)。**经济预警**:当场刷新无结算发生,原「敌方时间税」自惩失效——行动经济 OQ3 弃图率/刷新率预警阈值联动复核。 +- **上游修订(2026-09-12 已落稿,OQ11)**:① 行动经济 Active 相位受理刷新意图 + 每轮上限 2 次(Waiting 代理退役)② 排雷玩法装板受理域增 Active·仅刷新路径 ③ 编排 owner = **战斗结算的挖掘期刷新编排**(行动经济扣费 → 排雷玩法退役旧板 → 棋盘生成出新图 → 排雷玩法装板 → 地图战斗资源摇奖励恰一次;无结算段、无轮次结束——战斗结算编排唯一性原则保持)④ 旧板封印印记随旧板**作废**(零兑付、封印 AP 不返还——排雷玩法 EC11 全量重置承载;确认微交互须显式提示)。**经济预警**:当场刷新无结算发生,原「敌方时间税」自惩失效——行动经济 OQ3 弃图率/刷新率预警阈值联动复核。 - 备选(已否决):结算期决策提示(Waiting 内联)——结算期不做刷新决策(用户拍板);挖掘期预承诺 stop+reroll 复合——决策即终轮,不符「换图继续挖」语义。 -**敌人意图线索映射目录(敌人系统×4① 成文占位,2026-09-12;2026-09-16 敌人技能池批改型注记:行为环三态〔攻击/蓄力/重击〕预告随行为环退役——现行数据面 = 敌人系统三档可见性规格〔普攻零表示 / 特殊技类型级动画〔攻击系/增益系两型〕/ 暴击掷点层无前置〕,池与权重不公开;下表 grub/ambusher 三态清单留档作废,终稿资产目录随战斗表现样张批重立;**命名双轨完成注记 2026-10-06**:grub/ambusher 两键本身已随敌人系统八型批退役——现行键集 = 八敌 registry〔goblin/bugbear/ogre_chief/giant_spider/drider/duergar/hook_horror/duergar_king〕,本表键名仅为历史留痕、禁止作为现行 enemy_id 引用)**: +**敌人意图线索映射目录(敌人系统×4① 成文占位,2026-09-12;2026-09-16 敌人技能池批改型注记:行为环三态〔攻击/蓄力/重击〕预告随行为环退役——现行数据面 = 敌人系统三档可见性规格〔普攻零表示 / 特殊技类型级动画〔攻击系/增益系两型〕/ 暴击掷点层无前置〕,池与权重不公开;下表 grub/ambusher 三态清单留档作废,终稿资产目录随战斗表现样张批重立;**命名双轨完成注记 2026-10-06**:grub/ambusher 两键本身已随敌人系统八型批退役——现行键集 = 八敌登记表〔goblin/bugbear/ogre_chief/giant_spider/drider/duergar/hook_horror/duergar_king〕,本表键名仅为历史留痕、禁止作为现行敌种 id 引用)**: | enemy_id | 视觉状态(意图线索) | 强度档位编码 | 环长编码 | |---|---|---|---| @@ -235,16 +235,16 @@ | **结算阶段** | round_end 触发(AP 尽/停手/清图) | D 区锁输入(棋盘去饱和 + 金橙色相偏移,明度不变,数字保持全对比);B 区播放五段编排演出(授予段 → 增益/减益段 → 战斗段 → 衰减段 → 判定段,战斗结算 段序冻结);明细带展开 84px 逐行滚动;阶段指示→"结算中";能量 7/10 | | **清图瞬间** | 全部安全格开完 | 金粒喷泉 + 彩纸 3–5s 即收(§2.3);清图奖励行强调呈现(H2,地图战斗资源×④——金框高亮行);随后换新图 install | | **完美封印高光** | 战斗结算高光判定(全图标中/零误标类) | 全屏喝彩级反馈(§2.2 最高档):金光带加倍扫射 + 「完美封印 ×2」横幅——P2 爆发兑现节点(创意风险 #2 落点) | -| **封印标中高光** | flag_judged{hit=true} | 该印记化暴击弹道加重 + 明细行金框——chord 缺席的即时兑现补偿(创意风险 #3 落点) | +| **封印标中高光** | 封印判定·标中 | 该印记化暴击弹道加重 + 明细行金框——chord 缺席的即时兑现补偿(创意风险 #3 落点) | | **敌人死亡呈现** | 敌 hp=0(流水行击杀标记) | 该敌人立绘血条归零 → 立绘灰化 + 碎裂退场(**禁瞬消**——敌人系统资产下限「死亡瞬间须可辨识、禁止直接消失」,同等 blocking);战斗段短路的重击被掐灭不产行动明细行,由行序可推断(战斗结算);动画密度归战斗表现,呈现语义在本 spec | -| **胜利终局** | verdict=win | 金蜡封落于**扫雷图区中央**(§2.4 字面锚定),全屏暖白金 overlay;判定行 + 「下一节点」;明细回看入口;状态图标行全清可见反馈(增益状态×4④——B 区主角站桩图标逐枚化光收回 + 微文案「状态随战斗结束消散」,防「我的增益哪去了」误读) | -| **失败终局** | verdict=lose(hero hp=0,战斗段短路) | 明度不变的暮蓝 #5A6C8C 氛围 overlay(全作唯一暮蓝档);小人坐砖掸灰、落下的封印印记逐枚化光点收回(§2.5);判定行 +「返回」(明细回看已随 P-C7 退役——回看归「生涯」);状态图标行全清可见反馈(增益状态×4④,同胜利) | +| **胜利终局** | 判定胜利 | 金蜡封落于**扫雷图区中央**(§2.4 字面锚定),全屏暖白金 overlay;判定行 + 「下一节点」;明细回看入口;状态图标行全清可见反馈(增益状态×4④——B 区主角站桩图标逐枚化光收回 + 微文案「状态随战斗结束消散」,防「我的增益哪去了」误读) | +| **失败终局** | 判定失败(主角生命归零,战斗段短路) | 明度不变的暮蓝 #5A6C8C 氛围 overlay(全作唯一暮蓝档);小人坐砖掸灰、落下的封印印记逐枚化光点收回(§2.5);判定行 +「返回」(明细回看已随 P-C7 退役——回看归「生涯」);状态图标行全清可见反馈(增益状态×4④,同胜利) | | **Boss 遭遇变体** | encounter=boss(遗迹守卫) | 战斗开始一次性演出:紫赤 #8F2F6A 影子爬过棋盘(§2.6);敌人立绘体量最大+锐角剪影;阶段指示附 Boss 名 | | **空态:无状态效果** | 增益状态 EC12 | 状态小图标行隐藏(B 区主角站桩血条下图标行零图标时不占位;落底排〔2026-10-06 方案二〕后该行退化为名字行——主角无名字行则整行空置);原「C 区状态槽隐藏、HP/攻击/RAP 上移补位」裁决随 C 区槽退役(2026-09-26 信息归属拍板)作废;图例面板载空态说明(增益状态×① 成文项) | -| **调试变体** | 测试模式 | 调试浮窗入口发布态恒隐(调试入口开关为写死行、已删,无 UI 开启口;开发期临时启用=本地改该字段缺省、不提交——TunePanel 已随迭代 15 卡①退役);Playtest 诊断按钮(卡死转储) | +| **调试变体** | 测试模式 | 调试浮窗入口发布态恒隐(调试入口开关为写死行、已删,无 UI 开启口;开发期临时启用=本地改该字段缺省、不提交——调参面板已随迭代 15 卡①退役);Playtest 诊断按钮(卡死转储) | **拒绝/作废子态**(排雷玩法×6⑥、行动经济双源——每次拒绝玩家可感知): -- 棋盘面拒绝(sub_reason:非相邻/挖封印格等)→ 目标格 危险红 #A8321F 边框闪 + toast 文案(拒绝语义红族——旗朱已退役归封印色〔现行封印黑〕)(图标+文案冗余,色弱清单 #7) +- 棋盘面拒绝(细分原因:非相邻/挖封印格等)→ 目标格 危险红 #A8321F 边框闪 + toast 文案(拒绝语义红族——旗朱已退役归封印色〔现行封印黑〕)(图标+文案冗余,色弱清单 #7) - 资源面拒绝(AP 不足/RAP 不足)→ AP/RAP 数字脉冲 + toast「AP 不足 · 剩 0 点」 - voided(stop 被作废等)→ toast「本轮已清图,停手未执行 · 剩余 AP 已作废」——防静默改判读感欺骗 @@ -256,15 +256,15 @@ | 组件 | 动作 | 输入 | 即时反馈 | 结果(经组合根) | |---|---|---|---|---| -| 未开相邻格 | 挖掘 | 左键 | 格碎裂 + 连锁展开(免费)+ 奖励身份揭显 | 意图入当帧批次 → 排雷玩法 `settle_batch` | +| 未开相邻格 | 挖掘 | 左键 | 格碎裂 + 连锁展开(免费)+ 奖励身份揭显 | 意图入当帧批次 → 排雷玩法的意图批次提交 | | 已开格 | 移动 | 左键 | 悬停时路径预览高亮(布局决策 3);执行 ≤150ms 短滑 | 意图入批(BFS 移动,免费) | | 未开格 | 封印 | 右键 | 封印印记落下(封印黑) | 意图入批(1 AP / 免费;已封印格右键无操作——封印印记无移除手段,封印不可逆批 2026-09-19) | -| 停手按钮 | 主动结束轮次 | 左键 | 按钮下压 + AP→RAP 飞行数字 | `settle_batch([stop])`(**经排雷玩法批次,不直调行动经济**——单意图帧批次契约) | -| 弃图刷新按钮(雷图右上角) | 当轮就地换图继续挖 | 左键 | 确认微交互(RAP−8 代价显式 + 旧板弃置提示);RAP<8 → 资源面拒绝可见(行动经济 EC13) | `request_refresh`(**Active 相位当场换图继续挖**——AP 不重置、本轮剩 N 次扣减;**上游已修订受理——见布局决策 4/OQ11**) | +| 停手按钮 | 主动结束轮次 | 左键 | 按钮下压 + AP→RAP 飞行数字 | 停手随当帧意图批次提交(**经排雷玩法批次,不直调行动经济**——单意图帧批次契约) | +| 弃图刷新按钮(雷图右上角) | 当轮就地换图继续挖 | 左键 | 确认微交互(RAP−8 代价显式 + 旧板弃置提示);RAP<8 → 资源面拒绝可见(行动经济 EC13) | 刷新意图提交(**Active 相位当场换图继续挖**——AP 不重置、本轮剩 N 次扣减;**上游已修订受理——见布局决策 4/OQ11**) | | 图例按钮 | 开图例 | 左键 | 模态 overlay | 恒可开(图例条目恒在) | | 结算明细带 | ~~展开回看~~(已随 P-C7 退役——带保留单行摘要,回看归「生涯」) | —— | —— | —— | | 状态小图标(B 区站桩) | 悬停 | hover | 状态 tooltip(来源+语义+剩余结算次数) | 只读 | -| 胜利 overlay | 下一节点 | 左键 | → 关卡画面(选路枢纽)/ 关卡结算(末节点) | LevelRunner 推进 | +| 胜利 overlay | 下一节点 | 左键 | → 关卡画面(选路枢纽)/ 关卡结算(末节点) | 关卡推进方推进 | | 失败 overlay | 返回 | 左键 | → 存档/营地 | 冒险落幕 | **单意图帧纪律**(排雷玩法×6⑥):一帧内 collected 意图整批提交,stop 点击终结当帧收集;F4 语义序仲裁为防御性兜底。悬停预承诺三态光标:移动(箭头)/挖(镐)/封印(印记形)——左键双义(移动 vs 挖)的消歧完全依赖格态一瞥可辨 + 光标区分(误挖不可逆的感知保险)。 @@ -279,18 +279,18 @@ ## Events Fired -项目无分析系统;本节 = **呈现层订阅的核心信号**(组合根直连 signal)+ 逐局遥测义务(逐局遥测日志(JSONL)已有五类行)。呈现层新遥测(写 playtest JSONL `ux` 行): +项目无分析系统;本节 = **呈现层订阅的核心信号**(组合根直连信号)+ 逐局遥测义务(逐局遥测日志已有五类行)。呈现层新遥测(写入逐局遥测的呈现层行): -| Player Action | Event Fired | Payload / Data | +| 事件(中文名) | 采集内容 | 载荷 / 数据 | |---|---|---| -| 每轮结束 | `ux_round_input_ratio` | 原始输入动作数∶AP 消耗(行动经济 P4 ≤2 护栏观测,排雷玩法遥测义务) | -| 停手/清图 | `ux_round_exit` | path_tag {stopped, ap_exhausted, cleared}(对齐上游封闭枚举)——弃图率(难度曲线与Boss OQ4)观测 | -| 弃图刷新(挖掘期,非轮出口) | `ux_refresh_attempt` | {result: accepted/rejected_rap/rejected_cap, round_refresh_index: 1..2}——刷新使用(难度曲线与Boss OQ6)与行动经济 OQ3 预警阈值观测;每轮 0–2 次(布局决策 4 cap=2) | -| 拒绝/voided | `ux_reject` | {source: board/resource/phase, sub_reason} | -| 提示触发/关闭 | `ux_hint_shown` | {hint_id: chord/no_adjacent} | -| 呈现订阅(不改核心) | 排雷玩法三事件 / [战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)步骤流(9 类行协议,含终局判定行) / battle_over / level_clear | 载荷 schema 成文义务见 §Data Requirements——旧版状态记录 entry 17①(HUD框架硬性要求) | +| 每轮结束 · 轮次输入比遥测 | 原始输入动作数∶AP 消耗(行动经济 P4 ≤2 护栏观测,排雷玩法遥测义务) | —— | +| 停手/清图 · 轮次出口遥测 | 弃图率(难度曲线与Boss OQ4)观测;出口路径对齐上游封闭枚举 | 出口路径标签 {停手 / AP 耗尽 / 清图} | +| 弃图刷新(挖掘期,非轮出口) · 刷新尝试遥测 | 刷新使用(难度曲线与Boss OQ6)与行动经济 OQ3 预警阈值观测;每轮 0–2 次(布局决策 4 cap=2) | {受理结果: 受理 / 拒因 RAP 不足 / 拒因触上限, 本轮第几次刷新: 1..2} | +| 拒绝/voided · 拒绝遥测 | 拒绝来源(板面/资源/相位三源)与细分原因 | {拒绝来源: 板面/资源/相位, 细分原因} | +| 提示触发/关闭 · 提示展示遥测 | 提示类型 | {提示类型: chord 提示 / 无相邻可挖格} | +| 呈现订阅(不改核心) | 排雷玩法三事件 / [战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)步骤流(9 类行协议,含终局判定行) / 战斗结束 / 关卡完成 | 载荷 schema 成文义务见 §Data Requirements——旧版状态记录 entry 17①(HUD框架硬性要求) | -**持久状态写入**全部经组合根唯一路径(settle_batch / request_refresh / runner 推进)——UI 层禁直调核心写(架构七原则"依赖单向组合根")。 +**持久状态写入**全部经组合根唯一路径(意图批次提交 / 刷新意图提交 / 关卡推进)——UI 层禁直调核心写(架构七原则"依赖单向组合根")。 --- @@ -302,13 +302,13 @@ | 挖掘→结算 | 明细带自底展开(150ms)+ 棋盘去饱和 + 金橙色相偏移 + 阶段指示翻转 | §2.2 色彩转金橙主导、饱和拉高、明度不变(状态区分经饱和/色相——art-bible §2 合规化 2026-09-12) | | 结算逐行兑现 | 光带自棋盘行起点横扫 → 开格化箭雨/印记化暴击弹道飞向敌人立绘 → 受击闪白 + 血条直角递减 | §2.2 承载元素;因果全程可见可归因(P2) | | 清图换新图 | 金粒喷泉 3–5s → 旧图碎裂淡出 → 新图 install 淡入 | §2.3 短促丰收不拖节奏 | -| RAP 清零(battle_over) | RAP 数字滚动归零(D 区 AP 条)+ 「随战斗结束消散」微文案 | 行动经济可见反馈义务 | +| RAP 清零(战斗结束) | RAP 数字滚动归零(D 区 AP 条)+ 「随战斗结束消散」微文案 | 行动经济可见反馈义务 | | 敌人死亡 | 血条直角递减至零 → 卡体灰化 + 碎裂退场(禁瞬消) | 敌人系统资产下限(同等 blocking);动画密度归战斗表现 | -| 状态图标行全清(battle_over) | 状态逐枚化光收回(B 区站桩图标行)+ 「状态随战斗结束消散」微文案 | 增益状态×4④;RAP 清零同款先例 | +| 状态图标行全清(战斗结束) | 状态逐枚化光收回(B 区站桩图标行)+ 「状态随战斗结束消散」微文案 | 增益状态×4④;RAP 清零同款先例 | | ~~关卡收束清库~~ | 义务随秘宝过渡形态退役消解——现行形态 = 营地同调装配、整局冒险生效,无关卡域清库面(秘宝.md) | —— | | 胜利 | 蜡封自上落下弹跳定格 → 碎砖拼纹章 → overlay 暖金渐显 | §2.4 克制不狂欢 | | 失败 | 全屏明度不变转暮蓝色相 → 印记化光点 800ms 逐枚收回 → overlay | §2.5 最静一拍 | -| 减动效选项 | 上述全部动画提供时长减半/直接跳终态开关(基线权威 = HUD框架「可访问性基线」节;开关承载 = 设置面(迭代 8 卡④已转正,settings_overlay)——2026-09-27 拍板不另立无障碍专项文档) | 动议:结算逐行兑现为信息载体不可整体跳过,可加速 | +| 减动效选项 | 上述全部动画提供时长减半/直接跳终态开关(基线权威 = HUD框架「可访问性基线」节;开关承载 = 设置面(迭代 8 卡④已转正)——2026-09-27 拍板不另立无障碍专项文档) | 动议:结算逐行兑现为信息载体不可整体跳过,可加速 | --- @@ -316,24 +316,24 @@ | Data | Source System | Read / Write | Notes | |---|---|---|---| -| 棋盘格态/数字/可挖域 | 排雷玩法 只读面(query) | Read | 呈现刷新面 = 排雷玩法 三事件信号(载荷 schema 成文——旧版状态记录 entry 17①) | -| BFS 移动路径 | 排雷玩法 `compute_move_path` | Read | 布局决策 3 合法性指示消费 | -| 拒绝原因 | 排雷玩法 `sub_reason` 封闭枚举 + 行动经济 资源面 | Read | 三源(board/resource/phase)映射文案——呈现层契约成文;资源面原因无上游载荷(行动经济 仅 bool + debug 诊断),客户端按动作上下文推断 | -| AP / RAP / 本轮刷新计数 | 行动经济 | Read | 常显;刷新入口可用性 = RAP 读数客户端预判(RAP≥8)+ `request_refresh` 返回值(行动经济 无 `can_request_refresh` API——仅 bool 返回 + 只读观测量;行动经济 EC13 拒绝合法可见) | +| 棋盘格态/数字/可挖域 | 排雷玩法 只读查询面 | Read | 呈现刷新面 = 排雷玩法 三事件信号(载荷 schema 成文——旧版状态记录 entry 17①) | +| BFS 移动路径 | 排雷玩法 路径规划只读面 | Read | 布局决策 3 合法性指示消费 | +| 拒绝原因 | 排雷玩法 细分原因封闭枚举 + 行动经济 资源面 | Read | 三源(板面/资源/相位)映射文案——呈现层契约成文;资源面原因无上游载荷(行动经济仅回受理与否,细分原因仅调试诊断可见),客户端按动作上下文推断 | +| AP / RAP / 本轮刷新计数 | 行动经济 | Read | 常显;刷新入口可用性 = RAP 读数客户端预判(RAP≥8)+ 刷新意图提交的受理回执(行动经济 无刷新可用性预查询——仅受理与否的回执 + 只读观测量;行动经济 EC13 拒绝合法可见) | | 结算流水行(9 类封闭协议) | [战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋) 流水协议 | Read | 逐行来源标注(P2);未生效类行(奖励未生效)聚合计数呈现 | -| 判定 verdict | 战斗结算 判定段 | Read | 终局画面数据锚 | -| 敌单位 hp/顺位/摇定动作(pending_skill/type/name)/敌方增益/enemy_id/存活 | 敌人系统 只读面(经战斗结算呈现快照) | Read | 意图线索映射全局恒定(敌人系统×4②,技能池批三档口径);**despawn 前捕获**(旧版状态记录 entry 17③——缺陷②教训) | -| 状态效果投影(含空态/极性/溢出) | 增益状态 投影口径 | Read | 极性映射数据源 = 战斗结算 SettlementTable 效果语义,非 magnitude 符号(增益状态×③) | -| 已开格奖励身份(奖励徽章) | 地图战斗资源 `query_identity`(经棋盘视图身份解析只读回调,组合根注入) | Read | 已开格身份常读——挖掘期 Active 相位内有效;reward_id 全局恒定、禁止重掷;徽章绘制优先级见 §Component Inventory BoardView 行 | -| 节点图/当前节点/HP 携带 | 关卡节点地图 lite · LevelRunner | Read | 关卡画面(独立屏)节点态呈现(战斗屏零进度承载) | -| 意图提交 | 排雷玩法 | **Write** | `settle_batch`(stop 亦经此——不直调行动经济) | -| 弃图刷新 | 行动经济 | **Write** | `request_refresh`(挖掘期 Active 当场受理——布局决策 4 2026-09-12 上游已落稿;战斗结算 `refresh_board` 编排承载) | -| 节点推进 | LevelRunner | **Write** | 胜利 overlay「下一节点」 | -| 终局画面数据锚 | 战斗结算 判定行(流水行协议) | Read | 「终局判定行 = 胜负画面的数据锚」(战斗结算 UI Requirements);despawn 前状态可见性纪律 = 旧版状态记录 entry 17③(销毁前捕获、**载荷数据自包含**、禁呈现层回读核心生命周期状态);若需独立终局快照信号,须回战斗结算 GDD 修订补登记(战斗结算 现无 `settlement_snapshot` 契约——2026-09-12 评审修正) | +| 判定胜负 | 战斗结算 判定段 | Read | 终局画面数据锚 | +| 敌单位 生命/顺位/摇定动作(技能标识·类型·名称)/敌方增益/敌单位标识/存活 | 敌人系统 只读面(经战斗结算呈现快照) | Read | 意图线索映射全局恒定(敌人系统×4②,技能池批三档口径);**销毁前捕获**(旧版状态记录 entry 17③——缺陷②教训) | +| 状态效果投影(含空态/极性/溢出) | 增益状态 投影口径 | Read | 极性映射数据源 = 战斗结算效果表语义,非幅度符号(增益状态×③) | +| 已开格奖励身份(奖励徽章) | 地图战斗资源 身份解析只读回调(经棋盘视图,组合根注入) | Read | 已开格身份常读——挖掘期 Active 相位内有效;reward_id 全局恒定、禁止重掷;徽章绘制优先级见 §Component Inventory 棋盘视图行 | +| 节点图/当前节点/HP 携带 | 关卡节点地图轻量读面 · 关卡推进方 | Read | 关卡画面(独立屏)节点态呈现(战斗屏零进度承载) | +| 意图提交 | 排雷玩法 | **Write** | 意图批次提交(stop 亦经此——不直调行动经济) | +| 弃图刷新 | 行动经济 | **Write** | 刷新意图提交(挖掘期 Active 当场受理——布局决策 4 2026-09-12 上游已落稿;战斗结算的挖掘期刷新编排承载) | +| 节点推进 | 关卡推进方 | **Write** | 胜利 overlay「下一节点」 | +| 终局画面数据锚 | 战斗结算 判定行(流水行协议) | Read | 「终局判定行 = 胜负画面的数据锚」(战斗结算 UI Requirements);销毁前状态可见性纪律 = 旧版状态记录 entry 17③(销毁前捕获、**载荷数据自包含**、禁呈现层回读核心生命周期状态);若需独立终局快照信号,须回战斗结算 GDD 修订补登记(战斗结算 现无结算快照契约——2026-09-12 评审修正) | **架构注记**:UI 不拥有任何游戏状态——全部读经核心只读面,全部写经组合根。呈现层信号载荷 schema 须在《HUD框架》成文(旧版状态记录 entry 17①,缺项即 blocking);场景级 headless 测试进 AC(entry 17②);覆盖层层级断言(缺陷⑤——任何模态覆盖层必须有"打开时遮挡物隐藏"断言)。 -**更新触发注记(2026-09-12 评审增补——防实现层等待不存在的信号,旧版状态记录 entry 17 教训同类)**:封印与移动成功反馈**零事件外发**(排雷玩法发射面封闭)——经意图调用 `ActionOutcome` 返回值命令式驱动;AP/RAP 读数:行动经济无推送信号——组合根每次调用返回后重查;状态效果:增益状态为纯被动状态池、零信号——状态栏刷新绑战斗结算的编排完成时点;奖励徽章:地图战斗资源 身份解析经 `query_identity` 只读回调(组合根注入棋盘视图),已开格揭显时查询——写路径回执后重查。 +**更新触发注记(2026-09-12 评审增补——防实现层等待不存在的信号,旧版状态记录 entry 17 教训同类)**:封印与移动成功反馈**零事件外发**(排雷玩法发射面封闭)——经意图调用的返回值命令式驱动;AP/RAP 读数:行动经济无推送信号——组合根每次调用返回后重查;状态效果:增益状态为纯被动状态池、零信号——状态栏刷新绑战斗结算的编排完成时点;奖励徽章:地图战斗资源 身份解析经只读回调(组合根注入棋盘视图),已开格揭显时查询——写路径回执后重查。 --- @@ -355,7 +355,7 @@ - **源语言中文(CJK)**:运行时默认字体无 CJK 字形——**CJK 字体随包为硬性前置**(已锁),实现 AC 覆盖 - **按钮文案单行约束**:「停手」「弃图刷新」——按钮宽度按 4 汉字上限设计;译为英文("Hold"/"Reroll")不超 1.6× 不破版;德语长词("Aufgeben+Neu"类复合词)风险 HIGH——弃图刷新按钮允许两行或图标+缩写 -- **明细带行文案**:来源标注格式「{行为} {值} → {目标}(来源)」为模板插值,最长 token = 来源标签(4 汉字,如「清图奖励」「封印未中」——settlement source_label_map 封闭枚举);行模板预留 40% 膨胀宽度(固定槽高 + clip 兜底) +- **明细带行文案**:来源标注格式「{行为} {值} → {目标}(来源)」为模板插值,最长 token = 来源标签(4 汉字,如「清图奖励」「封印未中」——战斗结算的来源标签封闭枚举);行模板预留 40% 膨胀宽度(固定槽高 + 裁剪兜底) - **数字格式**:全部整数,无本地化格式需求;AP 点阵为图形载体不依赖文本 - **术语表锚定**:封印/雷/停手/弃图刷新/轮次/结算 已在 GDD 体系内定名,译文须同步 `design/gdd/术语表.md` @@ -374,11 +374,11 @@ **交互与反馈** -- [ ] 挖/移/封印/停手/刷新全部操作纯鼠标可完成;stop 意图经 `settle_batch` 提交(代码走查 + 探针断言) +- [ ] 挖/移/封印/停手/刷新全部操作纯鼠标可完成;stop 意图经意图批次提交(代码走查 + 探针断言) - [ ] 每次拒绝(棋盘面/资源面/相位)玩家可感知且两源可区分;voided(至少 stop 作废)可感知(排雷玩法×6⑥、行动经济双源) - [ ] 弃图刷新消耗 RAP 8 点、本轮上限 2 次可见(按钮文案实时「剩 N 次」;上限已随行动经济 2026-09-12 修订生效);RAP<8 资源面拒绝可见(行动经济 EC13);确认交互与常规确认不同位;换图后 AP 不重置、剩余次数扣减可见(**上游已修订受理——2026-09-12 布局决策 4 落稿**) -- [ ] battle_over 时 RAP 清零有可见反馈(行动经济);~~关卡收束清库反馈~~(义务随秘宝过渡形态退役消解——现行 = 营地同调装配整局生效,秘宝.md) -- [ ] battle_over 时状态图标行全清有可见反馈(B 区站桩逐枚化光 + 微文案)(增益状态×④) +- [ ] 战斗结束时 RAP 清零有可见反馈(行动经济);~~关卡收束清库反馈~~(义务随秘宝过渡形态退役消解——现行 = 营地同调装配整局生效,秘宝.md) +- [ ] 战斗结束时状态图标行全清有可见反馈(B 区站桩逐枚化光 + 微文案)(增益状态×④) - [ ] 敌人死亡瞬间可辨识(卡体灰化 + 碎裂退场,禁瞬消);战斗段短路被掐灭的重击由行序可推断(敌人系统资产下限) **信息与归因** @@ -388,7 +388,7 @@ - [ ] 状态效果:极性呈现映射成文且非 magnitude 符号;空态渲染成文(裁决:图标行隐藏——B 区站桩血条下零图标时不占位);满层溢出经明细行可见(增益状态×①③④) - [ ] 图例面板条目恒在可随时回看、非模态提示不劫持输入 - [ ] 零合法板(棋盘生成 EC5 降级)出现时玩家侧诚实提示(toast,非静默) -- [ ] 效果行 value 为单次贡献值,禁止与 pool_value(池合成值)相加呈现;零值伤害行可见不被吞;衰减行按聚合计数呈现(战斗结算 呈现细则) +- [ ] 效果行数值为单次贡献值,禁止与池合成值相加呈现;零值伤害行可见不被吞;衰减行按聚合计数呈现(战斗结算 呈现细则) - [ ] 未生效类行(奖励未生效)携带形状冗余(icon/划线),非色相独载 - [ ] 奖励徽章绘制优先级:封印印记之下、变异纹带之上、不进数字区;拾取瞬间 tier 档位可读(地图战斗资源 H1) @@ -396,9 +396,9 @@ - [ ] 场景级 headless 测试:真实实例化战斗屏场景 + 驱动完整对局 + 断言零脚本错误(呈现层点击探针模式扩展) - [ ] 任何模态覆盖层(图例/胜利/失败——明细回看已退役)有「打开时遮挡物隐藏/输入锁定」场景级断言(缺陷⑤对照) -- [ ] 动态区全部固定槽高 + clip_contents——悬停文案换行不推挤布局(缺陷①回归) +- [ ] 动态区全部固定槽高 + 裁剪兜底——悬停文案换行不推挤布局(缺陷①回归) - [ ] CJK 字体随包,全部中文文案渲染非豆腐块 -- [ ] 敌人 despawn 后呈现层不回读核心生命周期状态(快照纪律,缺陷②回归) +- [ ] 敌人销毁后呈现层不回读核心生命周期状态(快照纪律,缺陷②回归) --- @@ -407,14 +407,14 @@ 1. **Player journey map——已完成(2026-09-27 欠账处置拍板:不建)**:实现前补建的前提随战斗屏实装失效;情绪曲线事实源 = art-bible §2 能量档,真人体验观测与结论回流 = [体验验证清单](../../../体验验证清单.md) 2. **无障碍专项文档——已完成(2026-09-27 拍板:不另立 design/accessibility-requirements.md)**:基线(对比/色弱/字号/闪烁/减动效/纯鼠标/中文字体)权威 = [HUD框架](../systems/表现与支撑/HUD框架.md)「可访问性基线」节;正式分层(文本缩放/色盲模式/按键重映射)归 [设置与本地化](../systems/表现与支撑/设置与本地化.md) 待设计问题清单 #1(设置项全集裁决时定);本 spec §Accessibility 为呈现侧落地承诺 3. **interaction-patterns.md——已建成**(2026-09-12 /team-ui 批当日落稿,本条「未建」系过期陈述):本 spec 引入的四 pattern(双源拒绝反馈/逐行兑现明细带/悬停预承诺光标/点阵资源显示)均已入库成文(pattern 1/3/4/5) -4. **战斗表现美术测试**(game-concept 已登记,战斗表现批次前强制):本 spec 的常驻双舞台分屏(布局决策 1)是测试的布局输入——**敌人卡形态已裁决(2026-09-20 用户看对照样张拍板):全站桩式(无框立绘+底座),主角同样站桩、状态小图标挂血条下,卡片式整体退役**;本 spec 已随裁决改写(原"按卡片式起草"条款作废),站桩式不改变分区结构。对照样张存档 `production/mockups/enemy-card-vs-standee-mockup.html` +4. **战斗表现美术测试**(game-concept 已登记,战斗表现批次前强制):本 spec 的常驻双舞台分屏(布局决策 1)是测试的布局输入——**敌人卡形态已裁决(2026-09-20 用户看对照样张拍板):全站桩式(无框立绘+底座),主角同样站桩、状态小图标挂血条下,卡片式整体退役**;本 spec 已随裁决改写(原"按卡片式起草"条款作废),站桩式不改变分区结构。对照样张已存档(敌人卡与站桩式对照样张) 5. **移动动画形态**(布局决策 3):≤150ms 短滑为推荐值,playtest 观测「移动太瞬/太拖」反馈后调 6. **明细带挖掘期是否常驻上轮摘要**:常驻(现方案)vs 结算后即收起——playtest 观测回看频率 7. **Gamepad 导航序**:Partial 支持(非 MVP 门禁)——焦点环顺序待 gamepad 批次定 -8. **NodeOverlay / 关卡结算屏——已完成(2026-09-27 欠账处置拍板;节点奖励屏部分被 2026-09-29 迭代 7 取代)**:关卡结算屏 spec 已建 [level-clear.md](level-clear.md)(本 spec 只锁出口锚点不变);节点奖励屏 spec 已出生 [node-reward.md](node-reward.md) v1.0(原「不立独立 spec、随秘宝内容重定批交付」拍板随之取代;NodeOverlay 现行:恢复点全量服务、奖励点=三选一构筑点) -9. **TunePanel 退役计划——已完成(迭代 15 卡①,2026-10-05)**:TunePanel 类整体吸收退役入调试浮窗(调试开关=1 门控);正式侧归元进度(天赋树)不变(门控表述属当期留痕——调试入口现发布态恒隐,现行口径见元素表「调试浮窗」行与「调试变体」行) +8. **NodeOverlay / 关卡结算屏——已完成(2026-09-27 欠账处置拍板;节点奖励屏部分被 2026-09-29 迭代 7 取代)**:关卡结算屏 spec 已建 [level-clear.md](level-clear.md)(本 spec 只锁出口锚点不变);节点奖励屏 spec 已出生 [node-reward.md](node-reward.md) v1.0(原「不立独立 spec、随秘宝内容重定批交付」拍板随之取代;节点覆盖层现行:恢复点全量服务、奖励点=三选一构筑点) +9. **调参面板退役计划——已完成(迭代 15 卡①,2026-10-05)**:调参面板类整体吸收退役入调试浮窗(调试开关=1 门控);正式侧归元进度(天赋树)不变(门控表述属当期留痕——调试入口现发布态恒隐,现行口径见元素表「调试浮窗」行与「调试变体」行) 10. **提示文案定稿**:chord 提示/空态文案归实现期文案 pass,本 spec 只锁必含要点与形态约束 -11. **弃图刷新上游修订(已落稿 2026-09-12,布局决策 4)**:行动经济(Active 相位受理 + 每轮上限 2 次 + Waiting 代理退役 + 旧旗作废裁决 + 时间税失效预警)、排雷玩法(Active·仅刷新路径装板受理)、战斗结算(stopped/ap_exhausted 恒 same_board + `refresh_board` 挖掘期刷新编排;AC-29 改写/AC-30 恒 same_board)、registry `rap_rules` 同步、旧版 systems-index 修订块登记。遗留观察项:当场刷新的节奏健康由行动经济 OQ3 弃图率/刷新率预警承载,playtest 复核 +11. **弃图刷新上游修订(已落稿 2026-09-12,布局决策 4)**:行动经济(Active 相位受理 + 每轮上限 2 次 + Waiting 代理退役 + 旧旗作废裁决 + 时间税失效预警)、排雷玩法(Active·仅刷新路径装板受理)、战斗结算(停手与 AP 耗尽两出口恒同盘不变 + 挖掘期刷新编排;AC-29 改写/AC-30 恒同盘不变)、系统索引的刷新规则同步、旧版 systems-index 修订块登记。遗留观察项:当场刷新的节奏健康由行动经济 OQ3 弃图率/刷新率预警承载,playtest 复核 12. **教学引导缺口挂靠(成文时教学引导 GDD 尚未建,留痕)**:挖到雷 = 敌方优势而非死亡(排雷玩法登记「经典扫雷玩家最大预期违背」)、旗挡链(连锁止于旗属正常)、首次蓄力姿态一次性提示(敌人系统)——本屏 toast 体系为落点候选,随教学引导批次定 13. **敌方 AC 展示——已终裁完成(2026-09-26)**:用户终裁——敌方 AC 数值**全屏不展示**(任何区均不直接写上);护甲类型改**图标方式**展示(形状+色相双通道,终稿图标资产归美术批);敌人站桩底座下名字行退回**纯名字 + 护甲类型图标**。与旧「克制对策可读性义务」(敌人技能池批)的关系 = **义务降级承载**:类型保留(图标可读,对策判断仍可做)、数值退役(不再直接展示);敌人技能池批相关义务措辞由并行代码批同步。我方 AC 仍按 2026-09-26 二轮拍板保留于 C 区攻击数据框(唯一展示面) 14. **GP/钥石迁出战斗屏后的展示面归属——已拍板完成(2026-09-26 二轮)**:GP = 关卡画面常驻总量 + 战斗总结结算(总量+增量);钥石 = 冒险总结结算 + 营地。呈现 spec 已出生:[settlement-summary.md](settlement-summary.md) v1.0(2026-09-30——两面分节轻量 spec,本 OQ 为其命名与分工依据;「战斗结算画面」「结算画面」旧措辞随 spec 命名完成退役) @@ -437,7 +437,7 @@ | 战斗结算×3 | ①高光行强调呈现(封印标中金框行/清图 H2 金框行)②完美封印呈现形态 ③棋盘生成 EC5 零合法板提示/补偿/回退形态(toast 提示;补偿/回退不提供——三形态选型留痕 2026-09-12) | §States 高光/清图 + §States 拒绝子态 + §AC;注:结算明细屏 = 战斗结算 UX Flag 事项(本 spec 即其 /ux-design 产物),非 战斗结算×3 状态记录 | | 敌人系统×4 | 意图映射/恒定/顺位/敌方池 | §Component Inventory 敌人站桩立绘 + **意图线索映射目录(敌人系统×4① 成文占位,资产定稿归战斗表现)** + AC | | 增益状态×4 | 常显+空态/来源标注/溢出/去留 | §States 空态 + §AC | -| 地图战斗资源×5 | 身份恒读/明细行/清图强调(旧版状态记录五条中「窗口」「清空反馈」随格面资源批下线——清空反馈义务后载秘宝背包、复随秘宝过渡形态退役消解(现行 = 营地同调装配,秘宝.md)) | §Component Inventory BoardView 奖励徽章 + §States 清图/高光 + §Data Requirements query_identity + AC | +| 地图战斗资源×5 | 身份恒读/明细行/清图强调(旧版状态记录五条中「窗口」「清空反馈」随格面资源批下线——清空反馈义务后载秘宝背包、复随秘宝过渡形态退役消解(现行 = 营地同调装配,秘宝.md)) | §Component Inventory 棋盘视图奖励徽章 + §States 清图/高光 + §Data Requirements 身份解析只读回调 + AC | | 棋盘生成 | EC5 零合法板诚实呈现(数据面经 战斗结算×3③ 上抛) | §States 拒绝子态(toast)+ AC | | 敌人系统资产下限 | 受击反馈/死亡表现/顺位标记 | §Transitions 受击 + §States 敌人死亡呈现(禁瞬消)+ §Component 顺位徽标;呈现语义在本 spec(同等 blocking),动画密度归战斗表现 | diff --git a/design/gdd/ux/camp.md b/design/gdd/ux/camp.md index fd62ce8b..d0cd5c04 100644 --- a/design/gdd/ux/camp.md +++ b/design/gdd/ux/camp.md @@ -30,7 +30,7 @@ ## 点选反馈(根态) -悬停=**轮廓亮边 + 浮动**(浮动须整像素吸附)+物件**名牌**(物件下方 8px 居中,FS_HINT 14,对比 ≥4.5:1);按下=位移 1px;禁用=降明度+去饱和;已解锁=常态。**四态零新素材**(全部程序化)。 +悬停=**轮廓亮边 + 浮动**(浮动须整像素吸附)+物件**名牌**(物件下方 8px 居中,提示字号 14,对比 ≥4.5:1);按下=位移 1px;禁用=降明度+去饱和;已解锁=常态。**四态零新素材**(全部程序化)。 命中区:七件两两不相交、不越出画面、**不侵入顶栏禁区(y ≤ 48)**。 @@ -40,10 +40,10 @@ ## 叠层与开合 -各界面开合走模态栈单口,层序入 `LAYER_CONTRACT`。**承载形态(独立全屏页 vs 单一内页切换)与叠层规则归卡④ §9 代拍板域,本 spec 不预设值**;派生规则:独立全屏页=场景根隐藏/单一内页切换=场景根留底(「缩放虚化」为第三形态,禁批内自选)。ESC 浮窗(返回主菜单/设置/退出游戏)归卡⑤。 +各界面开合走模态栈单口,层序按模态栈契约登记。**承载形态(独立全屏页 vs 单一内页切换)与叠层规则归卡④ §9 代拍板域,本 spec 不预设值**;派生规则:独立全屏页=场景根隐藏/单一内页切换=场景根留底(「缩放虚化」为第三形态,禁批内自选)。ESC 浮窗(返回主菜单/设置/退出游戏)归卡⑤。 ## 口径 -- 呈现数据源=MetaProgression 只读投影经组合根喂入;本层不持有系统资源、不算价。 +- 呈现数据源=元进度系统只读投影经组合根喂入;本层不持有系统资源、不算价。 - 「最近冒险」条带已撤下(卡④ Q4=甲),逐局历史回看归生涯。 - 秘宝匣界面内部呈现(解锁面+同调装配段)保留为附录,待该界面立独立 spec 后迁出。 diff --git a/design/gdd/ux/interaction-patterns.md b/design/gdd/ux/interaction-patterns.md index e2d8b7b5..be842533 100644 --- a/design/gdd/ux/interaction-patterns.md +++ b/design/gdd/ux/interaction-patterns.md @@ -34,7 +34,7 @@ | 11 | tooltip 规范 | Feedback | **已实现**(状态/道具悬停——规格全文待补) | | 12 | 单意图帧批次提交 | Input | **已实现**(组合根——规格全文待补) | | 13 | 状态效果槽 | Data Display | **已实现**(状态图标行呈现件——规格全文待补;载体变更留档:C 区四槽已退役,现役载体=B 区站桩伴随件) | -| 14 | 步进进度条 | Navigation | **已退役留档**(level_strip_view 已删,节点态承载进度) | +| 14 | 步进进度条 | Navigation | **已退役留档**(步进进度条呈现件已删,节点态承载进度) | | 15 | 移动路径预览 | Input | **已实现**(棋盘视图 BFS 蓝点——规格全文待补) | | 16 | 清图/换图演出编排 | Feedback | **已实现·占位级**(棋盘演出呈现件 金粒彩纸——规格随战斗表现 美术批补) | | 17 | 胜利/失败终局编排 | Feedback | **已实现·占位级**(战斗终局覆盖层——规格随战斗表现补) | @@ -53,11 +53,11 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab **Category**: Feedback **Used In**: 战斗屏(棋盘/资源全部意图动作) -**Description**: 玩家意图被核心拒绝时,反馈必须同时做到:(a) 每次拒绝玩家可感知(防静默拒绝读感欺骗);(b) 来源可区分——棋盘面(排雷玩法判,携 sub_reason 封闭枚举)/资源面(行动经济判,客户端推断)/相位(排雷玩法 ActionOutcome)三源各异;(c) 图标+文案双通道,非色相独载。 +**Description**: 玩家意图被核心拒绝时,反馈必须同时做到:(a) 每次拒绝玩家可感知(防静默拒绝读感欺骗);(b) 来源可区分——棋盘面(排雷玩法判,携细分原因封闭枚举)/资源面(行动经济判,客户端推断)/相位(排雷玩法意图回执)三源各异;(c) 图标+文案双通道,非色相独载。 **Specification**: -- 触发:`ActionOutcome{accepted=false, reject_reason, sub_reason}` **返回值驱动**(拒绝无事件外发——排雷玩法发射面封闭,实现层禁止等待拒绝信号) -- 反馈映射:board_face → 目标格危险红 `#A8321F` 边框闪(拒绝语义红族——旗朱→封印紫→封印黑 #000000,2026-09-28 用户拍板现行) + toast 具体原因(sub_reason→文案映射表:not_adjacent/target_revealed/target_concealed/flag_present/flag_absent/no_path/out_of_catalog);resource_face → 对应资源数字脉冲(AP/RAP)+「AP 不足 · 剩 0 点」式文案;phase → toast(结算中/非挖掘期) +- 触发:意图回执(受理标志 + 拒绝原因 + 细分原因)**返回值驱动**(拒绝无事件外发——排雷玩法发射面封闭,实现层禁止等待拒绝信号) +- 反馈映射:棋盘面 → 目标格危险红 `#A8321F` 边框闪(拒绝语义红族——旗朱→封印紫→封印黑 #000000,2026-09-28 用户拍板现行) + toast 具体原因(细分原因→文案映射表:非相邻 / 目标已开格 / 目标未开格 / 该格已有封印 / 该格无封印 / 无可达路径 / 坐标越界);资源面 → 对应资源数字脉冲(AP/RAP)+「AP 不足 · 剩 0 点」式文案;相位 → toast(结算中/非挖掘期) - 即时性:拒绝当帧呈现;toast 自动消退 2.5s - **voided 区分**:作废 ≠ 拒绝(零效果零扣费零事件)——须独立文案如「本轮已清图,停手未执行 · 剩余 AP 已作废」,至少 stop 作废可感知 - Accessibility:危险红边框闪为形状+运动通道;文案常驻 @@ -84,11 +84,11 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab **Description**: 轮末结算逐行流水实时呈现 + 可回看——「扫雷之因逐行兑现为战果」(P2 归因)的承载面。挖掘期收起为 1 行上轮摘要;结算期展开 84px 实时流;点击开完整回看 overlay。 **Specification**: -- 数据源:[战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)步骤流(9 类行封闭协议(现行);公共字段 `type/source_class/origin_cell/round_index/display_name/value/highlight?`);**无来源行 = 断言失败** +- 数据源:[战斗结算](../systems/战斗循环/战斗结算.md#明细流水每一行都能指回你刚才的哪一步棋)步骤流(9 类行封闭协议(现行);公共字段:来源类别 / 来源格 / 轮次 / 显示名 / 数值 / 可空高光标记);**无来源行 = 断言失败** - 行模板:「{行为} {值} → {目标}(来源)」——来源标注(第 N 轮 · 安全格式);行文案最长 token = 来源标签(4 汉字封闭枚举),模板预留 40% 膨胀宽度 -- 聚合纪律:未生效类行(奖励未生效——现行 9 类行协议唯一未生效型,2026-09-20 收敛)按聚合计数呈现(防逐行惩罚轰炸);衰减行聚合计数;效果行 value=单次贡献值、禁与 pool_value(池合成值)相加呈现;零值行可见不吞(免伤轮归因不断点) -- 高亮:highlight 字段 {flag_hit, clear_reward_h2, perfect_broken} → 金框强调;完美封印 = 独立高光行 + 全屏喝彩级反馈。`perfect_broken` 的判据句读作「本板首次标错受检」,不等于完美资格已失——专长「完美保险」可在本场首次标错时豁免,实际资格按有效误标(误标总数 − 豁免数)判定 -- 布局:固定槽高 + clip_contents;正文 ≥14px;数值暗底高对比;未生效类行带 icon/划线形状冗余 +- 聚合纪律:未生效类行(奖励未生效——现行 9 类行协议唯一未生效型,2026-09-20 收敛)按聚合计数呈现(防逐行惩罚轰炸);衰减行聚合计数;效果行数值 = 单次贡献值、禁与池合成值相加呈现;零值行可见不吞(免伤轮归因不断点) +- 高亮:高亮标记(封印标中、清图奖励、完美破除) → 金框强调;完美封印 = 独立高光行 + 全屏喝彩级反馈。「完美破除」的判据句读作「本板首次标错受检」,不等于完美资格已失——专长「完美保险」可在本场首次标错时豁免,实际资格按有效误标(误标总数 − 豁免数)判定 +- 布局:固定槽高 + 裁剪兜底;正文 ≥14px;数值暗底高对比;未生效类行带 icon/划线形状冗余 - 击杀标记呈现(H3 数据源 = 战斗结算流水击杀结果字段) **When to Use**: 任何「因果可归因」的逐行流水呈现 @@ -101,7 +101,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab ### 4. 悬停预承诺光标(hover pre-commitment cursor) **Category**: Input -**Used In**: 扫雷图 BoardView +**Used In**: 扫雷图(棋盘视图) **Description**: 左键双义(已开格=移动 / 未开相邻格=挖)的消歧完全依赖格态一瞥可辨 + 悬停光标区分——**误挖不可逆**(1 AP + 可能触雷)的感知保险。 @@ -130,7 +130,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab **Specification**: - 形态:`●●●●●○○○` + 「5/8」;直角细线数据框(信息=直线直角,art-bible §3.3) - 更新触发:组合根每次调用返回后重查(**行动经济无推送信号**——实现层禁止等待资源变更事件) -- 拒绝反馈:资源不足时数字脉冲(pattern 1 的 resource_face 腿) +- 拒绝反馈:资源不足时数字脉冲(pattern 1 的资源面腿) - Accessibility:点阵=形状通道、数字=文本通道;对比 ≥4.5:1 **When to Use**: 小整数离散资源(≤16 量级) @@ -150,7 +150,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab **Specification**: - 打开:遮挡物隐藏或禁用 + 输入锁定;单一模态栈(无叠模态) - 关闭:恢复被遮挡物;关闭按钮/再点入口切换 -- 内容:固定槽高 + clip_contents(缺陷①——悬停文案换行禁止推挤布局) +- 内容:固定槽高 + 裁剪兜底(缺陷①——悬停文案换行禁止推挤布局) - 验收:**场景级断言「打开时遮挡物隐藏/输入锁定」为每个模态 overlay 的强制 AC**(battle.md 场景级测试节) **When to Use**: 全屏打断级信息、只读回看、仪式性终局 @@ -170,7 +170,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab **Specification**: - 弃图刷新:确认微交互显式呈现全部代价(RAP−8 · **旧板封印印记随旧板作废**提示);确认交互位置与常规确认不同位 - 双通道:图标 + 文案冗余 -- 拒绝路径:RAP<8 → pattern 1 resource_face(EC13 合法拒绝可见) +- 拒绝路径:RAP<8 → pattern 1 的资源面(EC13 合法拒绝可见) **When to Use**: 任何消耗资源/不可逆的操作确认 **When NOT to Use**: 无代价操作(直接执行 + 直接反馈) @@ -189,7 +189,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab **Specification**: - 形态:灰置 + tooltip「HP 已满 · 禁选」;点击无效 + 原因 toast 兜底 - 语义区分:满血 = 零收益守卫(禁选、不烧包)≠ 缺血不足(超量 clamp 部分回复,**不**禁选) -- usable_now 由战斗结算组装进窗口载荷(地图战斗资源零跨系统读)——呈现层只消费不推断 +- 「当前可用」标记由战斗结算组装进窗口载荷(地图战斗资源零跨系统读)——呈现层只消费不推断 **When to Use**: 任何可见但不可交互的元素 **When NOT to Use**: 完全隐藏的不可用功能(不存在的东西无需解释) @@ -201,7 +201,7 @@ MVP 未使用标准控件(不入库):toggle / dropdown / input field / tab ## Gaps & Patterns Needed - **目录 #9–#20 已全部实现**(2026-09-12 战斗屏实现批,冒烟 149/149 + 三探针全绿);规格全文回写 = HUD框架正式化批义务 -- 实现期新增技术件(不单独立 pattern,规格归并):去饱和+金橙状态切换 = 逐格共享 ShaderMaterial(明度不变,gl_compatibility 安全);敌人死亡残位 = 卡体灰化+碎裂禁瞬消(归入 #17 终局编排规格) +- 实现期新增技术件(不单独立 pattern,规格归并):去饱和+金橙状态切换 = 逐格共享 ShaderMaterial(明度不变,兼容渲染器下安全);敌人死亡残位 = 卡体灰化+碎裂禁瞬消(归入 #17 终局编排规格) - **MVP 未使用标准控件**:toggle / dropdown / input field / tab bar(无需求不设占位);TunePanel slider 为调试专用不入库 - **实现偏差规则**:pattern 近似但不完全适配时,实现层禁止静默变体——登记偏差交 ux-designer 复核后回写 diff --git a/design/gdd/ux/level-clear.md b/design/gdd/ux/level-clear.md index 0c8b2123..efac1de7 100644 --- a/design/gdd/ux/level-clear.md +++ b/design/gdd/ux/level-clear.md @@ -34,7 +34,7 @@ ## Navigation Position ``` -战斗屏 ──胜利(末节点 Boss)──▶ 战斗总结结算(GP/钥石增量行)──确认──▶ 【关卡结算(level_clear)】 +战斗屏 ──胜利(末节点 Boss)──▶ 战斗总结结算(GP/钥石增量行)──确认──▶ 【关卡结算(关卡完成)】 ├─ 非末关:回血反馈 + 三选一点选兑付 → 下一关开始(→ 关卡画面选路) └─ 末关完成:直通冒险结算(相邻域)→ 返回存档/营地 失败不经本屏(战斗屏失败分支直达冒险落幕)。 @@ -47,7 +47,7 @@ | 方向 | 触发 | 携带语境 | |---|---|---| -| 进入 | 战斗总结结算确认 → 关卡收束(先清库后宣布)→ 非末关兑付部分回血 → 三选一候选呈现(bonus_pick 信号) | 三候选(件 id + 名称 + 效果行值);部分回血前后生命读数;GP 账本余额(跨关延续) | +| 进入 | 战斗总结结算确认 → 关卡收束(先清库后宣布)→ 非末关兑付部分回血 → 三选一候选呈现(奖励三选一拉起信号) | 三候选(件 id + 名称 + 效果行值);部分回血前后生命读数;GP 账本余额(跨关延续) | | 离开 | 三选一确认兑付 → 继续钮(唯一出口) | 兑付反馈载荷 → 下一关开始 | 零自动推进(冒险结构 契约 4):三选一呈现后必须玩家点选才兑付,确认前玩家不被推着走;重复兑付被拒。选择停点可中断:断点附随件扩「奖励选择态」,续玩回到本屏同一候选(不重抽)。 @@ -70,7 +70,7 @@ | 三选一选择态(默认) | 非末关完成,候选已抽定 | 三卡呈现(零自动推进)→ 点选 → 确认 → 兑付反馈 → 继续 | | ~~同调位替换子态~~ | ~~点选秘宝件且库存满位~~ | 已随渠道退役(秘宝件出池、关卡完成候选 = 纯专长——本屏无道具件候选) | | 兑付反馈态 | 确认兑付后 | 选中件效果一行 + 丢弃提示 → 继续钮点亮 | -| 末关完成 | level_clear 且末关 | 直通冒险结算——不发三选一与回血(奖励只朝下一战生效);本屏不出现 | +| 末关完成 | 关卡完成且末关 | 直通冒险结算——不发三选一与回血(奖励只朝下一战生效);本屏不出现 | | Boss 入口语境 | 击杀 Boss(恒为本屏入口前置) | 入口演出归战斗屏;钥石增量行归战斗总结结算——本屏不另设 | ## Interaction Map @@ -78,7 +78,7 @@ | 组件 | 动作 | 输入 | 即时反馈 | 结果(经组合根) | |---|---|---|---|---| | 提升选项卡 ×3 | 点选(单选高亮) | 左键 | 选中卡高亮、确认钮点亮 | 选中态暂存(未确认可改选) | -| 确认钮 | 兑付选中件 | 左键 | 兑付反馈(效果一行) | AdventureRunner 兑付恰一件(重复兑付被拒);另两件丢弃不可反悔 | +| 确认钮 | 兑付选中件 | 左键 | 兑付反馈(效果一行) | 冒险编排兑付恰一件(重复兑付被拒);另两件丢弃不可反悔 | | 继续钮 | 接受结算、推进 | 左键 | 按钮下压 | 下一关开始(推进到下一关——兑付后受理) | | ~~替换子面板钮~~ | —— | —— | —— | 已随渠道退役(本屏无道具件候选) | @@ -88,13 +88,13 @@ | Data | Source System | Read / Write | Notes | |---|---|---|---| -| 三候选(件 id/名称/效果行值) | 冒险结构 bonus_pick 信号(令牌池洗牌不放回抽 3〔同 kind 去重——v0.14 令牌池换代口径,原「加权洗牌」退役〕,reward_pick 封闭流) | Read | 载荷自包含、despawn 前捕获;同种子同三候选(可复放) | +| 三候选(件 id/名称/效果行值) | 冒险结构 奖励三选一拉起信号(令牌池洗牌不放回抽 3〔同 kind 去重——v0.14 令牌池换代口径,原「加权洗牌」退役〕,奖励抽取封闭流) | Read | 载荷自包含、销毁前捕获;同种子同三候选(可复放) | | 部分回血读数(回血前后生命) | 冒险结构生命账本(clear_heal_pct 兑付) | Read | 满血回 0 合法态文案化 | -| 兑付反馈载荷 | 冒险结构 bonus_resolved 信号 | Read | 选中件 id + 生效值 | +| 兑付反馈载荷 | 冒险结构 奖励兑付完成信号 | Read | 选中件 id + 生效值 | | ~~同调位库存~~ | —— | —— | 替换子态随渠道退役;过渡键 transitional_sync_slots 已退役(迭代 11① T7——同调位现行事实源 = attunement_growth.tres 谓词表实时求值) | -| 冒险摘要(五件事) | 冒险结构 adventure_finished 载荷 | Read | 末关分支数据锚(相邻域冒险结算屏消费) | +| 冒险摘要(五件事) | 冒险结构的冒险收束载荷 | Read | 末关分支数据锚(相邻域冒险结算屏消费) | | GP 账本 | 冒险结构 GP 冒险账本 | — | 不进本屏(维持 2026-09-27 拍板) | -| 钥石入账 | 元进度 settle_adventure | Write(相邻域) | 唯一写档点不变;**本屏零钥石元素**(迭代 10 起,增量行迁战斗总结结算) | +| 钥石入账 | 元进度 冒险结算入账 | Write(相邻域) | 唯一写档点不变;**本屏零钥石元素**(迭代 10 起,增量行迁战斗总结结算) | ## Accessibility @@ -103,7 +103,7 @@ ## Acceptance Criteria - [ ] 非末关完成必经本屏:三选一恰呈现一次(零自动推进)、点选后恰兑付一件(重复兑付被拒)、未选项零生效 -- [ ] 三候选读数可见且与 bonus_pick 载荷一致(件名称 + 效果行值);同种子同三候选 +- [ ] 三候选读数可见且与奖励三选一拉起载荷一致(件名称 + 效果行值);同种子同三候选 - [ ] 部分回血兑付行可见且封顶上限;满血回 0 呈合法态文案 - [ ] ~~同调位替换子交互~~(已随渠道退役——本屏无道具件候选,见 Information Hierarchy 第 4 条注) - [ ] 末关完成分支正确直通冒险结算(不发三选一与回血),冒险摘要五件事完整 diff --git a/design/gdd/ux/level-map.md b/design/gdd/ux/level-map.md index 732944c4..d6fe55d3 100644 --- a/design/gdd/ux/level-map.md +++ b/design/gdd/ux/level-map.md @@ -61,20 +61,20 @@ ### Layout Zones -按 1280×800 基座(2026-09-12 定)。本屏为独立屏独占呈现:屏底(深底 `BG_ROOT` + 石纹底噪〔迭代 2 框材组冻结件,缺位纯色回退〕)铺满,内容居中三段。 +按 1280×800 基座(2026-09-12 定)。本屏为独立屏独占呈现:屏底(深底背景色 + 石纹底噪〔迭代 2 框材组冻结件,缺位纯色回退〕)铺满,内容居中三段。 | 区 | 位置与尺寸 | 内容 | |---|---|---| -| **顶栏语境** | 居中横排,图区上方,高约 32px | 左:关卡名(`level_row.display_name`,如「第二层 · 幽暗地域」);右:GP 常驻徽章(GP 图标+数字,直角细线数据框——GP 值域超点阵适用档,走 pattern 5 的 When-NOT-to-Use 路线);HP 归底部状态栏(2026-09-27 拍板完成) | -| **节点图区** | 居中 | 整幅节点图自绘:节点方块 + 通道折线 + 节点态着色 + Boss 紫赤描边。画布随图自适应(**冻结公式**:宽 = 70+层深×122+44.5、高 = 52+槽位×58+25+24,下限 620×256——routebug 83c11a1 根修件);通道折线**冻结 2/3/4px**(未点亮石灰 STONE/候选亮金 GOLD_LIT/悬停加粗);节点方块 52×36 内**节点图标 20px 烘焙 1:1**(♻ kenney 五键:战=弓/赏=桂冠/疗=篝火/王=王冠/商=钱袋,WARM 单色、当前金底转深墨——双色墨制)+ 编号(图内句柄 id)10px 右上角 | +| **顶栏语境** | 居中横排,图区上方,高约 32px | 左:关卡名(关卡表 `display_name` 行值,如「第二层 · 幽暗地域」);右:GP 常驻徽章(GP 图标+数字,直角细线数据框——GP 值域超点阵适用档,走 pattern 5 的 When-NOT-to-Use 路线);HP 归底部状态栏(2026-09-27 拍板完成) | +| **节点图区** | 居中 | 整幅节点图自绘:节点方块 + 通道折线 + 节点态着色 + Boss 紫赤描边。画布随图自适应(**冻结公式**:宽 = 70+层深×122+44.5、高 = 52+槽位×58+25+24,下限 620×256——路线缺陷根修后定值);通道折线**冻结 2/3/4px**(未点亮石灰 STONE/候选亮金 GOLD_LIT/悬停加粗);节点方块 52×36 内**节点图标 20px 烘焙 1:1**(♻ kenney 五键:战=弓/赏=桂冠/疗=篝火/王=王冠/商=钱袋,WARM 单色、当前金底转深墨——双色墨制)+ 编号(图内句柄 id)10px 右上角 | | **底部状态栏** | 图区下方横排,高约 48px | 左-中:状态数据框组(直角细线,pattern 5 族)——生命(当前/上限 + 迷你血条)、属性(攻击 / 护甲 AC,有效值 + 加成角标)、本关加成(攻+X · 上限+Y · AC+Z,零加成隐藏);右端:放弃冒险按钮(危险红族文字,与状态数据框保持间距——破坏性确认异位,pattern 7) | ### Component Inventory | 组件 | 类型 | 内容 | 交互 | 现有实现锚 | |---|---|---|---|---| -| 关卡名标签 | 文本 | `level_row.display_name`(关卡表行读数) | 只读 | 新建(现行标题位升级) | -| GP 常驻徽章 | 直角细线数据框 | GP 图标 + 数字(`runner.gp`,冒险钱包读数;刷新经 `wallet_changed` 信号投影〔gain/buy/clear 三事件〕或写路径回执后重查) | 只读 | 新建(GP 去向拍板落地面) | +| 关卡名标签 | 文本 | 关卡表 `display_name` 行值(关卡表行读数) | 只读 | 新建(现行标题位升级) | +| GP 常驻徽章 | 直角细线数据框 | GP 图标 + 数字(冒险钱包读数;刷新经钱包变动信号投影〔gain/buy/clear 三事件〕或写路径回执后重查) | 只读 | 新建(GP 去向拍板落地面) | | 节点图画布 | 自绘 Control | 节点图标(五键 20px 烘焙,双色墨制)+ 编号(图内句柄 id)、通道折线、节点态着色、Boss 紫赤描边+深墨环(BOSS_PURPLE——2026-09-26 封印紫批语义:紫赤本色) | 悬停预承诺 / 点击提交选路(唯一通道) | ✅ 已实装(视觉终稿已落码——迭代 4 T2/T3) | | 状态数据框组 | 直角细线数据框 ×3 | 生命(当前/上限 + 迷你血条)、属性(攻击 / 护甲 AC 有效值 + 加成角标)、本关加成(加算区增量列表,零加成隐藏) | 只读 | 新建(2026-09-27 拍板:底栏状态展示) | | 放弃冒险按钮 | 按钮(危险红族) | 「放弃冒险(同失败结算——已获大奖励保留)」;二次确认态已拍板(见布局决策 3) | 点击(首击转确认态、二击提交) | ✅ 已实装(可见性归组合根,仅冒险模式开) | @@ -123,7 +123,7 @@ | **单链停点** | 兑付确认后、恰 1 个下一跳 | 标题「继续前进」;单候选节点图上点击提交(候选按钮已退役——图上点击为唯一通道) | | **岔路停点** | 兑付确认后、≥2 个下一跳 | 标题「选择下一节点」;候选节点图上点击提交(候选按钮已退役——图上点击为唯一通道);亮金通道与候选描边逐一分叉可辨 | | **悬停预承诺** | 悬停候选节点 | 该节点亮金描边加粗 + 所属通道增亮 + 光标切指针态;移出即回落(仅预承诺,点击才提交) | -| **放弃确认态** | 首击放弃按钮 | 文案转确认语 + 危险红边框脉冲约 3 秒;超时或移出回落;二击提交 `abandon_requested` | +| **放弃确认态** | 首击放弃按钮 | 文案转确认语 + 危险红边框脉冲约 3 秒;超时或移出回落;二击提交放弃请求 | | **换层进入** | 上一关结算确认 → 新关开始 | 本屏以新关卡数据淡入;屏底世界侧随层进换挡(**换层色板渐变挂点**——§2.7 切片档:只动色相/饱和、明度带归一,level_index→tint 表候选值 = art-bible §6.3 三关方向,终值归色板样张批;M-2 迭代 4 落挂点) | | **减动效** | 设置开关(设置面——迭代 8 卡④已转正,TunePanel 已退役) | 淡入、描边脉冲等全部 tween 时长减半或跳终态(UiKit.motion 单点包装,同 battle.md 通道) | @@ -135,8 +135,8 @@ | 组件 | 动作 | 输入 | 即时反馈 | 结果(经组合根) | |---|---|---|---|---| -| 候选节点(图上,唯一通道) | 提交选路 | 左键 | 悬停预承诺(描边加粗 + 通道增亮 + 指针)→ 点击本屏关闭 | `route_chosen(node_id)` → `LevelRunner.pick_next_node`——到达即兑付,无进入前确认步 | -| 放弃冒险按钮 | 终结整局冒险 | 左键(二击提交——首击转确认态,2026-09-27 布局决策 3) | 危险红族反馈 | `abandon_requested` → 组合根走冒险落幕(同失败结算——已获大奖励保留) | +| 候选节点(图上,唯一通道) | 提交选路 | 左键 | 悬停预承诺(描边加粗 + 通道增亮 + 指针)→ 点击本屏关闭 | 选路提交 → 关卡推进方受理——到达即兑付,无进入前确认步 | +| 放弃冒险按钮 | 终结整局冒险 | 左键(二击提交——首击转确认态,2026-09-27 布局决策 3) | 危险红族反馈 | 放弃请求 → 组合根走冒险落幕(同失败结算——已获大奖励保留) | **零自动推进纪律**(关卡节点地图 定稿):本屏是唯一的行进发起口——不选就停在图上;没有任何定时、默认或顺延的自动前进路径。兑付后确认挂各兑付面(战斗总结结算〔settlement-summary.md〕/ 节点覆盖层 / 商店覆盖层离开动作),本屏不重复确认步。 @@ -146,13 +146,13 @@ | Data | Source System | Read / Write | Notes | |---|---|---|---| -| 节点图结构 / 当前节点 / 已到序列 / 候选集 | LevelRunner 只读成文出口:`nodes()` / `current_node_id()` / `visited_ids()` / `next_candidate_ids()` / `node_id_of()` / `node_out_ids()` | Read | 呈现只读(关卡节点地图 验收「呈现只读」条);节点态四色直接读图 | -| GP 常驻总量 | `runner.gp`(冒险钱包) | Read | 刷新经 `wallet_changed` 信号投影(gain/buy/clear 三事件)或写路径回执后重查;冒险收束清零后本屏不可达(收束即离屏) | -| 关卡名 | `level_row.display_name`(关卡表行) | Read | 字段名实现期核对(level.tres 行键 `display_name` 在案) | -| 生命读数 | `runner.hero_hp` / `runner.effective_max_hp()`(跨战斗生命携带) | Read | 已拍板(2026-09-27):底栏状态栏承载 | -| 属性与本关加成 | `runner.effective_atk() / effective_ac() / effective_max_hp()` 与 `bonus` 统一冒险加算区(锻造/大奖励/商店购买/节点奖励同账) | Read | 已拍板:底栏承载;无推送信号——组合根打开本屏 / 兑付确认回执后重查(命令式刷新纪律,同行动经济) | -| 选路提交 | LevelRunner | **Write** | 唯一写路径 = `route_chosen` → 组合根 → `pick_next_node`;本屏零其他写面 | -| 放弃请求 | 组合根 | **Write** | `abandon_requested` → 冒险落幕流程(归冒险结构) | +| 节点图结构 / 当前节点 / 已到序列 / 候选集 | 关卡推进方只读成文出口:全节点集 / 当前节点 / 已到序列 / 候选集 / 节点编号 / 节点出边 | Read | 呈现只读(关卡节点地图 验收「呈现只读」条);节点态四色直接读图 | +| GP 常驻总量 | 冒险钱包读数 | Read | 刷新经钱包变动信号投影(gain/buy/clear 三事件)或写路径回执后重查;冒险收束清零后本屏不可达(收束即离屏) | +| 关卡名 | 关卡表 `display_name` 行值(关卡表行) | Read | 字段名实现期核对(level.tres 行键 `display_name` 在案) | +| 生命读数 | 主角当前生命 / 有效生命上限(跨战斗生命携带) | Read | 已拍板(2026-09-27):底栏状态栏承载 | +| 属性与本关加成 | 有效攻击 / 有效护甲 / 有效生命上限,以及统一冒险加算区(锻造/大奖励/商店购买/节点奖励同账) | Read | 已拍板:底栏承载;无推送信号——组合根打开本屏 / 兑付确认回执后重查(命令式刷新纪律,同行动经济) | +| 选路提交 | 关卡推进方 | **Write** | 唯一写路径 = 选路提交 → 组合根 → 关卡推进方受理;本屏零其他写面 | +| 放弃请求 | 组合根 | **Write** | 放弃意图 → 冒险落幕流程(归冒险结构) | **架构注记**:与 battle.md 同族——UI 不拥有任何游戏状态,全部读经核心只读面,全部写经组合根;呈现层直接订阅的推进信号属 HUD框架 已锁两线之一(战斗结算明细流水 + 关卡节点地图推进信号)。 @@ -197,21 +197,21 @@ - [ ] 关卡开始即出图(停点前移语义),入口节点不自动进入;每次兑付确认后回到本屏 - [ ] 1280×800 与 16:9 全屏下顶栏/图区/动作栏无遮挡、无重叠、无内容裁切;节点图完整可见(含 Boss) - [ ] 节点四态(已过/当前/候选/未来)+ Boss 描边在灰度截图下可分类;色值对 art-bible §4.1 色板在案 -- [ ] 顶栏关卡名与 GP 常驻徽章可见、读数与 `runner` 现值一致(GP 经 gain/buy/clear 事件刷新) +- [ ] 顶栏关卡名与 GP 常驻徽章可见、读数与关卡推进方现值一致(GP 经 gain/buy/clear 事件刷新) **交互与流程** - [ ] 三停点标题按布局决策 1 呈现(入口停点不再出现「继续前进(战斗房)」措辞——状态记录 143 遗留清偿) -- [ ] 候选提交经组合根唯一写路径(`route_chosen` → `pick_next_node`),到达即兑付;零自动推进(无任何不选而行的路径) +- [ ] 候选提交经组合根唯一写路径(选路提交 → 关卡推进方受理),到达即兑付;零自动推进(无任何不选而行的路径) - [ ] 图上点击为唯一选路提交通道(候选按钮退役,2026-09-27 拍板);悬停预承诺反馈可见;图上选路段随实装批改造后复核通过 -- [ ] 底部状态栏三组读数可见且与 runner 现值一致(生命当前/上限、攻击/AC 有效值、本关加成增量——零加成隐藏);兑付确认返回后读数刷新 +- [ ] 底部状态栏三组读数可见且与关卡推进方现值一致(生命当前/上限、攻击/AC 有效值、本关加成增量——零加成隐藏);兑付确认返回后读数刷新 - [ ] 放弃按钮仅冒险模式可见(调试两层不可达);单击不提交、确认态超时回落、二击才终结(已拍板) - [ ] 放弃后走冒险落幕(同失败结算),已获大奖励保留语义可见 **模态与测试** -- [ ] **独立性断言**:本屏激活期战斗屏宿主整体隐藏(`visible=false` 级互斥,零透出);选路提交至战斗节点后战斗屏恢复;兑付覆盖层(节点/商店)关闭后本屏恢复——场景级断言 -- [ ] 场景级 headless 测试:真实实例化本屏 + 驱动选路全程 + 断言零脚本错误(ui_probe 家族扩展) +- [ ] **独立性断言**:本屏激活期战斗屏宿主整体隐藏(整屏隐藏级互斥,零透出);选路提交至战斗节点后战斗屏恢复;兑付覆盖层(节点/商店)关闭后本屏恢复——场景级断言 +- [ ] 场景级 headless 测试:真实实例化本屏 + 驱动选路全程 + 断言零脚本错误(场景探针家族扩展) - [ ] 中文渲染无豆腐块;像素字体整数倍缩放;全部操作纯鼠标可完成 --- diff --git a/design/gdd/ux/node-reward.md b/design/gdd/ux/node-reward.md index 975c0e8b..76222231 100644 --- a/design/gdd/ux/node-reward.md +++ b/design/gdd/ux/node-reward.md @@ -1,20 +1,20 @@ # 节点奖励屏 UX spec(node-reward) > 状态:v2.9(现行) -> 事实源:本 spec(呈现)+ 三选一覆盖层(共用呈现件)+ 头部行文案(Narrator.node_bonus_header) +> 事实源:本 spec(呈现)+ 三选一覆盖层(共用呈现件)+ 头部行文案(旁白条目) > 相邻:[level-clear](level-clear.md)(关卡完成三选一面——同一覆盖层的另一上下文)/ [level-map](level-map.md)(关卡画面)/ [秘宝](../systems/跨局循环/秘宝.md)(道具件内容权威——本批起为局外同调件,不再入三选一牌库)/ [冒险结构](../systems/冒险循环/冒险结构.md)(共享池令牌库账本) ## 定位 -奖励节点(reward node)到达即开的**提升三选一选择面**:**七种×档位**令牌池(攻击/生命上限/护甲/GP 袋/行动点件/恢复件/刷新件 × 普通/优秀/稀有(+传说头奖位留空)——v2.2 起秘宝件随同调批退役出池;v2.4 起=固定配额令牌池;刷新件随迭代15② T6 入池〔优秀档 2,恢复件同批挤占收窄——adventure_table CURIO_KINDS 第七类〕),与商店货架同库同账(v2.3)、同池耗语义、同 reward_pick 封闭流。**关卡完成三选一自迭代 15② 渠道分离起候选 = 纯专长,与本面不再同池**;与关卡完成面的差异另在上下文:无部分回血、无钥石增量行,兑付后「继续」回图选路(不推进关卡)。 +奖励节点(reward node)到达即开的**提升三选一选择面**:**七种×档位**令牌池(攻击/生命上限/护甲/GP 袋/行动点件/恢复件/刷新件 × 普通/优秀/稀有(+传说头奖位留空)——v2.2 起秘宝件随同调批退役出池;v2.4 起=固定配额令牌池;刷新件随迭代15② T6 入池〔优秀档 2,恢复件同批挤占收窄——冒险表的令牌类型闭集第七类〕),与商店货架同库同账(v2.3)、同池耗语义、同奖励抽取封闭流。**关卡完成三选一自迭代 15② 渠道分离起候选 = 纯专长,与本面不再同池**;与关卡完成面的差异另在上下文:无部分回血、无钥石增量行,兑付后「继续」回图选路(不推进关卡)。 ## 布局与交互 -- 载体 = 提升三选一覆盖层(CurioPickOverlay,与 [level-clear](level-clear.md) 共用组件——零新增交互原语)。 -- 头部行:「关卡奖励点 / 从冒险牌库抽三选一(属性值提升与补给;与通关专长三选一同库分流):选择一件带走:」(Narrator.node_bonus_header)。 +- 载体 = 提升三选一覆盖层(与 [level-clear](level-clear.md) 共用组件——零新增交互原语)。 +- 头部行:「关卡奖励点 / 从冒险牌库抽三选一(属性值提升与补给;与通关专长三选一同库分流):选择一件带走:」(旁白条目)。 - 三卡点选(✓ 高亮,确认前可改选)→「确认选择」→ 兑付反馈(选中件效果 + 丢弃提示)→「继续」→ 回图选路(零自动推进同款)。 - ~~秘宝件直显/满位替换~~(v2.1 两面随池种退役——迭代 11 第①批 T7;秘宝改走营地同调装配面,见[秘宝](../systems/跨局循环/秘宝.md))。 -- **三选一刷新**(v2.2 新增——P1 甲 X/Y 双源;机制现行事实源=[秘宝](../systems/跨局循环/秘宝.md)「三选一刷新双源」节,X 源承载件已随新目录批换代〔旧目录「三选一刷新件」退役→新目录「刷新练习」〕):装配「三选一刷新件」给 X 次(每次碰三选一重给、优先消耗、不结转)+ 营地「刷新升级」给 Y 次(每冒险开局注入冒险周期池、用完即无);刷新钮余量 >0 时现形,点按重抽三候选(reward_pick 既有洗牌流,池规则全保留:不放回/达上限剔牌/掷定前置直显/停点可中断)。autoplay 默认不刷(钓鱼归玩家)。 +- **三选一刷新**(v2.2 新增——P1 甲 X/Y 双源;机制现行事实源=[秘宝](../systems/跨局循环/秘宝.md)「三选一刷新双源」节,X 源承载件已随新目录批换代〔旧目录「三选一刷新件」退役→新目录「刷新练习」〕):装配「三选一刷新件」给 X 次(每次碰三选一重给、优先消耗、不结转)+ 营地「刷新升级」给 Y 次(每冒险开局注入冒险周期池、用完即无);刷新钮余量 >0 时现形,点按重抽三候选(奖励抽取既有洗牌流,池规则全保留:不放回/达上限剔牌/掷定前置直显/停点可中断)。自动演示默认不刷(钓鱼归玩家)。 ## 口径 diff --git a/design/gdd/ux/settlement-summary.md b/design/gdd/ux/settlement-summary.md index e1c07dc4..a1106a75 100644 --- a/design/gdd/ux/settlement-summary.md +++ b/design/gdd/ux/settlement-summary.md @@ -15,17 +15,17 @@ ## 战斗总结结算(战斗胜利面) -- 触发:冒险模式战斗胜利(verdict=win)含 Boss 胜利——迭代 10 起 Boss 胜利也经本面(钥石逐杀掉落增量在此呈现,确认后进[关卡结算屏](level-clear.md)三选一面;原「Boss 胜利走大奖励面不经本面」口径随大奖励重构退役)。非 Boss 接线 2026-09-29 迭代 8 卡⑥。 -- 载体:battle_end_overlay 胜利形态(金蜡封)。 +- 触发:冒险模式战斗胜利(判胜)含 Boss 胜利——迭代 10 起 Boss 胜利也经本面(钥石逐杀掉落增量在此呈现,确认后进[关卡结算屏](level-clear.md)三选一面;原「Boss 胜利走大奖励面不经本面」口径随大奖励重构退役)。非 Boss 接线 2026-09-29 迭代 8 卡⑥。 +- 载体:战斗结束覆盖层胜利形态(金蜡封)。 - 呈现内容(2026-09-27 拍板面 + 迭代 10 扩):金蜡封 + 判定行 + 战利品行(GP 增量 + 总量;Boss/精英击杀追加**钥石增量行**——首杀/复杀档位读 meta.tres boss_keystone)+「下一节点」钮(明细回看入口已随 2026-10-04 P-C7 退役——冒险中回看归「生涯」)。 -- 数据锚:增量 = `battle_finished` 载荷 `gp_dropped`;总量 = runner.gp 现值(LevelRunner 入账先于呈现连接——次序依赖在案,M-1 迭代 2 T5 接线)。 +- 数据锚:增量 = 战斗结束信号的掉落载荷;总量 = 关卡推进方 GP 现值(关卡推进方入账先于呈现连接——次序依赖在案,M-1 迭代 2 T5 接线)。 - 出口:「下一节点」→ 关卡画面选路(零自动推进)。 ## 冒险总结结算(冒险落幕面) -- 触发:主角倒下(verdict=lose)/ 末关完成 / 玩家放弃——三结局同面(`adventure_finished` 收束)。 -- 载体:与战斗面同一个 battle_end_overlay(2026-09-29 迭代 6 T7 接线)——末关通关走胜利态开屏(金蜡封 +「本局 GP 入账 · 合计 N」行,GP 收束清零前的呈现侧影子账);倒下 / 放弃走失败态开屏(暮蓝)。无独立「冒险终局面板」实体,待办清单状态记录旧称随本条完成。 -- 呈现内容:冒险摘要五件事(定义归[冒险结构](../systems/冒险循环/冒险结构.md))+ 钥石写入明细(= 本局逐杀 Boss 掉落合计;消费归[元进度](../systems/跨局循环/元进度.md) settle_adventure——迭代 10 起大奖励面不再产钥石)+ GP 合计行。 +- 触发:主角倒下(判负)/ 末关完成 / 玩家放弃——三结局同面(由冒险收束信号统一触发)。 +- 载体:与战斗面同一个战斗结束覆盖层(2026-09-29 迭代 6 T7 接线)——末关通关走胜利态开屏(金蜡封 +「本局 GP 入账 · 合计 N」行,GP 收束清零前的呈现侧影子账);倒下 / 放弃走失败态开屏(暮蓝)。无独立「冒险终局面板」实体,待办清单状态记录旧称随本条完成。 +- 呈现内容:冒险摘要五件事(定义归[冒险结构](../systems/冒险循环/冒险结构.md))+ 钥石写入明细(= 本局逐杀 Boss 掉落合计;消费归[元进度](../systems/跨局循环/元进度.md) 的冒险结算入账——迭代 10 起大奖励面不再产钥石)+ GP 合计行。 - 出口:确认 → 回存档首页。 ## 口径 diff --git a/design/gdd/ux/shop.md b/design/gdd/ux/shop.md index a9090c7f..4e3853ed 100644 --- a/design/gdd/ux/shop.md +++ b/design/gdd/ux/shop.md @@ -1,7 +1,7 @@ # 商店覆盖层 UX spec(shop) > 状态:v1.1(现行) -> 事实源:本 spec(呈现)+ 商店覆盖层(ShopOverlay,呈现件) +> 事实源:本 spec(呈现)+ 商店覆盖层(呈现件) > 机制权威:[关卡节点地图](../systems/冒险循环/关卡节点地图.md)(商店房编排:每关恰 1/Boss 前一位必经/兑付触发);定价数值归[难度曲线与Boss](../systems/冒险循环/难度曲线与Boss.md)(shop.tres,provisional) ## 定位 @@ -11,7 +11,7 @@ ## 布局与交互 - 模态覆盖层(dim + 居中):标题「商店」/ GP 余额读数/ 令牌级货架卡(进店自共享池抽 3 张:显示名·效果·现价——六行池面含回复与专长凭证;买一件 = 池少一件、货架随即全架重抽)/ 购买按钮(余额不足禁用置灰——pattern 8 禁用态即理由)/ 刷新按钮(GP 付费刷新,价 = ceil(20×1.8^本次进店已付费刷) provisional,余额不足禁用)/ 离开按钮。 -- 购买意图 `buy_requested` 经组合根转发 runner(pool 模式载荷 = kind_id);成功后货架整架重建(买 1 全重抽反馈)。刷新意图 `refresh_requested` 经组合根转发 presenter。 +- 购买意图经组合根转发(pool 模式载荷 = kind_id);成功后货架整架重建(买 1 全重抽反馈)。刷新意图经组合根转交商店呈现件受理。 - 离开 → 关卡画面兑付确认回选路(零自动推进)。 - 刷新与货架口径(2026-10-04 P-C2+Q2 裁决,SR-1 落码):基础免费 0 次 + GP 付费刷新 + 池源同源(与三选一同一令牌库本)——原「无独立刷新、全陈列」裁决随该批被推翻;天赋侧「刷新次数」增益预留 free_count 位(待办清单登记条在册)。 diff --git a/design/gdd/术语表.md b/design/gdd/术语表.md index 86d24127..6acc6ec1 100644 --- a/design/gdd/术语表.md +++ b/design/gdd/术语表.md @@ -12,7 +12,7 @@ | 安全格 | 没有惩罚的格子——挖开安全并获得其上信息与收益 | | 整图 | 单张棋盘(的整个范围)——原「整图」退役(2026-10-11 用户裁)。例:整图叠加层、整图作用域 | | 叠加层(整图叠加层) | 秘宝产生的信息的自持容器:按效果分类的格集,随图消亡、不回写棋盘(见[秘宝](systems/跨局循环/秘宝.md)) | -| 封印 / 控制 | 封印动作的机制名/玩家名:封印印记落在危险格上为「标中」(危险格被控制、化险为利),封错为「标空」(原「旗 / 控制」,2026-10-18 用户裁:「旗」概念不存在——动作=封印、印记=封印印记);代码契约键与标识符统一用 `seal_*`(原 `flag_*` 全族换代),板面单字字形=「封」 | +| 封印 / 控制 | 封印动作的机制名/玩家名:封印印记落在危险格上为「标中」(危险格被控制、化险为利),封错为「标空」(原「旗 / 控制」,2026-10-18 用户裁:「旗」概念不存在——动作=封印、印记=封印印记),板面单字字形=「封」 | | 真视 | 直接告诉玩家某范围内哪些格是危险格的效果(秘宝承重契约:一次最多 3×3,见[秘宝](systems/跨局循环/秘宝.md)核心规则) | | 类型微光 | 棋盘上按格子类型显示的提示光效(视野参数控制其显示范围) | | 换图 / 弃图刷新 | 清完一图进入下一图 / 花储备放弃当前图重开一张(代价见[行动经济](systems/排雷循环/行动经济.md)) | @@ -23,7 +23,7 @@ | 术语 | 定义 | |---|---| -| 信息迷雾 | 关卡节点图上按邻近层数隐藏节点类型的可见性机制——只隐藏类型,结构(节点、连线、入口、终点位置)恒可见;与「视野迷雾」(战斗棋盘按英雄曼哈顿半径遮挡格子)同词根易混,代码标识符一律不用 `fog_` 前缀。参数 N=信息可见层数(`level.tres` 的 `info_visible_layers`),机制见[关卡节点地图](systems/冒险循环/关卡节点地图.md) | +| 信息迷雾 | 关卡节点图上按邻近层数隐藏节点类型的可见性机制——只隐藏类型,结构(节点、连线、入口、终点位置)恒可见;与「视野迷雾」(战斗棋盘按英雄曼哈顿半径遮挡格子)同词根易混。参数 N=信息可见层数(`level.tres` 的 `info_visible_layers`),机制见[关卡节点地图](systems/冒险循环/关卡节点地图.md) | ## 系统资源与经济 @@ -67,7 +67,7 @@ | 魔法护甲 | 三型甲之一(= 现役甲域 ward,基础 AC 最低、被普通攻击克);「魔法甲」系笔误、非别名,不单独登记 | | 并联双通道 | 待解锁路线的解锁结构:练满前一档 **OR** 一次性解锁价,两通道互不影响、玩家自选其一、不设串联门槛 | | 出场选择 | 一次冒险 = 一个武器类型 + 一个甲型;营地内免费切换、冒险开始后锁死 | -| 路线 id / 存档域键名 | 锻造工坊实现层词汇(非玩家可见,2026-10-13 迭代 23 反哺落文登记):六路线 id = sword/spear/staff/light/heavy/ward(甲路线 id = 甲型值本身);存档域 `forge_routes = {levels〔六路线等级〕, unlocked〔直购解锁清单〕, weapon/armor〔当前选中〕}`——初始持有与练满前一档为派生解锁不落档(派生单点 = forge_route_unlocked) | +| 路线 id / 存档域键名 | 锻造工坊实现层词汇(非玩家可见,2026-10-13 迭代 23 反哺落文登记):六路线 id = sword/spear/staff/light/heavy/ward(甲路线 id = 甲型值本身);存档域 `forge_routes = {levels〔六路线等级〕, unlocked〔直购解锁清单〕, weapon/armor〔当前选中〕}`——初始持有与练满前一档为派生解锁不落档(派生单点 = 解锁判定) | ## 道具体系 @@ -94,7 +94,7 @@ | 术语 | 定义 | |---|---| -| `seal_missed` | 封印落空事件(原 `flag_missed` 换代):封印动作落在安全格上时发出,订阅面据此做限次与豁免判定(迭代 31 卡② 落地) | +| `seal_missed` | 封印落空事件(旧名已换代):封印动作落在安全格上时发出,订阅面据此做限次与豁免判定(迭代 31 卡② 落地) | | `forgive_seal_miss` | 本场首次封印落空豁免——专长「完美保险」的效果类型,`domain=battle` 首例;有效误标=误标总数 − 豁免数,豁免不改写误标账(迭代 31 卡② 落地) | ## 美术表现 @@ -168,11 +168,11 @@ | 插旗 | 封印(2026-10-18 用户裁:封印=正式动作名,全库统一,非比喻非「对外表达」别名) | | 旗(游戏概念语境) | 封印印记(2026-10-18 用户裁:「旗」概念不存在——封印动作落下的印记称封印印记) | | flag_*(代码契约键/标识符) | seal_*(2026-10-18 用户裁全族换代;迭代 31 卡① 已清零) | -| 系统级断言套件 / 冒烟全量 | 系统测试(2026-10-22 用户裁——标准四级测试层之一:启动真实工程走真实玩法路径的断言面;依据=提案正文 §二)(《提案-测试术语与层级重构方案》已退役,考古=git 历史——删除批 53075baa,删除前全稿见历史版本 b4da36a8) | +| 系统级断言套件 / 冒烟全量 | 系统测试(2026-10-22 用户裁——标准四级测试层之一:启动真实工程走真实玩法路径的断言面;依据=提案正文 §二)(《提案-测试术语与层级重构方案》已退役,考古=git 历史——删除批与删除前全稿均可在其中查得) | | 单元套件 | 单元测试(2026-10-22 用户裁——标准四级测试层之一,「套件」单独成词非必要) | | 启动探针 / 秒级冒烟探针 / L0–L3 | 冒烟测试(2026-10-22 用户裁——极小启动场景:能否启动、能否加载表、能否进主屏,零逻辑判定) | | 轻闸 / 重闸 / 三查 | (随 2026-10-22 频率规则消亡,无替代词——检出工作区零测试;卡内只测自己改的东西;全量只在收尾与合回两个时机。机制词「去重闸」含「重闸」二字但与此无关,不在退役之列) | -| 魔法道具 | 秘宝(2026-10-26 用户裁入表:AUXILIARY_ITEMS 旧中文规范名,2026-10-05 已更名) | +| 魔法道具 | 秘宝(2026-10-26 用户裁入表:秘宝系统旧中文规范名,2026-10-05 已更名) | | 罕见(档位名) | 稀有(2026-10-26 用户裁入表:旧三档档位名,现行四级第三档=稀有;散文形容词义不受限) | | 通关 | 关卡完成(单关)/冒险成功(整局)——2026-10-26 用户裁:主体明确短语族替代歧义单义词 | | 冒险终结 | 冒险落幕——2026-10-26 通关口径统一批 | diff --git a/tools/capability_audit.py b/tools/capability_audit.py index 8620e887..9130eeae 100644 --- a/tools/capability_audit.py +++ b/tools/capability_audit.py @@ -2,8 +2,8 @@ r"""capability_audit.py — 能力清单、覆盖域表与 GDD 纯度机检(文档域闸件) 职责(test-conventions §8.9 三层模型的机检半边;规则正文=test-conventions §8.3+§8.9+doc-conventions §5): - A 文档纯度:design/gdd 全树现行文档禁写实现细节——代码路径(.gd/.py/.sh)、测试文件名、断言名; - 唯一例外=配置文件索引(.tres 表路径与表名)。围栏代码块内不扫。 + A 文档纯度:design/gdd 全树现行文档禁写实现细节——代码路径(.gd/.py/.sh)、测试文件名、断言名、 + 反引号包裹的调用形态(`名字(...)`);唯一例外=配置文件索引(.tres 表路径与表名)。围栏代码块内不扫。 B 验收标准:design/gdd/systems/** 每篇须有非空的「## 验收标准」节(豁免件具名在册,附理由)。 C 能力行结构:game/tests/README.md 能力表四列齐、逐行四格非空。 D 代表用例可核(双通道):能力行「代表用例」的每条 `文件:函数`——代码在(文件在 run_all.gd 套件 @@ -36,6 +36,7 @@ CARDS_DIR = REPO / "reports" PURITY_RE = re.compile(r"\.(gd|py|sh)\b") ASSERT_RE = re.compile(r"check_quiet\s*\(|\bcheck\s*\(") +CALL_FORM_RE = re.compile(r"`[A-Za-z_][A-Za-z0-9_.]*\s*\([^`]*\)`") FENCE_RE = re.compile(r"^\s*```") CAP_COLS = ("能力", "系统", "真实入口", "代表用例") @@ -148,6 +149,9 @@ def check_purity(): m = ASSERT_RE.search(ln) if m: red(doc.relative_to(REPO), no, "纯度", "断言名 `%s`(禁写实现细节)" % m.group(1)) + m = CALL_FORM_RE.search(ln) + if m: + red(doc.relative_to(REPO), no, "纯度", "反引号调用形态 %s(禁写实现细节)" % m.group(0)) def check_accept_sections():