diff --git a/active.md b/active.md index c5c770f2..bf748237 100644 --- a/active.md +++ b/active.md @@ -17,17 +17,18 @@ ## 当前状态快照(收口批先更新本节,再追加状态记录;≤10 行) -- **更新于**:2026-10-13(迭代 21 收尾终清——追认单 #10 裁「维持现状」;camp.md 改名补漏两处合入 5fd36a0)。 -- **批末闸全绿**(R1 机制位批存证):冒烟 938/0+run_all 25 套+probe --click/--full+render_gate 全绿+doc 三闸对基线零新增+熵增 PASS;合并后主区 run_all 25 套兜底绿。 -- **现行文档事实源**:秘宝.md v2.9(目录 v1=12 件已实装)+奇物.md v3.16+**天赋树.md v0.10**+**锻造工坊.md v0.8**+**元进度.md v1.20**+术语表 v1.10。 -- **迭代 21 待用户事项全清**:追认单十二条全收口(九追认+#4 追认带意向归 M4+#1 推翻重立=requires_level 机制位批+#10 裁维持现状——状态面板不补锻造概览,效果有问题再按需优化)+GDD 反哺六条已落文。 -- **迭代 21/22/23 残留人闸不变**:实机目检营地四柜台〔07 ⑳〕+秘宝解锁-装配〔07 ㉑〕+锻造工坊工作间〔07 ㉒〕;迭代 20 残留人闸=实机目检五件+V20/V21/V22 人工核对半(07 在册)。 -- **已裁在册**:M4 数值批顺延迭代 24+ 未排期(锻造工坊 provisional 终值归其统一标定)。 -- **界面美化三层诊断已全部登记(2026-10-13,合 master 85e2d2a)**:`06-待办清单` 新增八条专条(一层纯工程三项=UI全局主题资源/按钮状态矩阵/全局纹理过滤;二层三项=UI贴图重构批/字体补完/战斗一屏样张P0;三层两项=氛围层与九宫格切片/元素细节修),并给第三层存量三条补标 Alpha 需完成;`08-Alpha版本标准` 同步八行、升版 v1.1。用户已指定**先动第一层(纯工程补齐)**,待 U0 发令后写需求卡片。 +- **更新于**:2026-10-13(迭代 24 敌人表内容修批总收口——单会话 /goal+iter U0 交付)。 +- **批末闸全绿**:冒烟 949/0(基线 938+本批 11 断言)+run_all 25 套+probe --click/--full+render_gate golden 0.00%+doc 三闸/熵增对基线零新增;MC 同种子配对 40 局×both(seed0=9000)三组读数在带(perfect L2 +25pp/全通 +20pp 低于二档判读带,L2 记录不回调)。 +- **迭代 24 交付**:N1 (1,2) 降档 hp22/ac2(敌种 bugbear 保留)+N2 毒吐/盾击两行六池(首遇位 (2,4) 不动)+N3 敌方 attack_type 轴 20 行全填 normal+敌方结算克制消费点(卡片 §2 漏项补点待追认=报告 §四#6);06 三条销号+08 v1.2+07 ㉓+registry 三处;实现报告=design/qa/iter24-实现报告-2026-10-13.md。 +- **迭代 24 待用户**:实机目检三观测(07 ㉓,登记不阻塞)+代拍板追认单三项+GDD 反哺点五条(06 专条)——迭代位仍预留后续追加卡。 +- **现行文档事实源**:秘宝.md v2.9+奇物.md v3.16+天赋树.md v0.10+锻造工坊.md v0.8+元进度.md v1.20+术语表 v1.10+**08-Alpha版本标准 v1.2(本批随批入库转正)**。 +- **各批残留人闸不变**:迭代 20 实机目检五件+V20/V21/V22 人工核对半;21 营地四柜台〔07 ⑳〕+22 秘宝解锁装配〔07 ㉑〕+23 锻造工作间〔07 ㉒〕+**24 敌人表三观测〔07 ㉓〕**。 +- **已裁在册**:M4 数值批顺延迭代 25+ 未排期(本批与锻造批 provisional 终值归其统一标定)。 +- **界面美化三层已登记**(85e2d2a/08 v1.1):先动第一层,待 U0 发令后写需求卡片。 ## 项目当前位置(2026-10-12 刷新;实时细节以根目录 `roadmap.md` 与 06-待办清单 为准) - **里程碑**:M3=Alpha 版本的完整实现(2026-10-09 立规:用户未明令宣布 M3 完成前停留 M3,迭代只排 M3 需求,M4 一律不排期) -- **迭代**:迭代 19 五卡已入库(2026-10-08);迭代 20 专长实装批已入库(2026-10-11 总收口,反哺①-④已落文);**迭代 21 天赋树实装批已入库(2026-10-12,goal 会话 U0 开工总收口)**;**迭代 22 秘宝体系实现重构落地批已入库(2026-10-12,T1-T7 全量交付)**;**迭代 23 锻造工坊实装批已入库(2026-10-12,/goal+iter U0 开工单会话总收口)**;M4=迭代 24+ 未排期 +- **迭代**:迭代 19 五卡已入库(2026-10-08);迭代 20 专长实装批已入库(2026-10-11 总收口);迭代 21 天赋树实装批已入库(2026-10-12);迭代 22 秘宝体系实现重构落地批已入库(2026-10-12);迭代 23 锻造工坊实装批已入库(2026-10-12);**迭代 24 敌人表内容修批已入库(2026-10-13,单会话交付;迭代位预留追加卡)**;M4=迭代 25+ 未排期 - **近期主战场**:迭代 20/21/22/23 四批残留人闸(实机目检:专长五件 / 营地四柜台〔07 ⑳〕/ 秘宝解锁-装配〔07 ㉑〕/ 锻造工坊工作间〔07 ㉒〕)——各批追认单与反哺点全部出清;**下一前沿=M4 数值批,待 U0 发令** ## 未决面(进行中/待人闸/待裁点指针;现行事实源登记处=`design/gdd/06-待办清单.md`) @@ -80,3 +81,7 @@ - **485(2026-10-13,R1 机制位批——requires_level 等级阈值前置随批重立)**:用户对迭代 21 追认单 #1 裁「b) 推翻,补机制位小批」并令当场做(不占迭代号——用户令小批模式)。落地=卡片 v1.7 留任案形态:meta_tree_table.gd KEY_WHITELIST+requires_level 字段(Dictionary{node_id: n})+validate 三拒(键悬空/阈值<1/类型错);meta_progression.gd tree_can_buy 等级阈值判定分支+tree_gate_text 门槛文案+tree_camp_rows 投影行 gate_text;camp_overlay_view.gd 行板未达标 🔒 标+悬停文案;新单测 tree_requires_level_test 八断言(schema 四拒一过+判定三态+投影两态——首跑抓出测试自身时序 bug〔零配置行断言跑在 cap 满状态后〕重排修正)入 run_all(24→25 套);现役 12 行零配置=机制位空转零行为影响(配置归表行随需填)。闸=冒烟 938/0+run_all 25 套+probe --click/--full+render_gate 全绿(零漂移;MC 豁免=零数值零行为)+doc 三闸对基线零新增+熵增 PASS。文档=天赋树.md v0.10(六处 R1 表述换代:状态行/范围表/schema 连带/购买校验③/调参表/验收前置行)+iter21 报告 §四 #1 推翻标注+§八兑现注。合并 29b08d4(基点含并行 UI 主题卡片批 89b0008);主区 run_all 25 套兜底绿;worktree 与分支已清理。**迭代 21 追认单终态:十二条全收口**(十条追认+#1 推翻重立+#4 追认带意向);悬置仅剩 #10 锻造段异议结论(状态面板改名已落地)。(worktree r1mech-20261013;编号顺延 485——483 系并行术语表微批、484 系本会话改名批登记) - **486(2026-10-13,迭代 21 追认单终清——#10 裁维持现状)**:用户裁「维持现状就行了,到时候效果有问题,我再让你做对应的优化更改。现在不用动」——状态面板不补锻造概览(原属性锻造三行的信息缺口:锻造工坊武器/护甲路线等级面板不可见,用户知悉并接受,将来实际游玩效果有问题时按需提优化)。iter21 报告 §四 #10 标注追认结果收口。**至此迭代 21 待用户事项全部出清**(追认单十二条+反哺六条+欠账三条全链闭环);各批(20/21/22/23)追认与反哺全部出清,项目待用户面仅剩四批实机目检人闸+存量未决面(美术 P0 两项/去毒残留词/喂雷流 R5/通关口径 273 处)。快照/主战场换代。零代码零游戏文件。(worktree log486-20261013;编号顺延 486) + +- **487(2026-10-13,迭代 24 敌人表内容修批(三关)开工——U0 单会话交付)**:定义入库 0c083bb(主区守卫拦 commit 坑再证——b89c3fe worktree 提交 --no-ff 合回舞步);开工门=需求卡片 v1.1 零待裁点(Q1-Q9 全裁用户令「按推荐方式」)。基线复读:冒烟 938/0 + run_all **25 套**(卡片/roadmap 记 24 系 485 R1 批加套前旧基线,随批换代呈报)+ probe --click 全绿;改前 MC 锚落盘 sim-data/runsum_iter24_pre_n40both_20261013.jsonl(二档 N=20×both·seed0=9000 沿用迭代 23 配对种子:normal L1 通关 3/20·taken 中位 29.5;perfect L1 19/20·L2 8/20·全通 6/20·taken 中位 76.5)。T1 N1 落地=enemy.tres (1,2) hp 50→22·ac 3→2+表尾批注(阶名化解方案实机未达预期重裁沿革)+V1 两断言(降档锚定+相邻总量比≤2.5 护栏);T2 N2 落地=skills.tres 12→14 行(venom_spit 毒吐 ×1.6/CD2·shield_bash 盾击 ×1.7/CD3 均无 rider)+六池投放(蜘蛛 (2,5)-(2,7)+毒吐 2、灰矮人 (3,0)/(3,5)/(3,7)+盾击 2、首遇位 (2,4) 不动)+expect_pools 六键同步+旧「技能表十二行」断言换代十四行+V3/V4 五断言(两行字段域/两投放面/逐池增益妨害纪律)。冒烟 945/0+probe 全绿。T3 N3 进行中。(worktree g-plan2-iter24-enemy) + +- **488(2026-10-13,迭代 24 敌人表内容修批(三关)总收口——单会话 /goal+iter U0 全量交付)**:三提交全量入库(worktree g-plan2-iter24-enemy;26d669f N1+N2 / ab3ba4f N3 / 5f2ef77 文档同步面+收口笔)。**N1**:enemy.tres (1,2) hp 50→22·ac 3→2(敌种 bugbear/池/数量/atk 零动;表尾批注载 2026-09-24 阶名化解方案实机未达预期重裁沿革)+V1 两断言(锚定+相邻总量比≤2.5 护栏)。**N2**:skills.tres 12→14 行(venom_spit 毒吐 ×1.6/CD2、shield_bash 盾击 ×1.7/CD3 均无 rider——damage_floor 兜底与 0.75 档等效)+六池投放(蜘蛛 (2,5)-(2,7)/灰矮人 (3,0)(3,5)(3,7);首遇位 (2,4) 不动)+expect_pools 六键同步+旧「十二行」断言换代+V3/V4 五断言。**N3**:20 行 attack_type 全填 normal+enemy_table ATTACK_TYPES 枚举校验(缺省 normal 向后兼容)+unit_container 敌方快照+battle_orchestrator 开单第 9 参传值+**damage_controller._resolve_enemy_skill 克制消费点补一行**(卡片 §2 事实漏项——敌方兑付路径原硬编码 delta 0,2026-09-24 批注释在案;不改则 V5 矩阵命中证词物理不可达,属验收闸强制最小补点待用户追认=报告 §四#6)+单据载荷 attack_type 键+V5 四断言(矩阵证词同种子三甲型实测 heavy 2==light 3−1·ward 4==light 3+1)。**读数**:MC 同种子配对 seed0=9000 N=20×both 改前/改后各 40 局(锚落 sim-data/runsum_iter24_{pre,post}_n40both_20261013.jsonl);三组读数=N1 perfect L1 19→20/20、N2 perfect L2 8→13/20 全通 6→10/20(方向符合预期低于二档判读带,L2 记录不回调,倍率归 M4)、N3 单发恒 ±1(V5 钉死)全局中位位移系构成效应;二档会话累计 ~8 分钟。**文档同步面**:06 三条销号(第一关遭遇表数值异常/第二关技能池与投放/锻造迁移面⑥)+卡片条收口+反哺点五条专条;08 敌种池行注摘除升 v1.2(untracked 件随批转正入库);07 ㉓ 三目检登记;registry 三处(enemy.attack_type 字段/skill 十四行/hero 甲轴休眠注退役);Alpha未完成事项梳理三注订正(A2 已修+附.3 缺行疑云解销=L2/L3 缺 2/3/8 系奖励/休整/商店节正常缺省)。**闸**:冒烟 949/0+run_all 25 套+probe click/full+render_gate golden 0.00%(首跑 SKIP 抓出 worktree 漏拷 art 实体——初拷链因 .godot 路径错误短路,补拷后全绿)+doc 三闸/熵增对基线零新增(死链3/拔旗1/雾格1/lint 3件FAIL 均存量)。**待用户**:实机目检三观测(07 ㉓,登记不阻塞)+追认单三项(消费点补行/旧断言换代/两 untracked 件转正)+GDD 反哺五条。基线漂移记档=run_all 24→25(485 批)。(worktree g-plan2-iter24-enemy;编号顺延 488——487 系本会话开工条) diff --git a/design/gdd/06-待办清单.md b/design/gdd/06-待办清单.md index 335d6257..a651657f 100644 --- a/design/gdd/06-待办清单.md +++ b/design/gdd/06-待办清单.md @@ -123,7 +123,7 @@ #### 锻造工坊实装批 — 待办(冻结:迭代规划冻结中,重启=用户发令)(2026-10-09 随成文批登记,时名「武器锻造系统实装批」;2026-10-11 随系统更名换代) -**内容**:按 [锻造工坊](systems/跨局循环/锻造工坊.md) **v0.6** 定案口径实装(需求卡片输入=其「裁决结果清单」+「工作间内容清单」两节)——迁移面八项:① **新建锻造路线行族**(forge_products 已随迭代 21 T5 整体退役、无改造对象——v0.6 事实订正:行族/访问器/购买面三处退役登记在册,本批新建而非改造;落位=新表 forge.tres〔ForgeTable〕,钥石定价历史考古 20/150%、provisional 投值归 M4 终值);② **两根类型轴所有权移交**(默认值归锻造工坊配置常驻持有、hero.tres 静态表两轴删除、选中态写存档域 forge_routes+冒险开始参数面注入;一次冒险一个武器类型+一个甲型,营地免费切换、冒险开始后锁死);③ `feats.tres` magic_vs_magic 死条件行——复活案作废(2026-10-11 核结:所属件魔网织者在素材库表二 27 件退役删除名单),随专长退役删行批消解,本批零触碰;④ 存档域新增三武器+三甲型等级与当前选中标记(**不设特效域**——2026-10-12 裁 6;开发阶段无迁移——旧档缺键补齐=初始持有态,v6→v7 空迁移;存档序列化文档与 registry 随批登记);⑤ **满级特效本期不实装**(2026-10-12 裁 6:不开三条新参数位、不加效果类型词,扩展位留空,启用需另立项);⑥ **敌方攻击类型轴填值(3b 裁连带,跨系统汇合点)**——敌方攻击单据 `attack_type` 按「未设置=默认 normal」填值使其参与克制矩阵查表(现役为 `""` 恒不查矩阵;`enemy.tres:527` 轴未开、全部 normal 档):**执行面归敌人系统/战斗结算侧**,本批只登记需求与数值影响(全局平移主角受伤点数:穿重甲 −1、穿魔法护甲 +1,须进⑧配对读数验证);敌方 attack_type 为敌方定义数据(与敌种名字/血量同批同时读写、无独立时序),填值归敌人系统/战斗结算侧自然推进;本批只按 3b 裁落结构面(矩阵查表现役已支持)(2026-10-12 订正:原「两批排期协商(可同批做,也可先行)」句删除——用户裁:时序问题不存在);⑦ 术语登记——三型甲统一命名(轻甲/重甲/魔法护甲;**「魔法甲」系笔误不登记别名**)+ 工作间两区定名(武器锻造区/护甲锻造区)登记 registry entities.yaml;⑧ 数值验证义务=改前/改后同随机种子配对读数验证难度影响,统一调整归 M4 数值批。**解锁通道**:四条待解锁路线(长枪/法杖/重甲/魔法护甲)均走并联双通道(练满前一档 OR 一次性解锁价,互不影响、玩家自选),不设串联门槛。**前置**:17 裁点用户逐点裁决——**已清零(2026-10-12 B 组 15 点逐裁落文 v0.5;2c/5a 于 v0.4 结案)**。**关联(2026-10-11 换代)**:锻造工坊钥匙节点改无前置直接可点亮(2026-10-11 用户裁,原等级阈值前置作废);树脊柱砍攻/护两线(攻防所有权切分——攻击唯一入口=武器路线、AC 唯一入口=甲路线,树侧落文归天赋树会话交接批)后本批=攻防数值唯一实装面;树结构换代(33→12)已随迭代 21 入库——本批④存档域 forge_routes 独立成域(已预登记存档序列化.md v7 计划行),无共域冲突(2026-10-12 订正:原「排期两批合并评估」语境随树批入库消失——用户裁:非裁点)。**前置信息(2026-10-12 用户裁定:不在本批考虑)**:3b 后现行数据三型成纯序(重甲正向 > 轻甲中性 > 魔法护甲负向,敌方现行无魔法攻击故暂无优势窗口)——系**后续开发改造的前置事实**,敌方攻击类型差异化与魔法护甲的正当性归后续批次(含 M4 在基础 AC / 解锁价上的取值);本批只按统一伤害轴落结构与字段。 +**内容**:按 [锻造工坊](systems/跨局循环/锻造工坊.md) **v0.6** 定案口径实装(需求卡片输入=其「裁决结果清单」+「工作间内容清单」两节)——迁移面八项:① **新建锻造路线行族**(forge_products 已随迭代 21 T5 整体退役、无改造对象——v0.6 事实订正:行族/访问器/购买面三处退役登记在册,本批新建而非改造;落位=新表 forge.tres〔ForgeTable〕,钥石定价历史考古 20/150%、provisional 投值归 M4 终值);② **两根类型轴所有权移交**(默认值归锻造工坊配置常驻持有、hero.tres 静态表两轴删除、选中态写存档域 forge_routes+冒险开始参数面注入;一次冒险一个武器类型+一个甲型,营地免费切换、冒险开始后锁死);③ `feats.tres` magic_vs_magic 死条件行——复活案作废(2026-10-11 核结:所属件魔网织者在素材库表二 27 件退役删除名单),随专长退役删行批消解,本批零触碰;④ 存档域新增三武器+三甲型等级与当前选中标记(**不设特效域**——2026-10-12 裁 6;开发阶段无迁移——旧档缺键补齐=初始持有态,v6→v7 空迁移;存档序列化文档与 registry 随批登记);⑤ **满级特效本期不实装**(2026-10-12 裁 6:不开三条新参数位、不加效果类型词,扩展位留空,启用需另立项);⑥ **敌方攻击类型轴填值(3b 裁连带,跨系统汇合点)**——敌方攻击单据 `attack_type` 按「未设置=默认 normal」填值使其参与克制矩阵查表(现役为 `""` 恒不查矩阵;`enemy.tres:527` 轴未开、全部 normal 档):**执行面归敌人系统/战斗结算侧**,本批只登记需求与数值影响(全局平移主角受伤点数:穿重甲 −1、穿魔法护甲 +1,须进⑧配对读数验证);敌方 attack_type 为敌方定义数据(与敌种名字/血量同批同时读写、无独立时序),填值归敌人系统/战斗结算侧自然推进;本批只按 3b 裁落结构面(矩阵查表现役已支持)(2026-10-12 订正:原「两批排期协商(可同批做,也可先行)」句删除——用户裁:时序问题不存在)**(✅ 已完成 2026-10-13 迭代 24 卡① N3:20 行全填 normal+schema 枚举校验+单位快照+开单第 9 参传值+敌方结算克制消费点;全局平移穿重甲 −1/魔法护甲 +1/轻甲 0 经同种子三甲型配对实测在案——矩阵数值零触碰)**;⑦ 术语登记——三型甲统一命名(轻甲/重甲/魔法护甲;**「魔法甲」系笔误不登记别名**)+ 工作间两区定名(武器锻造区/护甲锻造区)登记 registry entities.yaml;⑧ 数值验证义务=改前/改后同随机种子配对读数验证难度影响,统一调整归 M4 数值批。**解锁通道**:四条待解锁路线(长枪/法杖/重甲/魔法护甲)均走并联双通道(练满前一档 OR 一次性解锁价,互不影响、玩家自选),不设串联门槛。**前置**:17 裁点用户逐点裁决——**已清零(2026-10-12 B 组 15 点逐裁落文 v0.5;2c/5a 于 v0.4 结案)**。**关联(2026-10-11 换代)**:锻造工坊钥匙节点改无前置直接可点亮(2026-10-11 用户裁,原等级阈值前置作废);树脊柱砍攻/护两线(攻防所有权切分——攻击唯一入口=武器路线、AC 唯一入口=甲路线,树侧落文归天赋树会话交接批)后本批=攻防数值唯一实装面;树结构换代(33→12)已随迭代 21 入库——本批④存档域 forge_routes 独立成域(已预登记存档序列化.md v7 计划行),无共域冲突(2026-10-12 订正:原「排期两批合并评估」语境随树批入库消失——用户裁:非裁点)。**前置信息(2026-10-12 用户裁定:不在本批考虑)**:3b 后现行数据三型成纯序(重甲正向 > 轻甲中性 > 魔法护甲负向,敌方现行无魔法攻击故暂无优势窗口)——系**后续开发改造的前置事实**,敌方攻击类型差异化与魔法护甲的正当性归后续批次(含 M4 在基础 AC / 解锁价上的取值);本批只按统一伤害轴落结构与字段。 **归属**:[锻造工坊](systems/跨局循环/锻造工坊.md) 实装(跨 meta/hero/feats/存档/战斗开场参数五面) @@ -219,7 +219,7 @@ **归属**:[难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md)(P1) -**状态**:待办 +**状态**:**已完成(2026-10-13,迭代 24 卡① N2)**——`skills.tres` 12→14 行:`venom_spit` 毒吐 ×1.6/CD2 挂 (2,5)/(2,6)/(2,7) 巨蜘蛛族、`shield_bash` 盾击 ×1.7/CD3 挂 (3,0)/(3,5)/(3,7) 灰矮人族(均无 rider、池权重 2;首遇教学位 (2,4) 池不动);「独占技随关错峰只做在 Boss 侧」缺口补齐为两轨。`expect_pools` 六键契约同步、冒烟 949/0;难度带位移=改前改后同种子配对读数(perfect L2 通关 8→13/20 · 全通 6→10/20,方向符合预期、量级低于二档配对判读带,详见迭代 24 实现报告);倍率 provisional 归 M4 数值批 #### 敌方技能图鉴 / 学习呈现 @@ -247,7 +247,7 @@ **归属**:[敌人系统](systems/战斗循环/敌人系统.md)(遭遇表行值与敌种归属)+ [难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md)(难度曲线单调性) -**状态**:待办(**Alpha 阶段需完成**)——**修复方式待裁**:甲 = 即时修(单独开小批,不依赖 M4)/乙 = 归 M4 数值批一并调整/丙 = 先排查定性再定修复方式。呈报方推荐甲(与全局标定是两件事,等 M4 会长期挂账)。连带面已同步 [08-Alpha版本标准](08-Alpha版本标准.md)「二 · 内容量」敌种池行 +**状态**:**已完成(2026-10-13,迭代 24 卡① N1)**——按需求卡片 Q1-Q3 裁定执行:取 **(1,2)**(实查确证的客观崩坏=总量 10→50 的 5 倍墙;「第二个节点」字面指向 (1,1) 的偏差按上文注记处置,(1,1) 不动)、定性换代为「2026-09-24 阶名化解方案实机未达预期,按 2026-10-13 体验反馈重裁」(非配置错误)、修法=**保留 bugbear 只降档** hp 50→22 · armor_class 3→2(其余字段零动;hobgoblin 无立绘故改敌种案否决)。曲线 12/10/22/35/72 相邻比最大 2.2(护栏断言入冒烟 V1,≤2.5);修复方式甲(即时修,不依赖 M4)已兑现——其余行高低归 M4 数值批 **⚠ 措辞更正(2026-10-13 grilling 复核查证,随需求卡片成立一并订正,实现批执行)**:本条现状的**三处异常**中两处须改——①「敌种疑似填错」**定性作废**:`enemy.tres:594-600` 注释载明 (1,2) 的 bugbear 50 血是 **2026-09-24 用户裁决**保留的设计(当时解法=把 (1,3) 改名低一阶的「大地精」,用 DND 阶名化解同族血量倒挂的观感),不是配置错误,本批定性改为「该阶名化解方案在 2026-10-13 实机验证下未达预期,按体验反馈重裁」;②「难度倒挂」一条**撤回**:(1,1) 地精一伙 hp4 按总量算(4×2.5=10)与 (1,0)(8×1.5=12)持平,属群怪「单只薄、数量补」的正常设计。③「第二个节点」字面指向的登记偏差:[playnote](../research/playnote.md):9 原文「第一关的第二个节点数值有问题」,而 `level.tres` 注释明载 L1 前三位恒为纯战斗,按字面计数第二个战斗节点 = **(1,1)** 而非本条登记的 (1,2);本条按实查确证的客观崩坏取 (1,2)(总量 10→50 的 5 倍墙),(1,1) 不动——若原意确为 (1,1) 需重裁。 @@ -261,8 +261,22 @@ **归属**:[敌人系统](systems/战斗循环/敌人系统.md) + [难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md) -**状态**:**已编入**(2026-10-13 用户令编入 **roadmap 迭代 24 卡①**,迭代位预留后续追加卡;卡片已过 grilling 复核与用户卡审,开工门=U0) +**状态**:**已入库收口(2026-10-13,迭代 24 卡① 单会话交付)**——N1 降档/N2 两新行六池/N3 attack_type 轴全落地(master 三提交:26d669f N1+N2 / ab3ba4f N3 / 收口批);冒烟 949/0(基线 938+N1 两断言+N2 五断言+N3 四断言)+run_all 25 套+探针全绿;MC 同种子配对 40 局×both(seed0=9000)位移在册实现报告;收口去向三条(「第一关遭遇表数值异常」「第二关技能池与投放」、锻造工坊条迁移面⑥)已随批销号;残留=实机目检三件(07 ㉓)+GDD 反哺点五条(下条,待用户裁决另批落文) + +#### 迭代 24 敌人表内容修批——GDD 反哺点五条(2026-10-13 随批登记,待用户逐点裁决另批落文) + +**来源**:[迭代 24 实现报告](../qa/iter24-实现报告-2026-10-13.md) §六(设计权威文档零触碰——2026-10-10 立规:文档更新必须经用户同意)。 + +| # | 文档 | 反哺点 | +|---|---|---| +| ① | [敌人系统](systems/战斗循环/敌人系统.md) | 调参表敌人表字段集需增 `attack_type`(枚举域 {normal, pierce, magic}/缺省 normal/消费面=敌方技兑付查矩阵) | +| ② | [敌人系统](systems/战斗循环/敌人系统.md) | 技能池节「三代错峰」口径需扩为「Boss 独占技 + 普通敌错峰」两轨(N2 已补齐普通敌轨) | +| ③ | [敌人系统](systems/战斗循环/敌人系统.md) | 敌种表技能池构成列随 N2 变动(巨蜘蛛族+毒吐、灰矮人族+盾击) | +| ④ | [敌人系统](systems/战斗循环/敌人系统.md) | 「八敌种」表缺 `hobgoblin`(有数据行 (1,3)、无立绘、不在敌种表——登记在案已知缺口,本批未动) | +| ⑤ | [难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md) | N2 投放后 L2/L3 难度带位移(perfect 配对 +20~25pp 在案)+N3 全局平移(重甲 −1/魔法甲 +1/轻甲 0)——数值终值归 M4 | + +**状态**:待用户逐点裁决(另批落文) #### 削弱档位的最终数值 **现状**:削弱取值域 [60,85] 与投值 −65 来自旧体系裁决;"标中旗必须比随便挖一格更值"的当量终值由[战斗结算](systems/战斗循环/战斗结算.md)与[地图战斗资源](systems/战斗循环/地图战斗资源.md)共裁,尚未闭合。**语义侧已定案(2026-09-18 盘问会话,结构修复批落地)**:削弱叠层改续时——同名重复授予只刷新剩余结算数、层数恒 1(结构性消饱和,×2 叠满池触底 ×0 的免伤轮从根杜绝);现行表值为临时值(provisional),duration 终值与当量锚复算归状态层重设计批 diff --git a/design/gdd/07-体验验证清单.md b/design/gdd/07-体验验证清单.md index 42a1cb50..63009601 100644 --- a/design/gdd/07-体验验证清单.md +++ b/design/gdd/07-体验验证清单.md @@ -218,6 +218,13 @@ - **注入抽查**:营地选长枪→开局攻击类型=穿刺(对敌护甲查克制矩阵生效);选重甲→入战 AC=12+路线加值;旧路线练度保留(换回即生效)。 - 验证方式:用户实机目检(本批自动闸外唯一人闸;能力验证半已由自动化闸覆盖=V1-V14)。 +### ㉓ 敌人表内容修批三观测(迭代 24 敌人表内容修批随批登记——2026-10-13) + +- **新招可见性**:第二关与第三关的普通战斗(非 Boss)是否真的见到「第一关没见过」的招式——巨蜘蛛族毒吐((2,5) 起投,首遇位 (2,4) 不投)、灰矮人族盾击((3,0)/(3,5)/(3,7));不是只有 Boss 变花。 +- **甲型体感**:营地选重甲进战斗,挨打是否比选轻甲**可感知地**轻一点(敌方攻击查矩阵 −1);选魔法护甲是否更疼(+1)。 +- **第一关节奏**:第一关第三个节点(熊地精 22 血)不再是「打不动的一堵墙」,推进节奏顺畅。 +- 验证方式:用户实机目检(登记不阻塞——2026-10-12 真人检测立规;能力验证半已由自动化闸覆盖=V1-V7)。 + ## 验收读数重测义务(履行留痕 + 现行义务) **已履行**(按序换代,旧读数各随其批作废留痕不入本单):①验收读数重测批(2026-09-19——Boss 单独出列/承伤带/通关率基线全量重测,硬化翻倍期·乏力死效果期·充能期旧读数作废);②迭代 5 基线重测(统一随机流后 MC+verifier 双窗);③**数值修复批新尺重测(2026-10-01)**——模拟档位重构后全量重测,新锚 `sim-data/runsum_numfix_final_n200_20261001.jsonl`,全旧带作废只测不判(numfix 报告(已退役,git 历史可查));④**迭代 10 奖励重构批重锚(2026-10-01)**——四代锚 77000/78000/79000/80000(改前/重构后/共享池后/掷定前置后,各 400 局),普通 L1 41.8%/L2 10.2% 带内(迭代10通关率读数(已退役,git 历史可查));⑤**T19 真人标定局收口(2026-10-03 用户裁)**——有效局 2(1 通关 1 死于 L3 首战,T19真人试玩读数(已退役,git 历史可查)),用户裁定**佐证级收口不再补局**;k 预期带同日立(**正常 >0.5、预警 <0.3**),字段随 81000 重锚入库后补算终值。 @@ -236,3 +243,4 @@ | v0.4 | 2026-10-09 | **文档正确性审查批·独立复核(worktree docaudit-2026-10-09)**:①三处「链接语法但目标非路径」伪死链去链接改纯文本(numfix 报告/迭代10通关率读数/T19真人试玩读数——三份读数均已退役,git 历史可查口径不变);②「难度修正批」批次名全替「数值批(Beta 阶段,未排期)」——与 06 现行归属称呼对齐(同批=M4 数值批需求卡片,未排期态不变) | | v0.5 | 2026-10-10 | 生涯页呈现行柜台名扫改(2026-10-10 天赋树设计会话裁「道具工坊」改名「秘宝匣」):「道具工坊已解锁 X/6 件」改「秘宝匣已解锁 X/6 件」;计数语义(旧六件→新目录)随实装批换代,见 06「天赋树结构重构批」改名连带面 | | v0.6 | 2026-10-12 | 新增 ㉒ 锻造工坊工作间形态与购买交互目检节(迭代 23 锻造工坊实装批随批登记——V13 人闸观测项:门与形态/购买/解锁双通道/选中与锁死/注入抽查) | +| v0.7 | 2026-10-13 | 新增 ㉓ 敌人表内容修批三观测目检节(迭代 24 卡①随批登记:新招可见性/甲型体感/第一关节奏——登记不阻塞按 2026-10-12 真人检测立规) | diff --git a/design/gdd/08-Alpha版本标准.md b/design/gdd/08-Alpha版本标准.md new file mode 100644 index 00000000..828caa10 --- /dev/null +++ b/design/gdd/08-Alpha版本标准.md @@ -0,0 +1,224 @@ +# Alpha 版本标准 + +> **一句话定位**:本文定义这个项目的 **Alpha 版本包含哪些东西**——它是里程碑 M3 的完成标准,也是判断"还差什么"的对照表。 +> **本文只列条目,不写内容**:每样东西是什么、规则怎么走,一律归各自的权威文档,本文只给指路链接。想知道某样东西的定义,请点链接,不要在本文里找解释。 +> **状态**:**已定稿(v1.2)**——2026-10-13 用户令定稿(v1.0),同日按用户裁决增补界面美化八条、升版 v1.1;同日迭代 24 卡①机械面摘除敌种池待修行注、升版 v1.2(见文末版本历史)。Alpha 的内容范围自此冻结:增删条目一律须经用户裁决,并记入文末版本历史。 +> **成文**:2026-10-13。 + +## 本文怎么用 + +- 想知道 Alpha 该有什么 → 读下面各节的表。 +- 想知道还差什么 → 看每个表的「现状」列。 +- 想知道哪些还没定 → 读最后一节「未决项」。 +- **Alpha 完成的判据**:本文所有条目的现状都是「在役」,且「未决项」一节为空。 + +现状一列的取值只有三种:**在役**(已实装可玩)、**待做**(已定要进 Alpha、尚未实装)、**待裁**(要不要进 Alpha 还没定,见「未决项」)。 + +--- + +## 一、系统 + +四个循环下的全部子系统。分界与职责见 [02-系统清单](02-系统清单.md),本文不重复。 + +### 排雷循环 + +| 条目 | 事实源 | 现状 | +|---|---|---| +| 棋盘生成 | [棋盘生成](systems/排雷循环/棋盘生成.md) | 在役 | +| 排雷玩法 | [排雷玩法](systems/排雷循环/排雷玩法.md) | 在役 | +| 行动经济 | [行动经济](systems/排雷循环/行动经济.md) | 在役 | +| 地形变异(六类型) | [地形变异](systems/排雷循环/地形变异.md) | 在役 | + +### 战斗循环 + +| 条目 | 事实源 | 现状 | +|---|---|---| +| 战斗结算 | [战斗结算](systems/战斗循环/战斗结算.md) | 在役 | +| 敌人系统 | [敌人系统](systems/战斗循环/敌人系统.md) | 在役 | +| 增益状态 | [增益状态](systems/战斗循环/增益状态.md) | 在役 | +| 地图战斗资源(格面资源) | [地图战斗资源](systems/战斗循环/地图战斗资源.md) | 在役 | +| 战斗表现(动画与演出) | [战斗表现](systems/战斗循环/战斗表现.md) | 待裁 | + +### 冒险循环 + +| 条目 | 事实源 | 现状 | +|---|---|---| +| 冒险结构 | [冒险结构](systems/冒险循环/冒险结构.md) | 在役 | +| 关卡节点地图 | [关卡节点地图](systems/冒险循环/关卡节点地图.md) | 在役(待重构,见下一条) | +| 关卡节点图重构(增加可选节点) | [关卡节点地图](systems/冒险循环/关卡节点地图.md) | 待做(须先做文档设计,不可直接开发) | +| 关卡节点图生成 | [关卡节点图生成](systems/冒险循环/关卡节点图生成.md) | 在役 | +| 难度曲线与 Boss | [难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md) | 在役 | +| 奇物 | [奇物](systems/冒险循环/奇物.md) | 在役 | + +### 跨局循环 + +| 条目 | 事实源 | 现状 | +|---|---|---| +| 元进度 | [元进度](systems/跨局循环/元进度.md) | 在役 | +| 天赋树 | [天赋树](systems/跨局循环/天赋树.md) | 在役 | +| 秘宝 | [秘宝](systems/跨局循环/秘宝.md) | 在役 | +| 锻造工坊 | [锻造工坊](systems/跨局循环/锻造工坊.md) | 待做 | +| 生涯 | [生涯](systems/跨局循环/生涯.md) | 在役(期一;期二、期三待裁) | + +### 表现与支撑 + +| 条目 | 事实源 | 现状 | +|---|---|---| +| HUD 框架 | [HUD框架](systems/表现与支撑/HUD框架.md) | 在役 | +| 数据配置 | [数据配置](systems/表现与支撑/数据配置.md) | 在役 | +| 存档序列化 | [存档序列化](systems/表现与支撑/存档序列化.md) | 在役 | +| 设置 | [设置与本地化](systems/表现与支撑/设置与本地化.md) | 在役(最小设置面) | + +--- + +## 二、内容量 + +具体种数、行数与面值一律不在此抄录,以数据表与 registry 为准(体例见 [03-内容规模](03-内容规模.md))。 + +| 条目 | 事实源 | 现状 | +|---|---|---| +| 三关(地精洞窟 / 幽暗地域 / 灰矮人矿城) | `level.tres` | 在役 | +| 敌种池(含三个 Boss) | `enemy.tres` | 在役 | +| 敌人技能池 | `skills.tres` | 在役 | +| 棋盘按关配置尺寸 | `board_gen.tres` | 在役 | +| 地形变异六类型 | `variation.tres` | 在役 | +| 格面资源九型 × 正负 | `reward.tres` | 在役 | +| 状态表 | `status_effects.tres` | 在役 | +| 奇物池(专长 / 属性值提升 / 资源) | `feats.tres`、`adventure.tres` | 在役 | +| 秘宝目录 | `treasure_items.tres` | 在役 | +| 商店配置 | `shop.tres` | 在役 | +| 元进度配置 | `meta.tres` | 在役 | +| 天赋树节点集 | `meta_tree.tres` | 在役 | +| 锻造工坊路线行族 | `meta_forge.tres` | 待做 | +| 混编遭遇行集 | `enemy.tres` | 在役(首批;第二批待做) | +| 第四关 | —— | 待裁 | + +--- + +## 三、界面 + +| 条目 | 事实源 | 现状 | +|---|---|---| +| 主菜单 | —— | 在役 | +| 开始覆盖层 | —— | 在役 | +| 营地(天赋树 / 锻造工坊 / 秘宝匣 / 图鉴) | [camp](ux/camp.md) | 在役(锻造工坊柜台为占位面板) | +| 生涯页 | [生涯](systems/跨局循环/生涯.md) | 在役(期一) | +| 关卡地图屏 | [level-map](ux/level-map.md) | 在役 | +| 战斗屏 | [battle](ux/battle.md) | 在役 | +| 战斗结算总结框 | [settlement-summary](ux/settlement-summary.md) | 在役 | +| 关卡结算屏 | [level-clear](ux/level-clear.md) | 在役 | +| 三选一(奖励节点 / 通关) | [node-reward](ux/node-reward.md) | 在役 | +| 商店 | [shop](ux/shop.md) | 在役 | +| 暂停层 | —— | 在役 | +| 冒险终局面板 | —— | 在役 | +| 图例面板 | —— | 在役 | +| 设置面 | [设置与本地化](systems/表现与支撑/设置与本地化.md) | 在役 | +| 调试浮窗 | —— | 在役 | +| UI 全局主题资源(引擎原生控件接管皮肤) | [06-待办清单](06-待办清单.md) | 待做 | +| UI 按钮状态矩阵(悬停 / 按下 / 禁用 / 键盘焦点补齐) | [06-待办清单](06-待办清单.md) | 待做 | + +--- + +## 四、工程与质量 + +| 条目 | 事实源 | 现状 | +|---|---|---| +| 存档与版本迁移 | [存档序列化](systems/表现与支撑/存档序列化.md) | 在役 | +| 冒险中断续玩断点 | [存档序列化](systems/表现与支撑/存档序列化.md) | 在役 | +| 冒烟套件 | `game/tests/` | 在役 | +| 单元测试套件 | `game/tests/` | 在役 | +| 界面探针 | `tools/probe_gate.sh` | 在役 | +| 渲染闸(截图与黄金图比对) | `tools/render_gate.sh` | 在役 | +| 机器可读的呈现断言(对比度 / 结构) | `game/tests/` | 在役 | +| 分辨率两档(1280×800 / 1920×1080) | [HUD框架](systems/表现与支撑/HUD框架.md) | 在役 | +| 绘制调用数达标 | —— | 在役 | +| 数值统一标定 | [06-待办清单](06-待办清单.md) | 待裁 | +| 真人试玩轮次 | [07-体验验证清单](07-体验验证清单.md) | 在役(义务维持;当前轮次未清) | + +--- + +## 五、表现 + +| 条目 | 事实源 | 现状 | +|---|---|---| +| 像素美术风格与色板 | [美术圣经](../art/art-bible.md) | 在役 | +| 棋盘瓦片与格面资源图标 | [美术圣经](../art/art-bible.md) | 在役 | +| 棋盘观感(第二 / 三关亮度与对比度) | [06-待办清单](06-待办清单.md) | 待做 | +| 立绘清晰度回退评估(是否改用高清图) | [角色设计](../art/character-design.md) | 待裁 | +| 敌人立绘(全敌种) | [角色设计](../art/character-design.md) | 在役 | +| 主角立绘三态 | [角色设计](../art/character-design.md) | 在役 | +| 状态图标 | [美术圣经](../art/art-bible.md) | 在役 | +| 战斗演出链(弹道 / 受击 / 血条 / 灰化) | [战斗表现](systems/战斗循环/战斗表现.md) | 在役 | +| 逐行结算排播 | [settlement-summary](ux/settlement-summary.md) | 在役 | +| 减动效开关 | [设置与本地化](systems/表现与支撑/设置与本地化.md) | 在役 | +| 站桩帧动画 | [06-待办清单](06-待办清单.md) | 待裁 | +| 素材升档重产 | [06-待办清单](06-待办清单.md) | 待裁 | +| 全局纹理过滤设为邻近采样 | [06-待办清单](06-待办清单.md) | 待做 | +| UI 贴图重构批(营地与元进度件出终稿) | [美术资产清单](../art/art-assets-checklist.md) | 待做 | +| UI 字体补完(拉丁像素字专件 + 字重两档) | [美术圣经](../art/art-bible.md) §7.4 | 待做 | +| 战斗一屏样张(界面美术的终稿闸) | [美术圣经](../art/art-bible.md) §1.4 | 待做 | +| UI 氛围层与九宫格切片观感修 | [06-待办清单](06-待办清单.md) | 待做 | +| UI 元素细节修(滑轨填充 / 图标垫块 / 留白 / 开发件外泄) | [06-待办清单](06-待办清单.md) | 待做 | + +--- + +## 六、Alpha 不含 + +下面这些明确不进 Alpha,写在这里防止回潮。逐条的理由见 [05-不做清单](05-不做清单.md) 与 [06-待办清单](06-待办清单.md)。 + +**与游戏内容无关的三项**(2026-10-13 用户裁:一律排 Beta)——它们不影响核心循环是否成立,缺了照样能联调、能通关,属打磨层: + +| 条目 | 理由出处 | +|---|---| +| 音频(音乐与音效) | 排 Beta(用户 2026-10-13 裁:与游戏内容无关);现行零音频资源、零播放代码 | +| 教学引导(含教学引导面) | 排 Beta([06-待办清单](06-待办清单.md) 教学引导节,2026-10-04 用户裁改排 Beta;2026-10-13 再确认) | +| 多语言本地化 | 排 Beta(用户 2026-10-13 裁:与游戏内容无关);Alpha 只做最小设置面,不做多语言 | + +**其余不进 Alpha 项**: + +| 条目 | 理由出处 | +|---|---| +| 雾格 / 战争迷雾类机制 | [05-不做清单](05-不做清单.md) | +| 多人 / 在线要素 | [05-不做清单](05-不做清单.md) | +| 重叙事(长篇文本与剧情演出) | [05-不做清单](05-不做清单.md) | +| 即时操作玩法 | [05-不做清单](05-不做清单.md) | +| chord(双击快开) | [05-不做清单](05-不做清单.md) | +| 旗做成背包道具或限量 | [05-不做清单](05-不做清单.md) | +| 抽象货币 / 中间资源折算 | [05-不做清单](05-不做清单.md) | +| 多波战斗 | [05-不做清单](05-不做清单.md) | +| 遗物式构筑协同 | [05-不做清单](05-不做清单.md) | +| 战后自动回复 | [05-不做清单](05-不做清单.md) | +| 反雪球机制 | [05-不做清单](05-不做清单.md) | +| 键盘 / 手柄输入 | [06-待办清单](06-待办清单.md)(排期归 Beta) | +| 连刷 / 换图资金跨战斗携带 | [05-不做清单](05-不做清单.md) | +| 战斗节点地图类型差异化(更多地图主题) | 排 Beta 版本([playnote](../research/playnote.md),2026-10-13 裁) | + +--- + +## 七、未决项 + +下面这些**要不要进 Alpha 还没定**,按上面的表逐条对应。每一项都需要用户裁定「进 / 不进 / 换成什么」,裁定后填回对应表格的现状列,本节的该行随即删除。 + +| # | 未决项 | 出现在 | +|---|---|---| +| 1 | 战斗表现(动画与演出)算不算已经达标 | 一 · 战斗循环 | +| 2 | 生涯页期二(历史冒险回看)与期三(图鉴承接)进不进 Alpha | 一 · 跨局循环 | +| 3 | 数值统一标定是不是 Alpha 的完成条件 | 四 · 工程与质量 | +| 4 | 第四关进不进 Alpha | 二 · 内容量 | +| 5 | 混编遭遇第二批(Boss 多行)进不进 Alpha | 二 · 内容量 | +| 6 | 站桩帧动画进不进 Alpha | 五 · 表现 | +| 7 | 素材升档重产进不进 Alpha | 五 · 表现 | +| 8 | 立绘清晰度回退评估——改回高清图,还是维持像素风定档 | 五 · 表现 | + +--- + +## 版本历史 + +| 版本 | 日期 | 改动 | +|---|---|---| +| v0.1 | 2026-10-13 | 首版成文:立 Alpha 版本的内容清单(系统 / 内容量 / 界面 / 工程与质量 / 表现五节 + 不含清单 + 未决项十项)。本文只列条目不写内容,定义一律指路各权威文档 | +| v0.2 | 2026-10-13 | **playnote 五条想法的归属裁定随批**(用户逐条裁):①「关卡节点图展示优化」经用户定性为**重构**(可选节点太少)→ 冒险循环表新增「关卡节点图重构(增加可选节点)」行,标**待做(须先做文档设计,不可直接开发)**,同步登记 06 待办;②「第二 / 三关棋盘亮度对比度」→ 表现表新增「棋盘观感」行,标待做(用户确认标准里已覆盖,此行是把它显式化);③「立绘改回高清图」→ 表现表新增「立绘清晰度回退评估」行,标待裁(与现行像素风定档存在方向冲突,入未决项);④「战斗节点地图类型差异化(更多地图主题)」→ 用户裁**排 Beta**,移入「六 · Alpha 不含」节。未决项十项增为十一项 | +| v0.3 | 2026-10-13 | **五条全部登记 06 待办并标注阶段归属(用户令)**:P1 关卡节点图重构标「Alpha 阶段需完成 · 设计讨论先行」;P2 棋盘观感标「Alpha 阶段需完成 · 开工前过素材轴/UI 轴定性人闸」;P3 第一关遭遇表数值异常标「Alpha 阶段需完成 · 修复方式待裁(甲即时修/乙归 M4/丙先排查)」,本表敌种池行随带待修注;P4 立绘清晰度回退评估标「Alpha 阶段需完成 · 方向待裁」,拆出已兑现的大小比例子问题与未决的回退高清子问题;P5 战斗节点地图类型差异化标「Beta 阶段,Alpha 不做」 | +| v1.0 | 2026-10-13 | **定稿(用户令)**:① **与游戏内容无关的三项移出 Alpha**——音频 / 教学引导(含教学引导面)/ 多语言本地化一律排 Beta,自「一 · 表现与支撑」「三 · 界面」「五 · 表现」三表摘除,移入「六 · Alpha 不含」并单列为一组;判据 = 缺了照样能联调、能通关,属打磨层;② 未决项十一项减为**八项**(删音频 / 教学引导 / 本地化三条,余项重编号);③ 文首加状态行 = **已定稿**,Alpha 内容范围自此冻结,增删须经用户裁决并记版本历史 | +| v1.1 | 2026-10-13 | **界面美化三层诊断入 Alpha 标准(用户令)**:用户同日提出界面美化需求并要求先作现状分析,随后下令「把分析出的三层全部作为独立待办事项登记、且一律列为 Alpha 阶段必须完成」。据此新增八行——「三 · 界面」表两行(UI 全局主题资源、UI 按钮状态矩阵),「五 · 表现」表六行(全局纹理过滤、UI 贴图重构批、UI 字体补完、战斗一屏样张、UI 氛围层与九宫格切片观感修、UI 元素细节修)。八行的登记事实源统一为 [06-待办清单](06-待办清单.md) 同批新增的八条专条;其中「UI 贴图重构批」「UI 字体补完」「战斗一屏样张」三条原先只登记在美术侧的资产清单与素材状态清单里,本次转立本清单以免两处各写一份内容。用户同时指定**先动第一层**,即主题资源 / 按钮状态矩阵 / 全局纹理过滤三项(均属纯工程补齐、不依赖美术素材)。本次改动未触碰既有的未决项八项与「六 · Alpha 不含」清单 | +| v1.2 | 2026-10-13 | **敌种池行注摘除(迭代 24 卡①机械面随批)**:「二 · 内容量」敌种池行的「第一关遭遇表数值待修」注摘除——该异常已随迭代 24 N1 修复((1,2) 降档 hp 22/ac 2,06 对应条已销号),本行回归「在役」净态;条目集合零增删,未决项与「六 · Alpha 不含」零触碰 | diff --git a/design/qa/iter24-实现报告-2026-10-13.md b/design/qa/iter24-实现报告-2026-10-13.md new file mode 100644 index 00000000..02a1188d --- /dev/null +++ b/design/qa/iter24-实现报告-2026-10-13.md @@ -0,0 +1,86 @@ +# 迭代 24 实现报告——敌人表内容修批(三关) + +> 日期:2026-10-13 | 迭代:24(M3=Alpha 完整实现面)| 开工令:/goal + iter 技能 U0(用户目标=使用 iter 技能完成迭代 24 开发) +> 需求卡片:`design/research/需求卡片-敌人表内容修批-2026-10-13.md`(v1.1,Q1–Q9 已全裁、零待裁点,开工门=U0) +> Worktree:`g-plan2-iter24-enemy`(分支 iter24-enemy,基点 ecff832)| 批内提交:定义 0c083bb(b89c3fe worktree 舞步合回)+ N1+N2 `26d669f` + N3 `ab3ba4f` + 文档同步面 `5f2ef77` + 收口笔 +> 状态:**✅ 已全批入库(单会话交付)**——四闸全绿+重闸全绿;残留人闸=实机目检三观测(07 ㉓,登记不阻塞);代拍板追认单+GDD 反哺点待用户 + +## 一、开工检查结论(第 2 步) + +- **门**:迭代 23 出口 ✅(已入库)+ 开工门=U0——本会话 /goal 调用即 U0,门解。 +- **待裁点**:卡片 v1.1 零待裁点(Q1–Q9 于 2026-10-13 grilling 复核后用户令「按推荐方式」全裁)。 +- **验收清单**:V1–V7 逐条三要素(测什么/怎么测/谁验)齐;V2/V6(MC 配对)随批执行、V7 为回归闸、目检三件登记 07 不阻塞。 +- **自洽扫描**:零冲突——卡片 §2 现状考证逐处 file:line 对现行代码核实全命中((1,2) 行值/594-600 裁决注释/:527 轴未开注/enemy_table:110-113 校验/unit_container:119-120 快照/orchestrator:1406 第 9 参/damage_controller:187 matchup/smoke:3211 expect_pools 20 键/skill_table:19 rider 域)。 +- **基线复读记档(L2 呈报)**:冒烟 938/0 + run_all **25 套** + probe --click 全绿。⚠ 卡片/roadmap 记「run_all 24 套」系 485 R1 机制位批(29b08d4,tree_requires_level_test 入 run_all 24→25)落库前旧数——属基线漂移非卡片失真,本批按现行 25 套作闸。 +- **T0 定义入库**:roadmap + 06 + 需求卡片三件,主区守卫拦 commit(豁免文件也拦提交坑再证)→ worktree `b89c3fe` 提交 `--no-ff` 合回 master `0c083bb`。 + +## 二、任务卡状态(卡片 T0–T3) + +| 卡 | 状态 | 交付要点 | 提交 | +|---|---|---|---| +| T0 · N1 (1,2) 降档 | ✅ | `enemy.tres` (1,2) 行 `hp` 50→22、`armor_class` 3→2(其余字段零动);表尾批注载裁决沿革(2026-09-24 阶名化解方案实机未达预期,按 2026-10-13 体验反馈重裁——非配置错误);曲线 12/10/22/35/72 相邻比最大 2.2 ≤ 2.5;`expect_pools` 零改动(键值均不变);V1 两断言(降档锚定防顺手改多 + 相邻总量比护栏) | 26d669f | +| T1 · N2 两新行六池 | ✅ | `skills.tres` 12→14 行:`venom_spit` 毒吐 ×1.6/CD2、`shield_bash` 盾击 ×1.7/CD3(均无 rider——L2/L3 atk 1–3 下 floor(atk×r) 恒被 damage_floor 兜成 1,与 0.75 档等效白占字段);六池投放(蜘蛛 (2,5)/(2,6)/(2,7)+毒吐 2、灰矮人 (3,0)/(3,7)/(3,5)+盾击 2);首遇位 (2,4) 池不动;`expect_pools` 六键同步+断言文案换代;逐池纪律复查(恰一普攻/增益≤1/妨害≤1——巨蜘蛛族增益仍仅 charge、灰矮人族 (3,5) 无增益、两族妨害 0);V3/V4 五断言;旧「技能表十二行」断言换代十四行(换代批旧断言退役规) | 26d669f | +| T2 · N3 攻击类型轴 | ✅ | `enemy.tres` 20 行各加 `"attack_type": "normal"`(挂敌种行、与 armor_type 同位)+表尾批注;`enemy_table.gd` ATTACK_TYPES 闭集 {normal, pierce, magic}+validate 枚举校验(可省略缺省 normal 向后兼容——armor_type 同款);`unit_container.gd` 敌方快照 +`attack_type`;`battle_orchestrator.gd` 敌方伤害开单第 9 参 `""`→`String(u.get("attack_type", "normal"))`;**`damage_controller.gd` 敌方兑付路径补克制消费一行**(详见 §四 追认单 #6——卡片 §2 事实漏项,V5 矩阵命中证词强制);单据载荷 +`attack_type` 键;V5 四断言 | ab3ba4f | +| T3 · 读数/文档/全闸 | ✅ | 改前/改后同种子 MC 配对 40 局×both(§三);文档同步面五件(06 三条销号+卡片条收口 / 08 行注摘除 v1.2 / 07 ㉓ 登记 / registry 三处 / Alpha未完成事项梳理三注订正);批末重闸全绿(§五)+本报告 | 5f2ef77 + 收口笔 | + +## 三、MC 配对读数(V2/V6——三组,同种子 seed0=9000 沿用迭代 23 配对种子) + +采集:`adventure_monte_carlo.gd -- 20 9000 both min`(二档·每档 ≤20、批合计 40 局×改前+改后;改前锚落盘 `sim-data/runsum_iter24_pre_n40both_20261013.jsonl`、改后锚 `runsum_iter24_post_n40both_20261013.jsonl`——锚留盘作分析缓存)。读数=逐种子配对,不设自动阈值(卡片 T3.1): + +| 组 | 指标 | 改前 → 改后 | 判读 | +|---|---|---|---| +| **N1** | perfect L1 通关率 | 19/20 → 20/20 | 5 倍墙消除方向符合预期 | +| **N1** | normal L1 通关率 | 3/20 → 2/20 | ±1 局种子噪声(低基率),逐局承伤多数下行 | +| **N2** | perfect L2 通关 | 8/20 → 13/20(+25pp) | 方向符合预期(新招加压+L1 减压后更健康抵达 L2);量级低于二档配对判读带 ~30pp——**L2 记录继续不回调**,倍率 provisional 归 M4 | +| **N2** | perfect L3 全通 | 6/20 → 10/20(+20pp) | 同上 | +| **N2** | normal L2/L3 通关 | 0/20 → 0/20 | normal 档基率地板,无判读力(读数换档记验证记录) | +| **N3** | taken 中位(normal) | 29.5 → 27.5 | 单发位移经 V5 冒烟实测恰 ±1(heavy 2==light 3−1 · ward 4==light 3+1);全局中位小幅下行=轻甲基线 0 修正+承伤构成微移,无第二落点迹象 | +| **N3** | taken 中位(perfect) | 76.5 → 97.0 | **构成效应**——通关更深(全通 6→10)自然累计更多承伤,非单发异常(V5 单发恒 ±1 已钉死);卡片 L3 红线(非 ±1 量级位移=停机)核销 | + +## 四、代拍板追认单(卡片 §9 白名单五项+批内代决三项,待用户追认) + +1. **两新行命名形态**:`venom_spit`/毒吐、`shield_bash`/盾击——小写下划线+中文双字,与既有 12 行同风(白名单 1 预授权)。 +2. **schema/快照写法**:ATTACK_TYPES 常量+validate+快照缺省回退,沿用 armor_type 同款(白名单 2 预授权)。 +3. **MC 种子**:seed0=9000 沿用迭代 23 配对种子(白名单 3「既有基线种子」);锚文件落 `sim-data/` 按现行命名惯例。 +4. **atk_min/atk_max 微调**:未触发(白名单 4——(1,2) 现值 0-2 无需连带)。 +5. **expect_pools 写法**:保持既有字典风(白名单 5)。 +6. **⚠ 卡片 §2 事实漏项——敌方克制消费点**:卡片列的四处代码触点(表列/schema/快照/第 9 参)只完成「轴开列+传值」,但 `damage_controller._resolve_enemy_skill` 的克制点数**硬编码 delta 0**(2026-09-24 伤害管线单据化批注释明载「克制恒中性(敌打主角无甲轴)」)——不改此行则卡片自己的 V5「实测受伤点数 == 基线 −1(矩阵命中证词,不是查表存在性证词)」物理不可达、Q9「全局平移」落空。随批补一行消费(`cdelta = _counter_delta(t.attack_type, hero.armor_type)`,写法与 hero_attack 路径同款)+头注两处换代+单据载荷补 attack_type 键。**属验收闸强制的最小补点,非设计变更**——请用户追认。 +7. **旧断言换代**:`smoke_all.gd`「技能表十二行」断言随 N2 换代为十四行(2026-10-11 换代规:旧验证约束随实现删除,防冒烟假红)。 +8. **08 与 Alpha未完成事项梳理两 untracked 件随批入库**:两件系并行会话未跟踪件(禁碰前科在案),本批按卡片 §5 机械面义务编辑——以主区最新内容为底拷入 worktree 改后提交,主区旧副本随 merge 消解(超集保全舞步);08 升 v1.2 记版本历史、梳理件三处加注订正均不删原文。 + +## 五、验证闸总账(批末重闸) + +| 闸 | 结果 | +|---|---| +| 冒烟(run_smoke 三闸) | **949 项检查 0 项失败**(基线 938/0 + 本批 11 断言:N1×2/N2×5/N3×4;素材补拷后复跑同读数) | +| 单元(run_all) | **25 套全绿**(基线漂移 24→25 系 485 批,见 §一) | +| 探针(probe_gate) | **--click + --full 全绿、残留 Godot=0** | +| render_gate | **全绿**——golden 三屏 changed=0.00%(首跑 SKIP 抓出 worktree 漏拷 art 实体——初拷命令链因 .godot 路径错误短路,仅 .import 边车到位;补拷后 golden 0.00%,冒烟/单测/探针 --full 同批复跑留痕) | +| MC 同种子配对 | §三(二档 40 局×both,批合计 ~8 分钟在 20 分钟会话累计内) | +| doc 三闸 | **对基线零新增**——死链 3(数据配置/元进度/天赋树,存量同款)/ 拔旗 1(06:89 存量)/ 雾格 1(08:181 不做清单指路行,主区基线已含)/ gdd_lint 3 件 FAIL 均存量同款(06/07 表格占比、术语表 R10 v1.2 重复系并行批次遗产) | +| 熵增闸(repo_structure_audit) | **PASS**(四查全过) | + +## 六、GDD 反哺点(设计权威文档零触碰,待用户逐点裁决后另批落文) + +| # | 文档 | 反哺点 | +|---|---|---| +| ① | 敌人系统.md | 调参表敌人表字段集需增 `attack_type`(枚举域/缺省 normal/消费面) | +| ② | 敌人系统.md | 技能池节「三代错峰」口径需扩为「Boss 独占技 + 普通敌错峰」两轨(N2 已补齐普通敌轨) | +| ③ | 敌人系统.md | 敌种表技能池构成列随 N2 变动(巨蜘蛛族+毒吐、灰矮人族+盾击) | +| ④ | 敌人系统.md | 「八敌种」表缺 `hobgoblin`(有数据行 (1,3)、无立绘、不在敌种表——登记在案的已知缺口,本批未动) | +| ⑤ | 难度曲线与Boss.md | N2 投放后 L2/L3 难度带位移(perfect +20~25pp 配对读数在案);N3 全局平移(重甲 −1/魔法甲 +1/轻甲 0)——数值终值归 M4 | + +以上五条已同步登记 `06-待办清单.md`(反哺点节),另批落文。 + +## 七、实机目检总清单(登记 07 ㉓——登记不阻塞,2026-10-12 真人检测立规) + +1. **新招可见性**:L2/L3 普通战斗见到「第一关没见过」的招式(巨蜘蛛毒吐自 (2,5) 起、灰矮人盾击三行——首遇位 (2,4) 不投)。 +2. **甲型体感**:选重甲挨打比轻甲可感知更轻(−1)、选魔法护甲更疼(+1)。 +3. **第一关节奏**:第三节点(熊地精 22 血)不再是「打不动的一堵墙」。 + +## 八、残留与去向 + +- 残留人闸:仅 07 ㉓ 实机目检三件(登记不阻塞)。 +- (1,1)「第二个节点」字面偏差:已按卡片 Q1 落 06 订正注——若用户原意确为 (1,1),N1 需重裁后重开(本批不动 (1,1))。 +- M4 数值批若重标 (1,2) 血量,本批 22 会被覆盖——预期内(卡片残留风险节)。 +- 三条 06 销号完成:「第一关遭遇表数值异常」「第二关技能池与投放」、锻造工坊条迁移面⑥。 diff --git a/design/registry/entities.yaml b/design/registry/entities.yaml index 8aa8b587..66c91c91 100644 --- a/design/registry/entities.yaml +++ b/design/registry/entities.yaml @@ -299,6 +299,7 @@ entities: unit_count_max: int [unit_count, 3] 可省略(2026-09-14 难度曲线与Boss 修订批新增——遭遇区间上界;缺省 = 定值,旧行零迁移) atk_min/atk_max: 可选配对 int [0,999](2026-09-14 敌方攻击区间批——上阶/下阶区间随机;缺省 = 定值行向后兼容;跨字段:必成对 · **atk = floor((min+max)/2) 向下取整中点锚**〔2026-09-18 与切片 schema 校验式对齐——int 截断,奇数和区间(如 1+2)取下半,期望当量微偏下界为现行口径〕;roll 时机 = 遭遇骰同流〔encounter 恰一 scope,数量骰先、atk 骰后〕spawn 期**整战持久**〔每拍抖动否决——数字可读性锚〕,战斗结算.begin_battle roll → 敌人系统.spawn enemy_atk_override 收确定值〔敌人系统 零随机纪律保持〕;MVP 六行 ±3 provisional 归 难度曲线与Boss;验收 = 完美策略档 0 加成通关 ≤40%〔OQ7〕;接口漂移 = 敌人系统.spawn 签名 +1 参数〔正式侧 GDD/registry 修订批随 ADR-0009 同批〕) armor_type: enum {light, ward, heavy} 缺省 light(2026-09-14 护甲克制批转正登记——攻击类型 × 护甲克制,克制矩阵 = settlement_table.armor_effectiveness〔三档加法修正 克制 +1/中性 0/被克 −1,点数读表——2026-09-18 加法核换装批:百分比量纲退役,消费面 = 主角侧〕;MVP 映射 goblin=light / bugbear=ward / ogre_chief=heavy;**2026-09-15 命名统一批:原 enum {none, a, b} 为位置键(无语义、且"无甲/甲A/甲B"在文档间已分裂成四种写法),改 {light, ward, heavy} = 轻甲 / 魔法护甲 / 重甲**;数值 provisional 归 难度曲线与Boss) + attack_type: enum {normal, pierce, magic} 缺省 normal(**迭代 24 N3 2026-10-13 轴开列——敌方攻击类型轴**,承接锻造工坊实装批迁移面⑥;消费面 = 伤害控制器敌方技兑付 `_counter_delta(t.attack_type, 主角护甲)`,开单第 9 参由单位快照传值;现行 20 行全填 normal 不做差异化——全局平移主角受伤点数:穿重甲 −1 / 魔法护甲 +1 / 轻甲 0(同种子三甲型配对实测在案);差异化填值(pierce/magic)属新设计另立项) armor_class: int [0,999] 缺省 0(**2026-09-15 护甲等级批新增,2026-09-16 定稿落地**——防守方护甲等级,主角普通分量 / 敌方技能基础伤害分量的掷点折扣判定读数,掷点与折扣结算归 settlement_table.ac_roll / ac_discount_tiers〔战斗结算〕;**与 armor_type〔克制属性轴 light/ward/heavy〕是两个概念、字段与文档口径不得混用**;三敌种首关行值 0 暂定,正式行值归怪物设定批〔06 清单登记〕) hp: int [1,999](knob——难度修饰前基线;MVP 18 provisional 出处待查) atk: int [0,999](knob——attack 行为伤害基值;MVP 4 provisional 出处待查;0 合法不拒——2026-09-20 八型批去"纯伏击伤敌种"旧注) @@ -321,7 +322,7 @@ entities: max_hp: int [1,999](knob;现行值读 data/tables/hero.tres) atk: int [1,999](**0 = 加载拒绝**——基础攻击恒存在,"0 基线 × 百分比增益恒零"死锁自 schema 层杜绝〔2026-09-11 用户裁决,原"机制开关 MVP=0、激活裁决归 地图战斗资源/战斗结算"作废〕;现行值读 data/tables/hero.tres〔2026-09-17 数值压缩批改型〕;消费面 = 主角战斗段先手攻击——战斗结算 GDD 2026-09-11 增补) armor_class: int [0,999](**2026-09-15 护甲等级批新增,2026-09-16 掷点批定稿落地**——主角作为防守方的护甲等级,敌方攻击拍 / 重击拍基线的掷点折扣判定读数;掷点结算归 settlement_table.ac_roll〔战斗结算〕,与 armor_type〔克制属性轴〕两概念不得混用;现行值读 data/tables/hero.tres〔暂定,调参归 难度曲线与Boss〕) - armor_type: enum {light, ward, heavy}(**2026-09-18 营地扩展前置批新增**——主角护甲类型轴可配置可修改,缺省 light 向后兼容;消费面 = 战斗结算甲效矩阵〔敌方攻击现行不查矩阵——轴休眠是结构性的非数值性的〔2026-09-18 甲效矩阵调参批归因改述,原「恒 normal 档故中性」依赖普通行恒 100 已退役〕,轴生效待敌方技能攻击类型批〕;现行值读 data/tables/hero.tres) + armor_type: enum {light, ward, heavy}(**2026-09-18 营地扩展前置批新增**——主角护甲类型轴可配置可修改,缺省 light 向后兼容;消费面 = 战斗结算甲效矩阵〔敌方攻击自迭代 24 N3 2026-10-13 起随单轴查矩阵——穿重甲受伤 −1/魔法护甲 +1/轻甲 0,全局平移实测在案;原「轴休眠」注随轴开列退役〕;现行值读 data/tables/hero.tres) attack_type: enum {normal, pierce, magic}(**2026-09-18 营地扩展前置批新增**——主角基础攻击量〔atk 量轴〕与攻击类型抽象分离的承载字段:营地永久强化"换成魔法/穿刺攻击" = 改此字段,量轴零改动;消费面 = 战斗结算·战斗段基础分量查甲效矩阵〔原硬编码 normal 退役〕;现行值读 data/tables/hero.tres) rule4_exemption: 单行全局定义表(主角不随关卡自动成长——成长=天赋 元进度/奖励侧;ActionEconomyTable 先例) hp_persistence: 跨战斗 HP 持久性归 关卡节点地图/冒险结构(provisional)——敌人系统 单位接口以初始 hp 入参,不定义冒险内持久性 @@ -342,7 +343,7 @@ entities: buff_ref / buff_duration: 仅增益/妨害技(效果引用 → StatusEffectTable 活行 + 持续回合;悬空引用加载致命;**落点由状态行 target_side 路由**——buff 必须 enemy 侧 / debuff 必须 hero 侧〔施放类 side 守卫 2026-09-19,装载序以 loaded 表显式入参〕;现行 charge→empower / harden→fortify / web_snare→off_guard〔妨害首发,用户拍板〕,buff_duration=2 = 1 个有效增益拍〔先兑付后衰减含施放当轮〕;施放时长由技能行覆盖状态行时长——战斗结算 apply_effect duration_override) pity_threshold: int [1,99] 全局单旋钮(现行值读 data/tables/skills.tres——保底 M:连续 M 拍执行普攻 → 下拍必出特殊技〔特殊技内按权重、不受冷却限制〕;地精类单特殊技低权重池受保底支配) pool_discipline: 每池恰一行普攻 · 每池增益 ≤1 · **每池妨害 ≤1(2026-09-19 新效应词汇批新增)**(config_db.validate_skill_pool_links 加载拒绝——pool_composition / cast_side 两族) - mvp_content: 十二行(2026-10-05 技能池执行批 +3 Boss 半血解锁技〔迭代14④ T5——案甲每 Boss 一行新独占伤害技,provisional 归调参;pool 侧 unlock_hp_pct=50 门槛随 enemy.tres 三 Boss 行〕= quake_smash 震地怒击(damage ×2.5/CD4——ogre_chief 半血解锁)· venom_curb 遏毒(damage ×2.0/CD3——drider 半血解锁)· rockslide 岩崩(damage ×2.5/CD4——duergar_king 半血解锁)) = attack 普通攻击(basic)· lunge 突刺(damage)· charge 蓄力(buff→empower)· heavy 重击(damage)· harden 硬化(buff→fortify,Boss 池独占——增益 ≤1 纪律下旧蓄力拍不进 Boss 池)· bite 撕咬(damage)· venom_burst 毒爆(damage,**2026-09-19 +rider_mult 0.75 必中毒分量**)· web_snare 蛛网束缚(debuff→off_guard,妨害首发——卓尔池独占、实装面收窄仅 L2 Boss)· earth_pulse 大地脉动(debuff→sapped,第二妨害词汇首发——duergar_king 灰矮人石君王池独占,独占性 = 唯一引用 enemy_id: duergar_king,字段口径同 web_snare〔duration 2 = 1 个有效结算〕)——倍率 / 冷却 / 持续等现行值**不列于本 registry**,读 data/tables/skills.tres(bite / venom_burst 2026-09-17 分支节点图批新增,本条 2026-09-18 补收编;venom rider / web_snare 2026-09-19 新效应词汇批新增;earth_pulse 2026-09-20 第三关内容批新增,provisional 归 难度曲线与Boss) + mvp_content: 十四行(**迭代 24 N2 2026-10-13 +2 普通敌错峰技**:venom_spit 毒吐(damage ×1.6/CD2 无 rider——(2,5)/(2,6)/(2,7) 巨蜘蛛族普通敌池,首遇位 (2,4) 不投)· shield_bash 盾击(damage ×1.7/CD3 无 rider——(3,0)/(3,5)/(3,7) 灰矮人族普通敌池;两行均不带 rider——L2/L3 普通敌 atk 1–3 下 floor(atk×r) 恒被 damage_floor 兜成 1 与 0.75 档等效))(2026-10-05 技能池执行批 +3 Boss 半血解锁技〔迭代14④ T5——案甲每 Boss 一行新独占伤害技,provisional 归调参;pool 侧 unlock_hp_pct=50 门槛随 enemy.tres 三 Boss 行〕= quake_smash 震地怒击(damage ×2.5/CD4——ogre_chief 半血解锁)· venom_curb 遏毒(damage ×2.0/CD3——drider 半血解锁)· rockslide 岩崩(damage ×2.5/CD4——duergar_king 半血解锁)) = attack 普通攻击(basic)· lunge 突刺(damage)· charge 蓄力(buff→empower)· heavy 重击(damage)· harden 硬化(buff→fortify,Boss 池独占——增益 ≤1 纪律下旧蓄力拍不进 Boss 池)· bite 撕咬(damage)· venom_burst 毒爆(damage,**2026-09-19 +rider_mult 0.75 必中毒分量**)· web_snare 蛛网束缚(debuff→off_guard,妨害首发——卓尔池独占、实装面收窄仅 L2 Boss)· earth_pulse 大地脉动(debuff→sapped,第二妨害词汇首发——duergar_king 灰矮人石君王池独占,独占性 = 唯一引用 enemy_id: duergar_king,字段口径同 web_snare〔duration 2 = 1 个有效结算〕)——倍率 / 冷却 / 持续等现行值**不列于本 registry**,读 data/tables/skills.tres(bite / venom_burst 2026-09-17 分支节点图批新增,本条 2026-09-18 补收编;venom rider / web_snare 2026-09-19 新效应词汇批新增;earth_pulse 2026-09-20 第三关内容批新增,provisional 归 难度曲线与Boss) referenced_by: [敌人系统, 战斗结算, 难度曲线与Boss, 数据配置] - name: reward_table diff --git a/design/research/Alpha未完成事项梳理-2026-10-13.md b/design/research/Alpha未完成事项梳理-2026-10-13.md new file mode 100644 index 00000000..df69400d --- /dev/null +++ b/design/research/Alpha未完成事项梳理-2026-10-13.md @@ -0,0 +1,514 @@ +# Alpha 版本游戏内容未完成事项梳理(2026-10-13) + +> **性质**:本次 Alpha 版本设计讨论的**输入材料**。梳理源 = [08-Alpha版本标准](../gdd/08-Alpha版本标准.md)(v1.0 定稿)及其指路的全部权威文档(02/03/05/06/07、systems/*、ux/*、art/*)。 +> **范围**:**与游戏内容相关**的未完成事项——玩法机制 / 关卡与剧情 / 角色与敌人配置 / 数值与成长线 / 道具与奖励 / UI 文案 / 美术资源占位 / 任务与成就。 +> **已排除(依 08「六 · Alpha 不含」与用户 2026-10-13 裁定)**:音频、教学引导(含教学引导面)、多语言本地化——判定为「与游戏内容无关」,一律排 Beta;键盘/手柄输入(排期 Beta,属操作层非内容层);纯工程与质量项(测试套件/渲染闸/存档迁移等,08 四节已全标在役)。 +> **口径提示**:06 待办里大量旧文写「已编入 **Alpha 收官** M4 数值批」——那是 2026-10-09 里程碑立规**之前**的写法。现行 **M3=Alpha、M4=Beta**,凡挂 M4 数值批的一律按 **beta** 归,别被旧文「Alpha 收官」字样带偏。 +> **体例**:本文只做**呈报与呈方案**,不改任何权威文档;所有结论待用户裁决后,按 §三 的问题清单逐条回收,再落到需求卡片。 + +--- + +## 〇、前置呈报:08 本身有两行事实漂移(须先订正,否则「还差什么」判据是错的) + +| # | 08 现行文字 | 实态(2026-10-13 核) | 影响 | +|---|---|---|---| +| J1 | 一 · 跨局循环:**锻造工坊 = 待做** | ✅ **已入库**(迭代 23,2026-10-12;实现报告 `design/qa/iter23-实现报告-2026-10-12.md`,合入 `52fdaf6`)。六路线行族在役、两轴所有权已移交、存档 v7 已落、工作间 UI 已实装。**残留 = 人闸**:实机目检工作间形态与购买交互([07](../gdd/07-体验验证清单.md) ㉒) | 08「Alpha 完成判据」里这一行其实已满足,不订正会白做一轮实装 | +| J2 | 二 · 内容量:**锻造工坊路线行族 = `meta_forge.tres` = 待做** | 落表为 **`forge.tres`**(`ForgeTable`,六路线 sword/spear/staff/light/heavy/ward 在役);`meta_forge` 系 2026-10-12 立项时的**选型旧名**,从未落盘(`meta.tres` 的 `forge_products` 行族已随迭代 21 退役) | 表名错误会让后续按图索骥的人找不到表 | + +> J1/J2 属**文档事实订正**,不是设计决策,不进 §三 的待裁清单——建议随本次讨论结论一并订正 08 版本历史。 + +另两条文档面欠账(不属游戏内容,仅登记):`gdd_lint` 表格占比存量 3 件(01/06/07)、`doc_term` 退役术语旗 1 件(06「拔旗回收返 AP」备选条目文字引用)。 + +--- + +## 一、未完成事项清单 + +### 甲组 · 08「Alpha 版本标准」已在册的未完成项(权威,逐条必裁) + +08 的开放面 = **8 项待裁(七 · 未决项)+ 3 项待做**(锻造工坊两行已过期,见 §〇)。 + +| 编号 | 事项 | 所属模块 | 状态 | 来源文档位置 | +|---|---|---|---|---| +| **A1** | 关卡节点图重构(增加可选节点) | 关卡与选路 | **待做**(Alpha;须先做文档设计,不可直接开发) | 08 一 · 冒险循环;[06](../gdd/06-待办清单.md)「关卡节点图重构——可选节点太少」;[关卡节点地图](../gdd/systems/冒险循环/关卡节点地图.md) | +| **A2** | 第一关遭遇表数值异常(难度倒挂 / 敌种疑似填错) | 角色与敌人 | ~~待做~~ → **✅ 已完成(2026-10-13 迭代 24 卡① N1——(1,2) 降档 hp22/ac2,敌种保留;原两处定性作废见该行订正注)** | 06「第一关遭遇表数值异常」;08 二 · 内容量 敌种池行注 | +| **A3** | 棋盘观感——第二 / 三关亮度与对比度 | UI / 美术 | **待做**(Alpha;开工前须过「素材轴 vs UI 轴」定性人闸) | 06「第二 / 三关棋盘观感」;08 五 · 表现 | +| **B1** | 战斗表现(动画与演出)算不算已达标 | 玩法表现 | **待裁**(未决项 1) | 08 一 · 战斗循环 / 七 · #1;[战斗表现](../gdd/systems/战斗循环/战斗表现.md)(全文=范围草案·待设计) | +| **B2** | 生涯页期二(历史冒险回看)与期三(图鉴承接)进不进 Alpha | 跨局内容 | **待裁**(未决项 2) | 08 一 · 跨局循环 / 七 · #2;[生涯](../gdd/systems/跨局循环/生涯.md) §四 | +| **B3** | 数值统一标定是不是 Alpha 的完成条件 | 数值与成长 | **待裁**(未决项 3;= 08 四 · 工程与质量「待裁」) | 08 四 / 七 · #3;06 内挂 M4 的六批条目 | +| **B4** | 第四关进不进 Alpha | 关卡与剧情 | **待裁**(未决项 4);**全库仅 08 两行提及,无任何设计文档与内容承载** | 08 二 · 内容量 / 七 · #4 | +| **B5** | 混编遭遇第二批(Boss 多行)进不进 Alpha | 角色与敌人 | **待裁**(未决项 5) | 08 二 · 内容量 / 七 · #5;[07](../gdd/07-体验验证清单.md) ⑱;[敌人系统](../gdd/systems/战斗循环/敌人系统.md) v0.15 | +| **B6** | 站桩帧动画进不进 Alpha | 美术资源 | **待裁**(未决项 6;重启闸 = Alpha 定版批) | 08 五 · 表现 / 七 · #6;06「站桩帧动画」 | +| **B7** | 素材升档重产进不进 Alpha | 美术资源 | **待裁**(未决项 7;2026-10-04 用户令「暂不做、先忽略」挂起) | 08 五 · 表现 / 七 · #7;06「资产升档重产批」 | +| **B8** | 立绘清晰度回退评估——维持像素风 vs 回退高清图 | 美术资源 | **待裁**(未决项 8;**方向冲突**) | 08 五 · 表现 / 七 · #8;06「立绘清晰度回退评估」;[character-design](../art/character-design.md) §5.2/§5.5 | + +--- + +### 乙组 · 08 未覆盖、自 06 / 07 / 各权威文档梳理出的内容未完成项(呈报,请裁「纳入 / 排 Beta / 注销」) + +#### 乙-1 玩法机制 + +| 编号 | 事项 | 状态 | 来源 | +|---|---|---|---| +| C1 | 格面资源正负兑付倍率差回调(2026-10-01「踩雷必须痛」抬档系错误加难杠杆) | **待确认**(已裁回调,归 M4→beta) | 06「调参批数值点评登记」⑥ | +| C2 | 袋装摇号(格面资源池保底结构备选,现为「摇完整板校验补签」补丁式) | **仅有占位**(正规形态未启用,挂号备查) | 06「袋装摇号」 | +| C3 | 「封锁-蓄力」combo 设计素材(抬高刷新代价 + 刷新解锁全板 / 留 AP 换减伤) | **缺失**(设计素材登记,不立项) | 06「「封锁-蓄力」combo 设计素材」 | +| C4 | 冒险前资源配比预设(九型格面权重配比,八项裁决全冻结) | **待确认**(2026-10-05 用户令挂起,重启须发令) | 06「冒险前资源配比预设」;需求卡片冻结档 | +| C5 | 双层 BD 二期件组(穿刺流 / 穿甲锥 / 孤注一掷 / 悬浮魔法球 / 符文重铸 / 派生动词白名单)与三期合成进化 | **缺失**(未落地内容防丢失登记) | 06「双层 BD 延期与备选内容总登记」 | +| C6 | 精英节点与精英遭遇(修饰乘数表空表,精英怪仅「设定」预留) | **仅有占位**(字段命名空间预留,零语义) | 03-内容规模「暂不做」;[难度曲线与Boss](../gdd/systems/冒险循环/难度曲线与Boss.md) P2;[关卡节点地图](../gdd/systems/冒险循环/关卡节点地图.md) P2 | +| C7 | 单体寻址的接口扩展位(「只削弱其中一个」) | **仅有占位**(首个单体效果上线时补列) | 06「单体寻址的接口扩展位」 | +| C8 | 空刷新的可见性(刷新策略满仓再授予=合法空操作,与「溢出不静默吞」张力) | **待确认**(首批刷新行上线时随批裁) | 06「空刷新的可见性」 | + +#### 乙-2 关卡与剧情 + +| 编号 | 事项 | 状态 | 来源 | +|---|---|---|---| +| D1 | 剧情 / 世界观文本资产 | **缺失且有意不做**——[05-不做清单](../gdd/05-不做清单.md)「重叙事」永久排除(不写长篇文本,世界观只做碎片点缀)。现行只有层名(地精洞窟 / 幽暗地域 / 灰矮人矿城)与显示名,**零描述文本、零碎片叙事载体** | 05 确定不做节;[00-游戏概念](../gdd/00-游戏概念.md) | +| D2 | 关卡节点图模板池扩容(现行 15 骨架 = 3 关 × 5,随 A1 重构需重生成) | **待做**(A1 连带面) | [关卡节点图生成](../gdd/systems/冒险循环/关卡节点图生成.md);06 A1 条「范围」段 | +| D3 | 事件类节点候选 | **缺失**(无内容系统承载,扩类须走文档修订) | [关卡节点地图](../gdd/systems/冒险循环/关卡节点地图.md) P2 | + +#### 乙-3 角色与敌人配置 + +| 编号 | 事项 | 状态 | 来源 | +|---|---|---|---| +| E1 | **敌方 attack_type 轴填值**(3b 裁连带,跨系统汇合点) | **待做**——现役 `enemy.tres:527` 轴未开、敌方攻击单据 `attack_type` 恒 `""`(不查克制矩阵)。填值后**全局平移主角受伤点数**:穿重甲 −1、穿魔法护甲 +1 | 06「锻造工坊实装批」迁移面⑥;[敌人系统](../gdd/systems/战斗循环/敌人系统.md) 主角表 | +| E2 | 技能池情境条件触发器(低血触发防御 / 玩家停手偷袭技) | **仅有占位**(P1 字段位已预留,未启用) | 06「技能池情境条件触发器」;敌人系统 P1 | +| E3 | 个体化变体池(A 型好斗 / B 型守势、精英专属池) | **缺失**(现行同敌种同池模板,分歧只来自摇号涌现) | 06「个体化变体池」;敌人系统 P1 | +| E4 | 全局特殊间隔旋钮(特殊技后至少隔 N 拍) | **待确认**(备用闸,未实测不启用) | 06「全局特殊间隔旋钮」 | +| E5 | 第二关技能池与投放(新技能 / 新敌种池) | **缺失**(深度轴行值已填齐,池内容未定) | 06「第二关技能池与投放」 | +| E6 | 敌方技能图鉴 / 学习呈现(见过 → 认得 → 记谱) | **缺失**(P2;与 B2 期三「敌人图鉴优先」**同源**) | 06「敌方技能图鉴 / 学习呈现」;生涯 §二 期三 | +| E7 | 削弱档位的最终数值(取值域 [60,85]、投值 −65) | **待确认**(语义已定案,数值未闭合,归 M4→beta) | 06「削弱档位的最终数值」 | +| E8 | 旧行为 MC 行为锚全数作废——重锚 | **待确认**(案C 行为序换代后旧锚全废,归 M4→beta) | 06「旧行为 MC 行为锚全数作废」 | + +#### 乙-4 数值与成长线 + +| 编号 | 事项 | 状态 | 来源 | +|---|---|---|---| +| F1 | 锻造工坊 provisional 全量(cap 5 / 增量 +1 / 价 20·30·45·67·101 / 解锁 200 / AC 10-12-9) | **仅有占位**(provisional,归 M4→beta) | 06「锻造工坊实装批」;`forge.tres` | +| F2 | 满级特效(三条路线满级带额外效果) | **仅有占位**(2026-10-12 裁 6:本期不做,扩展位留空,行字段闭集钉死) | [锻造工坊](../gdd/systems/跨局循环/锻造工坊.md) v0.5;02 系统清单 | +| F3 | 三方向解锁清单与定价终值(属性锻造 / Boss 钥石两档 / 秘宝匣阈值) | **待确认**(provisional,归 M4→beta) | 06「三方向各自的解锁清单与定价」 | +| F4 | GP 经济换算失衡(GP 袋面值 × 商店基价 × 价格曲线 × 战斗掉落 四处联动;含 L1 无商店口两种情形) | **待确认**(归 M4→beta) | 06「GP 经济换算失衡」 | +| F5 | 迭代 10 奖励重构联动欠账 ①②(钥石产出重标 / 通关率带重扫) | **待确认**(归 M4→beta) | 06「迭代 10 奖励重构联动欠账」 | +| F6 | 商店独立刷新两参数调参(shop_refresh_free / 曲线)+ **天赋增益形态与数值** + **机制文档回写三处** | **待做**(机制已落码;调参、天赋增益、文档回写未落)——**文档回写是纯文档面,可独立于 M4 先做** | 06「商店独立刷新机制」 | +| F7 | AP 上限 clamp 缺位 / 三选一刷新软上限 | **已裁**(2026-10-13:暂不设上限、维持现状,均归 M4→beta,本批零动作) | 06「天赋树实装批登记欠账三条」①② | +| F8 | 格面资源八型数值点评(增伤 50/25 不对称、削弱 65/25、回血过薄、两新词 provisional、AP±1 对账) | **待确认**(归 M4→beta) | 06「调参批数值点评登记」①–⑤ | + +#### 乙-5 道具与奖励 + +| 编号 | 事项 | 状态 | 来源 | +|---|---|---|---| +| G1 | **奇物池 charge 标签仅 3 件、永远达不到档二**(已登记数据缺陷) | **待确认**(未修复) | [奇物](../gdd/systems/冒险循环/奇物.md) v2.3 版本行 | +| G2 | 专长总量与档位阈值匹配(**延后至第四关内容批后实测复裁**) | **待确认**(与 B4 第四关强联动) | 奇物 v2.3 版本行 | +| G3 | 商店货架「应急回复」行之外的商品结构(T6 补回复已落,其余未定) | 部分在役 | 07 ⑰ | +| G4 | 秘宝 / 奇物图鉴(生涯期三随后项) | **缺失**(无在册条目,立项时另登记) | 生涯 §二 期三 | + +#### 乙-6 UI 文案 + +| 编号 | 事项 | 状态 | 来源 | +|---|---|---|---| +| H1 | **现役 UI/文案两处自相冲突**(玩家可见错话) | **待做**——① `battle_narrator.gd:160` 文案「与通关三选一同池同权重同上限」与现役不符(通关渠道自迭代 15② 起 = 纯专长,该句系落码前旧话);② `hero_info_panel_view.gd` 奇物段与专长段同标「特性」(界面文案重复) | 06「现役 UI/文案两处自相冲突」 | +| H2 | 未开格类型徽章呈现(**格面**)——组粒度五色相,组内不细分 | **仅有占位**(`TG_*` 常量未立:五族以裸 `Color8` 内联于 `bonus_pick_overlay.gd:96-102` / `shop_overlay_view.gd:189`,**缺第五族 aoe `#E25676`**) | 06「未开格类型徽章呈现时机」 | +| H3 | 呈现层残余 <4.5:1 文字位三处(B 区站桩名行/护甲徽标四墨 `HERO_BLUE` 3.23 / `GOLD_DEEP` 3.26;敌顺位徽标 ①②③ 13px `GOLD_DEEP`;RAP 反馈行 `STONE_FAINT` 2.73) | **待做**(机检可判硬指标,未达 WCAG) | 06「呈现层残余 <4.5:1 文字位」 | +| H4 | 棋盘格边长三方取值不一致(代码 `board_view.gd:251` clamp 26–46 / 默认 46;art-bible §8.1 冻结锚 45 与 36;demo 原型 44;HUD框架:72 校验区间 [30,45]) | **待确认**(已知偏差,无断言触发;处置时机 = 扩板定档) | 06「棋盘格边长三方取值不一致」 | +| H5 | 钥石累计收支流水呈现 | **缺失**(存档只动余额无流水域;生涯期一登记未做) | 生涯 §二 跨局汇总表 | +| H6 | 生涯期二必答项 P6:营地底栏「最近冒险」条带去留 | **待裁**(三案甲/乙/丙,甲=建议) | 生涯 §五 P6 | + +#### 乙-7 美术资源占位(看板实态:✅ 4 / ◐ 8 / ⬜ 3) + +| 编号 | 事项 | 状态 | 来源 | +|---|---|---|---| +| I1 | **战斗一屏样张** | ⬜ **未开始**——它是角色终稿 / 意图动画 / 演出类全部资产的**排期硬前置**(样张未过不启动任何终稿资产) | [art-status-checklist](../art/art-status-checklist.md) P0;[art-assets-checklist](../art/art-assets-checklist.md) §1.2;战斗表现「前置美术测试是硬前置」 | +| I2 | 意图准备动画三档 | ◐ 占位符号在役(— / ⚔ / ✦ / 蓄力),终稿动画待样张后 | art-status-checklist P1;character-design §5.6 | +| I3 | 格面资源徽章 19 枚 | ◐ 程序化占位(文本/符号) | art-assets-checklist §3.1 | +| I4 | 关卡节点图图标组(四节点 + 行进器棋子) | ◐ 程序化占位(正式 UI 设计未成文) | art-assets-checklist §3.2 | +| I5 | 雷 / 旗 / 数字砖面全套 | ◐ 程序化绘制(可读性达标、观感待升级) | art-assets-checklist §3.3 | +| I6 | 营地与元进度件(钥石图标 / 强化条目图标 / 柜台场景贴图) | ◐ **全占位** | art-assets-checklist §3.5 | +| I7 | 字体(数字像素字 + 中文像素字) | ◐ **引擎默认字** | art-assets-checklist §3.6 | +| I8 | 演出类:受击 / 死亡 / 顺位标记 | ◐ 程序化(灰化+碎裂退场在役,帧级素材未产) | art-status-checklist P3 | +| I9 | 演出类:连锁坍塌显形演出 | ⬜ 未开始 | art-status-checklist P3 | +| I10 | 演出类:封印特效(施印瞬间 + 印记常显两件) | ⬜ 未开始 | art-status-checklist P3 | +| I11 | 演出类:弹道 / 退场动画密度 | ◐ 程序化弹道在役,密度终稿归战斗表现批 | art-status-checklist P3 | +| I12 | **美术资产链路审计两项 P0**:① `art-bible:68/:527` 与 `art-status-checklist:13` 至今引用**已丢失**的冻结样张 `sample-batch-v3-final-2026-09-30.png`(磁盘零命中)死指涉;② **主角棋盘小人未走像素管线**(插值糊图),重产事项未在任何登记处在册 | **待裁**(修复死指涉 + 登记重产,或判过期随旧管线退役) | 06「美术资产链路审计两项 P0」 | +| I13 | 主角描边素材侧复核(深褐 `(40,19,13)` 例外条款是否成立) | **待确认**(样张批终审触发,素材不随批改) | 06「主角描边素材侧复核」;character-design §5.1 | +| I14 | 在途草稿整理批(3349 个失管草稿,`artwork/ui-reuse-2026-09-23/` 独占 3043) | **待做**(须先 dry-run 呈报清单,经确认再分批执行) | 06「在途草稿整理批」 | +| I15 | 圣经口号型条款机检化批(约 55% 条款属口号型无可机检值) | **待确认**(挂账,随整屏样张闸前整备批启动,分章推进) | 06「圣经口号型条款机检化批」 | + +#### 乙-8 任务与成就 + +| 编号 | 事项 | 状态 | 来源 | +|---|---|---|---| +| **K1** | **任务系统 / 成就系统** | **缺失且未裁决**——全库无文档、无系统条目、08 未列、[05-不做清单](../gdd/05-不做清单.md)也未将其列为不做。**但已有两处侧面指涉**:[术语表](../gdd/术语表.md) v1.6「适用范围」含「成就与百科措辞」;[奇物](../gdd/systems/冒险循环/奇物.md) §1.2 称分类名会「在帮助手册、百科条目、成就名称三处用到」 | 术语表 v1.6;奇物 §1.2 | + +--- + +## 二、可选方案 · 成本 · 影响范围 · 推荐 + +> 成本为**粗估量级**(小 ≈ 0.5–1.5d / 中 ≈ 2–5d / 大 ≈ 6d 以上,含文档与验收),需求卡片阶段细化。 +> 「影响范围」按项目四循环 + 权威文档面标注。 + +### 甲组逐条 + +--- + +#### A1 · 关卡节点图重构(增加可选节点)—— 待做,Alpha + +**实态**:第一关五张模板**全是单链排列变体**(7 节点 = 战斗 ×4 + 奖励 + 休整 + Boss,变化面只有奖励/休整两位先后,全链零分叉);L2/L3 为网状图(10 节点、最大层宽 4–5)但用户仍判选择量不足。参考方向 = Peglin。 + +| 案 | 内容 | 成本 | 影响范围 | +|---|---|---|---| +| **甲(推荐)** | **先出参考调研 + 方案人闸,再定重构范围**:① 调研 Peglin / 杀戮尖塔的节点图选路密度与分叉形态,形成对照报告;② 给「一关几个可选节点 / 每层几条岔路 / 节点总数区间」定值草案;③ 过人闸后才开需求卡片。分两步:先 L2/L3 网状图加密,再回头把 L1 从单链升级 | 中(调研 + 文档设计 ≈ 2–3d;实装另批 ≈ 3–5d) | 连锁四面:**关卡节点地图**(图结构/节点语义)、**关卡节点图生成**(15 骨架全需重生成)、**level-map UX**(选路枢纽三停点布局)、**敌人系统**(遭遇表按 `(level_index, node_depth)` 索引,节点数与编号一改,**行集坐标与首遇教学位断言面全部随动**) | +| 乙 | 只改呈现不重构(换画法/移动方式) | 小 | 用户已明确否决——「这是重构,不是呈现优化」,理由是可选项太少 | +| 丙 | 直接开发(跳过文档设计) | — | **用户 2026-10-13 明令禁止**:须先做文档设计讨论 | + +**推荐**:甲。**待确认**:① 重构的目标形态要不要一次做到 Peglin 密度,还是先做一个「中间档」验证?② L1 是否同步升级(L1 现在是教学保护关,分叉会提高新手决策负担)?③ 15 张骨架是全量重生成,还是只在 L2/L3 增补? + +--- + +#### A2 · 第一关遭遇表数值异常 —— 待做,Alpha,修法待裁 + +> **✅ 订正(2026-10-13 迭代 24 卡①随批)**:本条已随迭代 24 N1 修复收口——(1,2) 降档 hp 50→22 · ac 3→2(敌种 bugbear 保留,定性=2026-09-24 阶名化解方案实机未达预期重裁,非配置错误);「三处异常」定性按需求卡片 Q2 作废两处(难度倒挂撤回、敌种填错作废)。下文实态与案表为修复前存档记载。 + +**实态**(`enemy.tres` 按 `(level_index, node_depth)`):(1,0) 地精 8 血 ×1–2 → (1,1) 地精一伙 **4 血** ×2–3 → (1,2) **熊地精 50 血** ×1 → (1,3) 大地精 14 血 ×2–3 → (1,4) Boss 食人魔酋长 72 血。三处异常:难度倒挂、曲线不单调(50 是前一节点 12.5 倍、逼近 Boss 七成)、熊地精正式位置是 (2,5) 混编行。 + +> 与 M4 的区别:M4 是「形状对、调大小」;本条是**形状本身不对**,属配置错误级。 + +| 案 | 内容 | 成本 | 影响范围 | +|---|---|---|---| +| **甲(推荐)** | **即时修**(单独开小批,不依赖 M4):先把 (1,2) 熊地精换成该深度应有敌种并回调血量,再拉平 (1,1) 与 (1,0)/(1,3) 的单调性 | 小(0.5–1d + MC 配对读数验证) | `enemy.tres` 五行 + 冒烟 expect_pools 断言;**不动全局数值**;须做改前/改后同种子配对读数 | +| 乙 | 归 M4 数值批一并调整 | 零(当期) | 第一关崩坏长期挂在 Alpha 里,玩家第一局就撞上 | +| 丙 | 先排查定性再定修复方式 | 小 + 一轮呈报 | 多一轮讨论,但能确认「熊地精是填错还是有意投放」 | + +**推荐**:甲(呈报方原推荐亦为甲)。**待确认**:(1,2) 这一格**到底该放什么**——是熊地精数值填错(应降到 ~20 血档),还是敌种填错(应换成别的 L1 敌种)?这决定是改数还是改行。 + +--- + +#### A3 · 棋盘观感(第二 / 三关亮度与对比度)—— 待做,Alpha + +**实态**:用户试玩反馈「看着太累了、非常费劲」。开工前**必须先定性**:是**素材轴**(瓦片与格面图标本身的明度/色相)还是 **UI 轴**(舞台底色与叠加层的对比关系)——两轴修法完全不同,定性错了等于白改一轮。 + +| 案 | 内容 | 成本 | 影响范围 | +|---|---|---|---| +| **甲(推荐)** | **先过定性人闸**(出一组对照截图:只改素材 / 只改 UI 底 / 两者各一版),用户目检定轴后再开工 | 小(对照样张 ≈ 0.5–1d)+ 定轴后修法(中) | 素材轴 → `art-bible` §1.4/§4.1 + 瓦片重产;UI 轴 → [HUD框架](../gdd/systems/表现与支撑/HUD框架.md) 舞台底与叠加层 | +| 乙 | 直接两轴一起调 | 中 | 无法归因,改坏了不知道是哪一侧的问题,且可能重复返工 | + +**推荐**:甲。**待确认**:定性人闸的对照样张由谁出(美术线 = 用户独立成批自理,按 2026-10-05 立规)? + +--- + +#### B1 · 战斗表现(动画与演出)算不算已达标 —— 待裁 + +**实态**:文档 = 范围草案·待设计(无设计内容)。**已实装的部分**:结算演出与轮间节奏(段间 0.3s / 段内 0.22s / 轮横幅 0.6s / 减动效双态,迭代 8 卡⑦)、程序化弹道、受击闪白、灰化碎裂退场、高光行强调。状态 = **「会动但没演出」**。它的硬前置「战斗一屏样张」= ⬜ 未开始(I1)。 + +| 案 | 内容 | 成本 | 影响范围 | +|---|---|---|---| +| **甲(推荐)** | **Alpha 达标判定 = 「已实装的呈现语义在役即可」,正式演出设计排 Beta**。理由:它不产生数值、不阻塞主流程、不阻塞联调(符合用户 2026-10-13「缺了照样能联调、能通关」判据)。但**把 I1 战斗一屏样张留在 Alpha**,因为它同时是 B6 站桩帧动画与 I2 意图动画的硬前置 | 零(当期);样张成本见 I1 | 08 一 · 战斗循环行改「在役(呈现语义)+ 演出设计排 Beta」;未决项 #1 销项 | +| 乙 | Alpha 内做完正式演出设计 | 大(样张 + 动画方案 + 资产终稿,且依赖样张过闸) | 与「先验证核心循环再谈好看」的 05 立项口径冲突,且会挤占 A1/A2 的窗口 | +| 丙 | 判为不达标、整个系统移出 Alpha | 零 | 与 08 现状「待裁」的处置等价,但表述上会让「战斗表现」看起来完全没做,与实态不符 | + +**推荐**:甲。**待确认**:甲案里「呈现语义在役」的边界要不要写进 08(受击闪白 / 死亡禁瞬消 / 高光行 / 逐行排播四条)作为 Alpha 判据? + +--- + +#### B2 · 生涯期二(历史冒险回看)与期三(图鉴)进不进 Alpha —— 待裁 + +**实态**:期一已实装(2026-10-07,六类九项 + 主菜单入口 + 存档 v6)。期二缺口三件:**cap 10 → N 扩容**、**用时埋点(全仓零采集点)**、**旧档摘要迁移**,另加逐局列表 + 单局明细(`settlement_review_overlay.gd` 遗留件复活承接)+ **P6 营地条带去留**。期三 = 图鉴(敌人优先,需新增 meta 域做「见过」记账,涉 schema)。 + +| 案 | 内容 | 成本 | 影响范围 | +|---|---|---|---| +| **甲(推荐)** | **期二进 Alpha、期三排 Beta**。期二是 P-C7 裁决(冒险中不给数据回看)的**补偿面**——不落地则「历史数据无处可看」这个已知代价一直挂着;期三是收集类内容,缺了照样能通关 | 中(2–4d:N 终值读数 + 用时埋点 + 迁移 + 列表 + 明细复活) | `save_manager.gd` 摘要域 / `adventure_runner.gd` 埋点 / `camp_overlay_view.gd:431-443` 条带(P6)/ `settlement_review_overlay.gd` 复活 | +| 乙 | 期二、期三都进 Alpha | 大 | 图鉴需新 schema 域 + 敌人「见过」记账,与 E6 敌方技能图鉴同源但范围更广 | +| 丙 | 都排 Beta | 零 | 历史回看长期缺位;`settlement_review_overlay.gd` 遗留件须另裁(复活 or 正式退役删除) | + +**推荐**:甲。**待确认**:① **N 终值**(20 / 50 / 维持 10 三选一,按存档体积读数定);② **「用时」埋点口径**(计时起点、暂停是否计入);③ **P6 营地条带三案**(甲=期二落地时撤下、逐局回看整体归生涯 / 乙=两处并存 / 丙=固定 10 条永久保留);④ 若选丙,`settlement_review_overlay.gd` 是复活还是删除? + +--- + +#### B3 · 数值统一标定是不是 Alpha 的完成条件 —— 待裁 + +**实态**:挂 M4(= Beta 阶段)的六批条目:旧 MC 行为锚重锚(E8)、削弱档位终值(E7)、迭代 10 联动欠账 ①②(F5)、调参批八型点评(F8,含格面正负倍率差回调 C1)、三方向解锁定价(F3)、GP 经济换算失衡(F4);另有锻造工坊 provisional(F1)、商店刷新两参数(F6)的部分面。**M4 未排期**,2026-10-07 用户令移出迭代 18 暂不启动。 + +| 案 | 内容 | 成本 | 影响范围 | +|---|---|---|---| +| **甲(推荐)** | **不是 Alpha 完成条件**——Alpha 只要求「数值可玩、无崩坏」;全局统一标定归 Beta。但设一条**例外闸**:**A2 第一关遭遇表这种「形状不对」的配置错误须在 Alpha 修**(它已在 A2 单列,不走标定) | 零(当期) | 08 四 · 工程与质量「数值统一标定」行改「排 Beta / Alpha 不做」并移入六 · 不含;未决项 #3 销项 | +| 乙 | 是 Alpha 完成条件 | 大(M4 全批,含 MC 重锚与全量配对读数) | 会显著推迟 Alpha;且 2026-10-09 里程碑立规时 M4 已被定为 Beta 阶段 | + +**推荐**:甲。**待确认**:甲案的「例外闸」要不要写死成一条规则(形状错 = Alpha 修 / 大小不对 = Beta 标定),以免后续再有类似项被推来推去? + +--- + +#### B4 · 第四关进不进 Alpha —— 待裁 + +**实态**:**全库仅 08 两行提及**(二 · 内容量「第四关 · 待裁」、七 · #4),无任何设计文档、无行集、无敌种、无棋盘尺寸、无层名。[03-内容规模](../gdd/03-内容规模.md)「暂不做」节写的是「更多关卡(N>3)——第三关已按扩展批流程落地」,即 N>3 属扩展批流程而非既定内容。 + +| 案 | 内容 | 成本 | 影响范围 | +|---|---|---|---| +| **甲(推荐)** | **不进 Alpha**(排 Beta),并把 08 二 · 内容量该行从「待裁」改为「排 Beta」移入六 · 不含节。理由:无任何设计承载,等于从头立一个内容批;且 Alpha 的判据是三关能通关 | 零 | 08 两行订正;未决项 #4 销项 | +| 乙 | 进 Alpha | **大**(新关卡 = 层名 + 行集 + 敌种池 + 棋盘尺寸 + 地形变异 + 难度带 + 节点图模板池,按「每模板一行集」内容纪律) | 与 A1 重构叠加会同时改图结构,风险高 | +| 丙 | 注销该条目(永不扩关) | 零 | 与 03「扩展批流程」口径冲突——03 已承认 N>3 走扩展批,只是未排期 | + +**推荐**:甲。**待确认**:甲案下,**G2(专长总量与档位阈值匹配)在奇物 v2.3 里被写为「延后至第四关内容批后实测复裁」**——第四关若排 Beta,这条是不是要解除依赖、改按三关现状复裁?(否则它会无限期挂账) + +--- + +#### B5 · 混编遭遇第二批(Boss 多行)进不进 Alpha —— 待裁 + +**实态**:首批 (2,5) 双行(熊地精重击手 + 巨蜘蛛巢群)已于 2026-10-07 落表、目检项在 07 ⑱。第二批 = **Boss 多行**,六面读数清单:Boss 名取首行显示 / Boss 遭遇骰逐行区间骰 / 半血解锁 / 独占技 / 难度带 / 首遇教学位复核。 + +| 案 | 内容 | 成本 | 影响范围 | +|---|---|---|---| +| **甲(推荐)** | **不进 Alpha**(排 Beta)。首批已证明混编机制成立;Boss 多行是内容投放而非机制验证,且每投一个都要跑难度带读数(读数义务归 M4→beta,本次零跑) | 零 | 08 二 · 内容量「混编遭遇行集」行改「在役(首批);第二批排 Beta」;未决项 #5 销项 | +| 乙 | 进 Alpha | 中(六面读数逐项过 + MC 取证跑批) | MC 取证跑批已顺延 M4,Alpha 内跑会与「数值统一标定不做」矛盾 | + +**推荐**:甲。 + +--- + +#### B6 · 站桩帧动画进不进 Alpha —— 待裁 + +**实态**:定稿立绘**零帧动画**;现行动画全部程序化(死亡碎裂 / 受击闪白 / 意图徽标弹入 = tween)。用户 2026-10-06 裁定「动画是较往后的优化,**Alpha 版本定版时间点之前完成即可**」。三条路线:① **拆件驱动**(切部件 + 节点层级 tween,零身份漂移、帧数无限、内存小;项目已有 shovel_swing 三帧先例)② AI 关键姿势 + 人工修 + 程序补帧 ③ 全 AI 逐帧(不推荐:身份漂移/像素抖动)。前置 = 「立绘→派生形态」管线(等比整数缩放 + 降色 ≤32 + 脚底基线对齐 + 命名合规)——**该管线已随 art-bible v3.7 八敌逐键定档落成**。 + +| 案 | 内容 | 成本 | 影响范围 | +|---|---|---|---| +| **甲(推荐)** | **不进 Alpha**(排 Beta),但**保留用户原裁的「Alpha 定版闸」措辞**(= Alpha 定版时间点之前完成,非 Alpha 开发期内完成)。路线预选 **① 拆件驱动**(重启时正式拍板) | 零(当期) | 08 五 · 表现行改「排 Beta(定版闸前)」;未决项 #6 销项 | +| 乙 | 进 Alpha 开发期 | 中–大(路线拍板 + 8 敌 × 部件切分 + 规格与资产工单) | 与「先验证核心循环再谈好看」冲突;且依赖 I1 样张锁定的动画方案 | +| 丙 | 注销 | 零 | 与用户 2026-10-06 裁定冲突 | + +**推荐**:甲。**待确认**:「Alpha 定版闸」这个时点要不要在 roadmap 上落一个具体位置(否则重启条件不可判定)? + +--- + +#### B7 · 素材升档重产进不进 Alpha —— 待裁 + +**实态**:2026-09-30 裁决**案乙**(本迭代不升档,先收真人读数再定);2026-10-04 用户令**暂不做、先忽略**;2026-10-06 art-bible v3.7 八敌逐键定档(源档 36–94、显示 ×2 整数)已**实质收口**存在感问题(改走 B 区 270 / 立绘显示上限 188 / 血条状态落底排)。**剩余挂起项只剩一条**:主角提灯点亮解禁候选(v3.0 明度分层后的空间光照允许域)。 + +| 案 | 内容 | 成本 | 影响范围 | +|---|---|---|---| +| **甲(推荐)** | **不进 Alpha**(排 Beta),剩余挂起项明确为「提灯点亮解禁候选」随整屏样张批重议。理由:升档的原始动机(存在感不足)已由定档 + B 区改造解决,走 64/96/128 档位路线已无必要 | 零 | 08 五 · 表现行改「排 Beta」;未决项 #7 销项 | +| 乙 | 进 Alpha | 大(主角三态 + 八敌全部重产 + 派生管线 + 立绘盒抬高) | 与 2026-10-04「暂不做」令直接冲突 | + +**推荐**:甲。 + +--- + +#### B8 · 立绘清晰度回退评估(维持像素风 vs 回退高清图)—— 待裁,**方向冲突** + +**实态**:两个子问题必须分开——**子问题一(怪物大小比例不合理)= 已兑现**(体量语义改生物体型 character-design §5.2 + 八敌逐键定档 art-bible §8.2),**剩余面 = 用户是否复核验收**;**子问题二(像素粒度过低看不清 / 是否改回高清图)= 未决**,且「改回高清图」与现行**像素风定档**是相反方向。注意:粒度问题已改派生管线(八敌源档 36–94 全过可读门槛:24 糊 / 32 可读 / 48 清楚)。 + +| 案 | 内容 | 成本 | 影响范围 | +|---|---|---|---| +| **甲(推荐)** | **维持像素风定档**,先做**子问题一的验收**(请用户实机看八敌体量关系是否符合三条体型约束:钩爪恐魔 > 灰矮人、灰矮人 < 熊地精、食人魔酋长 > 熊地精)。验收通过后,若仍有「看不清」,再走**派生管线调优**(不换风格):提高源档 / 改降采样 / 加描边对比 | 小(验收 ≈ 0.5d;调优 ≈ 1–2d) | 只动 art-bible §8.2 与 `tools/pixelize_candidates.py`,风格宪法不动 | +| 乙 | 回退高清图 | **大**(风格宪法重写 + 全部角色重产 + 色板/UI/演出全套重适配,与 art-bible §1–§5 全面冲突) | 这是**方向级**改动,不是资产替换 | +| 丙 | 混合(主角高清、敌方像素 或反之) | 大 + 风格割裂风险 | 最差解,双方都不讨好 | + +**推荐**:甲。**待确认**:① 子问题一要不要现在就验收(一句话目检即可)?② 若验收后仍判「看不清」,是否接受只调派生管线而不换风格? + +--- + +### 乙组按批(合并给方案,避免逐条爆炸) + +--- + +#### 乙批 1 · 纯执行、修法已明,建议直接排(不需设计讨论) + +| 事项 | 推荐动作 | 成本 | 影响范围 | +|---|---|---|---| +| **H1** UI/文案两处自相冲突 | 直接修:`battle_narrator.gd:160` 错话句改写为现役口径(通关渠道 = 纯专长);`hero_info_panel_view.gd` 两段「特性」分标为「奇物」与「专长」 | 小(纯字符串,零逻辑) | 玩家可见文案;须同步冒烟若有断言 | +| **H3** 呈现层残余 <4.5:1 三处 | 直接修:四墨换档 / 敌顺位徽标字号或墨色 / RAP 反馈行墨色 | 小 | 机检可判,`ui_contrast` 闸可加断言 | +| **F6-文档面** 商店刷新机制文档回写三处 | 直接做(冒险结构共享池账本节 / 关卡节点地图商店行 v1.6 / 06 本条收口核对) | 小 | 纯文档,不依赖 M4 调参 | +| **H2** 类型色 `TG_*` 常量化 | 直接做:把内联 `Color8` 提为 `ui_kit` 常量并补第五族 aoe `#E25676`(与格面微光同族不同落点) | 小 | ui_kit + 两处消费点 | +| **I14** 在途草稿整理 | **先 dry-run 呈报清单**,经确认再分批执行(按用户惯例) | 中 | 批量文件移动/删除,属个人目录高风险操作,必须 dry-run 先行 | +| **J1/J2** 08 两行订正 | 随本次结论一并改 | 小 | 08 版本历史 | + +> 以上六条**都不是设计决策**,建议从讨论里摘出来直接排执行批。 + +--- + +#### 乙批 2 · 与 B4/B3 联动,建议跟随主裁 + +| 事项 | 联动 | 推荐 | +|---|---|---| +| **G2** 专长总量与档位阈值匹配 | 被写为「延后至第四关内容批后复裁」 | 若 B4 取甲(第四关排 Beta),**建议解除依赖、改按三关现状复裁**,否则无限期挂账 | +| **C6** 精英节点与精英遭遇 | 难度曲线 P2 + 关卡节点地图 P2 | 跟随 B4/B5 一起排 Beta;精英怪「设定预留」保留为内容素材 | +| **D3** 事件类节点候选 | 无内容系统承载 | 建议**注销**(无承载面,留着只是占清单)——**待你确认** | +| **E6** 敌方技能图鉴 | 与 B2 期三「敌人图鉴优先」**同源** | 若 B2 期三排 Beta,E6 合并进去一起做,不单独立项——**待你确认** | + +--- + +#### 乙批 3 · 数值类(全部归 M4→Beta,建议维持现状不提前动) + +C1、E7、E8、F1、F3、F4、F5、F8 —— 八条均为「形状对、调大小」或 provisional 终值,用户已有多轮裁定归 M4。 + +| 案 | 内容 | 推荐 | +|---|---|---| +| 甲(推荐) | **维持现状**,全部随 M4(Beta 阶段)统一处理;Alpha 内零动作 | ✅ 推荐。与 B3 甲案一致 | +| 乙 | 挑其中「玩家第一局就会撞上」的先修 | 只有 **A2** 属此类,已在 A2 单列;其余不动 | + +**待确认**:这八条里有没有你认为**Alpha 内必须处理**的?(我按现有裁定判断全部可排 Beta,但这条请你过目一遍) + +--- + +#### 乙批 4 · 玩法机制类(C2/C3/C5/C7/C8)与道具类(G1) + +| 事项 | 状态 | 推荐 | +|---|---|---| +| C2 袋装摇号 | 正规形态备选,补丁式现役够用 | **维持挂号备查**(启用条件 = 保底登记型增多)。不进 Alpha | +| C3 「封锁-蓄力」combo | 设计素材登记,不立项 | **维持登记**(不立项)。或注销——**待你确认** | +| C5 双层 BD 二期/三期件组 | 未落地内容防丢失 | **维持登记**。注意二期件里「战斗→扫雷跨阶段回流(穿刺流)」属**威胁红线③边缘**,立项须专项论证 | +| C7 单体寻址扩展位 | 占位 | **维持**(首个单体效果上线时随批) | +| C8 空刷新可见性 | 待裁 | **维持**(首批刷新行上线时随批裁) | +| C4 冒险前资源配比预设 | 八项裁决全冻结保留 | **维持挂起**(重启须用户另行发令) | +| **G1** 奇物池 charge 标签仅 3 件、恒达不到档二 | **已登记数据缺陷** | **建议纳入 Alpha 讨论**——这是**形状不对**(与 A2 同类:不是数值大小问题,是池结构使某个档位永远不可达)。可选:① 补 charge 件到够档二(内容批,中);② 下调档二阈值(数值,小,但归 M4);③ 明确该档位对 charge 不适用(文档,小)。**推荐 ①或③,待你裁** | + +--- + +#### 乙批 5 · 美术资源占位(I1–I13、I15) + +看板实态 ✅ 4 / ◐ 8 / ⬜ 3。全部资产的排期硬前置是 **I1 战斗一屏样张**(⬜ 未开始)。 + +| 案 | 内容 | 成本 | 影响范围 | +|---|---|---|---| +| **甲(推荐)** | **Alpha 内只做 I1(战斗一屏样张)+ I5(砖面全套)**;其余(I2 意图动画终稿、I8–I11 演出类、I3/I4/I6/I7 图标与字体)排 Beta。理由:I1 是 B6/I2/演出三者的硬前置,不过则后面全线卡死;I5 是 A3 棋盘观感的素材轴落点,与 A3 同批做省一轮 | 中(I1 样张 + 验收;I5 随 A3 定轴) | 样张 → 解锁 B6/I2/I8–I11;砖面 → 直接服务 A3 | +| 乙 | 全部占位资产在 Alpha 内补齐 | 大(十余类资产 + 复用闸四道逐件过) | 与「先验证核心循环再谈好看」冲突 | +| 丙 | 一个都不做 | 零 | I1 不做则 B6/I2/演出类无法排期(硬前置) | + +**推荐**:甲。 + +**I12(两项 P0)单独裁**:① `art-bible:68/:527` + `art-status-checklist:13` 引用**已丢失**的冻结样张(磁盘零命中)——建议**修复死指涉**(改为指 art-bible §1.4 冻结记录 + 说明产物已不在盘);② **主角棋盘小人未走像素管线(插值糊图)**——建议**登记重产**(小批,走既有像素管线派生),因它与 B8 子问题二「看不清」直接相关,不修的话用户目检第一眼就会撞上。**待你确认**。 + +**I13 / I15**:均为「样张批终审触发」或「挂账分章推进」,建议**维持现状不单独立项**。 + +--- + +#### 乙批 6 · 任务与成就(K1)与剧情(D1) + +| 事项 | 实态 | 推荐 | +|---|---|---| +| **K1 任务 / 成就系统** | **全库无文档、无系统条目、08 未列、05 未列为不做**;但术语表 v1.6 与奇物 §1.2 已有两处侧面指涉(「成就与百科措辞」「成就名称会用到分类名」) | **呈报事实 + 请裁三条路**:① **明确不做**(写入 05-不做清单,与「重叙事」「抽象货币」同列);② **排 Beta**(先立最小设计:成就只做「计数 + 名称 + 触发条件」三字段,不做奖励发放——本作已有钥石单一跨局货币,成就给奖励会撞「抽象货币」红线边缘);③ **进 Alpha**(不推荐:无任何承载,且与核心循环无关)。**我倾向 ①或②,请你裁** | +| **D1 剧情 / 世界观文本** | 05 已判「重叙事」永久排除,世界观只做碎片点缀;现行零描述文本、零碎片载体 | **建议确认「Alpha 接受零剧情」**(= 只有层名与显示名,无任何其他叙事文本)。若要补碎片点缀(关卡开场一行风味句 / Boss 名后缀 / 敌人图鉴风味条目),需另立极小文案批——**待你确认要不要补** | + +--- + +## 三、待你确认的问题清单(逐条回答即可,我据此收口并出需求卡片) + +### 甲组必裁(11 项) + +| # | 问题 | 我的推荐 | +|---|---|---| +| Q1 | A1 节点图重构:目标形态一次做到 Peglin 密度,还是先做「中间档」验证? | 先中间档 | +| Q2 | A1:L1(教学保护关)是否同步升级为带分叉? | 待你定(我倾向暂不动 L1) | +| Q3 | A1:15 张骨架全量重生成,还是只在 L2/L3 增补? | 随 Q2 连带 | +| Q4 | A2:(1,2) 是**数值填错**(熊地精降到 ~20 血档)还是**敌种填错**(换成别的 L1 敌种)? | 需先排查确认 | +| Q5 | A3:定性对照样张由谁出?(美术线 = 你独立成批自理) | 你自理 | +| Q6 | B1:战斗表现按甲案判「呈现语义在役即可、演出设计排 Beta」,四条在役语义要不要写进 08 作判据? | 要写 | +| Q7 | B2:生涯期二进 Alpha / 期三排 Beta,可否? | 可 | +| Q8 | B2:**N 终值**(20 / 50 / 维持 10)与**用时埋点口径**(起点、暂停是否计入) | 需你定 | +| Q9 | B2:**P6 营地条带三案**(甲撤下 / 乙并存 / 丙固定 10 条) | 甲 | +| Q10 | B2:若期三排 Beta,`settlement_review_overlay.gd` 是**复活承接**还是**正式退役删除**? | 复活承接(随期二) | +| Q11 | B3:数值统一标定排 Beta + 设「形状错 = Alpha 修 / 大小不对 = Beta 标定」例外闸,可否? | 可 | + +| # | 问题 | 我的推荐 | +|---|---|---| +| Q12 | B4:第四关排 Beta,可否? | 可 | +| Q13 | B4 连带:G2(专长档位阈值)是否**解除第四关依赖、按三关现状复裁**? | 解除 | +| Q14 | B5:混编遭遇第二批(Boss 多行)排 Beta,可否? | 可 | +| Q15 | B6:站桩帧动画排 Beta、路线预选「拆件驱动」,可否?「Alpha 定版闸」要不要在 roadmap 落具体位置? | 可;建议落位 | +| Q16 | B7:素材升档重产排 Beta、剩余项明确为「提灯点亮解禁候选」,可否? | 可 | +| Q17 | B8:**维持像素风**(甲),先验收子问题一(八敌体量关系),可否? | 维持像素风 | +| Q18 | B8 连带:若验收后仍判「看不清」,是否接受**只调派生管线不换风格**? | 接受 | + +### 乙组请裁(范围归属) + +| # | 问题 | 我的推荐 | +|---|---|---| +| Q19 | 乙批 1 六条(H1/H3/F6文档面/H2/I14/J1J2)**摘出直接排执行批**,可否? | 摘出(I14 须先 dry-run) | +| Q20 | 乙批 3 八条数值项(C1/E7/E8/F1/F3/F4/F5/F8)全部维持现状随 M4,有无你认为 Alpha 内必须处理的? | 全部排 Beta | +| Q21 | **G1**(奇物 charge 标签仅 3 件、恒达不到档二)——这是「形状不对」类缺陷,是否纳入 Alpha?(补件 / 降阈值 / 明确不适用 三选一) | 纳入,倾向 ①补件或 ③明确不适用 | +| Q22 | **D3** 事件类节点候选:注销 or 保留? | 注销 | +| Q23 | **E6** 敌方技能图鉴:并入 B2 期三(排 Beta)or 单独立项? | 并入期三 | +| Q24 | **C3**「封锁-蓄力」combo 素材:维持登记 or 注销? | 维持登记 | +| Q25 | 乙批 5 美术:Alpha 内只做 **I1 战斗一屏样张 + I5 砖面全套**,其余排 Beta,可否? | 可 | +| Q26 | **I12** 两项 P0:① 修复死指涉(推荐);② 主角棋盘小人重产登记(推荐)——可否? | 两项都做 | +| Q27 | **K1 任务/成就系统**:① 明确不做写入 05 / ② 排 Beta 立最小设计 / ③ 进 Alpha —— 请裁 | 倾向 ①或② | +| Q28 | **D1 剧情**:Alpha 接受「零剧情」(只有层名与显示名),还是补一批碎片点缀文案? | 待你定 | + +--- + +## 附 · 内容投放实证(2026-10-13 实查 `enemy.tres` / `skills.tres`) + +> 这一节是 §一 清单之外**新查到的事实**,用于给「先做哪一项」提供判断依据。全部为实机读数,未改任何表。 + +### 附.1 遭遇表全景(20 行) + +| 关 | 节点 | 敌种 | 显示名 | hp | atk | ac | 数量 | 技能池 | +|---|---|---|---|---|---|---|---|---| +| L1 | 0 | goblin | 地精 | 8 | 1 | 0 | 1-2 | attack9 / lunge1 | +| L1 | 1 | goblin | 地精一伙 | 4 | 1 | 1 | 2-3 | attack9 / lunge1 | +| L1 | **2** | **bugbear** | **熊地精** | **50** | 1 | **3** | 1 | attack6 / charge2 / heavy2 | +| L1 | 3 | hobgoblin | 大地精 | 14 | 1 | 2 | 2-3 | attack6 / charge2 / heavy2 | +| L1 | 4 | ogre_chief | 食人魔酋长 | 72 | 1 | 8 | 1 | +harden / quake_smash | +| L2 | 0 | bugbear | 熊地精 | **50** | 1 | 1 | 1 | attack6 / lunge1 / heavy2 | +| L2 | 1 | bugbear | 熊地精猎群 | 26 | 1 | 2 | 2-3 | 同上 | +| L2 | 4 | giant_spider | 巨蜘蛛 | 28 | 1 | 2 | 2 | attack6 / bite2 / charge1 | +| L2 | 5 | bugbear | 熊地精重击手 | 88 | 3 | 8 | 1 | attack5 / lunge2 / heavy2 | +| L2 | 5 | giant_spider | 巨蜘蛛巢群 | 26 | 1 | 2 | 2-3 | attack6 / bite2 / charge1 | +| L2 | 6 / 7 | giant_spider | 巨蜘蛛巢群 | 26 | 1/2 | 2/3 | 2-3 | 同上 | +| L2 | 9 | drider | 蛛化卓尔精灵 | 130 | 3 | 10 | 1 | +venom_burst / web_snare / venom_curb | +| L3 | 0 | duergar | 灰矮人 | 62 | 3 | 2 | 1 | attack6 / charge2 / heavy2 | +| L3 | 1 / 4 / 6 | hook_horror | 钩爪恐魔(巢群) | 30/26/26 | 3 | 3 | 2 / 2-3 | attack6 / bite2 / charge1 | +| L3 | 5 | duergar | 灰矮人重装手 | 98 | 3 | 9 | 1 | attack5 / lunge2 / heavy2 | +| L3 | 7 | duergar | 灰矮人小队 | 26 | 3 | 4 | 2-3 | attack6 / charge2 / heavy2 | +| L3 | 9 | duergar_king | 灰矮人石君王 | 140 | 3 | 12 | 1 | +earth_pulse / rockslide | + +### 附.2 三条实查结论 + +**(1)A2 的新证据 + 对我自己前一轮判断的修正** + +- **新证据**:L1 N2 熊地精 **hp 50**,与 L2 N0 熊地精 **hp 50 完全相同**;且 L1 N3 大地精(hp14 / ac2)**反而低于** L1 N2(hp50 / ac3)。→ **高度疑似把 L2 那一行整行错填进了 L1**,支持 Q4 的「敌种填错 / 整行错位」分支。 +- **修正**:我前一轮把 L1 N1「地精一伙 hp4」也算作「难度倒挂」,**这条要撤回**——按总量算(hp × 中位数量):N0 = 8×1.5 = 12、N1 = 4×2.5 = 10,基本持平,属**群怪单只血量低、数量补**的正常设计,不是倒挂。所以 A2 的异常从「三处」收敛为**「一处(N2)+ 一处待确认(N0→N1 只差 2,是否要拉开)」**。 + +**(2)E5 第二关技能池:不是阻塞项,但是内容空档** + +技能表 12 行(attack / lunge / charge / heavy / harden / bite / venom_burst / web_snare / earth_pulse / quake_smash / venom_curb / rockslide)。按关看**新技能落点**: + +| 关 | 该关首次出现的新技能 | 落点 | +|---|---|---| +| L1 | lunge / charge / heavy / harden / quake_smash | harden + quake_smash = Boss 独占,lunge/heavy 普通敌有 | +| L2 | **bite**、venom_burst、web_snare、venom_curb | 后三个**全是 Boss drider 独占**;普通敌新增只有 **bite(巨蜘蛛)** | +| L3 | earth_pulse、rockslide | **全是 Boss duergar_king 独占**;普通敌(灰矮人 / 钩爪恐魔)**零新招**,用的全是 L1/L2 旧技能 | + +- L2 熊地精的池(attack/lunge/heavy)与 L1 熊地精的池(attack/charge/heavy)相比,**只是 charge↔lunge 调换,实质零新招**。 +- 结论:`enemy.tres` 的池**是可用的**(06:272 担心的「L2 无可用池」不成立,**不是 Alpha 阻塞项**);真正的问题是敌人系统 v0.13 定的「独占技随关错峰」**只做在了 Boss 侧,普通敌没跟上**——玩家在 L2/L3 打普通战斗时招式面孔与 L1 几乎一样。 + +**(3)E1 敌方 attack_type:是「加列」不是「填值」** + +`enemy.tres` 全文**没有 `attack_type` 列**——06 里说的「`enemy.tres:527` 轴未开」指的是**注释行**(该行原文是「敌方技能攻击类型轴仍未开(全部 normal 档)」)。所以 E1 的成本是 **schema 加列 + 20 行填值**,不是单纯填值。 + +### 附.3 一条**不在册**的新发现(A1 的前置,须先搞清楚) + +`enemy.tres` 的 `node_depth` 覆盖情况: + +| 关 | 已覆盖 | 缺失 | +|---|---|---| +| L1 | 0,1,2,3,4(连续) | 无 | +| L2 | 0,1,4,5,(5),6,7,9 | **2, 3, 8** | +| L3 | 0,1,4,5,6,7,9 | **2, 3, 8** | + +两关缺失模式**完全相同**。这与[关卡节点地图](../gdd/systems/冒险循环/关卡节点地图.md)「单链特例:节点编号等于它前面走过的战斗场数」的口径对不上(若是战斗序号,L2/L3 不该跳号)。 + +**两种可能,我无法自行判定**:(a) 该编号在现行骨架里本就没有战斗节点,缺失是正常的;(b) 表缺行,某些骨架走到该节点会查不到遭遇。 + +**为什么必须先查清**:A1 重构会改骨架拓扑 → `node_depth` 编号集合随之改变 → 遭遇表必须跟着补行。若 (b) 成立,说明**现在已经存在查不到行的风险**,重构会放大它。**建议列为 A1 开工前的第一个排查项。** + +> **✅ 订正(2026-10-13 迭代 24 卡①随批)**:疑点已解——`level.tres` 注释明载 L2/L3 战斗节点编号恒 ∈ {0,1,4,5,6,7}(2=奖励、3=休整、8=商店、9=Boss),故遭遇表不含 2/3/8 是**正常缺省**,(a) 成立、非缺行;本节排查项销项,A1 重构时按新拓扑重推坐标集即可(需求卡片「关联面」节同款口径)。 + +--- + +## 四、下一步 + +你按 §三 逐条给答案(可以只答与我推荐不同的条,相同的我按推荐收口)。收口后我按项目体例产出**标准需求卡片**——按批次切分,建议四批: + +1. **文档设计批**(A1 节点图重构调研 + 方案人闸)——纯文档,不开卡开发; +2. **Alpha 内容修批**(A2 第一关遭遇表 + G1 若纳入)——小批,含同种子配对读数; +3. **Alpha 表现批**(A3 棋盘观感定性 + I1 战斗一屏样张 + I5 砖面 + B8 子问题一验收)——美术线; +4. **Beta 登记批**(把 B1/B4/B5/B6/B7 与乙批各条按裁定结果回填 08 与 06,未决项销项)——纯文档收口。 + +需求卡片落地前**不动代码**(讨论期只改文档,走你立的铁律)。 diff --git a/game/core/battle_orchestrator.gd b/game/core/battle_orchestrator.gd index 3419c36e..e3e6ea5e 100644 --- a/game/core/battle_orchestrator.gd +++ b/game/core/battle_orchestrator.gd @@ -1397,14 +1397,15 @@ func _combat_segment(ri: int) -> void: _enemy_system.commit_action(u) continue # 伤害技(含普攻——倍率恒 1)= 敌方伤害技单据:基线 = round(atk×倍率)、rider 预计算归开单侧 - # (表值算术零随机),掷点/克制恒中性/hero_defense×enemy_output 池乘区/下限/rider 后置/commit - # 全归控制器管线(兑现序 = 开单序;来源敌已死在兑现时作废——死亡即不动手)。 + # (表值算术零随机),掷点/克制查表(第 9 参 = 敌方 attack_type——迭代 24 N3 轴开列前恒空串不查表)/ + # hero_defense×enemy_output 池乘区/下限/rider 后置/commit 全归控制器管线(兑现序 = 开单序; + # 来源敌已死在兑现时作废——死亡即不动手)。 var baseline: int = int(round(float(u.atk) * float(srow.get("damage_mult", 1.0)))) var rider := 0 if srow.has("rider_mult"): rider = maxi(int(db.settlement.damage_floor), int(floor(float(u.atk) * float(srow.rider_mult)))) var et := _damage.open_ticket(DamageController.KIND_ENEMY_SKILL, "enemy_action", "%s %s" % [u.display_name, String(srow.display_name)], "combat", \ - baseline, DamageController.TARGET_HERO, ri, Vector2i(-1, -1), "", rider) + baseline, DamageController.TARGET_HERO, ri, Vector2i(-1, -1), String(u.get("attack_type", "normal")), rider) et["source_unit"] = u et["context"] = {"skill_id": skill_id, "baseline": baseline} _damage.submit(et) diff --git a/game/core/damage_controller.gd b/game/core/damage_controller.gd index 12b49692..c175a501 100644 --- a/game/core/damage_controller.gd +++ b/game/core/damage_controller.gd @@ -33,7 +33,8 @@ const POLICY_SEGMENT := "segment" # B:攒批到段界 flush 统一结( # hero_attack 战斗段·主角先手:掷点折扣暴击 → 克制点数(attack_type vs 敌护甲类型)→ # hero_offense×enemy_defense 池乘区 → 下限 → 交付;行载荷带 roll/ac/tier/killed。 # enemy_skill 战斗段·敌方伤害技(含普攻):基线 = round(atk×倍率)(开单侧算好入 base_value)→ -# 掷点折扣暴击 → 克制恒中性(敌打主角无甲轴 delta 0)→ hero_defense×enemy_output +# 掷点折扣暴击 → 克制点数(attack_type vs 主角护甲类型——迭代 24 N3 轴开列, +# 前态恒中性 delta 0)→ hero_defense×enemy_output # 池乘区 → 下限 → +rider(必中附加)→ 交付 → commit_action;来源敌已死 = 作废。 # board_typed 棋盘·单目标克制直伤(穿刺弹/魔法矢正向):必中全额,克制点数进加法核,下限保底。 # board_blast 棋盘·群伤(爆裂粉尘/清障炸药):无类型恒定表值,全体存活敌逐个交付。 @@ -413,7 +414,8 @@ func _resolve_hero_attack(t: Dictionary) -> void: _outcomes[int(t.ticket_id)] = "redeemed" -# 敌方伤害技:掷点 → 折扣/暴击 → 克制恒中性 delta 0(敌打主角无甲轴)→ hero_defense×enemy_output +# 敌方伤害技:掷点 → 折扣/暴击 → 克制点数(attack_type vs 主角护甲类型——迭代 24 N3 轴开列; +# 前态恒中性 delta 0,写法同 hero_attack 的 _counter_delta 消费位)→ hero_defense×enemy_output # 池乘区 → 下限 → +rider(后置必中附加)→ 交付 → commit_action(作废单不 commit——死亡即不动手) func _resolve_enemy_skill(t: Dictionary) -> void: var hero: Dictionary = units.hero_unit() @@ -421,7 +423,8 @@ func _resolve_enemy_skill(t: Dictionary) -> void: var threshold: int = defender_ac(hero) + int(db.settlement.attack_bonus) var crit: bool = bool(roll_read.crit) var discount: int = _roll_discount(int(roll_read.roll), threshold) - var rolled: int = DamageMath.rolled_component(float(t.base_value), discount, crit, int(db.settlement.crit_multiplier), 0) + var cdelta: int = _counter_delta(String(t.attack_type), String(hero.get("armor_type", "light"))) + var rolled: int = DamageMath.rolled_component(float(t.base_value), discount, crit, int(db.settlement.crit_multiplier), cdelta) var pooled: int = DamageMath.pool_damage(rolled, clamped_pool("hero_defense"), clamped_pool("enemy_output")) var total: int = maxi(int(db.settlement.damage_floor), pooled) + int(t.rider) # rider 后置于伤害下限——独立必中加项,不进乘区 # damage_taken 发射+施加(内容数据驱动扩展批 T3——kind=enemy_skill;铁壁整备减伤订阅面: @@ -446,7 +449,7 @@ func _resolve_enemy_skill(t: Dictionary) -> void: total = maxi(int(db.settlement.damage_floor), total - shield) units.apply_damage(hero, total) var payload: Dictionary = {"target": "hero", "skill_id": String(t.context.get("skill_id", "")), "baseline": int(t.context.get("baseline", 0)), - "roll": int(roll_read.roll), "ac": threshold, "tier": discount} + "roll": int(roll_read.roll), "ac": threshold, "tier": discount, "attack_type": String(t.attack_type)} if crit: payload["crit"] = true if int(t.rider) > 0: @@ -547,7 +550,7 @@ func defender_ac(unit: Dictionary) -> int: # 克制修正点数读值(SettlementTable.armor_effectiveness:{攻击类型: {护甲: 点数}}——缺项回退 0 中性; -# attack_type "" = 无类型恒不查(群伤/反噬/地形/敌方技)) +# attack_type "" = 无类型恒不查(群伤/反噬/地形——敌方技自迭代 24 N3 起随单轴查表)) func _counter_delta(attack_type: String, armor: String) -> int: if attack_type == "": return 0 diff --git a/game/core/unit_container.gd b/game/core/unit_container.gd index f438f036..b4258fa9 100644 --- a/game/core/unit_container.gd +++ b/game/core/unit_container.gd @@ -118,6 +118,7 @@ func spawn(level_index: int, node_depth: int, hero_hp: int, unit_count_overrides "basic_streak": 0, # 保底计数:连续执行普攻的拍数(执行上报驱动) "armor_type": String(row.get("armor_type", "light")), # 护甲类型快照(克制矩阵消费面——战斗结算·战斗段;2026-09-15 命名统一批:light/ward/heavy) "armor_class": int(row.get("armor_class", 0)), # 护甲等级快照(掷点判定阈值基数——战斗结算·战斗段;2026-09-16 护甲等级掷点批) + "attack_type": String(row.get("attack_type", "normal")), # 攻击类型快照(克制矩阵消费面——敌方伤害单据第 9 参;迭代 24 N3 轴开列,缺省 normal 向后兼容) "alive": true, "is_hero": false, }) diff --git a/game/data/schemas/enemy_table.gd b/game/data/schemas/enemy_table.gd index 353532f1..899cf046 100644 --- a/game/data/schemas/enemy_table.gd +++ b/game/data/schemas/enemy_table.gd @@ -17,6 +17,11 @@ extends Resource # 2026-09-15 命名统一批:位置键 {none, a, b} → 语义键 {light, ward, heavy} = 轻甲 / 魔法护甲 / 重甲) const ARMOR_TYPES := ["light", "ward", "heavy"] +# 攻击类型封闭枚举(迭代 24 N3 2026-10-13——敌方攻击类型轴开列,承接锻造工坊迁移面⑥; +# 克制矩阵点数制键前缀 = 本枚举:normal → light 0 / ward +1 / heavy −1;pierce/magic 为差异化 +# 预留档,差异化填值属新设计另立项。可省略 + 缺省 normal 向后兼容) +const ATTACK_TYPES := ["normal", "pierce", "magic"] + # 实例化数量域(2026-10-02 修复批 T2 魔法数结构化——数量域 [1,3] 双落点收口单点: # 本表 validate 与 单位容器 spawn 守卫共用;遭遇骰结果与行值 unit_count/unit_count_max 同域。 # 2026-10-07 行集多行批:MAX 语义 = **单种数**(单行实例数上限),行集实例总数 ≤4 另由 @@ -111,6 +116,10 @@ func validate() -> Array: var at: String = String(row.get("armor_type", "light")) if not ARMOR_TYPES.has(at): errs.append({"category": "enum", "message": "%s armor_type 未知枚举: %s(域 {light, ward, heavy})" % [eid, at]}) + # attack_type(迭代 24 N3——可省略,缺省 normal 向后兼容;写法沿用 armor_type 同款) + var att: String = String(row.get("attack_type", "normal")) + if not ATTACK_TYPES.has(att): + errs.append({"category": "enum", "message": "%s attack_type 未知枚举: %s(域 {normal, pierce, magic})" % [eid, att]}) # armor_class(可省略——缺省 0 向后兼容;2026-09-16 护甲等级掷点批:防守方掷点判定阈值基数) var ac: int = int(row.get("armor_class", 0)) if ac < 0 or ac > 999: diff --git a/game/data/tables/enemy.tres b/game/data/tables/enemy.tres index 7684f2fa..df5bd973 100644 --- a/game/data/tables/enemy.tres +++ b/game/data/tables/enemy.tres @@ -22,6 +22,7 @@ rows = [{ "skill_id": "lunge", "weight": 1 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 0 }, { @@ -42,6 +43,7 @@ rows = [{ "skill_id": "lunge", "weight": 1 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 1 }, { @@ -50,7 +52,7 @@ rows = [{ "enemy_id": "bugbear", "display_name": "熊地精", "unit_count": 1, - "hp": 50, + "hp": 22, "atk": 1, "atk_min": 0, "atk_max": 2, @@ -64,8 +66,9 @@ rows = [{ "skill_id": "heavy", "weight": 2 }], +"attack_type": "normal", "armor_type": "light", -"armor_class": 3 +"armor_class": 2 }, { "level_index": 1, "node_depth": 3, @@ -87,6 +90,7 @@ rows = [{ "skill_id": "heavy", "weight": 2 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 2 }, { @@ -113,6 +117,7 @@ rows = [{ "weight": 2, "unlock_hp_pct": 50 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 8 }, { @@ -135,7 +140,8 @@ rows = [{ "skill_id": "heavy", "weight": 2 }], - "armor_type": "light", + "attack_type": "normal", +"armor_type": "light", "armor_class": 1 }, { "level_index": 2, @@ -158,6 +164,7 @@ rows = [{ "skill_id": "heavy", "weight": 2 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 2 }, { @@ -180,6 +187,7 @@ rows = [{ "skill_id": "charge", "weight": 1 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 2 }, { @@ -202,6 +210,7 @@ rows = [{ "skill_id": "heavy", "weight": 2 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 8 }, { @@ -224,7 +233,11 @@ rows = [{ }, { "skill_id": "charge", "weight": 1 +}, { +"skill_id": "venom_spit", +"weight": 2 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 2 }, { @@ -247,7 +260,11 @@ rows = [{ }, { "skill_id": "charge", "weight": 1 +}, { +"skill_id": "venom_spit", +"weight": 2 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 2 }, { @@ -270,7 +287,11 @@ rows = [{ }, { "skill_id": "charge", "weight": 1 +}, { +"skill_id": "venom_spit", +"weight": 2 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 3 }, { @@ -300,6 +321,7 @@ rows = [{ "weight": 2, "unlock_hp_pct": 50 }], +"attack_type": "normal", "armor_type": "ward", "armor_class": 10 }, { @@ -321,7 +343,11 @@ rows = [{ }, { "skill_id": "heavy", "weight": 2 +}, { +"skill_id": "shield_bash", +"weight": 2 }], +"attack_type": "normal", "armor_type": "heavy", "armor_class": 2 }, { @@ -344,6 +370,7 @@ rows = [{ "skill_id": "charge", "weight": 1 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 3 }, { @@ -367,6 +394,7 @@ rows = [{ "skill_id": "charge", "weight": 1 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 3 }, { @@ -388,7 +416,11 @@ rows = [{ }, { "skill_id": "heavy", "weight": 2 +}, { +"skill_id": "shield_bash", +"weight": 2 }], +"attack_type": "normal", "armor_type": "heavy", "armor_class": 9 }, { @@ -412,6 +444,7 @@ rows = [{ "skill_id": "charge", "weight": 1 }], +"attack_type": "normal", "armor_type": "light", "armor_class": 3 }, { @@ -434,7 +467,11 @@ rows = [{ }, { "skill_id": "heavy", "weight": 2 +}, { +"skill_id": "shield_bash", +"weight": 2 }], +"attack_type": "normal", "armor_type": "heavy", "armor_class": 4 }, { @@ -461,6 +498,7 @@ rows = [{ "weight": 2, "unlock_hp_pct": 50 }], +"attack_type": "normal", "armor_type": "heavy", "armor_class": 12 }] @@ -624,3 +662,10 @@ rows = [{ ; 读数预期:(2,5) 场敌人 3-4 只(3=重击手 1+蜘蛛 2,4=蜘蛛掷 3);L2 难度带位移读数随 Alpha 收官 M4 数值批 ; 统一执行(07 在册义务——MC 取证跑批届时另报批,本批零跑)。禁区排查:巨蜘蛛首遇位 (2,4)「固定 2 不加骰」 ; 零触碰、Boss d9 零触碰、跨关混编禁令过(两敌种首遇关均 ≤L2)、既有 19 行现值零变更。 +; 敌人表内容修批 N1(2026-10-13 用户令「按推荐方式」,迭代 24 卡①):(1,2) 熊地精降档 hp 50>>22、armor_class 3>>2—— +; 2026-09-24 阶名化解方案((1,3) 改名大地精以阶名归位化解同族血量倒挂观感)实机验证未达预期,按体验反馈重裁: +; 第一关总量曲线 12/10/50/35/72 的 5 倍墙消除(22 后曲线 12/10/22/35/72 相邻比最大 2.2);敌种 bugbear/池/数量/atk 区间零改动。 +; 曲线标定其余行归 M4 数值批。 +; N3 敌方攻击类型轴开列(2026-10-13 迭代 24 卡①,承接锻造工坊实装批迁移面⑥):20 行全填 normal 挂敌种行—— +; 不做差异化(pierce/magic 属新设计另立项)。全局平移效应=主角穿重甲受伤 −1 / 魔法护甲 +1 / 轻甲 0, +; 锻造甲路线首次具备战斗意义;克制矩阵数值零触碰(settlement.tres armor_effectiveness 不改)。 diff --git a/game/data/tables/skills.tres b/game/data/tables/skills.tres index eb50ab67..ded31cb3 100644 --- a/game/data/tables/skills.tres +++ b/game/data/tables/skills.tres @@ -81,6 +81,18 @@ rows = [{ "type": "damage", "damage_mult": 2.5, "cooldown_beats": 4 +}, { +"skill_id": "venom_spit", +"display_name": "毒吐", +"type": "damage", +"damage_mult": 1.6, +"cooldown_beats": 2 +}, { +"skill_id": "shield_bash", +"display_name": "盾击", +"type": "damage", +"damage_mult": 1.7, +"cooldown_beats": 3 }] ; 敌人技能池批(2026-09-16 用户拍板——设计权威 docs/proposal-skill-pool.md v1.0,全值 provisional 投值归 难度曲线与Boss): @@ -131,3 +143,13 @@ rows = [{ ; atk=3(L2 精英/L3 全系):attack 3 / lunge·bite 5(×1.667 +11pp)/ heavy 6 / venom_burst 8(×2.667 +6.7pp)/ ; venom_curb 6(=名义)/ quake_smash 8 / rockslide 8 ; atk=4(区间上界):全精确(4/6/6/8/10/8/10) +; +; 敌人表内容修批 N2(2026-10-13 用户令「按推荐方式」,迭代 24 卡①)——普通敌错峰两行(12→14 行): +; venom_spit 毒吐 = 伤害 ×1.6 冷却 2(巨蜘蛛族普通敌池载体,挂 (2,5)/(2,6)/(2,7),首遇教学位 (2,4) 不投—— +; 「独占技随关错峰」首轨只做在 Boss 侧的补齐;venom_spit 自 (2,5) 起投)。 +; shield_bash 盾击 = 伤害 ×1.7 冷却 3(灰矮人族普通敌池载体,挂 (3,0)/(3,5)/(3,7))。 +; 两行均不带 rider_mult:L2/L3 普通敌 atk 1–3,floor(atk×r) 恒被 damage_floor 兜成 1,与 0.75 档效果 +; 完全相同——白占字段(毒绕开护甲由 damage 直伤表达已足够)。 +; 有效倍率(int(round) 半值上取):毒吐 atk1→2/atk2→3/atk3→5;盾击 atk1→2/atk2→3/atk3→5。 +; 倍率 provisional 归 M4 数值批。池权重均 2;逐池「恰一普攻/增益≤1/妨害≤1」纪律复查过 +; (巨蜘蛛族增益仍仅 charge、灰矮人族 (3,0)/(3,7) 仅 charge·(3,5) 无增益、两族妨害 0)。 diff --git a/game/smoke/smoke_all.gd b/game/smoke/smoke_all.gd index f59bb110..1dc37529 100644 --- a/game/smoke/smoke_all.gd +++ b/game/smoke/smoke_all.gd @@ -73,6 +73,7 @@ func _run_core_smoke(db, rng) -> void: _db = db _rng = rng _smoke_ac_swap_guard() + _smoke_enemy_attack_type() _smoke_armor_roll() _smoke_pool_wiring() _smoke_board_generator() @@ -1235,6 +1236,68 @@ func _smoke_level() -> void: "模拟后 hero 表恢复基线(atk=%d hp=%d ac=%d——对配置快照)" % [int(_db.hero.atk), int(_db.hero.max_hp), int(_db.hero.armor_class)]) +# ---- 迭代 24 N3:敌方攻击类型轴(2026-10-13——表列/单位快照/单据载荷/矩阵命中证词)---- +# 克制矩阵命中证词 = 同种子三甲型配对实测(不是查表存在性证词):同种子下 armor_roll 流消费逐位一致、 +# 阈值(hero armor_class)不变,三甲型唯一差异 = 克制点数 cdelta(normal_vs_light 0 / heavy −1 / ward +1) +# → heavy 伤害 == light −1、ward == light +1(要求基线伤害 ≥ 2——地板 1 会吞 −1 位移)。 +# 承伤位移红线(卡片 §8 L3):全局位移只允许 ±1 量级——非此量级 = 矩阵消费面有未盘点的第二落点(停机)。 +func _smoke_enemy_attack_type() -> void: + print("--- 敌方攻击类型轴(迭代 24 N3)---") + # ① 表列:20 行全填 normal(N3 全填不做差异化——Q9) + var at_ok := true + var at_detail := "" + for row in _db.enemy.rows: + var at := String(row.get("attack_type", "")) + if at != "normal": + at_ok = false + at_detail += " %s:%s" % [String(row.get("enemy_id", "?")), at] + check(at_ok, "敌方 %d 行 attack_type 全填 normal(迭代 24 N3 轴开列,越轨行%s)" % [ + _db.enemy.rows.size(), at_detail if at_detail != "" else "无"]) + # ②③④ 矩阵命中证词扫描:(3,0) 灰矮人 atk 区间 [2,4] 基线足够((1,2) 熊地精 atk 1 会塌地板); + # 同 seed 三甲型各开一场、各取首个敌方伤害行,对拍 ±1。 + var matrix_found := false + var snap_ok := true + var payload_at := "" + var t_light := -1 + var t_heavy := -1 + var t_ward := -1 + for seed_offset in range(40): + var totals := {} + for armor in ["light", "heavy", "ward"]: + var rng = load("res://core/rng_service.gd").new() + rng.set_master_seed(20261013 + seed_offset) + var settlement = load("res://core/battle_orchestrator.gd").new(_db, rng) + var rows: Array = [] + settlement.step_row.connect(func(row): rows.append(row)) + if not settlement.begin_battle({"level_index": 3, "node_depth": 0, "hero_hp": int(_db.hero.max_hp), "armor_type": armor}): + totals[armor] = -1 + continue + if armor == "light": + for u in settlement._enemy_system.all_enemies(): + if String(u.get("attack_type", "")) == "": + snap_ok = false + settlement.minesweeper.settle_batch([{"action": "stop"}]) + for row in rows: + if String(row.get("type", "")) == "damage" and String(row.get("source_class", "")) == "enemy_action": + totals[armor] = int(row.get("value", 0)) + if armor == "light": + payload_at = String(row.get("attack_type", "")) # 载荷摊平在行顶层(_emit_row 摊平 extra) + break + if not totals.has(armor): + totals[armor] = -1 + if int(totals.get("light", -1)) >= 2 and int(totals.get("heavy", -1)) >= 1 and int(totals.get("ward", -1)) >= 1: + t_light = int(totals["light"]) + t_heavy = int(totals["heavy"]) + t_ward = int(totals["ward"]) + matrix_found = (t_heavy == t_light - 1 and t_ward == t_light + 1) + break + check(snap_ok, "敌方单位快照 attack_type 非空(spawn 注入面——迭代 24 N3)") + check(matrix_found and t_light >= 2, + "克制矩阵命中证词:同种子三甲型实测 heavy %d == light %d − 1 · ward %d == light %d + 1(迭代 24 N3 全局平移 −1/0/+1)" % [ + t_heavy, t_light, t_ward, t_light]) + check(payload_at == "normal", "敌方伤害技单据载荷 attack_type 非空(= %s——第 9 参传值面,迭代 24 N3)" % payload_at) + + # ---- 护甲等级掷点批·换装护栏(2026-09-16 用户拍板:百分比减伤行整体退役换装 AC,无双轨)---- # ① 换装在位:defense_up 状态行/池映射/奖励行三处全无残留,ac_up 三处就位(unit=ac,2026-09-20 改只续时不叠层); # ② 免伤墙归零护栏泛化保留(BUG-0003 事故类永久免疫):hero_defense 池任何 percent 行 @@ -1303,6 +1366,42 @@ func _smoke_ac_swap_guard() -> void: boss_ac[int(row.get("level_index", 0))] = int(row.get("armor_class", 0)) check(int(boss_ac.get(1, 0)) < int(boss_ac.get(2, 0)) and int(boss_ac.get(2, 0)) < int(boss_ac.get(3, 0)), "Boss AC 关卡台阶严格递增(%d < %d < %d)" % [int(boss_ac.get(1, 0)), int(boss_ac.get(2, 0)), int(boss_ac.get(3, 0))]) + # ③c 迭代 24 N1(2026-10-13):(1,2) 降档锚定 + 第一关总量曲线护栏 + # 降档裁决沿革:2026-09-24 阶名化解方案(50 血系设计非填错)实机未达预期,按体验反馈重裁 hp 22 / ac 2; + # 敌种 bugbear 与池 attack6/charge2/heavy2 钉死不动(防顺手改多——hobgoblin 无立绘,改敌种案已否决); + # 曲线护栏 = 相邻节点「hp × 中位数量」总量比 ≤ 2.5(12/10/22/35/72 现行全绿;不用单调不回撤——会红在 (1,0)→(1,1)) + var l12_row: Dictionary = {} + for row in _db.enemy.rows: + if int(row.get("level_index", -1)) == 1 and int(row.get("node_depth", -1)) == 2: + l12_row = row + break + var l12_pool := {} + for entry in l12_row.get("pool", []): + l12_pool[String(entry.skill_id)] = int(entry.weight) + check(String(l12_row.get("enemy_id", "")) == "bugbear" and int(l12_row.get("hp", -1)) == 22 \ + and int(l12_row.get("armor_class", -1)) == 2 \ + and l12_pool == {"attack": 6, "charge": 2, "heavy": 2}, + "第一关 (1,2) 降档锚定(bugbear 保留 · hp 22 · ac 2 · 池 attack6/charge2/heavy2 零改动——迭代 24 N1)") + var l1_totals := {} + for row in _db.enemy.rows: + if int(row.get("level_index", -1)) != 1: + continue + var cnt_lo: int = int(row.get("unit_count", 1)) + var cnt_hi: int = int(row.get("unit_count_max", cnt_lo)) + l1_totals[int(row.get("node_depth", -1))] = int(row.get("hp", 0)) * (cnt_lo + cnt_hi) / 2.0 + var curve_ok := true + var curve_detail := "" + var depths_sorted := l1_totals.keys() + depths_sorted.sort() + for i in range(1, depths_sorted.size()): + var prev: float = float(l1_totals[depths_sorted[i - 1]]) + var curr: float = float(l1_totals[depths_sorted[i]]) + var ratio: float = curr / prev if prev > 0.0 else 999.0 + if ratio > 2.5: + curve_ok = false + curve_detail += " (%d→%d):%.2f" % [depths_sorted[i - 1], depths_sorted[i], ratio] + check(curve_ok, "第一关相邻节点总量比 ≤ 2.5(12/10/22/35/72——迭代 24 N1 曲线护栏,越带%s)" % [ + curve_detail if curve_detail != "" else "无"]) # ④ 掷点参数域(加载校验已过——此处钉形状语义) var bounds: Array = _db.settlement.roll_tier_bounds var discounts: Array = _db.settlement.roll_tier_discounts @@ -3168,7 +3267,7 @@ func _smoke_skill_pool() -> void: # ① 数据面:技能表行集 + 普攻锁死 + 建议池行值 + 空池不可能(结构断言) func _smoke_skill_pool_data() -> void: - check(_db.skill.rows.size() == 12, "技能表十二行(普攻/突刺/蓄力/重击/硬化 + 撕咬/毒爆/蛛网束缚 + 大地脉动 + 震地怒击/遏毒/岩崩——前三批 + Boss 半血解锁技三行〔迭代14④ T5〕)") + check(_db.skill.rows.size() == 14, "技能表十四行(普攻/突刺/蓄力/重击/硬化 + 撕咬/毒爆/蛛网束缚 + 大地脉动 + 震地怒击/遏毒/岩崩 + 毒吐/盾击——前三批 + Boss 半血解锁技三行〔迭代14④ T5〕+ 普通敌错峰两行〔迭代 24 N2〕)") var basic: Dictionary = _db.skill.row_by_id("attack") check(not basic.is_empty() and String(basic.type) == "basic" and int(basic.cooldown_beats) == 0 and (not basic.has("damage_mult") or is_equal_approx(float(basic.damage_mult), 1.0)), @@ -3206,6 +3305,26 @@ func _smoke_skill_pool_data() -> void: var off_guard_row: Dictionary = _db.status_effect_row("off_guard") check(not off_guard_row.is_empty() and String(off_guard_row.target_side) == "hero" and String(off_guard_row.unit) == "ac", "失衡状态行(hero · ac 轴——妨害技落点,ConfigDB side 守卫正例)") + # 迭代 24 N2(2026-10-13):普通敌错峰两新行——毒吐/盾击(V3) + var spit: Dictionary = _db.skill.row_by_id("venom_spit") + check(not spit.is_empty() and String(spit.display_name) == "毒吐" and String(spit.type) == "damage" \ + and is_equal_approx(float(spit.damage_mult), 1.6) and int(spit.cooldown_beats) == 2 and not spit.has("rider_mult"), + "毒吐行(伤害 ×1.6 · 冷却 2 · 无 rider——低 atk 下 rider 恒被 damage_floor 兜成 1 白占字段,迭代 24 N2)") + var bash: Dictionary = _db.skill.row_by_id("shield_bash") + check(not bash.is_empty() and String(bash.display_name) == "盾击" and String(bash.type) == "damage" \ + and is_equal_approx(float(bash.damage_mult), 1.7) and int(bash.cooldown_beats) == 3 and not bash.has("rider_mult"), + "盾击行(伤害 ×1.7 · 冷却 3 · 无 rider——迭代 24 N2)") + var spit_sole_ok := true # 毒吐只挂巨蜘蛛族且首遇位 (2,4) 不投(Q6——教学位池零新招) + var bash_sole_ok := true # 盾击只挂灰矮人族三行 + for row in _db.enemy.rows: + for entry in row.pool: + var sid := String(entry.skill_id) + if sid == "venom_spit" and not (String(row.enemy_id) == "giant_spider" and int(row.level_index) == 2 and int(row.node_depth) >= 5): + spit_sole_ok = false + if sid == "shield_bash" and not (String(row.enemy_id) == "duergar" and int(row.level_index) == 3): + bash_sole_ok = false + check(spit_sole_ok, "毒吐投放面(仅 (2,5)/(2,6)/(2,7) 巨蜘蛛族——首遇位 (2,4) 池不动,迭代 24 N2/Q6)") + check(bash_sole_ok, "盾击投放面(仅 (3,0)/(3,5)/(3,7) 灰矮人族——钩爪恐魔零触碰,迭代 24 N2)") # 行集键 = (level_index, node_depth, enemy_id)——分支节点图批起 bugbear 等敌种跨关异池,enemy_id 不再唯一; # 2026-10-07 行集多行批:同坐标混编多行后每行各一池,键升维到三元组(行序 = 文件序 = 契约序) var expect_pools := { @@ -3217,17 +3336,17 @@ func _smoke_skill_pool_data() -> void: "2_0_bugbear": {"attack": 6, "lunge": 1, "heavy": 2}, "2_1_bugbear": {"attack": 6, "lunge": 1, "heavy": 2}, "2_4_giant_spider": {"attack": 6, "bite": 2, "charge": 1}, - "2_5_giant_spider": {"attack": 6, "bite": 2, "charge": 1}, + "2_5_giant_spider": {"attack": 6, "bite": 2, "charge": 1, "venom_spit": 2}, "2_5_bugbear": {"attack": 5, "lunge": 2, "heavy": 2}, - "2_6_giant_spider": {"attack": 6, "bite": 2, "charge": 1}, - "2_7_giant_spider": {"attack": 6, "bite": 2, "charge": 1}, + "2_6_giant_spider": {"attack": 6, "bite": 2, "charge": 1, "venom_spit": 2}, + "2_7_giant_spider": {"attack": 6, "bite": 2, "charge": 1, "venom_spit": 2}, "2_9_drider": {"attack": 6, "heavy": 2, "venom_burst": 2, "web_snare": 2, "venom_curb": 2}, - "3_0_duergar": {"attack": 6, "charge": 2, "heavy": 2}, + "3_0_duergar": {"attack": 6, "charge": 2, "heavy": 2, "shield_bash": 2}, "3_1_hook_horror": {"attack": 6, "bite": 2, "charge": 1}, "3_4_hook_horror": {"attack": 6, "bite": 2, "charge": 1}, - "3_5_duergar": {"attack": 5, "lunge": 2, "heavy": 2}, + "3_5_duergar": {"attack": 5, "lunge": 2, "heavy": 2, "shield_bash": 2}, "3_6_hook_horror": {"attack": 6, "bite": 2, "charge": 1}, - "3_7_duergar": {"attack": 6, "charge": 2, "heavy": 2}, + "3_7_duergar": {"attack": 6, "charge": 2, "heavy": 2, "shield_bash": 2}, "3_9_duergar_king": {"attack": 6, "heavy": 2, "earth_pulse": 2, "rockslide": 2}, } var pools_ok := true @@ -3241,7 +3360,7 @@ func _smoke_skill_pool_data() -> void: got[String(entry.skill_id)] = int(entry.weight) if got != expect_pools[rk]: pools_ok = false - check(pools_ok, "二十行九种池模板 = 建议池行值((L,D,enemy_id) 三元键逐行精确比对——2026-10-07 行集多行批口径;L1 地精 9/1 · 熊地精 6/2/2 · 酋长 6/2/2;L2 熊地精 6/1/2 · 蜘蛛 6/2/1 · 重击手 5/2/2 · 蛛化卓尔精灵 6/2/2/2〔(2,9)——商店房批 Boss 重编号〕;L3 灰矮人 6/2/2 · 钩爪恐魔 6/2/1 · 重装手 5/2/2 · 石君王 6/2/2〔earth_pulse·(3,9)〕——全部 provisional;三 Boss 池尾 +1 门控条目〔quake_smash/venom_curb/rockslide 权重 2+unlock_hp_pct 50——迭代14④ T5〕;混编行集同坐标多行各一池合法——首批投放 (2,5) 双行〔迭代 18 卡⑤:重击手+巢群,新行行值复制 (2,6)〕,其余坐标仍恰一行)") + check(pools_ok, "二十行九种池模板 = 建议池行值((L,D,enemy_id) 三元键逐行精确比对——2026-10-07 行集多行批口径;L1 地精 9/1 · 熊地精 6/2/2 · 酋长 6/2/2;L2 熊地精 6/1/2 · 蜘蛛 6/2/1+毒吐2〔(2,5)-(2,7) 投放,首遇位 (2,4) 不投——迭代 24 N2〕 · 重击手 5/2/2 · 蛛化卓尔精灵 6/2/2/2〔(2,9)——商店房批 Boss 重编号〕;L3 灰矮人 6/2/2+盾击2〔(3,0)/(3,7)〕 · 钩爪恐魔 6/2/1 · 重装手 5/2/2+盾击2 · 石君王 6/2/2〔earth_pulse·(3,9)〕——全部 provisional;三 Boss 池尾 +1 门控条目〔quake_smash/venom_curb/rockslide 权重 2+unlock_hp_pct 50——迭代14④ T5〕;混编行集同坐标多行各一池合法——首批投放 (2,5) 双行〔迭代 18 卡⑤:重击手+巢群,新行行值复制 (2,6)〕,其余坐标仍恰一行)") var basic_count_ok := true for row in _db.enemy.rows: var n := 0 @@ -3252,6 +3371,23 @@ func _smoke_skill_pool_data() -> void: if n != 1: basic_count_ok = false check(basic_count_ok, "每池恰一行普攻(空池不可能的加载校验同款)") + # 迭代 24 N2 复查(V4):池构成纪律零违反——增益 ≤1 / 妨害 ≤1(敌人系统 v0.13 结构冻结;载入期 + # validate_skill_pool_links 已硬闸,此处冒烟侧显式复核新投放后仍绿) + var comp_ok := true + for row in _db.enemy.rows: + var n_buff := 0 + var n_debuff := 0 + for entry in row.pool: + var srow: Dictionary = _db.skill_row(String(entry.skill_id)) + if srow.is_empty(): + continue + if String(srow.type) == "buff": + n_buff += 1 + elif String(srow.type) == "debuff": + n_debuff += 1 + if n_buff > 1 or n_debuff > 1: + comp_ok = false + check(comp_ok, "逐池增益 ≤1 · 妨害 ≤1(池构成纪律——迭代 24 N2 毒吐/盾击投放后复查)") # Boss 半血解锁技·编排集成断言(迭代14④ T6——真实编排回路:半血 → 下轮开轮闩检查 → 解锁行恰一次) var st_unlock: Dictionary = {"rows": []} var sett_u = load("res://core/battle_orchestrator.gd").new(_db, _fresh_rng(4242)) diff --git a/roadmap.md b/roadmap.md index 7c8b6ec0..57120ed2 100644 --- a/roadmap.md +++ b/roadmap.md @@ -24,7 +24,7 @@ ## 当前位置(2026-10-11 刷新) - **里程碑语义(2026-10-09 立规换代,详见下方里程碑表的换代注)**:现行里程碑 = **M3「Alpha 版本的完整实现」**——用户未明令宣布完成前停留 M3,迭代只排 M3 需求;M4=Beta 版本的完整实现,一律不排期。下文里程碑表的旧编号(M-3/M-4)保留作历史序列,语义以本节为准。 -- **迭代进度**:迭代 19 五卡全部已入库(2026-10-08);**迭代 20=专长实装批 ✅ 已入库**(2026-10-11,出口闸全绿;残留人闸=实机目检五件+V20/V21/V22 人工核对半,07 在册);**迭代 21=天赋树实装批 ✅ 已入库(2026-10-12 U0 开工单会话交付,T0-T7 全绿;残留人闸=实机目检四柜台)**;**迭代 22=秘宝体系实现重构落地批 ✅ 已入库(2026-10-12 单会话交付,T1-T7 全绿;残留人闸=实机目检秘宝解锁-装配流程)**;**迭代 23=锻造工坊实装批 ✅ 已入库(2026-10-12 单会话交付,T0-T7 全绿;残留人闸=实机目检工作间形态与购买交互)**;**迭代 24=敌人表内容修批(三关)待开工**(2026-10-13 用户令编入,卡①;需求卡片 v1.1 零待裁点,开工门=U0;**用户预留:后续其他需求陆续编入本迭代**);**迭代 25=UI 全局主题批 ✅ 已编入**(2026-10-13 用户令编入,卡①;需求卡片 v1.2 零待裁点,开工门=U0;**`game/` 代码面与迭代 24 零重叠,可并行开发**——共享文档四处重叠见迭代 25 表行注记);**迭代 26+**=M4 数值批(Beta 位·未排期——用户令 2026-10-07:后续新迭代一律不先做 M4;迭代 24 与 25 占位后本批顺延)。 +- **迭代进度**:迭代 19 五卡全部已入库(2026-10-08);**迭代 20=专长实装批 ✅ 已入库**(2026-10-11,出口闸全绿;残留人闸=实机目检五件+V20/V21/V22 人工核对半,07 在册);**迭代 21=天赋树实装批 ✅ 已入库(2026-10-12 U0 开工单会话交付,T0-T7 全绿;残留人闸=实机目检四柜台)**;**迭代 22=秘宝体系实现重构落地批 ✅ 已入库(2026-10-12 单会话交付,T1-T7 全绿;残留人闸=实机目检秘宝解锁-装配流程)**;**迭代 23=锻造工坊实装批 ✅ 已入库(2026-10-12 单会话交付,T0-T7 全绿;残留人闸=实机目检工作间形态与购买交互)**;**迭代 24=敌人表内容修批(三关)✅ 已入库(2026-10-13 /goal+iter U0 开工单会话交付——N1 (1,2) 降档 hp22/ac2·N2 毒吐盾击两行六池·N3 敌方 attack_type 轴全填 normal+敌方结算克制消费点;冒烟 949/0+run_all 25 套+重闸全绿+MC 同种子配对 40 局×both 位移在带;实现报告=design/qa/iter24-实现报告-2026-10-13.md;残留人闸=实机目检三观测〔07 ㉓〕;代拍板追认单+GDD 反哺点五条待用户;**本迭代位仍预留后续追加卡——用户将把其他需求陆续编入本迭代**);;**迭代 25=UI 全局主题批 ✅ 已编入**(2026-10-13 用户令编入,卡①;需求卡片 v1.2 零待裁点,开工门=U0;**`game/` 代码面与迭代 24 零重叠,可并行开发**——共享文档四处重叠见迭代 25 表行注记);**迭代 26+**=M4 数值批(Beta 位·未排期——用户令 2026-10-07:后续新迭代一律不先做 M4;迭代 24 与 25 占位后本批顺延)。 - **近期主战场**:迭代 20/21/22/23 残留人闸(实机目检四批:专长五件+营地四柜台+秘宝解锁装配+锻造工作间,07 在册);**下一前沿=M4 数值批,待 U0 发令**(锻造工坊批 provisional 数值终值归其统一标定)。 - **实时状态**:以根目录 [active.md](active.md) 顶部「当前状态快照」节为准(`stage.txt` 已定性为旧阶段开关,仅存档)。 @@ -80,7 +80,7 @@ | 迭代 22 | **秘宝体系实现重构落地批**——需求卡片=design/research/需求卡片-秘宝体系实现重构落地批-2026-10-11.md(v1.3 C1-C6 全裁);**2026-10-11 用户令编入**:新目录 12 件实装+解锁混合制(逐件分配锁定表在卡)+装配不可变(冒险中零更换)+旧数据行清理+效果引擎接入;槽位来源不在本批(树接口接缝——迭代 21 已实装树点亮数槽位源,本批直接消费)+装配档位格约束;估时 6d(区间 5-7d)——**✅ 已入库(2026-10-12,/goal+iter U0 开工单会话交付:T1 数据层 12 行换代+schema 扩签/T2 解锁服务+工坊面退役+档位格约束/T3 效果引擎接入+扩签+常时参数面+试炼镐积点口+充能周期/T4 呈现换代+呈现桥+试炼镐 HUD 入口/T5 替换子交互拆除+库存保留注记/T6 验收闸断言;冒烟 898/0+run_all 22 套+重闸全绿;实现报告=design/qa/iter22-实现报告-2026-10-12.md;残留人闸=实机目检秘宝解锁-装配正常流程〔07 ㉑〕)** | 迭代 23+ | **M4 数值批(**原 22+;迭代 21 已编入天赋树实装批、迭代 22 已编入秘宝实装批,均 2026-10-11 用户令**——**Alpha 收官位·未排期**〔2026-10-09 语义换代:M4=Beta 阶段、非 Alpha 收官位,M3 未由用户明令关闭前不排期维持〕——2026-10-05 用户令编入迭代 17 卡②;2026-10-06 用户令移出独立成批并定序「Alpha 阶段最后——内容补全先行、统一数值调整殿后」〔当日曾被编入迭代 18 为收官卡,2026-10-07 用户令撤回〕;**2026-10-07 用户令二次后移:后续新迭代(迭代 20 起)一律不先做 M4,除非用户明确要求启动 M4 批次**)**:四件数值欠账合一批——①削弱档位终值(weaken 现值 −65/duration 2/refresh 考证在册;叠层改续时语义已定案,差 duration 终值+当量锚复算)②调参批数值点评(06 条目现行登记五条——任务口径「八条」与条目五条不符,需求卡片 §2.2 已呈报差异以条目为准)③迭代 10 奖励重构联动欠账①②(钥石产出重标 boss_keystone 首杀 3/3/3·复杀 2/2/3 provisional + 通关率带重扫〔通关回血 20%+AP 件首轮 +1〕)④元进度定价剩余面(forge base 20/比 150 考证在册——06 条目文本「base 10」滞后于 2026-09-22 对齿批已呈报;Boss 两档终值)。读数义务随批=迭代 14 两件后置复算(T6 MC 四带复算+T7 技能池节奏重测,均挂 07);顺路修复 damage_probe A1 改前既有红灯(判式换代批出口报告 §四.7 在册)。**硬约束:一切 MC/verifier 跑批发起前须用户批准;调参联动禁独立调参网络(β 带 [1.2,2.5] 逐 u 检算)**。需求卡片=`design/research/需求卡片-M4数值批-2026-10-05.md`(**v1.2 2026-10-06 案C 增补+联审修订**:v1.1 三事实与第五推算件照旧;联审=P3 转正顺延至重扫读数后/检算工具 WEAKEN_PCT 入同步面/F11 两句死文本全刷/T3·T5 四带复算并账一次跑批双认账/R5 改前锚=本批新立案C 锚/估时段一勘误 4.25d;案C 增补内容照旧=§2.6 三事实〔行为换代/锚全作废/难度预判〕+T0 推算稿第五件=对拍锚按新序重推导+T6 四带复算按案C 新行为首采;T0-T8≈6.25d,天然切分点 T4 末;🔴 契约 5 条含跑批批准制;**✅ 裁点全裁(2026-10-06 用户令:P1甲=维持 2 场·magnitude [60,85] 带内当量锚复算、具体值随出口 provisional 追认/P2甲 不对称有意/P3甲 3-3-3·2-2-3 维持、转正顺延至重扫读数到账且带内(Q4 二裁)/P4甲 不立直购价);开工=U0**) | 迭代 18 全部内容卡(③④⑤⑦)出口+全部内容批行为变更落定+**用户发令(未排期)**——重锚窗口须收尽全部内容批行为变更 | T0-T8≈6.25d(超软盒预挂,段一 T0-T4≈4.25d〔v1.2 勘误,原 4.5 系加总错误〕/段二 T5-T8≈2.0d) | | 迭代 23 | **锻造工坊实装批(2026-10-12 用户令编入——设计面 v0.6 就绪)**:按 [锻造工坊](design/gdd/systems/跨局循环/锻造工坊.md) **v0.6** 设计权威文档实装——迁移面:①新建锻造路线行族(现役 `meta.tres` forge_products 已随迭代 21 T5 退役、无改造对象;钥石定价历史考古 20/150%、投值归 M4)②两根类型轴所有权移交(默认值归锻造工坊配置常驻持有、hero.tres 静态表两轴删除、选中态写存档域+冒险开始参数面注入)③存档域 forge_routes(已预登记存档序列化.md v7 计划行)④满级特效本期不实装(只留扩展位)⑤敌方 attack_type 填值归敌人系统/战斗结算侧(非本批——敌方定义数据、与名字血量同时读写、无独立时序)⑥术语登记(v0.6 已做完:术语表+registry)⑦数值验证义务=改前/改后同种子配对读数。解锁通道=并联双通道;一次冒险=一武器类型+一甲型。**✅ 已全批入库(2026-10-12,/goal+iter U0 开工单会话交付——worktree g-plan2-iter23-forge 七提交;T1 行族+T2 两轴移交+T3 写口族+T5 存档 v7(序调先行)+T4 注入链+T6 工作间 UI+T7 收口;冒烟 938/0+run_all 24 套+probe click/full+render_gate+doc 三闸/熵增对基线零新增+MC 同种子配对零漂移;实现报告=design/qa/iter23-实现报告-2026-10-12.md;残留人闸=实机目检工作间形态与购买交互〔07 在册〕;代拍板追认单+GDD 反哺点待用户)** | ✅ 已入库(出口闸全绿+实机目检归用户 07 在册) | 估时随需求卡片立项(实际单会话) | -| 迭代 24 | **①敌人表内容修批(三关)(2026-10-13 用户令编入;**本迭代位预留后续追加卡**——用户将把其他需求陆续编入本迭代)**:需求卡片=`design/research/需求卡片-敌人表内容修批-2026-10-13.md`(**v1.1**——grilling 复核九问 Q1-Q9 已全裁、零待裁点、开工门=U0)。三件事合一:**N1** 第一关 (1,2) 降档(`enemy.tres:48` 改两值:`hp` 50→22、`armor_class` 3→2;**敌种 `bugbear` 不动**——`enemy.tres:594-600` 注释载明该行 50 血系 2026-09-24 用户裁决的设计而非填错,且 `hobgoblin` 无立绘,故「改敌种」案已否决;本批定性=阶名化解方案实机未达预期按 2026-10-13 体验反馈重裁)· **N2** 第二/三关普通敌技能投放(`skills.tres` 12→14 行:新增 `venom_spit` 毒吐 damage 1.6/CD2 挂 (2,5)/(2,6)/(2,7) 巨蜘蛛族、`shield_bash` 盾击 damage 1.7/CD3 挂 (3,0)/(3,5)/(3,7) 灰矮人族;**首遇教学位 (2,4) 池不动**,venom_spit 自 (2,5) 起投;两新行均不带 `rider_mult`——低 atk 下恒被 `damage_floor` 兜成 1 与 0.75 档等效)· **N3** 敌方 `attack_type` 加列并全填 `normal`(挂**敌种行**、20 行同值,不做差异化;`enemy_table.gd` 加枚举校验 + `unit_container.gd:119` 加单位快照 + `battle_orchestrator.gd:1406` 第 9 参由 `""` 改传值;全局平移=穿重甲受伤 −1 / 魔法护甲 +1 / 轻甲 0,使锻造甲路线首次具备战斗意义)。**契约要点**:池与敌种键属**契约级**,改必同步 `smoke_all.gd:3211` `expect_pools`(N1 因键值不变零改动、N2 同步 6 键);节点图拓扑零触碰(A1 关卡节点图重构的地盘);(1,1) 地精一伙不在本批范围(「第二个节点」字面偏差已登记 06)。**收口去向**:06「第一关遭遇表数值异常」「第二关技能池与投放」与锻造工坊条迁移面⑥ 三条一并销号;08「二·内容量」敌种池行注摘除 | 迭代 23 出口(✅ 已满足)+ 开工门=U0(卡片零待裁点,发令即开工) | T0-T3≈1.75–2.25d(闸=冒烟基线 938/0 + run_all 24 套 + 探针 + 改前改后同种子 MC 配对读数三组) | +| 迭代 24 | **①敌人表内容修批(三关)(2026-10-13 用户令编入;**本迭代位预留后续追加卡**——用户将把其他需求陆续编入本迭代)**:需求卡片=`design/research/需求卡片-敌人表内容修批-2026-10-13.md`(**v1.1**——grilling 复核九问 Q1-Q9 已全裁、零待裁点、开工门=U0)。三件事合一:**N1** 第一关 (1,2) 降档(`enemy.tres:48` 改两值:`hp` 50→22、`armor_class` 3→2;**敌种 `bugbear` 不动**——`enemy.tres:594-600` 注释载明该行 50 血系 2026-09-24 用户裁决的设计而非填错,且 `hobgoblin` 无立绘,故「改敌种」案已否决;本批定性=阶名化解方案实机未达预期按 2026-10-13 体验反馈重裁)· **N2** 第二/三关普通敌技能投放(`skills.tres` 12→14 行:新增 `venom_spit` 毒吐 damage 1.6/CD2 挂 (2,5)/(2,6)/(2,7) 巨蜘蛛族、`shield_bash` 盾击 damage 1.7/CD3 挂 (3,0)/(3,5)/(3,7) 灰矮人族;**首遇教学位 (2,4) 池不动**,venom_spit 自 (2,5) 起投;两新行均不带 `rider_mult`——低 atk 下恒被 `damage_floor` 兜成 1 与 0.75 档等效)· **N3** 敌方 `attack_type` 加列并全填 `normal`(挂**敌种行**、20 行同值,不做差异化;`enemy_table.gd` 加枚举校验 + `unit_container.gd:119` 加单位快照 + `battle_orchestrator.gd:1406` 第 9 参由 `""` 改传值;全局平移=穿重甲受伤 −1 / 魔法护甲 +1 / 轻甲 0,使锻造甲路线首次具备战斗意义)。**契约要点**:池与敌种键属**契约级**,改必同步 `smoke_all.gd:3211` `expect_pools`(N1 因键值不变零改动、N2 同步 6 键);节点图拓扑零触碰(A1 关卡节点图重构的地盘);(1,1) 地精一伙不在本批范围(「第二个节点」字面偏差已登记 06)。**收口去向**:06「第一关遭遇表数值异常」「第二关技能池与投放」与锻造工坊条迁移面⑥ 三条一并销号;08「二·内容量」敌种池行注摘除 | ✅ 已入库(2026-10-13 单会话交付,出口闸全绿:冒烟 949/0+run_all 25 套〔485 批基线漂移 24→25 在案〕+探针 click/full+render_gate golden 0.00%+doc 三闸/熵增对基线零新增+MC 配对三组读数;实现报告=design/qa/iter24-实现报告-2026-10-13.md;残留人闸=实机目检三观测 07 ㉓) | | 迭代 25 | **①UI 全局主题批(引擎原生控件接管皮肤)(2026-10-13 用户令编入;UI 美化三层诊断 · 第一层第一条)**:需求卡片=`design/research/需求卡片-UI全局主题批-2026-10-13.md`(**v1.2**——grilling 三裁点全裁+同日审核六点补充落文、零待裁点、开工门=U0)。三件事合一:**T0** 新建 `game/assets/theme/main_theme.tres` 并挂 `project.godot` 的 `gui/theme/custom`,覆盖滚动条 / 滑轨 / 悬停气泡 / 输入件 / 分隔线等引擎原生控件,并预盖 CheckBox / CheckButton / OptionButton 及其弹层 PopupMenu(**须在新主题内显式设 `default_font`=现役同一字体文件**,防挂主题后中文字形缺失;新增小位图落 `game/assets/art/ui/gen/`,色值溯源表落 `game/assets/theme/README.md`)· **T1** 退役 `ui_kit.gd` 的 `tooltip_theme()` 与 `styled_slider()` 两处局部做法、消 `debug_overlay._slider_row` 双轨(🔴 旧实现同批删除,禁新旧并存)· **T2** 断言与文档同步闸。**顺手销号**=06 第三层「UI 元素细节修」之①(音量滑轨两段对比度重配,以「拖到中点一眼可辨」为准绳)。**契约要点**:🔴 Button 类型词条零接触(五态矩阵归 06 第一层第二条「UI 按钮状态矩阵缺档」,其悬停态有未裁点)· 🔴 focus 族词条零定义(归按钮批与「棋盘战斗键盘/手柄输入」连带裁决点③)· 🔴 不新增美术素材、不改美术圣经 §7 · 🔴 全局纹理过滤不动(归 06 第一层第三条)。**收口去向**:06「UI 全局主题资源缺失」与「UI 元素细节修」之①两条销号;08「三·界面」同名行与「五·表现」六行回填 | **无迭代前置**(卡片零待裁点,发令即开工)。**可与迭代 24 并行开发**:两者 `game/` 代码面零重叠(本批改 ui_kit / ui_assembler / debug_overlay / settings_overlay / camp_overlay_view / project.godot 与新增 assets/theme/;迭代 24 改 enemy.tres / skills.tres / enemy_table.gd / unit_container.gd / battle_orchestrator.gd)——**但共享文档面有四处确定重叠**:`smoke_all.gd`(两边都新增断言)、`06-待办清单.md`(两边都销号)、`roadmap.md`(两边都改迭代行)、`08-Alpha版本标准.md`(两边都回填,且它**至今是未跟踪文件**=无冲突检测、并发改会静默丢失)。**后合入的一方须先 merge master 解冲突,再跑四闸** | T0-T2≈0.5–1d(闸=冒烟基线以开工日实测为准〔最近记录 938/0〕+run_all+探针+新增主题词条断言 V1-V6;08 系未跟踪文件,改前须手工搬运进 worktree) | | 迭代 26+ | **M4 数值批(**原 22+;迭代 21 已编入天赋树实装批、迭代 22 已编入秘宝实装批(均 2026-10-11 用户令)、迭代 23 已编入锻造工坊实装批(2026-10-12 用户令)**;迭代 24 已由用户令编入敌人表内容修批、迭代 25 已由用户令编入 UI 全局主题批(2026-10-13),本批顺延 26+**——**Alpha 收官位·未排期**〔2026-10-09 语义换代:M4=Beta 阶段、非 Alpha 收官位,M3 未由用户明令关闭前不排期维持〕——2026-10-05 用户令编入迭代 17 卡②;2026-10-06 用户令移出独立成批并定序「Alpha 阶段最后——内容补全先行、统一数值调整殿后」〔当日曾被编入迭代 18 为收官卡,2026-10-07 用户令撤回〕;**2026-10-07 用户令二次后移:后续新迭代(迭代 20 起)一律不先做 M4,除非用户明确要求启动 M4 批次**)**:四件数值欠账合一批——①削弱档位终值(weaken 现值 −65/duration 2/refresh 考证在册;叠层改续时语义已定案,差 duration 终值+当量锚复算)②调参批数值点评(06 条目现行登记五条——任务口径「八条」与条目五条不符,需求卡片 §2.2 已呈报差异以条目为准)③迭代 10 奖励重构联动欠账①②(钥石产出重标 boss_keystone 首杀 3/3/3·复杀 2/2/3 provisional + 通关率带重扫〔通关回血 20%+AP 件首轮 +1〕)④元进度定价剩余面(forge base 20/比 150 考证在册——06 条目文本「base 10」滞后于 2026-09-22 对齿批已呈报;Boss 两档终值)。读数义务随批=迭代 14 两件后置复算(T6 MC 四带复算+T7 技能池节奏重测,均挂 07);顺路修复 damage_probe A1 改前既有红灯(判式换代批出口报告 §四.7 在册)。**硬约束:一切 MC/verifier 跑批发起前须用户批准;调参联动禁独立调参网络(β 带 [1.2,2.5] 逐 u 检算)**。需求卡片=`design/research/需求卡片-M4数值批-2026-10-05.md`(**v1.2 2026-10-06 案C 增补+联审修订**:v1.1 三事实与第五推算件照旧;联审=P3 转正顺延至重扫读数后/检算工具 WEAKEN_PCT 入同步面/F11 两句死文本全刷/T3·T5 四带复算并账一次跑批双认账/R5 改前锚=本批新立案C 锚/估时段一勘误 4.25d;案C 增补内容照旧=§2.6 三事实〔行为换代/锚全作废/难度预判〕+T0 推算稿第五件=对拍锚按新序重推导+T6 四带复算按案C 新行为首采;T0-T8≈6.25d,天然切分点 T4 末;🔴 契约 5 条含跑批批准制;**✅ 裁点全裁(2026-10-06 用户令:P1甲=维持 2 场·magnitude [60,85] 带内当量锚复算、具体值随出口 provisional 追认/P2甲 不对称有意/P3甲 3-3-3·2-2-3 维持、转正顺延至重扫读数到账且带内(Q4 二裁)/P4甲 不立直购价);开工=U0**) | 迭代 18 全部内容卡(③④⑤⑦)出口+全部内容批行为变更落定+**用户发令(未排期)**——重锚窗口须收尽全部内容批行为变更 | T0-T8≈6.25d(超软盒预挂,段一 T0-T4≈4.25d〔v1.2 勘误,原 4.5 系加总错误〕/段二 T5-T8≈2.0d) |