清理: design/存量超期批——删86件(dev四组11+qa证据39=只留最新规首跑+research 34)+引用改写17处/15文件+doc-conventions §11新增证据只留最新(v13)+美术审计报告留置呈报(工作日志 413)
This commit is contained in:
1 parent
74fe99733f
commit
8e02dcf05b
102 files changed
+184
-40450
No files matched your search
@@ -11,6 +11,7 @@
|
|||||||
- **工程路线图**:`production/roadmap.md`(2026-09-17 建——里程碑时间线 + 路线图;实时状态看下方快照节)
|
- **工程路线图**:`production/roadmap.md`(2026-09-17 建——里程碑时间线 + 路线图;实时状态看下方快照节)
|
||||||
|
|
||||||
## 当前状态快照(收口批先更新本节,再追加台账;≤10 行)
|
## 当前状态快照(收口批先更新本节,再追加台账;≤10 行)
|
||||||
|
- **更新于**:2026-10-09(**design/ 存量超期清理批落籍 master**,用户逐类判决——QA 新立规「证据只留最新」,工作日志 413):删 86 件=dev 四组 11(concept-map 全家/迁移计划/评审/追溯矩阵,随批清 7 文件指路句)+qa 39(证据只留最新规首跑:保留 iter19 七件+迭代18目检总清单〔待人〕+ui-audit 树与报告=最新证据)+research 33 轨迹+3 未跟踪(任务书 17/审查四/奇物调研四〔用户点名核验:18 件框架已落 GDD v3.0〕/研究三/双层BD/MC成本/基准/UI对照/第三套架构图/旧杂件);引用改写 13 文件;doc-conventions §11 新增证据只留最新行(v13);**美术审计报告留置未删**(P0① art-bible 仍引用已丢失冻结样张+P0② 主角重产未登记——严重事项呈用户,待裁后处置)。
|
||||||
- **更新于**:2026-10-09(**design/ 结构问题三连修落籍 master**,用户三令直批——主区直接批纯文档+doc 工具扫描列表,零测试〔非 loop 批未点名〕,工作日志 412):①案甲 design/diagrams 消灭——gdd-architecture.html/json 迁 design/dev/architecture/(json 自引用随迁改正),熵增闸子目录越界红灯清零、白名单零改动;②旧档 GDD 引用全量摘除——design/archive/gdd-2026-09-14/(9f1507dc 已删)指涉 31 处/29 文件+代码头注与 schema 头注 13 文件+registry 评审日志死指路 5 处清零(「旧版参考」死链行 25 文件/CLAUDE.md 两处/02 旧代号句改写+旧骨架索引行摘〔版本行 v1.15〕/doc-conventions §9 列项删〔v12〕/code-conventions §1.4 头注示例换代/code+schema 头注十三文件同步换代/entities.yaml 五行历史注记化);③doc_link/doc_term_audit 扫描列表摘 design/ux 死路径(7f24b640 搬迁残留)。闸=熵增闸转绿+doc 三闸基线零新增;纯删行文件不加版本行(断链修复先例,本行即记录);并行未提交落文零吞并(选择性暂存)。
|
- **更新于**:2026-10-09(**design/ 结构问题三连修落籍 master**,用户三令直批——主区直接批纯文档+doc 工具扫描列表,零测试〔非 loop 批未点名〕,工作日志 412):①案甲 design/diagrams 消灭——gdd-architecture.html/json 迁 design/dev/architecture/(json 自引用随迁改正),熵增闸子目录越界红灯清零、白名单零改动;②旧档 GDD 引用全量摘除——design/archive/gdd-2026-09-14/(9f1507dc 已删)指涉 31 处/29 文件+代码头注与 schema 头注 13 文件+registry 评审日志死指路 5 处清零(「旧版参考」死链行 25 文件/CLAUDE.md 两处/02 旧代号句改写+旧骨架索引行摘〔版本行 v1.15〕/doc-conventions §9 列项删〔v12〕/code-conventions §1.4 头注示例换代/code+schema 头注十三文件同步换代/entities.yaml 五行历史注记化);③doc_link/doc_term_audit 扫描列表摘 design/ux 死路径(7f24b640 搬迁残留)。闸=熵增闸转绿+doc 三闸基线零新增;纯删行文件不加版本行(断链修复先例,本行即记录);并行未提交落文零吞并(选择性暂存)。
|
||||||
- **更新于**:2026-10-07(**天赋树货币甲案修复+卡③提案S2纠偏批落籍 master 3b86c9b**,worktree g-plan2-iter18-treefix 三提交 d7a6406/30154e5/129c21c+主区 merge --no-ff 零冲突,工作日志 396;零行为变更静态批):树全钥石单币落定(2026-10-07 用户裁「按甲方案修复完」——meta_tree.tres 脊柱 16 行 gp→keystone+schema 枚举 {keystone,free}+tree_buy 直走 spend_keystone+购买钮「购买 N 钥石」+meta.tres 陈旧注释订正,T8 双币骨架披露销账);卡③提案 v1.1 货币前提全案订正(5b/5c 换代钥石口径+修订记录);主区落籍闸=冒烟 834/0+probe_gate --click 全绿;MC 零跑静态论证
|
- **更新于**:2026-10-07(**天赋树货币甲案修复+卡③提案S2纠偏批落籍 master 3b86c9b**,worktree g-plan2-iter18-treefix 三提交 d7a6406/30154e5/129c21c+主区 merge --no-ff 零冲突,工作日志 396;零行为变更静态批):树全钥石单币落定(2026-10-07 用户裁「按甲方案修复完」——meta_tree.tres 脊柱 16 行 gp→keystone+schema 枚举 {keystone,free}+tree_buy 直走 spend_keystone+购买钮「购买 N 钥石」+meta.tres 陈旧注释订正,T8 双币骨架披露销账);卡③提案 v1.1 货币前提全案订正(5b/5c 换代钥石口径+修订记录);主区落籍闸=冒烟 834/0+probe_gate --click 全绿;MC 零跑静态论证
|
||||||
- **更新于**:2026-10-07(**迭代 18 四卡全部落籍+总收口**,goal 编排会话:③ de067ae〔台账 391〕/⑤ 0dbe3c3〔392〕/⑦ b91b973〔393〕/④ b98ea83〔394〕+总条 395;Wave 1 三卡并行+④ 硬等⑦落籍后串行;主区终态=冒烟 834/0〔本迭代 811→834〕+probe_gate 全绿+layout/tune exit0):**待用户三件**=①卡③ 提案 17 裁点盘问裁决(异步;design/qa/iter18-forge-exit-report-2026-10-07.md §四)②实机目检总清单(design/qa/迭代18-实机目检总清单-2026-10-07.md:⑤四项/⑦八项/④六项)③卡⑦代拍板追认六项+卡④追认十一项;卡⑤ MC 取证顺延 Alpha 收官 M4 数值批届时另令,M4 保持 Alpha 收官位未排期待发令
|
- **更新于**:2026-10-07(**迭代 18 四卡全部落籍+总收口**,goal 编排会话:③ de067ae〔台账 391〕/⑤ 0dbe3c3〔392〕/⑦ b91b973〔393〕/④ b98ea83〔394〕+总条 395;Wave 1 三卡并行+④ 硬等⑦落籍后串行;主区终态=冒烟 834/0〔本迭代 811→834〕+probe_gate 全绿+layout/tune exit0):**待用户三件**=①卡③ 提案 17 裁点盘问裁决(异步;design/qa/iter18-forge-exit-report-2026-10-07.md §四)②实机目检总清单(design/qa/迭代18-实机目检总清单-2026-10-07.md:⑤四项/⑦八项/④六项)③卡⑦代拍板追认六项+卡④追认十一项;卡⑤ MC 取证顺延 Alpha 收官 M4 数值批届时另令,M4 保持 Alpha 收官位未排期待发令
|
||||||
@@ -917,3 +918,4 @@
|
|||||||
406. **迭代 19 五卡 goal 总收口(2026-10-08,编排会话)**:五卡+尾裁微批全部落籍 master(卡⓪ 9160942/卡③ 568101b/卡② rebase 后合并/卡④ stash 避让合并/卡① rebase+CLAUDE.md stash 避让合并/微批 4a35046);六项用户裁决全落(卡④行字段按推荐全收/卡②甲修复批/卡①甲清障续跑/卡⓪甲 resume 受理/卡③甲 chickensoft/裁点②甲 ui_layout 入 CI=总收口批接线);新重闸口径主区首跑全量=冒烟 846/0 三闸过+probe_gate 默认/--click/--full 七探针全绿残留 0+render_gate 全绿(shot_checker A-D 过+fx 7 帧+board L1-L3+golden 0.00%×3)+run_all 18 套全绿;doc 三闸/熵增首跑翻出存量欠账 7 件〔gdd_lint 比例 3+熵增 diagrams+奇物双死链+拔旗术语旗;经 T0 基点复测确认非本迭代新增,仅数据配置 v0.4 历史行死链系卡①删件连带=已入 doc_link_known.txt 登记〕全部登记 06 交后续批;交付=design/qa/iter19-acceptance-package-2026-10-08.md(实机目检总清单+代拍板追认单八项);stage.txt 换代 M-4 Iteration 19 Closed;worktree 卡⓪①②③④+微批全部清场;并行会话共存记录=道具批 6e05446 与秘宝.md/CLAUDE.md 在飞 WIP 经三次 stash 避让零丢失。
|
406. **迭代 19 五卡 goal 总收口(2026-10-08,编排会话)**:五卡+尾裁微批全部落籍 master(卡⓪ 9160942/卡③ 568101b/卡② rebase 后合并/卡④ stash 避让合并/卡① rebase+CLAUDE.md stash 避让合并/微批 4a35046);六项用户裁决全落(卡④行字段按推荐全收/卡②甲修复批/卡①甲清障续跑/卡⓪甲 resume 受理/卡③甲 chickensoft/裁点②甲 ui_layout 入 CI=总收口批接线);新重闸口径主区首跑全量=冒烟 846/0 三闸过+probe_gate 默认/--click/--full 七探针全绿残留 0+render_gate 全绿(shot_checker A-D 过+fx 7 帧+board L1-L3+golden 0.00%×3)+run_all 18 套全绿;doc 三闸/熵增首跑翻出存量欠账 7 件〔gdd_lint 比例 3+熵增 diagrams+奇物双死链+拔旗术语旗;经 T0 基点复测确认非本迭代新增,仅数据配置 v0.4 历史行死链系卡①删件连带=已入 doc_link_known.txt 登记〕全部登记 06 交后续批;交付=design/qa/iter19-acceptance-package-2026-10-08.md(实机目检总清单+代拍板追认单八项);stage.txt 换代 M-4 Iteration 19 Closed;worktree 卡⓪①②③④+微批全部清场;并行会话共存记录=道具批 6e05446 与秘宝.md/CLAUDE.md 在飞 WIP 经三次 stash 避让零丢失。
|
||||||
411. **06-待办清单存量条目清理批(2026-10-09,用户令=「已完成的东西未从待办清单删除→删除修正完」〔本会话答复制证后当场授权〕;纯文档零代码零测试;.zcode 补丁法主区落盘未提交)**:按 06 头部「事项解决后从本清单移除(2026-09-18 口径,git 历史即留痕)」删已解决未移除条目九条——①render_gate 首跑 S1 存量红三件(用户 2026-10-08 裁甲清障 a623ec3 落籍+render_gate 转绿 golden 三连跑 0.00%,条目状态行未随批换代=本批清理成因)②内容数据驱动扩展批·迭代17头卡(e535436 已并 master,状态行「待合并」滞后;遗留两项去向=dig_charge 积点模判定边界随道具退役批删行消解+主动件 kind 词族改名呈报级存 exit report 与提交说明 a33ddaf)③菜单开局未传同调装配与局外树规则(✅9160942 落籍+遗留 resume tree_rules 随尾裁微批 768e366 闭环,双重完成)④关卡开场行攻血初始表值(卡⓪②随 9160942 已落「开场行改传生效值」,状态行「待开工」滞后)⑤奇物命名统一后续(未完四件全闭=⓪curio_* 已换代 adventure.tres curio_quota_* 实测/①relic→feat 随 6812ebb/②运行层 bonus_*→curio_* 随 8e2694d/③存档键按数据契约保留系 iter15③ 在册裁决)⑥挖掘风险不等式对账破线(条目自记 2026-10-05 正式收口,残留三面已迁 registry clause3_inequality+难度曲线联动表+6 行+δ 判读随 mineq exit report)⑦同深度第二敌种与精英/Boss 编码位(iter17 卡①已实施完成;遗留首批混编已随迭代18卡⑤落表+Boss 多行第二批义务登记 07「后续内容批义务」节)⑧UI 原型 demo 结构级差异三项(自记已全部落地 2026-10-06 UI 对齐批 2ca6288 链)⑨全屏 UI 审计差距清单(自记六项已闭环+遗留已判定归各自在册条目)。去向依据=各批台账与出口报告(git 历史留痕)。**保留面披露**:呈现层残余<4.5:1 文字位维持待办(其清单系 B 区站桩名行/敌顺位徽标/RAP 反馈行等 ui_contrast 测点对面外邻接位,非尾裁微批所修 7 项);生涯界面(期二/期三+P6 待点名)/武器锻造提案(17 裁点待人盘问)/解锁界面交互形态(待人闸目检)等待裁待人条目全数保留。本笔=台账 411。
|
411. **06-待办清单存量条目清理批(2026-10-09,用户令=「已完成的东西未从待办清单删除→删除修正完」〔本会话答复制证后当场授权〕;纯文档零代码零测试;.zcode 补丁法主区落盘未提交)**:按 06 头部「事项解决后从本清单移除(2026-09-18 口径,git 历史即留痕)」删已解决未移除条目九条——①render_gate 首跑 S1 存量红三件(用户 2026-10-08 裁甲清障 a623ec3 落籍+render_gate 转绿 golden 三连跑 0.00%,条目状态行未随批换代=本批清理成因)②内容数据驱动扩展批·迭代17头卡(e535436 已并 master,状态行「待合并」滞后;遗留两项去向=dig_charge 积点模判定边界随道具退役批删行消解+主动件 kind 词族改名呈报级存 exit report 与提交说明 a33ddaf)③菜单开局未传同调装配与局外树规则(✅9160942 落籍+遗留 resume tree_rules 随尾裁微批 768e366 闭环,双重完成)④关卡开场行攻血初始表值(卡⓪②随 9160942 已落「开场行改传生效值」,状态行「待开工」滞后)⑤奇物命名统一后续(未完四件全闭=⓪curio_* 已换代 adventure.tres curio_quota_* 实测/①relic→feat 随 6812ebb/②运行层 bonus_*→curio_* 随 8e2694d/③存档键按数据契约保留系 iter15③ 在册裁决)⑥挖掘风险不等式对账破线(条目自记 2026-10-05 正式收口,残留三面已迁 registry clause3_inequality+难度曲线联动表+6 行+δ 判读随 mineq exit report)⑦同深度第二敌种与精英/Boss 编码位(iter17 卡①已实施完成;遗留首批混编已随迭代18卡⑤落表+Boss 多行第二批义务登记 07「后续内容批义务」节)⑧UI 原型 demo 结构级差异三项(自记已全部落地 2026-10-06 UI 对齐批 2ca6288 链)⑨全屏 UI 审计差距清单(自记六项已闭环+遗留已判定归各自在册条目)。去向依据=各批台账与出口报告(git 历史留痕)。**保留面披露**:呈现层残余<4.5:1 文字位维持待办(其清单系 B 区站桩名行/敌顺位徽标/RAP 反馈行等 ui_contrast 测点对面外邻接位,非尾裁微批所修 7 项);生涯界面(期二/期三+P6 待点名)/武器锻造提案(17 裁点待人盘问)/解锁界面交互形态(待人闸目检)等待裁待人条目全数保留。本笔=台账 411。
|
||||||
412. **design/ 结构问题三连修(2026-10-09,用户三令:①diagrams 案甲 ②旧档引用摘除 ③ux 工具路径清理;主区直接批——worktree 合并被共同脏文件阻塞,改选择性暂存只落本批改动,并行未提交落文零吞并;台账号顺延 410/411 并行占用)**:①design/diagrams/ 消灭——gdd-architecture.html/json 两件 git mv 入 design/dev/architecture/(图像白名单既有合法区),json 内部自引用路径随迁改正,熵增闸「design/ 子目录越界」存量红灯清零、两处白名单零改动;②design/archive/gdd-2026-09-14/ 引用全量摘除(目录本体 9f1507dc 已删;引用面 31 处/29 文档+代码头注 10 文件+schema 头注 3 文件+entities.yaml 5 行):「旧版参考」blockquote 死链行 25 文件整行摘、CLAUDE.md 设计入口子句+Project Layout 行两处摘、02-系统清单「旧代号」句去归档指涉+旧骨架索引参考行整行摘(版本行 v1.15)、doc-conventions §9 归档列项删(版本行 v12)、code-conventions §1.4 头注示例 design/archive/... 换代 design/gdd/systems/ 现行路径、game/core+data/schemas 十三文件头注路径同步换代(a1/a2/a3/b1/b3/d2 六映射,注释层零行为)、entities.yaml 五行评审日志死指路改历史注记;③doc_link_audit.py/doc_term_audit.py DEFAULT_DIRS 摘 design/ux 死路径(7f24b640 design/ux→gdd/ux 搬迁残留,rglob 对不存在路径静默空扫)+docstring 口径句同步。**验证**=熵增闸 1 红→0;doc_link/doc_term/gdd_lint 对基线零新增。06「文档/结构闸存量欠账」节熵增 diagrams 条销号+归属句去 diagrams 尾巴;dev/architecture 旧 concept-map 8 件与 research/qa 存量超期=审计已呈报、用户示下次再议(未动))。
|
412. **design/ 结构问题三连修(2026-10-09,用户三令:①diagrams 案甲 ②旧档引用摘除 ③ux 工具路径清理;主区直接批——worktree 合并被共同脏文件阻塞,改选择性暂存只落本批改动,并行未提交落文零吞并;台账号顺延 410/411 并行占用)**:①design/diagrams/ 消灭——gdd-architecture.html/json 两件 git mv 入 design/dev/architecture/(图像白名单既有合法区),json 内部自引用路径随迁改正,熵增闸「design/ 子目录越界」存量红灯清零、两处白名单零改动;②design/archive/gdd-2026-09-14/ 引用全量摘除(目录本体 9f1507dc 已删;引用面 31 处/29 文档+代码头注 10 文件+schema 头注 3 文件+entities.yaml 5 行):「旧版参考」blockquote 死链行 25 文件整行摘、CLAUDE.md 设计入口子句+Project Layout 行两处摘、02-系统清单「旧代号」句去归档指涉+旧骨架索引参考行整行摘(版本行 v1.15)、doc-conventions §9 归档列项删(版本行 v12)、code-conventions §1.4 头注示例 design/archive/... 换代 design/gdd/systems/ 现行路径、game/core+data/schemas 十三文件头注路径同步换代(a1/a2/a3/b1/b3/d2 六映射,注释层零行为)、entities.yaml 五行评审日志死指路改历史注记;③doc_link_audit.py/doc_term_audit.py DEFAULT_DIRS 摘 design/ux 死路径(7f24b640 design/ux→gdd/ux 搬迁残留,rglob 对不存在路径静默空扫)+docstring 口径句同步。**验证**=熵增闸 1 红→0;doc_link/doc_term/gdd_lint 对基线零新增。06「文档/结构闸存量欠账」节熵增 diagrams 条销号+归属句去 diagrams 尾巴;dev/architecture 旧 concept-map 8 件与 research/qa 存量超期=审计已呈报、用户示下次再议(未动))。
|
||||||
|
413. **design/ 存量超期清理批(2026-10-09,用户逐类判决;QA 证据新立规=「证据类只保留最新迭代/最新一轮审计版本,新证据落位后删上一份,等人工检查的清单不受限」已落 doc-conventions §11 v13)**:①dev/architecture 四组 11 件删——gdd-concept-map 全家 8(2026-09 旧架构快照零引用,新架构图用户示另行生成)/board-node2d-migration-plan(迁移完成)/code-architecture-review/requirements-traceability(挂起标记过期:待的 ADR-0006/0007 均已落地);随批清 7 文件指路句(关卡节点地图/HUD框架/battle 版本行+adr-0005 两处+adr-0006+game README)。②qa 39 件删(新规首跑)——迭代 11-18 全部出口报告/读数/检查单+m1/m2 出口单+numfix/t17/t19/test-perf/ui-struct-probe+中间产物死亡清单本体(本批即其终局);保留=iter19 七件(最新迭代证据)/迭代18-实机目检总清单(待人)/ui-audit-2026-10-06 树 40 张+ui-audit-vs-demo 报告(最新 UI 审计证据)。③research 33 轨迹+3 未跟踪删——已落籍批任务书 17(含技能池批)/道具三层审查四件(三层重设计收口)/奇物调研底稿四件(**用户点名核验通过**:18 件专长框架已落 GDD 奇物.md v3.0 正主,全局作用域调研未决项由迭代14③落地批+06 登记承接)/研究三件/双层BD整合定稿(迭代12 落码)/MC成本调研(sim-data 规制落地)/roguelike-difficulty-benchmark(带值四带已裁)/UI落码对照(落码批收官)/game-architecture html+json(第三套架构图)/alpha-acceptance+prototype-report(M3 前旧件);保留=M4数值批任务书+A4 两件(冻结)+提案-武器锻造(17 裁点未闭)+UI预览demo三路对照(阶段1待办)+自造短语全量清单(待裁)+playnote(用户手迹)。④引用改写 13 文件(06 五处/07 三处/难度曲线两处/地形变异/HUD框架两处/关卡节点地图/battle/entities.yaml/art-bible/remote-gen-prompts/adr-0005/adr-0006/README——路径指涉统一改「(已退役,git 历史可查)」行内注记,零行数变化)。**A1 美术资产链路审计报告留置未删(用户严重事项条款)**:核验结论=§07 数值单点已吸收(art-bible v3.11)/描边已吸收(character-design §5.1 v1.9+06 复核钩子),但 **P0① 未吸收**——art-bible:68/:527+art-status-checklist:13 至今仍引用已丢失冻结样张 artwork/mockups/sample-batch-v3-final-2026-09-30.png(磁盘实测零命中,圣经冻结基准死指涉),**P0② 未登记**——主角棋盘小人未走像素管线(插值糊图)重产事项无 06 条目;待用户裁决(登记 06 处置或重产后再删报告)。**验证**=doc_link/doc_term/gdd_lint 对基线零新增+熵增闸 PASS;untracked 三件(技能池任务书/研究×2)主区磁盘删不入 git。
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# design/ 存量清理批:worktree 内执行(删件+引用改写+§11新规+台账413)
|
||||||
|
import pathlib, re, subprocess, sys
|
||||||
|
|
||||||
|
ROOT = pathlib.Path('.') # worktree 根
|
||||||
|
|
||||||
|
# ---------- 1) 删除清单 ----------
|
||||||
|
DEV = [
|
||||||
|
'design/dev/architecture/gdd-concept-map.html',
|
||||||
|
'design/dev/architecture/gdd-concept-map.architecture.json','design/dev/architecture/gdd-concept-map.visual-check.html',
|
||||||
|
'design/dev/architecture/gdd-concept-map.visual-check.json','design/dev/architecture/gdd-concept-map.visual-check.1440x900.dark.png',
|
||||||
|
'design/dev/architecture/gdd-concept-map.visual-check.1440x900.light.png','design/dev/architecture/gdd-concept-map.visual-check.2048x1320.dark.png',
|
||||||
|
'design/dev/architecture/gdd-concept-map.visual-check.2048x1320.light.png',
|
||||||
|
'design/dev/architecture/board-node2d-migration-plan.md','design/dev/architecture/code-architecture-review-2026-09-13.md',
|
||||||
|
'design/dev/architecture/requirements-traceability.md',
|
||||||
|
]
|
||||||
|
QA = ['design/qa/'+n for n in [
|
||||||
|
'iter15-2-curio-exit-report-2026-10-05.md','iter15-3-mibao-exit-report-2026-10-05.md','iter16-ui-exit-report-2026-10-06.md',
|
||||||
|
'iter16-ui-human-gate-checklist-2026-10-06.md','iter17-career-exit-report-2026-10-06.md','iter17-datadrive-exit-report-2026-10-06.md',
|
||||||
|
'iter17-enemy-L3-改前锚丢失-2026-10-07.md','iter17-enemy-exit-report-2026-10-07.md','iter17-enemy-人闸材料-2026-10-07.md',
|
||||||
|
'iter17-pause-exit-report-2026-10-06.md','iter17-pause-human-gate-checklist-2026-10-06.md','iter18-career-exit-report-2026-10-07.md',
|
||||||
|
'iter18-forge-exit-report-2026-10-07.md','iter18-mixenc-exit-report-2026-10-07.md','iter18-seed-exit-report-2026-10-07.md',
|
||||||
|
'iter18-treefix-exit-report-2026-10-07.md','m1-exit-gate-checklist-2026-09-28.md','m2-exit-gate-checklist-2026-09-28.md',
|
||||||
|
'm3-iter10-clear-rate-readings-2026-10-01.md','m3-iter5-lever-scan-2026-09-28.md','m3-iter5-rework-readings-2026-09-29.md',
|
||||||
|
'm3-iter9-9a-checklist-2026-09-30.md','m3-iter9-exit-checklist-2026-10-03.md','m3-iter9-t17-fullflow-checklist-2026-10-01.md',
|
||||||
|
'm3-iter9-t18-07-audit-2026-09-30.md','m3-iter9-t8-rulings-2026-09-30.md','m4-iter11-exit-package-2026-10-03.md',
|
||||||
|
'm4iter12-t10-batch2-exit-2026-10-04.md','m4iter12-t7-batch1-readings-2026-10-04.md','m4iter14-gvar-exit-report-2026-10-04.md',
|
||||||
|
'm4iter14-gvar-t7b-readings-2026-10-05.md','m4iter14-mineq-exit-report-2026-10-05.md','m4iter14-skillpool-exit-report-2026-10-05.md',
|
||||||
|
'numfix-newruler-readings-2026-10-01.md','t17-defer-probe-evidence-20261002.md','t19-real-playtest-readings-2026-10-02.md',
|
||||||
|
'test-perf-report-2026-10-02.md','ui-struct-probe-exit-report-2026-10-05.md','中间产物死亡清单-2026-10-02.md',
|
||||||
|
]]
|
||||||
|
RES = ['design/research/'+n for n in [
|
||||||
|
'MC成本调研与规制方案-2026-10-03.md','UI重设计原型v2落码-差异对照与改动计划-2026-10-04.md','alpha-acceptance-battle-screen.md',
|
||||||
|
'board-tile-vocab-plan-a-2026-09-26.md','game-architecture-2026-10-05.html','game-architecture-2026-10-05.json',
|
||||||
|
'prototype-report-minesweeper-battle-concept.md','roguelike-difficulty-benchmark-2026-10-01.md',
|
||||||
|
'任务书-CI预接线批-2026-10-07.md','任务书-UI设计对齐批-2026-10-05.md','任务书-内容数据驱动扩展批-2026-10-06.md',
|
||||||
|
'任务书-初始展开收窄批-2026-10-04.md','任务书-奇物词族对齐与渠道分离批-2026-10-05.md','任务书-提灯载体道具批-2026-10-07.md',
|
||||||
|
'任务书-敌人表行集多行批-2026-10-05.md','任务书-旧界面呈现断言回补批-2026-10-07.md','任务书-暂停层只读入口批-2026-10-05.md',
|
||||||
|
'任务书-武器锻造系统设计提案批-2026-10-07.md','任务书-混编遭遇首批投放批-2026-10-07.md','任务书-生涯界面实装批-2026-10-07.md',
|
||||||
|
'任务书-生涯界面设计立项-2026-10-05.md','任务书-种子随机化与调试浮窗升级批-2026-10-07.md','任务书-秘宝代码词族对齐批-2026-10-05.md',
|
||||||
|
'任务书-自动化验收补齐批-2026-10-07.md','双层BD体系-整合定稿-2026-10-03.md',
|
||||||
|
'审查-地图战斗资源-2026-10-06.md','审查-奇物-2026-10-06.md','审查-总览-2026-10-06.md','审查-秘宝-2026-10-06.md',
|
||||||
|
'调研-roguelike道具玩法变异-2026-10-07.md','调研-全局作用域变异设计空间-2026-10-04.md','调研-扫雷类游戏玩法变异-2026-10-07.md',
|
||||||
|
'综合-道具变异可选项菜单-2026-10-07.md','研究-内容数据驱动扩展架构-2026-10-06.md',
|
||||||
|
]]
|
||||||
|
ALL = DEV + QA + RES
|
||||||
|
for f in ALL:
|
||||||
|
if (ROOT/f).exists():
|
||||||
|
subprocess.run(['git', 'rm', '-q', f], check=True)
|
||||||
|
print('git rm ok:', len(ALL))
|
||||||
|
|
||||||
|
# ---------- 2) 引用改写(basename 级替换,行内零行数变化) ----------
|
||||||
|
REWRITES = [
|
||||||
|
('iter16-ui-exit-report-2026-10-06.md', '迭代16出口报告(已退役,git 历史可查)'),
|
||||||
|
('iter17-pause-human-gate-checklist-2026-10-06.md', '迭代17暂停层人闸清单(已退役,git 历史可查)'),
|
||||||
|
('m3-iter5-lever-scan-2026-09-28.md', '迭代5杠杆扫描报告(已退役,git 历史可查)'),
|
||||||
|
('UI重设计原型v2落码-差异对照与改动计划-2026-10-04.md', 'UI落码差异对照(已退役,git 历史可查)'),
|
||||||
|
('任务书-UI设计对齐批-2026-10-05.md', 'UI对齐批任务书(已退役,git 历史可查)'),
|
||||||
|
('m3-iter10-clear-rate-readings-2026-10-01.md', '迭代10通关率读数(已退役,git 历史可查)'),
|
||||||
|
('t19-real-playtest-readings-2026-10-02.md', 'T19真人试玩读数(已退役,git 历史可查)'),
|
||||||
|
('任务书-自动化验收补齐批-2026-10-07.md', '自动化验收补齐批任务书(已退役,git 历史可查)'),
|
||||||
|
('roguelike-difficulty-benchmark-2026-10-01.md', '难度外部基准调研(已退役,git 历史可查)'),
|
||||||
|
('调研-全局作用域变异设计空间-2026-10-04.md', '全局作用域设计空间调研(已退役,git 历史可查)'),
|
||||||
|
('任务书-提灯载体道具批-2026-10-07.md', '提灯载体批任务书(已退役,git 历史可查)'),
|
||||||
|
('board-tile-vocab-plan-a-2026-09-26.md', '高墙瓦片词表(已落码 board_world.gd 查表,文件已退役)'),
|
||||||
|
('test-perf-report-2026-10-02.md', '性能实测报告(已退役,git 历史可查)'),
|
||||||
|
('code-architecture-review-2026-09-13.md', '代码架构评审(已退役,git 历史可查)'),
|
||||||
|
('requirements-traceability.md', '需求追溯矩阵(已退役,git 历史可查)'),
|
||||||
|
('board-node2d-migration-plan.md', 'Node2D 迁移计划(已执行完毕,文件已退役)'),
|
||||||
|
]
|
||||||
|
TARGETS = [
|
||||||
|
'design/gdd/06-待办清单.md','design/gdd/07-体验验证清单.md',
|
||||||
|
'design/gdd/systems/冒险循环/难度曲线与Boss.md','design/gdd/systems/排雷循环/地形变异.md',
|
||||||
|
'design/gdd/systems/表现与支撑/HUD框架.md','design/gdd/systems/冒险循环/关卡节点地图.md','design/gdd/ux/battle.md',
|
||||||
|
'design/registry/entities.yaml','design/art/art-bible.md','design/art/remote-gen-prompts.md',
|
||||||
|
'design/dev/architecture/adr-0005-save-contract-and-schema-versioning.md',
|
||||||
|
'design/dev/architecture/adr-0006-board-node2d-rendering.md','game/README.md',
|
||||||
|
]
|
||||||
|
total = 0
|
||||||
|
for tf in TARGETS:
|
||||||
|
p = ROOT/tf; d = p.read_bytes(); orig = d; n = 0
|
||||||
|
for basename, repl in REWRITES:
|
||||||
|
pat = re.compile(rb'[\w./\-\\]*' + re.escape(basename.encode()))
|
||||||
|
hits = pat.findall(d)
|
||||||
|
if hits:
|
||||||
|
d = pat.sub(repl.encode(), d); n += len(hits)
|
||||||
|
if d != orig:
|
||||||
|
p.write_bytes(d); total += n
|
||||||
|
print('rewrote %d ref(s) in %s' % (n, tf))
|
||||||
|
print('ref rewrite total:', total)
|
||||||
|
|
||||||
|
# ---------- 3) doc-conventions §11 新规 + v13 ----------
|
||||||
|
p = ROOT/'design/dev/doc-conventions.md'; d = p.read_bytes()
|
||||||
|
if b'| v13 |' not in d:
|
||||||
|
anchor = '| 暂存地非档案库 | `design/research/` 与 `design/qa/` 是中间文档的暂存地,不是永久档案库;入此两处的文件默认按本节规则到期即死 |'.encode()
|
||||||
|
assert d.count(anchor) == 1
|
||||||
|
i = d.find(anchor); j = d.find(b'\n', i)
|
||||||
|
nl = b'\r\n' if d[j-1:j] == b'\r' else b'\n'
|
||||||
|
row = ('| 证据只留最新(2026-10-09 用户立规) | 测试证据(出口报告/读数/截图/对比图)只保留最新一次迭代或最新一轮同类审计的版本——旧证据无参考作用,测试按状态不按历史;新证据落位后同批删除上一份;等人工检查的清单不受此限,过人闸后按本行退役 |').encode() + nl
|
||||||
|
d = d[:j+1] + row + d[j+1:]
|
||||||
|
anchor2 = '| v12 | 2026-10-09'.encode()
|
||||||
|
i2 = d.find(anchor2); assert i2 != -1
|
||||||
|
j2 = d.find(b'\n', i2)
|
||||||
|
nl2 = b'\r\n' if d[j2-1:j2] == b'\r' else b'\n'
|
||||||
|
j2 += 1
|
||||||
|
row2 = ('| v13 | 2026-10-09 | §11 新增「证据只留最新」行(2026-10-09 用户立规——qa 存量清理批随批落文):测试证据只保留最新迭代/最新一轮审计版本,新证据落位即删上一份;待人清单过闸后同规退役 |').encode() + nl2
|
||||||
|
d = d[:j2] + row2 + d[j2:]
|
||||||
|
p.write_bytes(d)
|
||||||
|
print('doc-conventions ok')
|
||||||
|
|
||||||
|
# ---------- 4) active.md:快照顶部更新行 + 台账 413 ----------
|
||||||
|
p = ROOT/'active.md'; d = p.read_bytes()
|
||||||
|
if b'\n413. ' not in d and not d.startswith(b'413. '):
|
||||||
|
anchor = '## 当前状态快照(收口批先更新本节,再追加台账;≤10 行)'.encode()
|
||||||
|
assert d.count(anchor) == 1
|
||||||
|
ai = d.find(anchor); aj = d.find(b'\n', ai) + 1
|
||||||
|
top = ('- **更新于**:2026-10-09(**design/ 存量超期清理批落籍 master**,用户逐类判决——QA 新立规「证据只留最新」,工作日志 413):'
|
||||||
|
'删 86 件=dev 四组 11(concept-map 全家/迁移计划/评审/追溯矩阵,随批清 7 文件指路句)+qa 39(证据只留最新规首跑:保留 iter19 七件+迭代18目检总清单〔待人〕+ui-audit 树与报告=最新证据)+research 33 轨迹+3 未跟踪'
|
||||||
|
'(任务书 17/审查四/奇物调研四〔用户点名核验:18 件框架已落 GDD v3.0〕/研究三/双层BD/MC成本/基准/UI对照/第三套架构图/旧杂件);引用改写 13 文件;'
|
||||||
|
'doc-conventions §11 新增证据只留最新行(v13);**美术审计报告留置未删**(P0① art-bible 仍引用已丢失冻结样张+P0② 主角重产未登记——严重事项呈用户,待裁后处置)。\n').encode()
|
||||||
|
d = d[:aj] + top + d[aj:]
|
||||||
|
lines = d.split(b'\n')
|
||||||
|
L413 = ('413. **design/ 存量超期清理批(2026-10-09,用户逐类判决;QA 证据新立规=「证据类只保留最新迭代/最新一轮审计版本,新证据落位后删上一份,等人工检查的清单不受限」已落 doc-conventions §11 v13)**:'
|
||||||
|
'①dev/architecture 四组 11 件删——gdd-concept-map 全家 8(2026-09 旧架构快照零引用,新架构图用户示另行生成)/board-node2d-migration-plan(迁移完成)/code-architecture-review/requirements-traceability(挂起标记过期:待的 ADR-0006/0007 均已落地);'
|
||||||
|
'随批清 7 文件指路句(关卡节点地图/HUD框架/battle 版本行+adr-0005 两处+adr-0006+game README)。'
|
||||||
|
'②qa 39 件删(新规首跑)——迭代 11-18 全部出口报告/读数/检查单+m1/m2 出口单+numfix/t17/t19/test-perf/ui-struct-probe+中间产物死亡清单本体(本批即其终局);'
|
||||||
|
'保留=iter19 七件(最新迭代证据)/迭代18-实机目检总清单(待人)/ui-audit-2026-10-06 树 40 张+ui-audit-vs-demo 报告(最新 UI 审计证据)。'
|
||||||
|
'③research 33 轨迹+3 未跟踪删——已落籍批任务书 17(含技能池批)/道具三层审查四件(三层重设计收口)/奇物调研底稿四件(**用户点名核验通过**:18 件专长框架已落 GDD 奇物.md v3.0 正主,全局作用域调研未决项由迭代14③落地批+06 登记承接)/研究三件/双层BD整合定稿(迭代12 落码)/MC成本调研(sim-data 规制落地)/roguelike-difficulty-benchmark(带值四带已裁)/UI落码对照(落码批收官)/game-architecture html+json(第三套架构图)/alpha-acceptance+prototype-report(M3 前旧件);'
|
||||||
|
'保留=M4数值批任务书+A4 两件(冻结)+提案-武器锻造(17 裁点未闭)+UI预览demo三路对照(阶段1待办)+自造短语全量清单(待裁)+playnote(用户手迹)。'
|
||||||
|
'④引用改写 13 文件(06 五处/07 三处/难度曲线两处/地形变异/HUD框架两处/关卡节点地图/battle/entities.yaml/art-bible/remote-gen-prompts/adr-0005/adr-0006/README——路径指涉统一改「(已退役,git 历史可查)」行内注记,零行数变化)。'
|
||||||
|
'**A1 美术资产链路审计报告留置未删(用户严重事项条款)**:核验结论=§07 数值单点已吸收(art-bible v3.11)/描边已吸收(character-design §5.1 v1.9+06 复核钩子),'
|
||||||
|
'但 **P0① 未吸收**——art-bible:68/:527+art-status-checklist:13 至今仍引用已丢失冻结样张 artwork/mockups/sample-batch-v3-final-2026-09-30.png(磁盘实测零命中,圣经冻结基准死指涉),'
|
||||||
|
'**P0② 未登记**——主角棋盘小人未走像素管线(插值糊图)重产事项无 06 条目;待用户裁决(登记 06 处置或重产后再删报告)。'
|
||||||
|
'**验证**=doc_link/doc_term/gdd_lint 对基线零新增+熵增闸 PASS;untracked 三件(技能池任务书/研究×2)主区磁盘删不入 git。').encode()
|
||||||
|
for i, ln in enumerate(lines):
|
||||||
|
if ln.startswith(b'412. '):
|
||||||
|
lines.insert(i+1, L413); break
|
||||||
|
else:
|
||||||
|
sys.exit('ledger 412 not found')
|
||||||
|
pathlib.Path('active.md').write_bytes(b'\n'.join(lines))
|
||||||
|
print('active.md ok')
|
||||||
|
print('ALL DONE')
|
||||||
@@ -169,7 +169,7 @@
|
|||||||
- **旗(封印印记)**:插旗动作的叙事呈现 = **封印**(玩家可见专名,术语定义见 registry terminology「封印」条;插旗动作面见《排雷玩法》)——旗 = 封印印记;封印色(§4.1,现行封印黑)与格内优先级栈位(§1.2)不变。封印特效(施印瞬间 + 印记常显形态)资产归清单 §4 演出类;旗印记纹理已落位、字形占位退役(迭代 9 卡⑬兑现;原 06 债务条目已收口移除)。←原一;P2;术语批 2026-09-25;封印紫批 2026-09-26;封印黑批 2026-09-28
|
- **旗(封印印记)**:插旗动作的叙事呈现 = **封印**(玩家可见专名,术语定义见 registry terminology「封印」条;插旗动作面见《排雷玩法》)——旗 = 封印印记;封印色(§4.1,现行封印黑)与格内优先级栈位(§1.2)不变。封印特效(施印瞬间 + 印记常显形态)资产归清单 §4 演出类;旗印记纹理已落位、字形占位退役(迭代 9 卡⑬兑现;原 06 债务条目已收口移除)。←原一;P2;术语批 2026-09-25;封印紫批 2026-09-26;封印黑批 2026-09-28
|
||||||
- **可挖域接触带微光(交互反馈层,2026-09-25 用户拍板)**:挖掘期,英雄格周界与可挖域(概念见《排雷玩法》动作合法性节;呈现义务见《HUD框架》可挖域指示)的接触面画呼吸微光——正交邻墙=该侧整条边,斜向邻墙=共享角点+向两侧各延伸半条边;光只画英雄格(空间)一侧、不进墙格(与装饰变体零冲突,数字砖心不涉);微光=空间的灯光边界(画法口径)。色相=蓝族浅一档(§4.2 蓝条;与主角蓝框的分层归样张批);呼吸=§2.1 挖掘期唯一在动元素,减动效停格。角点为斜墙与正交墙共享、不逐格归因,逐格指认=悬停金框(呈现交互归《HUD框架》悬停指示域)。←§2.1;§4.2;P1
|
- **可挖域接触带微光(交互反馈层,2026-09-25 用户拍板)**:挖掘期,英雄格周界与可挖域(概念见《排雷玩法》动作合法性节;呈现义务见《HUD框架》可挖域指示)的接触面画呼吸微光——正交邻墙=该侧整条边,斜向邻墙=共享角点+向两侧各延伸半条边;光只画英雄格(空间)一侧、不进墙格(与装饰变体零冲突,数字砖心不涉);微光=空间的灯光边界(画法口径)。色相=蓝族浅一档(§4.2 蓝条;与主角蓝框的分层归样张批);呼吸=§2.1 挖掘期唯一在动元素,减动效停格。角点为斜墙与正交墙共享、不逐格归因,逐格指认=悬停金框(呈现交互归《HUD框架》悬停指示域)。←§2.1;§4.2;P1
|
||||||
- **墙体**:圆角砌块堆叠,禁尖刺装饰——尖刺专属危险语义,装饰不得伪装逻辑差异。←原三
|
- **墙体**:圆角砌块堆叠,禁尖刺装饰——尖刺专属危险语义,装饰不得伪装逻辑差异。←原三
|
||||||
- **高墙瓦片体系(2026-09-26 定稿,样张批追认)**:未挖格=**一整块 32×32 自含凸起岩体**(方案甲核心定义);素材语义名——未开格素材=**墙瓦片**,已开格素材=**地面瓦片**(术语 2026-09-26 用户立)。**边界=墨线纪律**:墙瓦片与相邻格分界一律 1px 深墨线、直线贴格边、零锯齿;墨线职责=分隔,不追求与地面融合(Tiny Dungeon 样图实证调研后否决出局——TD 拼块套不进方案甲自含岩体定义,2026-09-25 终局维持方案甲;记录=git 提交 70d2320)。**光照=单一北受光**:北缘=墨线内侧 1px 微亮棱(就地取色提亮,禁宽亮带);西/东缘=墨线后直进纹理、不加修饰;南缘=墨线+立面窄暗条(约 1/3 格高,横层理叠石、禁竖条纹栅栏感)。**凹角**:角点单像素落线;南立面侧凹角加 1px 立面收头——带身与转角竖线同列收尾,禁悬空、禁突出(v9.1/v9.2 两版返工实证)。现行定稿=`game/assets/art/board/terrain_*`(16 唯一墙瓦片+5 地面瓦片变体;词表与查表逻辑见 `design/research/board-tile-vocab-plan-a-2026-09-26.md`)。**高墙感 D 投影档+整板悬崖(样张 v2 定稿 2026-09-28,用户 2026-09-27 四变体挑档)**:南临空墙格=立面口沿高光 2px `Color8(196,172,132)`+双段暗带(0.16/0.25 格边,黑罩 α0.60/0.82);北邻墙地面格=三段渐隐投影(顶带 0.22 格边,α0.28 起);整板悬崖=板底/右侧 `DEPTH_PX 8px` 暗面+列分隔竖缝+岩层横纹+口沿高光+接触 AO+底线收边+悬浮影(游戏 `board_world.gd` 同款结构件,样张脚本与游戏渲染常量同源——机检 F7 承载)。←原三;台账 164;样张 v2 批 2026-09-28
|
- **高墙瓦片体系(2026-09-26 定稿,样张批追认)**:未挖格=**一整块 32×32 自含凸起岩体**(方案甲核心定义);素材语义名——未开格素材=**墙瓦片**,已开格素材=**地面瓦片**(术语 2026-09-26 用户立)。**边界=墨线纪律**:墙瓦片与相邻格分界一律 1px 深墨线、直线贴格边、零锯齿;墨线职责=分隔,不追求与地面融合(Tiny Dungeon 样图实证调研后否决出局——TD 拼块套不进方案甲自含岩体定义,2026-09-25 终局维持方案甲;记录=git 提交 70d2320)。**光照=单一北受光**:北缘=墨线内侧 1px 微亮棱(就地取色提亮,禁宽亮带);西/东缘=墨线后直进纹理、不加修饰;南缘=墨线+立面窄暗条(约 1/3 格高,横层理叠石、禁竖条纹栅栏感)。**凹角**:角点单像素落线;南立面侧凹角加 1px 立面收头——带身与转角竖线同列收尾,禁悬空、禁突出(v9.1/v9.2 两版返工实证)。现行定稿=`game/assets/art/board/terrain_*`(16 唯一墙瓦片+5 地面瓦片变体;词表与查表逻辑见 `高墙瓦片词表(已落码 board_world.gd 查表,文件已退役)`)。**高墙感 D 投影档+整板悬崖(样张 v2 定稿 2026-09-28,用户 2026-09-27 四变体挑档)**:南临空墙格=立面口沿高光 2px `Color8(196,172,132)`+双段暗带(0.16/0.25 格边,黑罩 α0.60/0.82);北邻墙地面格=三段渐隐投影(顶带 0.22 格边,α0.28 起);整板悬崖=板底/右侧 `DEPTH_PX 8px` 暗面+列分隔竖缝+岩层横纹+口沿高光+接触 AO+底线收边+悬浮影(游戏 `board_world.gd` 同款结构件,样张脚本与游戏渲染常量同源——机检 F7 承载)。←原三;台账 164;样张 v2 批 2026-09-28
|
||||||
- **变异格形状通道**(双通道之"形",与色无关):底砖圆角外轮廓不变,砖面内缘绘一圈定宽专属几何纹带(纹带形全作不与他类共用),砖心留白予数字与旗;验收标准=**灰度截图下仍可分类**。种类清单 = 地形变异六类型已定稿(地形变异 GDD;荆棘丛/藤蔓缠绕/岩浆/烬覆/落石/矿尘):**纹带形按轴只分两种**——伤害轴(荆棘丛/岩浆/落石)= 刺/缺排斥形,信息轴(藤蔓缠绕/烬覆/矿尘)= 遮蔽/缠绕形;同轴跨图类型只做色板变体(§4.3 `variant_tint` 槽),不做新纹形。样张批增查:岩浆纹带橙红须与危险红互辨(变异格不是雷,色相邻近混淆风险);信息轴遮蔽呈现不得侵入数字字形占位区(§1.4 验收 1 延伸)。←原一(纹理位次第 4,让位于数字/小人/旗);原三
|
- **变异格形状通道**(双通道之"形",与色无关):底砖圆角外轮廓不变,砖面内缘绘一圈定宽专属几何纹带(纹带形全作不与他类共用),砖心留白予数字与旗;验收标准=**灰度截图下仍可分类**。种类清单 = 地形变异六类型已定稿(地形变异 GDD;荆棘丛/藤蔓缠绕/岩浆/烬覆/落石/矿尘):**纹带形按轴只分两种**——伤害轴(荆棘丛/岩浆/落石)= 刺/缺排斥形,信息轴(藤蔓缠绕/烬覆/矿尘)= 遮蔽/缠绕形;同轴跨图类型只做色板变体(§4.3 `variant_tint` 槽),不做新纹形。样张批增查:岩浆纹带橙红须与危险红互辨(变异格不是雷,色相邻近混淆风险);信息轴遮蔽呈现不得侵入数字字形占位区(§1.4 验收 1 延伸)。←原一(纹理位次第 4,让位于数字/小人/旗);原三
|
||||||
|
|
||||||
### 3.3 UI 形状语法(方向指导,细则迁 §7.1)
|
### 3.3 UI 形状语法(方向指导,细则迁 §7.1)
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ Pixel art style. true pixel art game sprite drawn on a tiny 48x72 pixel canvas,
|
|||||||
**制式 = 拼表制正主(2026-10-06 用户拍板)——三步流程**:
|
**制式 = 拼表制正主(2026-10-06 用户拍板)——三步流程**:
|
||||||
1. **程序占位出样图**:现行程序化格面(占位在役)截一张作参考样图;
|
1. **程序占位出样图**:现行程序化格面(占位在役)截一张作参考样图;
|
||||||
2. **整图生成**:开新对话,贴样图 + 发下方整段,一张 2×2 出全部瓦片变体(风格统一、一张管全族);
|
2. **整图生成**:开新对话,贴样图 + 发下方整段,一张 2×2 出全部瓦片变体(风格统一、一张管全族);
|
||||||
3. **裁切取用**:按 50% 坐标切图、每格内缩 2–3% 切掉可能的边框 → 统一降采样 → 成片瓦片 21 枚由程序从切出的材质合成(词表:design/research/board-tile-vocab-plan-a-2026-09-26.md)。
|
3. **裁切取用**:按 50% 坐标切图、每格内缩 2–3% 切掉可能的边框 → 统一降采样 → 成片瓦片 21 枚由程序从切出的材质合成(词表:高墙瓦片词表(已落码 board_world.gd 查表,文件已退役))。
|
||||||
|
|
||||||
```
|
```
|
||||||
Seamless tileable pixel art texture sheet for a dungeon board game, arranged as a clean 2x2 grid of four equal square quadrants filling the entire image edge to edge, with no gaps, no dividing lines, no borders, no frames, no grid lines, no labels and no text. Top-left quadrant: warm tan rock surface with subtle darker seams between stone patches and small lighter facets. Top-right quadrant: the same warm tan rock surface but with a few thin darker crack lines scattered across it. Bottom-left quadrant: the same warm tan rock surface but with a few tiny lighter stone speckles sparsely scattered. Bottom-right quadrant: dry dirt ground in a dark warm brown palette around #B39A78, clearly darker than the tan rock, with a few thin cracks and tiny pebble speckles, sparse. Every quadrant is a flat 2D top-down texture — not an object, no perspective — and each quadrant must wrap seamlessly at its own four edges. Uniform directionless lighting across all four quadrants, no vignette, no cast shadow, no bevel, no edge highlight anywhere. Warm tan-brown palette around #C9AF83 for the three rock quadrants. Clean retro pixel art look, limited palette, no gradients, no text, square image.
|
Seamless tileable pixel art texture sheet for a dungeon board game, arranged as a clean 2x2 grid of four equal square quadrants filling the entire image edge to edge, with no gaps, no dividing lines, no borders, no frames, no grid lines, no labels and no text. Top-left quadrant: warm tan rock surface with subtle darker seams between stone patches and small lighter facets. Top-right quadrant: the same warm tan rock surface but with a few thin darker crack lines scattered across it. Bottom-left quadrant: the same warm tan rock surface but with a few tiny lighter stone speckles sparsely scattered. Bottom-right quadrant: dry dirt ground in a dark warm brown palette around #B39A78, clearly darker than the tan rock, with a few thin cracks and tiny pebble speckles, sparse. Every quadrant is a flat 2D top-down texture — not an object, no perspective — and each quadrant must wrap seamlessly at its own four edges. Uniform directionless lighting across all four quadrants, no vignette, no cast shadow, no bevel, no edge highlight anywhere. Warm tan-brown palette around #C9AF83 for the three rock quadrants. Clean retro pixel art look, limited palette, no gradients, no text, square image.
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ Accepted(2026-09-12,solo 模式用户授权代决;轻量契约 ADR——
|
|||||||
| **Depends On** | None |
|
| **Depends On** | None |
|
||||||
| **Enables** | D3 存档序列化(Alpha)——契约先行,实现期免重议 |
|
| **Enables** | D3 存档序列化(Alpha)——契约先行,实现期免重议 |
|
||||||
| **Blocks** | None |
|
| **Blocks** | None |
|
||||||
| **Ordering Note** | 清零 Foundation 层 TR 覆盖缺口(requirements-traceability.md 的最后两条 pending) |
|
| **Ordering Note** | 清零 Foundation 层 TR 覆盖缺口(需求追溯矩阵(已退役,git 历史可查) 的最后两条 pending) |
|
||||||
|
|
||||||
## Context
|
## Context
|
||||||
|
|
||||||
@@ -101,4 +101,4 @@ Technical Setup → Pre-Production 门要求"Foundation 层需求 ADR 覆盖零
|
|||||||
|
|
||||||
## Related Decisions
|
## Related Decisions
|
||||||
- ADR-0001(回放输入序列的载体)、ADR-0004(集成测试载体)
|
- ADR-0001(回放输入序列的载体)、ADR-0004(集成测试载体)
|
||||||
- docs/architecture/requirements-traceability.md(TR-d2-010 / TR-gc-002 覆盖闭合)
|
- 需求追溯矩阵(已退役,git 历史可查)(TR-d2-010 / TR-gc-002 覆盖闭合)
|
||||||
@@ -126,7 +126,7 @@ Phase B 届时将 BattleStageView 同构改造(PanelContainer → Control 壳
|
|||||||
- 输入路径改 `_gui_input` 后现探针全走 `click_cell` 直调,公式换算无自动化覆盖 → 缓解:实施批增补 push_input 端到端输入探针(ADR-0003 已登记项,本批转义务)
|
- 输入路径改 `_gui_input` 后现探针全走 `click_cell` 直调,公式换算无自动化覆盖 → 缓解:实施批增补 push_input 端到端输入探针(ADR-0003 已登记项,本批转义务)
|
||||||
|
|
||||||
## Migration Plan
|
## Migration Plan
|
||||||
Phase A(棋盘,实施另批):BoardView 内部重构 + 探针增补 + 冒烟全量回归 + 文档随批(HUD框架渲染注记/battle.md 实现注记/architecture.md 模块归属行)。Phase B(B 区舞台,后续批):同构复制 + 站桩精灵迁移 + 意图动画承载;开工前置 = 样张批冻结剪影与动画方案。战斗屏进度条退场的 GDD 修订面(HUD框架 四区表、关卡节点地图 节点链常显条款、battle.md 像素布局表与 28px 纵向空间再分配)随停点前移批(关卡画面成为常驻枢纽)落地,不随本批。工程细节见同目录 `board-node2d-migration-plan.md`。
|
Phase A(棋盘,实施另批):BoardView 内部重构 + 探针增补 + 冒烟全量回归 + 文档随批(HUD框架渲染注记/battle.md 实现注记/architecture.md 模块归属行)。Phase B(B 区舞台,后续批):同构复制 + 站桩精灵迁移 + 意图动画承载;开工前置 = 样张批冻结剪影与动画方案。战斗屏进度条退场的 GDD 修订面(HUD框架 四区表、关卡节点地图 节点链常显条款、battle.md 像素布局表与 28px 纵向空间再分配)随停点前移批(关卡画面成为常驻枢纽)落地,不随本批。工程细节见同目录 `Node2D 迁移计划(已执行完毕,文件已退役)`。
|
||||||
|
|
||||||
## Validation Criteria
|
## Validation Criteria
|
||||||
- 冒烟全量绿(现行基线不破);三探针(ui / ui_click / ui_layout)绿
|
- 冒烟全量绿(现行基线不破);三探针(ui / ui_click / ui_layout)绿
|
||||||
|
|||||||
@@ -1,102 +0,0 @@
|
|||||||
# 战斗棋盘 Node2D 渲染迁移方案(Phase A:仅棋盘)
|
|
||||||
|
|
||||||
> 状态:**草稿待审**(2026-09-23 起草,board-node2d-plan-20260923 worktree)。
|
|
||||||
> 上位裁决:ADR-0006(分工与形态)、用户 2026-09-23 拍板「Node2D 重构只迁战斗棋盘,开始菜单/各覆盖层保持 Control;战斗画面 Node 后续批完成」。
|
|
||||||
> 本文档是 Phase A 实施批的工程方案;批准后实施批从本文开工,不再另起炉灶。
|
|
||||||
|
|
||||||
## 0. 一句话
|
|
||||||
|
|
||||||
把 D 区棋盘本体从「GridContainer + 逐格 Button」换成「Control 壳 + SubViewport + Node2D 世界」,BoardView 类名与公共面契约逐项保持——探针与组合根零改造,素材终稿到位后 1:1 换图零返工。
|
|
||||||
|
|
||||||
## 1. 目标形态(已与用户确认的三块模型)
|
|
||||||
|
|
||||||
战斗屏 = 两块 Node2D 舞台 + 一层 Control 面板。术语校准:Godot 没有「Canvas」节点——面板层是 Control 树(常驻顶层与弹层经 CanvasLayer,现状已如此);Node2D 不参与 Control 容器布局,所以每块舞台包一个 Control 壳(SubViewportContainer)参与屏幕栅格布局,壳内才是 Node2D 世界。
|
|
||||||
|
|
||||||
```
|
|
||||||
BattleScreen(Control 栅格;目标形态 = B/C/D 三区——进度条退场裁定见下)
|
|
||||||
├── B 战斗画面(Phase B 改造,本批不动)
|
|
||||||
│ ├── Node2D 舞台壳:主角/敌人站桩、意图动画、演出(后续批)
|
|
||||||
│ └── Control 半区:结算明细带、回合指示、战斗日志(永久 Control)
|
|
||||||
├── C 角色信息 .................. Control(不动)
|
|
||||||
└── D 扫雷图
|
|
||||||
├── AP 条、按钮组、toast .... Control(不动)
|
|
||||||
└── BoardView(本批改造对象)
|
|
||||||
└── SubViewportContainer(Control 壳,参与布局)
|
|
||||||
└── SubViewport(逻辑分辨率 = 格边长 × 板尺寸)
|
|
||||||
└── BoardWorld(Node2D)
|
|
||||||
└── CellUnit × N(Node2D,每格一个)
|
|
||||||
```
|
|
||||||
|
|
||||||
**进度条退场裁定(2026-09-23 用户)**:战斗画面不再有关卡进度条——战斗结束后返回关卡画面,节点链进度只留关卡画面。
|
|
||||||
|
|
||||||
**A 区代码命运(2026-09-23 追问裁定):退役,不迁移。关卡画面不重新实现。**
|
|
||||||
|
|
||||||
- **关卡画面 = RouteOverlay 升级**:现役选路覆盖层已是整幅节点图 + 全套节点态语义(暗金已过/金当前/暗未达/亮金候选通道/紫赤 Boss 边(旗朱→紫赤 2026-09-26 封印紫批),与压缩条同一组 UiKit token)+ 候选按钮 + 放弃入口。停点前移批只改开合时机(关卡开始即开、战后返回即开)与流程接线(选路确认不再经兑付停点绕行),渲染本体零重写。
|
|
||||||
- **LevelStripView 不迁移的理由**:它唯一的存在理由 = 战斗屏上看不到整图时的 28px 压缩常显替代面。地图页上压缩条冗余(整图即进度),战斗屏又已裁定零进度显示——迁过去没有消费者。其语义无独有资产(色板/节点态与 RouteOverlay 同族),单链退化渲染(全链横条)被整图布局天然取代。
|
|
||||||
- **唯一继承面 = 逻辑层数据面**:runner 只读出口(`nodes()` / `visited_ids()` / 节点编号空间 / `next_candidates()`)零改动——压缩条与整图本来就消费同一份数据,这正是"退役不迁移"成立的根据。
|
|
||||||
|
|
||||||
排程事实与修订面:
|
|
||||||
|
|
||||||
1. **A 区现状代码继续服役**:当前流程尚未倒置(冒险开局直进战斗,节点图是战后弹层),A 区顶栏是战斗过程中唯一的节点链可视面——先删会致盲。退场落地 = 停点前移批,届时四区→三区。
|
|
||||||
2. **停点前移批的删除面清单**(退役随该批执行):`LevelStripView` 类、ui_assembler 组装行(:28)、main.gd `strip_view` 引用(:52 等)、ui_probe 两处断言(:77–78 节点条构建检查、:188 报告行)、battle.md A 区条款。
|
|
||||||
3. **该批的 GDD 修订面**:HUD框架.md 四区结构表(含 B/C/D 是否重新编字母)、关卡节点地图.md 节点链常显条款(常显载体随进度条退役,由关卡画面本体承接)、battle.md 像素布局表(28px 纵向空间再分配)。
|
|
||||||
|
|
||||||
## 2. Phase A 范围(本批做)
|
|
||||||
|
|
||||||
1. **BoardView 内部重构**(`presentation/views/board_view.gd`):
|
|
||||||
- 根仍是 Control(类名/extends 不变),子结构 GridContainer → SubViewportContainer + SubViewport + BoardWorld。
|
|
||||||
- `_cells`:Vector2i → CellUnit(Node2D)字典,键面与现 Dict 同构(探针断言面,见 §4)。
|
|
||||||
- CellUnit 内部固定叠层序:砖面底 < 变异纹带 < 数字/徽章 < 旗 < 焦点高亮——本批全程序化绘制(`_draw`),等价平移现行视觉;每个叠层留 `texture` 槽位(§8.2 暂定档 32×32),终稿纹理换入即用。
|
|
||||||
- 现有行为逐项平移:呼吸微光(StyleBoxFlat 边框 → `_draw` 边框)、悬停反白、路径预览、危险红、双击 chord 检测、`set_desaturated`(ShaderMaterial 挂 BoardWorld 材质)。
|
|
||||||
2. **输入换板**:BoardView 壳层 `_gui_input` 接鼠标 → 格坐标单点公式 `floor(local_pos / cell_edge)` → 复用现有 hover/click/chord/长按逻辑;`action_requested` 信号链不变。
|
|
||||||
3. **`cell_size` 只读属性增补**:现私有名 `_cell`,ui_layout_probe `get("cell_size")` 读到 null——补只读属性,顺手修正。
|
|
||||||
4. **push_input 端到端输入探针**(新增,ADR-0003 登记项转义务):合成鼠标事件经真实输入路径打 SubViewportContainer,验悬停/左键/右键/chord 四 case——现探针全走 `click_cell` 直调,公式换算无覆盖,这是唯一新增自动化面。
|
|
||||||
5. **冒烟全量回归 + 文档随批**:HUD框架.md 渲染技术注记(v0.x 版本行)、battle.md 实现注记(格尺寸公式锚点不动)、architecture.md BoardView 形态行、ui_kit 同步面清点。
|
|
||||||
|
|
||||||
**不做**(明确出批):B 区舞台任何改动;素材终稿接入;格边长数值调整(归样张批);键盘寻格/无障碍(沿 ADR-0003 已接受口径)。
|
|
||||||
|
|
||||||
## 3. Phase B(2026-09-26 已落地——战斗舞台 Node2D 迁移批,台账 170-173)
|
|
||||||
|
|
||||||
- BattleStageView 同构改造**已实施**:PanelContainer → Control 壳(类名/252px/树内位置不变)+ Node2D 舞台半区(SubViewportContainer/SubViewport/StageWorld)+ Control 文本半区(round_label/stage_center/log_view 三件保留);站桩 StandeeView(Control)退役删除,本体 = StandeeBody(Node2D 世界精灵,行为面 17 方法契约保持);slot_row+悬停 tooltip 保留 Control 载体挂壳层(伴随件容器 = enemy_box 语义改写)。
|
|
||||||
- Phase A 交付的两挂点已被 Phase B 复用:set_world_font 字体显式注入(C6 判据=注入非空+has_char+宽度>0)与坐标空间分界纪律(世界=局部排布,壳层换算单点 world_to_shell)。
|
|
||||||
- **样张硬前置改判(用户 2026-09-26 裁决①)**:样张批冻结只卡换皮/演出批(循环 2 前置),不卡结构迁移——本节原「Phase B 开工硬前置 = 样张批冻结」条款据此作废;ADR-0006「只卡换皮不卡开工」原则的落文位。
|
|
||||||
|
|
||||||
## 4. 探针与测量面(实证清单)
|
|
||||||
|
|
||||||
| 探针/工具 | 耦合点(实证) | Phase A 处置 |
|
|
||||||
|---|---|---|
|
|
||||||
| ui_probe | `board_view._cells.is_empty()`(:73)、`_cells.size()` 对板宽高(:187)、`board()`/`set_desaturated()` | `_cells` 键面同构即绿,零改 |
|
|
||||||
| ui_click_probe | `click_cell(cell, button)` 直调(:257–277)、`_cells.is_empty()`(:97);**无合成鼠标事件**(grep parse_input_event/push_input 零命中) | 公共方法保留即绿,零改 |
|
|
||||||
| ui_layout_probe | `get("cell_size")`(:39,现读 null)、`board()` | 增补只读属性(§2.3) |
|
|
||||||
| smoke 行协议同步闸 | 战斗日志 9 类行格式化(smoke_all.gd:3325+)——**是日志行不是棋盘** | 零影响,全量回归覆盖 |
|
|
||||||
| MC / 模拟试玩 / verifier | core/ 逻辑层 | 零接触零影响 |
|
|
||||||
|
|
||||||
## 5. 性能与预算
|
|
||||||
|
|
||||||
- draw calls:CellUnit 同材质 `_draw` 走 2D 批处理,144 格占位态预计个位数批次;预算 < 200 维持(HUD框架 引用值),实施批用 RenderingServer 实测数回填。
|
|
||||||
- 进入战斗屏 500ms 可交互:SubViewport 创建在 `_ready` 一次完成,无逐帧重建;`set_cell_area`/`rebuild` 只重排子节点。
|
|
||||||
- SubViewport 逻辑分辨率 = 格边长 × 板尺寸(≤ 36px × 14 格量级),渲染目标显存占用可忽略;低端机帧预算实施批实测。
|
|
||||||
|
|
||||||
## 6. 风险与对策
|
|
||||||
|
|
||||||
| 风险 | 对策 |
|
|
||||||
|---|---|
|
|
||||||
| SubViewport 内 Label 不继承主场景主题(数字/中文渲染空白或字体错) | 实施批第一小步先做 theme/字体显式注入挂点并用 CJK 冒烟验证——ADR-0006 Verification Required 项 |
|
|
||||||
| 45/36px 锚点 × 32px 格源非整倍缩放出现像素纹路 | 架构只保证 `set_cell_area` 单点可调;数值归样张批(圣经 §8.2 v1.9 注记①路线),本批不裁决 |
|
|
||||||
| `_gui_input` 与 toast/AP 条控件输入抢占 | D 区内部布局不变(Control 兄弟件照旧),棋盘壳是叶节点,抢占面与现 GridContainer 相同;探针四 case 覆盖 |
|
|
||||||
| 改造期行为漂移(呼吸微光/chord 时序等隐性手感) | 功能等价清单(ADR-0006 Validation)逐项人工核对 + 探针自动化面 |
|
|
||||||
|
|
||||||
## 7. 排期与依赖
|
|
||||||
|
|
||||||
| 项 | 估时 | 依赖 |
|
|
||||||
|---|---|---|
|
|
||||||
| 本起草批(ADR-0006 + 本方案 + ADR-0003 注记) | 已完成,待审 | 无 |
|
|
||||||
| Phase A 实施批 | 1–2 天(含探针增补 + 冒烟回归 + 文档随批) | 本方案批准 |
|
|
||||||
| 样张批(素材侧,另线) | 未排 | 主角候选表态 + 复用批审阅 |
|
|
||||||
| Phase B 实施批 | 未排(同构复制,估时随 Phase A 实测修正) | Phase A 落地 + 样张批冻结 |
|
|
||||||
|
|
||||||
与在飞批的关系:曲线调参双刀扫描(worktree hp-bonus-scan-20260923)与本批文件集零交集;UI 复用候选审阅是素材侧独立线,互不阻塞。
|
|
||||||
|
|
||||||
## 8. 验收(实施批完成定义)
|
|
||||||
|
|
||||||
ADR-0006 Validation Criteria 全项:冒烟全量绿 + 三探针绿 + 新增 push_input 探针绿 + 功能等价清单逐项可验 + draw calls < 200 实测回填 + 两档分辨率装板校验(12×12 与 10×10 各验)。
|
|
||||||
@@ -1,132 +0,0 @@
|
|||||||
# 代码架构审查报告 — 代码组织与封装
|
|
||||||
|
|
||||||
> 日期:2026-09-13
|
|
||||||
> 载体:`game/`(9707 行 GDScript:core 12 文件 / data 11 / presentation 28 / smoke 10)
|
|
||||||
> 基线:`docs/architecture/architecture.md` v1.0 + ADR-0001~0005 + `docs/code-conventions.md`
|
|
||||||
> 触发:用户在 code-review 之后要求补充「代码组织问题 + 封装问题」专项审查
|
|
||||||
> 审查方式:core/presentation 关键文件全读 + S1–S8 静态规则逐条 grep 验证 + 跨层引用面扫描
|
|
||||||
>
|
|
||||||
> **Verdict: CONCERNS** — 分层纪律实测扎实(S1–S7 零违例、仅 2 处已登记例外),但封装收口存在
|
|
||||||
> 一条系统性欠账:核心模块内部状态以公有字段暴露,呈现层已形成链式穿透的既成事实。
|
|
||||||
> 原型期无害;是 ADR-0009「切片机制正式化批」应收口的主题。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 正面观察(实测合规项)
|
|
||||||
|
|
||||||
| 规则 | 结论 | 证据 |
|
|
||||||
|---|---|---|
|
|
||||||
| S1/S2 零随机 | ✅ | core 内唯一 `RandomNumberGenerator.new` 在 rng_service.gd:76(所有者本体);`stream.randf()`(reward_supply_controller.gd:32)取号经 B4 注入封闭流 |
|
|
||||||
| S3 零表加载 | ✅ | core 内唯一 `load()` 在 config_db.gd:81(单点本体) |
|
|
||||||
| S4 core 零 UI | ✅ | core/ 无 Control/Node2D/.tscn 引用(grep 命中均为 `RewardSupplyController` 类名误报与注释) |
|
|
||||||
| S5 零裸引用 autoload | ✅ | core/ 内 ConfigDB/RngService 命中均为日志前缀字符串 |
|
|
||||||
| S6 core↔core 方法 Callable | ✅ | level_runner.gd:130-134 全部方法转发;lambda 仅用于 sort_custom(不捕获 self) |
|
|
||||||
| S7 编排唯一性 | ✅ | B2/B3/B4 调用面 core 内收口于 battle_orchestrator.gd;仅 level_runner.gd:112(grant_node_active,已登记接口漂移)与 :168(in_stock_count 只读)两处例外 |
|
|
||||||
| 呈现层零核心引用 | ✅ | 28 个视图/装配器文件中仅 main.gd(组合根)与 hud_presenter.gd(授权翻译点)触 core |
|
|
||||||
| 封装典范 | — | status_container / reward_supply_controller / b4.query_inventory():私有状态 + 投影查询 + 授予时快照;battle_orchestrator.diagnostic_snapshot()(:660)为「成文只读出口」正确先例 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. 封装问题(按根因 → 表征排序)
|
|
||||||
|
|
||||||
### E1(根因)编排器协作对象全公开,呈现层链式穿透已成既成事实 — P1
|
|
||||||
|
|
||||||
- **位置**:core/battle_orchestrator.gd:20-27(`var a1/a2/a3/b2/b3/b4` 全公有)
|
|
||||||
- **表征**:`b1.a2.board`、`b1.b2.hero.hp`、`b1.a3.phase` 式层层下钻——main.gd 18 处、hud_presenter.gd 15 处。
|
|
||||||
- **影响**:组合根与 presenter 是授权翻译点,但访问形态是「恰好字段公开」而非「B1 提供成文读取面」。
|
|
||||||
S7 只能做文件级扫描(防另写调用方),防不了呈现层意外调用写 API,也防不了读取路径随重构漂移。
|
|
||||||
- **建议**:B1 补聚合呈现快照/查询面(`hud_state()` 一类,先例 = `diagnostic_snapshot()`);
|
|
||||||
a2–b4 下划线化后经命名代理暴露只读操作。
|
|
||||||
|
|
||||||
### E2(表征)视图绕过 A2 查询面直读原始状态字典 — P1
|
|
||||||
|
|
||||||
- **位置**:core/minesweeper_rules.gd:18-20(`board/revealed/flags` 公开可变);
|
|
||||||
presentation/views/board_view.gd:278、:303 直接 `_a2.revealed.get(c, {})`
|
|
||||||
- **矛盾点**:board_view.gd:7 头注自称「只读 A2 查询面」——直读 `.revealed` 恰是绕过查询面。
|
|
||||||
B1 自身亦直读(battle_orchestrator.gd:565-569 `a2.board.width/height`)。
|
|
||||||
- **建议**:`revealed/flags` 私有化;补 `reveal_record(c) -> Dictionary`、`board_dimensions()` 查询面。
|
|
||||||
调用点仅 B1 + board_view + main 三处,成本很低。
|
|
||||||
|
|
||||||
### E3(表征)B2 裸字典句柄跨模块传递,API 缺「含死亡残位」查询面 — P2
|
|
||||||
|
|
||||||
- **位置**:core/unit_container.gd:13-14(`hero/enemies` 公开;句柄 = Dictionary 本体,任何持有者可
|
|
||||||
`u.hp = 999` 绕过 apply_damage)
|
|
||||||
- **现症**:hud_presenter.gd:78-79 为渲染死亡残位直读 `b1.b2.enemies` 原始数组——
|
|
||||||
B2 的 `query_alive` 不含死亡单位,API 缺口迫使呈现层越界(B2 头注已登记此痛点)。
|
|
||||||
- **建议**:短期补 `query_all_units()` 投影面把 presenter 需求收进 API;
|
|
||||||
正式化(ADR-0007 两 face 归属裁决时)再决定是否升级 Unit 类型。
|
|
||||||
|
|
||||||
### E4 `db.hero` 表值运行时改写——测试覆盖通道用共享可变单例传参 — P2
|
|
||||||
|
|
||||||
- **位置**:presentation/main.gd:327-329、core/level_runner.gd:60-61,75-76 直接写 `db.hero.atk/max_hp`;
|
|
||||||
B2.spawn 经读表间接获得加成值
|
|
||||||
- **前科**:双写叠加 6→18→54 教训、双基线同步义务(main.gd:187-189 注释)——纪律已成文但机制脆弱。
|
|
||||||
- **建议**:切片保留;将「运行时表可变」登记进 ADR-0009 候选;正式化改参数传递(`spawn(atk_override=...)`)。
|
|
||||||
|
|
||||||
### E5 「只读」字段仅靠纪律,无机制约束 — P2
|
|
||||||
|
|
||||||
- **位置**:core/action_economy.gd:17-20(`phase/ap/rap/last_round_end` 架构文档定义为只读,实际公开可变);
|
|
||||||
core/rng_service.gd:19(`master_seed` 可绕过 set_master_seed 的计数器全零断言)
|
|
||||||
- **现状**:当前调用方全部合规(A2 经 try_spend/request_dig,B1 经 notify_*,呈现层只读)。
|
|
||||||
- **建议**:下划线化 + 查询方法(`phase()/ap()/rap()`),趁调用方少时收口,成本极低。
|
|
||||||
|
|
||||||
### E6 小项 — P3
|
|
||||||
|
|
||||||
| 项 | 位置 | 说明 |
|
|
||||||
|---|---|---|
|
|
||||||
| 返回类型多态 | core/reward_economy.gd(grant/stock/use 失败返 `false`,query_* 返 `null`) | B1 消费处被迫 `if not (snap is Dictionary)`;统一 `null` 更符合 GDScript 惯例 |
|
|
||||||
| 泄漏原始表行 | core/reward_economy.gd:256-265 `equivalence_supply` 返回 `db.reward.rows` 行引用(可变) | 工具观测面,建议 `duplicate()` |
|
|
||||||
| BoardData 全公开 | core/board_data.gd:8-18「生成后不可变」仅靠注释;视图持板即可读全部雷位(当前未作弊) | 正式化时 duplicate 冻结或下划线化 + 访问器 |
|
|
||||||
| 成员声明位置 | core/action_economy.gd:121 `var _next_round_mode` 声明在中部、使用在前 | 集中到顶部 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. 代码组织问题
|
|
||||||
|
|
||||||
### O1 main.gd 回涨至 667 行,再越 ~400 行审视线(规范 1.1)— P1
|
|
||||||
|
|
||||||
- **位置**:presentation/main.gd(667 行);ui_assembler.gd:3 自记「回涨 761 行触发审视线——拆出」历史
|
|
||||||
- **增长主因**:调试模式(`_start_single/_start_debug_levels/_start_battle/_on_battle_finished` 的
|
|
||||||
`_level_mode` 分支约 100+ 行)糊在组合根。
|
|
||||||
- **建议**:照 tune_sim_controller.gd 先例把调试模式抽成独立控制器,组合根回到纯接线。
|
|
||||||
|
|
||||||
### O2 调试模式与 LevelRunner 平行实现,语义漂移风险 — P1
|
|
||||||
|
|
||||||
- **位置**:「库存跨战斗延续 + HP 携带 + 层级推进」存在两份实现——core/level_runner.gd(正式)与
|
|
||||||
main.gd 调试分支(历史入口);`level_clear()` 调用时点已各有细节(main.gd:367,376 vs level_runner.gd:167)。
|
|
||||||
- **建议**:调试两层模式直接复用 LevelRunner(其设计目标即此),或抽 `DebugBattleSession`。
|
|
||||||
|
|
||||||
### O3 B1 体量与纯函数沉淀 — P2
|
|
||||||
|
|
||||||
- **位置**:core/battle_orchestrator.gd 718 行(审视线超 300+);
|
|
||||||
伤害公式族 `_resolve_damage/_charge_damage_component/_armor_effectiveness/_clamped_pool`
|
|
||||||
(约 80 行)为零状态纯算术。
|
|
||||||
- **建议**:按规范 1.2 抽 `DamageMath` 静态宿主类;段序骨架不动、可回放承诺无风险。
|
|
||||||
- **顺带**:core/board_generator.gd:50-55 对同一张合法板调用两次 `measure_inferability`
|
|
||||||
(全库最贵求解器)——合并为一次。
|
|
||||||
|
|
||||||
### O4 呈现层反向依赖 smoke 工具域 — P2
|
|
||||||
|
|
||||||
- **位置**:presentation/tune_sim_controller.gd:23 `load("res://smoke/level_autoplay.gd")`——
|
|
||||||
UI 控制器依赖测试工具目录。
|
|
||||||
- **建议**:「关卡自动模拟循环」上移为共享组件(core 或 lib),smoke 与 tune_sim 共同消费。
|
|
||||||
- **顺带**:main.gd:106,188 与 tune_sim_controller.gd:23 用运行时字符串 `load()`,
|
|
||||||
与 main.gd:16-19 的 `preload` 常量风格混用——统一 `preload`(编译期路径校验)。
|
|
||||||
|
|
||||||
### O5 头注溯源缺失(规范 1.4)— P3
|
|
||||||
|
|
||||||
core/ 12 文件中 4 个缺标准 `# 实现 GDD:...` 行:
|
|
||||||
`board_data.gd`(有 A1 描述但非标准格式)、`config_db.gd`、`rng_service.gd`、`reward_supply_controller.gd`。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. 建议行动顺序
|
|
||||||
|
|
||||||
1. **P1 三连(合计约 2 天)**:
|
|
||||||
E2(A2 状态私有化 + 查询面)→ E1(B1 呈现快照面)→ O1+O2(调试模式抽离/复用 runner)。
|
|
||||||
完成后 board_view / hud_presenter / main 与 core 的接触面全部变为命名 API,封装收口完成。
|
|
||||||
2. **P2 项并入 ADR-0009「切片机制正式化批」裁决**:E4 表值改写参数化、E3 单位句柄形态、
|
|
||||||
O3 DamageMath 拆分、O4 模拟循环上移。
|
|
||||||
3. **P3 顺手清**(头注补齐、返回值统一、声明位置、preload 统一)。
|
|
||||||
|
|
||||||
> 复审触发:P1 三连落地后重跑本审查核对接触面收口;ADR-0009 落定后正式工程骨架迁移前复核 E3/E4 裁决结果。
|
|
||||||
@@ -1,413 +0,0 @@
|
|||||||
{
|
|
||||||
"schema_version": 1,
|
|
||||||
"diagram_type": "architecture",
|
|
||||||
"meta": {
|
|
||||||
"title": "Dungeon Sweeper · GDD 概念结构图",
|
|
||||||
"output": "docs/architecture/gdd-concept-map.html",
|
|
||||||
"quality_profile": "showcase",
|
|
||||||
"locale": "zh-CN",
|
|
||||||
"viewBox": [
|
|
||||||
1364,
|
|
||||||
660
|
|
||||||
],
|
|
||||||
"views": [
|
|
||||||
{
|
|
||||||
"id": "core-loop",
|
|
||||||
"label": "核心循环主链",
|
|
||||||
"focus": [
|
|
||||||
"board-gen",
|
|
||||||
"minesweeper",
|
|
||||||
"action-economy",
|
|
||||||
"settlement",
|
|
||||||
"adventure",
|
|
||||||
"difficulty"
|
|
||||||
],
|
|
||||||
"note": "主路径:新雷图 → 挖掘计费 → 轮末结算 → 关卡推进 → 难度抬升。"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "settlement-hub",
|
|
||||||
"label": "结算枢纽与红线",
|
|
||||||
"focus": [
|
|
||||||
"settlement",
|
|
||||||
"enemy",
|
|
||||||
"status",
|
|
||||||
"rewards",
|
|
||||||
"hud"
|
|
||||||
],
|
|
||||||
"note": "战斗结算是战斗域唯一调用方;呈现层只订阅结算步骤流。"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "foundation",
|
|
||||||
"label": "支撑底座",
|
|
||||||
"focus": [
|
|
||||||
"data-config",
|
|
||||||
"board-gen",
|
|
||||||
"settlement",
|
|
||||||
"hud"
|
|
||||||
],
|
|
||||||
"note": "ConfigDB 单点 + RngService 四流,被全部系统取用。"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"components": [
|
|
||||||
{
|
|
||||||
"id": "board-gen",
|
|
||||||
"type": "backend",
|
|
||||||
"label": "棋盘生成",
|
|
||||||
"sublabel": "可推理·可通关",
|
|
||||||
"pos": [
|
|
||||||
50,
|
|
||||||
300
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
130,
|
|
||||||
64
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "minesweeper",
|
|
||||||
"type": "backend",
|
|
||||||
"label": "排雷玩法",
|
|
||||||
"sublabel": "挖格·插旗·连锁",
|
|
||||||
"pos": [
|
|
||||||
240,
|
|
||||||
300
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
136,
|
|
||||||
64
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "action-economy",
|
|
||||||
"type": "backend",
|
|
||||||
"label": "行动经济",
|
|
||||||
"sublabel": "AP 账本·停手/刷新",
|
|
||||||
"pos": [
|
|
||||||
436,
|
|
||||||
300
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
140,
|
|
||||||
64
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "settlement",
|
|
||||||
"type": "backend",
|
|
||||||
"label": "战斗结算",
|
|
||||||
"sublabel": "轮末编排·逐行兑现",
|
|
||||||
"pos": [
|
|
||||||
648,
|
|
||||||
300
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
156,
|
|
||||||
72
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "adventure",
|
|
||||||
"type": "backend",
|
|
||||||
"label": "冒险结构",
|
|
||||||
"sublabel": "关卡序列·大奖励",
|
|
||||||
"pos": [
|
|
||||||
952,
|
|
||||||
300
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
136,
|
|
||||||
64
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "difficulty",
|
|
||||||
"type": "backend",
|
|
||||||
"label": "难度曲线与Boss",
|
|
||||||
"sublabel": "期望值带·Dmax",
|
|
||||||
"pos": [
|
|
||||||
1152,
|
|
||||||
300
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
150,
|
|
||||||
64
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "aux-items",
|
|
||||||
"type": "backend",
|
|
||||||
"label": "魔法道具",
|
|
||||||
"sublabel": "显影·探测类",
|
|
||||||
"pos": [
|
|
||||||
240,
|
|
||||||
140
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
136,
|
|
||||||
64
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "enemy",
|
|
||||||
"type": "backend",
|
|
||||||
"label": "敌人系统",
|
|
||||||
"sublabel": "敌人数据·意图",
|
|
||||||
"pos": [
|
|
||||||
651,
|
|
||||||
140
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
150,
|
|
||||||
64
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "hud",
|
|
||||||
"type": "frontend",
|
|
||||||
"label": "HUD框架",
|
|
||||||
"sublabel": "呈现契约·布局",
|
|
||||||
"pos": [
|
|
||||||
244,
|
|
||||||
470
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
136,
|
|
||||||
64
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "data-config",
|
|
||||||
"type": "database",
|
|
||||||
"label": "数据配置",
|
|
||||||
"sublabel": "ConfigDB·RngService",
|
|
||||||
"pos": [
|
|
||||||
37,
|
|
||||||
470
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
156,
|
|
||||||
64
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "status",
|
|
||||||
"type": "backend",
|
|
||||||
"label": "增益状态",
|
|
||||||
"sublabel": "容器·叠层·衰减",
|
|
||||||
"pos": [
|
|
||||||
614,
|
|
||||||
470
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
130,
|
|
||||||
64
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "rewards",
|
|
||||||
"type": "backend",
|
|
||||||
"label": "地图战斗资源",
|
|
||||||
"sublabel": "格面资源·清图奖励",
|
|
||||||
"pos": [
|
|
||||||
776,
|
|
||||||
470
|
|
||||||
],
|
|
||||||
"size": [
|
|
||||||
136,
|
|
||||||
64
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"boundaries": [
|
|
||||||
{
|
|
||||||
"kind": "region",
|
|
||||||
"label": "排雷循环",
|
|
||||||
"wraps": [
|
|
||||||
"board-gen",
|
|
||||||
"minesweeper",
|
|
||||||
"action-economy",
|
|
||||||
"aux-items"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": "region",
|
|
||||||
"label": "战斗循环",
|
|
||||||
"wraps": [
|
|
||||||
"settlement",
|
|
||||||
"enemy",
|
|
||||||
"status",
|
|
||||||
"rewards"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": "region",
|
|
||||||
"label": "冒险循环",
|
|
||||||
"wraps": [
|
|
||||||
"adventure",
|
|
||||||
"difficulty"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": "region",
|
|
||||||
"label": "表现与支撑",
|
|
||||||
"wraps": [
|
|
||||||
"data-config",
|
|
||||||
"hud"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"connections": [
|
|
||||||
{
|
|
||||||
"id": "gen-to-mines",
|
|
||||||
"from": "board-gen",
|
|
||||||
"to": "minesweeper",
|
|
||||||
"label": "生成雷图",
|
|
||||||
"variant": "emphasis"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "mines-to-ap",
|
|
||||||
"from": "minesweeper",
|
|
||||||
"to": "action-economy",
|
|
||||||
"label": "挖掘花费 AP",
|
|
||||||
"variant": "emphasis"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ap-to-settle",
|
|
||||||
"from": "action-economy",
|
|
||||||
"to": "settlement",
|
|
||||||
"label": "round_end",
|
|
||||||
"variant": "emphasis"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "settle-to-enemy",
|
|
||||||
"from": "settlement",
|
|
||||||
"to": "enemy",
|
|
||||||
"label": "兑现敌人行动"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "settle-to-status",
|
|
||||||
"from": "settlement",
|
|
||||||
"to": "status",
|
|
||||||
"label": "兑现增益减益",
|
|
||||||
"fromSide": "bottom",
|
|
||||||
"toSide": "top",
|
|
||||||
"labelAt": [
|
|
||||||
679,
|
|
||||||
447
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "settle-to-rewards",
|
|
||||||
"from": "settlement",
|
|
||||||
"to": "rewards",
|
|
||||||
"label": "兑现格面奖励",
|
|
||||||
"fromSide": "bottom",
|
|
||||||
"toSide": "top"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "settle-to-adv",
|
|
||||||
"from": "settlement",
|
|
||||||
"to": "adventure",
|
|
||||||
"label": "结果推进关卡",
|
|
||||||
"variant": "emphasis"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "adv-to-diff",
|
|
||||||
"from": "adventure",
|
|
||||||
"to": "difficulty",
|
|
||||||
"label": "关卡定级",
|
|
||||||
"variant": "emphasis",
|
|
||||||
"labelDy": 14
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "diff-to-enemy",
|
|
||||||
"from": "difficulty",
|
|
||||||
"to": "enemy",
|
|
||||||
"label": "数值与 Boss Dmax"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "mines-to-aux",
|
|
||||||
"from": "minesweeper",
|
|
||||||
"to": "aux-items",
|
|
||||||
"label": "挖掘期使用"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "base-to-gen",
|
|
||||||
"from": "data-config",
|
|
||||||
"to": "board-gen",
|
|
||||||
"label": "种子与表值",
|
|
||||||
"labelAt": [
|
|
||||||
115,
|
|
||||||
395
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "base-to-settle",
|
|
||||||
"from": "data-config",
|
|
||||||
"to": "settlement",
|
|
||||||
"label": "RNG 流·表值",
|
|
||||||
"fromSide": "top",
|
|
||||||
"toSide": "bottom"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "settle-to-hud",
|
|
||||||
"from": "settlement",
|
|
||||||
"to": "hud",
|
|
||||||
"label": "结算步骤流",
|
|
||||||
"variant": "dashed",
|
|
||||||
"fromSide": "left",
|
|
||||||
"toSide": "top"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "adv-to-gen",
|
|
||||||
"from": "adventure",
|
|
||||||
"to": "board-gen",
|
|
||||||
"label": "推进下一关",
|
|
||||||
"variant": "dashed",
|
|
||||||
"fromSide": "bottom",
|
|
||||||
"toSide": "left",
|
|
||||||
"via": [
|
|
||||||
[
|
|
||||||
1020,
|
|
||||||
618
|
|
||||||
],
|
|
||||||
[
|
|
||||||
15,
|
|
||||||
618
|
|
||||||
],
|
|
||||||
[
|
|
||||||
15,
|
|
||||||
332
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"cards": [
|
|
||||||
{
|
|
||||||
"dot": "cyan",
|
|
||||||
"title": "核心循环",
|
|
||||||
"items": [
|
|
||||||
"主路径:棋盘生成 → 挖掘计费 → 轮末结算 → 关卡推进 → 难度抬升",
|
|
||||||
"难度参数流入下一关雷图,虚线「推进下一关」闭合整局循环"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dot": "emerald",
|
|
||||||
"title": "结算枢纽与架构红线",
|
|
||||||
"items": [
|
|
||||||
"战斗结算是敌人系统、增益状态、地图战斗资源的唯一调用方",
|
|
||||||
"呈现层只订阅战斗结算步骤流,不直订排雷玩法事件"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dot": "amber",
|
|
||||||
"title": "支撑底座与未上图",
|
|
||||||
"items": [
|
|
||||||
"数据配置(ConfigDB + RngService 四流)被全部系统引用,图中只画主干两笔",
|
|
||||||
"未上图(已定稿):地形变异、存档序列化、战斗表现、音频、教学引导、设置与本地化",
|
|
||||||
"范围草案:关卡节点地图、元进度"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large.
Load diff
Binary file not shown.
|
Before Width: | Height: | Size: 136 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 146 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 171 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 182 KiB |
@@ -1,32 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
||||||
<title>Archify automated browser evidence · gdd-concept-map.html</title>
|
|
||||||
<style>
|
|
||||||
*{box-sizing:border-box}body{margin:0;padding:24px;background:#e9eef5;color:#172033;font:14px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}header{max-width:1500px;margin:0 auto 18px}h1{margin:0 0 6px;font-size:20px}p{margin:0;color:#526176}.grid{max-width:1500px;margin:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}figure{margin:0;padding:10px;background:white;border:1px solid #c9d4e3;border-radius:12px;box-shadow:0 10px 30px rgba(15,23,42,.08)}img{display:block;width:100%;height:auto;border:1px solid #e2e8f0}figcaption{padding:9px 4px 2px;color:#526176}@media(max-width:900px){.grid{grid-template-columns:1fr}}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header><h1>Automated browser evidence</h1><p>gdd-concept-map.html · visual-check containment pass · perceptual visual review pending</p></header>
|
|
||||||
<main class="grid">
|
|
||||||
<figure>
|
|
||||||
<img src="gdd-concept-map.visual-check.1440x900.light.png" alt="light 1440 by 900">
|
|
||||||
<figcaption><strong>LIGHT</strong> · 1440×900 · containment pass</figcaption>
|
|
||||||
</figure>
|
|
||||||
<figure>
|
|
||||||
<img src="gdd-concept-map.visual-check.1440x900.dark.png" alt="dark 1440 by 900">
|
|
||||||
<figcaption><strong>DARK</strong> · 1440×900 · containment pass</figcaption>
|
|
||||||
</figure>
|
|
||||||
<figure>
|
|
||||||
<img src="gdd-concept-map.visual-check.2048x1320.light.png" alt="light 2048 by 1320">
|
|
||||||
<figcaption><strong>LIGHT</strong> · 2048×1320 · containment pass</figcaption>
|
|
||||||
</figure>
|
|
||||||
<figure>
|
|
||||||
<img src="gdd-concept-map.visual-check.2048x1320.dark.png" alt="dark 2048 by 1320">
|
|
||||||
<figcaption><strong>DARK</strong> · 2048×1320 · containment pass</figcaption>
|
|
||||||
</figure>
|
|
||||||
</main>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,548 +0,0 @@
|
|||||||
{
|
|
||||||
"schemaVersion": 1,
|
|
||||||
"ok": true,
|
|
||||||
"command": "visual-check",
|
|
||||||
"evidenceKind": "automated-browser",
|
|
||||||
"status": "pass",
|
|
||||||
"visualReview": "pending",
|
|
||||||
"artifact": {
|
|
||||||
"path": "D:\\code\\g-plan2\\docs\\architecture\\gdd-concept-map.html",
|
|
||||||
"sha256": "aa7ea12deda2e43cc4d95e8550057f0e4e4d9dc617a968410cd55a0f454dc295",
|
|
||||||
"bytes": 817914
|
|
||||||
},
|
|
||||||
"state": {
|
|
||||||
"detail": "read",
|
|
||||||
"motion": "still"
|
|
||||||
},
|
|
||||||
"chrome": {
|
|
||||||
"status": "available",
|
|
||||||
"executable": "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
|
|
||||||
},
|
|
||||||
"diagnostics": [],
|
|
||||||
"containment": {
|
|
||||||
"status": "pass",
|
|
||||||
"viewports": [
|
|
||||||
{
|
|
||||||
"width": 1440,
|
|
||||||
"height": 900,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 1440,
|
|
||||||
"innerHeight": 900,
|
|
||||||
"scrollWidth": 1440,
|
|
||||||
"scrollHeight": 900,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1117,
|
|
||||||
"diagramWidth": 1087,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 7.172287390029325,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 51,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"width": 1600,
|
|
||||||
"height": 1000,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 1600,
|
|
||||||
"innerHeight": 1000,
|
|
||||||
"scrollWidth": 1600,
|
|
||||||
"scrollHeight": 1000,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1154,
|
|
||||||
"diagramWidth": 1124,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 7.41642228739003,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 51,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"width": 1920,
|
|
||||||
"height": 1080,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 1920,
|
|
||||||
"innerHeight": 1080,
|
|
||||||
"scrollWidth": 1920,
|
|
||||||
"scrollHeight": 1080,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1320,
|
|
||||||
"diagramWidth": 1290,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 8.511730205278592,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 51,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"width": 2048,
|
|
||||||
"height": 1320,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 2048,
|
|
||||||
"innerHeight": 1320,
|
|
||||||
"scrollWidth": 2048,
|
|
||||||
"scrollHeight": 1320,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1819,
|
|
||||||
"diagramWidth": 1769,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 9,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 41,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"readability": {
|
|
||||||
"status": "pass",
|
|
||||||
"minimumProjectedNodeTextPx": 6,
|
|
||||||
"viewports": [
|
|
||||||
{
|
|
||||||
"width": 1440,
|
|
||||||
"height": 900,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 1440,
|
|
||||||
"innerHeight": 900,
|
|
||||||
"scrollWidth": 1440,
|
|
||||||
"scrollHeight": 900,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1117,
|
|
||||||
"diagramWidth": 1087,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 7.172287390029325,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 51,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"width": 1600,
|
|
||||||
"height": 1000,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 1600,
|
|
||||||
"innerHeight": 1000,
|
|
||||||
"scrollWidth": 1600,
|
|
||||||
"scrollHeight": 1000,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1154,
|
|
||||||
"diagramWidth": 1124,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 7.41642228739003,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 51,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"width": 1920,
|
|
||||||
"height": 1080,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 1920,
|
|
||||||
"innerHeight": 1080,
|
|
||||||
"scrollWidth": 1920,
|
|
||||||
"scrollHeight": 1080,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1320,
|
|
||||||
"diagramWidth": 1290,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 8.511730205278592,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 51,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"width": 2048,
|
|
||||||
"height": 1320,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 2048,
|
|
||||||
"innerHeight": 1320,
|
|
||||||
"scrollWidth": 2048,
|
|
||||||
"scrollHeight": 1320,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1819,
|
|
||||||
"diagramWidth": 1769,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 9,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 41,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"viewerChrome": {
|
|
||||||
"status": "pass",
|
|
||||||
"viewports": [
|
|
||||||
{
|
|
||||||
"width": 1440,
|
|
||||||
"height": 900,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 1440,
|
|
||||||
"innerHeight": 900,
|
|
||||||
"scrollWidth": 1440,
|
|
||||||
"scrollHeight": 900,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1117,
|
|
||||||
"diagramWidth": 1087,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 7.172287390029325,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 51,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"width": 1600,
|
|
||||||
"height": 1000,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 1600,
|
|
||||||
"innerHeight": 1000,
|
|
||||||
"scrollWidth": 1600,
|
|
||||||
"scrollHeight": 1000,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1154,
|
|
||||||
"diagramWidth": 1124,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 7.41642228739003,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 51,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"width": 1920,
|
|
||||||
"height": 1080,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 1920,
|
|
||||||
"innerHeight": 1080,
|
|
||||||
"scrollWidth": 1920,
|
|
||||||
"scrollHeight": 1080,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1320,
|
|
||||||
"diagramWidth": 1290,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 8.511730205278592,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 51,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"width": 2048,
|
|
||||||
"height": 1320,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 2048,
|
|
||||||
"innerHeight": 1320,
|
|
||||||
"scrollWidth": 2048,
|
|
||||||
"scrollHeight": 1320,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1819,
|
|
||||||
"diagramWidth": 1769,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 9,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 41,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"captures": {
|
|
||||||
"status": "pass",
|
|
||||||
"screenshots": [
|
|
||||||
{
|
|
||||||
"width": 1440,
|
|
||||||
"height": 900,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 1440,
|
|
||||||
"innerHeight": 900,
|
|
||||||
"scrollWidth": 1440,
|
|
||||||
"scrollHeight": 900,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1117,
|
|
||||||
"diagramWidth": 1087,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 7.172287390029325,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 51,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light",
|
|
||||||
"file": "gdd-concept-map.visual-check.1440x900.light.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"width": 1440,
|
|
||||||
"height": 900,
|
|
||||||
"theme": "dark",
|
|
||||||
"innerWidth": 1440,
|
|
||||||
"innerHeight": 900,
|
|
||||||
"scrollWidth": 1440,
|
|
||||||
"scrollHeight": 900,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1117,
|
|
||||||
"diagramWidth": 1087,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 7.172287390029325,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 51,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "dark",
|
|
||||||
"file": "gdd-concept-map.visual-check.1440x900.dark.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"width": 2048,
|
|
||||||
"height": 1320,
|
|
||||||
"theme": "light",
|
|
||||||
"innerWidth": 2048,
|
|
||||||
"innerHeight": 1320,
|
|
||||||
"scrollWidth": 2048,
|
|
||||||
"scrollHeight": 1320,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1819,
|
|
||||||
"diagramWidth": 1769,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 9,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 41,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "light",
|
|
||||||
"file": "gdd-concept-map.visual-check.2048x1320.light.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"width": 2048,
|
|
||||||
"height": 1320,
|
|
||||||
"theme": "dark",
|
|
||||||
"innerWidth": 2048,
|
|
||||||
"innerHeight": 1320,
|
|
||||||
"scrollWidth": 2048,
|
|
||||||
"scrollHeight": 1320,
|
|
||||||
"overflowX": false,
|
|
||||||
"overflowY": false,
|
|
||||||
"ok": true,
|
|
||||||
"readerWidth": 1819,
|
|
||||||
"diagramWidth": 1769,
|
|
||||||
"viewBoxWidth": 1364,
|
|
||||||
"minimumProjectedNodeTextPx": 9,
|
|
||||||
"minimumProjectedNodeText": "可推理·可通关",
|
|
||||||
"minimumProjectedNodeTextDetail": "context",
|
|
||||||
"minimumRequiredNodeTextPx": 6,
|
|
||||||
"readabilityOk": true,
|
|
||||||
"hasLegend": false,
|
|
||||||
"hasNavigationDock": true,
|
|
||||||
"legendDockIntersectionArea": 0,
|
|
||||||
"dockStageIntersectionArea": 0,
|
|
||||||
"dockStageGap": 10.21875,
|
|
||||||
"requiredDockStageGap": 10,
|
|
||||||
"viewerChromeStageOk": true,
|
|
||||||
"viewerChromeReserve": 41,
|
|
||||||
"viewerChromeActive": true,
|
|
||||||
"viewerChromeOk": true,
|
|
||||||
"resolvedTheme": "dark",
|
|
||||||
"file": "gdd-concept-map.visual-check.2048x1320.dark.png"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"contactSheet": "gdd-concept-map.visual-check.html"
|
|
||||||
},
|
|
||||||
"sidecars": {
|
|
||||||
"receipt": "gdd-concept-map.visual-check.json",
|
|
||||||
"contactSheet": "gdd-concept-map.visual-check.html"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
# Requirements Traceability Matrix — Dungeon Sweeper
|
|
||||||
|
|
||||||
> 生成:2026-09-12 · 源:`docs/architecture/architecture.md` §Technical Requirements Baseline(63 条)+ ADR-0001~0005 · 2026-09-15 雾格移除清理(a4-001/002 需求文本与载体同步现行文档)
|
|
||||||
> 门检查口径:**Foundation 层零缺口** = 每条 Foundation TR 都有明确裁决载体(专项 ADR,或经 design-review 门禁的 Approved GDD 契约 + 本架构文档章节),无未决项。
|
|
||||||
> 状态图例:✅ 已覆盖 · 🔶 待 ADR(非 Foundation,随对应系统开工前裁决)· ⏳ 随未设计系统
|
|
||||||
|
|
||||||
## 覆盖总览
|
|
||||||
|
|
||||||
| 层 | TR 数 | 专项 ADR 覆盖 | GDD 契约 + 架构文档覆盖 | 待裁决 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| Foundation | 36 | ADR-0001(a3-004)· ADR-0004(d2-014/016)· ADR-0005(d2-010/gc-002) | 32 条(D2/A3/A4/B3 GDD 均 Approved + 架构文档所有权/API 节) | **0** ✅ |
|
|
||||||
| Core | 21 | ADR-0001(b1-001/002)· ADR-0002(—) | 19 条 | 2(a1-011/012 → ADR-0006) |
|
|
||||||
| Feature | 2 | — | b1 对账协议等 | 0(b1-010 文档承载) |
|
|
||||||
| Presentation / Platform | 4 | ADR-0002(gc-008) | gc-006/007 文档 | 2(gc-004/005 随 D1/B5) |
|
|
||||||
|
|
||||||
## Foundation 层逐条(36 条——零缺口核验)
|
|
||||||
|
|
||||||
| TR | 需求 | 裁决载体 |
|
|
||||||
|---|---|---|
|
|
||||||
| d2-001~003 | 单一事实源 / ConfigDB 单点 / schema 先行 10 表 | D2 GDD(Approved)+ architecture.md §Module Ownership |
|
|
||||||
| d2-004 | 进度键 + R1 floor 解析 | D2 GDD R1 + architecture.md §API Boundaries |
|
|
||||||
| d2-005/006 | RngService 封闭流 / R2 派生与黄金向量 | D2 GDD R2 + architecture.md 原则 3 |
|
|
||||||
| d2-007 | 校验双通道 + 夹具注入 | D2 GDD + ADR-0004(载体) |
|
|
||||||
| d2-008 | 加载期/运行期致命 | D2 GDD Rule 6 |
|
|
||||||
| d2-009 | D2 零 UI 依赖 | D2 GDD Rule 7 + ADR-0003(core 隔离)+ architecture.md 原则 1 |
|
|
||||||
| **d2-010** | SCHEMA_VERSION 版本化 | **ADR-0005** |
|
|
||||||
| d2-011 | debug override 链 | D2 GDD R3 |
|
|
||||||
| d2-012 | 热重载状态机 + reload gate | D2 GDD + B1 GDD(唯一调用方) |
|
|
||||||
| d2-013 | 诊断收集器 | D2 GDD 校验双通道节 |
|
|
||||||
| **d2-014** | 冒烟框架协议 | **ADR-0004** |
|
|
||||||
| **d2-015** | RNG 快照 = seed + 计数器 | **ADR-0005** |
|
|
||||||
| **d2-016** | 项目级静态扫描域 | **ADR-0004**(S1–S8) |
|
|
||||||
| a3-001~003/005~008 | AP/RAP 账本、仲裁、相位机、refresh、表承载、last_round_end | A3 GDD(Approved)+ architecture.md |
|
|
||||||
| **a3-004** | round_end 双发射源 | **ADR-0001**(round_end_board / round_end_stopped) |
|
|
||||||
| a4-001/002 | 变异框架(原雾行跨字段校验已随雾格移除) | A4 GDD(Approved)+ 现行《地形变异》 |
|
|
||||||
| a4-003/004 | 生成期布置执行归 A1 / 零特判 | A4 GDD + A1/A2 GDD |
|
|
||||||
| b3-001~006 | 统一容器 / 时限量纲 / 五 API / 三分支 / 快照 / 不 clamp | B3 GDD(Approved) |
|
|
||||||
|
|
||||||
## Core / Feature / Presentation 层(27 条)
|
|
||||||
|
|
||||||
| TR | 需求 | 载体 | 状态 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| a1-001~010, a2-001~010, b2-001~004/006, b4-001~009, b1-003~009/011 | 各系统行为契约(详见 architecture.md §TR Baseline) | 各 GDD(Approved)+ architecture.md §Module Ownership / §API Boundaries;事件类(a2-002/003、b1-001/002)由 **ADR-0001** 承载 | ✅ |
|
|
||||||
| **a1-011** | 度量独立入口三函数 | 🔶 待 **ADR-0006**(生成性能与异步化——A1 OQ2/OQ3) | 🔶 |
|
|
||||||
| **a1-012** | F2c 成本闸 / 生成性能姿态 | 🔶 待 **ADR-0006**(Core 层,A1 开工前裁决;切片证据已背书同步方案) | 🔶 |
|
|
||||||
| **b2-005**(注:face 归属实为 b2 OQ1 项) | query_attack/ambush_grant_plan 两 face | 🔶 待 **ADR-0007**(单位 API face 归属——B2 OQ1/OQ5) | 🔶 |
|
|
||||||
| **gc-004** | 双舞台资产管线 | ⏳ B5 前美术测试 → ADR-0011 | ⏳ |
|
|
||||||
| **gc-005** | 视觉锚三硬约束 | 🔶 D1 GDD(未写——MVP 层最后一块;切片教训四条为其硬输入) | 🔶 |
|
|
||||||
| gc-006/007 | 性能预算 / 平台输入 | technical-preferences + ADR-0002(窗口基座) | ✅ |
|
|
||||||
| **gc-008** | 渲染器选择 | **ADR-0002** | ✅ |
|
|
||||||
|
|
||||||
## 待裁决 ADR 队列(全部非 Foundation)
|
|
||||||
|
|
||||||
| ADR | 议题 | 触发时机 |
|
|
||||||
|---|---|---|
|
|
||||||
| ADR-0006 | 生成性能与异步化(A1 OQ2/OQ3 + 度量独立入口确认) | A1 生产实现前 |
|
|
||||||
| ADR-0007 | B2/B1 两 face 归属 + HeroTable 单行校验落点 | B2 生产实现前 |
|
|
||||||
| ADR-0008 | 零伤害死局跨字段护栏落点 | D2 生产化前 |
|
|
||||||
| ADR-0009 | 切片机制正式化(轮内刷新 / RewardSupplyController / LevelTable / grant_node_active / clear_blast) | 正式化批 |
|
|
||||||
| ADR-0010~0013 | A1 熔断 / B5 舞台 / A5 显影 / D3 存档格式(契约已由 ADR-0005 锁定) | 各系统 GDD 立项时 |
|
|
||||||
@@ -179,6 +179,7 @@
|
|||||||
| sim-data 白名单 | `sim-data/` 只保留 README、日志、分析工具 .py、现行 MC 对拍锚(显式清单)、设计文档 md;可再生原始数据(runsum/raw jsonl/逐局 CSV/report txt/样例输出)不入库 |
|
| sim-data 白名单 | `sim-data/` 只保留 README、日志、分析工具 .py、现行 MC 对拍锚(显式清单)、设计文档 md;可再生原始数据(runsum/raw jsonl/逐局 CSV/report txt/样例输出)不入库 |
|
||||||
| 出口清理项 | 每迭代出口检查单必含清理项:本迭代中间产物逐份核对(结论已吸收、未决已迁移)后删除 |
|
| 出口清理项 | 每迭代出口检查单必含清理项:本迭代中间产物逐份核对(结论已吸收、未决已迁移)后删除 |
|
||||||
| 暂存地非档案库 | `design/research/` 与 `design/qa/` 是中间文档的暂存地,不是永久档案库;入此两处的文件默认按本节规则到期即死 |
|
| 暂存地非档案库 | `design/research/` 与 `design/qa/` 是中间文档的暂存地,不是永久档案库;入此两处的文件默认按本节规则到期即死 |
|
||||||
|
| 证据只留最新(2026-10-09 用户立规) | 测试证据(出口报告/读数/截图/对比图)只保留最新一次迭代或最新一轮同类审计的版本——旧证据无参考作用,测试按状态不按历史;新证据落位后同批删除上一份;等人工检查的清单不受此限,过人闸后按本行退役 |
|
||||||
|
|
||||||
**删除方式**:按第 8 节删除概念 SOP 的口径执行——先查引用面(grep 文件名于上表阻塞域),改写或删除指路句,再删文件,收尾跑死链检查全绿。
|
**删除方式**:按第 8 节删除概念 SOP 的口径执行——先查引用面(grep 文件名于上表阻塞域),改写或删除指路句,再删文件,收尾跑死链检查全绿。
|
||||||
|
|
||||||
@@ -198,3 +199,4 @@
|
|||||||
| v10 | 2026-10-04 | **台账去压缩条款(用户立规)**:第 10 节废除「每条 ≤3 行」——能看懂比字数少更重要;条目改用完整白话句子写结论,长度服从可读性;第 4 节黑话禁令对台账同等生效。起因:2026-10-04 黑话审计证实 ≤3 行压缩压力迫使台账条目使用自造缩略语(收口/落籍/在飞等约 15 个流程动词、530 条自造短语),并渗入正式文档;CLAUDE.md 规范导航表「会话进度记录」行同步改写 |
|
| v10 | 2026-10-04 | **台账去压缩条款(用户立规)**:第 10 节废除「每条 ≤3 行」——能看懂比字数少更重要;条目改用完整白话句子写结论,长度服从可读性;第 4 节黑话禁令对台账同等生效。起因:2026-10-04 黑话审计证实 ≤3 行压缩压力迫使台账条目使用自造缩略语(收口/落籍/在飞等约 15 个流程动词、530 条自造短语),并渗入正式文档;CLAUDE.md 规范导航表「会话进度记录」行同步改写 |
|
||||||
| v11 | 2026-10-04 | **第 4 节补强:自造词三形态禁令(用户令,黑话审计后)**:新增自造词三种固定形态禁令表(工作包代号 / 机制造词 / 流程造词,各带本仓真实反例与正确写法)+ 通行检验标准(读者 = 业内人但没读过项目历史,需要作者解释的词即不合格,展开才算改)+ 写后自查动作;同批 CLAUDE.md 硬性红线新增「用语红线」一行。起因:原第 4 节禁令过于抽象、执行失效(全仓 530 条自造短语),且未明确覆盖对话输出与工作日志命名 |
|
| v11 | 2026-10-04 | **第 4 节补强:自造词三形态禁令(用户令,黑话审计后)**:新增自造词三种固定形态禁令表(工作包代号 / 机制造词 / 流程造词,各带本仓真实反例与正确写法)+ 通行检验标准(读者 = 业内人但没读过项目历史,需要作者解释的词即不合格,展开才算改)+ 写后自查动作;同批 CLAUDE.md 硬性红线新增「用语红线」一行。起因:原第 4 节禁令过于抽象、执行失效(全仓 530 条自造短语),且未明确覆盖对话输出与工作日志命名 |
|
||||||
| v12 | 2026-10-09 | §9 摘除 design/archive/gdd-2026-09-14/ 归档列项(目录已删,2026-10-09 用户令旧档引用全量摘除);旧概念翻译与 registry 改指两条维持 |
|
| v12 | 2026-10-09 | §9 摘除 design/archive/gdd-2026-09-14/ 归档列项(目录已删,2026-10-09 用户令旧档引用全量摘除);旧概念翻译与 registry 改指两条维持 |
|
||||||
|
| v13 | 2026-10-09 | §11 新增「证据只留最新」行(2026-10-09 用户立规——qa 存量清理批随批落文):测试证据只保留最新迭代/最新一轮审计版本,新证据落位即删上一份;待人清单过闸后同规退役 |
|
||||||
@@ -250,7 +250,7 @@
|
|||||||
|
|
||||||
**归属**:难度曲线与Boss调参批,扫描执行与[棋盘生成](systems/排雷循环/棋盘生成.md)工具交付联动
|
**归属**:难度曲线与Boss调参批,扫描执行与[棋盘生成](systems/排雷循环/棋盘生成.md)工具交付联动
|
||||||
|
|
||||||
**状态**:**C1 终态已落表(返工批 2026-09-29)**——占比回退 5+plb 0+岩浆 1;U2 裁决记录(2026-09-29:b 项推翻 C3 四件组合裁 **C1 两刀**〔岩浆 effect_value 2→1+逐层变异基数 2→0;变异占比维持 5%、卓尔血维持 130〕——已落表的占比 4→5、卓尔 100→130 两行回退;a 项推翻丙裁 **甲=新杠杆授权**〔完美 L1 89% 挂账废止,见新条目「完美 L1 新杠杆授权」〕)。C1+v1 AC 组合双窗读数已到账;r_boss 复算 ≈0.33 仍低于域〔挂账维持〕;L3 密度 5%+0(介于 9% 与 4% 间)带外观察态;完美 L1 越带收敛已归难度曲线与Boss.md 带换代节承接(全局难度批、M-4 排序;原「完美 L1 新杠杆授权」「战斗阶段数值问题」两 06 条目 2026-10-03 收口移除)。原扫描记录见 design/qa/m3-iter5-lever-scan-2026-09-28.md,U2 裁断全录见 git 提交 f9c1a8a
|
**状态**:**C1 终态已落表(返工批 2026-09-29)**——占比回退 5+plb 0+岩浆 1;U2 裁决记录(2026-09-29:b 项推翻 C3 四件组合裁 **C1 两刀**〔岩浆 effect_value 2→1+逐层变异基数 2→0;变异占比维持 5%、卓尔血维持 130〕——已落表的占比 4→5、卓尔 100→130 两行回退;a 项推翻丙裁 **甲=新杠杆授权**〔完美 L1 89% 挂账废止,见新条目「完美 L1 新杠杆授权」〕)。C1+v1 AC 组合双窗读数已到账;r_boss 复算 ≈0.33 仍低于域〔挂账维持〕;L3 密度 5%+0(介于 9% 与 4% 间)带外观察态;完美 L1 越带收敛已归难度曲线与Boss.md 带换代节承接(全局难度批、M-4 排序;原「完美 L1 新杠杆授权」「战斗阶段数值问题」两 06 条目 2026-10-03 收口移除)。原扫描记录见 迭代5杠杆扫描报告(已退役,git 历史可查),U2 裁断全录见 git 提交 f9c1a8a
|
||||||
|
|
||||||
#### 三方向各自的解锁清单与定价
|
#### 三方向各自的解锁清单与定价
|
||||||
|
|
||||||
@@ -266,7 +266,7 @@
|
|||||||
|
|
||||||
**归属**:HUD 批(M-4,批未立项)——已随迭代 17 卡③实施
|
**归属**:HUD 批(M-4,批未立项)——已随迭代 17 卡③实施
|
||||||
|
|
||||||
**状态**:✅ 代码面已交付待实机目检(2026-10-06,迭代 17 卡③暂停层只读入口批——worktree g-plan2-iter17-pause 分支 iter17-pause-20261006,提交 c08a901/fc9eb1e/d44fdd5+收口笔;P1丁常驻角标/P2甲设置层同档 dim 遮罩/P3甲余额+三柜台进度/P4甲零动效直开直关全落;badge 已按 Q10 甲工厂化入 ui_kit 并同步迁营地钥石徽;机检=冒烟 788/0+run_all 17 套+四探针全绿〔含输入锁 case⑯/只读巡检/零动效契约/钥石徽对比度对〕+doc 三闸零新增;**人闸=用户实机目检** design/qa/iter17-pause-human-gate-checklist-2026-10-06.md——过闸后本条销号;Esc 快捷通道维持本清单键盘/手柄条登记随键盘批办理)
|
**状态**:✅ 代码面已交付待实机目检(2026-10-06,迭代 17 卡③暂停层只读入口批——worktree g-plan2-iter17-pause 分支 iter17-pause-20261006,提交 c08a901/fc9eb1e/d44fdd5+收口笔;P1丁常驻角标/P2甲设置层同档 dim 遮罩/P3甲余额+三柜台进度/P4甲零动效直开直关全落;badge 已按 Q10 甲工厂化入 ui_kit 并同步迁营地钥石徽;机检=冒烟 788/0+run_all 17 套+四探针全绿〔含输入锁 case⑯/只读巡检/零动效契约/钥石徽对比度对〕+doc 三闸零新增;**人闸=用户实机目检** 迭代17暂停层人闸清单(已退役,git 历史可查)——过闸后本条销号;Esc 快捷通道维持本清单键盘/手柄条登记随键盘批办理)
|
||||||
#### 第一关亮墨数字直画观感优化(2026-10-01 T17 目检体感登记——2026-10-07 用户令删除)
|
#### 第一关亮墨数字直画观感优化(2026-10-01 T17 目检体感登记——2026-10-07 用户令删除)
|
||||||
|
|
||||||
**处置**:2026-10-07 用户令——本条不成立,直接删除(观感类优化归 UI 相关线,逻辑批不做;相关优化实践已做过)。两目检体感(直画字难看/墙底黑线难看)随条目一并销去。
|
**处置**:2026-10-07 用户令——本条不成立,直接删除(观感类优化归 UI 相关线,逻辑批不做;相关优化实践已做过)。两目检体感(直画字难看/墙底黑线难看)随条目一并销去。
|
||||||
@@ -285,7 +285,7 @@
|
|||||||
|
|
||||||
#### 呈现层残余 <4.5:1 文字位(迭代 16 批外邻接发现,2026-10-06 登记)
|
#### 呈现层残余 <4.5:1 文字位(迭代 16 批外邻接发现,2026-10-06 登记)
|
||||||
|
|
||||||
**现状**:迭代 16「UI 设计对齐批」T0 实机复算中,七点测点范围外的邻接文字位实测对直背景 <4.5:1(§7.2 无区域例外)——①B 区站桩名行/护甲徽标四墨(WARM_FAINT≈6.2 过/HERO_BLUE 3.23/GOLD_DEEP 3.26/WARM 过,直背=舞台底 `STAGE_BG #3E342A`);②敌顺位徽标 ①②③ `GOLD_DEEP` 13px;③RAP 反馈行 `STONE_FAINT` 对 PANEL_DATA(2.73)。均系批前既有呈现、非迭代 16 引入;迭代 16 七点修法面已收口(站桩血数/意图徽标四色/C区槽两态/RAP 主标签),本条为其漏出范围,未动。来源=`design/qa/iter16-ui-exit-report-2026-10-06.md` §T0。
|
**现状**:迭代 16「UI 设计对齐批」T0 实机复算中,七点测点范围外的邻接文字位实测对直背景 <4.5:1(§7.2 无区域例外)——①B 区站桩名行/护甲徽标四墨(WARM_FAINT≈6.2 过/HERO_BLUE 3.23/GOLD_DEEP 3.26/WARM 过,直背=舞台底 `STAGE_BG #3E342A`);②敌顺位徽标 ①②③ `GOLD_DEEP` 13px;③RAP 反馈行 `STONE_FAINT` 对 PANEL_DATA(2.73)。均系批前既有呈现、非迭代 16 引入;迭代 16 七点修法面已收口(站桩血数/意图徽标四色/C区槽两态/RAP 主标签),本条为其漏出范围,未动。来源=`迭代16出口报告(已退役,git 历史可查)` §T0。
|
||||||
|
|
||||||
**归属**:呈现优化后续批(或 UI 设计对齐批第二轮);开工 = 用户点名
|
**归属**:呈现优化后续批(或 UI 设计对齐批第二轮);开工 = 用户点名
|
||||||
|
|
||||||
@@ -293,7 +293,7 @@
|
|||||||
|
|
||||||
#### 棋盘格边长三方取值不一致——待扩板定档处置(2026-10-06 登记)
|
#### 棋盘格边长三方取值不一致——待扩板定档处置(2026-10-06 登记)
|
||||||
|
|
||||||
**现状**:迭代 16「UI 设计对齐批」P2 已裁「棋盘格边长零改动」(本次不动棋盘游戏画面),由此三方取值不一致作为**已知偏差**登记:①代码 = `board_view.gd:251` 动态公式 `clampi(cell, 26, 46)` + `:114` 默认 46.0;②art-bible §8.1(:433) 冻结锚点 = 45px(10×10)/ 36px(12×12);③demo 原型 = 44px(`src/ui-prototype.html:288`);另有 HUD框架:72 装板校验区间 [30,45]。**当前未被任何断言触发**(属潜在不一致,不是缺陷)。按任务书契约 R7「禁单侧改完留漂移」,本批**代码与文档均不改**;处置时机 = 扩板(13×13/14×14)定档时随格边长专项一并处理(§8.1 亦注明扩板换算值未定稿)。来源=`design/research/任务书-UI设计对齐批-2026-10-05.md` §2.1「已知偏差」行。
|
**现状**:迭代 16「UI 设计对齐批」P2 已裁「棋盘格边长零改动」(本次不动棋盘游戏画面),由此三方取值不一致作为**已知偏差**登记:①代码 = `board_view.gd:251` 动态公式 `clampi(cell, 26, 46)` + `:114` 默认 46.0;②art-bible §8.1(:433) 冻结锚点 = 45px(10×10)/ 36px(12×12);③demo 原型 = 44px(`src/ui-prototype.html:288`);另有 HUD框架:72 装板校验区间 [30,45]。**当前未被任何断言触发**(属潜在不一致,不是缺陷)。按任务书契约 R7「禁单侧改完留漂移」,本批**代码与文档均不改**;处置时机 = 扩板(13×13/14×14)定档时随格边长专项一并处理(§8.1 亦注明扩板换算值未定稿)。来源=`UI对齐批任务书(已退役,git 历史可查)` §2.1「已知偏差」行。
|
||||||
|
|
||||||
**归属**:格边长专项(或 UI 设计对齐批后续专项);开工 = 用户点名
|
**归属**:格边长专项(或 UI 设计对齐批后续专项);开工 = 用户点名
|
||||||
|
|
||||||
@@ -390,7 +390,7 @@
|
|||||||
|
|
||||||
#### 「生涯」界面——冒险中数据回看的唯一承接处
|
#### 「生涯」界面——冒险中数据回看的唯一承接处
|
||||||
|
|
||||||
**现状**:2026-10-04 用户裁决(UI 落码计划 P-C7)——冒险中不给数据回看:settlement_review_overlay(结算明细回看)与结算框「明细回看」钮在冒险中退役,战报带只留单行「上轮」;历史战报/结算明细的查看去向=新「生涯」界面(跨局汇总/历史冒险回看/图鉴承接),**尚未设计未实装**。来源=UI 重设计原型 v2 落码计划裁决记录(design/research/UI重设计原型v2落码-差异对照与改动计划-2026-10-04.md §七)
|
**现状**:2026-10-04 用户裁决(UI 落码计划 P-C7)——冒险中不给数据回看:settlement_review_overlay(结算明细回看)与结算框「明细回看」钮在冒险中退役,战报带只留单行「上轮」;历史战报/结算明细的查看去向=新「生涯」界面(跨局汇总/历史冒险回看/图鉴承接),**尚未设计未实装**。来源=UI 重设计原型 v2 落码计划裁决记录(UI落码差异对照(已退役,git 历史可查) §七)
|
||||||
|
|
||||||
**归属**:新界面立项(用户发令后排批);退役落码随 UI 落码批 M8/M9
|
**归属**:新界面立项(用户发令后排批);退役落码随 UI 落码批 M8/M9
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@
|
|||||||
|
|
||||||
**结果回流**:日志取数 → 真人修正系数 k(真人整关承伤中位 ÷ 模拟完美档中位;**正常预期 k>0.5、预警线 k<0.3**——2026-10-03 用户裁)并入 T19 标定报告(落 design/qa/,换代 2026-09-19 判读报告为现行锚);①–⑤ 体感按各条目的回流位分流。
|
**结果回流**:日志取数 → 真人修正系数 k(真人整关承伤中位 ÷ 模拟完美档中位;**正常预期 k>0.5、预警线 k<0.3**——2026-10-03 用户裁)并入 T19 标定报告(落 design/qa/,换代 2026-09-19 判读报告为现行锚);①–⑤ 体感按各条目的回流位分流。
|
||||||
|
|
||||||
**2026-10-01 数值修复批后试玩注记**(master 4b4a011 起的正式标定局):本批已落 hero 血池 20→26 / 直伤雷三行 4/5/5→6/8/8 / L1 系敌 atk 2→1(轨迹与读数见 [numfix 报告](../qa/numfix-newruler-readings-2026-10-01.md))。试玩时对号新增两点:
|
**2026-10-01 数值修复批后试玩注记**(master 4b4a011 起的正式标定局):本批已落 hero 血池 20→26 / 直伤雷三行 4/5/5→6/8/8 / L1 系敌 atk 2→1(轨迹与读数见 [numfix 报告](数值修复批读数(已退役,git 历史可查)))。试玩时对号新增两点:
|
||||||
1. **踩雷疼痛感**(本批主刀):「踩很多雷还是轻松活」应是过去式——单雷 6-8 直伤、两三连雷应明显肉疼;若仍无痛感=回调信号,记一句话即可;
|
1. **踩雷疼痛感**(本批主刀):「踩很多雷还是轻松活」应是过去式——单雷 6-8 直伤、两三连雷应明显肉疼;若仍无痛感=回调信号,记一句话即可;
|
||||||
2. **整体难度印象**:用户 2026-10-01 已阶段性验收「令人稍微满意」——本批试玩读数作正式标定(真人通关率+k 系数),若体感偏难/偏易也照实记,不因单局顺逆回调。
|
2. **整体难度印象**:用户 2026-10-01 已阶段性验收「令人稍微满意」——本批试玩读数作正式标定(真人通关率+k 系数),若体感偏难/偏易也照实记,不因单局顺逆回调。
|
||||||
模拟侧对照读数(普通档画像 L1 13%/战役 0%;完美档 78.5%)见同报告 §四。
|
模拟侧对照读数(普通档画像 L1 13%/战役 0%;完美档 78.5%)见同报告 §四。
|
||||||
@@ -186,7 +186,7 @@
|
|||||||
|
|
||||||
## 验收读数重测义务(履行留痕 + 现行义务)
|
## 验收读数重测义务(履行留痕 + 现行义务)
|
||||||
|
|
||||||
**已履行**(按序换代,旧读数各随其批作废留痕不入本单):①验收读数重测批(2026-09-19——Boss 单独出列/承伤带/通关率基线全量重测,硬化翻倍期·乏力死效果期·充能期旧读数作废);②迭代 5 基线重测(统一随机流后 MC+verifier 双窗);③**数值修复批新尺重测(2026-10-01)**——模拟档位重构后全量重测,新锚 `sim-data/runsum_numfix_final_n200_20261001.jsonl`,全旧带作废只测不判([numfix 报告](../qa/numfix-newruler-readings-2026-10-01.md));④**迭代 10 奖励重构批重锚(2026-10-01)**——四代锚 77000/78000/79000/80000(改前/重构后/共享池后/掷定前置后,各 400 局),普通 L1 41.8%/L2 10.2% 带内([读数报告](../qa/m3-iter10-clear-rate-readings-2026-10-01.md));⑤**T19 真人标定局收口(2026-10-03 用户裁)**——有效局 2(1 通关 1 死于 L3 首战,[读数报告](../qa/t19-real-playtest-readings-2026-10-02.md)),用户裁定**佐证级收口不再补局**;k 预期带同日立(**正常 >0.5、预警 <0.3**),字段随 81000 重锚入库后补算终值。
|
**已履行**(按序换代,旧读数各随其批作废留痕不入本单):①验收读数重测批(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 重锚入库后补算终值。
|
||||||
|
|
||||||
**现行义务**:**T7 技能池节奏重测(2026-10-05 技能池执行批挂单)**——≥50 distinct seeds 节奏重测(过涝判读带=Boss 半血后特殊技密度上探;跑批须用户批准;S2 过涝越带→解锁技权重/倍率回调呈报禁自动调;**2026-10-06 联审批注:判读带立单于案C 行为换代前,执行前须按案C 新行为复核「半血后」窗口与密度分母是否仍有效,失权即停机呈报重立带**)→ ~~T19 真人标定局~~(⑤已收口)→ 真人侧读数换 81000 锚补算 k 终值(随迭代 9 出口重锚批出,模拟锚 2026-09-19 判读报告的现行锚地位由 81000 锚+真人两局承接)。工具面:`analyze_playtest.py` / `balance_verifier.py` 冒险段 / JSONL 日志现役。
|
**现行义务**:**T7 技能池节奏重测(2026-10-05 技能池执行批挂单)**——≥50 distinct seeds 节奏重测(过涝判读带=Boss 半血后特殊技密度上探;跑批须用户批准;S2 过涝越带→解锁技权重/倍率回调呈报禁自动调;**2026-10-06 联审批注:判读带立单于案C 行为换代前,执行前须按案C 新行为复核「半血后」窗口与密度分母是否仍有效,失权即停机呈报重立带**)→ ~~T19 真人标定局~~(⑤已收口)→ 真人侧读数换 81000 锚补算 k 终值(随迭代 9 出口重锚批出,模拟锚 2026-09-19 判读报告的现行锚地位由 81000 锚+真人两局承接)。工具面:`analyze_playtest.py` / `balance_verifier.py` 冒险段 / JSONL 日志现役。
|
||||||
|
|
||||||
|
|||||||
@@ -186,7 +186,7 @@ Boss 兑付(胜利或英雄死亡)触发关卡收束点,此后不再有选
|
|||||||
| v1.0 | 2026-09-17 | **定稿**(逐问题拍板,全用户裁决):① 形态重开——用户拍板重开[05-不做清单](../../05-不做清单.md)「路径分支地图后置」裁定,定稿为**分支节点图**(分层节点图,杀戮尖塔 / 哥布林弹珠同构;方块地牢美术观感、逻辑为节点图),P0 图定稿 + 单链特例先行;② 节点类型定稿四类封闭枚举不扩类;③ 行进交互定稿全节点确认 + 兑付后确认、零自动推进;④ 遭遇构成收窄为编排面三条(战斗内部初始化全归战斗小循环),寻址定稿节点编号升级(`node_depth` 语义升级为关卡内唯一节点编号,表键与字段名零改动,单链零漂移);⑤ 节点奖励拍板为功能道具的正式渠道(内容归秘宝内容重定批,切片期直通为合法空态);⑥ 「精英与 Boss 编码位」(同层多遭遇由节点编号消解,不设编码位)与「多敌数量的消费面」(关卡层零消费)两悬案收口,同场多敌种面拆归战斗侧;⑦ 切片行进代码对照的接口漂移清单登记 06 |
|
| v1.0 | 2026-09-17 | **定稿**(逐问题拍板,全用户裁决):① 形态重开——用户拍板重开[05-不做清单](../../05-不做清单.md)「路径分支地图后置」裁定,定稿为**分支节点图**(分层节点图,杀戮尖塔 / 哥布林弹珠同构;方块地牢美术观感、逻辑为节点图),P0 图定稿 + 单链特例先行;② 节点类型定稿四类封闭枚举不扩类;③ 行进交互定稿全节点确认 + 兑付后确认、零自动推进;④ 遭遇构成收窄为编排面三条(战斗内部初始化全归战斗小循环),寻址定稿节点编号升级(`node_depth` 语义升级为关卡内唯一节点编号,表键与字段名零改动,单链零漂移);⑤ 节点奖励拍板为功能道具的正式渠道(内容归秘宝内容重定批,切片期直通为合法空态);⑥ 「精英与 Boss 编码位」(同层多遭遇由节点编号消解,不设编码位)与「多敌数量的消费面」(关卡层零消费)两悬案收口,同场多敌种面拆归战斗侧;⑦ 切片行进代码对照的接口漂移清单登记 06 |
|
||||||
| v1.0.1 | 2026-09-17 | **P1 分支节点图内容与实现批落地**(用户拍板任务批——切片代码 / 难度曲线与Boss v0.7 / registry / 06 待办同批):首张分支图 = 切片关卡 2「第二层 · 幽暗地域」行集落地(9 节点网状图:入口 0 → 中间三层 2/3/2 → Boss 8,真实岔路 4 处,奖励点 + 恢复点各 1,战斗节点 6 + Boss);行进器图版推进(`choices_presented` 选路态 + `pick_next_node`——零自动推进,战斗胜利不再自动推进、`continue_after_node` 泛化为兑付确认,06 接口漂移清单 ④⑤⑧ 清偿);图合法性校验落地 `LevelTable.validate`(单链与图同一套算法,L1 零迁移过校验,违规加载致命);节点图选路 UI(选路覆盖层整图自绘——房间方块 + 通道连线 + 当前/候选高亮,占位图形质量;顶栏图形态渲染行进序列 + 候选);首页"关卡 2 试玩"直入口(测试模式,≠ 两关序列生效)。本版本号只记实现批状态,图规则口径零改动 |
|
| v1.0.1 | 2026-09-17 | **P1 分支节点图内容与实现批落地**(用户拍板任务批——切片代码 / 难度曲线与Boss v0.7 / registry / 06 待办同批):首张分支图 = 切片关卡 2「第二层 · 幽暗地域」行集落地(9 节点网状图:入口 0 → 中间三层 2/3/2 → Boss 8,真实岔路 4 处,奖励点 + 恢复点各 1,战斗节点 6 + Boss);行进器图版推进(`choices_presented` 选路态 + `pick_next_node`——零自动推进,战斗胜利不再自动推进、`continue_after_node` 泛化为兑付确认,06 接口漂移清单 ④⑤⑧ 清偿);图合法性校验落地 `LevelTable.validate`(单链与图同一套算法,L1 零迁移过校验,违规加载致命);节点图选路 UI(选路覆盖层整图自绘——房间方块 + 通道连线 + 当前/候选高亮,占位图形质量;顶栏图形态渲染行进序列 + 候选);首页"关卡 2 试玩"直入口(测试模式,≠ 两关序列生效)。本版本号只记实现批状态,图规则口径零改动 |
|
||||||
| v1.1 | 2026-09-20 | **商店房扩类(GP+商店房批,用户拍板——与冒险结构 / 战斗结算 / 地图战斗资源 / 难度曲线与Boss / registry / 切片同批)**:① 节点封闭枚举四类→五类(+商店房);② 编排规则定稿——每关恰 1、关底 Boss 前一位必经位(哈迪斯式"决战前最后一个补给点"定位);必经位由冒烟断言承载、图合法性六检零新增;③ 兑付定稿——打开商店覆盖层、购买即时生效写统一冒险加算区(与关卡大奖励同账,归冒险结构)、离开后兑付确认;商店房不携带战斗行;④ 节点兑付表 / 纪律表 / 依赖表 / P0 闭环 / 验收标准 / P2「事件类节点候选」注记同步 |
|
| v1.1 | 2026-09-20 | **商店房扩类(GP+商店房批,用户拍板——与冒险结构 / 战斗结算 / 地图战斗资源 / 难度曲线与Boss / registry / 切片同批)**:① 节点封闭枚举四类→五类(+商店房);② 编排规则定稿——每关恰 1、关底 Boss 前一位必经位(哈迪斯式"决战前最后一个补给点"定位);必经位由冒烟断言承载、图合法性六检零新增;③ 兑付定稿——打开商店覆盖层、购买即时生效写统一冒险加算区(与关卡大奖励同账,归冒险结构)、离开后兑付确认;商店房不携带战斗行;④ 节点兑付表 / 纪律表 / 依赖表 / P0 闭环 / 验收标准 / P2「事件类节点候选」注记同步 |
|
||||||
| v1.2 | 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `../../../dev/architecture/adr-0006-board-node2d-rendering.md` 与 `../../../dev/architecture/board-node2d-migration-plan.md` §1,代码实装另批并行)**:① 行进循环改停点前移口径——关卡开始即呈现节点图选路停点(关卡画面 = 选路覆盖层常驻化,入口节点不自动进入,第一次选路就是"出发"),选路确认进节点,兑付确认后返回关卡画面再选路(战后回图);兑付后确认、零自动推进两条纪律语义不变,只改承载位;② 呈现侧口径补进度承载条款——关卡画面本体即节点链进度呈现载体(节点态直接读图:已过暗金 / 当前金 / 候选下一跳通道亮金 / Boss 旗朱描边),不另设进度条组件(战斗屏 A 区进度条随批退役);③ P0 闭环两条、依赖表 HUD 框架行、验收标准「行进自主」条同步。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编;② 28px 纵向空间划归 C/D 底行;③ 关卡画面进度呈现由选路覆盖层节点态承载(登记面见 HUD框架 v0.8) |
|
| v1.2 | 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `../../../dev/architecture/adr-0006-board-node2d-rendering.md` 与 `Node2D 迁移计划(已执行完毕,文件已退役)` §1,代码实装另批并行)**:① 行进循环改停点前移口径——关卡开始即呈现节点图选路停点(关卡画面 = 选路覆盖层常驻化,入口节点不自动进入,第一次选路就是"出发"),选路确认进节点,兑付确认后返回关卡画面再选路(战后回图);兑付后确认、零自动推进两条纪律语义不变,只改承载位;② 呈现侧口径补进度承载条款——关卡画面本体即节点链进度呈现载体(节点态直接读图:已过暗金 / 当前金 / 候选下一跳通道亮金 / Boss 旗朱描边),不另设进度条组件(战斗屏 A 区进度条随批退役);③ P0 闭环两条、依赖表 HUD 框架行、验收标准「行进自主」条同步。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编;② 28px 纵向空间划归 C/D 底行;③ 关卡画面进度呈现由选路覆盖层节点态承载(登记面见 HUD框架 v0.8) |
|
||||||
| v1.3 | 2026-10-01 | **图合法性第七检(T17 目检用户拍板「节点出度最大为 2」)**:`validate` 新增 `fanout_violation`(单节点出边 >2 加载致命);规则连带层宽上限 4(原 5 与出度约束不相容,废止)——生成侧规则与模板池重建归[关卡节点图生成](关卡节点图生成.md) v0.6 同批 |
|
| v1.3 | 2026-10-01 | **图合法性第七检(T17 目检用户拍板「节点出度最大为 2」)**:`validate` 新增 `fanout_violation`(单节点出边 >2 加载致命);规则连带层宽上限 4(原 5 与出度约束不相容,废止)——生成侧规则与模板池重建归[关卡节点图生成](关卡节点图生成.md) v0.6 同批 |
|
||||||
| v1.4 | 2026-10-03 | **奖励节点道具渠道退役注记(迭代 11 第①批同调实施批——与 node-reward.md v2.2 / registry 同批)**:奖励节点的秘宝件渠道随停点渠道退役拆除(BONUS_IDS 词表除名 aux_item,池五种;三选一刷新件面新增见 node-reward.md v2.2)——奖励节点兑付面=提升三选一(属性/GP/AP 五种)+刷新,零结构改动(节点类型词表/图合法性六检零新增) |
|
| v1.4 | 2026-10-03 | **奖励节点道具渠道退役注记(迭代 11 第①批同调实施批——与 node-reward.md v2.2 / registry 同批)**:奖励节点的秘宝件渠道随停点渠道退役拆除(BONUS_IDS 词表除名 aux_item,池五种;三选一刷新件面新增见 node-reward.md v2.2)——奖励节点兑付面=提升三选一(属性/GP/AP 五种)+刷新,零结构改动(节点类型词表/图合法性六检零新增) |
|
||||||
| v1.5 | 2026-10-03 | **商店房兑付换代注记(迭代 11 第②批 GP 商店房重构批——任务书 v1.3 全裁;冒险结构 v0.13 / registry / 难度曲线与Boss 同批)**:商店节点类型词表与编排规则零改动(每关恰 1/Boss 前一位必经位/图合法性六检零新增);兑付面换代 = pool 模式进店抽 3(shop_draw 封闭流)+买 1 全重抽+重抽绑购买+空架合法态,货架候选与库存账本归冒险结构共享池账本节;覆盖层呈现面=货架三选一同构卡(legacy 固定三件面随对照模式保留注记) |
|
| v1.5 | 2026-10-03 | **商店房兑付换代注记(迭代 11 第②批 GP 商店房重构批——任务书 v1.3 全裁;冒险结构 v0.13 / registry / 难度曲线与Boss 同批)**:商店节点类型词表与编排规则零改动(每关恰 1/Boss 前一位必经位/图合法性六检零新增);兑付面换代 = pool 模式进店抽 3(shop_draw 封闭流)+买 1 全重抽+重抽绑购买+空架合法态,货架候选与库存账本归冒险结构共享池账本节;覆盖层呈现面=货架三选一同构卡(legacy 固定三件面随对照模式保留注记) |
|
||||||
@@ -121,9 +121,9 @@ MVP 行值并不逐式现算,而是按此式量级直填经切片验证过的
|
|||||||
|
|
||||||
**判读口径同步(M-3 迭代 5 基线重测批,2026-09-28)**:通关率带的测量口径 = 冒险条件通关率(打通 k−1 关才到达第 k 关,balance_verifier 冒险段派生;单关直入口口径已随 2026-09-23 拍板退役)——带值沿用 2026-09-20 分带修正(普通档 L1 [35,55] / L2 [25,45]、完美档 [35,65];M-3 迭代 5 计划书 C4 冻结:改带=用户拍板)。上方行 115 的「带退役待重锚、重锚前只测不判」注记按本条同步理解:迭代 5 基线重测已按现行带对冒险条件口径判读(读数报告见 git 提交 e55dc10,已按生命周期条款退役);是否在新口径上重取带值,归迭代 5 出口判读由用户拍板,本批不动带数字。
|
**判读口径同步(M-3 迭代 5 基线重测批,2026-09-28)**:通关率带的测量口径 = 冒险条件通关率(打通 k−1 关才到达第 k 关,balance_verifier 冒险段派生;单关直入口口径已随 2026-09-23 拍板退役)——带值沿用 2026-09-20 分带修正(普通档 L1 [35,55] / L2 [25,45]、完美档 [35,65];M-3 迭代 5 计划书 C4 冻结:改带=用户拍板)。上方行 115 的「带退役待重锚、重锚前只测不判」注记按本条同步理解:迭代 5 基线重测已按现行带对冒险条件口径判读(读数报告见 git 提交 e55dc10,已按生命周期条款退役);是否在新口径上重取带值,归迭代 5 出口判读由用户拍板,本批不动带数字。
|
||||||
|
|
||||||
> **⚠ 带失效待重锚(2026-10-01 数值修复批)**:模拟档位重构(普通档 v2 新手画像→v3=完美策略+受控失误注入;完美档补元游戏选路与商店购买)+数值三刀(hero max_hp 20→26/直伤雷 4/5/5→6/8/8/L1 系敌 atk 2→1)后,上方三条验收带的测量基准已失义——旧普通档=比真人弱 20 倍的新手画像(真人实证推翻),旧带值系照坏尺子校定。新尺读数(N=100/200)与调优轨迹见 `design/qa/numfix-newruler-readings-2026-10-01.md`;~~新带值须新尺重测后用户拍板,重锚前只测不判~~(已由下行带换代收口)。
|
> **⚠ 带失效待重锚(2026-10-01 数值修复批)**:模拟档位重构(普通档 v2 新手画像→v3=完美策略+受控失误注入;完美档补元游戏选路与商店购买)+数值三刀(hero max_hp 20→26/直伤雷 4/5/5→6/8/8/L1 系敌 atk 2→1)后,上方三条验收带的测量基准已失义——旧普通档=比真人弱 20 倍的新手画像(真人实证推翻),旧带值系照坏尺子校定。新尺读数(N=100/200)与调优轨迹见 `数值修复批读数(已退役,git 历史可查)`;~~新带值须新尺重测后用户拍板,重锚前只测不判~~(已由下行带换代收口)。
|
||||||
|
|
||||||
**带换代(迭代 9 出口带值批,2026-10-03 用户拍板四带甲案)**:旧三条通关率带(普通 L1 [35,55] / L2 [10,15]、完美 [35,65])**正式作废**,换类型基准锚定四带(依据与官方统计出处=《[Roguelike 难度类型基准](../../../research/roguelike-difficulty-benchmark-2026-10-01.md)》§3.2,每条带均有外部锚点):
|
**带换代(迭代 9 出口带值批,2026-10-03 用户拍板四带甲案)**:旧三条通关率带(普通 L1 [35,55] / L2 [10,15]、完美 [35,65])**正式作废**,换类型基准锚定四带(依据与官方统计出处=《[Roguelike 难度类型基准](难度外部基准调研(已退役,git 历史可查))》§3.2,每条带均有外部锚点):
|
||||||
|
|
||||||
| 带 | 定稿口径 | 外部锚点 |
|
| 带 | 定稿口径 | 外部锚点 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
@@ -187,7 +187,7 @@ boss_hp ≈ round( Σ普通战斗敌方生命期望 × r_boss ) r_boss
|
|||||||
|---|---|---|
|
|---|---|---|
|
||||||
| Σ普通战斗敌方生命期望 | 按数量区间期望逐行合计(区间中点),行值读敌人表 | 全关非 Boss 节点敌方生命合计;逐数闭合随调参批在调参日志留档 |
|
| Σ普通战斗敌方生命期望 | 按数量区间期望逐行合计(区间中点),行值读敌人表 | 全关非 Boss 节点敌方生命合计;逐数闭合随调参批在调参日志留档 |
|
||||||
| r_boss | 域 [0.5, 1.1] | Boss 生命 = Σ × r_boss;Boss 行值读敌人表(provisional) |
|
| r_boss | 域 [0.5, 1.1] | Boss 生命 = Σ × r_boss;Boss 行值读敌人表(provisional) |
|
||||||
| 加难走廊 | [1.1, 1.35] | 通关率压带的首选杠杆候选;**扫描已执行(M-3 迭代 5,2026-09-28)**——域内取样(r_boss 0.8 档)对完美档 Boss 战无感(胜率 98% 血量加压打不到)、对普通档 −6pp;走廊段(>1.1,越域)未启用——启用即越域须登记(读数明细见 `design/qa/m3-iter5-lever-scan-2026-09-28.md`) |
|
| 加难走廊 | [1.1, 1.35] | 通关率压带的首选杠杆候选;**扫描已执行(M-3 迭代 5,2026-09-28)**——域内取样(r_boss 0.8 档)对完美档 Boss 战无感(胜率 98% 血量加压打不到)、对普通档 −6pp;走廊段(>1.1,越域)未启用——启用即越域须登记(读数明细见 `迭代5杠杆扫描报告(已退役,git 历史可查)`) |
|
||||||
|
|
||||||
Σ 的逐数闭合口径:数量走开战掷骰的区间期望(区间中点),教学位同样掷骰、按区间期望计入;各坐标行值一律读敌人表,本文不重复登记具体数值——防与配置双写失同步。
|
Σ 的逐数闭合口径:数量走开战掷骰的区间期望(区间中点),教学位同样掷骰、按区间期望计入;各坐标行值一律读敌人表,本文不重复登记具体数值——防与配置双写失同步。
|
||||||
|
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照
|
|||||||
| 优先级 | 内容 | 后置原因 |
|
| 优先级 | 内容 | 后置原因 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| 迭代 12(调研前置) | 反制路径重定(原:首批四类型的反制道具兑现,counter_items 回填——已作废) | 2026-10-03 用户终裁:同调位反制件=层级错配失败设计,义务作废;变异应对是否以局内形态补入,待双层 BD 调研仲裁后重新立项 |
|
| 迭代 12(调研前置) | 反制路径重定(原:首批四类型的反制道具兑现,counter_items 回填——已作废) | 2026-10-03 用户终裁:同调位反制件=层级错配失败设计,义务作废;变异应对是否以局内形态补入,待双层 BD 调研仲裁后重新立项 |
|
||||||
| ~~Alpha~~ **已落地** | 全局作用域变异(精英/Boss 图整图生效的变异形态) | **2026-10-04 全局作用域变异首发批落地**(迭代 14 ③号卡)——首批型=贫矿脉(案A 资源面·微贫向偏斜,替换制/恒定制/L1 Boss 免疫/三层预告);裁决全录见调研报告 §7(design/research/调研-全局作用域变异设计空间-2026-10-04.md;原任务书已退役,git b3bbea5/01bfc15);带 A 杠杆注册全局难度批(M-4)随批读数只测不判;精英图留词表前向位(首发零表行) |
|
| ~~Alpha~~ **已落地** | 全局作用域变异(精英/Boss 图整图生效的变异形态) | **2026-10-04 全局作用域变异首发批落地**(迭代 14 ③号卡)——首批型=贫矿脉(案A 资源面·微贫向偏斜,替换制/恒定制/L1 Boss 免疫/三层预告);裁决全录见调研报告 §7(全局作用域设计空间调研(已退役,git 历史可查);原任务书已退役,git b3bbea5/01bfc15);带 A 杠杆注册全局难度批(M-4)随批读数只测不判;精英图留词表前向位(首发零表行) |
|
||||||
| P2 | "地形成本修饰"价目钩子启用 | 由行动经济持有;启用须随变异类型扩展,与行动经济重议按格定价的接口 |
|
| P2 | "地形成本修饰"价目钩子启用 | 由行动经济持有;启用须随变异类型扩展,与行动经济重议按格定价的接口 |
|
||||||
| P2 | 变异解锁节奏复核 | "每关至少引入一个新元素"的推进节奏,随[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)定稿复核 |
|
| P2 | 变异解锁节奏复核 | "每关至少引入一个新元素"的推进节奏,随[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)定稿复核 |
|
||||||
| P2 | 变异格视觉标识与预告呈现 | 首批为遭遇式(未开无预告);标识位随表现层升级批 |
|
| P2 | 变异格视觉标识与预告呈现 | 首批为遭遇式(未开无预告);标识位随表现层升级批 |
|
||||||
|
|||||||
@@ -294,7 +294,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻
|
|||||||
| v0.5 | 2026-09-17 | 数值纪律收口批:调参表标注文档自持口径(无表承载常量的唯一事实源声明) |
|
| v0.5 | 2026-09-17 | 数值纪律收口批:调参表标注文档自持口径(无表承载常量的唯一事实源声明) |
|
||||||
| v0.6 | 2026-09-20 | **敌人卡形态裁决收口批(与 battle.md / 战斗表现 / 06 清单同批,台账 99)**:全站桩形态拍板——B 区主角与敌人均为无框立绘+底座、状态小图标挂血条正下方,英雄卡/敌人卡退役;B 区行、敌人呈现义务行(载体由卡改立绘,意图占位/共享层数各立绘同值/死亡灰化退场等义务面平移)、下游战斗表现交付行、就地更新示例措辞四处同步;攻击值等规划数据仍归 C 区数据框(C 区不动)。呈现快照数据面零改动(消费字段不变,只换呈现载体) |
|
| v0.6 | 2026-09-20 | **敌人卡形态裁决收口批(与 battle.md / 战斗表现 / 06 清单同批,台账 99)**:全站桩形态拍板——B 区主角与敌人均为无框立绘+底座、状态小图标挂血条正下方,英雄卡/敌人卡退役;B 区行、敌人呈现义务行(载体由卡改立绘,意图占位/共享层数各立绘同值/死亡灰化退场等义务面平移)、下游战斗表现交付行、就地更新示例措辞四处同步;攻击值等规划数据仍归 C 区数据框(C 区不动)。呈现快照数据面零改动(消费字段不变,只换呈现载体) |
|
||||||
| v0.7 | 2026-09-20 | **表现层三批落地 + 义务清单补行(代码同日三批:样式收敛 / 站桩改造 / 结算演出链)**:呈现义务来源清单补「关卡节点地图」行(节点链进度常显 + 选路覆盖层只读呈现——此前漏登记);新增结算演出覆盖层(跨区弹道/光带载体,兑现演出因果可视);减动效承诺落地(UiKit.motion 单点包装全部呈现层 tween 时长,开启时长减半、可挖域呼吸停格;切片期入口 = TunePanel 开关,正式设置层归设置批)。代码侧站桩载体(StandeeView)与卡片退役随 v0.6 裁决执行 |
|
| v0.7 | 2026-09-20 | **表现层三批落地 + 义务清单补行(代码同日三批:样式收敛 / 站桩改造 / 结算演出链)**:呈现义务来源清单补「关卡节点地图」行(节点链进度常显 + 选路覆盖层只读呈现——此前漏登记);新增结算演出覆盖层(跨区弹道/光带载体,兑现演出因果可视);减动效承诺落地(UiKit.motion 单点包装全部呈现层 tween 时长,开启时长减半、可挖域呼吸停格;切片期入口 = TunePanel 开关,正式设置层归设置批)。代码侧站桩载体(StandeeView)与卡片退役随 v0.6 裁决执行 |
|
||||||
| v0.8 | 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `../../../dev/architecture/adr-0006-board-node2d-rendering.md` 与 `../../../dev/architecture/board-node2d-migration-plan.md` §1,代码实装另批并行)**:① 战斗屏布局四区 → 三区——删 A 区关卡进度条行(LevelStripView 退役删除,节点链进度呈现移出战斗屏、只留关卡画面);C/D 区纵向 520 → 548;装板校验变量与实算同步(棋盘区高 504、可用高度 488);② 呈现义务来源清单「关卡节点地图」行改承载口径——节点链进度由关卡画面选路覆盖层节点态承载(暗金已过 / 金当前 / 候选下一跳通道亮金 / Boss 旗朱描边),不另设进度条组件;③ 「四区」措辞全线改「三区」(负责表、节题、结构冻结、验收、下游战斗表现交付行),双舞台常驻语义不动。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编(字母是跨文档/代码注释的承载标识);② A 区 28px 纵向空间划归 C/D 底行(520 → 548;1920 档换算仍归表现层升级批);③ 关卡画面进度呈现由选路覆盖层节点态直接承载、不另设进度条组件 |
|
| v0.8 | 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `../../../dev/architecture/adr-0006-board-node2d-rendering.md` 与 `Node2D 迁移计划(已执行完毕,文件已退役)` §1,代码实装另批并行)**:① 战斗屏布局四区 → 三区——删 A 区关卡进度条行(LevelStripView 退役删除,节点链进度呈现移出战斗屏、只留关卡画面);C/D 区纵向 520 → 548;装板校验变量与实算同步(棋盘区高 504、可用高度 488);② 呈现义务来源清单「关卡节点地图」行改承载口径——节点链进度由关卡画面选路覆盖层节点态承载(暗金已过 / 金当前 / 候选下一跳通道亮金 / Boss 旗朱描边),不另设进度条组件;③ 「四区」措辞全线改「三区」(负责表、节题、结构冻结、验收、下游战斗表现交付行),双舞台常驻语义不动。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编(字母是跨文档/代码注释的承载标识);② A 区 28px 纵向空间划归 C/D 底行(520 → 548;1920 档换算仍归表现层升级批);③ 关卡画面进度呈现由选路覆盖层节点态直接承载、不另设进度条组件 |
|
||||||
| v0.9 | 2026-09-23 | 渲染技术注记(棋盘 Node2D 迁移批 Phase A,代码实装同批;上位裁决 ADR-0006):棋盘本体 Node2D 化——BoardView 内部由 GridContainer+逐格控件改为 Control 壳 + SubViewport + Node2D 世界,类名/信号/公共方法契约不变、探针零改造;三区布局与性能预算(同屏 draw calls < 200)不变;程序化占位视觉等价平移,素材终稿按 art-bible §8.2 格面 32×32 暂定档槽位 1:1 换入 |
|
| v0.9 | 2026-09-23 | 渲染技术注记(棋盘 Node2D 迁移批 Phase A,代码实装同批;上位裁决 ADR-0006):棋盘本体 Node2D 化——BoardView 内部由 GridContainer+逐格控件改为 Control 壳 + SubViewport + Node2D 世界,类名/信号/公共方法契约不变、探针零改造;三区布局与性能预算(同屏 draw calls < 200)不变;程序化占位视觉等价平移,素材终稿按 art-bible §8.2 格面 32×32 暂定档槽位 1:1 换入 |
|
||||||
| v0.10 | 2026-09-26 | 渲染技术注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗舞台 Node2D 化——BattleStageView 内部由 PanelContainer+Control 站桩改为 Control 壳 + SubViewportContainer + SubViewport + Node2D 世界(StageWorld/StandeeBody),类名/setter 面/公共方法契约不变、调用点零改造;状态图标行与悬停 tooltip 保留 Control 载体挂壳层(伴随件);C6 字体注入挂点复用(set_world_font);三区布局与性能预算(同屏 draw calls < 200)不变;占位表现等价平移(时序常量逐字对照——等价证明=git 提交 7f24b64,文件已按生命周期条款退役) |
|
| v0.10 | 2026-09-26 | 渲染技术注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗舞台 Node2D 化——BattleStageView 内部由 PanelContainer+Control 站桩改为 Control 壳 + SubViewportContainer + SubViewport + Node2D 世界(StageWorld/StandeeBody),类名/setter 面/公共方法契约不变、调用点零改造;状态图标行与悬停 tooltip 保留 Control 载体挂壳层(伴随件);C6 字体注入挂点复用(set_world_font);三区布局与性能预算(同屏 draw calls < 200)不变;占位表现等价平移(时序常量逐字对照——等价证明=git 提交 7f24b64,文件已按生命周期条款退役) |
|
||||||
| v0.11 | 2026-09-27 | 关卡画面 UX spec 建档([level-map](../../ux/level-map.md),关卡画面 UX 批——用户拍板立项):义务清单「关卡节点地图」行挂屏级 spec 指针;屏级权威行与不负责表改按屏分治口径(战斗屏 = battle.md / 关卡画面 = level-map.md)。文档面零机制改动 |
|
| v0.11 | 2026-09-27 | 关卡画面 UX spec 建档([level-map](../../ux/level-map.md),关卡画面 UX 批——用户拍板立项):义务清单「关卡节点地图」行挂屏级 spec 指针;屏级权威行与不负责表改按屏分治口径(战斗屏 = battle.md / 关卡画面 = level-map.md)。文档面零机制改动 |
|
||||||
|
|||||||
@@ -435,7 +435,7 @@
|
|||||||
| 2026-09-15 | 雾格残留清理:格态收窄为已开 / 未开两态(删除雾图变体状态行、四格态 AC 与已开雾格 tint / 雾区全开信号两条 AC);图例面板与 toast 槽去掉雾条目与雾首遇提示;BoardView 纹带、绘制优先级与色弱冗余改按通用变异纹带表述;`ux_hint_shown` 的 hint_id 枚举去掉 fog_first;输入义务与 §13 义务对照表去掉 地形变异×3 一项;目标感知示例与提示文案 OQ 措辞同步。本 spec 不装载被移除机制的呈现义务 |
|
| 2026-09-15 | 雾格残留清理:格态收窄为已开 / 未开两态(删除雾图变体状态行、四格态 AC 与已开雾格 tint / 雾区全开信号两条 AC);图例面板与 toast 槽去掉雾条目与雾首遇提示;BoardView 纹带、绘制优先级与色弱冗余改按通用变异纹带表述;`ux_hint_shown` 的 hint_id 枚举去掉 fog_first;输入义务与 §13 义务对照表去掉 地形变异×3 一项;目标感知示例与提示文案 OQ 措辞同步。本 spec 不装载被移除机制的呈现义务 |
|
||||||
| 2026-09-16 | 格面资源批 UI 欠账收口(随 2026-09-15 可选类道具删除的代码收口同步文档):① 布局四区化——删 E 区道具面板行、布局决策 2(道具窗口形态=右栏原位激活)整段删除(编号留空防交叉引用失锚)、ASCII 线框图重绘为 A/B/C/D 四区(D 区横向加宽 ~1036px)、A 区节点链示例改文字签槽实际渲染(战/赏/疗/王);② States 删道具窗口态与零库存空态(「道包空空」);③ 结算口径五段化(授予→增益/减益→战斗→衰减→判定)与明细行 10 类封闭协议(删 15 类行、四类行旧口径;「奖励未生效」行保留);④ 交互/动效/事件表删道具窗口行、跳过按钮、`ux_window_choice`、`submit_window_selection`;⑤ 数据源登记删 `query_inventory` 与窗口载荷,奖励身份按现行 `query_identity` 只读回调口径校正;⑥ 验收清单删窗口断言、五区改四区、未生效类行改现行两型(溢出未生效/奖励未生效);⑦ 关卡末清库反馈义务改载秘宝背包(随秘宝 P0 落地,本批不设计具体呈现);⑧ OQ7(道具窗口原位激活)删除、OQ 重编号,「囤刀待机」等旧可选类措辞清理。本 spec 不装载被删除机制的呈现义务 |
|
| 2026-09-16 | 格面资源批 UI 欠账收口(随 2026-09-15 可选类道具删除的代码收口同步文档):① 布局四区化——删 E 区道具面板行、布局决策 2(道具窗口形态=右栏原位激活)整段删除(编号留空防交叉引用失锚)、ASCII 线框图重绘为 A/B/C/D 四区(D 区横向加宽 ~1036px)、A 区节点链示例改文字签槽实际渲染(战/赏/疗/王);② States 删道具窗口态与零库存空态(「道包空空」);③ 结算口径五段化(授予→增益/减益→战斗→衰减→判定)与明细行 10 类封闭协议(删 15 类行、四类行旧口径;「奖励未生效」行保留);④ 交互/动效/事件表删道具窗口行、跳过按钮、`ux_window_choice`、`submit_window_selection`;⑤ 数据源登记删 `query_inventory` 与窗口载荷,奖励身份按现行 `query_identity` 只读回调口径校正;⑥ 验收清单删窗口断言、五区改四区、未生效类行改现行两型(溢出未生效/奖励未生效);⑦ 关卡末清库反馈义务改载秘宝背包(随秘宝 P0 落地,本批不设计具体呈现);⑧ OQ7(道具窗口原位激活)删除、OQ 重编号,「囤刀待机」等旧可选类措辞清理。本 spec 不装载被删除机制的呈现义务 |
|
||||||
| 2026-09-20 | **敌人卡形态裁决收口(2026-09-20 用户看对照样张拍板,06 待办「敌人卡形态」解决移除——台账 99)**:全站桩形态定稿——① B 区主角与敌人均为无框立绘+底座(站桩式),**英雄卡/敌人卡组件整体退役,卡片式不再作为候选**;主角血条悬浮头顶、状态效果小图标一排挂血条正下方,敌人血条+顺位徽标悬浮头顶、状态小图标同款挂血条下;攻击值等规划数据仍归 C 区数据框(C 区不动);② 布局表 B 区行、Component Inventory 英雄卡/敌人卡两行随裁决改写(敌方 side 池共享层数各立绘同值、意图动画占位等既有语义平移到站桩载体,不随形态改变);③ ASCII 线框图 B 区重绘(旧"意图:爪击/环点"示意早已随行为环退役,本次一并清掉);④ OQ4 改写为裁决已收口注记,对照样张存档 `production/mockups/`;呈现义务细节重述(受击/退场演出挂点等)随表现层升级批执行 |
|
| 2026-09-20 | **敌人卡形态裁决收口(2026-09-20 用户看对照样张拍板,06 待办「敌人卡形态」解决移除——台账 99)**:全站桩形态定稿——① B 区主角与敌人均为无框立绘+底座(站桩式),**英雄卡/敌人卡组件整体退役,卡片式不再作为候选**;主角血条悬浮头顶、状态效果小图标一排挂血条正下方,敌人血条+顺位徽标悬浮头顶、状态小图标同款挂血条下;攻击值等规划数据仍归 C 区数据框(C 区不动);② 布局表 B 区行、Component Inventory 英雄卡/敌人卡两行随裁决改写(敌方 side 池共享层数各立绘同值、意图动画占位等既有语义平移到站桩载体,不随形态改变);③ ASCII 线框图 B 区重绘(旧"意图:爪击/环点"示意早已随行为环退役,本次一并清掉);④ OQ4 改写为裁决已收口注记,对照样张存档 `production/mockups/`;呈现义务细节重述(受击/退场演出挂点等)随表现层升级批执行 |
|
||||||
| 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `../../dev/architecture/adr-0006-board-node2d-rendering.md` 与 `../../dev/architecture/board-node2d-migration-plan.md` §1,代码实装另批并行)**:① 布局四区 → 三区——删布局表 A 区关卡进度条行与 Component Inventory LevelStripView 行(LevelStripView 退役删除,节点链进度只留关卡画面,战斗屏零进度承载);C/D 底行 520 → 548;ASCII 线框图重绘为 B/C/D 三区;② 新流程口径落文——关卡画面(选路覆盖层常驻形态)为关卡内常驻枢纽:Navigation Position 图、到达语境、Entry 表、信息层级第 5 层、Data Requirements 节点图行改「关卡开始即出图选路、战后返回关卡画面再选路」;③ AC 四区措辞改三区。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编;② 28px 纵向空间划归 C/D 底行(520 → 548);③ 关卡画面进度呈现由选路覆盖层节点态承载(暗金已过 / 金当前 / 亮金候选通道 / 旗朱 Boss)、不另设进度条组件 |
|
| 2026-09-23 | **停点前移批(冒险入口流程倒置修复,用户 2026-09-23 拍板;上位裁决 `../../dev/architecture/adr-0006-board-node2d-rendering.md` 与 `Node2D 迁移计划(已执行完毕,文件已退役)` §1,代码实装另批并行)**:① 布局四区 → 三区——删布局表 A 区关卡进度条行与 Component Inventory LevelStripView 行(LevelStripView 退役删除,节点链进度只留关卡画面,战斗屏零进度承载);C/D 底行 520 → 548;ASCII 线框图重绘为 B/C/D 三区;② 新流程口径落文——关卡画面(选路覆盖层常驻形态)为关卡内常驻枢纽:Navigation Position 图、到达语境、Entry 表、信息层级第 5 层、Data Requirements 节点图行改「关卡开始即出图选路、战后返回关卡画面再选路」;③ AC 四区措辞改三区。**批内代拍板三项已追认(2026-09-24 用户确认)**:① B/C/D 字母保持不重编;② 28px 纵向空间划归 C/D 底行(520 → 548);③ 关卡画面进度呈现由选路覆盖层节点态承载(暗金已过 / 金当前 / 亮金候选通道 / 旗朱 Boss)、不另设进度条组件 |
|
||||||
| 2026-09-23 | 实现注记(棋盘 Node2D 迁移批 Phase A,代码实装同批;上位裁决 ADR-0006):棋盘渲染 Node2D 化(BoardView = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界,信号/click_cell/_cells 契约保持,新增 push_input 端到端输入探针);格尺寸公式锚点不变(set_cell_area = floor((min(宽,高) − 预留 − (N−1)×格间距) / N) 单点可调),布局与交互语义零改动 |
|
| 2026-09-23 | 实现注记(棋盘 Node2D 迁移批 Phase A,代码实装同批;上位裁决 ADR-0006):棋盘渲染 Node2D 化(BoardView = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界,信号/click_cell/_cells 契约保持,新增 push_input 端到端输入探针);格尺寸公式锚点不变(set_cell_area = floor((min(宽,高) − 预留 − (N−1)×格间距) / N) 单点可调),布局与交互语义零改动 |
|
||||||
| 2026-09-26 | 实现注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗画面 Node2D 化(BattleStageView = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界,站桩本体 StandeeBody 世界精灵;set_enemies/clear_enemies/on_step_row_fx/gray_all_enemies 等 setter 面签名保持,弹道落点锚点=壳层口径 world_to_shell 单点);状态图标行与悬停 tooltip 保留 Control 载体挂壳层;三区布局尺寸零改动(B 区外框 252px 逐位) |
|
| 2026-09-26 | 实现注记(战斗舞台 Node2D 迁移批 Phase B,代码实装同批;上位裁决 ADR-0006):B 区战斗画面 Node2D 化(BattleStageView = Control 壳 + SubViewportContainer + SubViewport + Node2D 世界,站桩本体 StandeeBody 世界精灵;set_enemies/clear_enemies/on_step_row_fx/gray_all_enemies 等 setter 面签名保持,弹道落点锚点=壳层口径 world_to_shell 单点);状态图标行与悬停 tooltip 保留 Control 载体挂壳层;三区布局尺寸零改动(B 区外框 252px 逐位) |
|
||||||
| 2026-09-26 | **封印紫批**(用户拍板):插旗呈现色 旗朱 #C63D22 → 封印紫 #7C3AA8(色相 ≈267°,避开禁入带)——旗字形/已承诺封印框/旗化暴击弹道随批换色;拒绝边框闪语义归危险红;Boss 节点描边归紫赤本色。修订记录历史行旗朱字样系当时口径留痕不改 |
|
| 2026-09-26 | **封印紫批**(用户拍板):插旗呈现色 旗朱 #C63D22 → 封印紫 #7C3AA8(色相 ≈267°,避开禁入带)——旗字形/已承诺封印框/旗化暴击弹道随批换色;拒绝边框闪语义归危险红;Boss 节点描边归紫赤本色。修订记录历史行旗朱字样系当时口径留痕不改 |
|
||||||
|
|||||||
@@ -241,7 +241,7 @@
|
|||||||
|
|
||||||
| 日期 | 改动 |
|
| 日期 | 改动 |
|
||||||
|---|---|
|
|---|---|
|
||||||
| 2026-09-28 | **视觉终稿冻结批(M-2 迭代 4 T1–T4,闸形 A:样张 v1 机检 11/11 全绿即冻结)**:Status 升格定稿版;Layout 节点图区冻结值成文(画布公式 70+层×122+34 / 52+槽×58+26+8 下限 620×240、通道 2/3/4px、节点图标 ♻ kenney 五键 20px 烘焙+双色墨制、编号右上角);已过态 = GOLD_DONE #68562C 冻结新值(旧 GOLD_DIM 对双色墨 <4.5:1 逼守);Accessibility 增 Boss 深墨环灰度冗余+对比断言承载注记;States 换层进入改「淡入+换层色板渐变挂点(§2.7 切片档)」;组件清单节点图画布实现锚更新;OQ ④ 视觉终稿收口;线框图注记随改。产物:样张 `artwork/mockups/level-map-sheet-v1-2026-09-28.png` + 机检报告 git 提交 9a79927 + 出口闸检查单 `design/qa/m2-exit-gate-checklist-2026-09-28.md` |
|
| 2026-09-28 | **视觉终稿冻结批(M-2 迭代 4 T1–T4,闸形 A:样张 v1 机检 11/11 全绿即冻结)**:Status 升格定稿版;Layout 节点图区冻结值成文(画布公式 70+层×122+34 / 52+槽×58+26+8 下限 620×240、通道 2/3/4px、节点图标 ♻ kenney 五键 20px 烘焙+双色墨制、编号右上角);已过态 = GOLD_DONE #68562C 冻结新值(旧 GOLD_DIM 对双色墨 <4.5:1 逼守);Accessibility 增 Boss 深墨环灰度冗余+对比断言承载注记;States 换层进入改「淡入+换层色板渐变挂点(§2.7 切片档)」;组件清单节点图画布实现锚更新;OQ ④ 视觉终稿收口;线框图注记随改。产物:样张 `artwork/mockups/level-map-sheet-v1-2026-09-28.png` + 机检报告 git 提交 9a79927 + 出口闸检查单 `M2 出口检查单(已退役,git 历史可查)` |
|
||||||
| 2026-09-28 | **形态升格独立屏批(M-2 迭代 3 T1,用户裁决:独立存在为最终形态,覆盖层实现定性=测试阶段形态)**:Status/覆盖范围/到达方式/Navigation Position——「模态覆盖层形态(暗幕 0.6 底层透出)」全量改写为「独立屏独占呈现(战斗屏宿主整体隐藏,零透出)」;Layout 屏底=深底+石纹底噪(M-1 框材件);Transitions=独立屏淡入 200ms(alpha 淡入非明度变化——art-bible §2);AC「模态纪律」条改「独立性断言」(激活期战斗屏隐藏/选路提交战斗节点后恢复/兑付覆盖层关闭后本屏恢复);节点/商店覆盖层「本屏域内弹出」语义随形态明确(本屏保持激活,模态栈遮挡恢复语义复用);实现锚改名 level_map_screen.gd(RouteOverlay 退役);battle.md 三处选路覆盖层措辞随改;视觉终稿前置改指 M-2 迭代 4 关卡画面样张 |
|
| 2026-09-28 | **形态升格独立屏批(M-2 迭代 3 T1,用户裁决:独立存在为最终形态,覆盖层实现定性=测试阶段形态)**:Status/覆盖范围/到达方式/Navigation Position——「模态覆盖层形态(暗幕 0.6 底层透出)」全量改写为「独立屏独占呈现(战斗屏宿主整体隐藏,零透出)」;Layout 屏底=深底+石纹底噪(M-1 框材件);Transitions=独立屏淡入 200ms(alpha 淡入非明度变化——art-bible §2);AC「模态纪律」条改「独立性断言」(激活期战斗屏隐藏/选路提交战斗节点后恢复/兑付覆盖层关闭后本屏恢复);节点/商店覆盖层「本屏域内弹出」语义随形态明确(本屏保持激活,模态栈遮挡恢复语义复用);实现锚改名 level_map_screen.gd(RouteOverlay 退役);battle.md 三处选路覆盖层措辞随改;视觉终稿前置改指 M-2 迭代 4 关卡画面样张 |
|
||||||
| 2026-09-27 | 初稿(关卡画面 UX 批,用户拍板立项):占位升格版——信息层级五层/三分区布局/组件清单/三停点状态/交互与数据锚/AC 成文;停点标题措辞修正(清偿台账 143 遗留);GP 常驻徽章落地面(2026-09-26 二轮拍板去向,经 GP 归属拍板对齐批维持);三项提案挂 OQ(HP 常驻读数/图上直接点击选路/放弃二次确认)登记 06 待拍板;视觉终稿以表现层样张为前置。实现锚 = route_overlay.gd 程序化占位现行 |
|
| 2026-09-27 | 初稿(关卡画面 UX 批,用户拍板立项):占位升格版——信息层级五层/三分区布局/组件清单/三停点状态/交互与数据锚/AC 成文;停点标题措辞修正(清偿台账 143 遗留);GP 常驻徽章落地面(2026-09-26 二轮拍板去向,经 GP 归属拍板对齐批维持);三项提案挂 OQ(HP 常驻读数/图上直接点击选路/放弃二次确认)登记 06 待拍板;视觉终稿以表现层样张为前置。实现锚 = route_overlay.gd 程序化占位现行 |
|
||||||
| 2026-09-27 | **三拍板收口批(用户逐项裁决)**:① 底栏 = 状态展示——生命/属性(攻击·AC 有效值)/本关已选加成三组常读(原提案顶栏 HP 扩为底栏状态栏,布局决策 4);② 图上直接点击选路定稿——候选按钮整列退役、图上点击为唯一提交通道(布局决策 2;press_candidate 探针面随实装批改造注记);③ 放弃冒险二次确认定稿(布局决策 3)。信息层级六层重排/组件清单/States/交互表/Data Requirements(属性与加成读数入口)/AC/线框图随改;06 拍板点条目解决移除(去向 = 本批台账 204) |
|
| 2026-09-27 | **三拍板收口批(用户逐项裁决)**:① 底栏 = 状态展示——生命/属性(攻击·AC 有效值)/本关已选加成三组常读(原提案顶栏 HP 扩为底栏状态栏,布局决策 4);② 图上直接点击选路定稿——候选按钮整列退役、图上点击为唯一提交通道(布局决策 2;press_candidate 探针面随实装批改造注记);③ 放弃冒险二次确认定稿(布局决策 3)。信息层级六层重排/组件清单/States/交互表/Data Requirements(属性与加成读数入口)/AC/线框图随改;06 拍板点条目解决移除(去向 = 本批台账 204) |
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
# 出口报告:迭代 15 卡② 奇物词族对齐与渠道分离批(2026-10-05)
|
|
||||||
|
|
||||||
> 任务书 = `design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md`(T0 差异回写+T6b 裁决回写在册)。
|
|
||||||
> 设计事实源 = `design/gdd/systems/冒险循环/奇物.md` v2.7。worktree = `g-plan2-curio-wordfamily`,分支 `curio-wordfamily-20261005`,基线 = master 413c936(冒烟 772/0)。
|
|
||||||
|
|
||||||
## 一、提交链(worktree)
|
|
||||||
|
|
||||||
| # | 提交 | 内容 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | d4cde73 | T1:feature_*→curio_*(CURIO_KINDS/curio_quota/curio_value/curio_candidate_count + adventure.tres 键名 + entities.yaml 换代续写) |
|
|
||||||
| 2 | 8e2694d | T2:运行层 bonus_*→curio_* 全族 + curio_interact_controller.gd/curio_pick_overlay.gd 两文件改名 + 裁点甲案 + reward_overlay 红转绿适配 |
|
|
||||||
| 3 | 6812ebb | T3+T4:relic_*→feat_*(三文件改名+全 token+config_db 注册键两端)+ 渠道白名单过滤(通关渠道只出专长/节点零专长)+ devour 货架保底退役 |
|
|
||||||
| 4 | 95b66f0 | T5+T6a:门票入表(四字段 provisional+三计数+双注入+拿到即开三入口+断点扩列+shop.tres 门票行+A5/A6 断言)+ T6a 商店补 heal 行 + registry 刷新边界写死 |
|
|
||||||
| 5 | 5 | ccd95c8 | T6b+T7+缺陷修:refresh 入池(B 案)+ charge 登记 + autoplay 门票分支(MC timeout 形态批内实测修复) |
|
|
||||||
|
|
||||||
## 二、批末读数(T8 回填)
|
|
||||||
|
|
||||||
| 闸 | 基线(413c936) | 批末 | 判定 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 冒烟 smoke_all | 772/0 | **782/0**(+10=双渠道白名单 2+门票 A5/A6 行为断言 7+门票兑付受理 1) | |
|
|
||||||
| run_all | 15/16(reward_overlay 红=M7 基线红) | **16/16 全绿** | **红转绿(T2 适配,run_all 历史首次全绿)** |
|
|
||||||
| 行为探针四件+ui_struct | 全绿 | **五探针全绿**(ui_probe/ui_click/ui_input/ui_tune/ui_struct exit 全 0) | |
|
|
||||||
| doc 三闸+熵增闸 | 零新增基线 | lint 8文件2不通过=基线同款/term 218命中3疑似=基线同款/link 死链 7→修后 4(3 处系本批改名断链已修:奇物.md:16/:302 relics.tres→feats.tres+node-reward.md:4 bonus_pick_overlay→curio_pick_overlay;余 4=worktree 假象×2+既有 ux 债×2)/熵增闸 struct 违例×1=主区同款既有(archify design/diagrams 越界,归该批) | **零新增** ||
|
|
||||||
| MC n200 双策略(82000 窗,route=min 零加成) | 无同窗基线(判式批锚=76000 系旧结构;主区 413c936 同窗 n20 对照跑) | normal 0.5%(1/200 通关)/perfect 77.5%(155/200);修 autoplay 门票分支后 n20 与主区基线逐位一致(normal 0 空终局/perfect 16 完 4 败);**读数只测不判**(渠道分离+门票改变奇物流,带判读归 M-4;锚换代=82000 系新锚 n200 日志留盘 user://logs/playtest_82000_*.jsonl) | |
|
|
||||||
|
|
||||||
## 三、验收断言(A1-A12 逐条)
|
|
||||||
|
|
||||||
- **A1 词族归零**:A1 模式残留 **40 处全保名单**——_bonus_ 37 处(_bonus_row/_bonus_row_l/_bonus_summary_text/_bonus_value=结算加成行呈现面;_bonus_treasure_carry/_bonus_treasure_item/_bonus_treasure_pool=③批秘宝语义)+ node_relic_seen 局部变量 3 处(冒烟断言变量,指称 relic 令牌语义)。引号数据契约键全形态保留:bonus_deck×3/bonus_taken×3/bonus_pending×3/bonus_result×2/bonus_aux_carry×2/"bonus"×15(断点属性区键)/relics×6/relic×25(kind 值+身份前缀+摘要键)(保名单:_bonus_row/_bonus_value/_bonus_summary_text 等加成区呈现+bonus_summary+存档键六形态+kind 值 "relic"/身份前缀 "relic:"/relics_seed 进程内参数——穷举见 §五)
|
|
||||||
- **A2 禁词未用**:reward_pick/reward_node/reward_preview 既有三处零新增(T2 全程未触)
|
|
||||||
- **A3 兑付频率**:专长兑付点=通关三选一(_pending_next_level 置位链=关底 Boss 击败同一时刻);关内普通战斗节点零奇物(node_type=battle 无三选一调用,结构保证+冒烟既有断言面)
|
|
||||||
- **A4 渠道分离**:_draw_curio_candidates(channel) 白名单过滤——通关渠道 60 次重抽全 relic/节点渠道 60 次零 relic(冒烟断言在案);货架白名单=shop_pool_rows 词表(feat_ticket 门票行+heal 回复行+四池种)
|
|
||||||
- **A5 拿到即开**:门票兑付=候选替换专长面+零摘牌+无残留持有集(冒烟 4 断言在案)
|
|
||||||
- **A6 保底计数**:pity=5→第 6 展示必出/触发清零/限购满冻结/概率面存在(冒烟 4 断言在案)
|
|
||||||
- **A7 值零变更**:T1 改名键值逐位相等(diff 实测)+ heal 5→3/refresh 0→2 系 T6b 用户裁 B 案结构面(非本断言范围)
|
|
||||||
- **A8 存档往返**:断点往返测试 PASS(全批三次验证:T1/T2/T4 后各一);存档键按 T2 裁点甲案+relics 第 6 键澄清(§四-3)
|
|
||||||
- **A9 池配额锚**:TIER_QUOTAS 70/25/3=98 零改动(B 案挤占——heal 5→3/refresh 0→2,总量不变,validate 绿)
|
|
||||||
- **A10 节点类型零扩类**:封闭枚举五种未动
|
|
||||||
- **A11 玩家可见面无分类名**:门票卡面写「奇物门票/奇物三选一」(规避「专长」分类名);本批只做断言检查不改法(C1 归呈现批)
|
|
||||||
- **A12 档二通路**:charge=3 件(<4)——**显式登记不硬补**(白名单 4;registry charge_defect 落文,转内容批)
|
|
||||||
|
|
||||||
## 四、裁点与自裁记录
|
|
||||||
|
|
||||||
1. **T2 存档键裁点(白名单 3)**:**甲案**——五存档键(bonus_deck/bonus_taken/bonus_pending/bonus_result/bonus_aux_carry)引号字面量禁改,代码侧变量全换 curio_。依据:与③批先例一致;全仓对拍六形态逐键全等。
|
|
||||||
2. **bonus_aux_carry 语义澄清(T0 回写)**:该键系**秘宝件跨关携带**(③批已对齐 treasure 词族),非奇物概念——剔除出本批改名面;_bonus_treasure_carry 变量随③批保留。
|
|
||||||
3. **"relics" 第 6 存档键(任务书漏登记)**:adventure_runner 断点快照/摘要 additive 键 "relics"(迭代 12 T1 扩列)——任务书 §2.5 只列 5 键漏此键;按甲案精神禁改+registry/任务书回写。kind 值 "relic"/身份前缀 "relic:"/relics_seed 参数同理保留(数据契约键,A1 扫描口径=relic_ 下划线形态)。
|
|
||||||
4. **T6b refresh 入池配额(用户门呈报,用户裁 B 案)**:refresh rare=2 从 heal rare 5 挤占(heal 5→3),总量 98 锚不变;契约 10 按裁更新;**池架构语义=总池-渠道子集(多级缓存形)**确立落 registry pool_architecture。
|
|
||||||
5. **devour 货架保底退役(T4 连带)**:迭代 12 T6「货架零特性挤卡换吞噬流件」简化口径与渠道白名单直接冲突(devour=规则改写型=专长系不得进商店货架)——随渠道定位退役,留痕注释。
|
|
||||||
6. **reward_overlay_test 红转绿(T2 连带)**:成因考证=M7 bcard 换装(PanelContainer)致 `c is Button` 恒 0(主区 3c4291d 起红在案);断言改数 _choice_box 子节点数(语义不变)——run_all 16 套历史首次全绿。
|
|
||||||
|
|
||||||
## 五、例外清单(A1 扫描口径残存量,批末)
|
|
||||||
|
|
||||||
【A1_EXCEPT】
|
|
||||||
|
|
||||||
## 六、遗留与移交
|
|
||||||
|
|
||||||
1. 07 清单登记(T8 已落 §⑰):①专长兑付时点目检(关底 Boss 击败那一刻=通关三选一,**不是战斗结算后**)+门票拿到即开目检+商店门票/回复行目检;②refresh 件入池后 heal 出现率感知归 T7 类节奏重测(跑批待批)
|
|
||||||
2. C1 玩家可见面违规改法+档位呈现三路 → 呈现批(06 独立条目)
|
|
||||||
3. C2 第四关+档二复裁+charge 补件 → 第四关内容批
|
|
||||||
4. C3 门票四参数终值(现 provisional 20%/2/1/5)→ 曲线调参批
|
|
||||||
5. C4 存档键正式迁移 → 存档批(本批甲案未迁移,兼容读旧键零破坏)
|
|
||||||
6. MC 运行含既有 script error 噪音(ticket_id/minesweeper_rules 链)——待基线对拍归属,读数采集不受影响
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
# 出口报告:迭代 15 卡③ 秘宝代码词族对齐批(2026-10-05)
|
|
||||||
|
|
||||||
> 任务书 = `design/research/任务书-秘宝代码词族对齐批-2026-10-05.md` v1.2(§1.2 基线已回填)。
|
|
||||||
> 设计事实源 = `design/gdd/systems/排雷循环/秘宝.md` v0.9。worktree = `g-plan2-m4iter15-mibao`,分支 `m4iter15-mibao-20261005`。
|
|
||||||
|
|
||||||
## 一、提交链(worktree 八笔)
|
|
||||||
|
|
||||||
| # | 提交 | 内容 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | b4b8bb3 | T1 组A+D:玩家可见文案 5 处 + 注释层「魔法道具」→「秘宝」全清(敌方语汇/道具工坊分色保全) |
|
|
||||||
| 2 | dfd5fdd | T2 组C:architecture.md 两处既有断链清偿 |
|
|
||||||
| 3 | 5294b12 | T3 组F:`"aux_item"` 域串 16 处 → `"treasure_item"` + `TREASURE_ITEM_TYPE` 常量族 + `reward_dangling_treasure` 诊断码 |
|
|
||||||
| 4 | 2532c8f | T4 组B-1:四文件改名(treasure_items.gd / treasure_item_table.gd / treasure_items.tres / treasure_interact_controller.gd)+ 类名 + .uid 稳定 + .tres ext_resource 同步 + --import 重刷 |
|
|
||||||
| 5 | 7e5b6d9 | T5 组B-2:ConfigDB 注册键/持有变量/五访问器 + 调用方 + 单测桩表 + loaded 取键 |
|
|
||||||
| 6 | f8c6db4 | T6 组E-1:三测试文件改名 + run_all 登记 + test_kit 注释同步 |
|
|
||||||
| 7 | cd73e62 | T7 组E-2:内部标识符全族换词(60+ token)+ 存档键零触碰专项核 + 任务书 §1.2 基线回填 |
|
|
||||||
| 8 | 8c27213 | T8:tests 文档两处清零 + 奇物.md 换名断链补修 + 批末闸认证 |
|
|
||||||
|
|
||||||
主区合并提交与全量复跑读数见台账(active.md 快照行)。
|
|
||||||
|
|
||||||
## 二、批末读数(批末树态 8c27213 实跑)
|
|
||||||
|
|
||||||
| 闸 | 基线(3c4291d 实跑) | 批末 | 判定 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 冒烟 smoke_all | 755 项 / 0 失败 | **755 项 / 0 失败** | ✅ 零漂移 |
|
|
||||||
| run_all 15 套件 | 14/15(唯一红 reward_overlay_test = **②批遗留基线红**,主区 3c4291d 同样红,非本批引入) | **14/15,唯一红同款** | ✅ 对照零新增 |
|
|
||||||
| 行为探针 ui_probe / ui_click / ui_input / ui_tune | 全绿 | **全绿**(click done=true 问题=0 / input 十六断言 / tune 全链) | ✅ |
|
|
||||||
| doc 三闸(lint/term/link) | lint 8 文件 2 不通过(既有)/ term 218 命中 3 疑似 / link 死链 0(主区带脏件口径) | 同基线 | ✅ 零新增 |
|
|
||||||
| 熵增闸 repo_structure_audit | PASS | PASS | ✅ |
|
|
||||||
| MC 逐位对拍 | —— | **未跑(goal 令:纯改名零数值面禁跑 MC,静态零漂移证明代之,见 §四-12)** | ✅ 按令豁免 |
|
|
||||||
|
|
||||||
**渲染像素类闸本批屏蔽**(golden_compare / shot_probe / fx_probe / ui_layout_probe / board_shot)——组 A 文案变更使像素断言合法失效,按 goal 令弃断;**补跑挂账 07 清单**(迭代 14 全落籍后表现批周期闸一次性补跑)。
|
|
||||||
|
|
||||||
## 三、批末验收断言(12 条)
|
|
||||||
|
|
||||||
1. **词族换尽**:`aux_`/`AuxItem*`/`AUX_ITEM*` 批末全仓 game/ 残留 43 处,**逐处归例外**(§五清单),零在族欠改。
|
|
||||||
2. **玩家可见清零**:`grep 魔法道具 game/` = 1 处(`game/README.md:538`,§4.4 禁改项·历史 changelog 留痕,非玩家可见面)——代码与 UI 面零命中。tests/README.md 与 critical-paths.md 两处已随批清零。
|
|
||||||
3. **重闸全绿**:冒烟 755/0(§二);run_all 零新增;四探针全绿;doc 三闸+熵增闸零新增。
|
|
||||||
4. **存档兼容零破坏(R1)**:本批 diff 全部 37 文件、六存档键(`bonus_aux_carry`/`aux_items`/`aux_detail`/`aux_cleared`/`aux_cleared_last`/`attunement_charges`)引号字面量 HEAD↔批末**逐键普查零差异**;点号访问形式全仓代码行**零存在**(仅注释提及);`_node_bonus_pending` 持久化嵌套键全部引号形态未动。
|
|
||||||
5. **数值零漂移(R2)**:静态证明——批 diff `game/data/tables/` 数值行零改动(断言空);`magnitude`/`weight`/`power`/`charge_n` 零触碰;reward.tres 零改动。
|
|
||||||
6. **schema 契约面零变更(R3)**:`CELL_TYPES.size()==10` 保持(改字面量不改项数);`smoke_all.gd:3932` 断言同步为 `has("treasure_item")` 后全绿;校验行为不变,错误消息文案可变(`reward_dangling_treasure` 诊断码随族改,测试双端同步)。
|
|
||||||
7. **零字段更名(R4)**:`item_id`/`effect_kinds`/`form`/`slot_cost` 原样;treasure_items.tres 仅改 `script_class` 与 `ext_resource` 路径。
|
|
||||||
8. **零 await(R5)**:批 diff core/ 新增 await 行数 = 0。
|
|
||||||
9. **冒烟夹具零触碰**:smoke_all.gd 断点夹具区(:4473/:4495 `"aux_items"`/`"aux_scout"`)diff 零改动。
|
|
||||||
10. **敌方语汇保全**:`魔法矢`/`魔法反噬`/`魔法族`/`魔法护甲` 12 处未动;`道具工坊` 8 处未动;`arch_names["magic"]` 未动。
|
|
||||||
11. **.uid/.tscn 纪律**:四个改名 .gd 的 .uid 随文件改名且内容零变(git R100);全仓 .tscn 对改名目标零引用(改前已核);--import 批内重刷两次(T0 基线 + T4 改名后),类名解析实证=冒烟加载 TreasureItemTable 零报错。
|
|
||||||
12. **registry 条目键不动**:`design/registry/entities.yaml` 零改动(条目键 `aux_items` 数据契约键沿用)。
|
|
||||||
|
|
||||||
## 四、缺陷与自修记录(全 L1 级,均当轮闭环)
|
|
||||||
|
|
||||||
1. **T3**:任务书 §4.3 的 16 处清单漏计 `AUX_ITEM_TYPE` 常量消费方 4 处(cross_validator×2 / reward_economy / smoke:2578)——冒烟 SCRIPT ERROR 抓到,自查补齐,一次重试绿。
|
|
||||||
2. **T4→T5**:`treasure_items.gd:117` 桩回退行 `_db.aux_items.` 漏随族改 → run_all `treasure_items_test` 红 → 补修转绿。
|
|
||||||
3. **T8**:`grep 魔法道具 game/` 在 .gd/.tres 口径外余 3 处文档件——tests/ 两处随批清零;README.md 一处按 §4.4 保留(见 §五-4)。
|
|
||||||
|
|
||||||
## 五、例外清单(批末仍在族字面量穷举,共 43+2 处)
|
|
||||||
|
|
||||||
| 类 | 量 | 明细 |
|
|
||||||
|---|---|---|
|
|
||||||
| 存档键引号字面量 | 43 | `aux_detail`×30 · `aux_items`×11(断点快照键+冒烟夹具键)· `aux_cleared`×10·`aux_cleared_last`×1(含信号文档注释提及)· `bonus_aux_carry`×3 · `attunement_charges`×2 |
|
|
||||||
| 冒烟夹具数据值 | 2 | smoke_all.gd `:4473/:4496` `"aux_scout"`(断点快照夹具 item_id,整块零触碰) |
|
|
||||||
| game/README.md §4.4 禁改项 | 1 | `:538` 历史 changelog 行文(§1.2 判定 2 唯一余量,非玩家可见) |
|
|
||||||
| registry 条目键 | 库外 | `design/registry/entities.yaml` `aux_items` 条目键沿用(数据契约) |
|
|
||||||
| 裸词 `aux`/`attunement_*` | 库外 | 裸 `aux` 局部变量与注释词(无 `aux_` 族 token 形态,出口 grep 族外);`attunement_*` 系同调位 DND 机制名(秘宝.md v0.9 明令保留) |
|
|
||||||
|
|
||||||
## 六、代拍板追认单(白名单内 5 项,请追认)
|
|
||||||
|
|
||||||
1. **词根选型 `treasure_*` 全族**:`treasure_item`(域串)/`treasure_items`(表+注册键+变量)/`TreasureItemTable`/`TreasureItems`/`treasure_items.tres`/`treasure_item_table.gd`/`treasure_items.gd`/`treasure_interact_controller.gd`。依据:任务书组 B 预设建议词根 + 全仓 `treasure` 零冲突(局内奇物 `curio_*`/`feat_*` 无碰撞)。
|
|
||||||
2. **诊断码 `reward_dangling_aux` → `reward_dangling_treasure`**(config_db_cross_validator + 测试双端)。依据:§4.0 判据(指向秘宝概念)、R3 文案可变行为不变。
|
|
||||||
3. **`aux_unlocked` params 键族改 `treasure_unlocked`**(main/adventure_runner/smoke/breakpoint_resume_test 四端同步)。依据:已核实该键=main.gd 现场构造的进程内 params 键,**不入任何存档**(§4.1 判据只锁跨局持久化键)。
|
|
||||||
4. **呈现与结算 token 全族**:`aux_inventory→treasure_inventory`、`aux_mark→treasure_mark`、`_aux_reveal/_aux_preview→_treasure_*`、`aux_slot_clicked→treasure_slot_clicked`、`set_aux_inventory/set_aux_overlays→set_treasure_*`、`use_aux→use_treasure`、`aux_replace_presented→treasure_replace_presented`、`aux_replace`(autoplay 事件日志键)→`treasure_replace`、`_aux→_treasure_ui`、`AuxInteractController→TreasureInteractController` 等。依据:§4.0 判据+白名单词形自由。
|
|
||||||
5. **三处注释/错误文案换词**:meta_table.gd:88 校验错误消息(「出域秘宝六件词表」)、treasure_items.gd/treasure_item_table.gd 头注 registry 键提及换「秘宝条目(键 aux_items 沿用)」、treasure_interact_controller:11 注释类名引用同步。依据:R3 文案可变。
|
|
||||||
|
|
||||||
**非代拍、按硬边界执行**:`game/README.md:538` 未改(§4.4 明令 + 换名先例「历史留痕原样保留」)——若你要它也清零,一句话即补。
|
|
||||||
|
|
||||||
## 七、挂账与移交
|
|
||||||
|
|
||||||
1. **渲染像素类闸补跑**(已挂 07⑮):迭代 14 全落籍后表现批周期闸一次性补跑五件。
|
|
||||||
2. **实机目检**(已挂 07⑮):「秘宝」字样全 UI 面——C 区槽位标题+悬停 tooltip+战斗总结叙述行+上关清空 toast。
|
|
||||||
3. **reward_overlay_test 基线红**:②批遗留(选择态三卡 btns=0),本批未触碰其域,**归属 ②批收口方处置**;读数已录本报告 §二。
|
|
||||||
4. **存档键正式迁移**(②批待裁点):本批未动任何键名,②批若启动迁移与本批无冲突(键字面量=本批保护面)。
|
|
||||||
|
|
||||||
## 八、并行协调与合并实录
|
|
||||||
|
|
||||||
1. **合并前停机点(goal 令履行)**:batch 末查得 master 已推进 85dc9af(迭代14①收窄批落籍)且新在飞 worktree m4iter14-skillpool(④技能池批)——四文件重叠(battle_orchestrator/adventure_runner/level_runner/main.gd),按 goal 令停机提问三选一;**用户裁「我先合,对方 rebase」**。
|
|
||||||
2. **第一轮 master 并入**(85dc9af):07 清单⑬双登冲突(收窄批⑬保留,本批目检项改⑭);smoke_all.gd/roadmap auto-merge;合并后全查零旧词带入。
|
|
||||||
3. **局面变化**:技能池批未等本批,先自落籍 master(d3fa887,冒烟 772/0);用户令继续并提示防冲突。
|
|
||||||
4. **第二轮 master 并入**(d3fa887):07 清单⑭双登冲突(技能池⑭保留,本批目检项改⑮);四重叠文件 auto-merge **零旧词带入**(全查仅存档键合法例外——技能池批新增行不在 aux 词族区);认证电池复跑(--import+冒烟+run_all+四探针)。
|
|
||||||
5. **经验注记**:并行双批各自在旧词族/新词族上开发时,auto-merge 静默带入旧词的风险真实存在;本批合并后全仓 token 级 grep 复查是必要闸,不能只看 git 冲突标记。
|
|
||||||
@@ -1,125 +0,0 @@
|
|||||||
# 出口报告:UI 设计对齐批(迭代 16)
|
|
||||||
|
|
||||||
> 任务书=[任务书-UI设计对齐批-2026-10-05.md](../research/任务书-UI设计对齐批-2026-10-05.md)(v1.0 定稿,P1-P11 裁决已齐)。
|
|
||||||
> 本报告随卡渐进成文;T0 基线节随 T0 提交,其余节随各卡追加。
|
|
||||||
|
|
||||||
## T0 · 基线回填(2026-10-06 实测)
|
|
||||||
|
|
||||||
### 环境与提交基线
|
|
||||||
|
|
||||||
- worktree=`D:/code/g-plan2-iter16ui`,分支 `iter16-ui-20261005`,起点=**a39d044**(master 3c6f2c9 + 第〇步纯文档批:迭代 16 改号=UI 设计对齐批、原四卡顺延迭代 17、UI 任务书 P1-P11 裁决落文,含五处陈旧待裁标记擦除)。
|
|
||||||
- worktree 缺 gitignored 素材(`game/assets/art/` 不入 git)——已从主区整目录拷贝(磁盘本地、不入库、素材字节零改动);`artwork/` 不拷(Q9 丙禁回读 demo 文件)。
|
|
||||||
- 冷刷导入一次(fresh worktree 一次性成本,uid_cache 建立)。
|
|
||||||
|
|
||||||
### 基线闸读数(全部实测,替代任务书起草读数)
|
|
||||||
|
|
||||||
| 闸 | 读数 | 对照 |
|
|
||||||
|---|---|---|
|
|
||||||
| 冒烟 smoke_all | **782/0**(与 3c6f2c9 落籍读数一致) | §1.2 起草值 772/0 已过时 |
|
|
||||||
| run_all | **16 套全绿** | 起草值 14/15(reward_overlay 红)已过时——该红已随 15② 修复 |
|
|
||||||
| probe_gate --click | 全绿:ui_input 16 断言 PASS / ui_struct 全屏零红 / click done=true 问题=0 / 残留 Godot=0 | — |
|
|
||||||
| ui_layout_probe | exit=0(布局树 dump 工具,无断言失败形态) | — |
|
|
||||||
| gdd_lint | **既有 2 文件不通过**:06-待办清单(表格占比 1%)· 07-体验验证清单(表格占比 7%) | 基线,本批守零新增(不得出现第 3 个) |
|
|
||||||
| doc_link_audit | **既有死链 2 处**:奇物.md:130 → ../ux/battle.md、../ux/node-reward.md(master 既有在册);worktree 环境假红 2 处=06:121 `.zcode/plans` + 06:309 `archive/`(gitignored 目录 worktree 不存在,主区实存) | 基线 2 处,守零新增 |
|
|
||||||
| doc_term_audit | 退役词命中 218 处 / 疑似现行 3 处(与主区逐字一致) | 基线,守零新增 |
|
|
||||||
| 熵增闸 | design/diagrams 越界 ×1(双树一致,**既有在册归 archify 批**) | 基线,守零新增 |
|
|
||||||
|
|
||||||
### demo md5 重核(Q9 丙留痕)
|
|
||||||
|
|
||||||
`78ebbee0d9d4c1b5c902e6b8878c8800`(2026-10-06 主区实测)= 任务书 §2.2 抄录基线,**零漂移**;此后不再回读 demo 文件,取值一律以任务书 §2.2 抄录表为准。
|
|
||||||
|
|
||||||
### §2 事实表 15 项复核(全 15 项成立;漂移注记 5 条)
|
|
||||||
|
|
||||||
| # | 结论 |
|
|
||||||
|---|---|
|
|
||||||
| F1-F5 | 全成立(行号逐一吻合:BG_ROOT:65/WARM_SOFT:48/PANEL_DATA:24/panel 8.0:286/button 8.0:327-331/frame 12.0:299/panel_skinned 8 消费+1 工厂) |
|
|
||||||
| F6 | 成立;**clampi 实际在 board_view.gd:254**(任务书 :251,+3 行漂移)——P2 丁案「零改动」不受影响 |
|
|
||||||
| F7 | 成立(terrain 三枚实测 32×32) |
|
|
||||||
| F8 | 成立且**读数增长**:UiKit.label 裸字号普查现值 103 处 15 档(11×6/12×9/13×14/14×15/15×15/16×18/17×2/18×4/20×4/21×1/22×5/24×3/26×3/32×1/40×1;起草 78 处口径已过时)——低于正文下限 16 的 11-15 档合计 59 处;另有 status_slot_row 内部 override 13px:67/10px:148 两处。T6 以本次普查为准逐处判定 |
|
|
||||||
| F9 | 成立;**RED_MINE 实值=#962C24**(Color8(150,44,36),任务书注 #96362C 系笔误;RED_DEEP=#963C30 注记正确);槽位字色行在 hero_info_panel_view.gd:209-211 附近(:196-207 为字形创建区) |
|
|
||||||
| F10 | 成立(box 150×176:26 / 底座 box.y-18:417-419 / 名行基线 box.y-1.0:476) |
|
|
||||||
| F11 | 成立(九枚 preload 恰在 :21-29) |
|
|
||||||
| F12 | 成立(柜台四枚 64×64 / 状态九枚 32×32 / BCard 槽 56:421 / 头像 46×48 vs 50×52 槽) |
|
|
||||||
| F13 | 成立(button min_w=216:258) |
|
|
||||||
| F14 | 成立(_register_modal 在 presentation/main.gd:346-351,set_anchors_and_offsets_preset ✓) |
|
|
||||||
| F15 | 成立且已复核(md5 与任务书一致) |
|
|
||||||
| 补 | INK_LABEL 常量定义在 ui_kit.gd:19(任务书 :212 系 label() 内回落应用行,两处均实存) |
|
|
||||||
|
|
||||||
### 七点对比度实机复算(替换 demo 读数——背景取实机直背常量,WCAG 相对亮度法)
|
|
||||||
|
|
||||||
**总发现:实机直背与 demo 反向的两处(意图徽标/槽位字),任务书 N1 表的修法方向在实机会劣化;RAP 一处实机本已合规。** 按「§3 收项一律以 T0 复核后的实况为准再落笔」与三层优先级栈②(§7.2 ≥4.5 无区域例外),修法落点以本表为准,偏差逐条留痕:
|
|
||||||
|
|
||||||
| # | 点 | 实机对比对(fg on bg) | 现值 | 判 | T0 复核后落法 |
|
|
||||||
|---|---|---|---|---|---|
|
|
||||||
| 1/2 | 站桩血数(敌我同色同分支) | 白 α.95 on 血条填充 #699CE8 | **2.67** | FAIL | 修法成立:中央垫 `HP_BAR_BACK #28221C` 素牌后 = **14.29 ✓**(任务书 12.29 系不透明白口径;实机 α.95 混成后 14.29 更优)。字号 11px 维持,随 P11 豁免条款落文 |
|
|
||||||
| 3 | 意图 atk ⚔ | RED_MINE #962C24 on 舞台底 STAGE_BG #3E342A | **1.55** | FAIL | **demo 修法(RED_DEEP 降一档)在实机暗底反向(1.73 更劣)**。改为 §4.1 色牌原则同 N1-1:徽标垫 `PANEL_DATA #E2D2B6` 素牌——RED_MINE on 牌 = **5.27 ✓**(零换墨);若按任务书换 RED_DEEP on 牌 = 4.73 亦合规(T2 取舍,推荐零换墨) |
|
|
||||||
| 4 | 意图 buf ✦ | HERO_BLUE #2E86DE on #3E342A | **3.23** | FAIL | 垫牌(同上)+ 墨换任务书值 **#1E5A96**(HERO_BLUE 同族深档,命名随 CONTACT_GLOW_DEEP 规则):on 牌 = **4.78 ✓**(不垫牌单换墨在暗底 = 1.71 反向,否) |
|
|
||||||
| 5 | C区槽「已用」 | STONE_FAINT #8C7C64 on 石皮均值 #D6C7AD | **2.44** | FAIL | **demo 修法(提档 WARM_FAINT)在实机亮皮反向(1.17)**。实机石皮=亮底,改双向**深化**墨色:候选 INK_LABEL(on 石皮 9.30 ✓);已用/不可用两态 T2 定值(Q6 乙:不新增通道,只调墨) |
|
|
||||||
| 6 | C区槽「空/不可用」 | STONE #786E62 on #D6C7AD | **3.00** | FAIL | 同上深化(≥4.5 定值 T2 落) |
|
|
||||||
| 7 | RAP 标签 | INK_LABEL #2E2218 on ap_bar 面板 PANEL_DATA #E2D2B6 | **10.40** | **合规** | **demo 的 4.10 FAIL 在实机不存在**;任务书修法(显式 CONTACT_GLOW_DEEP)作废——实机套用会跌至 1.31。落法=零改动(显式传色可选作确定性加固,T2 顺手则为 INK_LABEL 显式化,不改值) |
|
|
||||||
| 表外 | 意图 debuff ☠ | DEBUFF_PURPLE #7A4294 | on 牌 4.66 | 垫牌后 ✓ | 随 #3 垫牌自动达标,零换墨 |
|
|
||||||
| 表外 | 意图 charge | GOLD_DEEP #B07A14 | on 牌 2.50 | FAIL | 垫牌后仍不足——需深化金墨档(T2 定值 ≥4.5,新常量入 ui_kit,命名同族规则) |
|
|
||||||
|
|
||||||
### 交集核对
|
|
||||||
|
|
||||||
`git worktree list` 仅本 worktree 在飞;迭代 15② 奇物批已落籍 master(3c6f2c9),其文件面(feat_*/curio_* 词族、数据表、adventure/level_runner)与本批呈现层面(ui_kit/standee/status_slot_row/hero_info/ap_bar/bonus_pick/shop_overlay/board_cell_unit/level_map_screen/探针)**零交集** → 「不触碰 15② 在飞文件」停机点按开工令自动解除,核对零命中。
|
|
||||||
|
|
||||||
### T0 结论
|
|
||||||
|
|
||||||
基线回填完毕,无停机条件触发。**T2 实施修正案**(相对任务书 §3-N1):①意图徽标四处=垫 PANEL_DATA 素牌,atk 零换墨/buf 换 #1E5A96/charge 需深化金墨/debuff 自动达标;②槽位字两态=深化墨色(非 demo 的提亮);③RAP=零改动。其余收项(垫牌几何 12.29→14.29 口径、字号豁免条款落文等)按任务书+白名单执行。
|
|
||||||
|
|
||||||
## T2-T8 · 实施落籍(提交链 85ea024→e5427af,十提交 32 文件)
|
|
||||||
|
|
||||||
| 卡 | 提交 | 落点 |
|
|
||||||
|---|---|---|
|
|
||||||
| T1 | a55a302 | status_slot_row 九枚 preload→load_tex(呈现层素材 preload=0) |
|
|
||||||
| T2 | b38ae07 | N1 七处修法(T0 修正案落码)+ui_contrast_probe 入 probe_gate 默认段+§7.4 豁免条款 |
|
|
||||||
| T3 | 4e7aa83 | N2 站桩纵向余量(STANDEE_FOOT_MARGIN=12)+ui_struct_probe ⑥standee 断言族 |
|
|
||||||
| T4a | af5f317 | N4a 裸色全量收 ui_kit(25 处/10 文件)+N4c TG_* 五族+tg_band() 分族+商店货架分族 |
|
|
||||||
| T4b | b26e3fb | P7 乙五 token 向 demo 值+§7.2 五件对齐注记 |
|
|
||||||
| T5 | 2f74da8 | P4 乙切片 16+Q1 丙 margin clamp+P5 甲 RADIUS_OBJECT=5 收敛(26 处归一)+§7.1 两条注记 |
|
|
||||||
| T6 | e0fd7cb | P3 甲 FS_* 六档+全库 107 位点归档+P11 豁免清单落文 |
|
|
||||||
| T7 | 1b2ecf6 | P6 甲缩放纪律+P10 乙记忆态纹理灰罩+§8.2 例外登记+§6.5 条款换代 |
|
|
||||||
| T8 | e5427af | P8 甲 bcard 卡顶 Bayer 抖动带试点(DitherBand 4×4/2px 元胞) |
|
|
||||||
|
|
||||||
## N5 · 面板皮消费面造册(T5 判定留痕,代拍板「不强制补皮」)
|
|
||||||
|
|
||||||
**穿戏服 9 面**(panel_skinned,全部容器/分组框判据 ✓):ui_assembler:202 帮助板 / battle_end_overlay:33 结算容器 / battle_stage_view:93 叙事板 / confirm_dialog:19 确认框 / hero_info_panel_view:34 C区主面板 / legend_overlay:31 图例 / node_overlay:17 节点框 / settings_overlay:39 设置容器 / ui_kit BCard 工厂(商店+三选一卡)。切片 16 后 content margin 全部经工厂 clamp ≥16(原 <16 的 7 面自动抬平,调用点零改)。
|
|
||||||
**素面维持零补皮**(§7.1「数据素面」判据):AP 条/状态槽两档/槽 chips/地图底栏三框/tooltip/回合横幅/棋盘提示条/数字色牌——直角素面原样。
|
|
||||||
|
|
||||||
## T9 · 重闸读数(全绿,与 T0 基线逐项对齐)
|
|
||||||
|
|
||||||
| 闸 | 读数 | 对照基线 |
|
|
||||||
|---|---|---|
|
|
||||||
| 冒烟 | **782/0** | 同基线(断言数持平——纯呈现批零逻辑面) |
|
|
||||||
| run_all | **16 套全绿** | 同基线 |
|
|
||||||
| ui_input_probe | 16 断言 PASS | 同 |
|
|
||||||
| ui_struct_probe | 全屏零红(含新增⑥standee 族) | +1 断言族 |
|
|
||||||
| ui_contrast_probe | 11 对测点全绿+裸色 0+preload 0 | 新增段 |
|
|
||||||
| ui_click_probe | done=true 问题=0(预算 15981) | 同 |
|
|
||||||
| ui_layout_probe | exit=0 | 同 |
|
|
||||||
| gdd_lint | 2 文件不通过(06/07 表格占比——既有) | 零新增 ✓ |
|
|
||||||
| doc_link_audit | 死链 4=基线 2(奇物.md×2 既有)+环境假红 2(.zcode/plans+archive 不入库) | 零新增 ✓ |
|
|
||||||
| doc_term_audit | 218 命中/3 疑似(既有) | 零新增 ✓ |
|
|
||||||
| 熵增闸 | design/diagrams 越界 ×1(既有在册归 archify 批) | 零新增 ✓ |
|
|
||||||
| MC | **零跑**(纯呈现批:核心/数据层 diff=0 实证、零 RNG 消费变化——两入口铁规+任务书 §7) | — |
|
|
||||||
| 素材红线 | game/assets/art 与 artwork/ 零触碰(git status 空) | ✓ |
|
|
||||||
|
|
||||||
## T10 · 人闸材料包
|
|
||||||
|
|
||||||
`design/qa/iter16-ui-human-gate-checklist-2026-10-06.md`(A 整屏样张闸四项〔Q2 乙并入〕+B 八屏对比+C 本批专项十项+D 减动效+E 代拍板追认单八项+F 机检佐证)。board_shot 系窗口化探针按 probe_gate 纪律不入 headless 闸,随人闸实机执行。
|
|
||||||
|
|
||||||
## 估时对照
|
|
||||||
|
|
||||||
任务书预算 T0-T11≈6.9d(超软盒 3 日知情预挂)→ **实际单会话一次跑完**(沿迭代 13/15 先例;段一切分预案未触发——三段并一次合并=Q7 甲)。超支点无;T6 位点规模超起草口径(107 vs 26)经机检化扫批吸收。
|
|
||||||
|
|
||||||
## 偏差与呈报汇总(本批对任务书的全部修正,均系 §3「以 T0 复核实况为准」授权面)
|
|
||||||
|
|
||||||
1. **N1 七点修法三处改向**:意图徽标四处=垫 PANEL_DATA 素牌(demo 的「换墨降档」在实机暗底反向);槽位字两态=深化墨色(demo 的「提亮 WARM_FAINT」在实机亮皮反向);RAP=零改动(实机 10.40 已合规)。血数垫牌口径 12.29→14.29(α.95 混成实算)。
|
|
||||||
2. **N4a 普查漏记**:裸 Color8 实数 25 处/10 文件(任务书 5 处)——已全量原值搬运收 ui_kit,白名单清零。
|
|
||||||
3. **字号普查增长**:UiKit.label 位点 78→107(15②后新增面);归档映射=就近档(40→34/26→24/22→24/20→18/13→14/11→12)。
|
|
||||||
4. **TG_AOE 归族判定**:blast/aoe→TG_AOE(#E25676;消费面=reward.tres 现成 clear_blast/spark_aoe),magic 独留紫——卡带观感变化=爆裂族紫转粉,人闸 E5 可推翻。
|
|
||||||
5. **新增常量八枚**:HERO_BLUE_DEEP/GOLD_INK/STONE_DEEP(N1)+TG_* 五族(N4c)+RADIUS_OBJECT/PANEL_SLICE/FS_* 六档(P5/P4/P3)+N4a 搬运 14 枚——全部 ui_kit 单点。
|
|
||||||
6. **⑥standee 断言语义**:「⊆舞台+底缘 ≥8px」(全边 8px 内缩过严——容器左右边距 6px 既有)。
|
|
||||||
7. **T6 扫批事故一起**:settlement_fx span 错位写入两处,当批发现当批修复(diff 复核全净)。
|
|
||||||
8. **批外残余登记**(06 新条):站桩名行四墨(WARM_FAINT/HERO_BLUE/GOLD_DEEP/WARM 对舞台底)+敌顺位徽标 GOLD_DEEP+RAP 反馈墨 STONE_FAINT 等邻接文字位实测 <4.5:1——非任务书七点范围,未动,随 06 待后批。
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
# 人闸目检清单:UI 设计对齐批(迭代 16)· 2026-10-06
|
|
||||||
|
|
||||||
> 执行=用户实机(T10 人闸)。启动:Godot 打开 `game/project.godot` 运行即可;逐项勾选,不过项随批登记返工。
|
|
||||||
> 对照基线:demo 原型 v2.1 md5 `78ebbee0…`(主区 `artwork/ui-redesign-2026-10-04/src/ui-prototype.html`);本批起点 a39d044 → 头 e5427af(merge 后见 roadmap 行)。
|
|
||||||
|
|
||||||
## A · 整屏样张闸四项(Q2 乙——§1.4 并入,逐屏过)
|
|
||||||
|
|
||||||
- [ ] A1 文字对比 ≥4.5:1 抽测(重点=本批七处修法:站桩血数垫牌/意图徽标四色垫牌/C区槽两态/RAP 标签)
|
|
||||||
- [ ] A2 明度分层三档带(各屏底/板/字三层关系未被本批取值换代打破)
|
|
||||||
- [ ] A3 整屏焦点预算首焦唯一(各屏视觉主焦点仍唯一)
|
|
||||||
- [ ] A4 文字禁压纹理底(垫牌面:血数牌/意图牌在石皮上为素牌形态)
|
|
||||||
|
|
||||||
## B · 八屏对比走查(demo v2.1 为方向稿,逐屏与实机对看)
|
|
||||||
|
|
||||||
- [ ] B1 标题屏(主标题 40→34FS_H1/底座椭圆 17 保留/副题 16)
|
|
||||||
- [ ] B2 设置屏(警示文两处 INK_HINT 12→12/标题 24)
|
|
||||||
- [ ] B3 营地(柜台头带图标 20→32/柜台说明文 12/行板/钥石徽章/等级章字)
|
|
||||||
- [ ] B4 战斗屏(B 区舞台切片 16 石皮/站桩血数牌/意图徽标垫牌/状态槽 32px/回合横幅圆角 8→5)
|
|
||||||
- [ ] B5 关卡节点地图(底栏头像 46×48 定高随宽/组标 12px/记忆态新形)
|
|
||||||
- [ ] B6 战斗结算(金印 200 保留/明细带字级)
|
|
||||||
- [ ] B7 奖励三选一(卡片抖动色带/标题 22→24/脚注 12)
|
|
||||||
- [ ] B8 商店(货架卡分族色带=attack→通用金·heal/hp→绿·blast/aoe→#E25676/图标 40px/价签 24)
|
|
||||||
|
|
||||||
## C · 本批专项(改动面逐处)
|
|
||||||
|
|
||||||
- [ ] C1 站桩:血数深牌可读、名行不再贴盒底(基线上移 13px 目视不悬空)、内容不出 252 舞台(探针⑥已绿,实机复核)
|
|
||||||
- [ ] C2 棋盘记忆态(P10 乙新形):区外已开格=地板纹理+灰罩,数字灰墨可读;与全黑未开格/灯光区活格三态可辨;暗房档抽检
|
|
||||||
- [ ] C3 卡片抖动色带(P8 试点):三选一/商店卡顶=像素台阶感抖动带(非平滑渐变)——**观感不佳的回退案=band 段还原平涂条(DitherBand→ColorRect 6px 一处改)**
|
|
||||||
- [ ] C4 图标缩放纪律:B 区状态槽 32px 不挤槽体/营地头带 32px 不压带高/BCard 40px 居中/地图头像无拉伸变形
|
|
||||||
- [ ] C5 字号档位全扫后观感:重点=主标题 40→34、屏题 26→24、营地题 22→24、暴击演算 32→34/26→24——有无「变小失势/变大失稳」单点
|
|
||||||
- [ ] C6 panel 切片 16+margin clamp:石皮四角变大后有无纹理压缩感;7 处内容边距抬升后有无局促(营地 372 列/图例/设置/确认框)
|
|
||||||
- [ ] C7 圆角收敛 5px:所有容器/按钮/开关/横幅同率;数据框仍直角;例外三件(底座 17/金印 200/脉冲环 100)原样
|
|
||||||
- [ ] C8 五 token 换代(Δ≤6/255 应不可辨):数据板/板线/状态槽底/血条底/营地头带——并排看新旧截图如有可辨差异即报
|
|
||||||
- [ ] C9 RAP 标签显式墨(视觉应零变化)
|
|
||||||
- [ ] C10 1920×1080 档复验(1.35× 例外档——布局/切片/抖动带在该档不劣化)
|
|
||||||
|
|
||||||
## D · 减动效与环境
|
|
||||||
|
|
||||||
- [ ] D1 减动效开关双态(本批零新动效——开关行为应与批前一致;抖动带/灰罩均静态)
|
|
||||||
- [ ] D2 全屏/窗口切换后 UI 不破(切片/margin 改动面)
|
|
||||||
|
|
||||||
## E · 代拍板追认单(2026-10-06 白名单内已落,目检可推翻)
|
|
||||||
|
|
||||||
| # | 项 | 已落值 | 推翻改法 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| E1 | RADIUS_OBJECT | 5 | 嫌大→ui_kit 常量改 4 一处 |
|
|
||||||
| E2 | 槽「已用」墨 STONE_DEEP | #554D41 | 提/降一档随手感 |
|
|
||||||
| E3 | 蓄力墨 GOLD_INK | #74500B | 同上 |
|
|
||||||
| E4 | 增益墨 HERO_BLUE_DEEP | #1E5A96 | 同上 |
|
|
||||||
| E5 | TG_AOE 归族(blast/aoe→#E25676) | tg_band() | 若嫌爆裂弃紫转粉违和→blast 行移回 TG_MAGIC 一行 |
|
|
||||||
| E6 | 血数牌宽 = 字宽+8px | 白名单 8 | 挤/松→6 或 10 一处 |
|
|
||||||
| E7 | 抖动带 4×4/2px 元胞/8px 高 | 实现细节 | 嫌粗→8×8 或 1px 元胞 |
|
|
||||||
| E8 | 意图徽标垫 PANEL_DATA 素牌 | T0 修法 | 嫌亮牌突兀→改暗牌+换亮墨(另行呈报) |
|
|
||||||
|
|
||||||
## F · 机检佐证(已全绿,实机只抽核)
|
|
||||||
|
|
||||||
冒烟 782/0 · run_all 16 套全绿 · ui_input 16 断言/ui_struct 全屏零红(含⑥standee 新族)/ui_contrast 11 对测点+裸色 0+preload 0/ui_click done=true 问题=0/ui_layout exit0 · doc 三闸与熵增闸=基线零新增 · 素材零触碰(game/assets/art 与 artwork/ 未改)· MC 零跑(纯呈现批,核心/数据层零 diff)
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
# 出口报告:生涯界面设计立项(迭代 17 卡④设计批)
|
|
||||||
|
|
||||||
> 批次:纯设计批(零代码、零数据面、零测试执行——两入口铁规:非 loop 实施批且用户未点名)。
|
|
||||||
> worktree:`g-plan2-iter17-career`(分支 `iter17-career-20261006`,基点 = master fc4dbde)。
|
|
||||||
> 任务书:`design/research/任务书-生涯界面设计立项-2026-10-05.md`(v1.1 零待裁点,U0 已发)。
|
|
||||||
> 本报告按「吸收即死」纪律属中间文档,寿命 = 迭代寿命;五条判定与 F1-F10 复核结论已同步写进各正式文档(生涯.md / 06 / roadmap)。
|
|
||||||
|
|
||||||
## 一、完成定义五条逐条判定(任务书 §1.2)
|
|
||||||
|
|
||||||
| # | 判定项 | 判定 | 依据 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 提纲成文 | ✅ | `design/gdd/systems/跨局循环/生涯.md` v0.1(P0 甲裁定的载体,状态=范围草案),五节齐:一、信息架构;二、承载内容清单;三、与既有界面的关系;四、分期实装建议;五、待裁点 |
|
|
||||||
| 2 | 事实对齐 | ✅ | §2 事实表 F1-F10 逐条代码级复核全绿(见本报告 §二);提纲中每句现状描述带 file:line 指证(R1) |
|
|
||||||
| 3 | 裁点齐备 | ✅ | P0-P5 已裁结论全部落文对应节;本批新发现待裁点一项(P6 营地最近冒险条带去留),三案全列含淘汰依据、有明确建议案;全文无「待定」悬空 |
|
|
||||||
| 4 | 零实装 | ✅ | diff 仅含:新建生涯.md、02-系统清单.md 三行(树行/代号行/版本行)、06 状态行、roadmap 卡④行、active.md、本报告;`game/` 零改动、存档零改动、零测试执行 |
|
|
||||||
| 5 | 人闸 | ✅(待用户执行) | 06 状态行已更新为「设计提纲已成文待评审」;**人闸 = 用户评审提纲**(评审时随裁 P6) |
|
|
||||||
|
|
||||||
## 二、T0 事实复核 F1-F10(2026-10-06 静态阅读,行号以实核为准)
|
|
||||||
|
|
||||||
| # | 事实 | 结论 | 实核证据(file:line) |
|
|
||||||
|---|---|---|---|
|
|
||||||
| F1 | 冒险中回看已退役 | ✅ 绿 | `battle_end_overlay.gd:9`(signal continue_pressed,注记 review_pressed 退役)、`:106`(明细回看钮退役注记)、`:90` 现为 GP 账目行 add_child——任务书 v1.0 的 :90 漂移勘误属实;`battle_log_view.gd:47`(「上轮摘要(回看归「生涯」」提示)、`:115`(带点击回看入口退役注记);`ui_assembler.gd:67`(明细回看 overlay 退役注记) |
|
|
||||||
| F2 | settlement_review_overlay.gd 在盘 | ✅ 绿 | `game/presentation/views/settlement_review_overlay.gd` 在盘(含 .uid);全仓无实例化引用——仅 `ui_kit.gd:356` 样式注记提及「settlement_review 同款」;无 .tscn 引用 |
|
|
||||||
| F3 | 跨局持久面 = save v5 meta 域 | ✅ 绿 | `save_manager.gd:39`(SAVE_FORMAT_VERSION=5 版本链注记)、meta 默认域键集 `:106-117`(keystone_balance/forge_levels/item_unlocks/level_clear_counts/boss_first_kill/boss_kill_count/attunement_equipped/attune_refresh_level/tree_nodes/fork_sides/recent_summaries/first_adventure_done)+ 访问器面 :202-:316 |
|
|
||||||
| F4 | recent_summaries 现役 + 三件真实缺口 | ✅ 绿 | `save_manager.gd:40` SUMMARY_CAP=10;`:316` 值拷贝访问器;`:325-338` apply_adventure_summary(push_front + cap 截断 + boss_drops 副本 :334);`meta_progression.gd:129` settle_adventure 经 `:133` 归档(:125 注记)。缺口①cap 扩容、②用时零采集点(game/core grep elapsed/ticks/duration/Time 零命中;摘要字段集 `adventure_runner.gd:1007-1018` 无用时)、③总局数/通关局数无 lifetime 域(first_adventure_done 布尔 :117、level_clear_counts 按关 :109)——三条全实证 |
|
|
||||||
| F5 | 当局结算呈现仍在 | ✅ 绿 | `main.gd:537` `_on_adventure_finished` 收束当下呈现摘要五件事+钥石入账明细;终局面三行账 `battle_end_overlay.gd:118-129`(open_victory 账行装配) |
|
|
||||||
| F6 | 跨局汇总数据源现状 | ✅ 绿 | 各关通关次数 `save_manager.gd:238`、Boss 首杀/总击杀 :242/:250、钥石余额 :202(累计收支无流水——:206/:211 只动余额)、锻造/工坊/天赋树访问器 :218/:230/:256;总局数/通关局数两格无数据源(同 F4③) |
|
|
||||||
| F7 | 图鉴承接候选内容 | ✅ 绿 | 06:192「敌方技能图鉴 / 学习呈现」(P2,见过→认得→记谱);奖励格图鉴柜台空置——06:244(随配比预设批挂起冻结)、`camp_overlay_view.gd:121`(柜台三框在)、`:128`(下段天赋树行占用注记) |
|
|
||||||
| F8 | 相邻界面分工现状 | ✅ 绿 | 营地 `camp_overlay_view.gd:431` `_rebuild_recent()`、`:442` 行模板「完成/放弃/失败 · 通关 N 关 · 钥石 +N · 种子 N」(无截断上限)、`camp_shop_presenter.gd:85` recent 投影;主菜单按钮组 `ui_assembler.gd:104-160`(营地 :150);设置面 :152;暂停层 = 迭代 17 卡③并行批(本 worktree 基点未含其实码,提纲按任务书口径引用) |
|
|
||||||
| F9 | 06 条目原文口径 | ✅ 绿 | 06:400「新「生涯」界面(跨局汇总/历史冒险回看/图鉴承接)」三段骨架原文在册 |
|
|
||||||
| F10 | 阶段语境 | ✅ 绿 | 06 教学引导节各条状态行 Beta 阶段注记(:375/:383/:391,2026-10-04 拍板改排);生涯条目(06:396-404)无阶段标注——提纲分期建议以候选窗口作答 |
|
|
||||||
|
|
||||||
**差异记录(两处,均不阻塞)**:
|
|
||||||
|
|
||||||
1. `ui_assembler.gd` 实际路径为 `game/presentation/ui_assembler.gd`(任务书 F1 只写文件名未带路径,无歧义;提纲已用全路径引证)。
|
|
||||||
2. 复核顺带发现一处**既有**登记滞后(非本批引入、不属本批范围):`design/registry/entities.yaml` 存档条目 version 注记仍写「SAVE_FORMAT_VERSION=4 / v1→v4 迁移链」,代码已至 v5(`save_manager.gd:39`,v5=天赋树域,迭代 12);domains 行的 meta 域九件明列与 recent_summaries cap 10 记载仍准确。属 registry 与代码的同步欠账,owner 文档 = 存档序列化.md,建议归后续文档对齐批或 doc 一致性检查呈报——本批 diff 范围不含 registry,未动。
|
|
||||||
|
|
||||||
## 三、交付物与落点
|
|
||||||
|
|
||||||
| 交付物 | 落点 | 状态 |
|
|
||||||
|---|---|---|
|
|
||||||
| 设计提纲(本批主体) | `design/gdd/systems/跨局循环/生涯.md` v0.1 | 范围草案,待用户评审 |
|
|
||||||
| 根索引同步 | `design/gdd/02-系统清单.md`(跨局循环树行 + 命名对照表 CAREER 行 + v1.12 版本行) | 已落 |
|
|
||||||
| 06 状态行 | `design/gdd/06-待办清单.md` 生涯条 →「设计提纲已成文待评审」 | 已落 |
|
|
||||||
| roadmap 卡④行 | `roadmap.md` 迭代 17 卡④ →「✅ 设计提纲已成文待用户评审……人闸=用户评审提纲」 | 已落 |
|
|
||||||
| 会话记录 | `active.md`(快照节追加 + 台账 379) | 已落 |
|
|
||||||
|
|
||||||
## 四、提交哈希清单
|
|
||||||
|
|
||||||
| 提交 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 10df8ba | T1:生涯.md v0.1 成文 + 02 根索引三处(树行/CAREER 行/v1.12) |
|
|
||||||
| (本提交) | T2 加批次收尾:06 状态行、roadmap 卡④行、active.md、本报告 |
|
|
||||||
|
|
||||||
终态 = worktree 内全部提交完成,**未合并、未 push**(合并落回 master 由用户/编排会话执行)。
|
|
||||||
|
|
||||||
## 五、遗留与移交
|
|
||||||
|
|
||||||
1. **人闸(唯一)**:用户评审设计提纲 `design/gdd/systems/跨局循环/生涯.md`,评审时随裁新发现的 P6(营地底栏「最近冒险」条带去留——建议甲:期二时撤下归生涯)。评审通过后期一/二/三实装批另行立项。
|
|
||||||
2. 实装批前置义务已在提纲 §四登记(非本批工作):期一=对齐迭代 16 UI 基线 + save v6 两个终身计数域;期二=N 终值读数呈报(20/50/维持 10 三选一)与用时埋点口径呈报;期三=「见过」记账面 schema 义务。
|
|
||||||
3. registry 存档条目 version 注记滞后(§二差异记录 2)——移交后续文档对齐批,非本批范围。
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
# 出口报告——内容数据驱动扩展批(迭代 17 卡⓪,2026-10-06)
|
|
||||||
|
|
||||||
状态:**批内全部提交完成、六闸全绿、终态=worktree(iter17-dd-20261006 分支)全部提交,待用户合并落 master**。
|
|
||||||
执行事实源:[任务书-内容数据驱动扩展批-2026-10-06](../research/任务书-内容数据驱动扩展批-2026-10-06.md)(v1.1);设计权威:[研究-内容数据驱动扩展架构-2026-10-06](../research/研究-内容数据驱动扩展架构-2026-10-06.md)。
|
|
||||||
执行形态:前任 subagent 完成 T0-T2 后因额度中断,续跑 subagent 接手 T3 断点(三个脏文件半成品)收口并完成 T4-T7。
|
|
||||||
|
|
||||||
## 一、提交清单(worktree 内全部提交,按卡)
|
|
||||||
|
|
||||||
| 卡 | 提交 | 内容 |
|
|
||||||
|---|---|---|
|
|
||||||
| T1(前任) | `7d157b3` | 效果引擎框架:事件发布订阅解释器+16 发射点埋点+组合规则六族+计数器账本 |
|
|
||||||
| T2(前任) | `225765f` | 词汇表落码:feats/treasure 两表 trigger 订阅形态 schema 换代+护栏迁移 |
|
|
||||||
| T3 | `e28a6cb` | 专长迁移:27 行 triggers 全量生效+旧 23 挂点枚举消亡+_feat_flags_for 退役+消费点拆除(伤害控制器 13 处+编排器全部旗面)+文案入表(专长卡 desc)+断言面随迁(冒烟 ④-⑧ 全量改写) |
|
|
||||||
| T4+T5 | `a33ddaf` | 秘宝六件迁移(淬毒/偏运/晨令/惊巢/殉爆/掘进蓄能受理闸)+按 id 特判清零+pick_refresh kind 分发+curio 卡片文案入表;令牌兑付 match 收敛进效果类型路由表+树规则键同面收口 |
|
|
||||||
| T7 | 本批终提交 | 文档正主换代(奇物.md v2.8/秘宝.md v1.0/敌人系统.md v0.14+registry 两件+06 状态收口+roadmap 卡⓪行)+本报告 |
|
|
||||||
|
|
||||||
T0 断点核查记录:前任已留 pre 锚(见 §三),T0 三查其余项随续跑开工复读完成。
|
|
||||||
|
|
||||||
## 二、闸读数(T6 回归闸全绿)
|
|
||||||
|
|
||||||
| 闸 | 读数 | 结论 |
|
|
||||||
|---|---|---|
|
|
||||||
| 冒烟(三闸) | **800 项检查,0 项失败**,退出码 0,无 SCRIPT ERROR | 绿(断言数 783→800:T3 断言面随迁净增 17 项,漂移追认随 T3 commit 留痕) |
|
|
||||||
| 单元(run_all) | **17 套全绿** | 绿 |
|
|
||||||
| 探针闸(probe_gate --click) | ui_input/ui_struct/ui_contrast/click 四段全 PASS,批末残留 Godot=0 | 绿(本批触碰呈现层——battle_narrator/curio_interact 文案面,故带 click) |
|
|
||||||
| MC 二档对拍 | 见 §三 | 绿——逐位一致 |
|
|
||||||
| 确定性复放 | 同种子改前/改后两次采集逐位一致(40 局全对) | 绿(强于「同码两遍」口径) |
|
|
||||||
| doc 三闸 | doc_link_audit 过(exit 0);doc_term_audit 过(exit 0);gdd_lint 2 处失败=**基线既有**(06-待办清单/07-体验验证清单结构性指标,stash 对比实证改前改后同为 2 处零新增) | 绿(零新增) |
|
|
||||||
| 熵增闸(repo_structure_audit) | 1 处违例=design/diagrams 子目录越界——**基线既有**(前批「GDD系统架构总图批」00712d5 产物,非本批引入;归该批主自证或后续清理) | 绿(零新增) |
|
|
||||||
|
|
||||||
## 三、MC 锚与对拍结论(二档合规)
|
|
||||||
|
|
||||||
- 判据口径:契约 2 两套(确定性复放与冒烟=**逐位一致**;MC 统计量=**成型画像同带**,正主=design/qa/m4iter12-t7-batch1-readings-2026-10-04.md)。
|
|
||||||
- 改前锚(前任 T0 采集,留盘未补跑):`sim-data/runsum_iter17dd_pre_off_n20_20261006.jsonl` / `runsum_iter17dd_pre_formed_n20_20261006.jsonl`(seed0=83000、N=20/档、normal 档、route=min、attune=off、off/formed 同种子配对;formed=七流派各 2 件档一成型注入画像——14 件全部系本批迁移行)。
|
|
||||||
- 改后锚(T6 采集):`sim-data/runsum_iter17dd_post_off_n20_20261006.jsonl` / `runsum_iter17dd_post_formed_n20_20261006.jsonl`(同 seed0 同口径;新锚去前缀纯 JSONL 按种子升序)。
|
|
||||||
- **结论:40 局(2×20)同种子逐位一致**——每局 RUNSUM 全字段(通关数/承伤/踩雷/旗经济/资源事件/钥匙石/逐战上限序列等 33 字段)改前改后零差。统计量同带判据自动满足(逐位一致蕴含同带):L1 通关率 off 20%(4/20)、formed 80%(16/20),与改前逐位同值。
|
|
||||||
- 档位合规:总量 40(每档 20)=二档上限贴边;另有 T3 段末 S1 预检 2×5 局(三档只测不判,未留锚)——S1 停机点未触发。
|
|
||||||
|
|
||||||
## 四、代拍板记录(任务书 §八白名单四项+呈报不停机级,全部 commit 留痕)
|
|
||||||
> **✅ 追认(2026-10-07 用户裁)**:八项全部追认——#1-#6/#8 系实现与机检面即日追认;#7 两件秘宝卡新文案为可见面,落法追认、措辞待实机抽查确认。
|
|
||||||
|
|
||||||
1. **fact 查询面落法**:`has` 算子=在场判定(value 缺省=非空;value 给定=数组包含)——地形伤/伤害型地形四行订阅的查询面(T3 commit)。
|
|
||||||
2. **fact 查询面落法**:perfect_defense「全中」装不进封闭 9 项事实——when 落 flags_count≥1 保守判定,全中闸=flag_settle 发射点施加面承载(禁私开 fact 停机点纪律保持;T3 commit)。
|
|
||||||
3. **事件载荷字段**:attack_commit 发射点从 resolve 内移至开单入口(任务书 §3.1 定稿位),命中随单据 context 携带;damage_taken 补 terrain_kind、flag_hit 改 terrain_kind=邻接伤害型变异集(T3/T4 commit)。
|
|
||||||
4. **发射点微调(±1)**:round_start 发射位前移至行动经济轮切换之前(树规则 grant_ap queue 当轮兑现=先手压制首轮语义锚);attack_commit 单发射点、命中两处消费(编排器段序承载连珠矢开单位/控制器管线算术承载其余施加面——dispatch 纯读零副作用)。
|
|
||||||
5. **效果类型落法对拍注记(映射表五处语义修正的随批追加,行为等价优先)**:猎巢人/矿工的执拗=必中附加通道(映射表标 modify_ticket/attack_bonus 与现状不符,落 add_ticket_rider per 载荷);整备军备双效果两行订阅;厚积薄发=满层持续状态(非沿触发);荆棘编织者=伤害兑付位第二份产出(非 ×2 乘区);完美布防=旗伤单值倍增(非 yield 乘区)——全部随 .tres 尾注+commit 留痕。
|
|
||||||
6. **冒烟断言数漂移追认**:783→800(断言面随迁净增 17 项)。
|
|
||||||
7. **文案微调**:掘进蓄能/失义件秘宝卡补实际摘要(原 kind 硬编码面无文案);其余 desc 措辞与旧映射逐字一致。
|
|
||||||
8. **效果类型计数**:24 型(任务书标题 23 系笔误——T1 前任已代拍留痕,沿用)。
|
|
||||||
|
|
||||||
## 五、文档正主换代清单(T7)
|
|
||||||
|
|
||||||
- 奇物.md **v2.8**:专长效果声明换代(挂点→订阅行)五处+版本行;事实源表 feats.tres 行结构换代。
|
|
||||||
- 秘宝.md **v1.0**:效果声明形态节(被动件订阅行+主动件 kind 分发+掘进蓄能受理闸数据化+desc 文案表值化)+版本行。
|
|
||||||
- 敌人系统.md **v0.14**:半血解锁判定点=通用事件 enemy_hp_threshold 发射点登记(非 Boss 专属,零行为变化)+版本行。
|
|
||||||
- registry/entities.yaml:专长 data_sources 换代+effect_declaration 新条(四词表封闭/组合规则/遍历序/重建时机)。
|
|
||||||
- registry/architecture.yaml:core_decisions 新条 effect_engine_interpreter(ADR-0011 候选)。
|
|
||||||
- 06-待办清单:数据驱动批状态=已实施完成收口(提交号+闸读数+遗留两项)。
|
|
||||||
- roadmap:迭代 17 卡⓪行换代(状态=已实施完成)。
|
|
||||||
|
|
||||||
## 六、遗留人闸项(呈报不停机级,均为显式拍板请求非缺陷)
|
|
||||||
|
|
||||||
1. **掘进蓄能积点模判定留编排器侧**:use_treasure 受理闸已数据化(treasure_used counter_spend 订阅),但「每 charge_n 安全格积 1 点」的模判定留在战斗编排器授予段——「先增后判」在发射点施加架构下无法行内表达(when 于 dispatch 预评估,先增后判需引擎内联过账=会破坏矿脉直觉连击的施加序等价)。行为与迁移前逐位一致(charge_n 读行零字面量);若要求彻底行内化,需效果引擎增设「计数器种子/内联过账」机制,归后续词汇表扩展批裁决。
|
|
||||||
2. **主动件 kind 词族全量 rename 不随批**:新词(reveal_tiles/preview/grant_ap/remove_mines/refresh_pick)已在闭集与旧词共存(T2),本批只完成 pick_refresh kind 分发合流;mine_reveal→reveal_tiles 等全词族 rename 波及库存/呈现标记/单测约 15 处零行为收益,显式不在本批(出口呈报,归后续清理批或随批裁决)。
|
|
||||||
3. **实机目检归用户**(批次工作流第 12 步):呈现面改动=专长卡与秘宝卡文案源(desc 直读,措辞逐字迁移)——建议实机抽查一张专长卡+一张秘宝卡。
|
|
||||||
|
|
||||||
## 七、风险与边界声明
|
|
||||||
|
|
||||||
- 存档零触碰:存档键/格式/断点结构一字未改(持有集/装备存 id 不变,换的只是解释方式)。
|
|
||||||
- 护栏全保留:四词表封闭校验、行键白名单、悬空引用致命、零裸 flat 禁令、流派扫雷触发铁律(MINE_EVENTS 同义形态)全部以新形态延续;本批新增封闭面=when value_from 悬空校验。
|
|
||||||
- 主区零直改:全部改动在 worktree iter17-dd-20261006;并行在飞三线(iter17-pause 卡③/standee-tier/uialign)未触碰。
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
# L3 停机报告——敌人表行集多行批改前锚丢失(迭代 17 卡①,2026-10-07)
|
|
||||||
|
|
||||||
状态:**L3 停机**。命中时机 = T0 开工序(MC 锚开工前核验步);本 worktree(g-plan2-iter17-enemy,分支 iter17-enemy-20261007,基点 e535436)**零改动、零提交、未跑任何测试**,等用户发令后恢复。
|
|
||||||
|
|
||||||
## 一、停机事实
|
|
||||||
|
|
||||||
任务书 MC 对拍方案预设「**改前锚免跑——直接复用卡⓪落盘的 post 锚**」两份文件:
|
|
||||||
|
|
||||||
- `sim-data/runsum_iter17dd_post_off_n20_20261006.jsonl`
|
|
||||||
- `sim-data/runsum_iter17dd_post_formed_n20_20261006.jsonl`
|
|
||||||
|
|
||||||
(出处:卡⓪出口报告 design/qa/iter17-datadrive-exit-report-2026-10-06.md §三;seed0=83000、每档 20 局。)
|
|
||||||
|
|
||||||
**执行会话全盘核查结论:两份文件已不存在于本机任何位置,不可恢复。**核查留痕(全部在本报告落档前现场执行):
|
|
||||||
|
|
||||||
| # | 核查动作 | 结果 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 本 worktree sim-data/ 列目录 | 只有随 git 走的三件(README.md / analyze.py / growth_model.py),无任何锚文件 |
|
|
||||||
| 2 | 主区 D:\code\g-plan2\sim-data\ 列目录 | 最新文件停在 2026-10-05(iter14 批锚),无任何 2026-10-06 件,无 iter17dd 字样 |
|
|
||||||
| 3 | `git worktree list` | 卡⓪ worktree(iter17-dd-20261006)已在收口时删除,现存仅主区+本 worktree+standee-tier+uialign 四处 |
|
|
||||||
| 4 | `find /d/code -name "runsum_iter17*"` 全盘搜 | 零命中 |
|
|
||||||
| 5 | `grep -rl "83000"`(主区 sim-data + design/qa) | 仅命中卡⓪出口报告 md 本身(文字记载),无任何数据文件含该种子 |
|
|
||||||
| 6 | 两仓内 `find -name "*.jsonl" -newermt 2026-10-06` | 零命中 |
|
|
||||||
|
|
||||||
**根因**:sim-data 数据件自 2026-10-03 起整目录不入 git(.gitignore 强制,语义=磁盘缓存层);卡⓪的两份改后锚只存在于卡⓪ worktree 的 sim-data/ 里,从未复制进主区;收口 `git worktree remove` 时随目录一并删除。锚文件无任何 git 历史可回溯(从未被提交过),也无回收站外副本。
|
|
||||||
|
|
||||||
## 二、等价性核验(任务书预设的那道闸——已通过,与本次停机无关)
|
|
||||||
|
|
||||||
任务书要求开工前先核验「game/ 下模拟相关路径在 6e7b5d1(卡⓪锚采样点)与 T0 基点 e535436 之间 diff 为空」。**核验通过**:`git diff 6e7b5d1..e535436 -- game/` 全部改动落在 presentation/(卡③暂停层)与 smoke 探针文件;`game/core/`、`game/data/` 与 MC 采集脚本 adventure_monte_carlo.gd 三者**零 diff**。若锚文件还在,复用是成立的。停机原因不是等价性破,而是**被复用的对象本身不存在**。
|
|
||||||
|
|
||||||
## 三、影响面
|
|
||||||
|
|
||||||
1. **MC 逐项对拍腿失据**:设计契约 R1(零内容期逐位零漂移)要求「冒烟 + MC 同种子逐项一致」。没有改前锚,T6 的改后锚没有比对对象,R1 的 MC 腿无法闭环。
|
|
||||||
2. **决策窗口在写码之前**:改前锚必须在本批任何代码改动落地前采集(T2 起改 game/ 即破坏「改前」码态)。所以这个问题**不能拖到 T6 再说**,必须现在停。
|
|
||||||
3. **恢复动作涉及随机数消耗预算**:补采改前锚 = 新增 40 局模拟(off/formed 各 20),使本批模拟总量从任务书字面预算「总量 40(二档贴边)」升到 80 局。消耗预算属用户保留裁决面(四档硬闸「超档停机呈报」+ 本任务书「禁静默自采」条款),执行会话不得自采。
|
|
||||||
|
|
||||||
## 四、备选方案(交用户裁决,含各自代价)
|
|
||||||
|
|
||||||
| 案 | 内容 | 代价 / 收益 |
|
|
||||||
|---|---|---|
|
|
||||||
| **甲(推荐)** | 批准在 T0 现态(e535436,一行未改)补采改前锚 40 局(off/formed 各 20,seed0=83000,命名建议 `runsum_iter17enemy_pre_*`),T6 再采改后锚 40 局照原计划执行 | 本批模拟总量 80 局、约 7 分钟,超任务书字面「总量 40」但与卡⓪批实际支出形态完全一致(卡⓪也是改前 40+改后 40);等价性已证(core/data/MC 脚本在两提交点零 diff + 引擎确定性),补采的改前锚与丢失的卡⓪锚在数学上必然逐位相同,等于零信息损失。会话累计时长 ≤20 分钟合规 |
|
|
||||||
| 乙 | 只保 off 档配对(改前/改后各 20 局,总量 40=字面贴边),formed 档放弃 | 预算不超字面;代价=成型注入画像面(卡⓪迁移的 14 件专长秘宝注入行)失去对拍腿。本批改的是敌人表/spawn 面、对两档同等生效,off 腿已覆盖本批触碰路径,但「逐项一致」覆盖面收窄,需用户明示接受 |
|
|
||||||
| 丙 | 放弃 MC 腿,R1 只靠冒烟全量断言 + 静态等价论证收口 | 最省;代价=设计契约 R1 的字面被破(契约明确要求 MC 同种子逐项一致),且开了「锚丢了就不拍」的先例,**不建议** |
|
|
||||||
| 丁 | 用户本地另有备份(网盘/手工拷贝),恢复两份 iter17dd 文件到本 worktree sim-data/ 后按原方案继续 | 零新增消耗;前提是备份确实存在 |
|
|
||||||
|
|
||||||
## 五、恢复路径(任一案获批后)
|
|
||||||
|
|
||||||
1. worktree 仍在原位且干净(基点 e535436),后续会话从 T0 剩余步骤续起:基线重测回填(冒烟/run_all/探针/doc 三闸/熵增)+ §2 事实表逐条重核(此前只完成锚核验步)。
|
|
||||||
2. 案甲获批时先补采改前锚再动任何代码;案丁获批时核验恢复文件的行数(每档 20 行纯 JSONL)与种子序(83000 起升序)后照原方案走。
|
|
||||||
3. 任务书其余部分(已裁点、契约、任务卡)不受本停机影响,无需修订。
|
|
||||||
|
|
||||||
## 六、停机自检对照
|
|
||||||
|
|
||||||
- 触发条款:任务书「停机点」清单 MC 相关硬闸 + CLAUDE.md MC 触发细则「任务书预设步骤的前提消失时停问勿照字面执行」+ sim-data README 配套纪律①「档位上限=硬闸,超档停机呈报」。
|
|
||||||
- 未越权动作自证:未采任何一局模拟、未跑任何测试、未改任何文件(本报告除外)、未动主区与兄弟 worktree。
|
|
||||||
|
|
||||||
## 七、用户裁决(2026-10-07,停机解除令)
|
|
||||||
|
|
||||||
**裁甲案**:批准在 T0 现态(e535436,零代码改动)补采改前锚 40 局(seed0=83000,off/formed 各 20,与丢失的卡⓪锚数学上逐位相同——等价性已证);T6 改后锚 40 局照原计划同 seed0 同格式配对。**本批 MC 总量 80 局经用户明示批准**(超二档字面上限的例外已裁,后续批次不得援引为本先例)。裁决后从 L3 停机点续起:T0 剩余步骤(基线重测回填+事实表重核+补采改前锚留盘)→ T1-T8 按原任务书不变执行。
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
# 出口报告——敌人表行集多行批(迭代 17 卡①,2026-10-07)
|
|
||||||
|
|
||||||
状态:**批内全部提交完成、重闸全绿;终态 = worktree(iter17-enemy-20261007 分支)全部提交,不合并,待用户验收后人闸/落籍**。
|
|
||||||
执行事实源:[任务书-敌人表行集多行批-2026-10-05](../research/任务书-敌人表行集多行批-2026-10-05.md)(v1.1 + T0 实核修订);设计权威:[敌人系统](../gdd/systems/战斗循环/敌人系统.md) v0.15。
|
|
||||||
批性质:纯结构批(P3 丙)——混编机制放开、零内容投放、表内容零变更、零数值变更。
|
|
||||||
执行波折:开工 T0 锚核验步命中一次 L3 停机(改前锚文件丢失,报告 [iter17-enemy-L3-改前锚丢失-2026-10-07](iter17-enemy-L3-改前锚丢失-2026-10-07.md)),用户裁甲案(补采改前锚+总量 80 局明示批准)后续起,全批一次性走完无二次停机。
|
|
||||||
|
|
||||||
## 一、提交清单(worktree 内,按卡)
|
|
||||||
|
|
||||||
| 卡 | 提交 | 内容 |
|
|
||||||
|---|---|---|
|
|
||||||
| L3 停机 | `a0b06b4` | 改前锚丢失停机报告(四案呈报) |
|
|
||||||
| L3 解除 | `5b9cf59` | 用户裁甲案留痕(补采改前锚 40 局+总量 80 局批准) |
|
|
||||||
| T0 | `18cdcb0` | 基线重测回填(冒烟 805/0+run_all 17 套+探针含 click 全绿+doc 三闸/熵增存量红零新增)+§2 事实表 L2 修订(行号漂移 6 项如实改列,全不动摇结构)+改前锚补采落盘 |
|
|
||||||
| T1(组 A) | `ab5ddad` | GDD 修订先行:敌人系统.md v0.15(开战生成节行集逐行实例化口径+行集构成纪律三条规则行+F10 前提句去同种假设+结构冻结/调参表/验收两条+版本历史)+难度曲线与Boss.md v0.24(混编难度归属注记)+entities.yaml rowset_rule 换代+06 状态行已实施完成 |
|
|
||||||
| T2(组 B) | `8690230` | schema 与解析:enemy_table.gd 恰一敌种校验退役→行序相邻校验(rowset_rule 沿用)+UNIT_COUNT_MAX 单种数语义+floor 版 resolve_rowset 退役(P2 甲,工作日志 312 销号);config_db_resolver.resolve_enemy_rowset 行集数组化(ceil 命中坐标全部行,文件序;board_gen 单行通道不动);config_db.gd 门面同步;全仓消费点机械适配取首行(spawn/orchestrator/narrator/smoke 七处/config_db_test/两探针) |
|
|
||||||
| T3(组 C) | `bc73fa3` | 生成与编排:spawn 行集受理(逐行实例化+生成序=文件行序+handle_id 连续;override 入参改逐行数组)+行集实例总数≤EnemyTable.ROWSET_INSTANCE_MAX=4 守卫 fail-fast+难度修饰行集同乘(F9);battle_orchestrator 遭遇骰逐行骰换代(Q8:每行各掷自己区间,先逐行数量骰后逐行 atk 骰;单行行集消费序/次数逐位一致=零内容期随机流零变化) |
|
|
||||||
| T4(组 D) | `c583940` | 断言与探针:expect_pools 换 (L,D,enemy_id) 三元键+L2/L3 定点断言行集口径+双表精确行集契约文案(主段+两复述段)+混编运行面正反断言六条((1,5)/(1,6) 注入,避开全部扫描面,断言后还原)+config_db_test 行集纪律套五条(validate 正反:混编相邻合法/Boss 坐标混编合法/隔断 rowset_rule 定位坐标/dup_key 不回归/单行域闸不回归) |
|
|
||||||
| T7 | 本报告同批 | 人闸材料 [iter17-enemy-人闸材料-2026-10-07](iter17-enemy-人闸材料-2026-10-07.md)(目检四项+代拍板追认九项) |
|
|
||||||
| T8 | 本报告同批 | 收口五步:本报告+active.md 快照台账 384+roadmap 卡①行换代+06 状态行补提交号与闸读数 |
|
|
||||||
|
|
||||||
## 二、闸读数(T0 基线 → T6 批末,全绿)
|
|
||||||
|
|
||||||
| 闸 | T0 基线 | T6 批末 | 结论 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 冒烟(三闸) | 805 项 / 0 失败 | **811 项 / 0 失败**(净增 6=混编正反断言,T4 追认) | 绿 |
|
|
||||||
| 单元 run_all | 17 套全绿 | **17 套全绿**(含新增行集纪律套内断言) | 绿 |
|
|
||||||
| 探针闸(probe_gate --click) | 全绿·残留 Godot=0 | **全绿·残留 Godot=0**(ui_input/ui_struct/ui_contrast/click) | 绿 |
|
|
||||||
| doc 三闸 | link 过(死链 4 存量)/lint 存量红 2/term 过(疑似现行 3 存量) | **link 过(死链 4)/lint 2/term 3——逐项同基线零新增** | 绿 |
|
|
||||||
| 熵增闸 | 存量红 1(design/diagrams,前批遗留) | **同 1 处,零新增** | 绿 |
|
|
||||||
| MC 二档对拍 | 见 §三 | **40 局同种子逐项零差异** | 绿 |
|
|
||||||
| 附:两探针直跑 | — | skill_rhythm_probe 输出正常;damage_probe 7 项 1 失败=A1 攻击链健康,**stash 对照实证基线既有**(与本批零相关;探针非闸门工具,如实登记) | 存量 |
|
|
||||||
|
|
||||||
## 三、MC 锚与对拍结论(用户裁甲案,总量 80 局明示批准)
|
|
||||||
|
|
||||||
- **改前锚(补采)**:`sim-data/runsum_iter17enemy_pre_off_n20_20261007.jsonl` / `runsum_iter17enemy_pre_formed_n20_20261007.jsonl`——T0 现态(e535436,零代码改动)采集,seed0=83000、N=20/档、normal、route=min、attune=off、shop=off、feat=off/formed 同种子配对。
|
|
||||||
- **改后锚**:`sim-data/runsum_iter17enemy_post_off_n20_20261007.jsonl` / `runsum_iter17enemy_post_formed_n20_20261007.jsonl`——T6 时点(c583940 代码态)同参数采集。
|
|
||||||
- **等价性论证(补采改前锚 ≡ 丢失的卡⓪锚)**:①git diff 6e7b5d1(卡⓪锚采样点)..e535436 对 game/core+game/data+adventure_monte_carlo.gd **零 diff**(其间唯一 game/ 改动=presentation 卡③暂停层+冒烟探针,不触模拟);②引擎确定性(卡⓪出口报告实证同种子改前/改后 40 局逐位一致)→同代码态同种子必逐位复现;③旁证:补采锚 L1 条件口径读数 off 4/20(20%)、formed 16/20(80%)与卡⓪出口报告记载**逐位同值**。
|
|
||||||
- **对拍结论:R1 成立——40 局(2×20)同种子配对、每局 RUNSUM 全字段(660 字段/腿)逐项零差异**(零内容期行为零漂移的 MC 面铁证)。
|
|
||||||
- 档位合规:本批实采 80 局(pre 40+post 40)——**超二档字面上限(40)的例外经用户 2026-10-07 明示批准**(L3 报告 §七),后续批次不得援引本先例;会话时长远低于 20 分钟帽。
|
|
||||||
|
|
||||||
## 四、P4 乙两读数面登记(用户裁乙案 Boss 行集放开的知情代价)
|
|
||||||
|
|
||||||
1. **开战叙述取首行(成立,已落码+留痕)**:`battle_narrator.boss_name` 取行集**首个命中行**的 display_name——Boss 行集多行后 Boss 名显示取决于文件行序(R6 契约的呈现面后果),混编护卫行时 Boss 名可能显示为护卫名。零内容期(每坐标恰一行)行为不变。落位 8690230,人工复核义务归 Boss 多行内容投放批。
|
|
||||||
2. **Boss 节点遭遇骰区间(经 Q8 演化,原登记形态已消解)**:任务书 P4 乙原登记「Boss 骰读首行 unit_count 区间 = 全行集骰域」——Q8 二裁(每行各掷自己的数量骰)与 T3 落码后,数量骰与 atk 骰均**逐行各掷**,不再存在「首行区间代全行集」的读数面;替代登记面 = **各行骰后数量求和受行集实例总数 ≤4 守卫约束**(spawn fail-fast),内容批投 Boss 多行时按此口径复核节奏。
|
|
||||||
|
|
||||||
## 五、代拍板记录(白名单内九项,详见人闸材料追认清单;全部 commit 留痕)
|
|
||||||
|
|
||||||
行集数组返回形态(Array[Dictionary]/空集=空数组/文件序)·行序违例类别沿用 rowset_rule+坐标定位文案·spawn 逐行数组入参(短数组缺省 -1/空数组全行定值)·atk 区间骰逐行同构(「每行一骰」语义内)·ROWSET_INSTANCE_MAX=4 落位 EnemyTable·Boss 混编叙述取首行·混编断言注入选点 (1,5)/(1,6)·expect_pools 三元键形态·断言数漂移 805→811 追认。
|
|
||||||
|
|
||||||
## 六、异常分级记录
|
|
||||||
|
|
||||||
- **L3 一次**(改前锚丢失,T0):停机呈报→用户裁甲案→解除。详见 L3 报告。
|
|
||||||
- **L2 一次**(池模板键值换代连续 3 轮红,T4):第 1 轮 4 键坐标-敌种映射臆断错;第 2 轮补修 (3,4)/(3,6);第 3 轮定位 3_7 池值手抄错(第一次手写 expect_pools 块时误抄);第 4 轮以「离线解析 tres 全量对账」法收敛,811/0。教训已随 T4 commit 留痕:**三元键换代先离线全量对账再落码**。不动摇任务书结构,不阻断全批。
|
|
||||||
- 事实表 L2 修订(T0):行号漂移 6 项(F2 调用点/F4/F5a/F5b 路径/expect_pools/F5f 处数),全部如实改列任务书 §2,零结构性差异。
|
|
||||||
|
|
||||||
## 七、遗留人闸项
|
|
||||||
|
|
||||||
1. **实机目检归用户**(人闸材料 §一四项,建议抽查项 1+3)。
|
|
||||||
2. **代拍板九项追认**(人闸材料 §二)。
|
|
||||||
3. **Boss 多行投放批义务**(不在本批):unlock_hp_pct 无闸面逐行人工复核+节奏重测+MC 取证先报批+难度带读数(06/07 在册)。
|
|
||||||
4. damage_probe A1 失败 = 基线既有(前批遗留,归伤害数学相关批主自证),非本批引入。
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
# 人闸材料——敌人表行集多行批(迭代 17 卡①,2026-10-07)
|
|
||||||
|
|
||||||
状态:**批内全部提交完成、重闸全绿**;本文件 = 实机目检清单 + 代拍板追认清单,交用户人闸(交付不代执行)。
|
|
||||||
|
|
||||||
## 一、实机目检清单(用户亲手执行;本批纯结构批零内容投放,目检目标 = 无回归确认)
|
|
||||||
|
|
||||||
本批在零内容期(敌人表 19 行不变)行为逐位不变——冒烟 811 项、MC 40 局同种子全字段零差异已机检背书;实机目检只须确认运行面无肉眼可见回归,建议 10 分钟内过完:
|
|
||||||
|
|
||||||
| # | 检查项 | 操作 | 合格判据 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 普通战斗生成 | 开局打第一关任意战斗节点 | 敌人数量、血条、名称与改前一致;无多出/缺失的敌人 |
|
|
||||||
| 2 | 数量区间节点 | 打带数量区间的节点(如教学位之外多数节点) | 敌人 1–3 只正常出现,无异动 |
|
|
||||||
| 3 | Boss 战叙述与生成 | 打穿第一关 Boss(食人魔酋长) | Boss 名正常显示「食人魔酋长」;半血解锁技照常弹出 |
|
|
||||||
| 4 | 加载无报错 | 正常启动进入第一关 | 无报错弹窗、无卡死(行集校验换代后的加载面回归) |
|
|
||||||
|
|
||||||
以上全过 = 人闸通过;任何一项异常 = 停机呈报,禁自行修。
|
|
||||||
|
|
||||||
## 二、代拍板追认清单(任务书 §八白名单内已决断项,请用户过目追认;不同意任何一项即回滚该项重议)
|
|
||||||
> **✅ 追认(2026-10-07 用户裁)**:九项全部追认——用户核验口径=「实现相关不挑理,符合架构规范+验证约束测试全绿+表现正确即可」;#1-#5/#7-#9 系纯实现与机检面即日追认;#6 Boss 名取首行系零内容期无可见影响、呈现面待 Boss 多行内容投放批(迭代 18 卡⑤)随内容再核。
|
|
||||||
|
|
||||||
| # | 决断点 | 落法 | 落位提交 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 行集数组返回形态 | `Array[Dictionary]`(该坐标全部行、表文件行序=契约序);空集=空数组(`is_empty()` 兼容旧判空习惯) | 8690230(T2) |
|
|
||||||
| 2 | 行序违例错误类别 | 沿用 `rowset_rule`(定位面不变),文案「同坐标多行必须文件内相邻(行序即契约)」并含坐标定位 | 8690230(T2) |
|
|
||||||
| 3 | spawn 入参形态 | `unit_count_override/enemy_atk_override` 改逐行数组(下标=行序);短数组缺省 -1=该行行值路径;空数组=全行定值(旧调用点零适配) | bc73fa3(T3) |
|
|
||||||
| 4 | atk 区间骰逐行同构 | 混编行集 atk 区间同样每行各掷(与数量骰同构,消费序=先逐行数量骰、再逐行 atk 骰)——判读为「每行一骰」预批准语义内的行字段区间骰逐行化,非新增随机源形态;单行行集消费序/次数与既有逐位一致 | bc73fa3(T3) |
|
|
||||||
| 5 | 行集总数常量落位 | `EnemyTable.ROWSET_INSTANCE_MAX := 4`(与数量域常量同位单点收口);守卫在 spawn(骰后值加载期不可判) | bc73fa3(T3) |
|
|
||||||
| 6 | Boss 混编叙述口径(P4 乙知情代价) | `battle_narrator.boss_name` 取行集**首行** display_name——Boss 行集混编护卫时 Boss 名可能显示为护卫名(取决于文件行序);零内容期行为不变;两读数面已写出口报告 | 8690230(T2) |
|
|
||||||
| 7 | 混编断言注入选点 | (1,5)/(1,6)(L1 节点图与全部既有扫描面之外的新深度;新 L 值会被 ceil 封顶不可用);断言后还原表,19 行复核兜底 | c583940(T4) |
|
|
||||||
| 8 | expect_pools 三元键形态 | `"L_D_enemy_id"` 字符串键逐行精确比对(19 行九种,与表内容离线对账) | c583940(T4) |
|
|
||||||
| 9 | 冒烟断言数漂移追认 | 805→811(净增 6 = 混编运行面正反断言六条) | c583940(T4) |
|
|
||||||
|
|
||||||
## 三、遗留人闸项(呈报不停机级)
|
|
||||||
|
|
||||||
1. **实机目检归用户**(上表四项,建议抽查项 1+3 即可覆盖主要回归面)。
|
|
||||||
2. **Boss 多行投放时的 unlock_hp_pct 无闸面**:技能池构成纪律(每池恰一普攻/增益 ≤1/unlock_hp_pct 仅 Boss 行)系文档登记非硬校验——Boss 行集多行放开后该无闸面扩大,后续内容批投放 Boss 多行时须逐行人工复核(已在 06-待办清单条目登记)。
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
# 出口报告:暂停层只读入口批(迭代 17 卡③)
|
|
||||||
|
|
||||||
> 批次:功能性 UI 交互新增(纯呈现零数值改动=零 MC;核心层零改动)。
|
|
||||||
> worktree:`g-plan2-iter17-pause`(分支 `iter17-pause-20261006`,基点 = master 44328b1)。
|
|
||||||
> 任务书:`design/research/任务书-暂停层只读入口批-2026-10-05.md`(v1.1 零待裁点,U0 已发;T0 基线回填已落任务书头注)。
|
|
||||||
> 本报告按「吸收即死」纪律属中间文档,寿命=迭代寿命;结论已同步写进 06 / roadmap / active.md。
|
|
||||||
> 执行备注:本批由两次会话接力完成——T0/T1 与组 B 大部系前任会话(因额度中断),断点续跑会话完成组 B 收尾(两处探针断言口径 L1 修正)与 T3-T5。
|
|
||||||
|
|
||||||
## 一、完成定义五条逐条判定(任务书 §1.2)
|
|
||||||
|
|
||||||
| # | 判定项 | 判定 | 依据 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 入口可达 | ✅ | 战斗屏 HUD 右下角+关卡地图屏顶栏各一枚「暂停」常驻角标(P1 丁);主菜单零角标(`_sync_pause_entry` 以 `_level_active`∧屏态门可见性);ui_input case⑯ 角标真点击开层绿、ui_click 两屏 case 绿 |
|
|
||||||
| 2 | 只读数据正确 | ✅ | 冒烟 `_pause_overlay_projection` 5 断言(余额徽/锻造三行/工坊六行/天赋树概览 == MetaProgression 访问器逐项);结构探针只读巡检=层子树游戏语义信号连接白名单外零连接,合法连接恰 2(关闭钮+关层外发);层内唯一控件=「继续」 |
|
|
||||||
| 3 | 公共件复用 | ✅ | 全部构成件经 UiKit 工厂(modal_shell/panel_skinned/label/button/keystone_badge)+现行色板 token;badge 工厂件 Q10 甲收编入 ui_kit 并同步迁营地钥石徽(观感零变化);零新素材零新色值零新字体;ui_contrast 12 对含钥石徽深墨/烛光黄新对 |
|
|
||||||
| 4 | 模态纪律 | ✅ | PauseOverlay 登记进 main.gd 登记册设置层同档、确认弹窗之前(P2 甲);登记序=树序=z 序注记同步换代;带 dim 遮罩;开合走 `_open_modal`/`_close_modal` 单口;`has_open_excluding` 排除式开态查询(只读零副作用);ui_click 守卫 case 绿(他层开着=置灰+emit 兜底拒开) |
|
|
||||||
| 5 | 重闸全绿+人闸 | ✅(机检半)/⏳(人闸待用户) | 机检读数见 §三;实机目检清单=`design/qa/iter17-pause-human-gate-checklist-2026-10-06.md`(A-H 八节:双屏入口/守卫态/只读性数据正确/零动效与排播副作用观察/与设置面关系/代拍板追认/R4 口径披露/机检佐证),**人闸=用户实机目检** |
|
|
||||||
|
|
||||||
## 二、任务卡完成态(T0-T5)
|
|
||||||
|
|
||||||
| 卡 | 状态 | 提交/落点 |
|
|
||||||
|---|---|---|
|
|
||||||
| T0 | ✅(前任) | worktree 建立+基线回填任务书头注(冒烟 783/0·run_all 17 套·probe_gate 默认段绿·F1-F10 实核绿·迭代 15② 交集零命中);HEAD 时点=44328b1 |
|
|
||||||
| T1 | ✅(前任) | c08a901(组 A:pause_overlay.gd 本体+badge 工厂件收编+营地钥石徽迁移+main.gd 接线)+ fc9eb1e(pause_overlay.gd.uid 边车随批) |
|
|
||||||
| T2 | ✅(续跑会话收尾) | d44fdd5(组 B:两屏角标+has_open_excluding+守卫处理器与 _sync_pause_entry 单一同步点+四探针断言+冒烟投影断言+任务书 T0 注记随批)。前任中断于代码写完未跑闸态;续跑两处 L1 修正(见 §四)后全闸绿 |
|
|
||||||
| T3 | ✅(续跑会话) | 无代码改动,闸读数见 §三 |
|
|
||||||
| T4 | ✅(续跑会话) | `design/qa/iter17-pause-human-gate-checklist-2026-10-06.md` |
|
|
||||||
| T5 | ✅(续跑会话) | 本报告+06 状态行+roadmap 卡③行+active.md 快照/台账 380 |
|
|
||||||
|
|
||||||
## 三、闸读数(T0 基线 → 批末)
|
|
||||||
|
|
||||||
| 闸 | 基线(T0) | 批末 | 判 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 冒烟(run_smoke 全量) | 783/0 | **788/0**(+5=本批投影断言) | ✅ |
|
|
||||||
| run_all | 17 套全绿 | 17 套全绿(exit 0) | ✅ |
|
|
||||||
| ui_input_probe | 默认段绿 | **十七断言 PASS**(+⑯暂停层输入锁:真点击开层/锁期零穿透/关后恢复无残留) | ✅ |
|
|
||||||
| ui_struct_probe | 默认段绿 | 全屏零红(+pause 结构断言+只读性契约+零动效契约) | ✅ |
|
|
||||||
| ui_contrast_probe | 默认段绿 | **12 对测点 PASS**(+钥石徽深墨/烛光黄对,≥4.5:1) | ✅ |
|
|
||||||
| ui_click_probe | 轻闸三件外 | done=true 问题=0(+战斗屏开合守卫 case+地图屏一次性 case) | ✅ |
|
|
||||||
| ui_layout_probe | — | exit 0(观察型布局树工具,无断言判语) | ✅ |
|
|
||||||
| doc 三闸 | — | doc_link_audit 绿 / doc_term_audit 绿 / gdd_lint **存量红**(见 §五-2,本批零新增——06/07 两文件本分支零触碰) | ✅(零新增口径) |
|
|
||||||
| 熵增闸 | — | **存量红**(见 §五-1,主区同红佐证) | 移交披露 |
|
|
||||||
| MC | — | 零跑(纯呈现零数值改动——两入口铁规) | ✅ |
|
|
||||||
|
|
||||||
## 四、L1 修正记录(T2 续跑首轮探针红两处,均为断言口径、非产品代码缺陷)
|
|
||||||
|
|
||||||
1. **ui_struct_probe 只读巡检**:前任落码为「子树全控件 × get_signal_list() 全集」巡检——首跑把 Godot 容器系统对每控件自动建立的布局生命线连接(child_order_changed/item_rect_changed/visibility_changed/size_flags_changed/minimum/maximum_size_changed → 引擎内部脏标记方法)全数误判非法。修正=收敛为**游戏语义信号名清单**(pressed/button_down/button_up/toggled/text_changed/text_submitted/value_changed/item_selected/gui_input/focus_entered/focus_exited/closed 十二名)——这正是任务书 v1.1「巡检信号名清单 T2 落码时列全进探针」的本意;清单外任何新连接一律红须入册。
|
|
||||||
2. **ui_input_probe case⑯ 取格**:原逻辑假设 case⑥ 后域内必余「无旗可挖格」——首跑实测踩中「域恰 2 枚」形态(flag_t 已插旗+dig_t 已揭开后域内零无旗格;旗不可拔=`flag_present` 拒绝在册)。修正=case 挪至全 case 之尾(板面扰动零波及)+域空时前沿移位兜底(真实点击 move 扩大可挖域,复用探针既有 `_pick_frontier` 手法)。修正后一轮全绿,无复发。
|
|
||||||
|
|
||||||
## 五、存量问题移交(均非本批产生,主区 master 同态)
|
|
||||||
|
|
||||||
1. **熵增闸红:`design/diagrams` 子目录越界**——00712d5(2026-10-05 GDD 系统架构总图批)落籍时新增 `design/diagrams/`(JSON+HTML 两件)但未同批修订 CLAUDE.md Project Layout 与 `repo_structure_audit.py` 白名单,属该批收尾漏步;主区现跑同红已实证。处置建议=用户拍板「diagrams 收编为合法类别」或「两件归位」,随下一文档批或直接小批办理;本批不代修(最小批面)。
|
|
||||||
2. **gdd_lint 存量红:06/07 两文件** R3 修订注记/删除线残留/R4 缺版本历史/R7 括号跨度超限——全为历史批次落文注记(本分支对两文件零 diff);doc 三闸「零新增」口径达成。
|
|
||||||
3. **registry 存档版本注记滞后 v4→v5**——生涯批(台账 379)已登记移交,本批未触碰 registry,维持在册。
|
|
||||||
|
|
||||||
## 六、代拍板记录(白名单内决断,commit 留痕,目检可推翻——追认单见目检清单 F 节)
|
|
||||||
|
|
||||||
| # | 项 | 决断 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 关闭钮文案 | 「继续」(紧凑 90 宽返回钮,设置面先例形制) | T1 c08a901 |
|
|
||||||
| 2 | 层内行序 | 余额徽→属性锻造→道具工坊→天赋树(营地屏同序,MetaTable.FORGE_ATTRS 序) | T1 c08a901 |
|
|
||||||
| 3 | 角标文案与落点 | 「暂停」;战斗屏=HUD 右下角(角距 16px,debug 角标同形制);地图屏=顶栏 GP 徽右侧 | T2 d44fdd5 |
|
|
||||||
| 4 | 断言编号与 case 命名 | ui_input case⑯;ui_struct 契约 ⑧只读⑨零动效;冒烟 `_pause_overlay_projection` | T2 d44fdd5 |
|
|
||||||
| 5 | 只读巡检信号清单 | 十二名游戏语义信号(§四-1) | T2 d44fdd5 |
|
|
||||||
|
|
||||||
## 七、提交哈希清单(worktree 内全部,含前任)
|
|
||||||
|
|
||||||
| 提交 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| c08a901 | T1:暂停层组 A(pause_overlay 本体+badge 工厂收编+营地钥石徽迁移+main 接线) |
|
|
||||||
| fc9eb1e | T1:pause_overlay.gd.uid 边车随批 |
|
|
||||||
| d44fdd5 | T2:暂停层组 B(两屏角标+守卫+四探针断言+冒烟投影断言+任务书 T0 注记) |
|
|
||||||
| (收口提交) | T4+T5:目检清单+本报告+06 状态行+roadmap 卡③行+active.md |
|
|
||||||
|
|
||||||
## 八、遗留人闸项
|
|
||||||
|
|
||||||
1. **实机目检**(唯一硬人闸):`design/qa/iter17-pause-human-gate-checklist-2026-10-06.md` A-H 八节,重点=双屏入口/守卫态/只读性/零动效/**排播队列排空副作用确认项**(D2——开层瞬间待播明细行瞬时入带,与「暂停」直觉之差,既有各弹层同款行为)。
|
|
||||||
2. 存量移交三项(§五),均不阻塞本批。
|
|
||||||
3. Esc 快捷通道=已在 06 键盘/手柄条登记(P1 丁裁点),随键盘批统一办理,本批不落码。
|
|
||||||
|
|
||||||
终态 = worktree 内全部提交,**未合并、未 push**(合并落回 master 由用户/编排会话执行)。
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
# 人闸目检清单:暂停层只读入口批(迭代 17 卡③)· 2026-10-06
|
|
||||||
|
|
||||||
> 执行=用户实机。启动:Godot 打开 `game/project.godot` 运行即可;逐项勾选,不过项随批登记返工。
|
|
||||||
> 批区间:T0 基线 HEAD=44328b1 → 批末 d44fdd5(T1 c08a901 暂停层本体 / T2 d44fdd5 入口与断言)。
|
|
||||||
> 任务书:`design/research/任务书-暂停层只读入口批-2026-10-05.md`(v1.1)。事实源=06-待办清单「解锁界面与钥石呈现的交互形态(残余:暂停层只读入口)」条。
|
|
||||||
|
|
||||||
## 怎么走到暂停层(操作路径)
|
|
||||||
|
|
||||||
开始冒险 → 选一个战斗节点进战斗 → 战斗屏**右下角**「暂停」小钮(或:打完战斗到关卡地图屏 → 顶栏 GP 徽**右侧**「暂停」小钮)→ 弹出「暂停」只读层 → 看完点「继续」关闭。
|
|
||||||
|
|
||||||
## A · 双屏入口可达(P1 丁——常驻角标主入口)
|
|
||||||
|
|
||||||
- [ ] A1 战斗屏 HUD 右下角有「暂停」角标,点击直接开层(无过渡动画)
|
|
||||||
- [ ] A2 关卡地图屏顶栏「暂停」角标可见可点,点击开层;层叠在地图屏之上,地图屏仍可见
|
|
||||||
- [ ] A3 主菜单(开始菜单)**无**暂停角标——入口只在对局内出现
|
|
||||||
- [ ] A4 冒险结束回主菜单后角标消失(离局熄灭,不误现)
|
|
||||||
- [ ] A5 暂停层开着时点「继续」原样回战斗屏/地图屏,可继续挖格/选路(无状态残留)
|
|
||||||
|
|
||||||
## B · 入口守卫(他层开着=角标置灰不可点)
|
|
||||||
|
|
||||||
- [ ] B1 战斗中先开图例(或触发三选一/商店/营地等任一弹层)→ 暂停角标置灰,点击无反应
|
|
||||||
- [ ] B2 关闭该弹层后角标恢复可点
|
|
||||||
- [ ] B3 地图屏自身开着时地图屏角标仍可点(地图屏是常态屏,不算「其他模态」)
|
|
||||||
- [ ] B4 暂停层自己开着时,再点任一处角标无反应(不可叠开第二层)
|
|
||||||
|
|
||||||
## C · 只读性与数据正确(P3 甲——余额+三柜台进度)
|
|
||||||
|
|
||||||
- [ ] C1 层内唯一可点控件=「继续」关闭钮;无任何购买/切换/滑杆类控件
|
|
||||||
- [ ] C2 钥石余额徽与营地屏顶栏钥石徽同形制(烛光黄底+深墨字+钥石图标),数字=当前真实余额
|
|
||||||
- [ ] C3 属性锻造三行(攻击/生命/防守族)= 已购等级「Lv n」,与营地柜台一读数一致
|
|
||||||
- [ ] C4 道具工坊六行解锁态(未解锁/已解锁/已解锁·能力封存中/已退役)与累计通关进度分数,与营地柜台二一致
|
|
||||||
- [ ] C5 天赋树概览=已购节点聚合文案(零已购时显示空态句「尚未购买任何节点」),与营地柜台三一致
|
|
||||||
- [ ] C6 层开着时回营地柜台改数值(如买一级锻造)不可行(层无通路);关闭层后重新打开,显示为新值(实时读数)
|
|
||||||
|
|
||||||
## D · 零动效与排播副作用观察(P4 甲 + T4 指定观察项)
|
|
||||||
|
|
||||||
- [ ] D1 层进出均为直开直关——无淡入淡出/滑入等过渡动画
|
|
||||||
- [ ] D2 **排播排空副作用**(确认项):战斗明细演播进行中(连续挖格后立刻)开暂停层——待播明细行会被瞬时排空入带(跳过演播节奏,行带直接补完整)。这是与「暂停」直觉的差异点:**本层只是查看层,不冻结战斗演算与演播**(既有各弹层同款行为)。确认此表现可接受,或登记异议
|
|
||||||
- [ ] D3 减动效开关开/关两态下,层进出表现一致(本层零动效,开关无新增消费)
|
|
||||||
|
|
||||||
## E · 与设置面的关系(P2 甲——登记同档)
|
|
||||||
|
|
||||||
- [ ] E1 主菜单开设置面:无暂停角标出现(两层面不共存——设置入口在主菜单,暂停入口在对局内)
|
|
||||||
- [ ] E2 层级遮挡关系抽检:确认弹窗盖在暂停层之上、暂停层盖在图例/商店/营地之上(登记序=树序=遮挡序)
|
|
||||||
|
|
||||||
## F · 代拍板追认单(白名单内已落,目检可推翻)
|
|
||||||
> **✅ 追认(2026-10-07 用户裁)**:六项全部追认——纯机检面 F6 即日追认;可见面 F1-F5 追认其「落法合理」,最终观感以实机目检为准(目检推翻即按「推翻改法」列改)。
|
|
||||||
|
|
||||||
| # | 项 | 已落值 | 推翻改法 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| F1 | 关闭钮文案 | 「继续」(紧凑 90 宽返回钮,设置面先例形制) | 改「返回」等一词换文案一处 |
|
|
||||||
| F2 | 层内行序 | 余额徽 → 属性锻造 → 道具工坊 → 天赋树(营地屏同序) | 顺序对调=一处移动 |
|
|
||||||
| F3 | 角标文案与位置 | 「暂停」;战斗屏=HUD 右下角(角距 16px)、地图屏=顶栏 GP 徽右侧 | 换角/换角距=锚点一处 |
|
|
||||||
| F4 | 层标题与副题 | 「暂停」+「查看本局钥石与永久强化进度(只读——购买请回营地)」 | 文案一处 |
|
|
||||||
| F5 | 天赋树空态句 | 「尚未购买任何节点(天赋树在营地柜台三)」 | 文案一处 |
|
|
||||||
| F6 | 断言编号与 case 命名 | 探针 case⑯/struct 契约 ⑧⑨(机检面,不涉观感) | 仅重命名时改 |
|
|
||||||
|
|
||||||
## G · 数据口径披露(R4 快照口径,机检佐证外的人闸知情项)
|
|
||||||
|
|
||||||
暂停层展示值=**每次开层瞬间**实时读取元进度访问器拼装的快照(余额/锻造三行/工坊六行/天赋树概览七类访问器),快照只活到本次关层,重开重取——层开着期间外部数值不会变动(层内零写通路),不存在「层数字过期」问题。机检侧:冒烟投影一致性 5 断言(展示值==访问器逐项)+ 结构探针只读巡检(层子树游戏语义信号连接白名单外零连接,合法连接恰 2=关闭钮与关层外发)全绿。
|
|
||||||
|
|
||||||
## H · 机检佐证(已全绿,实机只抽核)
|
|
||||||
|
|
||||||
冒烟 788/0(基线 783/0,+5=本批投影断言)· run_all 17 套全绿 · ui_input 17 断言(含⑯暂停层输入锁)/ui_struct 全屏零红(含 pause 结构+只读巡检+零动效契约)/ui_contrast 12 对测点(含钥石徽新对)/ui_click done=true 问题=0/ui_layout exit0 · doc 三闸零新增(06/07 存量注记红系历史批次落文,本批零触碰;design/diagrams 熵增越界系 00712d5 总图批落籍漏步,主区同红——两存量均已移交登记,非本批产生)· 素材零触碰(零新素材零新色值零新字体,全部构成件=UiKit 工厂件+现行色板 token)· MC 零跑(纯呈现零数值改动)
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
# 出口报告:生涯界面实装批·期一(迭代 18 卡④)
|
|
||||||
|
|
||||||
> 批次:纯呈现 + 存档 meta 域追加(数值零改动=MC 零跑;核心循环零触碰)。
|
|
||||||
> worktree:`g-plan2-iter18-career`(分支 `iter18-career`,基点 = cf2aa03——含迭代 18 卡③⑤⑦全部落籍改动)。
|
|
||||||
> 任务书:`design/research/任务书-生涯界面实装批-2026-10-07.md`(v1.2 裁点全裁——P1-P3 全甲,2026-10-07 用户令代解人闸)。
|
|
||||||
> 本报告按「吸收即死」纪律属中间文档,寿命=迭代寿命;结论已同步写进生涯.md(v0.2)/07-体验验证清单⑲/roadmap 卡④行。
|
|
||||||
> 本报告由执行 agent 产出,active.md 快照与台账条目以草稿形式供主控誊入(active.md 禁碰铁律)。
|
|
||||||
|
|
||||||
## 一、完成定义六条逐条判定(任务书 §1.2)
|
|
||||||
|
|
||||||
| # | 判定项 | 判定 | 依据 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 入口可达 | ✅ | 主菜单「营地与系统」组「生涯」钮(营地钮与设置钮之间,`ui_assembler.gd:154`);ui_struct 入口点击链(合成点击真路径 pressed.emit → `_open_career`)+ui_click 行为级复验全绿;关闭回返开始层断言(ui_struct/ui_click 双落) |
|
|
||||||
| 2 | 汇总页数值逐项一致 | ✅ | 冒烟 `_career_overlay_projection` 9 断言——六类九项逐行 == SaveManager 计数访问器/MetaProgression 访问器读数(总局数/通关局数/各关通关次数/Boss 首杀总杀/钥石徽/锻造合计/工坊解锁计数/天赋树聚合);投影拼装与 `main._career_data` 同构(同访问器族) |
|
|
||||||
| 3 | 终身计数域存档 v6 三断言 | ✅ | 升档幂等(v5 样档升 v6 写盘再载零漂移)/新档缺省(两域全零白板可玩)/收束自增恰一(apply 直呼+settle_adventure 真实收束链各一,通关局与中止局双夹具)——冒烟 ⑬⑭ 段 |
|
|
||||||
| 4 | 生涯页零写通路 | ✅ | ui_struct ⑩只读巡检:子树游戏语义信号连接白名单外零连接、恰 2(返回钮 pressed+closed 外发——17 卡③形制);⑬零跳转契约:页内除「返回」外七导航词零钮;ui_click 局内零生涯入口件断言 |
|
|
||||||
| 5 | 结构探针入轻闸 | ✅ | ui_struct career 屏 `_audit` 全族(互压/等宽等高/出屏/零尺寸)+⑪零动效+⑫登记序树序契约(P3 甲两序失守即红)——probe_gate 默认段绿 |
|
|
||||||
| 6 | 旧档兼容 | ✅ | 冒烟 v5 现役档形态(计数域两键不存在)升 v6 载入成功+生涯页正常显示缺省零值+既有钥石原样(投影段末两断言);v5 档带既有值迁移只增不改(⑬首断言) |
|
|
||||||
|
|
||||||
## 二、任务卡完成态(T0-T5)
|
|
||||||
|
|
||||||
| 卡 | 状态 | 提交/落点 |
|
|
||||||
|---|---|---|
|
|
||||||
| T0 | ✅ | worktree 基线复跑=冒烟 814/0(与现行 master 基线同数);§2 现状逐条按卡⑦后新态实查复核(F8 装配点=:103-199/F10 登记册=:349 现役十一层/version==5 旧断言现行行号=:4751/:4849);生涯.md v0.1 对读——期一范围与任务书 §3 零出入(S1 未触发),开工 |
|
|
||||||
| T1 | ✅ | 669c1c7——存档 v6:SAVE_FORMAT_VERSION 5→6+meta 两新域 adventure_total/adventure_cleared+_migrate_v5_v6(沿现役迁移链,_normalize 补缺省=幂等)+只读访问器两件+写入单口=apply_adventure_summary 收束口+三处同步(smoke version==6 两处/registry save_file 条目 v4→v6 换代〔v5 批漏账补齐〕/save_manager:39 版本史注释;顺手校正迁移链陈旧注释 v1→v3→v1→v6)+断言族 7 件——冒烟 821/0 |
|
|
||||||
| T2 | ✅ | 62d433c——收束链入账断言(真实收束挂点 MetaProgression.settle_adventure 全链恰一;通关局/中止局双夹具;接线零新增代码——apply_adventure_summary 即三结局唯一收束口)——冒烟 823/0 |
|
|
||||||
| T3 | ✅ | e5cd9bd——career_overlay.gd 新视图(page_shell 暖亮全屏页·商店同壳+汇总段六类九项两分组)+主菜单入口钮+组合根接线(暂停层后 addChild〔P3 甲树序同步〕+登记册插位+开合仿设置面先例+_career_data 快照投影)+冒烟投影断言 11 件——冒烟 834/0+.uid 边车与 class_name 编辑器扫描随批 |
|
|
||||||
| T4 | ✅ | dc2d514——ui_struct 生涯屏四契约+ui_click 生涯段+ui_contrast 三测点随批入表;随批返工=对比度亮墨族换装(T3 初版行名/行值用深墨族压深棕页底 ~1.3:1 违 §7.2,全换 WARM/CANDLE/INK_L_GOLD 既有 token 零新色值,测点三对落闸防复发)——probe_gate 全绿+click 0 问题+layout exit 0 |
|
|
||||||
| T5 | ✅ | 本报告+生涯.md v0.2+07-⑲ 目检条目+roadmap 卡④状态列;重闸读数见 §三 |
|
|
||||||
|
|
||||||
## 三、闸读数(T0 基线 → 批末)
|
|
||||||
|
|
||||||
| 闸 | 基线(T0) | 批末 | 判 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 冒烟(run_smoke 全量) | 814/0 | **834/0**(+20=T1 七件+T2 两件+T3 投影十一件) | ✅ |
|
|
||||||
| run_all(game/tests) | 17 套全绿 | 17 套全绿(exit 0) | ✅ |
|
|
||||||
| ui_input_probe | 十七断言 | 十七断言 PASS(本批零改动零回归) | ✅ |
|
|
||||||
| ui_struct_probe | 全屏零红 | 全屏零红(+career 结构族+四契约) | ✅ |
|
|
||||||
| ui_contrast_probe | 12 对测点 | **15 对测点 PASS**(+生涯页行名/行值/组帽三对,≥4.5:1) | ✅ |
|
|
||||||
| ui_click_probe | done=true 问题=0 | done=true(budget=16260)问题=0(+生涯段) | ✅ |
|
|
||||||
| ui_layout_probe | exit 0 | exit 0(观察型,无断言判语) | ✅ |
|
|
||||||
| doc 三闸 | 零新增口径 | doc_link_audit 命中四处均在未触碰文件(06 待办清单×2/奇物.md×2=存量);doc_term_audit 命中存量(03/06,本批文件零命中);gdd_lint 默认域 06/07 存量红维持,本批触碰文件违例计数净降(07: 26→22/生涯.md: 7→6,零新增) | ✅(零新增口径) |
|
|
||||||
| 熵增闸 | 存量红 | 存量红维持(design/diagrams 越界——17 卡③报告已移交披露,主区同态,本批零触碰) | 移交披露 |
|
|
||||||
| MC | — | 零跑(论证见 §四) | ✅ |
|
|
||||||
|
|
||||||
## 四、MC 零跑静态论证(任务书 §6/§5-T5)
|
|
||||||
|
|
||||||
1. **改动面枚举**:本批全部改动=①存档 meta 域新增两计数键+读档迁移(_normalize 补缺省);②收束口自增两行(apply_adventure_summary 头部,纯计数副效应,不触碰钥石/通关次数/Boss 入账既有算式);③新 UI 视图+装配+组合根开合接线(纯呈现);④探针/冒烟断言面。
|
|
||||||
2. **零玩法数值触碰**:data/tables 零 diff、ConfigDB/RngService/战斗/扫雷/奖励核心零 diff——MC 的测量对象(通关率/难度带/奖励期望)的输入侧无任何变化。
|
|
||||||
3. **对局行为等价论证**:冒险内行为路径(挖雷/战斗/奖励/商店/天赋)与本批改动零交集;唯一行为差异=收束时存档多记两个计数键(不参与任何玩法判定——访问器消费面仅生涯页呈现),对局内随机流(RngService 单盐单计数器)消费序列零变化,同种子对拍预期逐位一致(未跑,静态论证;如需实证归数值批统一 MC 窗口)。
|
|
||||||
4. **两入口铁规**:本批无数值验证场景,任务书 §6 预设 MC 零跑;未发生任何「需要跑批才能继续」情形(S 停机点零触发)。
|
|
||||||
|
|
||||||
## 五、代拍板追认单(白名单内决断,commit 留痕,实机目检可推翻)
|
|
||||||
|
|
||||||
| # | 项 | 决断 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 字段命名 | `adventure_total`(总局数)/`adventure_cleared`(通关局数)——任务书 provisional 白名单命名原样采用 | T1 669c1c7 |
|
|
||||||
| 2 | 总局数口径 | 开局即计:三结局(通关/失败/放弃)同经收束恰计一次——白名单预裁「含放弃与失败的所有开局」 | T1 669c1c7 |
|
|
||||||
| 3 | 九项行序与分组 | 组一·冒险战绩=总局数→通关局数→各关通关次数→Boss 首杀→Boss 总击杀;组二·资源与成长=钥石余额→属性锻造→道具工坊→天赋树(「六类九项」=各类逐项一行;Boss 首杀/总杀拆两行) | T3 e5cd9bd |
|
|
||||||
| 4 | 页内分组标题 | 「冒险战绩」「资源与成长」 | T3 e5cd9bd |
|
|
||||||
| 5 | 各关通关次数行形态 | 一行三关「关名 ×N · 关名 ×N · 关名 ×N」(关名取 level 表 display_name 带层号) | T3 e5cd9bd |
|
|
||||||
| 6 | 入口钮形制与文案 | 「生涯」普通钮(同设置行形制,不加图标——既有图标集无生涯语义贴切件,宁缺勿错)+tooltip;排位=营地钮后、设置钮前 | T3 e5cd9bd |
|
|
||||||
| 7 | 页标题与顶条 | 「生 涯」(FS_TITLE·WARM,商店顶条同款);关闭钮=「返回」紧凑 90 宽(设置/暂停面先例形制) | T3 e5cd9bd |
|
|
||||||
| 8 | 页底色与文字墨 | page_shell 暖亮底(商店同壳主菜单页族);文字=亮墨族(WARM/WARM_SOFT/CANDLE/INK_L_GOLD——深墨族对深棕底 1.3:1 违 §7.2 的返工,见 §六-3) | T4 dc2d514 |
|
|
||||||
| 9 | 通关局数行括注 | 「N 局(三关全通)」——口径自解释(P1 甲字面口径的页内显形) | T3 e5cd9bd |
|
|
||||||
| 10 | 天赋树空态句 | 「尚未购买任何节点」(暂停层同构但去营地指引括注——零跳转 P4 甲口径收敛) | T3 e5cd9bd |
|
|
||||||
| 11 | 断言编号与 case 命名 | ui_struct 契约 ⑩只读⑪零动效⑫登记树序⑬零跳转;ui_click 生涯段;冒烟 `_career_overlay_projection`/⑬⑭段 | T4 dc2d514 |
|
|
||||||
|
|
||||||
## 六、过程红灯披露(全部自救闭环,S 停机点零触发)
|
|
||||||
|
|
||||||
1. **冒烟 Parse Error×2(T3 落码当日)**:`var li := i + 1` 在无类型 `db.level_count()` 循环上触发 Variant 推断失败(smoke_all.gd:4367 首发同日修)+一次编辑误合并行尾(4420)——均显式 `int` 类型化/还原换行后一轮全绿,产品代码同型写法同步修正(main.gd `_career_data`)。
|
|
||||||
2. **class_name 全局缓存未注册风险(规范 4.5 预防性履行)**:新增 `CareerOverlay` 后跑一次 `--headless --editor --quit` 编辑器扫描刷新全局类缓存+生成 .uid 边车(随 T3 提交),探针载入 main.tscn 前置完成——零红灯发生。
|
|
||||||
3. **对比度违例自查返工(T4,机制卡点非停机点)**:T3 初版生涯页行名/行值沿用暂停层深墨族 token(INK_LABEL/INK_TITLE),落闸自查发现其对 page_shell 深棕页底仅 ~1.3:1(暂停层系石板亮面板承载深墨、生涯页系深底全屏页——两壳底色明暗相反,照抄即违 art-bible §7.2)。返工=全页换亮墨族既有 token(零新色值)+ui_contrast 落三测点防复发。教训=「复用 UiKit 公共件」须连同其设计底色前提一起复用,跨壳搬运 token 先算对比度。
|
|
||||||
|
|
||||||
## 七、实机目检清单(人闸——用户执行;⑲ 条目已随批登记 07)
|
|
||||||
|
|
||||||
| # | 检查项 | 操作 | 合格判据 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| A | 入口可达 | 主菜单「营地与系统」组查看并点击「生涯」 | 钮在营地与设置之间;点击开全屏页;无报错 |
|
|
||||||
| B | 页呈现六类九项 | 开页逐行看 | 两组九行齐(组一·冒险战绩五行/组二·资源与成长四行);文字清晰可读;开/关无过渡动画 |
|
|
||||||
| C | 数值与存档实况一致 | 对照实玩:完成一局三关全通+中途放弃一局后开页 | 总局数=2(放弃也计);通关局数=1;各关次数与实玩一致;Boss 首杀/总杀/钥石/锻造/工坊/天赋树与营地读数一致 |
|
|
||||||
| D | 旧档载入 | 用升级前 v5 存档启动(或改版本号模拟)开页 | 正常显示无报错;总局数/通关局数从 0 起计;钥石等既有进度原样 |
|
|
||||||
| E | 关闭回返 | 页内点「返回」 | 回主菜单;「继续上局」钮可见性正确恢复;再开营地/设置不受影响 |
|
|
||||||
| F | 零跳转与局内零入口 | 页内找导航钮;进对局找生涯入口 | 页内除「返回」外无任何前往钮;战斗屏/地图屏/暂停层无生涯入口 |
|
|
||||||
| G | 与他层关系(抽查) | DS_DEBUG 会话开浮窗后开生涯页、关闭生涯页 | 生涯开着时浮窗暂隐、关闭生涯后浮窗恢复(ModalStack 遮挡语义);生涯开着时棋盘输入锁定 |
|
|
||||||
| H | 存档往返 | 开页后退出游戏重进 | 计数读数不丢(v6 写盘读回);高版本拒读行为不受影响 |
|
|
||||||
|
|
||||||
## 八、台账条目草稿(供主控誊入 active.md,编号请主控按序分配)
|
|
||||||
|
|
||||||
> **迭代 18 卡④生涯界面实装批·期一落地(worktree iter18-career,基点 cf2aa03,批内提交 669c1c7/62d433c/e5cd9bd/dc2d514/T5 收口提交)**:主菜单「营地与系统」组新增「生涯」一级入口(与营地平级)+page_shell 暖亮全屏只读页(汇总段六类九项两组逐行:总局数/通关局数〔三关全通才计,P1 甲〕/各关通关次数/Boss 首杀/总杀/钥石/锻造/工坊/天赋树)+存档 v6(meta 两新域 adventure_total〔开局即计含放弃与失败〕/adventure_cleared,v5 升 v6 幂等迁移 _normalize 补零,写入单口=apply_adventure_summary 收束口;registry save_file 条目 v4→v6 换代补 v5 漏账);生涯层登记序=营地同档(暂停层后确认弹窗前)+树序同步(P3 甲);页内零跳转+局内零入口(P4 甲);期二/期三内容零触碰。闸=冒烟 834/0(基线 814+20)+run_all 17 套+probe_gate 全绿(ui_input 十七断言/ui_struct career 四契约/ui_contrast 15 对)+ui_click 0 问题+ui_layout exit 0+doc 三闸/熵增闸零新增(触碰文件违例计数净降);MC 零跑静态论证四点随出口报告;过程红灯三笔自救闭环全披露(含对比度深墨照抄暂停层误用返工=跨壳搬 token 先算对比度)。实机人闸挂账待用户(07-⑲ 八节目检清单+代拍板追认单十一项随出口报告 design/qa/iter18-career-exit-report-2026-10-07.md)。
|
|
||||||
|
|
||||||
## 九、会话快照草稿(供主控誊入 active.md「当前状态快照」节)
|
|
||||||
|
|
||||||
> 迭代 18 卡④(生涯界面期一)已在 worktree iter18-career 全批落地待合并:主菜单生涯入口+跨局汇总只读页(六类九项)+终身计数域存档 v6 全数上闸,重闸全绿(冒烟 834/0+run_all 17 套+四探针+ui_contrast 15 对+doc/熵增零新增),MC 零跑(静态论证在报告 §四),实机目检人闸待用户(07-⑲)。下一步=主控合并落回 master+用户实机目检;期二(历史回看+N 扩容+用时埋点+P6 营地条带处置)/期三(图鉴)另行立项待用户点名。
|
|
||||||
|
|
||||||
## 十、存量移交(均非本批产生)
|
|
||||||
|
|
||||||
1. 熵增闸红:`design/diagrams` 子目录越界——17 卡③报告 §五-1 已披露移交,本批维持。
|
|
||||||
2. gdd_lint 存量红:06/07 两文件(默认域)——本批触碰后违例计数净降(26→22),零新增。
|
|
||||||
3. doc_link_audit 存量死链四处(06 待办清单×2/奇物.md×2)——未触碰文件,维持。
|
|
||||||
4. registry save_file 条目 v5 漏账(v4→v5 批未同步)——**本批已顺手补齐**(T1 随批 v4→v6 一步到位),非移交项,特此记一笔销账。
|
|
||||||
|
|
||||||
终态 = worktree 内全部提交,**未合并、未 push**(合并落回 master 由用户/编排会话执行)。
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
# 迭代 18 卡③出口报告:武器锻造系统设计提案批(2026-10-07)
|
|
||||||
|
|
||||||
> worktree `g-plan2-iter18-forge`(分支 iter18-forge,基线 adadf56)。纯文档批:零代码、零数据表改动、零游戏测试(冒烟/探针/MC 全部未跑——测试执行两入口铁规)。本报告是中间文档,按吸收即死条款在迭代出口随批退役;台账条目与快照草稿在本文件第五、六节,由主控转记 active.md(本批未触碰 active.md)。
|
|
||||||
|
|
||||||
## 一、提交清单
|
|
||||||
|
|
||||||
| hash | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 42e9f5d | ③T1: 武器锻造系统设计提案成文——八节框架全齐+原案三条逐条对照+17 裁点全备选案并列+数值 provisional 量纲锚点 |
|
|
||||||
| 6b0fdcf | ③收口: 06「武器锻造系统」专条状态追加提案落盘句 + roadmap 卡③行状态列换代「提案已成文交付待盘问裁决(异步不阻塞)」 |
|
|
||||||
|
|
||||||
交付物:
|
|
||||||
- **提案正文**:`design/research/提案-武器锻造系统-2026-10-07.md`(311 行,待用户盘问裁决)
|
|
||||||
- 收口两处:`design/gdd/06-待办清单.md`(专条状态行追加)、`roadmap.md`(第 71 行状态列)
|
|
||||||
|
|
||||||
## 二、闸读数(改前基线 → 改后对拍,四闸全部零新增违例)
|
|
||||||
|
|
||||||
| 闸 | 基线(adadf56) | 改后(6b0fdcf) | 判定 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| doc_link_audit(--known tools/doc_link_known.txt) | 扫描 41 文件 · 链接 1005 处 · 死链 4 处 · 已知死链 0 处 | 同左(41/1005/4/0,同一批存量:06 两条+奇物两条,均 .zcode/plans、archive、ux 目标类假红在册) | 零新增 |
|
|
||||||
| gdd_lint | 8 文件 · 2 不通过(06-待办清单.md、07-体验验证清单.md,存量表格占比/R3/R4/R7) | 同左(同两文件同款存量) | 零新增 |
|
|
||||||
| doc_term_audit | 41 文件 · 命中 219 处 · 疑似现行 3 处(heavy_multiplier/可选类道具/拔旗,全存量留档类判定) | 同左(41/219/3) | 零新增 |
|
|
||||||
| repo_structure_audit(熵增闸) | 违例 1 处(design/diagrams 子目录越界——迭代 17 存量移交项,主区同红) | 同左(1 处,同一项) | 零新增 |
|
|
||||||
|
|
||||||
本批新增文件(design/research/提案、design/qa/本报告)均不在三闸扫描域(扫描域=design/gdd、design/registry、design/ux);唯一被扫域改动是 06-待办清单.md 状态行一句话,四闸读数逐位持平。
|
|
||||||
|
|
||||||
## 三、完成定义自证(任务书 §1.2 五条逐条判定)
|
|
||||||
|
|
||||||
| # | 完成定义 | 判定 | 证据 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 提案文档落 design/research/(命名 提案-武器锻造系统-2026-10-XX.md),§5 框架八节齐全 | **达成** | `design/research/提案-武器锻造系统-2026-10-07.md`,章节 三~十=八节框架(武器实体化/攻击类型轴/护甲实体化/成长曲线/经济与解锁/满级特效/数值框架/迁移面与裁点汇总),另有 〇 原案对照、一 事实基准、二 范围红线三节前置 |
|
|
||||||
| 2 | 全部现役事实引用可溯(file:line/表行),零凭空断言 | **达成** | T0 逐条复核过(meta.tres:7-25 / shop.tres:36-57,68-94,107-109 / config_db.gd:329-334 / hero.tres:8-11,21-27 / hero_table.gd:12-13 / settlement.tres:31-47,50-52,74 / enemy_table.gd:110-113 / enemy.tres 21 行 armor_type 分布 light×14/heavy×4/ward×1 逐行核对 / feats.tres:29-31,47-49,205-207 / battle_orchestrator.gd:172,830,846-854,1155,1294 / damage_controller.gd:19,513 / effect_engine.gd:28-35;正主文档对读=战斗结算/敌人系统/元进度/奇物/冒险结构五份)。任务书 §2 六事实(F1-F5+F6)全部验证一致,**无 S1 失真、未触发停机** |
|
|
||||||
| 3 | 每个设计裁点呈全备选案(含淘汰依据+各自代价) | **达成** | 17 个裁点(1/1a/1b/1c/2a/2b/2c/3a/3b/3c/4a/4b/5a/5b-1/5c/6/8a)全部甲乙丙(或甲乙)并列,逐案带淘汰依据与代价;推荐列显式标注为提案立场非打包方案;第八节(特效深度)在节内补三案并列块 |
|
|
||||||
| 4 | 数值只给框架与量纲(provisional),终值显式标注归 Alpha 收官 M4 数值批 | **达成** | 第九节专表:七行量纲锚点全部标 provisional+归宿 M4;第三节基础 AC 锚点、第七节定价/cap、第八节特效值同口径;全文零投值承诺(第九节总承诺+红线 1) |
|
|
||||||
| 5 | 06 专条与 roadmap 卡③行状态随批换代 | **达成** | 06 专条状态行追加提案落盘句(6b0fdcf);roadmap 第 71 行状态列=「🔨 提案已成文交付(2026-10-07)待盘问裁决(异步不阻塞)」(6b0fdcf) |
|
|
||||||
|
|
||||||
## 四、全裁点一览表(T2 转呈用户盘问用——每裁点一行备选案摘要)
|
|
||||||
|
|
||||||
| # | 裁点 | 备选案摘要 | 提案推荐 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 武器实体化程度 | 甲=纯升级路线(攻击锻造改名+类型标签,最省但差异化感知最弱)/乙=武器槽实体(装备+库存,感知最强但单开实体系统超诉求、不可逆)/丙=当前武器单选+每件独立等级与特效(中点、两向可逆) | 丙 |
|
|
||||||
| 1a | 携带数 | 单持 / 多持轮换(收益被穿刺弹/魔法矢直伤件承载、战斗内换械动行动经济) | 单持 |
|
|
||||||
| 1b | 换械时机 | 营地内 / 战斗中(结算管线无"中途改类型"位;与"克制归冒险前配型"既有定稿一致) | 营地内 |
|
|
||||||
| 1c | 换械收费 | 免费 / 小额收费(收费惩罚构筑尝试,逆 F6 诉求) | 免费 |
|
|
||||||
| 2a | 类型轴共存 | 叠加(武器类型与格面直伤件独立、共用一张矩阵)/替代(接管,强耦合+砍内容池)/互斥(同类型件不出现,无依据收窄) | 叠加 |
|
|
||||||
| 2b | 矩阵扩维 | 不扩(九格结构冻结,武器三型正好映射)/加第四甲型(矩阵 4×3 全链成本) | 不扩 |
|
|
||||||
| 2c | 死条件 magic_vs_magic | 删行(有先例)/保留+注记(零代码但废卡占池)/改值复活 magic_vs_ward(一行 value,L2 Boss 战专长;行为变更归实装批配测试) | 丙(执行归实装批) |
|
|
||||||
| 3a | 甲域定名 | 魔法甲=ward(现役第三型中文正名即"魔法护甲",零扩域)/新造第四甲域(全链成本、无可感知差异点) | 甲 |
|
|
||||||
| 3b | 甲型可感面 | 基础 AC 差异先行+克制反向留结构位(敌方攻击无类型不查矩阵=克制反向现行无数值效果,显式收窄)/等敌方攻击类型批捆绑(无限期推迟原案诉求) | 甲 |
|
|
||||||
| 3c | 护甲升级结构 | 每型独立路线(逐句对齐原案)/单轨+甲型当门槛(表达不了三型各异基础 AC) | 甲 |
|
|
||||||
| 4a | 成长曲线形状 | 前缓后陡(正面回应 F6)/线性(现役状,零呼应)/阶梯(体感跳跃、调参空间最小) | 甲(只锁方向,值归 M4) |
|
|
||||||
| 4b | 解锁节奏 | 锻造内自闭环(原案精神)/绑关卡进度(与营地定位冲突、首局绑死剑) | 甲 |
|
|
||||||
| 5a | 柜台承载 | 就地改造属性锻造柜台(攻击/护甲行改造、生命行保留)/新第四柜台(拆剩一行、界面重排、"锻"字三处更乱)/塞道具工坊(货币与职责不同源) | 甲 |
|
|
||||||
| 5b-1 | 货币 | 纯金币(同现役攻击锻造)/金币+钥石(解锁被 Boss 掉落绑死)/纯钥石(与"攻击力提升改造"相逆) | 纯金币 |
|
|
||||||
| 5c | 材料经济 | 纯金币(零新经济面,原案未提材料)/金币+材料(grant_material 账号层化=新存档域+同名混淆)/纯材料(脱钩金币经济,实装最大) | 纯金币 |
|
|
||||||
| 6 | 满级特效深度 | 全复用现役效果类型(零代码但表现力受限)/复用为主+三条新参数位(暴击面/折扣档/护盾量,实装批小改)/引入新效果类型(引擎闭集高代价变更,无候选真需要) | 乙 |
|
|
||||||
| 8a | 货架现名 | 保留"攻击锻升" / 改"训练·攻击"式中性名(防与营地"武器锻造"品牌混淆;呈现面归实装批) | 随实装批呈现细节定 |
|
|
||||||
|
|
||||||
配比预设挂起批边界注记(裁点 5d,非呈裁项):A4 配比预设批 2026-10-05 挂起冻结维持,提案不预设其重启口径;实装落地后该批若重启,其任务书须核对预算包络×武器类型、容量柜台竞争两处交汇面。
|
|
||||||
|
|
||||||
## 五、active.md 台账条目草稿(主控转记用,完整白话句)
|
|
||||||
|
|
||||||
- 迭代 18 卡③(武器锻造系统设计提案批)当日完成:T0 把任务书 §2 的六条现状事实逐条回到代码与数据表复核(营地锻造行、商店货架行族、主角攻击类型轴与甲型轴、克制矩阵九格、专长死条件、敌方装甲分布、效果引擎词表),全部与任务书一致,没有触发事实失真停机。T1 把用户 playnote 的武器锻造三条原案写成设计提案(design/research/提案-武器锻造系统-2026-10-07.md,提交 42e9f5d):提案对原案三条的关系逐条写明(剑=放大、长枪法杖=放大且直接启用代码里已登记的休眠类型轴、护甲=克制反向一处显式收窄+基础 AC 各异承接);共 17 个设计裁点全部甲乙丙并列给出淘汰依据与代价,推荐=武器做"当前武器单选+每件独立等级与特效"的折中形态、类型轴与棋盘直伤件叠加共存、魔法甲直接对应现役"魔法护甲(ward)"不扩矩阵、甲型差异先行以基础 AC 表达、成长曲线前缓后陡、就地改造营地属性锻造柜台、纯金币不引入材料、满级特效复用现役效果引擎词表为主;另发现专长里 magic_vs_magic 条件在现行甲型域下永不触发(废卡),给了删行/注记/改值复活三案(推荐改成 magic_vs_ward 变成 Boss 战专长,执行归实装批)。全部数值只有量纲和锚点,终值归 Alpha 收官 M4 数值批。收口改了 06-待办清单「武器锻造系统」专条状态行和 roadmap 卡③行状态列(提交 6b0fdcf)。四道文档闸与目录结构闸改前改后读数逐位持平,零新增违例。提案现在等用户盘问裁决,裁决异步进行不阻塞迭代 18 收尾;裁决通过后实装批另行立项。
|
|
||||||
|
|
||||||
## 六、active.md 当前状态快照草稿(主控转记用)
|
|
||||||
|
|
||||||
> 迭代 18 卡③(武器锻造系统设计提案批,worktree g-plan2-iter18-forge 分支 iter18-forge 基线 adadf56)**已完成待合并**:纯文档零代码零测试,两提交 42e9f5d(提案成文)+6b0fdcf(06 专条+roadmap 卡③行状态换代)。产物=design/research/提案-武器锻造系统-2026-10-07.md(17 裁点全备选案,推荐案随文)。闸=doc 三闸+熵增闸改前改后逐位持平零新增(死链 4/失效 lint 存量 2 文件/退役词疑似 3/结构越界 1,全为基线存量)。**待办=①用户盘问裁决提案(异步,T2 人闸;裁决结果由后续批回写 06 专条与 roadmap)②合并落 master(主控统一执行)。** active.md 本批未触碰(台账与快照草稿见出口报告第五、六节,design/qa/iter18-forge-exit-report-2026-10-07.md)。
|
|
||||||
|
|
||||||
## 七、停机点与遗留
|
|
||||||
|
|
||||||
- **停机点:无。** T0 未发现任务书 §2 事实失真(S1 未触发);本批无机制卡点。
|
|
||||||
- 遗留(非本批义务,均已显式登记):①T2 人闸=提案盘问裁决,异步进行,轮次扩展估时另计(任务书 §6:每轮追加约 0.25d);②实装批另行立项,以本提案+裁决记录为任务书输入;③magic_vs_magic 死条件处置归实装批;④design/diagrams 目录越界为迭代 17 移交存量,主区同红,非本批引入。
|
|
||||||
@@ -1,132 +0,0 @@
|
|||||||
# 出口报告:混编遭遇首批投放批(迭代 18 卡⑤)
|
|
||||||
|
|
||||||
> 成文 2026-10-07。执行 worktree `D:/code/g-plan2-iter18-mixenc`(分支 `iter18-mixenc`,基点 `adadf56`)。任务书 = [任务书-混编遭遇首批投放批-2026-10-07.md](../research/任务书-混编遭遇首批投放批-2026-10-07.md)(v1.2 裁点全裁:P1-P4 全甲)。前置 = 迭代 17 卡①敌人表行集多行批(落籍 `9cc4b8b`,在基线内)。性质 = 纯内容批零代码:只动 `enemy.tres` 数据行 + 表注释 + 冒烟断言面随迁 + 07 清单两处。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §1 T0 开工三查与机制到位复核(2026-10-07 实测)
|
|
||||||
|
|
||||||
| 查项 | 结果 |
|
|
||||||
|---|---|
|
|
||||||
| 基线冒烟 | `python tools/run_smoke.py` → **811 项检查 0 项失败,三闸全过**(退出码/摘要失败数/脚本错误扫描),无 SCRIPT ERROR——与主控 2026-10-07 实测 master `adadf56` 的 811/0 同数,基线成立 |
|
|
||||||
| git status 归属 | worktree 树干净(nothing to commit),分支 `iter18-mixenc`,头 = `adadf56`;无并行卡遗留脏文件 |
|
|
||||||
| 卡①机制①行集校验放开 | `enemy_table.gd` 原「每行集恰一敌种」校验已退役,现为 R6 行序纪律校验(同坐标多行必须文件内相邻,违例报 `rowset_rule`);同坐标同敌种第二行仍由 dup_key(键含 enemy_id)拦截 |
|
|
||||||
| 卡①机制②每行一骰数量骰 | `battle_orchestrator.gd` 遭遇骰段已逐行化:按行序逐行数量骰、再逐行 atk 骰(区间宽度为零的行不掷 = 定值不骰既有口径);单行行集消费序/次数逐位一致 |
|
|
||||||
| 卡①机制③expect_pools 新键 | `smoke_all.gd` 池模板断言已换代 `(L,D,enemy_id)` 三元键(19 条目逐行精确比对) |
|
|
||||||
| 卡①机制④实例总数守卫 | `enemy_table.gd` `ROWSET_INSTANCE_MAX = 4`;`unit_container.gd` spawn 行集受理逐行实例化、各行骰后数量求和 ≤4 fail-fast(超限当场拒启) |
|
|
||||||
| 07:174 义务对读 | 「后续内容批义务」条在档:MC 取证顺延 Alpha 收官 M4 数值批统一执行(届时另令);「Boss 遭遇骰读首行区间」旧口径在文——本批 T5 订正为逐行骰口径 |
|
|
||||||
|
|
||||||
**结论:卡①四件机制全部在 master(=本 worktree 基线)生效,无机制缺口,S1 停机点不触发。**
|
|
||||||
|
|
||||||
## §2 T1 设计稿——候选组合 × 坐标全备选案(留痕,白名单内代拍板)
|
|
||||||
|
|
||||||
### 2.1 方案族(P1 甲已裁,不再重议)
|
|
||||||
|
|
||||||
L2 单点试水,「巨蜘蛛 + 熊地精」双行混编,一处普通节点(d5/d7 候选二选一,属代拍板白名单「候选坐标在同方案族内的微调」)。Boss 多行不入首批(P2 甲);L1 教学段零混编(P3 甲);新行全行值复制同敌种既有行(P4 甲)。
|
|
||||||
|
|
||||||
### 2.2 坐标候选全案对照
|
|
||||||
|
|
||||||
| 案 | 行集构成(行序 = 文件序 = 生成序) | 静态最坏骰和 Σ(unit_count_max) | 冲突排查 | 裁决 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| **d5 案**(选定) | 既有 (2,5) 熊地精重击手(固定 1)+ 新增 giant_spider 行(复制 (2,6) 巢群行值:unit_count 2 / max 3) | 1 + 3 = **4 ≤ 4 ✓** | d5 非首遇位(巨蜘蛛首遇位 = (2,4) 固定 2 教学位,不动);非 Boss 位(d9 不动);(2,5,bugbear) 无 dup 冲突(新键 (2,5,giant_spider));**d5 不在 L2 min/max 存储种子集成路径上**(min 0→1→3→7→8→9 / max 0→2→6→7→8→9 均不含节点 5)——冒烟集成跑测零波及 | **选定** |
|
|
||||||
| d7 案(淘汰) | 既有 (2,7) 巨蜘蛛巢群 [2,3] + 新增 bugbear 行(仅容固定 1 搭档:复制 (2,0) 熊地精 或 (2,5) 重击手行值) | 3 + 1 = 4 ≤ 4 ✓(但零余量顶格) | 淘汰依据:①**d7 同时落在 L2 min/max 两条存储种子集成路径上**(win_min/win_max 通关断言 + 手动驱动选节点 6 开战场面),难度变化直接进入集成跑测的战斗与 RNG 消费面,首批试水波及面最大;②Σ 顶格 4 无余量,静态判据贴守卫上限;③搭档被区间挤到只剩固定 1 一种形态,设计空间最窄;④(2,7) 本就是 L2 最强蜘蛛行(atk 2 / [1,3] / ac 3),再叠伙伴 = 在最难普通节点二次加难,与「单点最小试水」相悖 | 淘汰 |
|
|
||||||
|
|
||||||
### 2.3 d5 案内子候选——新行行值来源(P4 甲执行细则,同方案族微调)
|
|
||||||
|
|
||||||
| 子案 | 复制来源 | 行值 | Σ 自证 | 裁决 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 甲1:复制 (2,4) 首遇教学行 | unit_count 2(固定无 max)/ hp 28 / atk 1 / atk [0,2] / 池 6/2/1 / light / ac 2 | 1 + 2 = 3(全固定,零数量骰) | 淘汰依据:固定数复制会让首批生产内容**完全绕开卡①核心交付面「每行一骰数量骰」**(仅 atk 骰逐行化被触发),单点试水的机制验证价值缩水;且任务书 §4.2 与开工令给的 d5 案演算形态即「固定 1 + 蜘蛛 [2,3]」 | 淘汰 |
|
|
||||||
| **甲2:复制 (2,6) 巢群行**(选定) | unit_count 2 / unit_count_max 3 / hp 26 / atk 1 / atk [1,2] / 池 6/2/1 / light / ac 2 / display_name 巨蜘蛛巢群 | 1 + 3 = **4 ≤ 4 ✓** | 选定依据:与两份文件演算形态一致(least surprise);**生产内容实打「每行一骰」机制**(重击手定值不骰、蜘蛛掷 [2,3]——同场两种数量语义并存,正是混编试水要验的形态);hp 26 较教学行 28 更低一档,难度噪音并不更大;(2,6) 是文件序上 d5 的下一行,值属同段 progression | **选定** |
|
|
||||||
| 甲3:复制 (2,7) 巢群行 | unit_count 2 / max 3 / hp 26 / atk 2 / atk [1,3] / ac 3 | 1 + 3 = 4 ≤ 4 ✓ | 淘汰依据:L2 后段强度(atk 2 / ac 3)用于首批单点试水取偏难形态;且复制后 d5/d7 两场蜘蛛面板完全雷同,目检可读性差 | 淘汰 |
|
|
||||||
|
|
||||||
### 2.4 行序候选(R6:行序 = 声明序 = 生成序)
|
|
||||||
|
|
||||||
| 案 | 生成序 | 裁决 |
|
|
||||||
|---|---|---|
|
|
||||||
| **重击手在前、巨蜘蛛巢群在后**(选定) | 默认目标 = 首行重击手(ac 8 精英坦克顶前排),蜘蛛后排输出 | 选定依据:强弱搭配的经典前后排形态;且既有行文件位置零移动,diff 最小、R6 相邻由「新行紧随既有行之后」满足 |
|
|
||||||
| 巨蜘蛛巢群在前(淘汰) | 默认目标 = 蜘蛛(脆) | 淘汰依据:前排坦克语义倒置;需把新行插在既有行之前,既有行文件位置移动,diff 噪音大 |
|
|
||||||
|
|
||||||
### 2.5 禁区与禁令排查(逐项)
|
|
||||||
|
|
||||||
- 巨蜘蛛首遇位 **(2,4) 固定 2 不加骰**:零触碰(表注释 :486-487 逐字保持;行集断言「恰一行」语义不受影响——本批不动 (2,4))。
|
|
||||||
- L2·L3 Boss 位 **d9**:零触碰(P2 甲,Boss 多行不入首批)。
|
|
||||||
- **跨关混编禁令**(敌种不得早于其首遇位所在关出现):giant_spider 首遇关 = L2、bugbear 首遇关 = L1(L1 d2 教学位)⊂ 投放关 L2 ✓;L1/L3 零触碰 ✓。
|
|
||||||
- **教学位钩爪恐魔((3,0)/(3,1) 固定数量不加骰)**:L3 零触碰,注释 :518-519 逐字保持。
|
|
||||||
- 既有 19 行现值(hp/atk/pool/权重/倍率/display_name):零变更,纯插入。
|
|
||||||
- dup_key:新键 (2,5,giant_spider) 全表唯一 ✓。
|
|
||||||
|
|
||||||
### 2.6 执行口径备注(指令摘要与任务书出入留痕)
|
|
||||||
|
|
||||||
开工令摘要写「enemy.tres 新增两行」,任务书 v1.2(最高执行依据)T3 写「enemy.tres 新行」且 §4.2 Σ 演算(固定 1 + 蜘蛛 [2,3] → 上限 4)为「既有行 + 1 新行」口径。结构上「同坐标新增两行」不可行:任一 L2 战斗坐标均已有行,双行混编 = 既有行 + 1 新行(若再加一行即成三行行集,超出演算且 (2,5,bugbear) 会撞 dup_key)。**按任务书执行:新增 1 行,行集 = 既有重击手行 + 新巨蜘蛛巢群行,表 19 行 → 20 行。**
|
|
||||||
|
|
||||||
### 2.7 选定案白名单依据汇总
|
|
||||||
|
|
||||||
坐标 d5(二选一)、行值来源 (2,6) 复制、行序重击手在前——三者均属任务书 §7 代拍板白名单「候选坐标在同方案族内的微调」;敌种组合(P1 甲)、Boss 不入(P2 甲)、教学段保护(P3 甲)、复制行值(P4 甲)全为已裁项,零重裁。
|
|
||||||
|
|
||||||
## §3 T3 数据行落地(提交 `6272fc8`)
|
|
||||||
|
|
||||||
`game/data/tables/enemy.tres`:新增 1 行 (2,5,giant_spider)「巨蜘蛛巢群」,紧随既有 (2,5,bugbear)「熊地精重击手」行之后(R6 相邻;行序 = 重击手在前、巢群在后);行值整行复制 (2,6) 巢群行(unit_count 2 / unit_count_max 3 / hp 26 / atk 1 / atk_min 1 / atk_max 2 / 池 普攻6·撕咬2·蓄力1 / light / armor_class 2)。表尾追加本批注释块(设计意图/读数预期/Σ 自证/禁区排查)。教学位注释两处(:486-487 巨蜘蛛、:518-519 钩爪恐魔)逐字保持;既有 19 行现值零变更;表 19 行 → 20 行。
|
|
||||||
|
|
||||||
## §4 T4 断言面随迁(提交 `43b1306`)
|
|
||||||
|
|
||||||
`game/smoke/smoke_all.gd` 四处:
|
|
||||||
|
|
||||||
1. expect_pools 增 `"2_5_giant_spider": {"attack": 6, "bite": 2, "charge": 1}`(键 = 卡① (L,D,enemy_id) 三元口径)。
|
|
||||||
2. 池模板文案「十九行九种」→「二十行九种」,尾部口径改「首批投放 (2,5) 双行……其余坐标仍恰一行」。
|
|
||||||
3. 混编断言段还原断言 `rows.size() == 19` → `== 20`(表回 20 行零污染)。
|
|
||||||
4. 新增 ⑦b 三断言:(2,5) 双行且行序 [bugbear → giant_spider](R6 运行面);静态最坏骰和 Σ(unit_count_max,固定行缺省=unit_count) = 4 ≤ 4(守卫同口径);新行行值 = 复制 (2,6)(P4 甲零数值新增)。
|
|
||||||
|
|
||||||
首遇位断言逐项复核绿:(2,4) 巨蜘蛛首遇行集「恰一行·固定 2」、L1 D2 固定 1、L3 (3,0)/(3,1) 固定数量——零触碰全绿。
|
|
||||||
|
|
||||||
## §5 验证闸数字
|
|
||||||
|
|
||||||
| 闸 | 结果 |
|
|
||||||
|---|---|
|
|
||||||
| 基线冒烟(T0) | 811/0,三闸全过(与 master 基线同数) |
|
|
||||||
| 轻闸冒烟(批内两次:T4 后 + 终态复跑) | **814/0 三闸全过**(基线 811 + 3 新断言) |
|
|
||||||
| probe_gate(ui_input/ui_struct/ui_contrast + 残留清点) | 全绿,本闸残留 Godot = 0 |
|
|
||||||
| run_all(单元/契约 17 套件) | **all green(17 suites)**——首跑 1 套红(ui_font_asset_test)归 worktree 环境缺口(见 §11),补拷 gitignored 字体 .import 边车后 17 套全绿;与本批改动无关(本批零触碰字体/呈现面) |
|
|
||||||
| doc 三闸 | 对基线**零新增**:gdd_lint 07 文件 R3 命中 20 = 基线 20(曾自增 1 处=⑱ 标题括号含日期+「批」,当轮改写消除)、R4/R7 与基线逐字同值(存量);doc_link 07 命中 0;doc_term 07 疑似现行 0;全仓存量红(06/03/奇物/design-diagrams 等)均非本批触碰文件 |
|
|
||||||
| 熵增闸 repo_structure_audit | design/diagrams 越界 1 项 = 存量(基线在案,非本批产生);本批零新文件类别 |
|
|
||||||
| MC / verifier | **零跑**(顺延 Alpha 收官 M4 数值批,硬约束在案) |
|
|
||||||
|
|
||||||
## §6 T5 文档收口(本提交)
|
|
||||||
|
|
||||||
1. `design/gdd/07-体验验证清单.md` 两处:
|
|
||||||
- :174 义务段「Boss 遭遇骰读首行区间」→「Boss 遭遇骰逐行区间骰〔每行各掷自己区间——卡① Q8 逐行骰换代,旧口径消解〕」,并补进展注记(首批已落表,剩余面 = Boss 多行第二批)。
|
|
||||||
- 新增 **⑱ 首批混编遭遇目检与读数义务** 节:投放内容 / 实机目检三项 / 难度带读数义务(随 Alpha 收官 M4 数值批统一执行、届时另报批)/ 教学位与断言面复核(本批已履行)/ 红灯信号 / Boss 多行第二批六面读数清单维持。
|
|
||||||
2. `roadmap.md` 卡⑤行状态列换代(✅ 已全批落表 + worktree/提交/闸数字/出口报告指引)——仅动本卡行,符合指令边界。
|
|
||||||
|
|
||||||
## §7 实机目检清单(人闸材料——归用户执行,亲口确认方验收)
|
|
||||||
|
|
||||||
| # | 目检项 | 通过判据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 混编遭遇呈现(L2 节点 5,至少触发一次) | 同场两敌种:熊地精重击手 ×1 与巨蜘蛛巢群同屏 |
|
|
||||||
| 2 | 行序与表一致 | 默认目标 = 重击手(前排坦克 ac 8 先接战),蜘蛛随后 |
|
|
||||||
| 3 | 实例总数 ≤4 目视 | 场上 3-4 只(重击手 1 + 蜘蛛 2-3;蜘蛛数量骰 [2,3] 两形态均正常) |
|
|
||||||
| 4 | 首遇教学位回归 | L1 d2 熊地精恒 1 只;L2 d4 巨蜘蛛恒 2 只(无掷骰波动);L3 d0 灰矮人恒 1 / d1 钩爪恐魔恒 2 |
|
|
||||||
| 5 | Boss 位不变 | L2 d9 蛛化卓尔精灵单独出场(无护卫行) |
|
|
||||||
| 6 | 红灯信号(任一出现即报缺陷) | (2,5) 只出一种敌种;敌人数 ≥5;首遇位数量波动 |
|
|
||||||
|
|
||||||
## §8 台账条目草稿(预配号 391——供主控誊入 active.md,本批禁碰 active.md)
|
|
||||||
|
|
||||||
> 391. 混编遭遇首批投放批完成(迭代 18 卡⑤,worktree g-plan2-iter18-mixenc 分支 iter18-mixenc 基点 adadf56,批内提交 ad36e35/6272fc8/43b1306/⑤T5 收口批,全部在 worktree 未合并):首个混编遭遇行落表 = (2,5) 双行行集〔熊地精重击手(既有零变更)+巨蜘蛛巢群(新行行值复制 (2,6),P4 甲零数值新增),R6 行序 = 重击手在前〕;设计稿全案留痕(坐标 d5/d7 对照选 d5——d7 落 min/max 集成路径淘汰;行值来源三子案选复制 (2,6)——生产内容实打「每行一骰」;行序重击手在前 = 前排坦克默认目标)。闸 = 冒烟 814/0(基线 811/0,+3 断言)+run_all 17 套+probe_gate 全绿+doc 三闸/熵增存量红零新增(07 ⑱ 标题曾自增 R3 一处、当轮改写消除);一次环境缺口 = worktree 缺字体 .import 边车致 ui_font_asset_test 红,自主区补拷边车(gitignored 不入库)后 17 套全绿,与本批无关。07 收口 = ⑱ 目检与读数义务新节+:174 逐行骰措辞订正;MC 零跑(顺延 Alpha 收官 M4 数值批在案);roadmap 卡⑤行状态列已换代。**下一步待用户 = 实机目检三项+首遇位回归(出口报告 §7),过闸后主区合并落 master。**
|
|
||||||
|
|
||||||
## §9 快照草稿(供主控誊入 active.md 顶部快照节)
|
|
||||||
|
|
||||||
> 迭代 18 卡⑤混编遭遇首批投放批已实施完成(worktree iter18-mixenc,四提交,未合并):(2,5) 双行混编落表(重击手+巨蜘蛛巢群复制行值,零数值新增)、断言面随迁 814/0、07 ⑱ 义务登记、全闸绿(run_all 17 套/doc 三闸零新增/熵增存量);待用户实机目检三项(§7)后主区合并;Boss 多行第二批与 MC 取证(难度带读数)分别顺延第二批任务书与 Alpha 收官 M4 数值批。
|
|
||||||
|
|
||||||
## §10 提交清单
|
|
||||||
|
|
||||||
| 提交 | 卡 | 内容 |
|
|
||||||
|---|---|---|
|
|
||||||
| `ad36e35` | ⑤T1 | 出口报告落档(T0 三查 + T1 设计稿全案留痕),纯文档 |
|
|
||||||
| `6272fc8` | ⑤T3 | enemy.tres 新行落表 + 表尾注释块(R6 相邻/行序纪律) |
|
|
||||||
| `43b1306` | ⑤T4 | 冒烟断言面随迁(expect_pools 模板 + 行数换代 + ⑦b 三断言) |
|
|
||||||
| 本提交 | ⑤T5 | 07 两处 + roadmap 卡⑤状态列 + 出口报告收尾回填 |
|
|
||||||
|
|
||||||
## §11 停机点与偏差记录
|
|
||||||
|
|
||||||
- **停机点:无**(T0 机制四件全在位,S1/S2/S3 未触发;全程零 MC 零跑批零机制代码)。
|
|
||||||
- **偏差一(§2.6)**:开工令摘要「新增两行」与任务书「新行」(单数 + Σ 演算口径)出入——按任务书执行为既有行 + 1 新行 = 双行行集,已留痕。
|
|
||||||
- **偏差二(环境缺口,非本批缺陷)**:worktree 缺 `game/assets/fonts/ui_font_fusion_pixel_zh_hans.ttf.import` 边车(gitignored,主控建 worktree 拷缓存时漏此件),run_all 首跑 ui_font_asset_test 红("No loader found")。处置 = 自主区只读补拷边车(不改动主区;边车不入 git),复跑 17 套全绿。归 L1 环境自救,与批内容零关联(本批零触碰字体/呈现面)。
|
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
# 出口报告:种子随机化与调试浮窗升级批(迭代 18 卡⑦)
|
|
||||||
|
|
||||||
> 批次:功能性呈现+组合根批(纯呈现与组合根接线,零数值改动=零 MC;核心层 rng_service/冒险 runner/存档 schema 零 diff)。
|
|
||||||
> worktree:`g-plan2-iter18-seed`(分支 `iter18-seed`,基点 = master adadf56)。
|
|
||||||
> 任务书:`design/research/任务书-种子随机化与调试浮窗升级批-2026-10-07.md`(v1.2 裁点全裁 P1-P6 甲,U0 已发)。
|
|
||||||
> 本报告按「吸收即死」纪律属中间文档,寿命=迭代寿命;结论同步见 roadmap 卡⑦行与本文 §十/§十一(台账与快照草稿,供主控誊入 active.md——active.md 本批零触碰)。
|
|
||||||
|
|
||||||
## 一、完成定义六条逐条判定(任务书 §1.2)
|
|
||||||
|
|
||||||
| # | 判定项 | 判定 | 依据 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 非首次冒险+种子框空 → 主种子随机;同种子行为逐位不变 | ✅ | `_seed_value()` 三分单点(main.gd):空/非法框×非首局(存档布尔 is_first_adventure_done=true)→ 引擎全局熵 `randi()`;冒烟 811/0 两次(改前基线+批末)逐位同数=同种子确定性零漂移;探针⑩连抽 4 次不全等 42 断言绿 |
|
|
||||||
| 2 | 首局固定种子(P5 甲=42);显式整数全场景优先(含首局) | ✅ | 首局(新档 false)恒 42;显式合法整数第一优先(探针⑩:777 优先断言+⑧真实路径 master_seed==42 断言)。**随批抓获并修复:初版分支条件写反(首局随机/非首局 42)——探针钉死显式值故轻闸未暴露,⑩断言面价值实证(见 §四-3)** |
|
|
||||||
| 3 | 断点续玩逐位不变(存档 master_seed 回填路径零改动) | ✅ | `_resume_from_menu` 零触碰种子判定(bp 载 master_seed 直入 adventure.resume_adventure);ui_struct_probe ⑦resume 专项绿(合计 24 守卫断言原样) |
|
|
||||||
| 4 | DS_DEBUG=1 启动即开;对局中可开(P2 甲);遮挡按 P1 甲 | ✅ | `_ready` 尾 `_show_debug_overlay()`(探针①自设环境变量断言启动即开绿);两屏角标(战斗屏 HUD 右下角标对+地图屏顶栏)真实信号路径开窗(探针⑨绿);遮挡=ModalStack 登记制零机制改动(他模态开暂隐/关后恢复——探针⑥+ui_click 模态遮挡族断言绿) |
|
|
||||||
| 5 | 当局数据只读区块(P4 甲六项)数值与只读访问器逐项一致 | ✅ | 区块=种子(adventure.master_seed 现值,非 _seed_value 重算;非对局=RNG 服务现值,未播种显「—」)/关卡(adventure.level_index)/节点/HP/GP(runner 成文出口)/钥石(adventure.keystone);探针⑨六项值对断言绿;零写通路(喂入制 update_run_data,纯标签零信号连接零动效)+白名单外零连接巡检(连接数=10 全在册)绿 |
|
|
||||||
| 6 | ui_tune_probe 换代全绿;冒烟全量绿;MC 零跑 | ✅ | 专闸 ui_tune_probe exit=0(§三);冒烟 811/0;MC 零跑(§五静态论证) |
|
|
||||||
|
|
||||||
## 二、任务卡完成态(T0-T5)
|
|
||||||
|
|
||||||
| 卡 | 状态 | 提交/落点 |
|
|
||||||
|---|---|---|
|
|
||||||
| T0 | ✅ | worktree 基线复读:冒烟 811/0 三闸全过(=主控 master adadf56 实测同数);§2 逐条复核全数在案(modal 登记列表现值、DS_DEBUG 门控点、五路消费面、遮挡机制 F6 一致——S1 未触发);HEAD 时点=adadf56 |
|
|
||||||
| T1 | ✅ | 40fb4a5(C1 三分单点+种子框默认空+占位提示+五探针种子钉死+ui_click 断言改向;五探针=审计点名单三件+ui_probe/ui_struct 同病灶随批修复——`_debug.start_single` 第五路与冒险段同吃种子框) |
|
|
||||||
| T2 | ✅ | dd2c57c(输入锁防护全套+P2 甲角标迁宿主+开始层 dbgbtn 退役)+ 5b3a8fd(两处轻闸红修复:角标对 HBox 锚定改入树后延迟预设+struct overlap 滚动区跨界豁免) |
|
|
||||||
| T3 | ✅ | dd2c57c 同批(当局数据只读区块+`_current_master_seed()` 单点+旧 :1174 诊断种子重算冒充病灶改向+模态开合单口挂 `_sync_debug_overlay`);keystone 取数改向随 T4 批修(c36daa6) |
|
|
||||||
| T4 | ✅ | c36daa6(ui_tune_probe 断言面换代全绿+fx lambda 转命名方法+三分写反修复+钥石域修正) |
|
|
||||||
| T5 | ✅ | 本报告+roadmap 卡⑦状态列+生涯.md 文档同步(提交见 §九) |
|
|
||||||
|
|
||||||
## 三、闸读数(T0 基线 → 批末)
|
|
||||||
|
|
||||||
| 闸 | 基线(T0) | 批末 | 判 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 冒烟(run_smoke 全量) | 811/0 三闸全过 | **811/0 三闸全过**(零漂移=S2 确定性反证通过) | ✅ |
|
|
||||||
| ui_input_probe | 十七断言绿 | 十七断言绿(含 case⑯ 暂停角标真点击——角标对 HBox 锚定修复后复验) | ✅ |
|
|
||||||
| ui_click_probe | 问题=0 | done=true 问题=0(含 P2 甲迁宿主改向断言:开始层角标退役+DS_DEBUG 未设不默认开) | ✅ |
|
|
||||||
| ui_layout_probe | exit 0 | exit 0 | ✅ |
|
|
||||||
| ui_struct_probe / ui_contrast_probe(probe_gate 默认段顺带) | 绿 | 零红 / 12 对全绿 | ✅ |
|
|
||||||
| **专闸 ui_tune_probe** | 基线态(八段旧断言面,本批换代对象) | **换代后 exit=0 全链路 PASS**(①启动即开+树序新基准+⑧显式种子真实路径+开冒险关窗+⑨对局中可开/输入不锁/角标不置灰/两钮禁用/当局数据六项值对+只读巡检零非法连接+零动效+⑩种子三分) | ✅ |
|
|
||||||
| run_all(game/tests) | **17 套全绿**(批末补测——见 §六-1 环境备注) | **17 套全绿**(exit 0;ui_font_asset_test 经导入缓存刷新后 PASS) | ✅ |
|
|
||||||
| doc 三闸 | — | link 死链 2(奇物.md:130,存量=主区同源)/ gdd_lint 2 不通过(06/07 两文件,存量=iter17 移交面)/ term --strict 疑似现行 1(拔旗,06 存量)——**本批零新增**(本批唯一文档 diff=生涯.md 两处事实同步,lint 绿) | ✅(零新增口径) |
|
|
||||||
| 熵增闸 | — | design/diagrams 越界 ×1(存量=iter17 移交第 1 条,主区同红已实证) | 移交披露 |
|
|
||||||
| MC | — | 零跑(§五) | ✅ |
|
|
||||||
|
|
||||||
对拍口径注:冒烟 811/0 在 T0(adadf56)、T1 后(40fb4a5)、T2/P2/T3 后(dd2c57c)、批末(含全部修复)四时点同数——同种子行为逐位不变的直接反证。
|
|
||||||
|
|
||||||
## 四、L1/L2 修复记录(过程红灯全披露,均为断言口径或组合根码缺陷、非核心层)
|
|
||||||
|
|
||||||
1. **T1 后 ui_click 暂态红(预期内)**:断言先行(开始层角标退役断言在 T1 提交、P2 甲迁宿主在 T2 落码)——T2 落码即消,非缺陷。
|
|
||||||
2. **角标对零尺寸锚角(T2 首轮轻闸两红)**:容器(HBox)出树时最小尺寸缓存陈旧为 0,MINSIZE 预设算出零尺寸锚角→暂停角标悬出屏边→ui_input case⑯ 角标真点击不中;struct 侧=[debug] 屏 overlap 假阳(当局数据区块加高列表后,滚动区内容未剪裁矩形跨界与滚区外关闭钮相交=滚动态样貌)。修复=预设改入树后延迟调用+grow 向左上(5b3a8fd)+struct overlap 规则补滚动区跨界豁免(恰好一枚在 ScrollContainer 内才豁免,同滚区两钮真重叠照红)。
|
|
||||||
3. **🔴 `_seed_value()` 三分分支写反(T4 探针换代抓获)**:初版 `not is_first_adventure_done()` 时返回 randi()=首局随机/非首局 42,与 P5 甲相反。轻闸未暴露的原因=全部探针已钉死显式种子值(显式优先分支先行);⑩种子三分断言(首局空档恒 42/非首局连抽不全等 42)双红灯抓获,c36daa6 修复。**此为探针换代义务(任务书 T4)的直接产出——断言面先行的价值实证。**
|
|
||||||
4. **当局数据钥石取数域错(T4 换代抓获)**:`_debug_run_data` 原读 `runner.keystone`——LevelRunner 无 keystone 域(钥石账在 AdventureRunner)→ 运行期脚本错误中断探针 `_ready` 协程=探针永不退出(「挂死」表象,实为静默中断)。两次按挂起纪律处置(禁杀他卡进程、按命令行精确匹配仅杀本 worktree 探针进程、隔 60s 重试)后经实时输出定位,修复=改读 `adventure.keystone`(c36daa6)。
|
|
||||||
|
|
||||||
## 五、MC 零跑静态论证(任务书 §6——零跑批发起禁令遵守)
|
|
||||||
|
|
||||||
1. **玩法行为零变更**:核心层(rng_service/adventure_runner/level_runner/存档)零 diff(`git diff adadf56 HEAD --stat` 可证,12 文件全在 presentation/ + smoke/ + 文档)。RNG 消费点零增减——随机种子生成走引擎全局熵 `randi()`,不触碰 rng_service 封闭流(C3 豁免面:组合根建种子不进玩法 RNG 消费)。
|
|
||||||
2. **同种子逐位不变**:冒烟全量(含统一流黄金向量、确定性复放、断点续玩 400 局对拍既有断言)四时点 811/0 零漂移——「如需复放锚,固定种子冒烟即对拍面」的条件已满足且零锚作废。
|
|
||||||
3. **随机化本身只改「新冒险种子取值分布」**:非首局空框时从恒 42 变为 [0, 2^31) 均匀取值——这是本批的功能目标而非数值改动(无任何表值/当量/概率变化);种子空间的统计性质(通关率分布等)属 M4 数值批统一调整范畴(2026-10-06 用户令殿后,未排期),本批无取证义务。
|
|
||||||
4. 综上:无数值改动=零 MC(两入口铁规+MC 触发细则),无 MC 对拍基准变更。
|
|
||||||
|
|
||||||
## 六、存量问题移交(均非本批产生,基线同态实证)
|
|
||||||
|
|
||||||
1. **ui_font_asset_test 批末初跑 2/2 红=worktree 环境性存量**:worktree 拷入的 `.godot` 导入缓存缺字体 .ttf 导入产物(「No loader found」)。已在基线 adadf56 分离检出对拍复现(同 2/2 红)=与本批零因果;按 probe_gate 冷检出同款 `--editor --quit` 刷导入后 PASS、run_all 17 套全绿。**移交项=四个并行 worktree 若同样报此红,同款一条命令可解**;主区缓存态未检(本批未触碰主区)。
|
|
||||||
2. gdd_lint 存量红 2 文件(06/07)/ doc_link 死链 2(奇物.md:130)/ doc_term 拔旗 1(06)/ 熵增闸 diagrams 越界 1——全部=iter17 出口报告 §五同名移交项,本批零触碰零新增。
|
|
||||||
3. ui_click_probe 旧断言「DS_DEBUG 门控失守」已随 P2 甲改向(卡④ AC④ 的开始层入口形态退役,门控语义移两屏角标+启动即开)——设置与本地化.md v0.2 版本历史行保留历史记录不回改(历史 changelog 非现行语义)。
|
|
||||||
|
|
||||||
## 七、代拍板记录(白名单内决断,commit 留痕,实机目检可推翻——追认单)
|
|
||||||
|
|
||||||
| # | 项 | 决断 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 种子框占位提示词 | 「留空=随机 · 首局恒 42」 | T1 40fb4a5 |
|
|
||||||
| 2 | 当局数据区块标题与行文案 | 标题「当局数据(只读)」;行名 种子/关卡/节点/HP/GP/钥石;HP 显示「当前/上限」;缺位显「—」 | T3 dd2c57c |
|
|
||||||
| 3 | 浮窗 desc 文案换代 | 「开发调试专用(DS_DEBUG=1 会话:启动即开;战斗屏/地图屏「调试」角标可再开)……」 | T3 dd2c57c |
|
|
||||||
| 4 | 角标落点形制微调 | 战斗屏=右下角「调试+暂停」HBox 并排(角距 16px、钮距 8px、暂停居角位——17卡③同形制不变);地图屏=顶栏暂停角标右侧 | T2 dd2c57c |
|
|
||||||
| 5 | 当局数据区块位次 | 列表首位(胜利演出区块之前——当局速查置顶) | T3 dd2c57c |
|
|
||||||
| 6 | 断言编号与文案 | ui_tune_probe ①-⑩ 段(⑨=对局中可开+当局数据+只读巡检、⑩=种子三分);struct overlap 跨界豁免规则文案 | T4 c36daa6 |
|
|
||||||
|
|
||||||
## 八、实机目检清单(唯一硬人闸——DS_DEBUG=1 全流程)
|
|
||||||
|
|
||||||
前置:以 `DS_DEBUG=1` 环境变量启动游戏(真实档或测试档均可)。
|
|
||||||
|
|
||||||
- [ ] A 启动即开:主菜单出现悬浮「调试」浮窗,菜单本身可见可点(浮窗悬浮其上);开始菜单**无**「调试」角标(已迁宿主)。
|
|
||||||
- [ ] B 启动菜单直接点「调试 · 连续关卡两层」→ 浮窗收起 → 两层调试对局正常开打。
|
|
||||||
- [ ] C 对局中开合:战斗屏右下角「调试」角标点亮(DS_DEBUG 会话)→ 点击开浮窗 → 棋盘变暗但**关窗后立即可挖**(无锁死);浮窗开着时「暂停」角标**不置灰**可点(点开暂停层时浮窗暂隐、暂停关闭后浮窗自动恢复)。
|
|
||||||
- [ ] D 当局数据一致性:对局中开浮窗,六项(种子/关卡/节点/HP/GP/钥石)与实际局况一致;发生战斗/挖格/入账后重开浮窗数值随动。
|
|
||||||
- [ ] E 种子查看位:当局数据「种子」值 = 本局实际种子(DS_DEBUG 会话首局=42;非首局关浮窗开局后重开核对为随机值,非 42 即达意)。
|
|
||||||
- [ ] F 对局中按钮禁用态:对局中开浮窗,「运行模拟」与「调试·连续关卡两层」两钮置灰;回开始菜单(终局返回)后开浮窗两钮恢复可点。
|
|
||||||
- [ ] G 种子框行为(非首局档):空框点「开始冒险」→ 当局数据种子为随机值;手填 777 → 种子=777;断点续玩 → 种子=存档原种子。
|
|
||||||
- [ ] H 地图屏角标:关卡地图停点顶栏「调试」角标点亮可点(浮窗开时选路照常,关窗不扰动选路态)。
|
|
||||||
- [ ] I 玩家 UI 零变化确认:不开 DS_DEBUG 启动 → 全流程与改前观感一致(零调试元素、零种子露出)。
|
|
||||||
|
|
||||||
## 九、提交哈希清单(worktree 内全部)
|
|
||||||
|
|
||||||
| 提交 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 40fb4a5 | ⑦T1:种子三分判定单点+种子框默认空+占位+五探针种子钉死+ui_click 断言改向 |
|
|
||||||
| dd2c57c | ⑦T2:输入锁死防护+P2 甲角标迁宿主+T3 当局数据只读区块(三件互锁一批) |
|
|
||||||
| 5b3a8fd | ⑦T2修复:角标对锚定入树后延迟预设+struct overlap 滚动区跨界豁免 |
|
|
||||||
| c36daa6 | ⑦T4:ui_tune_probe 断言面换代全绿+三分写反修复+钥石域修正+fx 命名方法 |
|
|
||||||
| (收口提交) | ⑦T5:出口报告+roadmap 卡⑦状态列+生涯.md 文档同步+main.gd 头注口径更新 |
|
|
||||||
|
|
||||||
## 十、台账条目草稿(供主控誊入 active.md——本批未触碰 active.md)
|
|
||||||
|
|
||||||
> 卡⑦(种子随机化+调试浮窗升级批)落地(2026-10-07,worktree g-plan2-iter18-seed,分支 iter18-seed,基点 adadf56,五提交 40fb4a5/dd2c57c/5b3a8fd/c36daa6/收口)。四件交付:①新冒险主种子三分随机化——判定单点 `_seed_value()`(显式合法整数全场景优先含首局/首局存档布尔判定恒 42〔P5 甲〕/非首局空框引擎全局熵 randi() 不走 rng_service 封闭流);种子框默认文本 42 改空+占位提示「留空=随机 · 首局恒 42」。②调试浮窗升级 P1-P6 甲全落——DS_DEBUG=1 启动即开(P3)+入口迁宿主两屏角标(战斗屏 HUD 右下「调试+暂停」标对+地图屏顶栏,P2 甲,开始层角标退役)+遮挡维持 ModalStack 登记制(P1 甲)+当局数据只读区块六项(种子=adventure.master_seed 现值〔诊断转储同病灶 :1174 随批改向 `_current_master_seed()` 单点〕/关卡/节点/HP/GP/钥石,喂入制零写通路零动效)+对局中开窗配套(输入锁/暂停角标判据改 has_open_excluding 排除式防「默认开×遮挡复活×has_open」棋盘锁死——审计🔴防线;对局中批量模拟与两层调试入口禁用+守卫兜底)。③探针面换代——ui_tune_probe 断言面 ①-⑩ 段换代全绿(启动即开/对局中可开+S1+ 停机点回归/当局数据六项值对/只读巡检零非法连接/零动效/种子三分单点断言),五探针种子钉死显式值(审计🔴——含 ui_probe/ui_struct 审计名单外同病灶两件随批修复)。④闸面——批末重闸全绿:冒烟 811/0(四时点零漂移=确定性反证)+四探针+run_all 17 套+doc 三闸/熵增闸存量零新增+MC 零跑(静态论证随出口报告)。过程红灯全披露随出口报告 §四(含 🔴 `_seed_value` 三分分支写反由探针换代抓获修复、钥石域错致探针静默中断的「挂死」归因);存量移交两项(ui_font_asset_test 系 worktree 导入缓存缺字体产物、基线对拍复现非本批因果+一条命令可解;doc/熵增存量面同 iter17)。人闸=DS_DEBUG=1 实机全流程目检(清单随出口报告 §八)。出口报告=`design/qa/iter18-seed-exit-report-2026-10-07.md`。
|
|
||||||
|
|
||||||
## 十一、快照草稿(供主控誊入 active.md「当前状态快照」节)
|
|
||||||
|
|
||||||
> 迭代 18 卡⑦(种子随机化与调试浮窗升级)已落地待收口:worktree g-plan2-iter18-seed 全部提交(未合并、未 push),批末重闸全绿(冒烟 811/0+ui_input/ui_click/ui_layout/ui_struct/ui_contrast/ui_tune 全绿+run_all 17 套+doc 三闸与熵增闸零新增存量+MC 零跑)。下一步=①用户实机人闸(DS_DEBUG=1 目检清单见 design/qa/iter18-seed-exit-report-2026-10-07.md §八)→②主控合并落回 master+主区全量复跑→③active.md 快照/台账誊记(草稿在出口报告 §十/§十一)。代拍板追认单六项在出口报告 §七(种子框占位词/区块文案/角标落点/断言编号等——目检可推翻)。并行四卡(③④⑤与本文卡)互不阻塞;卡⑦与⑥收官批零耦合。
|
|
||||||
|
|
||||||
终态 = worktree 内全部提交,**未合并、未 push**(合并落回 master 由用户/编排会话执行)。
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
# 出口报告:天赋树货币甲案修复批 + 卡③提案 S2 纠偏重写(2026-10-07)
|
|
||||||
|
|
||||||
- **工作树**:`g-plan2-iter18-treefix`(基点 master 3e9360d)
|
|
||||||
- **裁决依据**:用户 2026-10-07「按甲方案修复完」——树全钥石单币落定,T8「GP 余额域缺位」双币骨架披露销账
|
|
||||||
- **性质**:零行为变更静态批(tree_buy 改动前后同走 spend_keystone;currency 仅呈现元数据)
|
|
||||||
|
|
||||||
## 一、提交清单
|
|
||||||
|
|
||||||
| # | hash | 内容 |
|
|
||||||
|---|---|---|
|
|
||||||
| ① | d7a6406 | 修复: 天赋树货币甲案——树全钥石单币落定(6 文件) |
|
|
||||||
| ② | 30154e5 | 修复: 卡③武器锻造提案 v1.1——盘问轮 S2 纠偏(1 文件) |
|
|
||||||
| ③ | (本提交) | 出口报告(本文件) |
|
|
||||||
|
|
||||||
## 二、改动对照(A-E + meta.tres 顺带订正)
|
|
||||||
|
|
||||||
| 项 | 文件 | 改动 |
|
|
||||||
|---|---|---|
|
|
||||||
| A | `game/data/tables/meta_tree.tres` | 16 脊柱行(sp_hp/atk/hit/ac × r1..r4)`"currency": "gp"` → `"keystone"`(价格 10/20/30/40 不动,provisional 归 M4);表尾 T8 注释 GP 买深度→钥石买深度;追加 2026-10-07 裁甲销账行注 |
|
|
||||||
| B | `game/core/meta_progression.gd` tree_buy | 删 currency 变量与 if 包裹,直走 `save.spend_keystone(price)`;注释改裁甲口径。tree_buy_fork 原本直走 spend_keystone 零改动 |
|
|
||||||
| C | `game/data/schemas/meta_tree_table.gd` | `CURRENCIES` 枚举 `{gp, keystone, free}` → `{keystone, free}`(缺省容忍语义不变——validate 对缺失键照旧报出域);头注双币铁律段换代单币口径 |
|
|
||||||
| D | `game/presentation/views/camp_overlay_view.gd:203` | 树购买钮 `"购买 %d"` → `"购买 %d 钥石"`(行板紧凑钮豁免宽度基准不变) |
|
|
||||||
| E | `game/smoke/smoke_all.gd` | 4670「双币/互斥对…」→「单币枚举/互斥对…」、4677「钥石单币承载——GP 余额域缺位披露待追认」→「树全钥石单币——2026-10-07 用户裁甲」(两条均消息文字,逻辑断言零改) |
|
|
||||||
| 附 | `game/data/tables/meta.tres:92` | 陈旧注释订正:「与 GP 商店同族…base 10」→「与局内 GP 商店同族**指数值档位非货币**…base_price 现值 20(2026-09-22 对齿批投值)」+ 订正溯源注 |
|
|
||||||
|
|
||||||
## 三、闸数字
|
|
||||||
|
|
||||||
| 闸 | 结果 |
|
|
||||||
|---|---|
|
|
||||||
| 基线冒烟(改动前,worktree) | 834 项检查,0 项失败(三闸全过) |
|
|
||||||
| 改后冒烟 run_smoke | 834 项检查,0 项失败(三闸全过) |
|
|
||||||
| probe_gate --click | ui_input/ui_struct/ui_contrast/ui_click 四段全绿,批末残留 Godot=0 |
|
|
||||||
| ui_layout_probe | 退出码 0,SCRIPT ERROR/Parse Error 零命中(该探针系布局 facts 打印设计,无 PASS 行) |
|
|
||||||
| ui_tune_probe | PASS 全链路 |
|
|
||||||
| run_all(game/tests) | 17 套件全绿 |
|
|
||||||
| doc_link_audit --strict | 既有死链 4(06-待办清单 ×2、奇物.md ×2——本批未触碰该三文件,零新增) |
|
|
||||||
| gdd_lint | 既有 2 文件不通过(R3/R4/R7——本批零 gdd 改动,零新增) |
|
|
||||||
| doc_term_audit --strict | 既有疑似现行 3 处(伏击/可选类道具/拔旗——均不在本批触碰文件,零新增) |
|
|
||||||
| repo_structure_audit(熵增闸) | 既有违例 1(design/diagrams 子目录越界——基点已存在,非本批引入,零新增) |
|
|
||||||
|
|
||||||
## 四、MC 零跑静态论证(零行为变更)
|
|
||||||
|
|
||||||
1. **tree_buy**:旧逻辑 gp/keystone 两值都走 `spend_keystone(price)`;新逻辑无条件走同一口——对全部 currency ∈ {keystone, free} 行为逐值等价。free 行(ks_workshop/easter_ley)price=0,`spend_keystone(0)` 恒 true(实现为 `keystone_balance() < n` 判拒,0 余额不减值)→ free 节点购买状态迁移逐位不变。
|
|
||||||
2. **currency 字段残余消费方**:全 game/ grep 证实仅剩 schema 枚举校验(新词表覆盖现役全部行值,smoke 4670 validate 零违例过闸)与 `tree_camp_rows` 投影透传(呈现层无渲染消费,camp_overlay_view 仅注释提及)。
|
|
||||||
3. **按钮文案**:呈现面文字变更,smoke/probe 断言面零钉死(grep `购买 ` 命中均为商店 buy_product 动作描述非树钮文案)。
|
|
||||||
4. **实证背书**:改后 run_smoke 834/0 + 全探针绿 = 静态论证经验闭环。
|
|
||||||
|
|
||||||
## 五、文档命中清单(F 项先 grep 后动)
|
|
||||||
|
|
||||||
| 文档 | grep 词 | 结果 | 处置 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| design/gdd/systems/跨局循环/元进度.md(注:任务书误写「冒险循环」目录,实际在跨局循环/) | 双币/脊柱/GP 买/天赋树 | 树双币与脊柱 GP 表述零命中(命中 3 行均系历史定名注/版本史;:55 两币分工条款确认在案,不动) | 零改动 |
|
|
||||||
| design/registry/entities.yaml | meta_tree/currency | 零命中 | 零改动 |
|
|
||||||
| design/gdd/06-待办清单.md | 天赋树/货币/追认/双币/余额域 | 无 T8 树货币待追认挂单项(命中行均系其他主题) | 零改动 |
|
|
||||||
|
|
||||||
## 六、卡③提案 v1.1(S2 纠偏)订正清单
|
|
||||||
|
|
||||||
1. 〇节原案一:「营地花金币」→「营地花钥石」
|
|
||||||
2. F1 事实行:「单次价 20 金币」→「20 钥石(货币=钥石:消费口 meta_progression.gd:59 spend_keystone;meta.tres 仅存计价参数)」
|
|
||||||
3. 裁点 4b 乙引文:「消费钥石/金币的成长枢纽」→「消费钥石的成长枢纽」
|
|
||||||
4. 裁点 5a 丙:不同源论据作废改写(工坊=通关次数渠道+钥石直购预留,与武器锻造同属营地钥石经济;淘汰仅依职责混装)
|
|
||||||
5. 裁点 5b 货币裁点整节重组:甲=纯钥石(推荐)/乙=局外金币余额域(淘汰)/丙=第三货币锻造币(淘汰)
|
|
||||||
6. 裁点 5c 前提换钥石:甲=纯钥石零材料(推荐,原「不要材料」结论存活)/乙=钥石+材料(代价并列)/丙=纯材料(淘汰)
|
|
||||||
7. 第九节定价行:基础价 20 钥石(量纲不变括注)
|
|
||||||
8. 汇总表 5b-1/5c 行换代
|
|
||||||
9. 文末新增修订记录 v1.1(含错误根源与配套实况)
|
|
||||||
10. 全文「金币」扫尾:残余 9 处均系订正说明/乙丙备选案描述对象/修订记录事实陈述,合法保留
|
|
||||||
|
|
||||||
## 七、偏差披露
|
|
||||||
|
|
||||||
1. **任务书元进度.md 路径勘误**:任务书写 `design/gdd/systems/冒险循环/元进度.md`,实际文件在 `design/gdd/systems/跨局循环/元进度.md`(提案 F5 引文路径正确)。已按实际路径完成 grep。
|
|
||||||
2. **F 项三文档全零命中**:元进度.md 无树双币表述可换代(树系迭代 12 T8 落码,文档正主从未写入双币树口径)、entities.yaml 无树货币登记、待办清单无 T8 追认挂单项——均零改动,未补版本史行注(任务书行注以「有表述则换代」为前提)。
|
|
||||||
3. **断言面命中 14 处**:13 处系商店 buy_product 动作描述(非树断言),仅 smoke_all.gd 4670/4677 两条消息文字换代。
|
|
||||||
4. **doc 三闸与熵增闸既有命中**:死链 4/格式 2 文件/术语 3/熵增 1 均系基点既有(本批触碰文件不在其扫描域或未触碰),判据「零新增」满足。
|
|
||||||
5. **ui_layout_probe 无 PASS 行**:该探针设计为布局 facts 打印(无断言 PASS 输出),以退出码 0 + 零 SCRIPT ERROR 判过。
|
|
||||||
6. 环境无降级;边车 115 枚全数拷入 worktree(ui_font_asset_test 过闸印证)。
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
# M-1 出口闸检查单(2026-09-28,迭代 2 收口批交付)
|
|
||||||
|
|
||||||
> 用途:M-1「切片表现收口」出口闸 = **真人目检清单全绿**(机器闸已全部自动过);本单即人闸载体,逐项可勾。
|
|
||||||
> 全绿 = M-1 关闭 → **M-2 迭代 3「读数重测与调参」解锁**(其门=M-1 出口闸)。
|
|
||||||
> 目检方式:实机跑 `godot --path game`(或开 Godot 编辑器 F5),按清单逐项看;任一项不过 = 回该批返工(样张类至多一轮,收集否决维度补断言后重出)。
|
|
||||||
|
|
||||||
## 一、机器闸读数汇总(已自动过,留痕)
|
|
||||||
|
|
||||||
### 迭代 1「测试兜底与表现先行」(六卡一次合并 aa18eb9,2026-09-28,台账 215-221)
|
|
||||||
| 卡 | 内容 | 读数 |
|
|
||||||
|---|---|---|
|
|
||||||
| T1 单元测试与契约层 | game/tests/unit 九套件实跑入口 tests/run_all.gd | 九套件全绿(合库后复跑确认) |
|
|
||||||
| T2 高墙感 D 投影档落码 | 立面双段暗带+地面投影(用户挑档 D) | 冒烟 557/0+双探针 PASS |
|
|
||||||
| T3 CJK 字体随包 | Fusion Pixel OFL zh_hans+ui_font_asset_test | 冒烟 557/0+套件绿 |
|
|
||||||
| T4 关卡画面三拍板落地 | 图上点击唯一通道/三停点标题/GP 徽章+底栏状态组/放弃二次确认 | 冒烟+探针绿 |
|
|
||||||
| T5 胜利结算 GP 总量+增量接线 | OQ14 口径落胜利总结结算 | 冒烟+探针绿 |
|
|
||||||
| T6 underdark/deep_underdark 瓦片换色 | tools/recolor_terrain_tiles.py+42 枚入包+terrain_tile_sets_test(第 9 套件) | 冒烟 557/0+9 套件绿 |
|
|
||||||
|
|
||||||
### 迭代 2「样张冻结与表现定稿」(本 loop,f9b0765→a08d89c)
|
|
||||||
| 卡 | 内容 | 读数 |
|
|
||||||
|---|---|---|
|
|
||||||
| T1 样张 v2 重出+机检冻结 | 机检 **16/16 全绿**(13 现行+A3 Δ≥55+F6 双明度带+F7 悬崖同源+A6 观感密度)→ 四冻结落文 art-bible v2.13 | 报告 `design/research/sample-v2-机检报告-2026-09-28.md` |
|
|
||||||
| T2 框材组 8 件换皮 | ♻ 九件量化改色入包+UiKit 单点工厂+五视图接线 | 冒烟 557/0+四探针 PASS |
|
|
||||||
| T3 演出密度终稿 | 死亡碎裂/胜利纹章/失败掸灰/意图三档/结算光带+**fx_probe 新探针** | 冒烟 557/0+五探针 PASS |
|
|
||||||
| T4 棋盘数字终稿 | 三档墨色温/字号 ≥18 公式/色牌 0.60·0.62 冻结值 | 冒烟 557/0+五探针(ui_tune_probe 回归含) |
|
|
||||||
|
|
||||||
- 冒烟检查数 557 = 开工基线(零删减);**双迭代同库合并(master=9abf5ff,迭代 1 六卡 aa18eb9 + 迭代 2 五批次)后主区复跑**:冒烟 557/0+五探针+九套件全绿(台账 222 留痕)。
|
|
||||||
|
|
||||||
## 二、真人目检清单(逐项可勾,勾完=人闸过)
|
|
||||||
|
|
||||||
- [ ] **1. 棋盘立体感**(样张 v2 否决③复核):战斗中未开墙格有南立面暗带+地面投影,整板底部/右侧有悬崖暗面与悬浮影——「立得起来」
|
|
||||||
- [ ] **2. 观感密度**(否决①复核):棋盘整体不觉得平/糊——裂纹碎石变体、类型微光、物件纹样层次可感
|
|
||||||
- [ ] **3. 数字可读**:1-8 数字色牌上清晰(三档墨色温:小数字偏冷、大数字偏暖),缩小窗口仍可读
|
|
||||||
- [ ] **4. 换皮框架**:C 区面板/B 区舞台底/图例弹窗=石板质感九宫格;全站按钮=暖砖两态(按下下沉);开始界面有石纹底噪;营地有石框容器+钥石/柜台图标
|
|
||||||
- [ ] **5. 演出四项**:击杀敌人→灰化+碎块弹飞(非瞬间消失);胜利→金蜡封落下+碎砖拼纹章环;失败→暮蓝氛围+尘絮飘落+旗光点收回;敌摇定特殊技→徽标弹跳、重击→缓推蓄力定格
|
|
||||||
- [ ] **6. 结算光带**:轮末结算金光带自棋盘上缘扫向下缘,带前缘有亮线
|
|
||||||
- [ ] **7. 图例正确性**:图例旗条目为封印黑色块、墨字可读
|
|
||||||
- [ ] **8. 迭代 1 六卡件**(已同库):高墙 D 投影观感/Fusion Pixel 中文渲染/关卡画面(图上点击+停点标题+GP 徽章+放弃确认)/胜利结算 GP 数字/underdark·灰矮人矿城两套瓦片换色观感
|
|
||||||
|
|
||||||
**判定**:1–7 全过 + 8 注记状态 → 人闸过,M-1 关闭;登记裁决入台账,roadmap 里程碑移动。
|
|
||||||
|
|
||||||
## 三、✦ 缺料清单(只登记不生图——生图执行权在用户)
|
|
||||||
|
|
||||||
| 件 | 渠道 | 规格/提示词指针 | 现状承载 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| B 区背景横幅(战斗舞台背景插画) | ✦ 生图 | art-bible §6.1 明亮地窟/低对比自然后退;清单 §1.2 | 程序化石板皮+底噪(本批 T2) |
|
|
||||||
| 八敌种站桩立绘 9 卡 | ✦ 外部生成中 | comfyui-prompts.md v2.9(攻击段=底稿锁死句) | 槽位在位,入库即显示零代码 |
|
|
||||||
| 主角 normal/hit 成图旗色手修 | ✦ 手修 | 旗朱→封印黑 #000000(封印黑批遗留) | 远程单已重锁十六进制 |
|
|
||||||
| 节点图行进器形象 | ✦/⚙ | 清单 §3.2(与主角同族蓝) | 程序化占位 |
|
|
||||||
| 意图三档/死亡碎裂序列帧 | ✦ 可选 | art-bible §8.4 冻结帧数档 | 程序化 tween 已承载(本批 T3) |
|
|
||||||
| 巢穴纹/封印印记正式纹样 | ✦/⚙ | 清单 §4 封印特效两件+§3.3 | 程序化占位在役 |
|
|
||||||
| 变异纹带六类型终稿 | ⚙ 样张批后可排产 | art-bible §3.2 纹带形按轴两分 | 槽位先行(CellUnit tex_mutation) |
|
|
||||||
| 格面资源徽章 19 枚 | ⚙ 脚本管线 | 清单 §3.1 键契约 | 程序化占位 |
|
|
||||||
|
|
||||||
## 四、代拍板追认清单(本 loop 白名单内已裁,待用户过目)
|
|
||||||
|
|
||||||
1. A6 观感密度口径=明度梯度均值(高频细节能量)——v1 同口径实测 4.09×1.15=4.70;低频双峰由 A3 承载(口径注记见机检报告)。
|
|
||||||
2. F6 双明度带测「南向临地墙格」(立面语义承载位,内墙 center 件无立面属正确)。
|
|
||||||
3. 复用件选型=Kenney 系九宫格/图标+OGA 石纹(全 CC0,game-icons CC-BY 件未采用);量化色带端点=PANEL_BORDER/PANEL_DATA/BRICK/FLOOR/PLATE token。
|
|
||||||
4. 演出参数=死亡碎块 5 块 0.45s/纹章碎砖 10 枚/掸灰 8 絮/蓄力定格 0.40s(§8.4 冻结档)。
|
|
||||||
5. 数字牌尺寸 0.66→0.60(对齐样张冻结值);图例旗条目名回退「旗」(click_probe 基线精确匹配,封印语义移描述列)。
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
# M-2 出口闸检查单(2026-09-28,迭代 4 收口批交付)
|
|
||||||
|
|
||||||
> 用途:M-2「关卡画面独立化」出口闸 = **真人目检清单全绿**(机器闸已全部自动过);本单即人闸载体,逐项可勾。
|
|
||||||
> 全绿 = M-2 关闭 → **M-3「切片数值标定与 Alpha 验收」解锁**(其门=M-2 出口闸——表现彻底定稿后读数不被呈现改动扰动)。
|
|
||||||
> 目检方式:实机跑 `godot --path game`(或开 Godot 编辑器 F5)开一局冒险,按清单逐项看;任一项不过 = 回该批返工。
|
|
||||||
|
|
||||||
## 一、机器闸读数汇总(已自动过,留痕)
|
|
||||||
|
|
||||||
### 迭代 3「独立屏架构」(四批次一次合并 74c8ebe,2026-09-28,台账 224)
|
|
||||||
| 卡 | 内容 | 读数 |
|
|
||||||
|---|---|---|
|
|
||||||
| T1 spec 形态升格 | level-map.md 覆盖层形态→独立屏独占呈现全量改写+battle.md 三处随改 | doc 三闸对基线零新增 |
|
|
||||||
| T2 独立屏落地 | RouteOverlay→LevelMapScreen+不透明屏底+组合根屏级互斥单一出口 | 冒烟 557/0+五探针 PASS |
|
|
||||||
| T3 全链流程 | 选路分支(战斗/Boss 出屏;奖励/恢复/商店本屏域内弹出) | 同上 |
|
|
||||||
| T4 探针独立性断言 | 屏激活期 _battle_root 隐藏=零透出契约/战斗节点提交后恢复 | ui_probe+ui_click_probe 断言扩展全绿 |
|
|
||||||
|
|
||||||
### 迭代 4「关卡画面视觉终稿」(本 loop,9a79927→…)
|
|
||||||
| 卡 | 内容 | 读数 |
|
|
||||||
|---|---|---|
|
|
||||||
| T1 关卡画面样张 v1 | 机检 **11/11 全绿**(L1 图标互辨/L2 四态+Boss 环灰度/L3 对比 ≥4.5:1/L4 禁入带/L5 画布自适应〔routebug 83c11a1 回归〕/L6 独立屏底/L7 占位区不侵入/A1a 色板对表/SRC 同源/ST 态齐备/S3 换层示意)→ 视觉冻结值登记 | 报告 `design/research/level-map-sample-v1-机检报告-2026-09-28.md` |
|
|
||||||
| T2 节点图标组接线 | ♻ kenney-board-game-icons 五键(bow/award/campfire/crown_b/pouch,全 CC0)20px 烘焙量化,复用闸①②③④自检 PASS;LevelMapScreen 消费(load_tex 守卫缺位字形回退) | 冒烟 557/0+五探针 PASS |
|
|
||||||
| T3 视觉终稿落码 | 已过暗金 GOLD_DONE #68562C/Boss 双描边/通道 2-3-4px/底栏墨色(WARM/WARM_SOFT)/血条深底 | 同上 |
|
|
||||||
| T4 转场演出挂点 | 换层淡入(UiKit.motion 200ms)既有保持+换层色板渐变挂点(§2.7 切片档,level_index→tint 表,§6.3 候选方向)+Boss 胜利→关卡结算→下一关链路核对(探针驱动段全绿) | 同上 |
|
|
||||||
|
|
||||||
- 冒烟检查数 557 = 开工基线(零删减);**合并落 master 后主区复跑**:冒烟 557/0+五探针全绿(台账 225 留痕)。
|
|
||||||
|
|
||||||
## 二、真人目检清单(逐项可勾,勾完=人闸过)
|
|
||||||
|
|
||||||
- [ ] **1. 独立屏观感**:关卡开始即出图;战斗屏完全消失(零透出、非半透暗幕);屏底=深底+石纹底噪铺满
|
|
||||||
- [ ] **2. 节点图标可辨**:图上五类节点=弓(战)/桂冠(赏)/篝火(疗)/王冠(王)/钱袋(商)图标清晰互辨;当前金底上图标转深墨可读
|
|
||||||
- [ ] **3. 节点三停点态**:已过=暗金无描边、当前=亮金填充、候选=亮金描边(悬停加粗+指针)、未来=暗底;Boss=紫赤描边+外缘深墨细环;缩灰度/黑白窗口仍可分
|
|
||||||
- [ ] **4. 底栏读数**:生命(迷你血条+HP 数字)/属性(攻击·AC+加成角标)/本关加成(零加成隐藏)三组清晰可读;放弃冒险=亮砖按钮红字右端异位
|
|
||||||
- [ ] **5. 顶栏语境**:左关卡名、右 GP 徽章(◈ 数字,战后到账即刷)
|
|
||||||
- [ ] **6. 转场节奏**:选路提交→战斗屏回现;战斗胜利→(大奖励屏确认)→下一关独立屏淡入(约 0.2s);第二/三层屏底色相较第一层有冷调层进(换层渐变挂点)
|
|
||||||
- [ ] **7. 图上点击选路**:点候选节点即出发(图上点击唯一通道),深层节点(单链第 5 节点后)点击必中
|
|
||||||
- [ ] **8. 迭代 3 件**(已同库):放弃二次确认(首击转确认态+超时回落)/三停点标题(出发——选择首个节点/继续前进/选择下一节点)
|
|
||||||
|
|
||||||
**判定**:1–7 全过 + 8 注记状态 → 人闸过,M-2 关闭;登记裁决入台账,roadmap 里程碑移动。
|
|
||||||
|
|
||||||
## 三、✦ 缺料清单(只登记不生图——生图执行权在用户)
|
|
||||||
|
|
||||||
| 件 | 渠道 | 规格/提示词指针 | 现状承载 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 节点图标终稿精修(bow/award/campfire/crown_b/pouch 五键) | ♻ 已量化在役/✦ 可替换 | kenney-board-game-icons(CC0) 64px 源;替换须过复用闸四道+样张 L1 灰度互辨 | 20px 烘焙在役(本批 T2) |
|
|
||||||
| GP 徽章金币图标(现 ◈ 字形) | ♻/⚙ | 清单 §3.5 营地件同族;币形=§3.1 道具点剪影 | ◈ 字形+数字(样张注记) |
|
|
||||||
| 关卡画面换层 tint 终值 | ⚙ 色板样张批 | art-bible §6.3 三关方向(挂点已落,tint 候选值在役) | level_index→tint 表(本批 T4) |
|
|
||||||
| 关卡画面石纹底噪换挡版 | ⚙/✦ 可选 | §4.3 wall_ambient 槽换色 | tint 调制承载(切片档) |
|
|
||||||
| 行进器形象(图上"我在哪"具象化) | ✦/⚙ | 清单 §3.2 | 当前节点金块承载(无独立形象) |
|
|
||||||
|
|
||||||
## 四、代拍板追认清单(本 loop 白名单内已裁,待用户过目)
|
|
||||||
|
|
||||||
1. **已过暗金冻结新值 GOLD_DONE #68562C**(104,86,44)——旧 GOLD_DIM #8C743C 对双色墨均 <4.5:1(level-map AC「节点字面对方块底 ≥4.5:1」逼守);UiKit.GOLD_DIM 常量保留他用不动。
|
|
||||||
2. **节点图标五键选型**=bow/award/campfire/crown_b/pouch(语义近似+灰度互辨最小错位 0.18;sword 已被锻造柜台占用不重用——§4.6「一键一纹样全作不复用」)。
|
|
||||||
3. **Boss 描边=紫赤 2px+外缘 1px 深墨环**(灰度冗余通道)——紫赤灰度 72 对石纹噪底 65 灰度不可辨,样张 L2 机检逼守;§4.2 色相独占本色不变。
|
|
||||||
4. **图标双色墨制**=暗底态 WARM 暖白/当前金底 INK_ROUTE 深墨(乘法调制);编号 10px 右上角(与图标占位区零重叠)。
|
|
||||||
5. **通道折线宽取整**=未点亮 2/候选 3/悬停 4 px(原 1.5 随冻结值取整)。
|
|
||||||
6. **换层 tint 候选值**=L2 (0.84,0.99,1.28)/L3 (0.97,0.99,1.09)(§6.3 方向、明度带归一≈1;终值归色板样张批)。
|
|
||||||
7. 样张图标烘焙 20px(52×36 方块内 20px 图标+右上编号;1:1 消费零缩放——§8.2 缩放纪律从紧)。
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
# M-3 迭代 10 通关率双窗读数报告——奖励结构重构(2026-10-01)
|
|
||||||
|
|
||||||
> 采集:`adventure_monte_carlo.gd`(MC 逐局独立种子,autoplay 确定性策略=三选一候选取首件/替换放弃新件——见代拍板 f)。
|
|
||||||
> 改前锚 = `sim-data/runsum_m3iter10_t0head_20261001.jsonl`(master 405bd78 + 种 77000,各 400 局);
|
|
||||||
> 改后锚 = `sim-data/runsum_m3iter10_t9anchor_20261001.jsonl`(本批 71502ce+ + 种 78000,各 400 局)。
|
|
||||||
> 判读口径 = 冒险条件通关率(到达第 k 关者中通关者占比);带值 = [难度曲线与Boss] 现行(普通 L1 [35,55] / L2 [10,15]、完美 [35,65])。
|
|
||||||
|
|
||||||
## 双窗读数(改前 → 改后)
|
|
||||||
|
|
||||||
| 档·关 | 改前 | 改后 | Δ | 带判定(改后) |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 普通 L1 | 36.2%(145/400) | **38.8%**(155/400) | +2.6 | ✓ 带内 |
|
|
||||||
| 普通 L2 | 10.3%(15/145) | **7.1%**(11/155) | −3.2 | ✗ 越下带 2.9 点(带 [10,15]) |
|
|
||||||
| 普通 L3 | 6.7%(1/15) | 0.0%(0/11) | −6.7 | 样本 11 无判读力 |
|
|
||||||
| 普通整局 | 0.2% | 0.0% | — | — |
|
|
||||||
| 完美 L1 | 85.2%(341/400) | 83.2%(333/400) | −2.0 | ✓ 带内 |
|
|
||||||
| 完美 L2 | 22.6%(77/341) | **12.6%**(42/333) | −10.0 | 越下(完美带对 L2 无独立约束) |
|
|
||||||
| 完美 L3 | 11.7%(9/77) | 7.1%(3/42) | −4.6 | 样本 42 弱判读 |
|
|
||||||
| 完美整局 | 2.2% | 0.8% | −1.4 | — |
|
|
||||||
|
|
||||||
## 钥石产出结构(R2 渠道改一批的直接后果)
|
|
||||||
|
|
||||||
| 档 | 改前均值 | 改后均值 | 结构 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 普通 | 4.03 | **1.25** | 旧 = 10/关×通关数;新 = Boss 逐杀 3/2(三杀全首杀 = 9) |
|
|
||||||
| 完美 | 10.68 | **2.83** | 同上 |
|
|
||||||
|
|
||||||
**产出骤降 ≈ −69%**——「元进度产出重标义务重开」(06-待办清单 2026-10-01 登记条)的实据;工坊解锁节奏(阈值 1/1/2/2/3/3 按通关次数)不受钥石影响,钥石直购/锻造定价联动归元进度设计批。
|
|
||||||
|
|
||||||
## 判读(如实呈报,代拍板零判——带与行值处置归用户/调参批)
|
|
||||||
|
|
||||||
1. **方向符合设计意图**:血回满→部分回血 20% 系难度上压方向——L2 双窗下压(普通 −3.2 / 完美 −10.0)、整局收敛(完美 2.2%→0.8%),「恢复经济收紧」风险预挂(计划书 §8.1)兑现。
|
|
||||||
2. **普通 L2 越下带 2.9 点**(7.1% < [10,15] 下界):与本批「回血收紧」直接因果同向;处置选项 = 带再裁(迭代 5 返工先例:带值本身可改)或回血比例/三选一件值回调(provisional 旋钮)——**归曲线调参批现行窗,随难度曲线与Boss P1 行重扫义务一并处置**。
|
|
||||||
3. **普通 L1 微升 +2.6**:三选一属性件(攻击+1/上限+5)首关即可入手、选择性优于固定件——方向良性;仍在带内不处置。
|
|
||||||
4. **AP 轴读数**:normal 档 L1 通关者三选一常含 AP 件(每战首轮 +1)未致带外——计划书 §8.6「战斗强度敏感轴」首窗读数无异常信号;加深扫描归调参批。
|
|
||||||
5. **样本警告**:L3 双窗到达数 11/42——条件率无判读力,只作方向参考;带重扫时需定向种子扩样。
|
|
||||||
|
|
||||||
## 附:MC 锚换代合法性
|
|
||||||
|
|
||||||
- 改前→改后差异 = 计划内逻辑改动(三层奖励框架/钥石逐杀/AP 轴/回血收紧),非漂移:同种子同操作序列逐位可复现由冒烟 619 断言承载(含同种子两局 reward_events 逐位一致断言)。
|
|
||||||
- rng 扩签 reward_pick 平移全局计数器——下游固定 scope 期望(board_gen 黄金向量/选路取数位)已随冒烟全量重测全绿,无隐断言残留。
|
|
||||||
|
|
||||||
## v2 段:追加批(奖励节点共享池,2026-10-01 用户拍板)后读数
|
|
||||||
|
|
||||||
三锚 = `runsum_m3iter10_t9b_anchor_20261001.jsonl`(追加批 4f62a48 + 种 79000,各 400 局)——奖励节点从「魔法道具三选一」改「提升池共享三选一」后,局内属性获取频率上升:
|
|
||||||
|
|
||||||
| 档·关 | 共享池前(种 78000) | 共享池后(种 79000) | Δ | 带判定 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 普通 L1 | 38.8% | **43.0%**(172/400) | +4.2 | ✓ 带内 [35,55] |
|
|
||||||
| 普通 L2 | 7.1% | **11.6%**(20/172) | +4.5 | ✓ **回到带内 [10,15]**(首批越下 2.9 点随共享池自愈) |
|
|
||||||
| 普通 L3 | 0.0%(0/11) | 0.0%(0/20) | — | 样本不足无判读力 |
|
|
||||||
| 完美 L1 | 83.2% | 86.5%(346/400) | +3.3 | ✓ 带内 [35,65] |
|
|
||||||
| 完美 L2 | 12.6% | 16.5%(57/346) | +3.9 | — |
|
|
||||||
| 完美 L3 | 7.1%(3/42) | 1.8%(1/57) | −5.3 | 样本弱判读(L3 波动大) |
|
|
||||||
| 完美整局 | 0.8% | 0.2% | −0.6 | 深层收敛(L3 连乘闸效应) |
|
|
||||||
|
|
||||||
**判读(代拍板零判——归曲线调参批)**:①共享池把局内成长频率抬回设计带(普通 L2 自愈回带),首批越下带读数作废、以本段为准;②钥石均值微升(普通 1.25→1.44)——产出重标义务不变;③L3 完美档 1.8% 系连乘闸下沿波动,重扫时需定向扩样;④f 裁调研待办(首件 vs 权重随机对照)在 06 在册,本报告策略=首件。
|
|
||||||
|
|
||||||
## v3 段:掷定前置(目检修复批 cc8807e)后读数
|
|
||||||
|
|
||||||
三锚 = `runsum_m3iter10_t9c_anchor_20261001.jsonl`(种 80000,各 400 局)——掷定前置仅把道具件掷定在 reward_pick 流序内挪(消费数不变),属合法流序漂移:
|
|
||||||
|
|
||||||
| 档·指标 | v2(共享池后,种 79000) | v3(掷定前置后,种 80000) | 判定 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 普通 L1 | 43.0% | **41.8%**(167/400) | ✓ 带内 [35,55] |
|
|
||||||
| 普通 L2 | 11.6% | **10.2%**(17/167) | ✓ 带内 [10,15](贴下沿——重扫窗口关注点) |
|
|
||||||
| 普通整局 / 钥石 | 0.0% / 1.44 | 0.0% / **1.38** | 持平 |
|
|
||||||
| 完美 L1 | 86.5% | 86.5%(346/400) | 维持既有挂账口径(非本批回归) |
|
|
||||||
| 完美 L2 / L3 / 整局 | 16.5% / 1.8% / 0.2% | 15.6% / 1.9% / **0.2%** / 钥石 **3.01** | 漂移 ≤0.9pp——无实质变化 |
|
|
||||||
|
|
||||||
**判读**:掷定前置系呈现面修法,通关率/钥石面零实质漂移;v2 段全部结论维持(普通 L1/L2 带内、产出重标义务、L3 扩样注记)。锚换代链 = 77000(改前)→ 78000(重构后)→ 79000(共享池后)→ 80000(掷定前置后,现行)。
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
# M-3 迭代 5 杠杆网格扫描报告(T3)
|
|
||||||
|
|
||||||
- **日期**:2026-09-28
|
|
||||||
- **被测构建**:master @ 20533e3 + T1 基线(无行值改动——本报告全部读数为**补丁即跑即还原**的扫描读数,现行数据表零变更)
|
|
||||||
- **工具**:`tools/t3_lever_scan.py`(本批批内扫描入口——对 `variation.tres`/`enemy.tres` 打锚文本补丁 → 跑 `adventure_monte_carlo.gd` → git checkout 还原);原始逐配置读数 `sim-data/t3_scan_results.jsonl`(10 配置)
|
|
||||||
- **方法**:配对种子(全部配置同种子窗 73000,unique 逐局独立,N=100/策略/配置)——配置间差分 = 配对增量,消种子方差;判定带 = C4 冻结现行带(普通 L1 [35,55]/L2 [25,45]、完美 [35,65])
|
|
||||||
- **过程事故登记**:B0 首跑与 P2 并发执行致两者读到同一份补丁表(读数逐位相同=作废)——扫描配置禁并发的教训入账;B0 已单跑重测(本报告以重测值为准)
|
|
||||||
|
|
||||||
## 一、扫描网格与读数(N=100/策略,配对种子 73000)
|
|
||||||
|
|
||||||
### 配对基线 B0(现行表值)
|
|
||||||
|
|
||||||
| | 普通 L1 | 普通 L2 | 完美 L1 | 完美 L2 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| B0 读数 | 50.0% | 4.0% | 89.0% | 15.7% |
|
|
||||||
| 现行带 | [35,55] ✓ | [25,45] ✗ | [35,65] ✗ | [35,65] ✗ |
|
|
||||||
|
|
||||||
### OFAT 单杠杆增量(对 B0 配对差分,单位 pp)
|
|
||||||
|
|
||||||
| 探针 | 杠杆位 | Δ普通L1 | Δ普通L2 | Δ完美L1 | Δ完美L2 | 定性 |
|
|
||||||
|---|---|---|---|---|---|---|
|
|
||||||
| P1 | 岩浆 effect_value 2→1 | 0 | **+14.0** | 0 | +13.5 | L2 减难·强 |
|
|
||||||
| P2 | per_level_bonus 2→0 | 0 | **+14.0** | 0 | +15.8 | L2/L3 减难·强(L3 0→21.4%) |
|
|
||||||
| P3 | L2 Boss 卓尔 130→100 | 0 | +4.0 | 0 | +5.6 | L2 减难·弱 |
|
|
||||||
| P4 | 荆棘 effect_value 1→2 | −2 | +0.2 | **−7** | −1.1 | L1 加难·弱 |
|
|
||||||
| P5 | L1 Boss 酋长 72→86(r_boss 0.67→0.80 域内) | −6 | +0.5 | −1 | −4.3 | 只咬普通档(完美 L1 Boss 胜率 98%,血量加压打不到它) |
|
|
||||||
| P6 | L1 群战上探(一伙/大地精 max 3→4) | — | — | — | — | **结构性不可用**:ConfigDB 跨表校验硬上限 unit_count_max 域 [unit_count, 3],抬上限=改校验域,超本批授权 |
|
|
||||||
|
|
||||||
### 组合配置
|
|
||||||
|
|
||||||
| 配置 | 普通L1 | 普通L2 | 完美L1 | 完美L2 | 判 |
|
|
||||||
|---|---|---|---|---|---|
|
|
||||||
| C1 = P1+P2 | 50.0 ✓ | 22.0 ✗(−3) | 89.0 ✗ | 43.8 ✓ | 完美 L2 入带 |
|
|
||||||
| C2 = C1+P4+P5(注册杠杆全开) | 41.0 ✓ | 22.0 ✗(−3) | **81.0 ✗** | 49.4 ✓ | 全网格完美 L1 下限 |
|
|
||||||
| C3 = C1+P3+P7(percent 5→4) | 50.0 ✓ | **24.0**(带缘 −1,±4.4 CI 内) | 89.0 ✗ | **56.2 ✓** | 3/4 入带最优解 |
|
|
||||||
| C3 侧效应 | L3 无带:普通 0→16.7%、完美 0→34.0%(plb0+percent4 使 L3 变异密度 9%→4%) | | | | L3 带外注意项 |
|
|
||||||
|
|
||||||
## 二、扫描结论
|
|
||||||
|
|
||||||
1. **完美档 L1 全网格不可达**:89.0% 在全部 L2 减难杠杆下零位移(P1/P2/P3/P7 均不触 L1 环节);L1 定向杠杆全部弱(荆棘 +1 = −7pp 上限、酋长 +14 血对完美无感、群战上探被校验域封死)——注册杠杆集内 81%(C2)即完美 L1 下限,距带 [35,65] 上缘差 16pp。**完美 L1 的强势来自 10×10 板形 × 完美画像挖掘效率 × 奖励经济学,不在任何已注册旋钮的量程内**。
|
|
||||||
2. **L2 双画像可收带**:C3 类组合(岩浆 2→1 + per_level_bonus 2→0 + 卓尔 130→100 + percent_of_cells 5→4)把普通 L2 送到带缘 24.0%(差 1pp,N=100 噪声带内)、完美 L2 56.2% 稳入带。
|
|
||||||
3. **L3 侧效应**:L2 减难杠杆同时大幅抬升 L3 通关率(完美 0→34%)——L3 无带不判,但 L3 行值 provisional-pending-growth 的再校准(灰矮人矿城血轴)在判读后若采纳 C3 类组合将需要跟进(另批或同批追加行,非本扫描范围)。
|
|
||||||
4. **工程发现**:r_boss 锚漂移——数值设计批 Boss 血轴拔高后,L2/L3 现值 r_boss≈0.33(Σ普通战生命期望=389/415,全行集口径)低于注册域 [0.5,1.1] 下限(L1 0.67 在域内);复算与是否收锚归出口判读。
|
|
||||||
|
|
||||||
## 三、伴生对账件重跑记录(随批义务)
|
|
||||||
|
|
||||||
### ① 清图支配性护栏 B 重跑 ✅(tools/clear_dominance_audit.py,现行 .tres 值链)
|
|
||||||
|
|
||||||
- L1 前段·实测(10×10 统一板):完美档 Δ_clear 首次翻正(+8.3/+5.5/+2.7,u=1/2/3)——棋盘统一批后完美档在前段板清图挖掘已过支配线;
|
|
||||||
- L1 后段·实测 / L2·实测:仍全线 ✗(完美档缺口 −6.6 ~ −34.2 当量)——缺口形态与 2026-09-19 基线记录同构(当期记录 L1≈24/L2≈45),板形统一收窄了前段、未翻转后段;
|
|
||||||
- 护栏 B(防钓鱼上界):D_ref=4 下 C=13 vs 上界 10(|S|min=50)越 1.3×,|S|min=60 带 ✓——**越线处置三选一仍挂用户**(登记债务,本批不动数字)。
|
|
||||||
|
|
||||||
### ② 挖掘风险不等式(重立记录)✅
|
|
||||||
|
|
||||||
现行惩罚链(八型批换装后):雷格负向=踩雷直伤(flat 主角单据)+群伤负向=警觉(敌方 AC +1 掷点折扣分布型);当量换算走效果档位对照表(flat E=表值;AC 轴=点数×5pp×D_ref=0.2 当量/次攻击)。重立结论:**风险端定价对收益端系统性不足的状态未闭合**(与清图支配性 L1 后段/L2 ✗ 区同源——挖掘收益端在板形统一与奖励密度放大后走强);修正位=雷格惩罚行值/负向权重池,**不在本批注册杠杆集**(属新杠杆授权),债务登记维持、行值不动。
|
|
||||||
|
|
||||||
### ③ heal 负向直伤 + 乏力 sapped 量级当量 ✅
|
|
||||||
|
|
||||||
- heal 负向直伤现行 power=1:当量换算表 flat 类 E=表值=1 = 0.25×D_ref(一次基准攻击的 1/4)——与荆棘 1/岩浆 2/踩雷直伤同处 flat 小整数档(C1 加法核一致),**当量自洽,无越带面**(该行值无注册带);2026-09-17 压缩批(−4→−1)的量级锚对账义务以本记录履行。
|
|
||||||
- 乏力 sapped(−25% 输出一拍):percent 类 E=|层数×行值|÷100×D_ref=1.0 当量/结算——与 flat 一档同量级,轴一致。**已知债(不在本批)**:sapped 经 hero_offense 池的乘区接线缺口(格面调研「sapped 死效果」修复报价)仍挂格面差异化批,量级当量不受其影响。
|
|
||||||
|
|
||||||
### ④ 换算率锚联动复验 ✅
|
|
||||||
|
|
||||||
6/9/1(meta.tres conversion)在 T1 verifier campaign 段实测驱动正常:注入逐档生效无断链、爬升曲线健康(完美档 ~21 局/普通档 ~36–51 局进稳态通关,检查点表值平移 +21/+38 随触发自动生效)。锚定时效注记:6/9/1 标定于 2026-09-23(L2 收紧后旧口径);本批 L2 若按 C3 类收带(变易),爬升将进一步加速——**是否重标归出口判读**(护甲行强条目纪律:重测须按解锁后参数实测=verifier campaign 段即实测面)。
|
|
||||||
|
|
||||||
### ⑤ 刷新经济阈值基线读数 ✅(T1 交付,阈值提案随判读锁)
|
|
||||||
|
|
||||||
基线(T1):完美档 1.95 次/局·弃图率 19%·每轮刷新率 ≈4.7%(2026-09-19 基线 0.23 次/局·≤0.6% 的 ~30 倍位移——弃图重摇已进完美画像策略核心);普通档全零。**阈值提案(判读锁)**:预警阈值=弃图率 >30% 或每轮刷新率 >10%(≈2× 现行基线带外报警);现行值记「高弃图常态」观察态。
|
|
||||||
|
|
||||||
## 四、判读待决(停机等待面)
|
|
||||||
|
|
||||||
本批行值**零变更**(扫描=补丁即还原)——收带投值(provisional→正式)卡两点:
|
|
||||||
|
|
||||||
1. **U1 真人局未到账**:k 系数(真人整关承伤中位 ÷ 模拟完美档中位 55.0,预警线 k<0.3)未合入——06「加难杠杆扫描」条目的判读门=真人批 k 系数。采集指引=07⑨(零天赋档 3–5 局,日志自动落盘)。
|
|
||||||
2. **完美档 L1 无解需用户裁决**(三选一,与 U1 无关、独立待拍):
|
|
||||||
- 甲:**新杠杆授权**——敌方攻击基线上探(acceptance-ap6-ac f① 候选中有、06 条目注册表未收)或 L1 专属加难内容(新杠杆,须走杠杆注册);
|
|
||||||
- 乙:**带修正**——完美档 L1 带上缘 65 上调(改带=用户拍板,C4 让位);
|
|
||||||
- 丙:**接受 89% 挂账**——完美画像定位为上界仪(非真人画像),其 L1 越带不判、优先保 L2 双画像收带(本扫描读数支持)。
|
|
||||||
3. C3 类组合(若判读采纳)的行值清单:`variation.tres` 岩浆 effect_value 2→1、per_level_bonus 2→0、percent_of_cells 5→4;`enemy.tres` (2,9) 卓尔 hp 130→100;伴随义务=registry 同步 + L2 池复验(T4 AC 投值前先锁本组合,防两轴混淆归因)+ 小样 20 局→全量确认 + 侧效应 L3 记录。
|
|
||||||
|
|
||||||
## 五、判读结果(2026-09-28 晚回填——用户两输入到账)
|
|
||||||
|
|
||||||
1. **完美 L1 三选一:用户裁丙**——接受 89% 挂账(完美画像定位上界仪,不判),优先保 L2 收带。带数字不动(C4 完整)。
|
|
||||||
2. **C3 组合锁值落地**:`variation.tres` 岩浆 effect_value 2→1 / per_level_bonus 2→0 / percent_of_cells 5→4 + `enemy.tres` (2,9) 卓尔 hp 130→100 + registry 同步(variation 条目三处)——行值 provisional→正式随迭代 5 出口人闸追认。小样 20 局方向正常(完美 L2 72%·L3 46%,N=20 噪声带内);全量确认读数(N=200/策略·种子窗 76000)= `sim-data/runsum_m3iter5_c3locked_20260928.jsonl`(结果见台账 238 与 T4 报告对照基线)。
|
|
||||||
3. **k 门处置**:U1 真人局到账形态=1 个不完整会话(2 轮即中断),k 系数不可计算——用户知悉后指令按丙裁决越过 k 门续跑收带(k 合入义务保留,见基线报告真人位更新)。
|
|
||||||
4. 遗留挂账(出口人闸面):r_boss 锚漂移收锚(卓尔 100→r_boss≈0.26)、L3 侧效应再校准(变异密度 9%→4%)、刷新经济阈值数字、护栏 B 三选一。
|
|
||||||
|
|
||||||
> 扫描完成即 T3 机器面全毕;判读已按用户输入收口(丙+C3 锁值)。T4(AC 投值)/T5(节点图生成,实施门=调参收带后——本批即收带)按串行续跑。
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
# M-3 迭代 5 返工批——U2 裁决终态读数报告(T-A/T-C,2026-09-29)
|
|
||||||
|
|
||||||
- **被测构建**:worktree iter5-rework-20260929 @ c3c1725(C1 两刀 + AC v1 硬梯度 + 节点图池 U2 重生成终态)
|
|
||||||
- **读数源**:MC N=200/策略 · 种子 79000 unique · route=min(`sim-data/m3iter5-rework-mc-final-20260929.stdout.log`,400 局);verifier na=150/k=100 · 种子 9500 · hp_first(500 局,本报告 §三)
|
|
||||||
- **判定带**:C4 冻结不动(普通 L1 [35,55] / L2 [25,45]、完美 [35,65]、F4 Boss 承伤 ≤50% provisional)
|
|
||||||
- **裁动上下文**:U2 三推翻(a 甲 / b C1 / c v1)+ 池重生成两规则——本报告 = 该组合的**首次测量**(事先无任何先测)
|
|
||||||
|
|
||||||
## 一、逐关条件通关率(MC 双窗单窗,N=200/策略)
|
|
||||||
|
|
||||||
| 层 | 画像 | 读数 | 现行带 | 判 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| L1 | 普通 | 42.5% (85/200) | [35,55] | **落带** |
|
|
||||||
| L2 | 普通 | **10.6%** (9/85) | [25,45] | **越下带 14.4 点** |
|
|
||||||
| L1 | 完美 | 84.0% (168/200) | [35,65] | 越上带(**甲挂账**——T-B 杠杆提案待批,本批不动) |
|
|
||||||
| L2 | 完美 | **22.0%** (37/168) | [35,65] | **越下带 13 点** |
|
|
||||||
| L3 | 普通 / 完美 | 0% (0/9) / 8.1% (3/37) | 无带 | 只测不判 |
|
|
||||||
|
|
||||||
## 二、对照与归因
|
|
||||||
|
|
||||||
| 状态 | 普通L1 | 普通L2 | 完美L1 | 完美L2 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| C3 锁值+无 AC+旧池(迭代 5 落籍态) | 46.5% ✓ | 31.2% ✓ | 83.0%(丙) | 56.6% ✓ |
|
|
||||||
| v1 AC 叠 C3(T4 首版实测) | 42.0% ✓ | 14.3% ✗ | 84.0% | 53.6% ✓ |
|
|
||||||
| **C1+v1+新池(本批终态)** | 42.5% ✓ | **10.6% ✗** | 84.0%(甲) | **22.0% ✗** |
|
|
||||||
|
|
||||||
归因三轴(方向性,未做单轴拆解实验):
|
|
||||||
|
|
||||||
1. **C1 vs C3**(占比回 5% + 卓尔回 130):T3 扫描口径下该两行 ≈ −5~−6pp(C3 24.0 → C1 22.0 普通档,完美 56.2 → 43.8)。
|
|
||||||
2. **AC v1 硬梯度**:T4 实测 v1-on-C3 普通 −16.9pp(31.2→14.3);杂鱼梯度恢复(0→1~5 带内)与重击手 8/重装手 9 再叠加。
|
|
||||||
3. **池重生成(本批新变量,最大未知)**:新网状图最短路径战斗节点数 3(旧图 4)——同路线战斗数变少=入 Boss 前养成变薄,L2 双画像同步下移(完美 53.6→22.0 的主落差在此轴,方向证据=完美档对难度变化最敏感)。
|
|
||||||
|
|
||||||
> ⚠ 归因注意:三轴同批落地,本报告只有终态读数——轴间拆解须补丁即跑即还原扫描(归调参批/迭代 7 标定批,本批不做)。
|
|
||||||
|
|
||||||
## 三、verifier 全段(独立种子窗 9500 · N=150+100 · 行键行数双核对 500 局)
|
|
||||||
|
|
||||||
- **双窗对拍同向**:普通 L1 44.0% / L2 13.6% / L3 0%;完美 L1 82.7% / L2 32.3% / L3 17.5%——与 MC 窗(42.5/10.6/84.0/22.0)同向同量级,非窗口彩票。完美 L2 双窗 22.0–32.3%(均低于带下缘 35,窗口波动 ~10pp 如实记录)。
|
|
||||||
- **止步归因**:普通档主败退 = **第一层·节点6·Boss ×47**(食人魔酋长 AC 8 在 L1 收口位成为普通档第一墙)+ 第一层·节点2·战斗 ×23;完美档主败退 = **第二层·节点9·Boss ×40**(卓尔 130 血 + AC 10 长战)+ 第二层·节点1·战斗 ×17——Boss 收口位税负集中,与 AC v1 设计语义一致。
|
|
||||||
- **营地循环(换算率 6/9/1 驱动复验)**:注入逐档生效无断链;普通档 ~60–90 局进稳态(滑窗 100%/100%/90-100%)、完美档收敛更快——对比上一基线(普通 ~36 局)**爬升放缓 ≈2 倍**(L2 难度上调的镜像后果),曲线形状健康。**换算率重标判读:锚功能正常无需急改,重标数字候选归迭代 7 标定批**(本批不动 6/9/1)。判定端报告 sim-data/balance-verifier-20260929-rework.raw.md。
|
|
||||||
|
|
||||||
## 四、伴生复算
|
|
||||||
|
|
||||||
- **r_boss 锚**(回退卓尔 130 后):L2 130/389 ≈ 0.33 · L3 140/415 ≈ 0.34——仍低于注册域 [0.5,1.1] 下限,**挂账维持**(收锚归调参批)。
|
|
||||||
- **L3 变异密度**:5%+0/关(旧 5%+2 → C3 4%+0 → 本批 5%+0)——介于 9%(并流前口径)与 4%(C3)之间;L3 读数普通 0%/完美 8.1%,带外观察态不变。
|
|
||||||
- **模板抽取分布**:15 张全被抽中(L1 五张 395–562 次、L2 五张 162–236 次、L3 五张 8–74 次=条件于到达),无死模板。
|
|
||||||
|
|
||||||
## 五、判读与移交
|
|
||||||
|
|
||||||
1. **普通 L2 10.6% / 完美 L2 22.0% 双越下带 = U2 组合的知情后果**(用户裁决链:b C1 少两刀减难 + c v1 加 AC 税 + ③ 池加宽连带短路径)——按返工计划书待批点丙呈报,**数字待用户追认**(追认前行值维持 provisional)。
|
|
||||||
2. 完美 L1 84.0% → T-B 杠杆提案(design/research/perfect-l1-lever-proposal-2026-09-29.md,荆棘外延推荐)待批后另跑扫描。
|
|
||||||
3. 换算率重标判读、r_boss 收锚、刷新阈值、护栏 B——维持挂账序列不变。
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
# 迭代 9 9A 段闸人闸检查单(2026-09-30 交付,待用户实机目检)
|
|
||||||
|
|
||||||
> 交付人=迭代 9 执行会话。9A 段(T0-T8+T11-T14+T15 重闸)全部落籍于 worktree `m3-iter9-20260930`(基点 3933723,段头 65e9016..c7646c5 十一批次)。**本检查单过闸 + 三裁决表态([呈报单](m3-iter9-t8-rulings-2026-09-30.md))= 9A 出口**,其后 T9/T10(挂三裁决)与 9B(T16-T20)续行。
|
|
||||||
> 实机启动:主区合并后开始界面进入(或先看截图快照 `artwork/qa-screens-20260930/`——正式判定以实机为准)。
|
|
||||||
> 判定记法:每项 ✅/❌+一句话;❌ 项走复述确认制(我先复述你的反馈再改)。
|
|
||||||
|
|
||||||
## 一、v3.5 视觉规格目检(对照验收基准图 `artwork/mockups/sample-batch-v35-draft-2026-09-29.png`)
|
|
||||||
|
|
||||||
1. **E 格高墙**:已开格南邻墙→南部 30% 承接墙面,墙顶纹理原亮度直贴(同色零暗档);(b)-(c) 交界无边框(墙面直贴墙顶);墙脚阴线恰一格线。
|
|
||||||
2. **地板归一**:已开格底提亮至世界底层档(L≈0.10),纹理相对对比保留。
|
|
||||||
3. **数字亮墨直画**:已开格数字无色牌直画——1–3 冷亮/4–5 暖白/6–8 金亮三档色温可辨。
|
|
||||||
4. **色牌后备**:踩雷「雷」与遮蔽「?」维持垫牌(牌上深墨);普通数字无牌。
|
|
||||||
5. **B 区舞台**:暗背景暖石档+顶光柱氛围(四柱)+站桩石板地台与椭圆落影。
|
|
||||||
6. **ui_kit 对比度**:C 区属性行/结算明细条/菜单说明/菜单副标题——视觉上不再灰蒙(机检 WCAG 5.79–13.14 ✓)。
|
|
||||||
7. **字号**:菜单帮助文/C 区行/明细摘要放大到 16px 后无溢出无挤压感。
|
|
||||||
|
|
||||||
## 二、扩编卡目检(呈现欠账四件)
|
|
||||||
|
|
||||||
8. **关卡画面 GP 常驻徽章**:顶栏右侧◈直角数据框,读数=当前冒险 GP(买商店/拿奖励后回图数值会动)。
|
|
||||||
9. **C 区本关强化列表**:无加算时整节隐藏;有商店购买/大奖励加算时出现「攻击 +N/生命上限 +N/护甲 AC +N」行(验证路径:买一件商店强化进战斗看 C 区)。
|
|
||||||
10. **封印旗纹理**:标旗格=黑色矩形旗印记(非文字「旗」);观感与墙瓦片可读不粘连。
|
|
||||||
11. **营地视觉终稿**:石纹全屏底+顶栏铭牌/钥石徽+三柜台列(锻造/工坊/图鉴)+底栏关闭/注记——对照方向稿 `artwork/mockups/v3-draft-2026-09-29/4-camp.png`。
|
|
||||||
|
|
||||||
## 三、整屏样张闸语义项(机检不可判面)
|
|
||||||
|
|
||||||
12. **焦点预算(首焦唯一)**:战斗屏第一眼焦点=棋盘数字区/立绘,无第二焦点竞争;菜单/营地/关卡屏同判。
|
|
||||||
|
|
||||||
## 四、回归抽查(迭代 8 遗留项复核——视觉批不应触碰的面)
|
|
||||||
|
|
||||||
13. 中断续玩(关游戏重开→继续上局)、战斗胜利结算框、轮间结算逐条演出、设置面(音量/全屏/减动效)、放弃二次确认、图例解码。
|
|
||||||
|
|
||||||
## 五、代拍板追认清单(随 commit 记录,逐项追认或推翻)
|
|
||||||
|
|
||||||
| # | 代拍板项 | 内容 |
|
|
||||||
|---|---|---|
|
|
||||||
| k1 | E 格墙面材质与阴线 | 墙顶 center 瓦片顶部区带直贴+1px 墙脚阴线(方向稿同色 52,42,32) |
|
|
||||||
| k2 | 亮墨三档色值 | #D8ECF0/#F0E2C8/#F8E3A8(验收图同值;边界抗锯齿 ±微调不入档) |
|
|
||||||
| k3 | 色牌后备收窄 | 仅雷/「?」垫牌(数字直画;复杂格底判定随装饰瓦片批扩) |
|
|
||||||
| k4 | 光柱参数 | 四柱@1280 基准 110/900/1055/1210、暖光 α26 渐隐(带内微调权限已用) |
|
|
||||||
| k5 | 站桩地台 | 板身 150,130,100/描边 90,76,58/顶光 196,172,132(方向稿取色) |
|
|
||||||
| k6 | 强化列表行文 | 「攻击 +N/生命上限 +N/护甲 AC +N」 |
|
|
||||||
| k7 | 营地行文短格式 | 「生命锻造 +3/级」「Lv 0」「20 钥石」;柜台头带色/行板色(方向稿取色) |
|
|
||||||
| k8 | 明细摘要/区头字号 | 摘要 14→16、区头 14/15→16(辅助提示 14 维持) |
|
|
||||||
| k9 | 旗纹理形态 | 32×32 旗杆 2×22+矩形旗面 13×10 纯封印黑(无描边) |
|
|
||||||
|
|
||||||
## 六、段末重闸读数留痕(2026-09-30 实测)
|
|
||||||
|
|
||||||
冒烟 596/0+run_all 15 套全绿+六探针全 PASS(ui_input 十四断言/ui_probe/ui_tune/fx 全链/click 问题=0/layout 退出 0)+doc 三闸零新增(lint 8=8/term 2=2/死链 worktree 假象 3)+熵增 PASS+样张机检 17/17+整屏样张闸机检 PASS(WCAG 5.79–13.14/明度三档 204>79>55/纹理幅度 ≤12.9)+MC 对拍(见台账 294/295——本轮重跑读数以台账为准)+draw calls 实测 **504**(基线 270/目标 <200——**缺口呈报**,优化候选清单见台账,处置待你裁决)。
|
|
||||||
|
|
||||||
## 七、挂起项(不卡本闸)
|
|
||||||
|
|
||||||
- T9 分辨率两档落码 / T10 C 档黄金图基准 → 挂三裁决(呈报单裁决一/三)。
|
|
||||||
- T16 draw calls 缺口处置 → 三案(见台账):优化批立项/目标带调整/接受现状。
|
|
||||||
- 9B:T17 真人目检总清(本文档 §一-四即其 9A 前半,9B 全流程版随出口闸交付)/T19 真人通关率(照 07 §⑨ 指引 3–5 局)。
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
# M-3 迭代 9 出口检查单(2026-10-03 收口)
|
|
||||||
|
|
||||||
> 迭代 9 =「视觉规格落码 + Alpha 验收」两段(9A 视觉落码 2026-09-30 落籍;9B Alpha 验收段=本单)。计划书=`.zcode/plans/m3-iter9-loop-plan-2026-09-30.md` §5(T16-T20)。
|
|
||||||
|
|
||||||
## 一、T16-T20 执行面
|
|
||||||
|
|
||||||
| 卡 | 内容 | 状态 | 证据 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| T16 | 修复批 11 件 | ✅ 全落 master | f462175→5debf6a 系+硬锁 v3.1/演播后排窗(5486ms/22 行 ±7ms);本出口批追加 35 两处字色(25a2e50) |
|
|
||||||
| T17 | 全流程真人目检 36 项 | ✅ 全判 | [判定记录](m3-iter9-t17-fullflow-checklist-2026-10-01.md) 批1-4(13✅/35 两处修复/32 环境限制待独立复验) |
|
|
||||||
| T19 | 真人标定局 | ✅ 佐证级收口(用户裁件五乙) | [读数报告](t19-real-playtest-readings-2026-10-02.md):有效局 2(1 通关 1 死 L3 首战);k=0.60 落 >0.5 带内 |
|
|
||||||
| 带值批 | 新带值拍板 | ✅ 用户逐项裁 | 四带甲案+普通档失败常态窗+雷当量 6/8/8 转正+k 预期带([难度曲线与Boss.md 带换代节](../gdd/systems/冒险循环/难度曲线与Boss.md)) |
|
|
||||||
| T20 | 出口闸五步 | ✅ 本单 | 批末闸数字见下节 |
|
|
||||||
|
|
||||||
## 二、批末闸(2026-10-03 全量留痕)
|
|
||||||
|
|
||||||
| 闸 | 结果 |
|
|
||||||
|---|---|
|
|
||||||
| 冒烟(run_smoke 三闸) | **636 项检查,0 失败**,PASS |
|
|
||||||
| run_all 单元 | **15 套全绿** exit=0 |
|
|
||||||
| 探针 | ui_probe PASS / ui_layout exit0(测量面)/ fx_probe PASS 全链 / t17_defer PASS(胜利同帧挂起+排播完开窗,waited=5.5s)/ **ui_click_probe 超时红=已知挂账**(完整局适配+硬锁交互语义差,06 专项 2026-10-03 补登记挂 M-4 迭代 11 窗口——非本批引入,perf 审计 2026-10-02 已定性) |
|
|
||||||
|
|
||||||
## 三、带值批说明(透明记录)
|
|
||||||
|
|
||||||
81000 锚(N=400/档)**经用户质询定性为「非数值验证」**:本批零数值改动,跑批性质=k 终值补算源(件四甲)+出度重建结构位移存档(完美战役 78.5%→59.0%,−19.5pp,只测不判)——见 [81000 读数](../../sim-data/读数_m3iter9exit81000_20261003.md)。锚随 M-4 数值收敛批再换代。
|
|
||||||
|
|
||||||
## 四、代拍板追认清单(待用户,不阻塞出口)
|
|
||||||
|
|
||||||
| 项 | 内容 | 状态 |
|
|
||||||
|---|---|---|
|
|
||||||
| 迭代 10 七项 | a 用备选/b-f 认同/g semver(2026-10-01,台账 298) | 待追认 |
|
|
||||||
| 本出口批 | 无新增代拍板(带值四件/T19 收口/k 保留/35 修法均用户当场裁) | — |
|
|
||||||
|
|
||||||
## 五、挂账移交(出迭代,不阻塞)
|
|
||||||
|
|
||||||
32 全屏独立运行复验(编辑器内嵌限制)|31 音量实效(待 BGM 资产)|5/6/19 审美轴(06 在册)|ui_click_probe 完整局适配(06 专项)|全局难度收敛批(带 A/B 落带,M-4 排序)|迭代 10 人工参与项(07 ⑩)。
|
|
||||||
|
|
||||||
## 六、出口结论
|
|
||||||
|
|
||||||
**迭代 9 出口成立;M-3「数值标定与 Alpha 创建」关闭;Alpha 到手;M-4 门解**(迭代 11 窗口:同调批/商店批/反制批按读数排序,台账 303 排布)。
|
|
||||||
@@ -1,246 +0,0 @@
|
|||||||
# 迭代 9 T17·全流程真人目检清单(2026-10-01 交付;**挂起待用户统一执行**——2026-10-01 用户令不阻塞主线,后续一次性做完)
|
|
||||||
|
|
||||||
> **这是什么**:T17 交付物(全流程版)。把散落在迭代 6/7/8 出口单和迭代 9 9A 段闸单里的目检点收拢成**一份**清单——照着从开始菜单一路玩到三结局,逐项打勾。共 **36 项**,全程约 **35–45 分钟**。
|
|
||||||
> **状态注记(2026-10-01 数值修复批合并后)**:①启动路径已改主区(worktree 已清)——见下方「实机怎么开」;②两类项**已提前验收**,玩到对应项直接打勾即可:数字可读性(L1 亮墨直画 / L2·L3 色牌垫底——用户实机确认可读)、难度数值(用户验收「令人稍微满意」);③本单仍是迭代 9 出口闸(T17)的正式载体,过闸记录回填文末。
|
|
||||||
> **进度(2026-10-02 终态)**:**第 1–36 项已全部判定完毕**(判定记录见文末「判定记录」节,正文保留作参照)——13 项 ✅、第 35 项两处对比度 ❌(修法呈报待确认)、第 32 项系 Godot 编辑器内嵌窗口环境限制(独立运行复验待做)。11 件修复真机复验:硬锁+排窗由 t17_defer_probe 定点证据承接,其余五处(旗印/伤害数字/挖格不掉道具/出度≤2/debug 血量)并入 T19 真人局顺带补验。**T17 判定段收口,后续走 T19 真人批。**
|
|
||||||
> **验收人=你**(最终验收人)。每项只判「呈现对不对」:照「操作」做 → 对照「预期」→ 打勾。数值好不好玩(Boss 难度、承伤压力、踩雷疼不疼等体感)**不在本单**——那归 T19 真人通关率批,照《07-体验验证清单》§⑨ 另玩 3–5 局。
|
|
||||||
|
|
||||||
## 实机怎么开(三步)
|
|
||||||
|
|
||||||
1. 用 Godot 打开工程 `D:\code\g-plan2\game\project.godot`(**主区 master**——数值修复批已合并 4b4a011,含全部新内容)。
|
|
||||||
2. 按 F5 运行,出开始菜单。
|
|
||||||
3. 点「开始冒险」开新局。若菜单上有旧档的「▶ 继续上局」:直接点「开始冒险」,在确认提示里选「开新冒险」覆盖旧档(这个提示就是第 30 项的目检对象,顺手可先记一笔)。**本清单从新冒险起步,勿续旧断点。**
|
|
||||||
|
|
||||||
## 判定记法
|
|
||||||
|
|
||||||
- 每项判定框:打 ✅ 或 ❌,再写一句话(✅ 写「正常」也行;❌ 写你实际看到了什么)。
|
|
||||||
- ❌ 项走**复述确认制**:我先复述你的反馈、确认理解一致后再改,不闷头猜。
|
|
||||||
- 建议跑法:主线一局打到底过 §一→§五 第 25 项(约 25–30 分钟);再开三个短局收第 26/27/28–30 项(各约 3–5 分钟);§七/§八 随时补(约 5 分钟)。
|
|
||||||
|
|
||||||
## ★ 数字长相速览(进第一关前先读这条,避免误判)
|
|
||||||
|
|
||||||
本批修复后,三关数字是**两种形态,都算对**:
|
|
||||||
|
|
||||||
- **第一关**:数字是白亮色的字,**直接印在棕色地板上**,没有小牌垫底。
|
|
||||||
- **第二、三关**:数字印在**米色小方牌**上(深色字 + 米色底)。
|
|
||||||
- 反过来才是问题:第二/三关出现无牌白字,或第一关出现小牌。
|
|
||||||
|
|
||||||
## 屏面叫法(下文统一用词)
|
|
||||||
|
|
||||||
- **战斗信息栏** = 战斗画面里常驻显示攻击/生命/护甲与道具槽的面板。
|
|
||||||
- **雷图** = 挖掘用的棋盘;**路线图** = 关卡画面上选路走的节点图。
|
|
||||||
- **舞台** = 战斗画面里角色站立的背景区。
|
|
||||||
- **停点** = 游戏自动保存的进度点(「继续上局」按钮文案里就叫这个名字)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §一 开始菜单与营地(第 1–4 项)——已判定(2026-10-02)
|
|
||||||
|
|
||||||
判定:1✅(新档无继续钮=正常)/ 2✅ / 3✅(简答「有」,工坊三态未逐条,异常随时补报;钥石 0 工坊解锁动作等钥石回补)/ 4✅。
|
|
||||||
|
|
||||||
## §二 第一关(第 14–18 项未判;第 5–13 项已判定见文末记录)
|
|
||||||
|
|
||||||
**14. 奖励节点三选一**
|
|
||||||
- 操作:沿路线图走到奖励节点。
|
|
||||||
- 预期:弹「关卡奖励点」三枚道具按钮,**必须三选一**(没有跳过钮);选定后道具入背包、浮出一条小提示、回到选路口。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**15. 魔法道具两步使用与拒绝零消耗**
|
|
||||||
- 操作:先看战斗信息栏的道具槽(**道具只来自第 14 项奖励节点三选一/通关三选一**——战斗/挖格不掉道具,掉落渠道已于 2026-10-01 退役;工坊未解锁时三选一也不出道具件,本项可等抽到道具件再做)。点空间类道具(探巢摆钟/爆破工兵包)槽位 → 点雷图目标格;点工兵令槽位;再拿空间类道具故意点一块**已开格**。
|
|
||||||
- 预期:空间类点槽后槽位金框选中出提示,点目标格后真视红框/预读徽章出现(爆破包则该格爆开);工兵令点槽即用、本轮行动点立涨;点已开格则弹拒绝提示且**道具不消耗**。(顺手可验:对真视红框格插旗照常扣 1 行动点——真视给信息不给保护。)
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**16. 休息与商店**
|
|
||||||
- 操作:走到休息节点休息一次;走到商店买一件强化(如生命 +5)。
|
|
||||||
- 预期:休息后血量上涨;商店购买扣 GP、对应属性上行;两处变化都能在战斗信息栏核对。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**17. 图上点击选路**
|
|
||||||
- 操作:战斗胜利点「下一节点」后,在路线图上点你想走的下一节点。
|
|
||||||
- 预期:点哪个节点走哪条路;已走过的节点在图上有标记,与当前进度一致。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**18. 放弃二次确认(只测弹窗,不真放弃)**
|
|
||||||
- 操作:关卡画面点「放弃」;看到确认提示后**不点第二下**,等约 3 秒。
|
|
||||||
- 预期:按钮变成「再点一次确认放弃——不可逆」并带危险红脉冲;约 3 秒不点则确认态自动收回、回到基态「放弃」,冒险继续不受影响。真放弃留到第 27 项。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §三 第二关(第 19–21 项,约 5 分钟)
|
|
||||||
|
|
||||||
**19. 第二关数字可读 ★(本批修复重点)**
|
|
||||||
- 操作:进第二关多挖几格,凑近看数字,再退一步看。
|
|
||||||
- 预期:第二关数字印在**米色小方牌**上(深色字 + 米色底)——**与第一关的白字直画不同,这是有意的两种形态,别判错**;牌上数字清晰、不与地板纹理糊在一起(修复前数字就融在纹理里看不清,本批即修此问题),离屏一步可读。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**20. GP 常驻徽章**
|
|
||||||
- 操作:看关卡画面顶栏右侧的 ◈ 直角数据框;去商店买一件或拿一次奖励,回到关卡画面再看。
|
|
||||||
- 预期:◈ 框常驻显示当前冒险 GP;花掉/入账后读数跟着变、与收支一致。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**21. 本关强化列表**
|
|
||||||
- 操作:带着第 16 项买的强化进一场战斗,看战斗信息栏多出的一节。(回想:主线**第一关第一场战斗**时这一节应该整节不出现——那时你还没买任何东西。)
|
|
||||||
- 预期:出现强化列表行(「攻击 +N」「生命上限 +N」「护甲 AC +N」样式),数值与你买到的/奖励拿到的加算一致。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §四 第三关(第 22–24 项,约 5–8 分钟)
|
|
||||||
|
|
||||||
**22. 第三关数字可读**
|
|
||||||
- 操作:进第三关挖开几格看数字。
|
|
||||||
- 预期:同第二关——**米色小牌 + 深色字**,清晰可读。(再提醒一次:第一关无牌、第二/三关有牌,两种形态都对。)
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**23. GP 徽章与强化列表复访**
|
|
||||||
- 操作:第三关顺手再看一眼顶栏 ◈ 框和战斗信息栏的强化列表。
|
|
||||||
- 预期:GP 数值全程连续累计正确;强化列表按实际加算正确显隐、数值正确。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**24. Boss 战演出与过关大奖励界面**
|
|
||||||
- 操作:打第三关 Boss(蛛化卓尔),开打看舞台全貌,打到它出手;打赢看过关界面。(若身上还留着魔法道具,正好验清空提示。)
|
|
||||||
- 预期:Boss 站桩明显大于杂兵;技能(毒爆/蛛网束缚)在轮末结算与状态图标里可感知;Boss 胜利走**过关大奖励界面**(不弹普通结算框);若持道具过关,浮出「上关剩余 N 件魔法道具已随关卡结束清空」且道具槽清空。Boss 难不难、拖几轮归 T19,这里只判演没演。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §五 三结局(第 25–27 项,约 10–15 分钟)
|
|
||||||
|
|
||||||
**25. 通关结局**(主线局打赢第三关即测)
|
|
||||||
- 操作:通关后看终局面板,点「明细回看」,再点「返回」回开始菜单。
|
|
||||||
- 预期:终局面板有判词 + 金色一行「本局 GP 入账 · 合计 N」(N 与局内商店/战斗累计一致)+「明细回看」可开可关;「返回」后开始菜单**不再出现**「▶ 继续上局」。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**26. 死亡结局**(开新冒险,故意送死)
|
|
||||||
- 操作:连挖已确认的雷或站着挨打,直到主角倒下;看终局面板,「明细回看」开一次再关掉,点「返回」。
|
|
||||||
- 预期:进冒险终局面板、有死亡侧判词;按口径失败侧**不显示** GP 入账行;「明细回看」可开可关;「返回」后「▶ 继续上局」不再出现。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**27. 放弃结局**(再开新冒险)
|
|
||||||
- 操作:进第一关后点「放弃」→ 再点一次确认 → 终局面板点「返回」。
|
|
||||||
- 预期:第二击才真放弃;「返回」后「▶ 继续上局」不再出现(通关/死亡/放弃三结局都清断点)。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §六 中断续玩(第 28–30 项,约 5–10 分钟)
|
|
||||||
|
|
||||||
**28. 断点写盘**
|
|
||||||
- 操作:开新冒险,进第一关出现关卡画面后**直接关掉游戏**(Alt+F4 或点窗口 ×),重新 F5。
|
|
||||||
- 预期:开始菜单亮起「▶ 继续上局(第 1 关 · 自最近停点恢复)」。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**29. 续玩恢复**
|
|
||||||
- 操作:点「继续上局」。
|
|
||||||
- 预期:回到中断时同一停点——路线图已到节点、已开格与旗和关游戏前一致;选路继续后雷板布局与中断后开打一致(当场战斗从头打,不跳轮)。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**30. 新冒险互斥确认**
|
|
||||||
- 操作:保持有断点,在开始菜单点「开始冒险」;先点「取消」;再点一次「开始冒险」并选「开新冒险」;最后开着确认提示干等几秒。
|
|
||||||
- 预期:确认提示「已有未完冒险——再点一次开新冒险(旧断点将被覆盖)」**出现在开始菜单之上**(不被盖住);「取消」回菜单且断点还在(「继续上局」仍亮);「开新冒险」开新局且旧断点被覆盖;提示停约 3 秒不点会自动收回。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
(测完这局随你处理——放弃清档或留着玩都行,不影响后面的项。)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §七 设置面(第 31–33 项,约 3–5 分钟)
|
|
||||||
|
|
||||||
**31. 音量**
|
|
||||||
- 操作:开始菜单点「设置」,拖音量滑杆。
|
|
||||||
- 预期:音量随滑杆实时变化、旁有百分比读数;设置面只有音量/全屏/减动效加「返回」,没有退出入口(退出游戏只在开始菜单)。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**32. 全屏开关**
|
|
||||||
- 操作:设置面点「全屏:关/开」按钮。
|
|
||||||
- 预期:按钮文案随状态在「全屏:开」「全屏:关」间切换,窗口实时切全屏/窗口化;重启游戏后设置仍记住。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**33. 减动效开关与结算节奏**
|
|
||||||
- 操作:设置面点「减动效:开」→ 进冒险打一场战斗、轮末停手看结算;再把「减动效」关回去看同样场面。
|
|
||||||
- 预期:按钮为「减动效:开/关(动画时长减半——运动敏感/演示用)」形态、清晰可读;开=整场演出**明显变快**(动画时长减半),轮间结算仍在但节奏加快、不整体跳过;关=恢复第 12 项的逐条原速演出。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §八 整屏语义项(第 34–36 项,约 3–5 分钟)
|
|
||||||
|
|
||||||
**34. 首焦唯一**
|
|
||||||
- 操作:分别看战斗屏、关卡屏、开始菜单、营地四类画面各 2 秒,问自己「第一眼落在哪」。
|
|
||||||
- 预期:每屏只有一个第一焦点(战斗屏=雷图数字区/立绘,菜单=主按钮,营地=柜台列),没有两个元素抢视线;留白是衬托、不是空得慌。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**35. 对比度观感**
|
|
||||||
- 操作:把战斗信息栏属性行、结算明细条、菜单说明与副标题扫一遍。
|
|
||||||
- 预期:这些文字不再灰蒙蒙——深底上的字吃得开、看得清(程序化对比度检查已全过,这里只凭肉眼终审)。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
**36. 字号**
|
|
||||||
- 操作:看菜单帮助文字、战斗信息栏各行、结算明细摘要。
|
|
||||||
- 预期:放大到 16px 一档后没有溢出、没有挤压感;小字仍可读不糊。
|
|
||||||
- 判定:☐ ✅ ☐ ❌ 一句话:____________
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 判定记录(第 1–13 项,2026-10-02)
|
|
||||||
|
|
||||||
| 项 | 判定 | 备注 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 开始菜单 | ✅ | 新档无继续钮=正常 |
|
|
||||||
| 2 营地画面 | ✅ | — |
|
|
||||||
| 3 三柜台 | ✅ | 用户简答;钥石 0 解锁动作回补 |
|
|
||||||
| 4 图例 | ✅ | — |
|
|
||||||
| 5 数字直画 ★ | ✅+审美待办 | 「非常难看」→06 已登记(排 M-4 后排) |
|
|
||||||
| 6 高墙地面 | ✅+审美待办 | 墙底黑线「很难看」→06 已登记 |
|
|
||||||
| 7 挖格连锁 | ✅ | — |
|
|
||||||
| 8 插旗 | ❌→已修复 | 旗不显示回归(tex_flag 无 setter 零重绘)——修复已合 master f462175,**复验=插旗看黑旗印** |
|
|
||||||
| 9 踩雷惩罚呈现 | ❌→已修复 | 伤害数字不可见——26px/1.1s 增强已合,**复验=被打看头顶数字** |
|
|
||||||
| 10 战斗演出·我方 | ❌→已修复 | 演出快+棋盘未锁——C′ 结算视觉指示已合,**复验=轮末棋盘灰化演播**(偏差待裁:硬锁回炉与否) |
|
|
||||||
| 11 战斗演出·敌方 | ❌→同 10 | 同上 |
|
|
||||||
| 12 逐条结算 ★ | ❌→同 10 | 07⑩①演出复验=演出在滚✓,感知归 C′ |
|
|
||||||
| 13 胜利结算框 | ✅ | — |
|
|
||||||
|
|
||||||
### 批 3(第 14–21 项+额外反馈,2026-10-02)
|
|
||||||
|
|
||||||
| 项 | 判定 | 备注 |
|
|
||||||
|---|---|---|
|
|
||||||
| 14 奖励节点三选一 | ✅ | — |
|
|
||||||
| 15 魔法道具两步使用 | ❌→渠道退役落 | 清单「挖安全格掉道具」系过渡渠道过时表述——**用户拍板甲:战斗掉落渠道即刻退役**(reward.tres 四行删+F2 校验随退+断言同步),道具唯一来路=三选一共享池;本项待抽到道具件后补验 |
|
|
||||||
| 16 休息与商店 | ✅ | — |
|
|
||||||
| 17 图上点击选路 | ❌→修复回炉挂 | 呈现缺陷(B 线调研:候选计算正确,干线共线重叠+非候选区分弱)——修复实现后因 probe 红灯暂回滚,**挂选路/结算呈现专项批** |
|
|
||||||
| 18 放弃二次确认 | ✅ | — |
|
|
||||||
| 19 第二关数字可读 ★ | ✅可读+审美 | 「还是丑」——审美轴归 06 已登记待办(数字直画观感),后续由用户指定工具/模型处理 |
|
|
||||||
| 20 GP 常驻徽章 | ✅ | — |
|
|
||||||
| 21 本关强化列表 | ✅ | — |
|
|
||||||
|
|
||||||
**额外反馈两条**:①结算演播期输入冻结——硬锁实现与收尾链(点击泵架构)冲突,已回退,挂选路/结算呈现专项批与用户裁决;②debug 调生命上限后当前血不同步——修复已实现(账本置满/回血封顶同式含 pct),因 probe 红灯关联暂缓落库,待归因。
|
|
||||||
|
|
||||||
三修闸:冒烟 628/0+run_all 15 套+五探针,worktree/master 双跑全绿(台账 301)。
|
|
||||||
|
|
||||||
### 批 4(第 22–36 项+修复复验,2026-10-02)
|
|
||||||
|
|
||||||
| 项 | 判定 | 备注 |
|
|
||||||
|---|---|---|
|
|
||||||
| 22 第三关数字 | ✅ | 正常 |
|
|
||||||
| 23 GP/强化列表复访 | ✅ | 正常 |
|
|
||||||
| 24 Boss 战+大奖励 | ✅ | 正常 |
|
|
||||||
| 25 通关结局 | ✅ | 三结局「都是可以的」 |
|
|
||||||
| 26 死亡结局 | ✅ | 同上 |
|
|
||||||
| 27 放弃结局 | ✅ | 同上 |
|
|
||||||
| 28 断点写盘 | ✅ | 续玩回到上一关卡结算阶段→点继续进选路,用户判正确 |
|
|
||||||
| 29 续玩恢复 | ✅ | **停点语义记录(2026-10-02 用户认可合理)**:自动存档点=战斗结束结算阶段,其余时刻(含战斗中)不自动保存、中断战斗从头打——与《冒险结构》§冒险断点「停点粒度」成文一致(快照只挂选路停点),实机双确认 |
|
|
||||||
| 30 新冒险互斥 | ✅ | 正常、符合逻辑 |
|
|
||||||
| 31 音量 | ✅带保留 | 滑杆可拖实时生效;无 BGM 无从验音量大小实效——待音频资产接入后复验 |
|
|
||||||
| 32 全屏 | ⚠环境限制 | 编辑器内嵌游戏窗口只支持窗口化(Godot 引擎限制「Embedded window only supports Windowed mode」;项目代码零此串,handler 逻辑正常)——**独立运行(取消嵌入或导出版)复验待做**,绿即销号 |
|
|
||||||
| 33 减动效 | ✅ | 按钮生效;实际文案=「结算演出动画:快速(时长减半——运动敏感/演示用)·点击改回完整」语义化形态(清单旧预期文案「减动效:开/关」作废);快速档行同帧直落弹窗即现=现行语义(用户裁) |
|
|
||||||
| 34 首焦唯一 | ✅ | 暂可接受 |
|
|
||||||
| 35 对比度 | ❌两处 | ①设置面音量百分比读数浅底白字不可见(settings_overlay.gd:52);②战斗信息栏弃图刷新消耗行「RAP−8·剩 N 次」浅米底白字难辨(ap_bar_view.gd:102/128)——修法=两处字色改深墨,呈报待确认 |
|
|
||||||
| 36 字号 | ✅ | 目前可接受 |
|
|
||||||
|
|
||||||
**11 件修复真机复验状态**:用户 22-36 局内未逐条回报;机侧证据在案(硬锁+排窗=t17_defer_probe 定点证据 5486ms/22 行 ±7ms;旗显示/伤害数字/掉落退役/出度≤2=批内断言);旗印、伤害数字、挖格不掉道具、出度≤2、debug 血量五处**并入 T19 真人局顺带补验**(不专门重跑)。
|
|
||||||
|
|
||||||
## 来源与回流
|
|
||||||
|
|
||||||
- 素材来源(回查用):迭代 6 出口单 `m3-iter6-exit-checklist-2026-09-29.md`(第 10–11 项战斗演出、第 25 项终局回看)/ 迭代 7 出口单 `m3-iter7-exit-checklist-2026-09-29.md`(第 3/14/15 项道具与工坊呈现)/ 迭代 8 出口单 `m3-iter8-exit-checklist-2026-09-29.md`(第 12/13/18/25–33 项结算·放弃·续玩·设置)/ 迭代 9 9A 段闸单 `m3-iter9-9a-checklist-2026-09-30.md`(第 1–3/5–6/19–23/34–36 项视觉规格与扩编卡)/《07-体验验证清单》(体感轴整体归 T19 真人批,本单不重复)。
|
|
||||||
- **全过 = T17 履约**;❌ 项按复述确认制逐条收口,随迭代 9 出口闸销号。
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
# 迭代 9 卡⑨ 07-体验验证清单总对账(2026-09-30)
|
|
||||||
|
|
||||||
> 对账对象 = [07-体验验证清单](../gdd/07-体验验证清单.md)(2026-09-19 立档,验收重测批时代)。判读分两轴:**机器读数轴**(模拟/日志侧——已闭合与否)与**真人体感轴**(必须玩过——归集卡⑩真人批)。体验感受不满≠当场改数,回流位不变。
|
|
||||||
|
|
||||||
| 项 | 机器读数轴 | 真人体感轴 | 判定 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| ① Boss 战节奏 | **闭合**——验收重测批(09-19)+ 迭代 5 基线/杠杆扫描 + 返工批终态双窗读数 + 带 [25,45]→[10,15] 改带与批点丙追认(2026-09-30 收口);硬化折半语义已按纠正后口径实测 | 归卡⑩(打不打得动的体感按 ⑨ 指引采集) | 机器闭合/真人待采 |
|
|
||||||
| ② 削弱续时承伤 | **闭合**——承伤带读数体系在役(迭代 5/返工批报告链) | 归卡⑩ | 同上 |
|
|
||||||
| ③ 增伤手感 | **闭合**——乘区全段覆盖随验收重测批实测;充能退役后单分量口径 | 归卡⑩ | 同上 |
|
|
||||||
| ④ 乏力可感知性 | **部分**——量级当量对账履行(迭代 5 §三③ power=1 自洽);雷当量 4/5/5 provisional 投值(迭代 8)读数在案,**终值=用户自行探讨中(挂起态)** | 归卡⑩(踩雷体感按新当量采) | 机器在案/数值挂起/真人待采 |
|
|
||||||
| ⑤ 失衡归因可读性 | **呈现面闭合**——状态图标九枚接入(M-1 前)+明细行文案体系(迭代 6/8 结算标出强化) | 归卡⑩(能否读懂归因) | 呈现闭合/真人待采 |
|
|
||||||
| ⑥ 速杀退化监控 | **闭合**——弃图率/资格格读数入 analyze_playtest 迭代 5 基线(完美 1.95 次/局·弃图 19%·每轮 4.7%);阈值提案随迭代 5 出口(已闭 2026-09-30)锁定 | 无真人轴(日志侧) | 闭合 |
|
|
||||||
| ⑦ 刷新经济监控 | **闭合**——同 ⑥(07 §⑦ 基线注记在案) | 无真人轴 | 闭合 |
|
|
||||||
| ⑧ 旗行为基线监控 | 语义锚断言在案(四情况表 smoke 断言) | **归卡⑩**——「随真人试玩批次 2 起采」,卡⑩即该批次 | 真人待采 |
|
|
||||||
| ⑨ 真人批试玩指引 | —— | **即卡⑩试玩规程**(照此单玩 3–5 局,体感对号入座) | 规程现成 |
|
|
||||||
|
|
||||||
## 本迭代(视觉规格)新增真人观测项
|
|
||||||
|
|
||||||
v3.5 视觉面的真人观感不入本表(07 管玩法体感)——**归段闸 9A 目检清单**([m3-iter9-9a-checklist](m3-iter9-9a-checklist-2026-09-30.md):对比度可读性/E 格高墙/亮墨数字/舞台/营地/旗纹理/焦点预算逐项)。
|
|
||||||
|
|
||||||
## 结论
|
|
||||||
|
|
||||||
07 清单九项**无一项失义**:⑥⑦ 机器轴全闭;①②③⑤ 机器轴闭合、真人轴归卡⑩;④ 机器轴在案(数值 provisional 用户自领);⑧⑨ 本就为真人批而设。**卡⑩(T19)=07 清单真人轴的唯一 remaining 承载**——照 §⑨ 指引试玩即同时履约 07 全部真人轴。
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
# 迭代 9 卡⑤ 随闸三裁决呈报单(2026-09-30)
|
|
||||||
|
|
||||||
> **【过闸记录 2026-09-30】用户表态「没有问题,都按你推荐的来」=三裁决全落+9A 目检过闸+k1-k9 随闸追认**:裁决一=**甲**(全局等比,T9 落码——**落码注记**:1280×800 为 16:10、1920×1080 为 16:9,等比实现=stretch keep 等比 1.35×+左右黑边各 ~96px〔非字面 1.5×,纵横比差使然〕;逻辑布局 1920/1280 逐键一致实测过)/裁决二=**追认关账**(帧数样张 v2 已冻,06 半条关闭)/裁决三=**乙**(Alpha 后再议,升档批留 M-4 候选);draw calls 缺口处置=**案 a**(瓦片纹理合流优化批立项,9B 承接)。
|
|
||||||
|
|
||||||
> 呈报人=迭代 9 执行会话;裁决权=用户。三案全部列全(含已淘汰+依据),每案附数据/代价/联动。**T9 分辨率落码与 T10 黄金图基准卡在裁决一/三上**——裁决前两卡挂起(其余卡不阻塞)。
|
|
||||||
> 实测材料:`artwork/qa-screens-20260930/`(1280×800 四屏+shot_meta.json)/ `artwork/qa-screens-1920-20260930/`(1920×1080 四屏)。
|
|
||||||
|
|
||||||
## 裁决一:1920×1080 档缩放策略
|
|
||||||
|
|
||||||
**现状实测(1920 窗口实跑)**:当前无统一策略的**原生重排**——B 区高 252 与 C 区宽 240 纹丝不动、棋盘格公式重算(板区 1036→1178 宽)、**字号全部不放大**(像素字在 1920 屏视觉变小 ~33%)、舞台宽 1422 非全宽(布局只部分响应)。三区行为不一致=当前态的实测事实。
|
|
||||||
|
|
||||||
| 案 | 内容 | 代价 | 联动 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| **甲·全局 1.5× 等比**(推荐) | Godot stretch=canvas_items:1920 窗口整屏放大 1.5×,构图与 1280 设计完全一致 | 像素 1.5 非整数缩放→甲类件(数字/瓦片/图标)轻微宽窄不均(3:2 交替纹);§8.2 分级下甲类「严格整数」条款需加 1920 档例外注记 | 一处 stretch 配置+§8.2 注记;格子公式/布局零改;HUD「两档定值 36/45px」条款按 1.5× 折算修订 |
|
|
||||||
| 乙·1920 档独立 2× 基准 | 1920 档按 2× 像素基准重排 UI(字号/间距/资产出 2× 档) | 两套 UI 尺寸面全维护;字体现无 2× 资产档(升档批才有) | 工作量约一个独立迭代;像素绝对均匀 |
|
|
||||||
| 丙·维持现状(原生重排) | 零改动 | 字号偏小+三区行为不一致(已实测)为常态 | 零 |
|
|
||||||
|
|
||||||
**推荐:甲**——成本近零、构图一致;1.5 非整数不均=像素游戏 shipped 常态,实机目检可感不适再升级乙。
|
|
||||||
|
|
||||||
## 裁决二:动画帧数规格——事实核对(非新裁决)
|
|
||||||
|
|
||||||
核对结果:**帧数已随样张 v2 冻结**(圣经 §8.4「帧数规格(样张 v2 冻结 2026-09-28)」:待机 4 帧/攻击·技能准备 6 帧单次/受击 2 帧/死亡=灰化+碎裂退场;切片实装=程序化 tween 已服役)。06「美术资产规格两项」之②系**过期登记**(登记早于样张 v2 冻结批)。
|
|
||||||
|
|
||||||
**待你表态仅一项**:追认「帧数已冻结、06 该半条关闭」即可(无需再裁数字)。
|
|
||||||
|
|
||||||
## 裁决三:资产升档与否(48×72→64×96 等)
|
|
||||||
|
|
||||||
**数据**:主角占屏高约 9%(Moonlighter 约 15%,v3.0 病根 6);本轮 B 区舞台(暗背景+落影+顶光柱)已显著改善角色存在感;fixer 像素化管线现成(八敌+主角三态重产成本可控);A4 尺寸基线已按现行实态冻结(立绘 46×48/小人源 32×32——升档=显式解冻重校)。
|
|
||||||
|
|
||||||
| 案 | 内容 | 代价 | 联动 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 甲·本迭代升档重产 | 主角三态+八敌出 64×96/64/96/128 档并换代 | +0.5–1 工作日+新稿相位/断线手修轮次风险 | T10 黄金图基准延后到升档后建;A4 断言解冻重校;B 区站桩槽 2× 放大参数随动 |
|
|
||||||
| **乙·Alpha 后再议**(推荐) | 本迭代不升档,先收 Alpha 真人读数——B 区舞台已改善存在感,升档需求强度待真人验证 | 主角存在感维持现态 | T10 黄金图基准本迭代内可建(不被升档作废);升档批留 M-4 候选 |
|
|
||||||
| 丙·不升(维持 46×48) | 永久维持现行档 | 存在感议题永久关闭 | A4 冻结永久有效 |
|
|
||||||
|
|
||||||
**推荐:乙**——视觉大变更应在 Alpha 验收读数之后再动;本轮舞台落影已吃掉病根 6 的一半。
|
|
||||||
|
|
||||||
## 附:卡⑤整屏样张闸机检读数(2026-09-30 实测)
|
|
||||||
|
|
||||||
四文字框 WCAG 5.79–13.14(≥4.5 ✓)/明度三档带 204>79>55 ✓/纹理幅度 0.0–12.9(≤18 ✓)/四屏骨架 std 18.6–64.9 ✓;焦点预算=目检项归段闸人闸。工具=`tools/shot_checker.py`(几何源=shot_probe 实测 meta,档位自适应)。
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
# 迭代 11 出口包(人闸材料包,2026-10-03)
|
|
||||||
|
|
||||||
> 迭代 11 三批全部落籍 master:①魔法道具同调实施批(bc17b66,台账 323)→ ②GP 商店房重构批(395b2ab,台账 324)→ ④视野迷雾实施批(e6260a5,台账 325)。依 2026-10-03 用户令,**出口人闸后移迭代 12 一并进行**——本包=三批出口检查单+全部代拍板追认清单+迷雾真人目检指引+读数报告的合并材料,供人闸时逐项过;工作树改动随批各自落籍,master 冒烟基线 **671/0**(每批合并后主区复跑均过)。
|
|
||||||
|
|
||||||
## 一、三批出口检查单
|
|
||||||
|
|
||||||
### 批① 魔法道具同调实施批(完成定义 ①-⑦,全过)
|
|
||||||
|
|
||||||
| # | 完成定义 | 证据 |
|
|
||||||
|---|---|---|
|
|
||||||
| ① | attunement_growth 谓词表上线+读数源切换 | 谓词表(m1 通关 1/m2 Boss 3/m3 组合 3+6)+过渡键退役三处(迭代 10 欠账③清偿) |
|
|
||||||
| ② | 营地装配覆盖层+入档持久 | 工坊扩容同调装配段(装配/卸下/满位禁选+Y 升级行);装配持久断言 |
|
|
||||||
| ③ | 九件效果接线 | 八活一 deferred(爆破工兵包=炸格拆后批留位,用户裁) |
|
|
||||||
| ④ | 局内 aux 渠道退役+池收缩注记 | T7 五件退役面全落 |
|
|
||||||
| ⑤ | attune off/on 分层读数出讫 | 锚两件+读数 md 落 sim-data;off 新锚=对拍正主 |
|
|
||||||
| ⑥ | 连带修订九件 | 魔法道具定位重写/元进度 v1.6/地图战斗资源 v0.16/行动经济 v0.7/05 不做 v1.3/节点地图 v1.4/node-reward v2.2/registry/06 |
|
|
||||||
| ⑦ | 重闸全绿 | 冒烟 645/0(当时基线)+熵增 PASS+doc 三闸零新增+MC off 逐位 PASS |
|
|
||||||
|
|
||||||
### 批② GP 商店房重构批(完成定义 ①-⑦,全过)
|
|
||||||
|
|
||||||
| # | 完成定义 | 证据 |
|
|
||||||
|---|---|---|
|
|
||||||
| ① | 进店从共享池抽 3(新用途标签 shop_draw) | E-S 加权洗牌恰一 scope;冒烟同种子同货架逐位 |
|
|
||||||
| ② | 买 1→全重抽;池空硬闸+A 链软闸 | buy_pool_item 买后整架重抽;库存尽剔牌库/池空消费拒绝断言;空架合法态 |
|
|
||||||
| ③ | 价格=ceil(基价×b^(关序−1)×A^进店已购) | ceil 单一取整;A=1.8/b=1.1 provisional(追认项 2) |
|
|
||||||
| ④ | 共享池账本(跨渠道消耗,库存=上限) | _consume_pool_purchase→_apply_bonus_pick 同口真单点;共账双向断言 |
|
|
||||||
| ⑤ | 断点兼容(P2 甲) | BP 扩键 shop_shelf/shop_visit_buys(save v4 域内);roundtrip+确定性重放断言 |
|
|
||||||
| ⑥ | MC off/on 分层+读数出讫 | off 对拍 off_n60 120 行旧字段零差 PASS;on 新锚 N=60 双策略(读数见 §四) |
|
|
||||||
| ⑦ | 连带修订+重闸全绿 | 六件落文(冒险结构 v0.13/节点地图 v1.5/难度曲线 v0.22/node-reward v2.3/registry/06);冒烟 671/0+三闸零新增 |
|
|
||||||
|
|
||||||
### 批④ 视野迷雾实施批(完成定义 ①-⑤,机检全过、目检待人闸)
|
|
||||||
|
|
||||||
| # | 完成定义 | 证据 |
|
|
||||||
|---|---|---|
|
|
||||||
| ① | 迷雾遮蔽+灯光区跟随上线(开关分层验证) | BoardView 三态呈态(区内/全黑/记忆态)随 refresh 实时跟随;set_fog_enabled 开关两态结算 digest 逐位一致(🔴 契约 1 断言在案) |
|
|
||||||
| ② | 暗淡记忆态呈现 | 记忆板 #3A3A3A+记忆墨 #C4C4C4(§6.5 落文值);数字可读 ≥4.5:1;色牌格退牌归板;探针全板呈态逐格断言 |
|
|
||||||
| ③ | art-bible 黑暗区域规格落文 | §6.5 新节(v3.4→v3.5):菱形几何/全黑照抄正主/记忆态明度/硬边过渡/结算去饱和叠加互斥/§2 允许域自查 |
|
|
||||||
| ④ | 探针断言 | ui_input_probe case⑮:三态全板逐格+半径边界圈+开关两态零扰动+提灯插值位参数——十六断言全绿 |
|
|
||||||
| ⑤ | 正主节验收线全过+实机目检人闸 | 验收线机检面全过(HUD框架 v0.14 转正式验收);**实机目检=本包 §三指引,人闸后移迭代 12** |
|
|
||||||
|
|
||||||
## 二、代拍板追认清单(人闸逐项过;全在任务书/计划书白名单内)
|
|
||||||
|
|
||||||
### 批①(附录 B 未审项,随出口人闸一并审)
|
|
||||||
|
|
||||||
1. provisional 表值全目:里程碑阈值(1/3/3+6)/效果 N=2(淬毒/殉爆/惊巢/硬币)/charges=2(蓄能/摆钟)/charge_n=3/effective_rounds=3/X=1/Y 升级行(L1·1·30 钥石、L2·2·60)/MC 凑整画像计数(3/6)——全归调参批复核。
|
|
||||||
2. 冒烟断言期望演进(636→645:save 版本断言 3→4、渠道退役替换两路测试拆除、池收缩断言新增)。
|
|
||||||
3. 装配面落位=工坊扩容+柜台内滚(P2 甲程序占位框架内)。
|
|
||||||
4. 里程碑达成态=纯派生(save 只存计数源)。
|
|
||||||
5. **维度词表收缩形态开放点待裁**(底稿 §1.1 明挂:收缩为 {风险/行动/反制} 具体形态——本批以现行五维投 provisional 标签)。
|
|
||||||
6. 淬毒=主角攻击面限定(棋盘 typed 直伤不吃)与惊巢减半覆盖 GP-loss 一并=语义 provisional,试玩判读。
|
|
||||||
|
|
||||||
### 批②(本批新增)
|
|
||||||
|
|
||||||
7. 货架基价 provisional 四值:attack 4 / max_hp 4 / armor 4 / ap 5。
|
|
||||||
8. **A=1.8 / b=1.1 provisional 投值**(goal 令:原 P5 甲「game-balancer 研究→用户拍板」改 provisional+后置追认;研究复核归调参批)。
|
|
||||||
9. shop_mode 双模承载:缺省 legacy(off 对照承载),真实入口 main.gd 显式投 pool;products 行族+加法定价随 legacy 保留,退役归 off 锚换代批。
|
|
||||||
10. 库存承载=既有 _bonus_taken 账本扩权(stock=cap−taken),奖励侧牌库代码零改动;商店购买经 _apply_bonus_pick 同口=真单点。
|
|
||||||
11. 购血件不回血语义(池件=奖励件本体;legacy hp_up 同步回血随对照模式保留)。
|
|
||||||
12. BP 货架键形态:写档+roundtrip 断言;当前停点拓扑无中途店停点,货架续玩=确定性重放承载。
|
|
||||||
13. 终局池读数聚合推算口径(读数 md 注记 1;per-kind 商店拆分未记录,如需须修复后代码重锚归调参批)。
|
|
||||||
|
|
||||||
### 批④(本批新增)
|
|
||||||
|
|
||||||
14. 记忆态明度值 provisional:记忆板 #3A3A3A / 记忆墨 #C4C4C4(样张/实机自检锚)。
|
|
||||||
15. 迷雾开关承载=BoardView 呈现态布尔(真实游戏恒 on;off=验证基线)。
|
|
||||||
16. 遮罩实现=逐格三态制(区内正常/区外未开格全黑/区外已开格记忆态);结算期去饱和叠加互斥由记忆态中性灰恒等承载(去饱和对零饱和色零作用)。
|
|
||||||
17. **全黑 vs 高遮蔽档非追认候选**——正主 HUD框架 :163 原文「区外未开格=全黑不渲染」已有定论,照抄正主(实机目检仅复核观感)。
|
|
||||||
18. 提灯 +2=LIGHT_RADIUS_LANTERN_BONUS 常量在位不接效果(接线归 Alpha 信息件批)。
|
|
||||||
|
|
||||||
## 三、迷雾真人目检指引(人闸时实机执行,约 5-10 分钟)
|
|
||||||
|
|
||||||
前置:master e6260a5+ 工作区(迷雾默认开启,无需任何设置)。
|
|
||||||
|
|
||||||
1. **灯光区形态**:开一局冒险进入任意战斗——以主角为中心的菱形范围内棋盘正常显示;范围外**未挖格全黑**、**已挖格灰色记忆态**(数字灰显但清晰可读)。
|
|
||||||
2. **移动跟随**:走动主角——灯光区实时跟随(边界整格切换、无渐变晕边;灯光半径=贴身微光环的 8 格同圈)。
|
|
||||||
3. **记忆持久**:挖开若干格后走远——已开格保持灰显可读(数字在),未开格保持全黑。
|
|
||||||
4. **旗印记**:插旗后走远——旗印记随格隐没(全黑);走回复显(旗数据不受影响)。
|
|
||||||
5. **结算叠加**:打完一场战斗看结算期——灯光区内画面正常去饱和;区外记忆格无二次变化。
|
|
||||||
6. **性能**:移动无卡顿(迷雾为逐格程序化遮罩,零新素材;draw calls 基线 196 量级)。
|
|
||||||
7. **微光不受扰**:主角贴身 8 格的类型微光行为与迷雾前一致(微光语义零改动)。
|
|
||||||
|
|
||||||
任一条不符合=目检 FAIL,登记迭代 12 人闸清单修复。
|
|
||||||
|
|
||||||
## 四、读数报告(终局池新锚 vs off_n60 对照——只测不判)
|
|
||||||
|
|
||||||
锚件:`sim-data/runsum_m4iter11b_t5off_n60_20261003.jsonl`(off,120 行,与①批锚逐位一致)+ `runsum_m4iter11b_t5shopon_n60_20261003.jsonl`(on,120 行,pool_stock 推算重构口径)+ 详文 `sim-data/读数_m4iter11b_t5shopon_off_n60_20261003.md`。
|
|
||||||
|
|
||||||
| 指标 | off(legacy 对照) | on(共享池) |
|
|
||||||
|---|---|---|
|
|
||||||
| normal 全通 / L1 | 0.0% / 3.3% | 0.0% / 3.3%(死亡于 L1 商店前,零触达) |
|
|
||||||
| perfect 全通 / L2 | 45.0% / 65.0% | **13.3% / 45.0%**(全通 −31.7pp) |
|
|
||||||
| perfect 商店购买 | —(legacy 独立定价,不耗池) | 219 次(均值 3.65/局) |
|
|
||||||
| perfect 奖励面领走 | 121 件 | 106 件 |
|
|
||||||
| perfect 池消耗结构 | — | 购买:领走 ≈ 2:1(竞争同一 11 份库存) |
|
|
||||||
|
|
||||||
判读义务归 M-4 调参批(shop=on 带平移+换算率登记);−31.7pp 系经济效应与 RNG 时间线位移的混合效应,不可单归因。
|
|
||||||
|
|
||||||
## 五、迭代 11 门状态
|
|
||||||
|
|
||||||
三批落籍完毕,**迭代 11 门=待出口人闸关闭**(人闸内容=本包 §二追认清单+§三迷雾目检+①批 T17 残留复验项 32 全屏环境限制独立复验)。门关后迭代 12(双层 BD 实施批)开工——其前置「迭代 11 三批出口+M-4 令牌池+商店批共享池」中前两项已备(令牌池仍待 M-4 数值批)。
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
# 迭代 12 批次二 T10 出口包(2026-10-04)
|
|
||||||
|
|
||||||
- 锚件:`runsum_m4iter12_t10aba_n20_20261004.jsonl`(A 侧)/ `runsum_m4iter12_t10abb_n20_20261004.jsonl`(B 侧)——N=20/侧,seed0=90000 同种子配对,normal 档
|
|
||||||
- 采集档位:**二档·数值修改验证**(本触发点总量 40=每侧 20×2 贴边合规;T7 批次一触发点 40 独立计)
|
|
||||||
- A/B 口径:Fork posture 对两侧 rule 键集透传(A=先手压制 posture_first_strike=战斗首轮 AP+1 / B=稳健拓荒 posture_bulwark=受击减 1)——「两侧不同强非强弱」验收载体
|
|
||||||
|
|
||||||
## A/B 面两侧差读数(验收 <~3pp)
|
|
||||||
|
|
||||||
| 指标 | A 先手压制 | B 稳健拓荒 | Δ |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 全通率 | 0.0% | 0.0% | **0.0pp** ✓ |
|
|
||||||
| L1 通关率 | 5.0% | 5.0% | **0.0pp** ✓ |
|
|
||||||
| L2 通关率 | 0.0% | 0.0% | **0.0pp** ✓ |
|
|
||||||
| 局均承伤 | 25.0 | 22.9 | B 侧减伤方向兑现(rule 键真实生效佐证)|
|
|
||||||
|
|
||||||
**验收判定:过**(两侧差 0.0pp << ~3pp 阈——A-4 反例条件不触发)。
|
|
||||||
|
|
||||||
## 批末闸全量留痕
|
|
||||||
|
|
||||||
冒烟 **714/0** 三闸 PASS(批次一 696+树段 18 断言)+ run_all **15 套全绿** + 探针(ui_input/ui_probe/ui_layout/fx/t17_defer 五绿+click 存量红零新增)+ doc 三闸基线同款(gdd_lint 2 存量/doc_term 4 存量/doc_link 0)+ 熵增 PASS。迁移幂等断言在冒烟树段(重复迁移零变化)。MC 触发点全程:TP0 20+T7 40+T10 40=100 局(三触发点各自 ≤40 合规)。
|
|
||||||
|
|
||||||
## 完成定义对账(任务书 §一五条)
|
|
||||||
|
|
||||||
| # | 定义 | 证据 | 判定 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| ① | 七流派各 ≥3 件入局内随机渠道+引擎判成型 | relics.tres 27 件(4/4/4/4/4/3/4);RelicTable.validate 扫雷端铁律;档位激活引擎冒烟断言(T1/T4) | ✅ |
|
|
||||||
| ② | 七流派成型态 MC 读数可判+红线自检①全流派过 | T7 off/formed 配对锚(L1 5→75% 分岔方向);红线①方向判定过(T7 报告) | ✅ |
|
|
||||||
| ③ | 天赋树可购可切可迁移+存档往返幂等 | tree_buy/tree_buy_fork/tree_toggle_fork/migrate_tree 冒烟断言(row-gating/互斥/免费切换/幂等);save v5 迁移链 v1→v5 全链 | ✅ |
|
|
||||||
| ④ | 文档正主七处吸收落文 | 随落籍批提交(node-reward/冒险结构/registry/06 于 TP0+本批元进度/树新节——「吸收即死」退役面随批执行) | ✅*(正文七处=定稿 §文档面:元进度/node-reward/战斗结算/行动经济/地形变异/魔法道具/商店 spec——战斗结算/行动经济/地形变异/魔法道具四正主本批零语义变更(relic 挂点均为既有段槽消费),落文面=元进度树节+node-reward v2.4+冒险结构 v0.14+registry 三处+06 两条——披露差异待用户追认) |
|
|
||||||
| ⑤ | 批末闸零新增 | 本报告上节 | ✅ |
|
|
||||||
|
|
||||||
## provisional 披露(批次二随批代拍板——人工检查清单母本)
|
|
||||||
|
|
||||||
存档 v4→v5(任务书「v3→v4」系同调批未落时行文顺延披露);树 GP 节点钥石单币承载(GP 局外余额域缺位);「三柜台→一树」字面重构延后(树面板=图鉴柜台下段程序占位,锻造柜台保留一版周期);Fork 首期两 rule 键真实接线(posture 对)余三组 stat 面 provisional;hit 线不入 override 三字段通道(命中折扣档消费归数值批);迁移差额补偿=原样映射零亏损(钥石付价不变,无亏损面故无补偿金)。
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
# 迭代 12 批次一 T7 MC 读数报告(2026-10-04)
|
|
||||||
|
|
||||||
- 锚件:`runsum_m4iter12_t7off_n20_20261004.jsonl`(基线)/ `runsum_m4iter12_t7formed_n20_20261004.jsonl`(成型画像)——N=20/锚,seed0=90000 同种子配对,route=min,normal 档,attune=off,shop=legacy
|
|
||||||
- 采集档位:**二档·数值修改验证**(本触发点总量 40=每锚 20×2 贴边合规;会话累计 MC 分钟 ~6 ≤20)
|
|
||||||
- 成型画像口径:开局注入七流派各 2 件(14 件=档一成型集,`params.relics_seed` 测量面专用注入——真实局流派件只走局内随机渠道,红线②层级纪律不破);基线=零注入。锚内 autoplay=316-f(最稀有/最左)+候选 relic 优先(on 面)
|
|
||||||
|
|
||||||
## 分岔读数(R3 乙单锚全量——一锚覆盖七流派)
|
|
||||||
|
|
||||||
| 指标 | 基线(off) | 成型(formed) | 判读 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| normal 全通率 | 0.0% | **10.0%** | 分岔方向成立 ✓ |
|
|
||||||
| L1 通关率 | 5.0% | **75.0%** | 流派成型显著变强(+70pp ≥40pp 可判阈值)✓ |
|
|
||||||
| L2 通关率 | 0.0% | **20.0%** | 方向成立 ✓ |
|
|
||||||
| 局均轮数 | 12.85 | 22.6 | 活得更久(battles 3.7→8.0)——非拖局 |
|
|
||||||
| 局均踩雷 | 5.9 | 11.2 | 随局时长自然增长;**每轮踩雷率 0.459→0.496(+8%)**=开格流件代价兑现(贪婪矿灯负向 +25% 惊动在画像内),非推理边缘化 |
|
|
||||||
| 局均承伤 | 23.4 | 45.5 | 同上随局时长 |
|
|
||||||
|
|
||||||
## 红线自检①(硬断言方向面——阈值 provisional 归数值批)
|
|
||||||
|
|
||||||
**「成型态场均安全开格数/旗占比不得塌陷」方向判定:过。**
|
|
||||||
- 开格面:成型局轮均挖格上界(rounds×AP/轮)不降反升(活更久挖更多)——流派件未使挖格降格为次要变量;
|
|
||||||
- 扫雷推理主因面:每轮踩雷率 +8% 系开格流派件设计内代价(正负双修兑现),非「按数字推理」被绕过;旗占比由 autoplay 固定策略承载,两态同构;
|
|
||||||
- 档位激活确定性:同集合同档位断言在冒烟(T1 引擎断言+T4 四流派档二断言)——MC 逐位可复放由同种子配对承载 ✓。
|
|
||||||
|
|
||||||
## 自然局捕捞率佐证(候选面)
|
|
||||||
|
|
||||||
成型锚跑前曾跑自然局 on 面探针跑(20 局,**未留锚作废**):候选 relic 出现率 21.4% ≈ 池占比 27/125=21.6%(完美吻合——令牌级抽签等概率承载);normal 白板局死 L1 早期、三选一停点稀少(候选卡仅 28 张/20 局)——自然局到不了成型=成型态读数必须走注入画像(本锚口径)。
|
|
||||||
|
|
||||||
## 现行锚声明
|
|
||||||
|
|
||||||
本批两锚(off/formed 配对)=**批次一出口现行锚**。TP0 锚(runsum_m4iter12_tp0_n20)随池换代(98→125 张)作废只测不判。批次二 T10 树 A/B 面读数=下一触发点(树切面读数另跑)。
|
|
||||||
|
|
||||||
## provisional 披露(T2-T6 随批代拍板全目——人工检查清单母本)
|
|
||||||
|
|
||||||
「每关首次开格」→每战首次(魔能共鸣)/贯穿射击半额弹射(原溢出追踪单分量模型不可行)/猎巢人全体附加值(原对其中敌)/战旗军规 default_target(原旗所在巢穴敌)/连珠矢段值固定 2 不乘 atk/深挖钻头每 4 格深层产出对价 +1 AP/商店保底 devour 广义映射+基价 15 固定锚/整备军备停手侧转蓄力(cleared 分支维持作废)/矿脉直觉连击 +10%/格上限 5/greedy 族同 hook 累加/锚点件双效果承载(共鸣 rider 提升以奥术矢+档位承载)。
|
|
||||||
@@ -1,86 +0,0 @@
|
|||||||
# 全局作用域变异首发批 出口报告(迭代 14 ③号卡,2026-10-04)
|
|
||||||
|
|
||||||
> 批任务书:design/research/任务书-全局作用域变异首发批-2026-10-04.md(台账 344,裁决 P1-P8+Q1-Q4 全按推荐案零待裁)
|
|
||||||
> loop 计划书:.zcode/plans/m4iter14-gvar-loop-plan-2026-10-04.md(gitignored,U0=开工令 prompt 预批准)
|
|
||||||
> worktree:g-plan2-m4iter14-gvar-20261004(基 9f64456)
|
|
||||||
|
|
||||||
## 一、基线与改动面
|
|
||||||
|
|
||||||
**基线(开工实测)**:主区 head 9f64456;冒烟 718/0;run_all 15 套件;现行 MC 锚 `runsum_m4iter12_t10abb_n20_20261004`;variation.tres 6 行。
|
|
||||||
|
|
||||||
**改动面(五提交)**:
|
|
||||||
1. **T1-T4 核心面**:variation_table.gd(EFFECTS+`resource_face`/TRIGGERS+`always`/互锁三条+effect_value [0,50] 域)·variation.tres(+skewed_veins 行,7 行)·config_db.gd(variant_pool 第三参 node_type 缺省零扰动+global_variant_row 访问器)·board_data.gd(board_variants 板级字段+访问器)·battle_orchestrator.gd(装板序 `_resolve_global_variant` 前置于 roll_board+`_place_variants` 替换制早退)·reward_economy.gd(board_skew 旋钮+`_skewed_cell_rows` 整数最大余数投影+`_biased_cell_rows` 基座换源=合成序)。
|
|
||||||
2. **T5 呈现三层**:settlement_fx_view.play_board_variant_banner(轮横幅先例+减动效静态双态)·hero_info_panel_view 地形变异常驻角标段(流派件段先例空态隐藏)·hud_presenter.board_variant_lines+快照投影接线·main.gd 开战横幅挂钩(首轮快照判空发射)·ui_assembler 手册行。
|
|
||||||
3. **T6 文档七正主**:地形变异.md v0.7(类型清单+§全局作用域型+门控三维+布置段注记+调参/验收+P2 Alpha 行换代)·难度曲线与Boss.md(P2 投放计划行升级现行+调参表 resource_face 行)·registry=architecture.md(variation 行换代)·HUD框架.md v0.13(义务行+验收+v 史)·教学引导.md v0.4(条目+V 史)·行动经济.md(P2 价目钩子=案D 留位不启用注记)·06 条目解决移除。
|
|
||||||
4. **T7 断言批**:smoke_all.gd 新段 29 断言(互锁负样本③-⑦/门控三维/L1 免疫/elite 前向位/替换制恰一行+零 region 格/variant_place 零取号(取号计数桩)/快照投影/守恒 77/白名单/v=30 构造例/合成序构造例/v=50 域上界/确定性)·config_db_test 换代(通配选择器限定 region+global 第三维三断言)。
|
|
||||||
5. **出口**:本报告+roadmap ③卡落地注记。
|
|
||||||
|
|
||||||
**执行发现(实现位调和,随批呈报)**:任务书 T2 字面把全局分支写在 `_place_variants`,但装板序中 roll_board 先于布置段而 T3 偏斜旋钮须在摇号前定型——全局决议前移至装板序内(`_resolve_global_variant`),替换制/兜底回落/零取号/恒定制四语义不变,普通图路径零 diff。属数据依赖的机械位调和,非裁决重开。
|
|
||||||
**既有行为登记(本批零触碰)**:`luck_bias` 注入时点在 begin_battle 首板 install 之后——首板 roll 恒 0、偏运硬币仅轮内刷新图生效;系迭代 11 对拍锚现行口径,合成序「图级先件级后」在单次 roll 内的权重代数不受影响。
|
|
||||||
|
|
||||||
## 二、值面静态推演(T3 义务——只测不判,精确判读归 T7b 读数批/M-4)
|
|
||||||
|
|
||||||
**权重面位移(v=30,整数最大余数实现,构造例已断言)**:
|
|
||||||
|
|
||||||
| 行 | 基线 | v=30 实现 | 精确目标 w×(1−v/100) |
|
|
||||||
|---|---|---|---|
|
|
||||||
| attack_up | 14 | 15 | 15.37 |
|
|
||||||
| spark_aoe | 16 | 18 | 17.57 |
|
|
||||||
| pierce_strike | 8 | 9 | 8.78 |
|
|
||||||
| magic_bolt | 8 | 9 | 8.78 |
|
|
||||||
| heal_minor | 4 | 3 | 2.8 |
|
|
||||||
| ac_up | 11 | 7 | 7.7 |
|
|
||||||
| weaken / ap_up / gp_coin | 8 / 6 / 2 | 8 / 6 / 2(逐位不动) | 同 |
|
|
||||||
|
|
||||||
- **合计守恒**:偏斜后 77 恒成立(整数域构造性保证——下调量按进攻族原权重比例最大余数重分配;任意 v∈[0,50] 均守恒,v=50 已断言)。
|
|
||||||
- **份额位移**:生存族 15/77=19.5% → 10/77=13.0%(整数实现;精确目标 13.6%);进攻族 59.7% → 66.2%。
|
|
||||||
- **EV 方向与幅度**:以「生存单位当量 : 进攻单位当量 = r」的静态参数化——EV 降幅 = [46+15r+16 − (51+10r+16)]/(46+15r+16)(整数实现)。r=1.5 → −2.96%;r=1.75 → −4.1%;r=2.0 → −5.4%。精确权重实现 r∈[1.5,2.0] → −2.7%~−4.9%。**结论**:方向=微降 ✓;3-5% provisional 目标带对应 r≈1.6–1.9,落在「生存族当量价值高于进攻族」前提的合理域内——方向与幅度的静态核对通过,精确读数归 T7b(MC 三态对账链)与带 A 判读(M-4,Q4 甲只测不判)。
|
|
||||||
- **占比带 [15,40] 关联**:进攻族池份额上浮 6.5pp 间接推高奖励侧输出占比——越带与否只呈报不回调(S2),归 T7b 读数面。
|
|
||||||
|
|
||||||
## 三、Q3 知情代价登记(registry/调参日志随批登记义务)
|
|
||||||
|
|
||||||
**替换制+案A(无地形格)⇒ 迭代 12 四件地形应对件在 Boss 图无的放矢**:地脉采撷/荆棘编织者/净化工兵/熔火之躯的触发域=region 变异格(挖伤害格/中和相邻伤害格/受地形伤积层),替换制下 Boss 图零 region 格——四件在 Boss 图整件失效,仅普通图(每关 6/7 张主战场)有效。**登记为知情代价**(Q3 甲裁决,2026-10-04);registry variation 行与地形变异.md v0.7 版本史 ⑨ 同步注记;MC on 档读数观察其普通图侧平衡(T7b)。
|
|
||||||
|
|
||||||
## 四、闸结果(实施批闸=T7;MC 读数批=T7b 切独立后批)
|
|
||||||
|
|
||||||
| 闸 | 结果 |
|
|
||||||
|---|---|
|
|
||||||
| 冒烟全量 | **747/0**(基线 718+新段 29——断言总数只增不减 ✓) |
|
|
||||||
| run_all | **15 套件全绿**(config_db_test 换代 +3) |
|
|
||||||
| 普通图逐位回归(S1) | golden 对拍 **12/12 全等**(4 种子×3 关×布置+摇号+RNG 计数器,批前批后逐位一致——S1 零触发) |
|
|
||||||
| 全探针 | 六探针结果见提交前终录(ui_input/ui_click 三种子/ui_probe/ui_layout/fx/t17_defer) |
|
|
||||||
| doc 三闸+熵增 | 结果见提交前终录(预期零新增) |
|
|
||||||
| MC | **未跑**(T7b 切独立后批——总量 120 局=一档·调研,须用户批准发起;现行锚只读) |
|
|
||||||
|
|
||||||
## 五、provisional 追认单(出口人闸,全部不阻塞实施)
|
|
||||||
|
|
||||||
| # | 项 | 现值 | 备注 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 偏斜幅度 effect_value | 30 | 域 [0,50];0=中性 off 锚;调参项走调参不走修订 |
|
|
||||||
| 2 | 命名 | skewed_veins / 贫矿脉 | 文案归本地化批 |
|
|
||||||
| 3 | 横幅文案 | 「地形变异 · 贫矿脉 · 回复与护甲资源减少 · 攻击资源增多」(2026-10-04 用户反馈常规化修订,原俚语表述退役) | 驻留 0.6s 同轮横幅 |
|
|
||||||
| 4 | 角标文案与摆位 | C 区「地形变异」段(流派件段下方)·三行制=贫矿脉/回复与护甲资源减少/攻击资源增多(文案随 #3 同批修订) | 摆位 provisional 归 HUD 框架批 |
|
|
||||||
| 5 | 手册行 | 玩法帮助块末行(地形变异一句,措辞随 #3 同批常规化) | 零交互教学 |
|
|
||||||
| 6 | N=60 | T7b 双档配对局数 | **已追认(2026-10-04 用户)**——跑批发起仍待令 |
|
|
||||||
| 7 | 兜底回落行为 | Boss 图全局池空回落 region 布置 | 保守向后兼容 |
|
|
||||||
| 8 | 全局池多行取首行 | 防御口径(首发恒恰一行) | 越界态另批 |
|
|
||||||
| 9 | 开战横幅发射位 | 首轮 round_started 快照判空(刷新图不重发,角标承担常驻) | 实现位调和连带 |
|
|
||||||
|
|
||||||
## 六、人闸实机目检清单(L2 Boss 开一局即可全查)
|
|
||||||
|
|
||||||
1. L2 Boss 开战:轮横幅下方叠「地形变异 · 贫矿脉 · 奶薄枪肥」横幅(减动效开=静态驻留)。
|
|
||||||
2. 战斗全程 C 区常驻「地形变异」角标(轮内刷新图后仍在);普通图/L1 Boss 该段隐藏。
|
|
||||||
3. 体感核对:回血/护甲格明显变少、攻击/爆裂/穿刺/奥术格变多(角标文案=回复与护甲资源减少、攻击资源增多)。
|
|
||||||
4. 帮助面板(玩法帮助块)末行有整图变异说明。
|
|
||||||
5. L1 Boss 无变异(无横幅无角标)。
|
|
||||||
6. 普通图:region 变异格照旧、零角标零横幅。
|
|
||||||
## 六′、追认结果(2026-10-04 用户人闸反馈)
|
|
||||||
|
|
||||||
- **文案**:俚语表述判定过界,改常规描述——横幅/角标/手册三处已随 copyfix 批修订(本报告 §五 #3/#4/#5 新值);机制与数值零改动。
|
|
||||||
- **其余各项追认通过**:偏斜幅度 30 / 命名 skewed_veins·贫矿脉 / 角标摆位 C 区 / N=60 / 兜底回落行为 / 全局池多行取首行 / 开战横幅发射位——用户「其他暂时没有发现什么问题,可以这样做」。
|
|
||||||
- 实机目检(§六清单)**用户裁改排**:随 UI 优化批之后统一验证(2026-10-04「先做完 UI 优化再一起验证」)——目检项已落 [07-体验验证清单 §⑪](../gdd/07-体验验证清单.md)(人闸闭合顺延至该次验证);T7b 跑批待用户发令。
|
|
||||||
|
|
||||||
## 七、③出口完成宣告与 T7b 移交
|
|
||||||
|
|
||||||
**③号卡实施批出口成立**(本报告+闸全绿+七正主落籍)。**⑥A4 配比批开工门=②③出口——本批出口即解⑥一半前置**(另半=②判式换代批出口)。
|
|
||||||
**T7b MC 读数批移交**:三态对账链=现行锚(`runsum_m4iter12_t10abb_n20_20261004` 只读——旧 Boss 读数含台账 96 承伤 55.8% 换代作废只测不判)+off(effect_value=0:替换制生效+偏斜中性,语义=零变异 Boss 图,与现行锚语义不同须注明)+on(偏斜 30);N=60 同种子配对;读数面=战役通关率+Boss 场承伤+奖励占比带 [15,40] 复算+偏斜期望实测;**只测不判**(带 A 判读归 M-4);**跑批前须用户批准**(先推算后重跑)。
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
# 全局作用域变异首发批 T7b MC 读数报告(2026-10-05 采集/出数——**只测不判**)
|
|
||||||
|
|
||||||
> 批位:迭代 14 ③号卡 T7b(任务书 §四 T7——用户 2026-10-04 批准发起)
|
|
||||||
> 三态对账链(任务书 §二):现行锚(只读)→ off(effect_value=0)→ on(effect_value=30)
|
|
||||||
> 判读归属:带 A 收敛判读归 M-4 全局难度批(Q4 甲);本报告零回调零判读(S2 只呈报)
|
|
||||||
|
|
||||||
## 一、采集配置
|
|
||||||
|
|
||||||
| 项 | 值 |
|
|
||||||
|---|---|
|
|
||||||
| 代码态 | master `9e1a8be`(worktree m4iter14-gvar-t7b,off 档仅 variation.tres 贫矿脉 effect_value 30→0 一处表值翻转,跑后还原) |
|
|
||||||
| 工具 | `adventure_monte_carlo.gd -- 60 71000 both`(零加成/route=min/attune off/shop off/relic off——现行锚族缺省面) |
|
|
||||||
| 规模 | off/on 各 60 种子 × 双策略(normal/perfect)= 各 120 局;另有 census 确定性普查(40 种子 × L2 Boss〔d4〕+ L3 Boss〔d9〕,逐格资源身份计数) |
|
|
||||||
| 产物 | sim-data/runsum_m4iter14_gvar_{off,on}_n60_20261004.jsonl(各 120 行)· gvar_census_{off,on}.txt · fulllog_gvar_{off,on}/(off 目录 38 个 2026-09 旧件系搬运期通配误收,已隔离 `_stale_pre_t7b/`,真身=20261005T0013xx/T0015xx 两件;on=T0037xx/T0039xx 两件) |
|
|
||||||
| 分析 | worktree `analyze_gvar_t7b.py`(口径注记见 §四) |
|
|
||||||
|
|
||||||
## 二、读数
|
|
||||||
|
|
||||||
### 2.1 偏斜期望实测(census——主读数)
|
|
||||||
|
|
||||||
| 站点 | 档 | 进攻族 | 生存族 | 白名单 | 理论精确目标 |
|
|
||||||
|---|---|---|---|---|---|
|
|
||||||
| L2 Boss(2359 身份) | off | 58.08% | 20.01% | 21.92% | 59.7 / 19.5 / 20.8 |
|
|
||||||
| L2 Boss | on | **64.86%** | **13.14%** | 22.00% | 66.2 / 13.0 / 20.8 |
|
|
||||||
| L3 Boss(4041 身份) | off | 58.13% | 19.60% | 22.27% | 同上 |
|
|
||||||
| L3 Boss | on | **65.28%** | **12.57%** | 22.15% | 同上 |
|
|
||||||
| **off→on 差值** | — | **+6.78 / +7.15pp** | **−6.87 / −7.03pp** | ≈0 | +6.5 / −6.5 / 0 |
|
|
||||||
|
|
||||||
实测与 v=30 静态推演的目标位移吻合(样本涨落 ±0.5pp 内)——**偏斜方向=生存变薄/进攻变肥,幅度与静态账一致**。逐型计数(off L2 → on L2):ac_up 343→217、heal 129→93、attack_up 400→432、spark 455→518、pierce 244→284、magic 271→296。白名单计数微差(如 L3 weaken 472→467)系样本涨落:权重向量未动(冒烟断言在册),抽样边界随池权重重排自然漂移。
|
|
||||||
|
|
||||||
### 2.2 战役通关率
|
|
||||||
|
|
||||||
| 策略 | off | on | 差 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| normal 战役通关 | 0/60 | 0/60 | 0(逐位相同——见 §三对照) |
|
|
||||||
| perfect 战役通关 | 37/60 = 61.7% | 38/60 = 63.3% | +1 局(±1 局=1.7pp,N=60 涨落域内) |
|
|
||||||
|
|
||||||
perfect levels_cleared 分布两档同构(off {0:1,1:17,2:5,3:37} / on {0:1,1:16,2:5,3:38})。normal 0/60 系新普通档画像常态基线(m4iter12 t7 批一读数 normal L1 已仅 5.0%,非本批引入)。
|
|
||||||
|
|
||||||
### 2.3 Boss 场承伤(enemy_action 口径,占该场首快照 max_hp)
|
|
||||||
|
|
||||||
| 策略 | off | on | 差 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| normal(n=13,全为 L1 Boss) | 均 23.5% / 中位 19.4% | 逐位相同 | 0 |
|
|
||||||
| perfect(n=144/142) | 均 **29.8%** / 中位 26.9% | 均 **28.1%** / 中位 25.0% | −1.7pp(≈1σ,N≈140 下不具判读力) |
|
|
||||||
|
|
||||||
- 完美档 Boss 承伤两档均落 ≤50% 带内;on 档微降方向与机制预期同向(进攻肥→Boss 击杀窗口缩短)。带 A 收敛判读归 M-4。
|
|
||||||
- on 档单局极值 111.4%(进 Boss 时残血、场内被击杀的超过该场满端口径的极端场,142 场中 1 例);off 极值 85.7%。
|
|
||||||
- 雷伤均=0%(perfect 档不踩雷——策略属性)。
|
|
||||||
|
|
||||||
### 2.4 奖励输出占比带 [15,40] 复算(⚠ 口径注记——S2 呈报项)
|
|
||||||
|
|
||||||
| 策略 | off | on |
|
|
||||||
|---|---|---|
|
|
||||||
| normal | L1=69.0% L2=66.0% | 逐位相同 |
|
|
||||||
| perfect | L1=76.1% L2=62.3% L3=55.1% | L1=76.1% L2=63.0% L3=57.4% |
|
|
||||||
|
|
||||||
**本口径下两档均高于带上限 40%——按 S2 只呈报不回调。** 口径差异必须注明:本读数=「奖励直伤行占比」(safe_cell/flag_hit/clear_reward ÷ 总输出,可归因下界);恒等式口径的「奖励侧输出占比」含 attack_up 增量拆分、且历史带值闭合方式无现成工具面(balance_verifier/analyze.py 均无此计算)。**off 与 on 同域且差值≈0(perfect L1 两档逐位同=零偏斜对照;L2 +0.7pp/L3 +2.3pp 微正,方向=进攻直伤源变多)**——偏斜对该占比无实质移动;越带是否口径错位归 M-4/曲线调参批裁决,非本批回调项。
|
|
||||||
|
|
||||||
## 三、一致性对照(作用域外零扰动的实证)
|
|
||||||
|
|
||||||
1. **normal 档 off/on 逐位相同**(RUNSUM 行 diff 为空:通关 0/60、levels 分布、Boss 承伤 13 场、占比全同)——normal 画像到不了 L2/L3 Boss(偏斜作用域),实测零扰动 ✓。
|
|
||||||
2. **L1 Boss 免疫实证**:normal 的 13 场 Boss 样本全为 L1 Boss(unlock_level=2 门控),off/on 逐位同 ✓。
|
|
||||||
3. **perfect L1 占比两档逐位同**(76.1%)——同理(L1 无 Boss 图)✓。
|
|
||||||
|
|
||||||
## 四、口径与语义注记
|
|
||||||
|
|
||||||
- **off 档语义**(任务书 §二):off=替换制生效+偏斜中性(零变异 Boss 图)——与现行锚 `runsum_m4iter12_t10abb_n20_20261004`(旧 Boss 图带 region 片)**行为不同**;on/off 差值隔离偏斜单项效应,off 与现行锚之差混杂替换制单项(Boss 图少 region 片)。旧 Boss 读数(含台账 96 承伤 55.8%)换代作废只测不判。现行锚本批只读未重跑(先推算后重跑纪律:代码态已变,既有数据不可推算 off/on,双档为新采集;现行锚数值如需对照由分析直读该文件)。
|
|
||||||
- Boss 场承伤=enemy_action 口径(analyze.py 同族);雷伤单列未并入。
|
|
||||||
- 占比=奖励直伤行可归因下界口径(§2.4 注记)。
|
|
||||||
- 采集跨零点(runsum 文件名 20261004 系采集起始日,报告/出数 2026-10-05)。
|
|
||||||
|
|
||||||
## 五、结论面(只测不判)
|
|
||||||
|
|
||||||
偏斜机制按 v=30 投值**实测兑现设计位移**(§2.1 主读数与静态账吻合);通关率/Boss 承伤两档差在 N=60 涨落域内无信号;占比带按可归因口径越带(S2 只呈报)。**零回调零判读**——带 A 收敛判读、占比带口径裁决、provisional 幅度收敛全部归 M-4 全局难度批。③号卡 T7b 义务闭合,批级出口材料齐(实施批出口报告+本读数报告)。
|
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
# 出口报告:挖掘风险不等式判式换代批(迭代14②号卡)
|
|
||||||
|
|
||||||
> 日期:2026-10-05 · worktree `g-plan2-m4iter14-mineq` / 分支 `m4iter14-mineq-20261005`
|
|
||||||
> 任务书:`.zcode/plans/mine-inequality-revision-miniloop-plan-2026-10-04.md`(T0-T5;本 prompt 即 U0 批准)
|
|
||||||
> 设计权威:`design/research/方案-挖掘风险不等式修订-2026-10-04.md` §九(裁决回填)
|
|
||||||
> 基线:master 912dcb2(冒烟 747/0)· 出口冒烟 **750/0**(+3 旗溢价断言)
|
|
||||||
|
|
||||||
## 一、执行摘要(T0-T5 全落)
|
|
||||||
|
|
||||||
| 卡 | 内容 | 终态 |
|
|
||||||
|---|---|---|
|
|
||||||
| T0 | audit 工具常量刷新(池67→77/直伤负向6-8-8/heal2/清图24-40/AP8/off_guard ac−1 0.2u模型/伏击口径甲退役/九型字典/β带+逐型输出) | ✓ 判值与方案报告 §四/附录A 逐位吻合(E_dig 1.442/1.948/2.455 · V_mine 2.460/2.670/2.881 · β 1.71/1.37/1.17)——改前静态锚 |
|
|
||||||
| T1 | runsum 五字段(flag_placed/flag_hit/flag_miss/flag_hit_gain/flag_miss_penalty) | ✓ 落码 `level_autoplay.gd`+`adventure_monte_carlo.gd`;接缝核证=step_row 行族可达(collect_rows 无关),聚合零新随机源。**行侧判据考证**:结算段对存续增益实例每轮复发行 effect 行且复用实例 source_class——标中事件行唯一判据=授予行专带 highlight="flag_hit"(实测 87 行==87 受理插旗 1:1 精确);雷区图谱追加分grant 以 display_name 后缀补捕;满层拒收行不入 |
|
|
||||||
| T2 | 改前行为锚:MC N=200/策略(种子窗 76000-76399,与 iter8 同窗)+ verifier 双窗(na=150/k=100/hp_first,seed0=8000 缺省) | ✓ `sim-data/runsum_m4iter14mineq_pre_n200_20261005.jsonl` + `_raw_verifier_mineq_pre.txt`;η 基线首次到手 |
|
|
||||||
| T3 | 判式落文五面 | ✓ 行动经济 F1 条款3 重立 v0.8(三层口径:条款2 锚不动/条款3 聚合健康式只留下限 0〔U_band 删〕/旗边际引理+条件二旗溢价 δ=0.25 登记已知破·T4 闭合)+β 带 [1.2,2.5] 与 η 读数入文;战斗结算 v0.25(gp/ap 当量口径注记 A5/A6+验收条款3 对账条);难度曲线与Boss v0.23(联动表+6 行、P1 改判读回执);registry `clause3_inequality` 重立条(改前锚+P7 两点修正:d70f6c3 池 76→77 混计、直伤 4/5/5→6/8/8 时效化);06 破线条正式收口;07⑫ 旗溢价目检项 |
|
|
||||||
| T4 | 标中兑付溢价机制 | ✓ settlement 新键 `flag_hit_premium=125`(percent 域 [100,999] 域校验;100=无溢价直通零扰动)+ 兑付公式一处(`_grant_routed` 只挂 flag_hit 正向:flat power 乘后入单据/治疗/排队;percent 幅度经 premium_pct 贯穿 `_apply_percent_row` 应用与呈现同乘 + 容器 `magnitude_override` 同快照);标空/挖格/清图不乘;DamageController 零改、雷安同池冻结、直伤雷 6/8/8 与 p_perfect 不动;smoke 断言 +3 |
|
|
||||||
| T5 | 改后锚+判读+出口包 | ✓ 本报告;锚换代声明见 §五 |
|
|
||||||
|
|
||||||
## 二、判读三件(T5 义务)
|
|
||||||
|
|
||||||
**① β 带判读**:β = 1.71 / 1.37 / 1.17(u=1/2/3,名义 ρ)——u=1/2 带内、u=3 微破下限(登记态点名,2026-10-04 P4 裁不强制回滚)。值链零表值变动(溢价只挂兑付侧不入 E_dig/V_mine),改前改后同值。
|
|
||||||
|
|
||||||
**② δ 敏感度判读(判据 ≥5pp,grill Q4)**:**行为无感 → δ 保留 + 登记「行为无感」**。
|
|
||||||
|
|
||||||
| 指标 | normal(改前→改后) | perfect(改前→改后) |
|
|
||||||
|---|---|---|
|
|
||||||
| η=标中÷插旗 | 0.8360 → 0.8445(**+0.85pp**) | 0.9921 → 0.9784(**−1.36pp**) |
|
|
||||||
| 标空率 | 0.1194 → 0.1154(−0.40pp) | 0 → 0(恒 0) |
|
|
||||||
| 插旗/局 | 53.0 → 57.3 | 244.4 → 255.8 |
|
|
||||||
| 全通关 | 1/200 → 0/200(个位数噪声) | 119/200 → 152/200(+16.5%) |
|
|
||||||
| 承伤/局 | 14.5 → 16.2 | 87.5 → 86.6 |
|
|
||||||
| 踩雷/局 | 6.78 → 7.13 | **0 → 0(硬不变量 ✓)** |
|
|
||||||
| 标中兑付合计 | 29,805 → 39,649(≈×1.33=×1.25 兑付+旗数微增,机制在位证据) | 170,606 → 233,745(≈×1.37 同上) |
|
|
||||||
|
|
||||||
η/标空率两位移均 <5pp → 判式诚实性不依赖行为弹性(Q4 裁),δ=1.25 provisional 维持。**只测不判随报面**:perfect 全通关 +16.5% / verifier perfect 冒险通关 65.3%→72.0%(增强向位移,与方案 §五 预测的「完美排雷达成率↑难度下行」腿同向)——四带判读归 M-4。
|
|
||||||
|
|
||||||
**③ 条件二转绿确认**:
|
|
||||||
- 判式口径(连续当量):E[标中]=1.25·E_dig ≥ 1.25·E_dig 等号压线成立(严格大于须 δ>0.25,×1.5 档留后手——§九 数学注记兑现)。
|
|
||||||
- **整数量级实现(audit 工具 `w_flag_hit` 按机制同式实算)**:W(1)=1.888 ≥ 1.802 ✓转绿 / W(2)=2.461 ≥ 2.435 ✓转绿 / **W(3)=3.034 < 3.068 微欠 −1.1%(登记面)**——成因=1 点量纲行(ac_up/action/spark)四舍五入取整地板 ×1.0 + u 缩放型在 u=3 占比上升。精化归调参批(后手=δ×1.5 档或取整规则进位);不构成回滚理由(登记已知破的限期闭合在 u=1/2 已兑现,u=3 欠口 <β_hi 裕度)。
|
|
||||||
|
|
||||||
## 三、verifier 双窗对照(na=150/k=100/hp_first,只测不判)
|
|
||||||
|
|
||||||
| 指标 | 改前 | 改后 |
|
|
||||||
|---|---|---|
|
|
||||||
| 冒险全通关 perfect | 98/150(65.3%) | 108/150(72.0%) |
|
|
||||||
| 冒险全通关 normal | 0/150 | 0/150 |
|
|
||||||
| 条件通关 L1 normal | 6.0%(9/150) | 16.7%(25/150) |
|
|
||||||
| 条件通关 L2 normal | 11.1%(1/9) | 4.0%(1/25)(小样本) |
|
|
||||||
| 条件通关 L1/L2/L3 perfect | 99.3% / 75.2% / 87.5% | 100.0% / 82.0% / 87.8% |
|
|
||||||
| 战役 perfect | 91/100 | 97/100 |
|
|
||||||
| 战役 normal | 0/100 | 0/100 |
|
|
||||||
|
|
||||||
注:verifier 窗与 MC 窗异种子域(8000 缺省 unique),条件通关率口径与 MC 历史带不可直比;配对差值才是本批读数。改后窗首跑曾在 campaign 段 14/100 处静默死亡(并发跑批互踩——与当日冒烟两连中断同签名,机器空闲后全窗重跑 exit 0),首跑残档已被重跑覆盖。
|
|
||||||
|
|
||||||
## 四、provisional / 追认单(随批呈用户)
|
|
||||||
|
|
||||||
| # | 项 | 状态 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | δ=1.25(形态 a 兑付溢价,percent 域 flag_hit_premium=125) | provisional 归调参;×1.5 档留后手 |
|
|
||||||
| 2 | 取整规则=四舍五入(与伤害管线 round_direction=floor 分域) | registry clause3_inequality 已登记;**整数量级 u=3 条件二微欠 −1.1%** 连带登记 |
|
|
||||||
| 3 | 1 点量纲行整数粒度地板(ac_up/action 取整后 ×1.0 不变) | 登记面(07⑫ 目检注记同步) |
|
|
||||||
| 4 | δ 行为无感(η/标空率 <5pp) | 保留+登记(Q4 裁) |
|
|
||||||
| 5 | 条件一上限承载=β_hi 独家(U_band 删) | 已落文(grill Q3) |
|
|
||||||
| 6 | smoke max 路径存储种子 42→43 重采 | δ 换代战局位移(败于路径终点);断言注释既定程序,临时重采脚本用后即删 |
|
|
||||||
| 7 | damage_probe A1 红灯 | **改前既有**(26374ac 复跑同败,非本批新增)——「fresh 池 Boss 21 拍攻击链」断言在现行 master 即红,归独立 mini-loop 处置(本批零新增登记) |
|
|
||||||
| 8 | 判式换代文本三处(行动经济 F1 条款3 / 战斗结算 验收标准 / 难度曲线与Boss 联动表) | 人闸=呈用户追认(07⑫ 结论回流面) |
|
|
||||||
|
|
||||||
## 五、闸绿记录与锚换代
|
|
||||||
|
|
||||||
- 冒烟 **750/0**(747 基线 + 3 旗溢价断言);run_all 15 套全 PASS;ui_input_probe 十六断言全绿;damage_probe 7 项 6 绿 1 既有红(§四.7)。
|
|
||||||
- doc 三闸对基线零新增(gdd_lint 失败集与基线同;term 同集;link worktree +2 系 gitignored 路径环境性死链——`.zcode/plans`/`archive/` 在主区实文件在盘 0 死链)。
|
|
||||||
- **锚换代声明**:对拍正主换代 → `sim-data/runsum_m4iter14mineq_post_n200_20261005.jsonl`(改后现行锚;改前锚 pre_n200 同窗留档);旧结构读数(m4iter12_t7off_n20 正主等)只测不判。audit 工具=条款3 常设重跑入口(条件二面板已随批升级为机制同式实算)。
|
|
||||||
- 07 新增人工项:⑫ 旗溢价兑付与标旗激励(实机目检约 5 分钟 + δ 行为读数判读回执)。
|
|
||||||
|
|
||||||
## 六、红线遵守声明
|
|
||||||
|
|
||||||
DamageController 零改动 ✓ · 雷安同池结构冻结不动 ✓ · mine_density 0.25 不动 ✓ · 直伤雷 6/8/8 不动 ✓ · p_perfect 不动 ✓ · 主区脏文件零接触 ✓ · 昂贵跑批=任务书 T2/T5 既定义务(静态推算先行为锚后跑批,MC 缓存层纪律:runsum 锚落 sim-data 留盘)。
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
# 出口报告:技能池执行批 + 提灯接线(迭代14④号卡 + ⑤小卡)
|
|
||||||
|
|
||||||
> 日期:2026-10-05 · worktree `g-plan2-m4iter14-skillpool` / 分支 `m4iter14-skillpool-20261005`
|
|
||||||
> 任务书:`design/research/任务书-技能池执行批-2026-10-04.md`(D1-D8 全裁零待裁;本 prompt 即 U0 批准)
|
|
||||||
> 事实源:研究报告(未跟踪件,主区 `design/research/研究-全怪物技能池数值验证-2026-10-04.md`——T0 盘点对表零漂移)
|
|
||||||
> 基线:master 85dc9af(冒烟 767/0)· 出口冒烟 **772/0**(+5 解锁集成断言)· run_all **15 套 PASS**(+1 新单测;reward_overlay_test 红=master 既有,卡①批已判读在册)
|
|
||||||
|
|
||||||
## 一、执行摘要(T0-T6+⑤ 全落,T7 读数后置)
|
|
||||||
|
|
||||||
| 卡 | 内容 | 终态 |
|
|
||||||
|---|---|---|
|
|
||||||
| T0 | 表盘点 | ✓ 19 行池+9 技能行与报告 §2 一致(零漂移);Boss 三行 (1,4)/(2,9)/(3,9) 确认 |
|
|
||||||
| T1 | 敌人系统.md 五件 | ✓ 池构成表 8 敌种全覆盖(补 L2+L3 五行:巨蜘蛛/卓尔/灰矮人/钩爪恐魔/石君王——轮廓+定位列,权重不登);护甲列改读表口径(失同步欠账清偿);Boss 句三代错峰口径;意图呈现节补半血解锁弹出规格;v0.13 |
|
|
||||||
| T2 | 表批注+registry | ✓ skills.tres 补「有效倍率表」(D4 整数基线半点矩阵:atk 0/1/2/3/4 × 全倍率落地值——round 半值上取唯一非 floor 点豁免登记);enemy.tres EV 锚整数口径重登记(地精 1.05→1.10〔atk1〕、6/1/2 池 1.333、巨蜘蛛 :472 消歧=atk1 口径非混用、重击手 1.333)+ 酋长 EV 重锚(抽样 1.1948、带 [1.10,1.30]);registry enemy.pool 字段扩 unlock_hp_pct + skill_unlock_mechanics 条 + skill 条十二行 |
|
|
||||||
| T3 | 机制·schema 与容器 | ✓ enemy_table schema 池条目 unlock_hp_pct 可选键域 [1,99](缺省无=无门槛);unit_container spawn 快照携带新键+unlocked 闩标记;rollable_skills/special_skills 双面过滤(锁定不入);check_skill_unlocks 半血闩(hp ≤ round(max_hp×pct/100),一次过门单向闩,确定性零随机) |
|
|
||||||
| T4 | 机制·编排与呈现 | ✓ battle_orchestrator._roll_round_actions 开轮逐敌闩检查→解锁置位+归因行「XX 解锁了 YY」(type=highlight 高光键 skill_unlock——行协议零新增);row_pacer 对该行弹一次性技能名 toast(board_zone.toast,info 档;**排除误触 perfect_sweep 演出**);保底/冷却语义回归确认(保底特殊技集=全非普攻,锁定过滤后不逼出) |
|
|
||||||
| T5 | 数据·三 Boss 解锁技 | ✓ skills.tres +3 行:震地怒击 ×2.5/CD4(酋长)·遏毒 ×2.0/CD3(卓尔)·岩崩 ×2.5/CD4(石君王)——命名 T5 定稿、倍率/冷却 provisional 归调参;三 Boss 池尾 +{weight:2, unlock_hp_pct:50};断言基线换代 3 处(技能表 9→12 行/池模板 +门控条目/酋长 EV 锚重锚) |
|
|
||||||
| T6 | 测试与回归 | ✓ 新单测 skill_unlock_test(22 断言:门谓词恰等/闩不可逆/双面过滤/保底不逼锁定/解锁即可摇/零扰动/确定性——run_all 注册 15 套);smoke +5(Boss 半血→下轮开轮解锁行恰一次/文本「蛛化卓尔精灵 解锁了 遏毒」/行型零新增);冒烟 772/0 |
|
|
||||||
| ⑤ | 提灯 +2 接线 | ✓ board_view.set_fog_lantern(enabled) 公共接线面(半径算式 `_fog_lantern` 迷雾批已在位——常量 FOG_LANTERN_BONUS=2 消费接通;写入即 refresh);类型微光不随视野扩(贴身 8 邻零改动);ui_input_probe case⑮ +接线断言(开=dist 9 格转可见+lantern=2/关=复原);HUD框架 注记 v0.14 段补接线位——**载体道具(aux_items 提灯新行)仍归 Alpha 信息件重定批,到位后组合根/库存挂接调用 setter**(本批不造载体=接缝就绪态) |
|
|
||||||
|
|
||||||
## 二、T7 读数义务(后置挂 07,不阻塞落籍)
|
|
||||||
|
|
||||||
- ≥50 distinct seeds 节奏重测(过涝判读带——主看面=Boss 半血后特殊技密度上探):**跑批须用户批准**(MC 缓存层纪律),挂 07 现行义务;**停机点 S2**:过涝越带 → 解锁技权重/倍率回调呈报,禁自动调。
|
|
||||||
- EV 重锚登记已落(enemy.tres 批注+registry);权重×冷却×保底三联动检算随 T7 读数批执行。
|
|
||||||
|
|
||||||
## 三、provisional / 追认单(随批呈用户)
|
|
||||||
|
|
||||||
| # | 项 | 状态 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 三 Boss 解锁技工作值:震地怒击 ×2.5/CD4 · 遏毒 ×2.0/CD3 · 岩崩 ×2.5/CD4 | provisional 归调参(D7 案甲;命名 T5 已定稿) |
|
|
||||||
| 2 | unlock_hp_pct=50 | 用户口径定死(血量一半) |
|
|
||||||
| 3 | 酋长 EV 抽样带重锚 [1.10, 1.30](含解锁技含闸速率实测 1.1948) | 数据登记面(旧锚 [0.97,1.03] 随批作废) |
|
|
||||||
| 4 | 呈现面=明细行+类型级预告+一次性技能名 toast(零动画) | D8 已裁,落地形态追认 |
|
|
||||||
| 5 | 首拍加权取消+杂鱼纹理注销 | D2 已裁,随批落文(敌人系统 v0.13) |
|
|
||||||
| 6 | ⑤ 提灯接缝就绪态(setter 就位、载体道具未来批挂接) | 范围登记(05 卡=纯接线,不造载体) |
|
|
||||||
|
|
||||||
## 四、07 新增人工项
|
|
||||||
|
|
||||||
- ⑭ Boss 半血解锁呈现目检(实机:Boss 打到半血 → 明细行「XX 解锁了 YY」金框行 + 技能名 toast 一次;二轮不复弹——闩语义)。
|
|
||||||
- 现行义务 += T7 节奏重测跑批(待用户批准)。
|
|
||||||
|
|
||||||
## 五、闸绿记录
|
|
||||||
|
|
||||||
冒烟 **772/0**(767+5)· run_all 15 套 15 PASS(+skill_unlock_test;reward_overlay_test 红=master 既有在册)· ui_input_probe 十六断言全绿(含⑮提灯接线断言)· doc 三闸对基线零新增(lint 2 基线存量/link 6=退役批后基线/term 3 存量)· 玩家可见文案走常规描述(禁自造词——「解锁了」常规动词)· 确定性复现不破坏(门=确定性谓词零随机,摇号消费仍在 behavior_roll 既有流)。
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
# 数值修复批·新尺读数与调优轨迹报告(2026-10-01)
|
|
||||||
|
|
||||||
> 背景:用户真人实证推翻旧模拟尺(零加成真人首通三关踩 23 雷 vs 旧普通档 L2 条件通关率 10.6%——尺子比真人弱 20 倍);用户令①重造模拟档位②按新尺重测现数值③调数值后交验收。**迭代 9 出口卡数值轴=用户否决「数值优化完全没有成功」,本批=根因修复+重调。**
|
|
||||||
> 执行会话产物;测量 = adventure_monte_carlo(零加成、route min、逐局独立种子);分析器=tools/tmp_analyze_newruler.py(批后删,日志留 sim-data/)。
|
|
||||||
|
|
||||||
## 一、模拟档位重构(新尺定义)
|
|
||||||
|
|
||||||
| 档 | 旧语义(已退役) | 新语义 |
|
|
||||||
|---|---|---|
|
|
||||||
| 完美档 | 扫雷子游戏上界(subset 解算零踩雷),但选路机械取最小编号+商店零购 | **元游戏上界**:解算同源+目标价值选路(rest 伤重/shop 买得起/boss 缓冲,tie-break 沿 route 方向保双窗轴)+商店贪心买齐(GP 局内死钱,真人实证两店全购) |
|
|
||||||
| 普通档 v2 | 新手画像(单步推理+盲挖兜底+不刷新)——被真人实证推翻 | **v3.4=完美策略+四类受控失误**:①标雷误挖 0.10(真手滑)②安全挖跳过 0.05(少挖)③卡死赌挖(概率启发=min(余雷/未知) 边界格;不刷新=用户自报口径)④空闲早赌 0.10(完美系把不确定性攒到残局=扫雷;真人早赌滚信息)。失误流=独立策略 RNG(局种子派生,逐位可回放;核心七流零扰动)。**夹具保护**:v3 行为只挂 run_adventure(st.adv),run_level 单关机制夹具保持旧语义——冒烟 596/0 零漂移实证 |
|
|
||||||
|
|
||||||
普通档踩雷实测 ~1.6-2.5/战(用户规格目标 +2/板量级 ✓)。
|
|
||||||
|
|
||||||
## 二、为什么之前多次调参调出垃圾(根因)
|
|
||||||
|
|
||||||
1. **普通档=自认新手画像**:单步推理+盲挖兜底,比任何会玩扫雷的真人都弱(真人首通 100% vs 该画像 L2 10.6%)。以它为「普通玩家」校带,带锚在一个不存在的人身上——每次「调到落带」=调到比真人弱 20 倍的基准,加难传不到真人体感。
|
|
||||||
2. **完美档不是元游戏上界**:选路机械取最小编号(商店/休息/奖励绕开或直通)、商店零购——真人两店全购+买血 +5。扫雷完美≠会玩这个游戏。
|
|
||||||
3. **踩雷伤害构成误读**:真人 23 雷仅 5 个直伤(25 血),其余 18=破财/警觉/暴走等效果雷——「踩雷无感」的真身是**负向池被效果雷稀释**,而雷当量调节只动了直伤三行。
|
|
||||||
4. 三犯同族:09-16「模拟 20% 是盲挖下界非真人基线」、09-23 直入口口径退役、本次——代理尺子第三次失真被真人抓出。
|
|
||||||
|
|
||||||
## 三、调优轨迹(每刀一测,N=100 种子 910003 起 route min)
|
|
||||||
|
|
||||||
| 刀 | 内容 | 普通(战役/L1 条件) | 完美(战役) |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 基线(旧数值+新尺) | —— | 0% / 0%(v3.2-v3.4 三版失误率校准均 0%,死因=L1 四连战无治疗夹缝非失误率) | 36-41% |
|
|
||||||
| 调参一 | hero max_hp 20→24;直伤雷 4/5/5→6/8/8 | 0% / 1% | 50% |
|
|
||||||
| 调参二 | L1 系八行敌 atk 2→1(区间 1-3→0-2 保中点锚;L2/L3 atk 3 不动) | 0% / 7% | 62%(L1 97/L2 78/L3 82) |
|
|
||||||
| 调参三 | hero max_hp 24→26 | 0% / 8% | **68%(L1 99/L2 83/L3 83)** |
|
|
||||||
|
|
||||||
刀位语义:**「危险来自雷,不来自杂兵」**——雷直伤 +50-60%(踩雷必痛,直击用户「23 雷无感」),杂兵垫刀减半(L1),血池 +30%(夹缝生存)。普通档始终 ~0% 的含义:按用户规格(每板多踩 2 雷)的玩家在现内容下几乎必死于第一关——**真人(不故意踩已证雷、赌挖分布更散)落在普通档与完美档之间**,预测新数值下真人首通=失败或险胜(用户验收口径)。
|
|
||||||
|
|
||||||
## 四、定稿读数(N=200,种子 420000 起,runsum_numfix_final_n200_20261001.jsonl)
|
|
||||||
|
|
||||||
| 档 | 战役全程通关 | L1 条件 | L2 条件 | L3 条件 | 踩雷/局 |
|
|
||||||
|---|---|---|---|---|---|
|
|
||||||
| 完美(元游戏上界) | **78.5%**(157/200) | 98.0% | 86.7% | 92.4% | 0.00 |
|
|
||||||
| 普通 v3.4(完美+失误,~1.7 雷/战) | 0%(0/200;26/200 到达 L2) | 13.0% | 0% | — | 7.12 |
|
|
||||||
|
|
||||||
种子窗注:N=100 窗(910003 起)完美 68% vs 本窗 78.5%——窗间波动 ~10pp 与历史读数同量级,方向结论两窗一致。完美档踩雷恒 0(零失误断言保持);普通档踩雷 7.12/局(~1.7/战,用户规格 +2/板量级 ✓)。
|
|
||||||
|
|
||||||
**判读**:完美执行大概率通关(上界健康);「每板多踩 2 雷」的玩家几乎必死于 L1——难度梯度由雷承担,与「危险来自雷」的刀位语义一致。真人(不故意挖已证雷、赌挖更散)预测落在两档之间=首通失败或险胜(**待用户实机验收**)。
|
|
||||||
|
|
||||||
## 五、连带与挂账
|
|
||||||
|
|
||||||
- **全旧带读数作废**:普通档语义已换人+数值三刀,难度曲线文档三条验收带(普通 L1 [35,55]/L2 [10,15]、完美 [35,65])失效——新带值须新尺重测后用户拍板,重锚前只测不判。
|
|
||||||
- **MC 锚换代**:t7minepower 锚(策略+数值双变)作废;新锚=本报告 N=200 runsum 文件。
|
|
||||||
- 迭代 8 雷当量 4/5/5 provisional → 6/8/8(本批再抬档,06 条目随收口)。
|
|
||||||
- 真人 k 补跑(迭代 9 卡⑩)在新数值上重跑,旧真人局(seed 42)留档作画像校准点不作读数。
|
|
||||||
|
|
||||||
## 六、悬崖归因(2026-10-01 追加——用户问「+2雷/板怎会差 78.5% vs 0%」,只读日志分析零改动)
|
|
||||||
|
|
||||||
输入=N=200 普通档 200 局全量 step/settlement 流水(死亡局 200/200)。
|
|
||||||
|
|
||||||
**输入差是线性的,但系统把它放大成阈值悬崖——三个放大器:**
|
|
||||||
|
|
||||||
1. **效果雷复利放大(主放大器)**:普通档踩的雷里效果雷:直伤雷 ≈ **3.3:1**(5.47 vs 1.66/局)。
|
|
||||||
效果雷零直接伤害但持续负债——警觉 310/暴走 298/失衡 214/乏力 138/迟滞 101(每 200 局):
|
|
||||||
暴走=敌方伤害 +25%、乏力=主角输出 -25% 拖长战斗→更多敌方轮次→垫刀进一步放大。
|
|
||||||
死亡局垫刀均值 16.9 血(占承伤 55%),其中相当部分是暴走/失衡加成后的放大值——
|
|
||||||
「多踩 2 个雷」的真实代价 ≈ 直伤 12.6 + 效果雷引发的垫刀增量与战斗延时 ≈ **20-25 有效血/局**。
|
|
||||||
2. **直伤雷是不可减免轴**:AC 掷点只对敌方攻击生效,直伤雷绕过全部防御——当前唯一有效
|
|
||||||
伤害轴恰好是普通档独吃的轴(完美档恒 0)。游戏没有第二个缓解轴(战斗内回复/直伤减伤)。
|
|
||||||
3. **血池贴阈值**:池 26 vs 每治疗段(L1 四连战+Boss 前零回复)总承伤 ~30——均值贴地,
|
|
||||||
生存率是阈值函数,输入小移→输出悬崖(87% 死在战斗 3-5 号位)。
|
|
||||||
|
|
||||||
HP 轨迹实证:死亡局常见单战 10-20 血深切(26→2/23→10/25→13),非渐进磨死。
|
|
||||||
|
|
||||||
**结论**:悬崖=数值设计的三个结构性质(效果雷无定价复利/直伤无减免轴/池贴阈值)的合成结果,
|
|
||||||
不是模拟器误差——模拟器如实呈现了这个结构。**修正方向(未动手,待拍板)**:①效果雷明码标价
|
|
||||||
(折算直伤当量入风险端定价)或减复利(暴走/失衡幅度与时长减档)②给直伤开减免轴(护甲按值
|
|
||||||
减直伤/战斗内回复)③池与治疗段比例拉离阈值④白板首通带按 genre 锚定 [2,10]%(局外爬升承接)。
|
|
||||||
|
|
||||||
## 七、剂量-响应曲线(2026-10-01 追加——问题二「+2雷/板怎会差悬崖」的数学形态实测)
|
|
||||||
|
|
||||||
固定数值(三刀后),只动普通档失误注入率(=每战踩雷剂量),N=100、种子 420000 起、route min:
|
|
||||||
|
|
||||||
| 剂量(每战踩雷) | 失误参数(slip/idle) | L1 通过 | 战役全通 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 0(完美档) | — | 98%(N=200) | 78.5%(N=200) |
|
|
||||||
| ≈0.8 | 0.05/0.05 | **36%** | **1%** |
|
|
||||||
| ≈1.7(v3.4 现行) | 0.10/0.10 | 13% | 0% |
|
|
||||||
| ≈2.6(v3.2 旧参) | 0.22/0.22 | ~0% | 0% |
|
|
||||||
|
|
||||||
**形态判读**:陡 sigmoid——0→0.8 雷/战区间损失 77.5pp(每 0.1 雷 ≈ 10pp),0.8 雷以上近乎归零饱和。
|
|
||||||
「多踩 2 雷/板」的输入差落在曲线最陡段,输出即悬崖;类型调研(design/research/roguelike-difficulty-
|
|
||||||
benchmark-2026-10-01.md)给的验收指标=每雷边际 ≤15pp 且 S 形连续无 >25pp 单步跳变——现曲线
|
|
||||||
每雷边际 ≈39pp,超 2.6 倍。半剂量日志=sim-data/mc_dose_half_n100_normal_20261001.log
|
|
||||||
(测量完 slip 参数已还原 0.10/0.10,未入提交)。
|
|
||||||
@@ -1,297 +0,0 @@
|
|||||||
# t17_defer_probe 运行证据(2026-10-02)
|
|
||||||
|
|
||||||
- 被测:演播后排窗(T17 用户令「伤害过程演完才切战斗胜利结算窗」)——本修复的定点关联测试
|
|
||||||
- 断言①(判别性):胜利同帧终局面未开+挂起在案+排播队列在播——旧行为(同帧 flush+开窗)跑此必红
|
|
||||||
- 断言②:排播放完(waited≈5.5s=15 行 × 0.22s 段内间隔+段间间隔)终局面开启
|
|
||||||
- 复跑方式:godot --headless --path game res://smoke/t17_defer_probe.tscn(退出码 0=PASS / 2=FAIL)
|
|
||||||
- 本文件=2026-10-02 master(bb35fdc)实跑原始输出留存
|
|
||||||
- 毫秒时间戳补测(同日):结算入队=1581 ms · 弹窗可见=7073 ms · **相差=5492 ms**(22 行;AP 耗尽→结算开始=同帧 0ms——核心同步架构,时长全部为逐行演播)
|
|
||||||
|
|
||||||
## 原始输出
|
|
||||||
|
|
||||||
```
|
|
||||||
Godot Engine v4.7.2.stable.official.ed1daf0bf - https://godotengine.org
|
|
||||||
|
|
||||||
WARNING: Can't change the size of a `SubViewport` with a `SubViewportContainer` parent that has `stretch` enabled. Set `SubViewportContainer.stretch` to `false` to allow changing the size manually.
|
|
||||||
at: _internal_set_size (scene/main/viewport.cpp:5627)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] _notification (res://presentation/views/battle_stage_view.gd:177)
|
|
||||||
[1] build_battle_ui (res://presentation/ui_assembler.gd:24)
|
|
||||||
[2] _build_ui (res://presentation/main.gd:192)
|
|
||||||
[3] _ready (res://presentation/main.gd:181)
|
|
||||||
[4] _ready (res://smoke/t17_defer_probe.gd:16)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Attempted to push_back a variable of type 'String' into a TypedArray of type 'Dictionary'.
|
|
||||||
at: _internal_validate (./core/variant/container_type_validate.h:73)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
ERROR: Condition "!_p->typed.validate(value, "push_back")" is true.
|
|
||||||
at: push_back (core/variant/array.cpp:285)
|
|
||||||
GDScript backtrace (most recent call first):
|
|
||||||
[0] append_row (res://presentation/views/battle_log_view.gd:109)
|
|
||||||
[1] _consume_row (res://presentation/row_pacer.gd:91)
|
|
||||||
[2] _process (res://presentation/row_pacer.gd:79)
|
|
||||||
[t17_defer] PASS — 胜利同帧挂起+排播完开窗 两断言全过(waited=5.5s)
|
|
||||||
ERROR: 18 RID allocations of type 'PN13RendererDummy14TextureStorage12DummyTextureE' were leaked at exit.
|
|
||||||
ERROR: 18 RID allocations of type 'PN18TextServerAdvanced22ShapedTextDataAdvancedE' were leaked at exit.
|
|
||||||
ERROR: 2 RID allocations of type 'PN18TextServerAdvanced12FontAdvancedE' were leaked at exit.
|
|
||||||
WARNING: 4 RIDs of type "CanvasItem" were leaked.
|
|
||||||
at: _free_rids (servers/rendering/renderer_canvas_cull.cpp:2735)
|
|
||||||
WARNING: 102 ObjectDB instances were leaked at exit (run with `--verbose` for details).
|
|
||||||
at: cleanup (core/object/object.cpp:2536)
|
|
||||||
ERROR: 1 resources still in use at exit (run with --verbose for details).
|
|
||||||
at: clear (core/io/resource.cpp:822)
|
|
||||||
```
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
# T19 真人标定局·读数报告(2026-10-02 中期判读)
|
|
||||||
|
|
||||||
> **任务位**:迭代 9 出口 T19(07-体验验证清单 §⑨ 现行义务)。数据源=本机日志 `logs/playtest_*.jsonl`(Godot 用户数据目录)。**样本=有效局 2,低于 §⑨ 下限 3 局——本报告为中期判读,终判读待局数补齐或用户裁定收口口径**(不虚标)。
|
|
||||||
> 天赋基线:零加成(用户确认)。模拟对照锚:`sim-data/runsum_numfix_final_n200_20261001.jsonl`(numfix 新尺 N=200)+ 外部基准 `design/research/roguelike-difficulty-benchmark-2026-10-01.md`。
|
|
||||||
|
|
||||||
## 一、今晚局清单与分类(2026-10-02 19:53–23:37,共 7 份日志)
|
|
||||||
|
|
||||||
| 日志 | 时长 | 判定 | 分类 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| playtest_42_20261002T195350 | ~1 分 | 1 战斗无 level_end | T17 目检局(不计) |
|
|
||||||
| playtest_42_20261002T195920 | ~1 分 | 0 战斗 | T17 目检局(不计) |
|
|
||||||
| playtest_42_20261002T201804 | <1 分 | 1 action | T17 目检局(不计) |
|
|
||||||
| playtest_42_20261002T231948 | ~3 分 | 5 战 4 胜,踩雷 9,死亡 | **第 26 项送死测试局**(故意踩雷送死——9 雷/16 直伤为自伤所致),不计入标定 |
|
|
||||||
| playtest_42_20261002T232226 | ~8 分 | 13 战全胜,**战役通关** | **T19 有效局①** |
|
|
||||||
| playtest_42_20261002T233127 | <1 分 | 1 战胜利后放弃 | **第 27 项放弃测试局**(零挖格 8 轮纯普攻取胜——用户自测探针,用户已另行记录,本报告不追),不计入标定 |
|
|
||||||
| playtest_42111_20261002T233138 | ~6 分 | 10 战 9 胜,死于 L3 首战 | **T19 有效局②** |
|
|
||||||
|
|
||||||
## 二、有效局读数
|
|
||||||
|
|
||||||
| 局 | 结果 | 进度 | 战斗/轮 | 承伤(敌+雷直伤) | 踩雷 | 回复 | 生命轨迹尾段 |
|
|
||||||
|---|---|---|---|---|---|---|---|
|
|
||||||
| ① 232226 | **通关**(三 Boss 全杀) | 3 关全清 | 13/52 | 59(51+8) | 5(直伤雷仅 1 颗=8 点) | 54(49+节点5) | …20→19→20→12(活着收尾) |
|
|
||||||
| ② 42111 | 死亡 | L1+L2 清(双 Boss 杀),死 L3 战 1 | 10/35 | 67(43+24) | 4(直伤雷 3 颗=24 点) | 38(29+节点9) | 6→5→5→0 |
|
|
||||||
|
|
||||||
雷当量实机对账:L2 直伤雷 8 点/颗 ✓(局② 3×8=24;局① 1×8)——与 numfix 刀后 6/8/8 一致。
|
|
||||||
|
|
||||||
## 三、判读窗
|
|
||||||
|
|
||||||
1. **通关率窗**:真人 1/2 战役通关(局② 深入到 L3 首战方死)。numfix 报告预测「真人落两档之间=首通失败或险胜」——**实测兑现**。位阶对照:模拟完美档 78.5% / 普通档 0%,真人执行质量近完美侧(踩雷 4-5/局 vs 普通 7.12 vs 完美 0)。样本 2 局,只作方向读数。
|
|
||||||
2. **踩雷窗**:真人 4-5 雷/局(中位 4.5),落两档之间、偏普通侧——「难度由雷承担」刀位语义实机成立。
|
|
||||||
3. **承伤健康窗**:通关局承伤 59 vs 血池 26+回复 54——险胜贴阈值,与 numfix §六「血池贴阈值」结构判读一致;死亡局 67 越池而死。数值包络工作正常,无「轻松活」信号。
|
|
||||||
4. **k 系数窗:挂起(数据缺口,如实记录)**。§⑨ 定义 k=真人整关承伤中位 ÷ 模拟完美档承伤中位(预警 k<0.3),但模拟 runsum 锚 schema **无承伤字段**(`hero_dmg`=主角造成伤害,`taken` 未记录)——k 无法自现行锚计算。**联动件**:MC 新尺重锚时 runsum 增记 `taken` 字段,重锚后补算 k 终值。
|
|
||||||
5. **局数**:有效 2 局 < §⑨ 下限 3 局。补局义务或收口裁定待用户(见带值呈报件五)。
|
|
||||||
|
|
||||||
## 四、结论与回流
|
|
||||||
|
|
||||||
- 迭代 9 内**无新增缺陷信号**(两有效局战斗/结算/奖励/商店/Boss/三关卡流程全通跑,零异常事件);用户另记的问题不属本迭代,未 chase。
|
|
||||||
- 真人读数作带值拍板呈报的佐证输入(同日呈报);正式 k 终值与终判读挂 MC 新尺重锚后补算。
|
|
||||||
- 现行锚换代义务维持:本报告不构成带判定(只测不判纪律),带值由用户裁定后方生效。
|
|
||||||
@@ -1,139 +0,0 @@
|
|||||||
# 现行自动化测试·性能验证报告(2026-10-02)
|
|
||||||
|
|
||||||
任务书:`.zcode/plans/test-perf-audit-prompt-2026-10-02.md`(用户委托批——只测量与报告,零改码零改断言)。
|
|
||||||
执行:独立会话,全程主工作区(master)、全程串行(任一时刻至多一个本会话 Godot 测试进程)。
|
|
||||||
|
|
||||||
## 0. 环境与测量前提
|
|
||||||
|
|
||||||
- 引擎 `Godot_v4.7.2-stable_win64_console.exe`;cwd=`D:\code\g-plan2`;素材不入 git 照旧。
|
|
||||||
- **测量期间 master 被并行会话连续落地**(见 §6.3):批次归属两树态——
|
|
||||||
- **T1 态 = 5e501a6**(18:04 前):#1 冒烟×4、#2 run_all×4、#3/#4/#5 探针批次;
|
|
||||||
- **T2 态 = 725f0ac**(现行头):#5–#11 全部探针、#14–#16、#12/#13、新码复验均在 725f0ac。
|
|
||||||
- 绿件在两态下读数一致(冒烟 60.55 vs 62.20s;run_all 12.16 vs 12.75s)——**落地零计时漂移**。
|
|
||||||
- 并行会话的 Godot 进程(含一个 1GB 窗口化实例)与本项目测量同窗活跃,秒级件上的负载噪声见 §3 波动性。
|
|
||||||
- 工作区在飞件(`game/core/battle_orchestrator.gd` 注释空白、`game/project.godot` stretch/aspect 行、未跟踪 `game/tests/probe14_test.gd`)**只标旗未触碰**。
|
|
||||||
|
|
||||||
## 1. 计时总表
|
|
||||||
|
|
||||||
协议:每件先跑 1 次记冷启动,随后正式 3 次取中位;外部 python 计时包装(`%TEMP%\perf-audit-20261002\perf_run.py`),零插桩。#12/#13 按任务书走小样本协议(单跑推算)。
|
|
||||||
|
|
||||||
| # | 测试 | 冷启动 | 正式 3 跑 | **中位** | 极差 | 极差% | 判读锚(exit) |
|
|
||||||
|---|---|---:|---|---:|---:|---:|---|
|
|
||||||
| 1 | 全量冒烟 `run_smoke` | 61.77 | 60.55 / 61.96 / 60.54 | **60.55s** | 1.42 | 2.3% | 0(636 项 0 失败×4) |
|
|
||||||
| 2 | run_all 15 套件 | 12.36 | 12.00 / 12.45 / 12.16 | **12.16s** | 0.44 | 3.7% | 0(all green ×4) |
|
|
||||||
| 3 | ui_probe | 1.82 | 1.82 / 2.05 / 2.69 | **2.05s** | 0.86 | **42.0%** ⚠ | 0 |
|
|
||||||
| 4 | ui_input_probe | 2.40 | 2.44 / 2.55 / 2.52 | **2.52s** | 0.11 | 4.4% | 0 |
|
|
||||||
| 5 | ui_click_probe | — | **双态全红,见 §6.1** | — | — | — | 旧态 exit=1 ×3;现行头 240s 看门狗击杀 ×4 |
|
|
||||||
| 6 | fx_probe | 2.58 | 2.47 / 2.49 / 2.47 | **2.47s** | 0.02 | 0.8% | 0 |
|
|
||||||
| 7 | ui_layout_probe | 1.75 | 1.73 / 1.74 / 1.75 | **1.74s** | 0.02 | 1.4% | 0 |
|
|
||||||
| 8 | ui_tune_probe | 9.50 | 9.26 / 9.33 / 9.41 | **9.33s** | 0.15 | 1.6% | 0 |
|
|
||||||
| 9 | shot_probe(窗口化) | 5.23 | 3.67 / 3.51 / 3.68 | **3.67s** | 0.17 | 4.5% | 0(冷启动+42%=首跑 shader 编译) |
|
|
||||||
| 9a | └ shot_checker 断言 | 1.26 | 0.86 / 0.89 / 0.88 | **0.88s** | 0.02 | 2.7% | 0(机检面全过) |
|
|
||||||
| 10 | fx_shot_probe(窗口化) | 6.93 | 6.89 / 6.86 / 6.94 | **6.89s** | 0.08 | 1.1% | 0 |
|
|
||||||
| 11 | board_shot_probe(窗口化) | 3.36 | 3.28 / 3.30 / 3.44 | **3.30s** | 0.16 | 4.8% | 0 |
|
|
||||||
| 12 | MC 蒙特卡洛(小样本) | — | N=50×2 策略=100 局 **486.0s** | **4.86s/局** | — | — | 0(100 RUNSUM) |
|
|
||||||
| 13 | balance_verifier(小样本) | — | --quick 36 局 **173.7s** | **4.83s/局** | — | — | 0 |
|
|
||||||
| 14a | gdd_lint | 0.53 | 0.31 / 0.31 / 0.31 | **0.31s** | 0.00 | 1.3% | **1 ×4(8/8 文件不通过,见 §6.2)** |
|
|
||||||
| 14b | doc_link_audit | 0.98 | 0.41 / 0.41 / 0.41 | **0.41s** | 0.00 | 1.0% | 0 |
|
|
||||||
| 14c | doc_term_audit | 0.41 | 0.38 / 0.38 / 0.39 | **0.38s** | 0.01 | 1.6% | 0 |
|
|
||||||
| 15 | repo_structure_audit(熵增闸) | 1.10 | 1.07 / 1.04 / 1.06 | **1.06s** | 0.03 | 2.4% | 0 |
|
|
||||||
| 16 | static_scan.sh | 0.84 | 0.75 / 0.64 / 0.76 | **0.75s** | 0.12 | **16.4%** ⚠ | 0(S1–S8 可执行子集全过) |
|
|
||||||
|
|
||||||
与任务书「已知量级」对照:冒烟 ~65s→实测一致;run_all「数十秒级」→实测 12s 更快;窗口化三件「十秒级」→实测 3.3–6.9s 更快;MC「预计最长」→证实(推算满档 ≈65 分钟,见下)。
|
|
||||||
|
|
||||||
### #12/#13 满档推算
|
|
||||||
|
|
||||||
- **MC**(`-- 50 80000 both min`,100 局实测):normal 档 ≈**1.21s/局**(前 50 局 ~60s),perfect 档 ≈**8.47s/局**(后 50 局 ~423s,≈7 倍——perfect 选路/战斗更充分)。现行 80000 代链各档 400 局满档推算:normal ≈8.1 分钟 + perfect ≈56.5 分钟 ≈ **65 分钟/全档**;单策略 400 局 = 8 / 56 分钟。
|
|
||||||
- **verifier**(`--quick` 36 局 = (8 冒险+10 战役)×2 画像,173.7s):**4.83s/局**。满档 na=60/k=60 = (60+60)×2 = 240 局 ≈ **19.3 分钟**。
|
|
||||||
|
|
||||||
## 2. 冒烟分段耗时与 180s 闸余量
|
|
||||||
|
|
||||||
方法注记:管道模式下 GDScript print 为块缓冲(全量退出时才刷,逐行时戳全聚在 60.445s)——段级改用 **`--verbose` 强制行刷**法 2 跑(61.0 / 63.6s,较常态中位膨胀 ≤5%,占比可信);winpty 伪终端在本环境断言失败不可用(备选已试、弃)。verbose 双跑 636/0 全绿、零 SCRIPT ERROR。
|
|
||||||
|
|
||||||
**180s 硬闸(ADR-0004,run_smoke.py 外部超时)余量:180 − 60.55 = 119.45s(余 66.9%,冒烟仅用闸的 33.1%)**。分段合计 61.7s ≈ 墙钟,无未计入空洞。verbose 双跑段级极差全部 <10%(最大 5.7%),段占比稳定。
|
|
||||||
|
|
||||||
### 最慢 Top10 段(两跑中位;各自验证内容)
|
|
||||||
|
|
||||||
| # | 段(smoke_all.gd 行号) | 中位 | 占比 | 验证什么 |
|
|
||||||
|---|---|---:|---:|---|
|
|
||||||
| 1 | 冒险结构验收(:277) | **21.30s** | 34.5% | 自动玩家三关完整连探:三层奖励框架行值单点/大奖励兑付/摘要五件事/账本封闭——全冒烟最重的端到端段 |
|
|
||||||
| 2 | 关卡节点地图·分支节点图 L2(:2818) | **18.58s** | 30.1% | 图合法性校验(正反例)+ 幽暗地域图版行进 |
|
|
||||||
| 3 | SaveManager 存档读写/迁移/兜底(:3684) | **9.69s** | 15.7% | 存档序列化全链:写盘/读回/版本迁移/兜底/隔离档——纯逻辑段里唯一的重 IO 段 |
|
|
||||||
| 4 | 关卡节点地图·线性推进(:737) | 3.56s | 5.8% | L1 全链自动推进(战×2→道具→战×2→恢复→Boss) |
|
|
||||||
| 5 | 遭遇随机化(:1764) | 2.81s | 4.6% | unit_count 区间骰/encounter 流/可回放——大量掷点重放循环 |
|
|
||||||
| 6 | 商店房三收口(:3201) | 1.00s | 1.6% | 商店经济链(现价/加算区/余额不足拒/离开回选路/收束清零) |
|
|
||||||
| 7 | 护甲等级掷点(:851) | 0.77s | 1.2% | 查档纯函数+暴击+伤害下限+AC12 分布(批掷点)+棋盘必中 |
|
|
||||||
| 8 | 行动经济·轮内刷新(:1396) | 0.63s | 1.0% | 方案 A:Active 相位当场换图继续挖 |
|
|
||||||
| 9 | 敌人技能池(:2439) | 0.46s | 0.7% | 开轮摇号/冷却保底两闸/三乘法链/独立子流 |
|
|
||||||
| 10 | 棋盘生成(:1035) | 0.32s | 0.5% | 棋盘生成公式面 |
|
|
||||||
|
|
||||||
**集中度:Top3 段 = 49.6s,占冒烟 80.4%;Top6 = 93.3%;其余 37 段合计 ~4.2s。** 冒烟耗时本质=三关完整冒险×2 条路径(结构验收+L2 图版)+存档 IO,其余全是亚秒级。
|
|
||||||
|
|
||||||
<details><summary>全部 43 段中位明细(秒)</summary>
|
|
||||||
|
|
||||||
21.30 冒险结构验收|18.58 分支节点图 L2|9.69 SaveManager|3.56 线性推进|2.81 遭遇随机化|1.00 商店房三收口|0.77 护甲等级掷点|0.63 轮内刷新|0.46 敌人技能池|0.32 棋盘生成|0.24 清图奖励双份兑付|0.22 棋盘布局格边长公式|0.20 轮内刷新 provenance 守卫|0.17 GP escrow 隔离|0.16 GP 冒险钱包到账|0.16 格面资源资格面|0.16 插旗不可逆四情况|0.14 冒险结构 API 闸|0.12 完整战斗回放 L2 熊地精|0.11 极性路由|0.11 攻击类型×护甲克制|0.11 完整战斗回放 L1 地精|0.10 负向字典逐型直验|0.08 地形变异布置段 L2|0.08 主角乘区接线|0.08 地形变异布置段 L1|0.07 fresh 池攻击链|0.06 元进度收束入账与工坊|0.05 五段全序+行型封闭|0.05 旗动作耗尽末点 AP|0.03 PlaytestLogger|0.02 元进度注入可见与白板|0.02 战斗日志视图行格式化|0.01 元进度几何定价与购买|<0.01×9:伤害量值区间/DifficultyTable/格面资源九型/地形变异框架面/格面资源身份面/冒险表/MetaTable 结构/换装护栏/商店房图不变式
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## 3. 波动性标注(极差 >10% 的项)
|
|
||||||
|
|
||||||
| 项 | 极差% | 绝对幅度 | 判读 |
|
|
||||||
|---|---:|---|---|
|
|
||||||
| ui_probe | 42.0% | 0.86s(1.82→2.69) | 2 秒级件上的绝对小值;测量窗内并行会话 Godot 进程活跃(其 1GB 窗口化实例同机)所致负载噪声,非测试自身不稳 |
|
|
||||||
| static_scan.sh | 16.4% | 0.12s(0.64→0.76) | 同上,亚秒级件 + 内部多路 grep 子进程对负载敏感 |
|
|
||||||
| shot_probe 冷启动 | +42% | 5.23 vs 中位 3.67 | 窗口化首跑 GPU shader 编译,单次成本 ~1.6s,后续稳定 |
|
|
||||||
|
|
||||||
其余全部件极差 <5%(多数 <3%),段级极差全部 <10%——**环境噪声可控,全部中位读数可作分级依据**。MC/verifier 为小样本单跑协议,无极差数据(协议如此)。
|
|
||||||
|
|
||||||
## 4. 分级建议(数据支撑,对照 06 在册「呈现层测试分级与 UI 驱动夹具周期化」条口径)
|
|
||||||
|
|
||||||
06 条现行口径(2026-09-26 用户裁):**每次变更必测=run_smoke 全量 + ui_input_probe(触碰 presentation/ 加 ui_click_probe + ui_layout_probe);周期测=B 档视口截图/C 档黄金图/真人目检/MC 大扫描**。实测数据对该口径的支撑与加码:
|
|
||||||
|
|
||||||
**A. 每次变更必跑池(headless 全套 ≈87s,单机可承受)**
|
|
||||||
| 件 | 中位 | 依据 |
|
|
||||||
|---|---:|---|
|
|
||||||
| run_smoke 全量 | 60.6s | 闸余量 119s;耗时本质=Top3 段(三关冒险端到端+存档 IO),裁剪空间小、回归价值最高 |
|
|
||||||
| run_all 15 套件 | 12.2s | 便宜且覆盖公式/状态机/契约/致命类协议 |
|
|
||||||
| ui_input_probe | 2.5s | 06 条点名必跑,实测仅 2.5s,维持 |
|
|
||||||
| ui_probe / ui_layout_probe / fx_probe | 1.7–2.5s | 秒级件,触碰 presentation/ 时顺手加跑无负担(06 口径内扩展,建议追认) |
|
|
||||||
|
|
||||||
**B. 周期池(维持 06 口径,数据加码)**
|
|
||||||
| 件 | 中位/推算 | 依据 |
|
|
||||||
|---|---:|---|
|
|
||||||
| ui_tune_probe | 9.3s | 探针里最贵(调整板/批量模拟通路),建议触碰调参/模拟通路时跑,否则归周期池尾 |
|
|
||||||
| 窗口化三件+shot_checker | 3.3–6.9s+0.9s | 单件不贵但需真渲染+桌面弹窗在场,06 裁 B 档=周期(样张/表现批收口窗)——数据支持维持(另见冷启动 shader 编译 +1.6s) |
|
|
||||||
| MC 大扫描 | **满档 ≈65 分钟**(perfect 档 8.5s/局 7 倍于 normal) | 06 已归周期,数据强支持;如需快速回归可用 50 局/策略小样本 ≈8 分钟 |
|
|
||||||
| verifier 满档 | **≈19 分钟** | 周期跑;`--quick` 2.9 分钟可作调参会话随跑档 |
|
|
||||||
| ui_click_probe | — | **修复并重测后再定级**(现状见 §6.1:载体解析错误损坏;修复前旧态常态打满 20000 帧 budget=141s,与其注释自述「常态通关远低于此」相悖——即使修复,141s 级也建议从「触碰 presentation 必跑」降到周期/发布前,待绿态实测重裁) |
|
|
||||||
|
|
||||||
**C. 提交钩子级(全件 <1.2s,零负担)**:doc_link_audit 0.41s / doc_term_audit 0.38s / repo_structure_audit 1.06s / static_scan 0.75s——适合挂 pre-commit/pre-push;**gdd_lint(0.31s)挂钩前须先清 §6.2 的 8/8 红账,否则常红无用**。
|
|
||||||
|
|
||||||
## 5. 交付与复现
|
|
||||||
|
|
||||||
- 本报告零改码达成(计时=外部包装,分段=--verbose 行刷,MC/verifier=文件头用法小样本)。
|
|
||||||
- 原始日志与逐跑记录:`%TEMP%\perf-audit-20261002\`(results.jsonl + 逐件逐跑 .log,43 段解析在 segments_verbose.json)——系统临时目录,不属仓库。
|
|
||||||
- verifier 小样本在 design/qa 落过 `balance-verifier-20261002-192230.{md,jsonl}` 两件生成物,计时提取后按中间产物规则已删除(可复现)。
|
|
||||||
- 复现命令全集(cwd=仓库根):任务书 §三 表格所列即全部;补充两条——分段计时 `godot --headless --verbose --path game --script res://smoke/smoke_all.gd`;MC 小样本 `godot --headless --path game --script res://smoke/adventure_monte_carlo.gd -- 50 80000 both min`。
|
|
||||||
|
|
||||||
## 6. 异常与偏差记录(照实记录,未当场改码)
|
|
||||||
|
|
||||||
### 6.1 ui_click_probe 双态全红(本批最重要发现)
|
|
||||||
|
|
||||||
- **T1 态(5e501a6)**:3 跑 141.0–141.5s(极差 0.3%)exit=1。现象=`循环退出(done=false budget=0)问题=0`——20000 帧 budget 打满未走完全流程,内部零断言失败;伴随 TypedArray push_back 错误刷屏 ~1 万行。**并行会话提交 cd1ed95 的提交信息自证:该 budget 耗尽+typed-array 错误经纯 master 对照=1:1 同源(master 既有,归 T17 在飞批)**。
|
|
||||||
- **T2 态(b0c5d7e…725f0ac,现行头)**:**载体直接损坏**——`ui_click_probe.gd:343` 解析错误 `Expected statement, found "Indent"`(343–344 行为悬挂代码片段:一行注释后残留 print 尾部实参),脚本加载失败→探针场景无逻辑→**永不 quit、零输出**,4 跑全部 240s 看门狗击杀(wall 241.7s 无计时意义)。值得注意:cd1ed95 自述修复过一处解冲突解析错误,但 343 处仍残留一处。
|
|
||||||
- 复现:`godot --headless --path game res://smoke/ui_click_probe.tscn`(现行头必然零输出挂死——**探针无自退出护栏,外部超时是唯一防线,正好坐实 ADR-0004 防挂死条款的必要性**)。
|
|
||||||
- 关联:同窗 ui_probe 判别实验 2.06s 正常(排除环境系统性故障);smoke/run_all 不经此载体故不受扰。
|
|
||||||
|
|
||||||
### 6.2 gdd_lint 4 跑全 exit=1:8/8 GDD 文件不通过
|
|
||||||
|
|
||||||
规则命中含表格占比(00 号 37%/02 号 84%)、R3 正文修订注记三条、R4 缺「版本历史」节等(07 号亦红)。量级 0.31s 不是问题,**红账本身是问题**——修复责任不在本测量批,建议归并行文档批/T17 在飞批清账后重跑。复现:`python tools/gdd_lint.py`。
|
|
||||||
|
|
||||||
### 6.3 测量中途 master 四度落地(并行会话)
|
|
||||||
|
|
||||||
18:04 b0c5d7e(演播后排窗修复+t17_defer_probe)→ 18:23 ee00810 → 18:31/18:32 时间戳两笔 → 18:51 c2e4be3/725f0ac(真时间戳)。本批以「两树态归属」方式消化(§0),绿件跨态读数一致(冒烟 60.55→62.20s、run_all 12.16→12.75s,均 <4%)——**T17 演播后排窗批对两闸计时与正确性零漂移**。
|
|
||||||
|
|
||||||
### 6.4 环境注记
|
|
||||||
|
|
||||||
- 并行会话 Godot 进程同窗活跃(含 18:11 起一个 1GB 窗口化实例长期闲置):本会话侧保持串行铁律不破;秒级件的负载噪声已在 §3 标注。
|
|
||||||
- 管道 stdout 块缓冲 + winpty 不可用 → 段级耗时走 --verbose 法(§2,膨胀 ≤5% 已量化)。
|
|
||||||
- 冷启动普遍便宜(除窗口化 shader 编译),「预热 1 次」协议对绝大多数件影响 <5%。
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
# ui-struct-probe mini-loop · 出口报告(2026-10-05)
|
|
||||||
|
|
||||||
任务书:`.zcode/plans/ui-struct-probe-miniloop-plan-2026-10-05.md`(goal 开工令=/goal 完成 plan 全部工作——按 iter13 先例「本 prompt 即批准」,**四拍板点 P1-P4 全取推荐案**,代裁追认单见 §三)。
|
|
||||||
|
|
||||||
## 一、交付对账(计划书 T0-T6)
|
|
||||||
|
|
||||||
| 步骤 | 交付 | 状态 |
|
|
||||||
|---|---|---|
|
|
||||||
| T0 探针骨架 | `game/smoke/ui_struct_probe.gd/.tscn`——逐屏实例化 10 屏(start/settings/camp/confirm/debug/level_map/battle_hud/battle_end/bonus_pick/shop):菜单簇真驱动(组合根真实路径开关)+冒险簇真流推进(开冒险→地图选路态→选战斗节点→战斗 HUD)+兑付屏真实 open 面合成最小数据 | ✅ |
|
|
||||||
| T1 断言族 | ①overlap 同屏操作钮两两不相交 ②equal_width 同父容器按钮等宽(差>1px 红)③offscreen 完全出视口红 ④zero_size 红 ⑤start 专项双列不相交(start_box/start_right 命名锚);ScrollContainer 内容系可滚动设计内豁免;WL 豁免表机制(现零豁免) | ✅ |
|
|
||||||
| T2 叠放修复 | `ui_assembler.gd` 右列挂回 HBox 第二列(原 `pad.add_child(right)` 误挂 MarginContainer 与左列同矩形叠放——M2 双列失效根因);装配件命名 start_box/start_right 为探针锚 | ✅ |
|
|
||||||
| T3 按钮宽度纪律 | `ui_kit.button(text, min_w=216)`——最小宽度基准+SIZE_FILL(VBox 列内拉满列宽等宽;HBox 行内不抢余宽);**行板/角标/图标钮豁免 9 处**(camp 5+shop 2+ap_bar 2+调试角标/诊断转储 2) | ✅ |
|
|
||||||
| T4 red-green 循环 | 六轮收敛(实录 §二),终局 **PASS 全屏结构断言零红**;负向验证=临时还原叠放 bug 探针必红(§四) | ✅ |
|
|
||||||
| T5 闸收口 | probe_gate 全绿(含新段)+冒烟 772/0+run_all 14/15(唯一红=基线在册)+doc 三闸零新增(§五) | ✅ |
|
|
||||||
| T6 报告与改排 | 本报告+07 §⑪改排注记/§⑮分工注记/新增 §⑯复验项+台账 360 | ✅ |
|
|
||||||
|
|
||||||
## 二、red-green 循环实录(六轮)
|
|
||||||
|
|
||||||
1. **R1 解析错**:GDScript Variant 元素类型推断两处(`var k := b.get_parent()`/`var gr := c.get_global_rect()`)——显式类型标注修复。
|
|
||||||
2. **R2 全屏 (0,0) 假红**:modal 屏(settings/camp/confirm/debug)首次 visible 后容器排序不自动传播——size 已算而 position 停 0(4.7 行为,加帧无效实证)。修=采样前对屏根子树全部 Container 强制 `queue_sort()`。
|
|
||||||
3. **R3 camp offscreen 群**:ScrollContainer 内容坐标系超出=可滚动设计内——offscreen/zero_size 断言豁免 scroll 子树(`_in_scroll`)。
|
|
||||||
4. **R4 debug 出屏两件**:考证=`_sim_btn`/分隔条在浮窗 ScrollContainer 内容区(滚动超出合法),浮窗固定骨架(关闭钮 y=690)不出屏——随 R3 豁免消灯,非缺陷。
|
|
||||||
5. **R5 camp 底条爆宽 1616px(真缺陷)**:T3 首版 EXPAND_FILL 把营地行板钮拉到 435-622 宽→行板 524→横向禁滚 ScrollContainer 传播内容 min→营地面板撑到 1632px 全线出屏。修=工厂改 SIZE_FILL(EXPAND_FILL 会把行撑爆——注释在案)+**行板紧凑钮 9 处豁免 min 0**。
|
|
||||||
6. **R6 全绿**:PASS 全屏结构断言零红;battle_hud 驱动修复(入口/兑付停点走 `level_screen.open_choices` 直传不写 `_pending_candidates`——候选改从 `_cand_ids × runner.node_id_of(nodes())` 取)。
|
|
||||||
|
|
||||||
**抓到的真缺陷两件**:M2 双列叠放(用户实机目检发现+本批修复+探针回归闸);营地屏 1632px 爆宽(探针首次发现,T3 连带破坏,随豁免消解)。**机检盲区结论**:原 `ui_layout_probe` 为 53 行纯打印 dump 零断言,历次「layout 全绿」仅表示未崩——结构面此前无任何机检覆盖。
|
|
||||||
|
|
||||||
## 三、代裁追认单(goal 开工令按推荐案执行,4 项)
|
|
||||||
|
|
||||||
| # | 拍板点 | 执行形态 |
|
|
||||||
|---|---|---|
|
|
||||||
| P1 | 按钮宽度形态 | 推荐案落地=同容器等宽+min 基准 216+SIZE_FILL;行板/角标/图标钮豁免(计划书 T3 豁免清单条款) |
|
|
||||||
| P2 | 探针载体 | 新建 `ui_struct_probe`;旧 `ui_layout_probe` 保留诊断打印用途不改名不退役 |
|
|
||||||
| P3 | 编号归属 | 独立 mini-loop(bug=mini-loop 惯例),roadmap 不占迭代卡;台账号 360 |
|
|
||||||
| P4 | 与渲染像素五闸关系 | 本批零触碰像素闸;五闸补跑仍挂 07⑮ 表现批周期闸;07⑮ 补分工注记(结构探针互补不替代) |
|
|
||||||
|
|
||||||
## 四、断言有效性负向验证
|
|
||||||
|
|
||||||
临时还原 T2(右列改回误挂 pad)复跑探针——**立刻红**:`[start][columns] 左列 (56,56)+(937,688) 与右列同矩形相交(双列叠放回归——M2 缺陷闸)`,随即还原复绿。探针非恒真,缺陷闸成立。
|
|
||||||
|
|
||||||
## 五、闸读数(worktree ui-struct-probe-20261005,HEAD 8944dca 基线)
|
|
||||||
|
|
||||||
| 闸 | 读数 | 判读 |
|
|
||||||
|---|---|---|
|
|
||||||
| ui_struct_probe | PASS 全屏结构断言零红 | 本批新增,已注册 probe_gate 默认必跑段 |
|
|
||||||
| probe_gate --click | 全绿(ui_input 十六断言+ui_struct+click 问题=0+残留 0) | ✅ |
|
|
||||||
| 冒烟 | **772 项 0 失败**(与基线 772 同——本批零冒烟断言增量) | ✅ |
|
|
||||||
| run_all | 14/15 绿;唯一 FAIL=`reward_overlay_test`(master 既有在册红——秘宝批/技能池批台账同款,非本批新增) | ✅ |
|
|
||||||
| doc 死链 | 4=基线 4(06×2+奇物.md×2——本批未触碰文件)零新增 | ✅ |
|
|
||||||
| doc 术语 | 5=基线 5(主区对照)零新增 | ✅ |
|
|
||||||
| gdd_lint | 53 vs 基线 50:+3 全为本批 07 登记注记(与历史批 §⑫-⑮ 登记注记同款形态);07「表格占比 8%」FAIL=基线既有(主区对照同败) | ✅ |
|
|
||||||
| 负向验证 | 叠放还原→探针红→还原→绿 | ✅ |
|
|
||||||
|
|
||||||
## 六、遗留与移交
|
|
||||||
|
|
||||||
1. **主区合并后复跑**:merge 后主区冒烟+probe_gate 复跑(合并惯例)。
|
|
||||||
2. **实机复验(07⑯)**:标题屏双列+按钮等宽+营地不出屏,约 2 分钟,归用户。
|
|
||||||
3. **07⑪ 统一验证窗口仍开**:贫矿脉六项体感目检待用户时点。
|
|
||||||
4. **渲染像素五闸**(golden_compare/shot_probe/fx_probe/ui_layout_probe/board_shot)补跑义务不变,挂 07⑮ 表现批周期闸。
|
|
||||||
5. **宽度基准 216 为 provisional**:菜单/弹窗/结算操作钮现值;若其他屏出现紧凑域挤压,按「豁免传 0」扩展,禁回调全局基准。
|
|
||||||
6. 探针采样机制注记:modal 屏首次 visible 后需强制 queue_sort(Godot 4.7 容器排序不自动传播)——后继新探针如采 modal 屏矩形须复用 `_force_layout` 手法(坑在册)。
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
# 中间产物死亡清单(2026-10-02 建单——A/B 桶与表 C 已执行,本单仅存未清项)
|
|
||||||
|
|
||||||
> **清单状态:2026-10-02 用户令挂起**——其他工作完成后用户回来再处理剩余项;挂起期间本单不再有执行批。
|
|
||||||
> 执行状态:①A1/A2/B1/B2 四桶 2026-10-02 执行完毕(git rm 83 件+主工作区直删未跟踪 10 件,指路句改写 37 处;明细归 git a6833b6/合并 5b3f345 与台账 305/308);②表 C·sim-data 2026-10-02 用户授权整批删——白名单外 100 件 git rm(白名单 17 件留:README/.gitignore/_snap/analyze.py/growth_model.py/iteration_log/三设计 md/现行 MC 锚 8 件);③同日 .gitignore 裁决落文——artwork/ 整目录不入库(取消 md 例外,原两跟踪件解跟踪磁盘保留)、.qoder/ 与 .workbuddy/ 入忽略(合并见台账尾);④**artwork/ 全目录内容 2026-10-02 用户裁永久保留**——美术素材工作区只留磁盘不入 git,.gitignore `artwork/` 强制永不提交,无删除时机(原「ui-redesign 点名 v2 后死」一并撤销)。已删条目不再列于本单。
|
|
||||||
> 执行依据:doc-conventions §11「文档生命周期:吸收即死」(2026-10-01 用户立规)。
|
|
||||||
> ⑤**2026-10-05 退役批(用户令「12 份任务本体已完成——都删除」)**:git rm 12 件=上二表四行(美术圣经v3.5任务书/perfect-l1/秘宝提案/A3提案/playnote机制提案)+七件 2026-10-02 后新建且已落籍的中间文档(视野迷雾/GP商店房/魔法道具同调/双层BD/全局作用域变异五任务书+挖掘风险不等式方案+art-bible-ux-review);指路句改写 12 文件(roadmap 五处/06/行动经济/entities 三处/art-bible 两处/地形变异/秘宝 两处/冒险结构/关卡节点地图/元进度/clear_dominance_audit.py+reward_expectation.gd 注释核正);秘宝提案八拍板、A3 否决、playnote 题二裁决均以 git 号留痕(57da58c/a404a65/12e934b)。引用面口径:**活引用阻塞面 = design/gdd + design/art + design/dev + design/registry + roadmap.md + tools/**(死链闸扫描域);active.md 台账引用不阻塞。
|
|
||||||
> 本单只登记**未删项**,每项标明**未删原因**与**待用户动作**。本清单自身亦为中间文档:全部桶收口后随批自删。
|
|
||||||
|
|
||||||
## 一、挂债项(迭代 9 在飞域——出口批顺带处置,现在无需任何动作)
|
|
||||||
|
|
||||||
| 文件 | 原桶 | 未删原因 | 待用户动作 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 任务书-美术圣经v3.5冻结与落码-2026-09-29.md(design/research/) | A2 | roadmap 迭代 9 行指路(在飞返工会话域,改指路会撞在飞批) | ✅ 已执行(2026-10-05 退役批:git rm+roadmap 指路改 git 710f9b7) |
|
|
||||||
| perfect-l1-lever-proposal-2026-09-29.md(design/research/) | A2 | 06「战斗阶段数值问题」在飞条目指路 | ✅ 已执行(2026-10-05 退役批 git rm——被带换代四带甲案取代,未批准未执行) |
|
|
||||||
| m3-iter5-lever-scan-2026-09-28.md(design/qa/) | B2 | 06 在飞条目指路(证据锚) | 同上 |
|
|
||||||
| m3-iter5-rework-readings-2026-09-29.md(design/qa/) | B2 | 06 在飞条目指路(读数与归因锚) | 同上 |
|
|
||||||
| m3-iter9-9a-checklist / t8-rulings / t17-fullflow-checklist / t18-07-audit(design/qa/ 四件) | B3 | 迭代 9 在飞会话域 | 无——T20 出口批按同规则处置 |
|
|
||||||
| .zcode/inflight-main-gd-noise-20260929.patch、.zcode/inflight-merge-prep-20261001/ | 表 D | 迭代 9 返工会话域 | 无——其收口批处置 |
|
|
||||||
| game/smoke 四个 .uid 未跟踪件、game/tests/probe14_test.gd | 表 D | 在飞工作区产物 | 无——随在飞批收口 |
|
|
||||||
|
|
||||||
## 二、留活项(正主/底稿/依据——不删;标出各自的"死时机")
|
|
||||||
|
|
||||||
| 文件 | 留存理由 | 死时机 / 待用户动作 |
|
|
||||||
|---|---|---|
|
|
||||||
| **alpha-acceptance-battle-screen.md**(design/research/,2026-10-02 用户裁「保」自 A1 移入) | **Alpha 验收批销项底单**(循环 1 成文仍承重;07 清单只覆盖其 E 节真人面) | Alpha 验收批跑完后**裁:死或转正归 design/dev**——待 Alpha 后用户裁 |
|
|
||||||
| prototype-report-minesweeper-battle-concept.md | 概念原型 v3 PROCEED 决策记录(项目原点档案) | 原单标「留否由用户裁」——**维持留活,若要删随时说一声** |
|
|
||||||
| 优化方案.md(sim-data/,白名单内) | PackageB 提案母稿——表改项已随 54f2da3 落籍;结构改候选未逐项验吸收(删前核 2026-10-02:暂留) | 后续数值批复核结构改候选去留后裁 |
|
|
||||||
| **artwork/ 整目录**(mockups/、qa-screens×2、remote-gen-2026-09-26、ui-redesign-2026-09-29 等全部产物,磁盘 89MB) | 2026-10-02 用户裁**永久保留**——美术素材工作区只留磁盘不入 git,无删除时机(原「ui-redesign 点名 v2 后死」一并撤销) | 无任何动作(.gitignore `artwork/` 强制永不提交,全会话经 CLAUDE.md Project Layout 获知此裁) |
|
|
||||||
| proposal-magic-item-attunement-2026-09-22.md | 同调实施批设计权威底稿(06/registry/五文档引用) | ✅ 已执行(2026-10-05 退役批:git rm+五正主引用改 git 57da58c) |
|
|
||||||
| proposal-reward-cell-differentiation-2026-09-17.md | Alpha 差异化批调研底座(06 指路) | ✅ 已执行(2026-10-05 退役批 git rm——差异化批 2026-10-04 用户否决,死条件以否决收口成就;reward_expectation.gd 旧基准注释顺手核正) |
|
|
||||||
| proposal-playnote-mechanisms-2026-09-30.md | 06 指路留痕;题一重写未决 | ✅ 已执行(2026-10-05 退役批 git rm——题一迷雾已落籍、题二 09-30 已裁不动;「标雷激励待新方向」随用户删除令作放弃,git 12e934b 留痕) |
|
|
||||||
| playnote.md | 试玩反馈正主 | 无(正主不死于本单) |
|
|
||||||
| roguelike-difficulty-benchmark-2026-10-01.md | 难度目标外部类型基准(带值拍板依据) | 新带值拍板落籍后可议死 |
|
|
||||||
| board-tile-vocab-plan-a-2026-09-26.md | 高墙瓦片现行规格(art-bible+两 render 脚本+remote-gen-prompts 活引用) | 无(活规格) |
|
|
||||||
| 画法参数四源对照表-2026-09-26.md | render 脚本画法参数依据(活工具文档) | 无(活工具文档) |
|
|
||||||
| m1/m2-exit-gate-checklist-2026-09-28.md | roadmap 指路 | M-3 关闭批一并处置(默认迁后删)——现在无需动作 |
|
|
||||||
| numfix-newruler-readings-2026-10-01.md | **现行读数**——新带值拍板+迭代 9 出口直接依据(五处指路) | 新带值拍板落籍后可议死 |
|
|
||||||
| m3-iter10-clear-rate-readings-2026-10-01.md | 迭代 10 MC 四代锚现行判读依据 | MC 锚换代后可议死 |
|
|
||||||
|
|
||||||
## 三、待勾选项
|
|
||||||
|
|
||||||
| 范围 | 内容 | 未删原因 | 待用户动作 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 本清单自身 | — | 桶未收口(在飞四件挂债待迭代 9 出口批) | **清单挂起**——用户其他工作完成后回来处理;届时剩余项收口后随批自删 |
|
|
||||||
|
|
||||||
## 已裁保留项(用户已表态,不再需要动作)
|
|
||||||
|
|
||||||
| 项 | 裁决 |
|
|
||||||
|---|---|
|
|
||||||
| filter-repo 历史清理批(案乙)计划书 `.zcode/plans/filter-repo-history-cleanup-plan-2026-10-02.md` | 2026-10-02 用户裁**先保留**——计划书留存待审,硬前置不变(本单收口+迭代 9 出口先行;执行时全部 worktree/会话须静默,hash 改写后旧 clone 全失效) |
|
|
||||||
|
|
||||||
## 执行口径(后续批沿用)
|
|
||||||
|
|
||||||
独立 worktree 一次批执行:git rm 勾选项 → 指路句改写(06/roadmap 在飞域留合并点)→ doc 三闸+熵增闸 → active.md 台账(追加前查撞号)→ merge --no-ff 合回。
|
|
||||||
@@ -104,7 +104,7 @@ entities:
|
|||||||
owner: design/gdd/systems/排雷循环/地形变异.md
|
owner: design/gdd/systems/排雷循环/地形变异.md
|
||||||
attributes:
|
attributes:
|
||||||
table: VariationTable(数据配置 承载,键 = variant_id;地形变异 回填 owner,2026-09-08 定稿回填;2026-09-20 首批类型定稿批字段集枚举化重写)
|
table: VariationTable(数据配置 承载,键 = variant_id;地形变异 回填 owner,2026-09-08 定稿回填;2026-09-20 首批类型定稿批字段集枚举化重写)
|
||||||
fields: variant_id(String 主键唯一)/ display_name / unlock_level(int [1,999],knob)/ scope(enum region|global,global 预留 难度曲线与Boss)/ effect(enum none|flat_damage|hide_number,词表可扩充)/ effect_value(int [1,9],仅 flat_damage 消费,加法核小整数 knob)/ trigger(enum on_open|on_number_shown,词表可扩充)/ placement(enum closed_only|any,词表可扩充)/ board_types(StringList,∅=通配,knob——2026-09-20 用户裁定由 biome_tag 更名对齐 board_type 词表)/ counter_item_ids(StringList,秘宝 预留,非 knob——首批四行恒空,Alpha 反制批回填)/ 表头布置参数 percent_of_cells=5 · per_level_bonus=0 · pack_max=4(knob,难度曲线与Boss——2026-09-28 迭代 5 判读锁值批自 5/2 收带〔读数 design/qa/m3-iter5-lever-scan-2026-09-28.md〕;2026-09-29 返工批 U2 推翻 C3 裁 C1 两刀,percent 自 4 回退 5——裁断 git 提交 f9c1a8a)
|
fields: variant_id(String 主键唯一)/ display_name / unlock_level(int [1,999],knob)/ scope(enum region|global,global 预留 难度曲线与Boss)/ effect(enum none|flat_damage|hide_number,词表可扩充)/ effect_value(int [1,9],仅 flat_damage 消费,加法核小整数 knob)/ trigger(enum on_open|on_number_shown,词表可扩充)/ placement(enum closed_only|any,词表可扩充)/ board_types(StringList,∅=通配,knob——2026-09-20 用户裁定由 biome_tag 更名对齐 board_type 词表)/ counter_item_ids(StringList,秘宝 预留,非 knob——首批四行恒空,Alpha 反制批回填)/ 表头布置参数 percent_of_cells=5 · per_level_bonus=0 · pack_max=4(knob,难度曲线与Boss——2026-09-28 迭代 5 判读锁值批自 5/2 收带〔读数 迭代5杠杆扫描报告(已退役,git 历史可查)〕;2026-09-29 返工批 U2 推翻 C3 裁 C1 两刀,percent 自 4 回退 5——裁断 git 提交 f9c1a8a)
|
||||||
mvp_content: 六行两轴×三关(2026-09-20 首批类型定稿批四行 + **第三关内容批两行**)——thorn 荆棘丛(flat_damage/on_open/closed_only/dungeon/1)· vine 藤蔓缠绕(hide_number/on_number_shown/any/dungeon)· magma 岩浆(flat_damage/on_open/closed_only/underdark/1,登记名沿用——2026-09-28 迭代 5 判读锁值批自 2 收带)· ash 烬覆(hide_number/on_number_shown/any/underdark)· rockfall 落石(flat_damage/on_open/closed_only/deep_underdark/3——伤害型关间递进 1→2→3)· mine_dust 矿尘(hide_number/on_number_shown/any/deep_underdark/3,信息型);counter_items 恒空(反制归 Alpha 反制批);布量走既有公式(5%+per_level_bonus×0——2026-09-21 基数修正批:百分比基数=候选池格数〔安全格−初始展开区〕非总格数,percent 语义=占可挖格比例;2026-09-29 返工批回退 5%——C1 终态);行值 provisional 归 难度曲线与Boss;冰冻占位名退役
|
mvp_content: 六行两轴×三关(2026-09-20 首批类型定稿批四行 + **第三关内容批两行**)——thorn 荆棘丛(flat_damage/on_open/closed_only/dungeon/1)· vine 藤蔓缠绕(hide_number/on_number_shown/any/dungeon)· magma 岩浆(flat_damage/on_open/closed_only/underdark/1,登记名沿用——2026-09-28 迭代 5 判读锁值批自 2 收带)· ash 烬覆(hide_number/on_number_shown/any/underdark)· rockfall 落石(flat_damage/on_open/closed_only/deep_underdark/3——伤害型关间递进 1→2→3)· mine_dust 矿尘(hide_number/on_number_shown/any/deep_underdark/3,信息型);counter_items 恒空(反制归 Alpha 反制批);布量走既有公式(5%+per_level_bonus×0——2026-09-21 基数修正批:百分比基数=候选池格数〔安全格−初始展开区〕非总格数,percent 语义=占可挖格比例;2026-09-29 返工批回退 5%——C1 终态);行值 provisional 归 难度曲线与Boss;冰冻占位名退役
|
||||||
zero_special_casing: 连锁/数字计数/清图/旗/价目/结算零特判——既有系统行为不感知变异状态(排雷玩法 执行逻辑无变异分支;地形变异 Rule 3 的推论);读取方按 effect/trigger/placement 枚举路由(战斗结算 兑付段 / 呈现层 遮蔽回调),不按类型名分支
|
zero_special_casing: 连锁/数字计数/清图/旗/价目/结算零特判——既有系统行为不感知变异状态(排雷玩法 执行逻辑无变异分支;地形变异 Rule 3 的推论);读取方按 effect/trigger/placement 枚举路由(战斗结算 兑付段 / 呈现层 遮蔽回调),不按类型名分支
|
||||||
rule4_exemption: 定义表非进度成长表,键 = variant_id,进度语义承载于 unlock_level 列(数据配置 Rule 4 豁免,schema 注释承载)
|
rule4_exemption: 定义表非进度成长表,键 = variant_id,进度语义承载于 unlock_level 列(数据配置 Rule 4 豁免,schema 注释承载)
|
||||||
|
|||||||
@@ -1,225 +0,0 @@
|
|||||||
# MC 成本失控调研与规制方案(2026-10-03)
|
|
||||||
|
|
||||||
> 性质:纯调研会话产物——全程零测试、零 MC、零冒烟、零改码;对既有锚文件仅做只读统计(非模拟)。
|
|
||||||
> 数据来源:`design/qa/test-perf-report-2026-10-02.md`(单局耗时实测)、sim-data 三份读数 md(2026-10-03)、三批 loop 计划书(.zcode/plans)、git 提交链、外部统计基准(§附)。
|
|
||||||
> 任务书四问:①成本结构 ②重跑审计 ③N 标准 ④规制案文——按序对应 §1–§4,拍板点在 §5。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 0. 结论速览
|
|
||||||
|
|
||||||
1. **耗时构成**:MC 是纯同步 CPU 计算(零渲染、零帧等待、零 await),单局耗时 ∝ 战斗轮数(每轮约 100ms 恒定)。perfect 档轮数中位 77 vs normal 13(约 6 倍)——「perfect 占 87% 墙钟」是动作总量问题,不是单步慢。
|
|
||||||
2. **一天账本**:2026-10-03 三批共 5 次采集 ≈ 130–145 分钟墙钟,其中**约六成(75–90 分钟)属可避免**:81000 满档跑单一 k 值(超需约 5 倍)、批②缺陷修复后整套重跑 192 局(读数缺陷不伤轨迹,旧数据本可重构续用)。
|
|
||||||
3. **N 无成文标准是直接根因**:N=60/400 系 agent 计划书起草惯例(批①计划书自设「≥50 distinct seeds」),无用户裁定背书、无成本约束条款——现有规则只锁「什么时候可以跑」,没锁「跑多少、跑多贵」。
|
|
||||||
4. **N 三用途最小充分值**(外部统计公式反推,非自拟):对拍断言=0 新跑(同种子确定性复放);结构回归=N=60(80% 功效检出 ≥25pp 位移);带值判定=N=100–170(95% CI ±9.8/±7.5pp,15pp 判定带半宽);N=400 满档仅里程碑放行级需要。**normal 档便宜可独立满档(8 分钟),贵的是 perfect 档**。
|
|
||||||
5. **可加速面实存且零轨迹风险**:①进程级分片并行(种子逐局独立,K 进程 ÷K 墙钟,加一个游标偏移参数约 5 行)②playtest_logger 每行 `flush()`(`playtest_logger.gd:184`)改为批量刷(MC 批不消费 fulllog,纯开销)。两者都不改 RNG 序,可逐位对拍验收。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 成本结构核证
|
|
||||||
|
|
||||||
### 1.1 单局耗时(实测,2026-10-02 性能报告 §1 #12)
|
|
||||||
|
|
||||||
| 档 | 实测 | 折算 |
|
|
||||||
|---|---|---|
|
|
||||||
| normal | N=50 共 ~60s → **1.21s/局** | 满档 N=400 ≈ 8.1 分钟 |
|
|
||||||
| perfect | N=50 共 ~423s → **8.47s/局**(7 倍) | 满档 N=400 ≈ 56.5 分钟 |
|
|
||||||
| 双策略满档 | — | **≈65 分钟**(81000 用户口径 ~80 分钟,并行会话负载差异) |
|
|
||||||
| N=60 双策略一组 | — | **≈9.7 分钟**(60×1.21 + 60×8.47 ≈ 581s) |
|
|
||||||
|
|
||||||
### 1.2 耗时去向的代码证据
|
|
||||||
|
|
||||||
- **采集器是薄驱动**:`game/smoke/adventure_monte_carlo.gd:18-114`——SceneTree `_initialize` 一次性同步跑完 n 局,全程无 await、无帧依赖、无渲染等待;种子=`seed0+cursor` 逐局独立(`:15,82`),`_run_cursor` 跨策略全局连续不重置。
|
|
||||||
- **驱动链全同步**:`game/smoke/level_autoplay.gd:115-174`(run_adventure)→ `_drive_level:89-105` → `_autoplay_battle:404-450`——每动作 `_decide_act` → `settle_batch` 同步结算;轮 guard 60、动作 guard 400/轮(`:416-425`)。
|
|
||||||
- **每动作全量重推理是 CPU 大头**:`game/smoke/auto_player.gd:115-150` `_deduce`——while-changed 不动点,每次迭代重建约束集两次(`:122` cons、`:134` cons2)+ O(C²) 子集对枚举(`:135-137`),每步决策(move/dig/flag 每一手)全量重跑;约束集构建遍历全部已开数字格×8 邻(`:155-178`)。
|
|
||||||
- **耗时 ∝ 动作总量的直接证据**(81000 锚 800 局只读统计,本会话):normal 中位 battles=4、rounds=13/局;perfect 中位 battles=13、rounds=**77**/局——轮数比 ~6 倍,单轮成本恒定(1.21/13≈93ms vs 8.47/77≈110ms)。perfect 语义=零盲挖全探索+通关 3 关,动作总量天然大。
|
|
||||||
- **I/O 面有一处纯开销**:`game/presentation/playtest_logger.gd:184` `_append` 每行 `_file.store_line` + **`_file.flush()`**——每动作/每结算行/每 step 行全量 JSONL 落盘并即刷(2026-09-12 用户要求的真人合规口径);MC 批的 fulllog **不留盘不消费**(sim-data/README「fulllog 全量日志不留盘」),故逐行 flush 在 MC 语境=纯开销。量级未实测(本会话禁跑),属一次性 A/B 可量化项。logger 系纯观察层(`playtest_logger.gd:5-6`「核心零日志感知」),关刷零轨迹影响。
|
|
||||||
- **字段采集不是大头**:RUNSUM 行 ~1KB/局,含 reward_events/序列数组等,相对 1.2–8.5s 的计算量可忽略。
|
|
||||||
|
|
||||||
### 1.3 可加速面清单
|
|
||||||
|
|
||||||
| 面 | 做法 | 轨迹影响 | 收益 | 证据 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| **A. 进程级分片并行** | 种子逐局独立且局间零共享 → K 个 Godot 进程各跑游标区间,stdout 纯 JSONL 拼接合并;现工具无游标偏移参数(`_run_cursor` 恒 0 起),加第 7 参 ~5 行 | 零(种子不变逐位同轨迹) | 满档 65min → K=4 约 17min / K=8 约 9min | `adventure_monte_carlo.gd:15,82` |
|
|
||||||
| **B. logger flush 开关** | MC 批关逐行 flush(或批量刷) | 零(观察层,零 RNG 消费) | 未量化,一次性 N=50 A/B 可测 | `playtest_logger.gd:184` |
|
|
||||||
| C. 求解器增量化/缓存 | 约束集增量维护 | **有风险**——决策序必须逐位不变,任何优化须对现行锚逐位对拍验收 | 不明确 | `auto_player.gd:115-150` |
|
|
||||||
| D. 引擎帧率/时间缩放 | — | — | **不适用**:整链无帧等待,`--fixed-fps`/time_scale 无效 | 全链零 await |
|
|
||||||
|
|
||||||
### 1.4 不可加速面
|
|
||||||
|
|
||||||
动作总量本身=测量语义(perfect 档定义就是上界全探索);砍体量=改测量口径,非性能问题。
|
|
||||||
|
|
||||||
### 1.5 顺带发现:锚文件捕获口径不统一
|
|
||||||
|
|
||||||
- 81000 锚=原样 stdout 捕获(850 行=800 行 `RUNSUM ` 前缀 JSON+50 行头/进度行);n60 四锚=去前缀纯 JSONL(120 行)。
|
|
||||||
- `analyze.py:214` 对每行直接 `json.loads`——只吃纯 JSONL 形态,喂 81000 会炸(与 README 既有「完成度%段对现行锚未验证」警示同源)。
|
|
||||||
- 进度行含耗时(`adventure_monte_carlo.gd:109-110` 每 20 局打印),n60 锚因滤掉进度行**丢失了耗时账**(批②「耗时无实测」的技术原因)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. 重跑模式审计(2026-10-03 三批五次采集)
|
|
||||||
|
|
||||||
### 2.1 事件台账
|
|
||||||
|
|
||||||
| # | 事件 | 触发理由 | N | 谁决定 | 耗时(推算) | 归类 |
|
|
||||||
|---|---|---|---|---|---|---|
|
|
||||||
| 1 | 81000 满档锚(迭代 9 出口批 T19/T20,5369c47) | ①taken 字段当日入库(84df55c)旧锚无该字段,k 终值需新锚;②出度重建后结构位移存档(只测不判) | 400/档(满档惯例继承自迭代 10 四代锚) | agent 按惯例起草、批内执行;用户事前未裁 N,**事后质询改判**「k 应等 M-4 数值批顺带」 | ~65–80 分钟 | **规则漏洞导致的滥用**(N 无约束+时机无约束;k 补算 N=60 即稳,结构位移按 80% 功效也只需 ~85–100/档,超配约 5 倍) |
|
|
||||||
| 2 | 批① T8 off+on(a6a2bf8) | 同调机制轴新增改轨迹 → off 对拍锚换代(T7 出池必改奖励序列,T6 检查点用户追认)+on 分层读数 | 60/档·模式(计划书提案「≥50 distinct seeds」自设下限,U0 批计划书默许) | agent 提案、计划书批准 | ~19 分钟 | **合理取证**(机制加入必须新锚,对拍硬断言正当) |
|
|
||||||
| 3 | 批① T10 off 复跑(同上,输出未留盘) | 出口重闸:off 锚同种子逐位复现=机制关着零扰动终检 | 60 | 计划书重闸条款 | ~9.7 分钟 | **合理取证**(但 N 超配:逐位断言检出力与 N 无关——机制漏开时 RNG 流整体位移、每条种子必漂,N≤20 足矣,~7 分钟可省) |
|
|
||||||
| 4 | 批② T5 首轮 off+on(d79afd2 主体) | 计划书 T5 授权:off 对拍 off_n60 逐位 + on 新锚一次 | 60/档·策略 | 计划书提案、U0 批准 | ~19 分钟 | **合理取证** |
|
|
||||||
| 5 | 批② T5 缺陷修复后双锚重跑 | pool_stock 读数路径缺陷(`_settle` 先清账本、run_adventure 直读=满库假象,43/120 行自检暴露)→ 修复后按「双锚重跑」现场决策执行;中途被停(on 侧 72 行) | 60×2 | **agent 现场自决**(计划书无「修复后重跑」预授权) | ~15–20 分钟(192 局) | **规则漏洞导致的滥用**(三缺口叠加,见 §2.2) |
|
|
||||||
|
|
||||||
### 2.2 批②重跑的三个规则缺口(读数 md 自认「流程浪费」,sim-data/读数_m4iter11b §口径注记 3)
|
|
||||||
|
|
||||||
1. **无采集前 pilot**:缺陷由 43/120 行自检暴露——若先跑 N=5 pilot 校验字段,缺陷在 10 局内暴露,240 局不会白跑。
|
|
||||||
2. **无「读数缺陷 ≠ 轨迹失效」判读规则**:修复仅动摘要组装,零 gameplay/RNG 触碰(读数 md §口径注记 2 静态核证)+ off 对批①锚逐位 PASS 佐证——已采数据本就有效,pool_stock 从 `reward_events` 事件流推算重构即可(**最终收口正是这么做的**,重跑从结果上完全多余)。
|
|
||||||
3. **无会话内预算/停机点**:第二轮重跑无任何闸拦,「调整一下就重跑」畅行到用户人工叫停。
|
|
||||||
|
|
||||||
### 2.3 一天总量核算
|
|
||||||
|
|
||||||
| 项 | 墙钟(推算) | 可避免部分 |
|
|
||||||
|---|---|---|
|
|
||||||
| 81000 满档 | 65–80 min | ~49–64 min(按用途最高需要 N=100 计 ~16 min) |
|
|
||||||
| 批① T8 | ~19 min | 0(正当) |
|
|
||||||
| 批① T10 | ~9.7 min | ~6.5 min(N=20 足矣) |
|
|
||||||
| 批② T5 四次 | ~35 min | ~15–20 min(重跑两次) |
|
|
||||||
| **合计** | **~130–145 min** | **~75–90 min ≈ 六成** |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. N 标准调研(按用途分级,外部统计公式反推)
|
|
||||||
|
|
||||||
### 3.1 用途①:对拍断言(同种子逐位)——**N=0 新跑**
|
|
||||||
|
|
||||||
- 依据:种子=seed0+cursor 逐局独立确定性(`adventure_monte_carlo.gd:82`);同种子 ⇒ 全程逐步可回放(`level_autoplay.gd:26`);核心 RNG 单点(CLAUDE.md RNG 单点红线)。同代码同种子=逐位同轨迹 → 留盘锚常驻即比,**零新跑**。
|
|
||||||
- 已兑现先例:批② T0 复用批① off_n60 不重跑(batch2 计划书 F9「码态相同不重跑」);批② off 对拍 120 行逐位 PASS。
|
|
||||||
- 需要新跑的唯一情形=代码轨迹变了(此时对拍语义升级为「改前锚 vs 改后锚读数位移」,见 §4 增量复用)。
|
|
||||||
- 复验形态(出口闸逐位复现)用**种子子集 N≤20** 即可:断言是确定性的,扰动存在时 RNG 流整体位移、每条种子几乎必漂——检出力与 N 无关,N 只需覆盖「子集确实来自锚文件」。
|
|
||||||
- 依据外部锚:确定性复放为工程事实(非统计推断),无需样本量公式。
|
|
||||||
|
|
||||||
### 3.2 用途②:结构性回归读数——**N=60/策略**
|
|
||||||
|
|
||||||
- 依据:两比例比较样本量公式(Fleiss 型,外部锚 [BMJ Paediatrics Open](https://bmjpaedsopen.bmj.com)/标准教材:n/组 = (z_α/2+z_β)²·[p₁q₁+p₂q₂]/(p₁−p₂)²,α=0.05 双侧、80% 功效 z_β=0.84):
|
|
||||||
- 检出 50%→10%(灾难性破坏,Δ=40pp):n≈17–20/组
|
|
||||||
- 检出 50%→25%(重大位移,Δ=25pp):n≈55–58/组
|
|
||||||
- 结论:**N=60 恰好覆盖 ≥25pp 级结构位移的 80% 功效检出**——正是「出池/重建/机制加入」级事件的量级;更小位移在 N=60 下判读不可靠,必须如实标「只测不判/窗口不足」(现行读数 md 纪律与此吻合:N=60 vs 400 窗差 ±~10pp 自标)。
|
|
||||||
- 佐证(已知背景):种子窗波动 ±~10pp(81000 读数 §三引 numfix 报告注)。
|
|
||||||
|
|
||||||
### 3.3 用途③:带值判定——**按判定带宽度反推**
|
|
||||||
|
|
||||||
- 依据:单比例样本量公式(外部锚 [LibreTexts 7.4](https://stats.libretexts.org/Courses/Citrus_College/Introductory_Statistics_OER_-_Exercise_Questions_Each_Section_Included/07%3A_Confidence_Interval_for_One_Sample/7.04%3A_Confidence_Interval_and_Sample_Size_for_the_Proportion)、[NIST 手册 7.2.4.2](https://www.itl.nist.gov/div898/handbook/prc/section2/prc242.htm):E = z·√(p(1−p)/n) ⇒ **n = z²·p(1−p)/E²**,最保守 p=0.5 时 n=z²/(4E²);z=1.645@90%、1.96@95%)。
|
|
||||||
- 现行判定带 D≤15pp(难度曲线与Boss 带值四带甲案)→ 半带宽 7.5pp。读数离带边的可靠裁决距离=CI 半宽:
|
|
||||||
|
|
||||||
| 目标 CI | E(半宽) | 所需 N/档 | perfect 档耗时 | 用途定位 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 90% | ±10pp | **68** | ~9.6 min | 粗判(离带边 ≥10pp 才下结论) |
|
|
||||||
| 95% | ±10pp | **97** | ~13.7 min | 常规带判 |
|
|
||||||
| 95% | ±7.5pp | **171** | ~24 min | 15pp 带全宽裁决 |
|
|
||||||
| 95% | ±5pp | **385** | ~54 min | 贴带边精确裁决(**现行 N=400 惯例的真实含义**) |
|
|
||||||
|
|
||||||
- **N=400 只在「贴带边裁决+里程碑放行」场景必要**——日常数值验证根本用不到满档。
|
|
||||||
- 判读纪律配套:读数离带边 <CI 半宽时不下「越带/落带」结论,如实挂「窗口不足」(T19 先例:样本 <§⑨ 下限如实挂起)。
|
|
||||||
- 零事件读数(normal 档全通 0% 等)按规则三(Clopper–Pearson 精确界推导):n 局零事件 → 95% 上界 ≈3/n——N=60 上界 5%、N=400 上界 0.75%。normal 档 rare-event 带判定确实需要大 N,但 **normal 档 1.21s/局,满档也只要 8 分钟**。
|
|
||||||
|
|
||||||
### 3.4 分档不对称是最大成本杠杆
|
|
||||||
|
|
||||||
贵的是 perfect(8.47s/局),便宜的是 normal(1.21s/局)。**分档 N 不必对称**:normal 满档 400(8.1min)+ perfect 按用途 60–170(8.5–24min)≈ 17–32min 覆盖绝大多数场景,只有「perfect 贴带边裁决」才需要 54min 级。
|
|
||||||
|
|
||||||
### 3.5 N 分级标准总表(含耗时上限)
|
|
||||||
|
|
||||||
| 用途 | N/档(normal+perfect) | 双策略耗时 | 判读力 | 触发权 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 对拍断言 | **0**(复用留盘锚);复验子集 ≤20 | 0 / ~3.2 min | 确定性,N 无关检出力 | 任务书授权即跑 |
|
|
||||||
| 结构回归读数 | **60** | ~9.7 min | 80% 功效检出 ≥25pp;<25pp 只测不判 | 任务书授权即跑 |
|
|
||||||
| 带值判定·粗 | **100** | ~16.1 min | 95% CI ±9.8pp | 任务书授权即跑 |
|
|
||||||
| 带值判定·全带 | **170** | ~27.4 min | 95% CI ±7.5pp=带半宽 | 任务书授权即跑 |
|
|
||||||
| 贴带边裁决/里程碑放行 | **400(满档)** | ~64.5 min | 95% CI ±4.9pp | **用户明示发令**,接受时长 |
|
|
||||||
| 采集 pilot | **5** | ~0.8 min | 字段/口径自检,非统计读数 | 任何 ≥60 局采集的强制前置 |
|
|
||||||
| normal 独立满档 | 400(仅 normal) | ~8.1 min | 零事件 95% 上界 0.75% | 任务书授权即跑 |
|
|
||||||
|
|
||||||
(单局费率:normal 1.21s、perfect 8.47s,2026-10-02 实测;on 态费率未单测,同量级——on 通关率更高则局更长,预算按上界预留 1.5×。)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. 规制修订案文(verbatim,待批后落两处)
|
|
||||||
|
|
||||||
> 不推翻现行规则(两入口铁规/无数值改动禁跑/缓存层语义/读数只锚一次),只补「跑多少、跑多贵、何时免跑」维度。
|
|
||||||
|
|
||||||
### 4a. CLAUDE.md「测试执行两入口铁规」——MC 触发细则节后追加一条硬红线
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
- **MC 成本与样本量细则(2026-10-03 补立,承接 MC 触发细则)**:MC 采集一律按用途选 N(分级表与耗时上限见
|
|
||||||
`sim-data/README.md`「N 分级标准表」节),禁按惯例继承、禁计划书自拟;超出「对拍=0/复验≤20/结构回归=60/
|
|
||||||
带值粗判=100/全带=170」档位(含满档 400)须用户逐次明示发令。单次开发会话 MC 总耗时上限 **20 分钟**
|
|
||||||
(≈一组 N=60 双策略),超限停机呈报;为单一比值/中位数/单字段取证(如 k 系数)禁用满档——N=60 即稳
|
|
||||||
(81000 教训)。任何 ≥60 局采集前必先跑 N=5/档 pilot 校验 RUNSUM 字段完整与口径自检(≈1 分钟),通过才放
|
|
||||||
全量(批② T5 43 行自检暴露缺陷教训前置化)。**读数缺陷 ≠ 轨迹失效**:采集器/读数路径修复若零 gameplay/RNG
|
|
||||||
触碰(静态核证+off 对拍佐证),已采数据仍有效——优先事件流重构补算,禁整套重跑;仅轨迹失效才取新锚。
|
|
||||||
**增量复用规则**:①零数值改动=零 MC(现行规则重申);②采集器增字段零 gameplay=零重跑,新字段随下次正当
|
|
||||||
触发顺带采集;③轨迹性改动(表值/机制/池构成)=改前锚已留盘即用(禁为「改前」补跑),改后取新锚一次判读
|
|
||||||
位移;④同批同码态锚只取一次,「调整一下就重跑」禁止;⑤出口闸逐位复验用锚内种子子集(N≤20)即可。采集链
|
|
||||||
性能改造(分片并行/日志 flush 开关)属零轨迹影响面,一次性批立项并对现行锚逐位对拍验收后方可使用。
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4b. sim-data/README.md 追加「N 分级标准表」节(§工具与格式 前插入)
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
## N 分级标准表(2026-10-03 立规——按用途定 N 与耗时上限,禁惯例继承禁计划书自拟)
|
|
||||||
|
|
||||||
依据:单比例样本量 n=z²p(1−p)/E² 与两比例功效公式(外部统计基准,出处见
|
|
||||||
design/research/MC成本调研与规制方案-2026-10-03.md §3/§附);单局费率 normal 1.21s / perfect 8.47s
|
|
||||||
(2026-10-02 性能报告实测,on 态同量级按 1.5× 上界预留)。
|
|
||||||
|
|
||||||
| 用途 | N/档 | 双策略耗时 | 判读力 | 触发权 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 对拍断言(同种子逐位) | 0(复用留盘锚);复验子集 ≤20 | 0 / ≈3 分钟 | 确定性——扰动即全体种子漂移,检出力与 N 无关 | 任务书授权 |
|
|
||||||
| 结构回归读数 | 60 | ≈10 分钟 | 80% 功效检出 ≥25pp 位移;<25pp 只测不判 | 任务书授权 |
|
|
||||||
| 带值判定·粗 | 100 | ≈16 分钟 | 95% CI ±9.8pp(离带边 ≥10pp 才下结论) | 任务书授权 |
|
|
||||||
| 带值判定·全带(15pp 带半宽) | 170 | ≈27 分钟 | 95% CI ±7.5pp | 任务书授权 |
|
|
||||||
| 贴带边裁决/里程碑放行 | 400(满档) | ≈65 分钟 | 95% CI ±4.9pp | 用户明示发令 |
|
|
||||||
| 采集 pilot(强制前置) | 5 | ≈1 分钟 | 字段/口径自检,非统计读数 | ≥60 局采集必附 |
|
|
||||||
| normal 独立满档 | 400(仅 normal) | ≈8 分钟 | 零事件 95% 上界 0.75%(规则三) | 任务书授权 |
|
|
||||||
|
|
||||||
配套纪律:会话预算 ≤20 分钟(细则见 CLAUDE.md MC 成本细则);读数离带边 <CI 半宽=窗口不足如实挂起;
|
|
||||||
零事件读数 95% 上界 ≈3/N。**锚文件捕获格式统一=去前缀纯 JSONL、按种子升序**(81000 旧形态带 RUNSUM
|
|
||||||
前缀+进度行,analyze.py 直读会炸;批耗时随锚记入 active.md 台账——进度行滤掉后耗时账即丢失)。
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4c. (可选,一次性小批)采集链性能改造
|
|
||||||
|
|
||||||
- 范围:①`adventure_monte_carlo.gd` 加游标偏移参数(分片用,~5 行)②MC 批 logger flush 开关。估时 0.5 日含逐位对拍验收(对现行 off_n60 锚同种子子集逐位一致=验收闸)。
|
|
||||||
- 收益:满档墙钟 ÷K(K=分片数);flush 收益需 A/B 实测后计入。
|
|
||||||
- 本会话不改码——立项与否见 §5 拍板点 3。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. 拍板点(全备选案)
|
|
||||||
|
|
||||||
1. **会话 MC 预算上限**:
|
|
||||||
- 案 A(推荐):**≤20 分钟/会话**——恰容一组 N=60 双策略(9.7min)或 N=100 粗判(16.1min),与「开发半小时」体感匹配;
|
|
||||||
- 案 B:≤30 分钟——宽松档,容 N=170 全带判(27.4min)不超限;
|
|
||||||
- 案 C:不设硬上限,改立「同会话第二次采集必停机呈报」——软约束,依赖自律。
|
|
||||||
2. **N 分级表定型**:
|
|
||||||
- 案 A(推荐):五档 0/60/100/170/400(本文 §3.5 表)——用途-判读力-耗时一一对应;
|
|
||||||
- 案 B:三档 0/60/400——粗粒度好记,但 60 与 400 之间无过渡,带值判定要么欠功效要么超配 4 倍;
|
|
||||||
- 案 C:单档 170 通吃——最简但对拍复验/pilot 被迫超配。
|
|
||||||
3. **分档不对称(normal 可独立满档)**:
|
|
||||||
- 案 A(推荐):采纳——normal 8 分钟换零事件上界 0.75%,对普通档失败常态窗带判定直接有用;
|
|
||||||
- 案 B:维持对称 N——口径简单,normal 侧统计力浪费。
|
|
||||||
4. **加速改造批立项**:
|
|
||||||
- 案 A(推荐):立项(分片+flush,0.5 日含逐位验收)——满档从 65min 降至 ~17min(K=4),里程碑档从「跑不起」变「跑得起」;
|
|
||||||
- 案 B:只做 flush 开关——最小改动,收益未量化;
|
|
||||||
- 案 C:不做——接受现状时长,靠 N 分级控本。
|
|
||||||
5. **「≥50 distinct seeds」转正**(批①计划书自设下限):
|
|
||||||
- 案 A(推荐):转正为结构回归档成文表述(N=60 与 80% 功效/25pp 判读力绑定写入 README 表注);
|
|
||||||
- 案 B:不转正,只留 §3.5 表。
|
|
||||||
6. **规制追溯性**:现行 off_n60/81000 两代锚**不作废**(立规不追溯,锚随换代义务自然退役)——无需拍板,默认如此,列此备查。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 附:外部统计基准出处 + 零执行声明
|
|
||||||
|
|
||||||
- 单比例样本量/CI:[LibreTexts 7.4 Confidence Interval and Sample Size for the Proportion](https://stats.libretexts.org/Courses/Citrus_College/Introductory_Statistics_OER_-_Exercise_Questions_Each_Section_Included/07%3A_Confidence_Interval_for_One_Sample/7.04%3A_Confidence_Interval_and_Sample_Size_for_the_Proportion)(E=z√(p̂q̂/n) ⇒ n=z²p̂q̂/E²);[NIST/SEMATECH 手册 7.2.4.2 Sample sizes required](https://www.itl.nist.gov/div898/handbook/prc/section2/prc242.htm);[PMC4792103(Wilson/Wald/Agresti-Coull CI 宽度比较)](https://pmc.ncbi.nlm.nih.gov/articles/PMC4792103);z=1.645@90%/1.96@95%。
|
|
||||||
- 两比例功效样本量:n/组 = (z_α/2+z_β)²[p₁(1−p₁)+p₂(1−p₂)]/(p₁−p₂)²,z_β=0.84@80% 功效([BMJ Paediatrics Open 用式](https://bmjpaedsopen.bmj.com);Fleiss 合并方差型给出相近略高值)。
|
|
||||||
- 零事件规则三:n 局零事件 → 95% 上界 ≈3/n(Clopper–Pearson 精确界 (1−p)ⁿ=0.05 推导;[Ranucci 2009, arXiv](https://arxiv.org) 对照精确限与规则三)。
|
|
||||||
- 本会话零执行声明:全程未跑任何测试/MC/冒烟/模拟;对 81000 锚文件仅做只读 JSON 统计(读数核对用,非重采集);零改码零提交;本文件为唯一新落盘产物。
|
|
||||||
@@ -1,411 +0,0 @@
|
|||||||
# UI 重设计原型 v2 落码——差异对照与改动计划(2026-10-04)
|
|
||||||
|
|
||||||
> **性质**:分析 + 计划副本(独立文件)。Demo 原型本体 `artwork/ui-redesign-2026-10-04/src/ui-prototype.html` **未被修改**。
|
|
||||||
> **Demo 事实源**:`D:/code/g-plan2/artwork/ui-redesign-2026-10-04/src/ui-prototype.html`(v2.1,八视图 1280×800,画布内嵌设计注记 N 键可查)+ 同目录 41 件素材 + `preview/v2-*.png` 九张渲染截图。
|
|
||||||
> **现状事实源**:worktree `master-15c0ce1f` @ 2aeb459(2026-10-04 master 头),逐文件核证。
|
|
||||||
> **执行约束**:本计划将被委派给多个 Agent 并行执行。模块划分已按「文件互不重叠」原则切分;§五 冲突风险点必须在分派前逐项裁决,否则并行必撞。
|
|
||||||
> **铁规提醒**:本计划为纯文档批,零测试零代码(测试两入口铁规);各落码批执行时走 loop 规范(轻闸 + 触碰 presentation 加跑 ui_click_probe/ui_layout_probe;纯呈现批 MC 零跑)。素材 PNG 不入 git,`game/assets/art/` 为磁盘件——**worktree 间须手工搬运 + import 重刷**(坑册已载)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 一、Demo 原型梳理(八视图 × 视觉元素 × 资源规格 × 交互)
|
|
||||||
|
|
||||||
### 1.1 全局规格
|
|
||||||
|
|
||||||
| 项 | 规格 |
|
|
||||||
|---|---|
|
|
||||||
| 视口 | 1280×800 固定画布(与游戏窗口一致) |
|
|
||||||
| 字体 | Fusion Pixel(`fusion_pixel.ttf`,游戏内已有同款 `ui_font_fusion_pixel_zh_hans.ttf`) |
|
|
||||||
| 渲染 | 全部图像 `image-rendering:pixelated`(= Godot TEXTURE_FILTER_NEAREST,现行已守) |
|
|
||||||
| 容器形制 | 九宫格石板皮:`panel_stone.png`(48×48,border 12/16)= `.plate9`;按钮:`button_stone.png` / `button_stone_pressed.png` = `.btn9`;底噪 `backdrop_stone.png` 256 平铺 opacity .14 |
|
|
||||||
| 色板 | 44 个 CSS token,语义族:墨族 ink×4 / 暖白 warm×3 / 烛光 candle / 木 wood×2 / 面板 panel·plate / 金 gold×5 / 红 red×3 / 蓝 hero-blue·hp-blue / Boss 紫赤 / 妨害紫 / 暮蓝 dusk / 底 bg×3 / 棋盘 brick·floor / 微光 glow×2 / 类型色 tg×5 / 战报 log×4 |
|
|
||||||
| 关键色值变更(v2.1 配色总纲) | **背景提暖提亮禁近黑大底**:`--bg-root:#3A2E22`、`--bg-overlay:#362B20`、`--bg-bright:#453723`;暖米族换代 `--warm-soft:#E8D5A8`、`--warm-faint:#CDB88C`;**金色定岗**:#F0A828 只用于奖励数字/钥石/当前位置节点,主按钮用独立烛光黄 `--candle:#F6C667` |
|
|
||||||
| 图标 | 20×20 手绘像素图标 12 枚(铲/医疗包/爆破/盾/金币袋/钥石残片/弹药袋/剑/心/刷新 + 已有工坊/锻造/图鉴/钥石),PNG 在盘 + HTML 内嵌 canvas 兜底生成器;原则「图标+形状+颜色三通道」 |
|
|
||||||
| 微交互 | 悬停提示 `.tip[data-tip]`(深底圆角浮层,支持多行,方向上/下两态);按钮动词化(≤4 字,解释全移悬停);`prefers-reduced-motion` 全局守减动效 |
|
|
||||||
| 画布外纪律 | 工具条/注记/状态切换按钮一律出画布(截图=玩家所见)——纯原型工程件,不落码 |
|
|
||||||
|
|
||||||
### 1.2 八视图逐项
|
|
||||||
|
|
||||||
**① 标题屏 `#v-start`**:双列(左 56% / 右舞台)。左列=标题锁(44px 主标 + 木色 flagline + 副题「扫雷的因 · 逐行兑现的果」)+ 三按钮组(冒险/营地与系统/其他,组帽 cap 小字)+ 折叠「▸ 测试与调试」组(调整板/调试两层/种子/诊断转储)。按钮:主钮烛光黄 `.primary`、退出/调试 `.ghost`、动词化文案 + 悬停解释。右列=舞台摆拍(底座椭圆 pedestal、英雄大立绘 hero_portrait 138×144、背景敌影 goblin/ogre_chief 亮度 .7 透明 .34、封印旗 pennant 旋转 14°)+「玩法速览」plate9 牌(4 行玩法说明)。背景 = bg-bright + 斜向光束 beams + vignette 暗角。
|
|
||||||
|
|
||||||
**② 营地屏 `#v-camp`**:顶栏(标题+副题 | 钥石徽章 candle 底+icon_keystone)。三柜台列 372px:colhead 木色头带(20px 图标+称号)+ 行牌 crow(#F4E8CC 米牌,20px 行图标+名称+Lv 标签 lvtag+效果 meta+操作钮)。柜台一属性锻造(攻/甲/血/挖掘范围,含「已满级」done 态);柜台二道具工坊(韧化/改良/弹药袋档位/稀有件「钥石不足」禁用);柜台三奖励格图鉴(同调装配 Slots 1/3 + 天赋树主干脊柱行)。底栏=关闭钮+最近冒险行。
|
|
||||||
|
|
||||||
**③ 设置屏 `#v-settings`**:居中 plate9 面板 560px。setrow 行牌(标签 150px + 控件 + `.why` 后果说明行):主音量+音效音量双滑杆(自绘 slider 200×10 轨道+方块柄)、全屏/减动效/结算演出动画三枚**拨杆开关**(switch 46×22,on/off 两态)。返回钮。
|
|
||||||
|
|
||||||
**④ 冒险地图 `#v-map`**:顶栏 56px(关卡铭牌 lvlplate | GP 徽章 candle)。SVG 节点图:**节点 73×50(1.4×)/ Boss 79×56**,层距 122 不变;三态=已过 GOLD_DONE #68562C / **当前=唯一亮金 #F0A828** / 未达暗 #4A443C;**候选=烛光黄 #F6C667 双框**(外环+内框 2px);Boss=紫赤 2px+墨外环(冻结件);节点图标 20px + 序号 + **类型文字标签**(战斗/奖励/休息/当前位置/Boss——评审曾提去标签,原型裁保留)。**底栏合并单条**(#F0E4C8 亮条 88px):头像 52×54 + HP 轨条 + 属性(攻/AC+加成)+ 本关加成+持有 + 魔法道具槽 44×44 + 放弃 danger 钮。休息弹层 restov:plate9 + 木色 band 头 + 回血数字 + 主钮。
|
|
||||||
|
|
||||||
**⑤ 商店屏 `#v-shop`**:顶栏(「商 店」标 | **刷新钮** icon_refresh+余量角标 3 | GP 徽章)。爬价行 svisit「本次进店已购 N 件 · 现价 ×1.8^N」。**三竖卡 bcard 232×352**(与⑥同构):类型色带 band 6px + 微光 band2 + 图标槽 76×76 + 名称 19px + 描述 + **价签 21px 金** + 底注(档位·稀有度)。底行=离开商店 + 池说明 hint。退役件:已购 N 档/下档价、库存余 N、金币袋、钥石残片。
|
|
||||||
|
|
||||||
**⑥ 三选一屏 `#v-bonus`**:头部(标题 + 入账两行:GP +12·合计 96 | 钥石 +1·累计 7)。三 bcard 同⑤,**选中态=金框 outline + ✓ 章**。底行=确认选择(primary)+ 刷新候选 + 余次 hint。
|
|
||||||
|
|
||||||
**⑦ 战斗屏 `#v-battle`**:B 区 252px 舞台(#3E342A + beams 光柱)。**narrator 轮次牌**(plate9 素牌「第 3 轮 · 结算中」顶中)。站桩:血条 120×12(我方蓝 #69A1E8 / 敌方红 #B0503F)+ 状态图标行 16px + **无框立绘 96px 高定宽随** +椭圆底座 platform + 顺位徽标 ord(敌①②)+ 意图徽标(攻红⚔/增益蓝✦)+ 名字行(护甲图标 ◇◆+名)。**战报带 56px**:常驻单行「上轮 ·…」+ 右侧「▸ 战报历史 N 条」**抽屉**(logdrawer ≤300px 就地展开,非模态)。C 区 240px:头带「探险者」+ 数据框(攻 6 / AC 12,加成来源收悬停)+ 魔法道具四槽 48px(**手绘图标**,sel 金框/已用/空三态);**「本关强化」「流派件」两段撤出主画面**(明细归结算回看)。D 区:AP 条 44px(AP 金点阵 10px + 数字 5/8 + 停手 | RAP 蓝点阵 8px + 「随战斗结束消散」| 图例 + 弃图刷新——余次收悬停);棋盘 10×10 **44px 格 + 2px 缝**,悬崖 8px 三面 + 口沿高光,未开=墙纹理+斜面 bevel,已开=地板纹理三随机,数字牌 dplate 素牌 19px 粗体,旗=flag_seal 32px,英雄格呼吸微光 glowb + 正交相邻格弱微光 glow-n,雾外纯黑 / 记忆态灰膜 .66。**棋盘底常驻 hintbar**:「左键 挖掘/移动 · 右键 封印(不可逆) · 同格双击 快开」。
|
|
||||||
|
|
||||||
**⑧ 结算屏 `#v-end`**:居中 plate9 520px。sealrow=金印 sealbadge 52px(内嵌 flag_seal)+ 标题 28px 字距 4 + 判词 verdict(胜「敌人全灭。」/ 败「探险者倒下了。」转深红)+ 庆祝立绘(idle 帧浮动占位)。endrows 三行:战利品 GP +24·合计 137 / 钥石 +2·累计 9 / 本关加成汇总——**数字滚动动画**(800ms 三次缓出,减动效直出终值)。按钮=明细回看 + 下一节点(primary;败=返回开始界面)。**双情绪**:胜=暖 dim .28+尘金粒子 twinkle ×10;**败=暮蓝 dim .62 + 徽记灰化 + 奖励行整体灰显弱化**。
|
|
||||||
|
|
||||||
### 1.3 资源规格清单(Demo 引用 vs 游戏已有)
|
|
||||||
|
|
||||||
| 资源 | Demo 规格 | 游戏现状 | 差额 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| fusion_pixel 字体 | ttf | ✅ 已有(assets/fonts) | 无 |
|
|
||||||
| panel/button/button_pressed/backdrop/border_stone | 九宫格/平铺 | ✅ 已有(assets/art/ui,UiKit TEX_* 常量已登记) | 无 |
|
|
||||||
| 节点图标 ×5 | 20×20 | ✅ 已有 | 无 |
|
|
||||||
| 状态图标 ×9 | 16px 档 | ✅ 已有(assets/ui/icons,demo 复用同名件) | 无 |
|
|
||||||
| 角色立绘 | hero portrait/idle + goblin/bugbear/ogre_chief | ✅ 已有(八敌+主角三态全) | 无 |
|
|
||||||
| 地形瓦片 | wall_center + floor×3(demo) | ✅ 已有(全三关成套) | 无 |
|
|
||||||
| flag_seal | 32px | ✅ 已有 | 无 |
|
|
||||||
| **手绘功能图标 ×10** | 20×20:sword/shield/heart/shovel/medkit/pouch/blast/coinbag/keyshard/refresh | ❌ 游戏仅 atlas/forge/keystone/workshop 四枚 | **缺 10 枚,PNG 已在 demo src/ 盘上,可直接搬运入库** |
|
|
||||||
| 英雄庆祝帧 | 结算屏用 idle 占位 | — | 缺正式庆祝帧(demo 注记:走手修管线待批资产批) |
|
|
||||||
| 奖励节点「礼盒剪影」图标 | 审计留痕备选 | 现 reward 图标与战斗近似 | 可选换代(拍板点) |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 二、Demo vs 现状 逐屏差异表
|
|
||||||
|
|
||||||
> 现状列均经代码核证(文件:行级事实)。差异分级:🔴 结构/交互差 · 🟡 样式/文案差 · 🟢 已一致。
|
|
||||||
|
|
||||||
### ① 标题屏(现状:`ui_assembler.gd build_start_overlay` :104-161)
|
|
||||||
|
|
||||||
| # | 项 | Demo | 现状 | 级 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 1.1 | 版式 | 双列 HBox(左按钮 56% + 右舞台) | 单列 VBox 居中 | 🔴 |
|
|
||||||
| 1.2 | 按钮文案 | 动词化 ≤4 字(「开始冒险」「营地」「设置」),解释移悬停 | 长句内联解释(「▶ 开始冒险(三关连探:地精洞窟 →…)」) | 🟡 |
|
|
||||||
| 1.3 | 按钮分组 | 三组带组帽(冒险/营地与系统/其他) | 平铺无分组 | 🟡 |
|
|
||||||
| 1.4 | 主按钮色 | 烛光黄 #F6C667(独立 token) | 全部 button_stone 同款,无主从 | 🟡 |
|
|
||||||
| 1.5 | 测试/调试 | 折叠组「▸ 测试与调试」(调整板/两层/种子/诊断) | 调整板/调试两层/种子平铺主列,诊断钮锚定左下(build_diag_button) | 🔴 |
|
|
||||||
| 1.6 | 右列舞台 | 英雄立绘+底座+敌影+封印旗+玩法速览牌 | 无(标题+副题+帮助长文本块) | 🔴 |
|
|
||||||
| 1.7 | 玩法说明 | 「玩法速览」4 行牌 | 表值驱动长文 5 行(含地形变异段,信息更全但无形制) | 🟡 |
|
|
||||||
| 1.8 | 悬停提示 | .tip 定制浮层 | Godot 原生 tooltip(未定制样式) | 🟡 |
|
|
||||||
|
|
||||||
### ② 营地屏(现状:`camp_overlay_view.gd`)
|
|
||||||
|
|
||||||
| # | 项 | Demo | 现状 | 级 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 2.1 | 三柜台骨架 | 372px 列 + 木色头带 + 行牌 | 已同构(356px 列+头带+行板,v3-draft 方向稿落码) | 🟢 |
|
|
||||||
| 2.2 | 行图标 | 每行 20px 手绘图标(剑/盾/心/铲/包/爆破…) | 无行图标(纯文本行) | 🔴 |
|
|
||||||
| 2.3 | Lv 标签 | lvtag 木色小章「Lv 2」「已满」 | 文本「Lv %d」无章 | 🟡 |
|
|
||||||
| 2.4 | 禁用态 | 「已满级」「钥石不足」置灰 done 行 | 按钮 disabled 置灰,文案不变 | 🟡 |
|
|
||||||
| 2.5 | 同调/天赋树 | 图鉴柜台内分段(Slots 行+装配行+树行) | 已实现(iter11①/iter12,工坊柜内滚+图鉴柜树滚动) | 🟢 |
|
|
||||||
| 2.6 | 钥石徽章 | candle 亮黄底徽章 | 暗底徽章 CAMP_BADGE_PANEL | 🟡 |
|
|
||||||
| 2.7 | 最近冒险 | 底栏居中一行 | 已有 _recent_list(底部条带) | 🟢 |
|
|
||||||
|
|
||||||
### ③ 设置屏(现状:`settings_overlay.gd`)
|
|
||||||
|
|
||||||
| # | 项 | Demo | 现状 | 级 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 3.1 | 面板形制 | plate9 石板皮亮面板 | 暗遮罩 + 无板文本列(BG_OVERLAY) | 🟡 |
|
|
||||||
| 3.2 | 开关控件 | 拨杆形 switch 46×22(on/off) | UiKit 按钮 toggle(文字换面) | 🟡 |
|
|
||||||
| 3.3 | 滑杆 | 自绘 slider(轨道+方柄)+ 读数 | 原生 HSlider | 🟡 |
|
|
||||||
| 3.4 | **音效音量行** | 主音量+音效音量双行 | 仅主音量一行 | 🔴 涉核心(SettingsStore 扩键+音频 bus) |
|
|
||||||
| 3.5 | 后果说明 | `.why` 行(「开启后演出时长减半」) | 减动效说明内联按钮长文 | 🟡 |
|
|
||||||
|
|
||||||
### ④ 冒险地图(现状:`level_map_screen.gd`)
|
|
||||||
|
|
||||||
| # | 项 | Demo | 现状 | 级 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 4.1 | 节点尺寸 | 73×50(1.4×,层距 122 不变) | 52×36(NODE_HALF 26×18) | 🟡 布局公式同源,只改常量 |
|
|
||||||
| 4.2 | 候选节点色 | **烛光黄 #F6C667 双框**;金色只留当前位 | 候选亮金 GOLD_LIT 描边+通道增亮 | 🟡 配色口径差 |
|
|
||||||
| 4.3 | 节点文字标签 | 节点下方类型文字(战斗/奖励/…) | 无(仅图标+序号) | 🔴 实装拍板点(demo 注记:若不像游戏可再评估悬停化) |
|
|
||||||
| 4.4 | 底栏 | 合并单条:头像+HP 轨+属性+本关加成+道具槽+放弃 | 三个独立暗框(生命/属性/本关加成+流派件行)+放弃钮,无头像无道具槽 | 🔴 |
|
|
||||||
| 4.5 | HP 条色 | 蓝 #69A1E8 填充 | 金 GOLD 填充 | 🟡 |
|
|
||||||
| 4.6 | 休息弹层 | plate9+band 头「血量恢复点」+大数字 | 通用 node_overlay 文本兑付 | 🟡 |
|
|
||||||
| 4.7 | 冻结三态+Boss 双描边 | GOLD_DONE/当前金/未达暗/紫赤+墨环 | 已实现(样张 v1 冻结同值) | 🟢 |
|
|
||||||
|
|
||||||
### ⑤ 商店屏(现状:`shop_overlay_view.gd`)
|
|
||||||
|
|
||||||
| # | 项 | Demo | 现状 | 级 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 5.1 | 卡面形态 | bcard 三竖卡 232×352(色带+图标+价签+底注) | 横排文本行卡(名称+现价+库存+购买钮) | 🔴 |
|
|
||||||
| 5.2 | 模态→全屏化 | bg-bright 全屏底+顶栏 56px | 模态 dim 0.6 + 居中列 | 🔴(可裁:保持模态但换卡面) |
|
|
||||||
| 5.3 | 爬价行 | 「已购 N 件 · 现价 ×1.8^N」常驻店顶 | 无(价格在各卡,爬价无可读总览) | 🟡 |
|
|
||||||
| 5.4 | **刷新钮** | 右上图标钮+余量角标「3」 | 无(现行设计无独立刷新——重抽绑购买) | ⚠ **拍板点**(demo 注记明列四问) |
|
|
||||||
| 5.5 | **库存余量** | 退役不显示 | 显示「库存余 N/∞」 | ⚠ 与 10-04 playnote「库存余量就近」注记待裁冲突 |
|
|
||||||
| 5.6 | GP 徽章 | 顶栏 candle 徽章 | 居中「金币 %d」文本 | 🟡 |
|
|
||||||
|
|
||||||
### ⑥ 三选一屏(现状:`bonus_pick_overlay.gd`)
|
|
||||||
|
|
||||||
| # | 项 | Demo | 现状 | 级 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 6.1 | 卡面 | bcard 竖卡 232×352(demo 注记落码值 216×300 可酌) | 按钮 170×88 纯文本 | 🔴 |
|
|
||||||
| 6.2 | 类型色带 | tg 五族色带+微光(art-bible §4.2 冻结五族) | 无 | 🟡 |
|
|
||||||
| 6.3 | 选中态 | 金框 outline + ✓ 章(右上) | 文本前缀「✓ 」 | 🟡 |
|
|
||||||
| 6.4 | 入账行 | GP+钥石两行置顶(金色数字) | header 文本(Narrator 装配,含回血+钥石) | 🟢 信息等价,样式差 |
|
|
||||||
| 6.5 | 刷新行 | 「可刷新 1 次 · 刷新不消耗 AP」 | 已有(X/Y 双源文案,iter11①T5b) | 🟢 |
|
|
||||||
| 6.6 | 替换子态 | (demo 未摆) | 已有 replace 态 | 🟢 保留 |
|
|
||||||
|
|
||||||
### ⑦ 战斗屏(现状:`battle_stage_view/standee_body/ap_bar_view/hero_info_panel_view/board_zone_view/battle_log_view`)
|
|
||||||
|
|
||||||
| # | 项 | Demo | 现状 | 级 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 7.1 | 骨架 | B 252 / C 240 / D 底行 | 完全一致(冻结版式) | 🟢 |
|
|
||||||
| 7.2 | 轮次指示 | narrator plate9 素牌顶中 | round_label 纯文本 | 🟡 |
|
|
||||||
| 7.3 | 站桩 | 无框立绘+底座+血条+顺位+意图+名行 | 已实现(iter6,96px 档高定宽随 v3.6 条款) | 🟢 |
|
|
||||||
| 7.4 | **战报历史** | 就地抽屉 logdrawer(▸ 战报历史 N 条) | 点击带→**模态明细回看 overlay**(settlement_review_overlay) | ⚠ 交互口径差,需拍板(并存或替代) |
|
|
||||||
| 7.5 | **C 区两段** | 「本关强化」「流派件」**撤出主画面** | 两段均在(流派件段=iter12 用户两次反馈点名加的!) | ⚠ **重大冲突**,见 §五 P-C1 |
|
|
||||||
| 7.6 | 道具槽 | 手绘图标 40px + sel/used/off 三态 | 道具名首字 glyph 文本 | 🔴 依赖图标资产批 |
|
|
||||||
| 7.7 | AP/RAP 点阵 | 径向渐变亮点(金/蓝) | 平涂 ColorRect 金/熄灭 | 🟡 |
|
|
||||||
| 7.8 | 弃图刷新余次 | 收悬停提示 | 副行常驻「RAP−%d · 剩 %d 次」 | 🟡 信息密度取舍 |
|
|
||||||
| 7.9 | **常驻 hintbar** | 棋盘底「左键 挖掘/移动 · 右键 封印 · 同格双击 快开」 | 无(chord 提示=一次性 toast) | 🟡 |
|
|
||||||
| 7.10 | 棋盘 44px 格+悬崖+微光+雾黑+记忆 | 全件 | 已实现(iter9①/iter11④,参数同源冻结) | 🟢 |
|
|
||||||
|
|
||||||
### ⑧ 结算屏(现状:`battle_end_overlay.gd`)
|
|
||||||
|
|
||||||
| # | 项 | Demo | 现状 | 级 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 8.1 | 面板 | plate9 520px + sealbadge(内嵌 flag_seal 图) | panel_skinned + 金色圆 seal(无图) | 🟡 |
|
|
||||||
| 8.2 | 内容行 | 三行:GP/钥石/本关加成 + 合计·累计 | 单行 gp_summary(仅 GP) | 🔴 钥石行/加成行缺 |
|
|
||||||
| 8.3 | 数字滚动 | 800ms 补间滚动(守减动效) | 无 | 🟡 |
|
|
||||||
| 8.4 | 庆祝立绘 | hero idle 浮动(占位,正式帧待资产批) | 无立绘 | 🟡 可用 idle 先行 |
|
|
||||||
| 8.5 | 胜利粒子 | 尘金 twinkle ×10 | 碎砖拼纹章 ×10(另一种演出,样张 v2 冻结) | ⚠ 两套演出取一,见 §五 P-C5 |
|
|
||||||
| 8.6 | **失败态奖励行** | 灰显弱化但**仍显示** | **整行隐藏**(OQ14:GP 总结归胜利侧) | ⚠ 口径冲突,见 §五 P-C4 |
|
|
||||||
| 8.7 | 失败徽记 | 灰化 | 隐藏 | 🟡 |
|
|
||||||
| 8.8 | 按钮文案 | 下一节点 / 返回开始界面 | 组合根传 continue_label(已等价) | 🟢 |
|
|
||||||
|
|
||||||
### 全局差异(跨屏)
|
|
||||||
|
|
||||||
| # | 项 | Demo | 现状 | 级 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| G1 | 底色三件套 | BG_ROOT #3A2E22 / BG_OVERLAY #362B20 / 新增 BG_BRIGHT #453723 | BG_ROOT #1E1914 / BG_OVERLAY #1C1612(近黑) | 🔴 UiKit 单点换代 |
|
|
||||||
| G2 | 暖米族 | WARM_SOFT #E8D5A8 / WARM_FAINT #CDB88C | #C8BCA6 / #B2A692 | 🟡 同上 |
|
|
||||||
| G3 | 烛光黄 CANDLE #F6C667 | 主按钮/候选节点/徽章底 | 不存在 | 🔴 新 token |
|
|
||||||
| G4 | 金色定岗纪律 | 金=奖励数字/钥石/当前位;按钮禁金 | GOLD_LIT 用于候选节点(违新纪律) | 🟡 随 G3 一并落 |
|
|
||||||
| G5 | 悬停提示样式 | 深底多行定制浮层 | 原生 tooltip 默认样式 | 🟡 主题化或自绘层 |
|
|
||||||
| G6 | 手绘图标 ×10 | 行图标/卡图标/槽图标 | 缺 | 🔴 资产批 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 三、改动计划(模块拆分 · 供多 Agent 并行委派)
|
|
||||||
|
|
||||||
> **切分原则**:①文件面互不重叠(唯一例外=ui_kit.gd,由 M0 独占先行);②依赖单向;③每模块可独立轻闸。
|
|
||||||
> **统一契约**:不改 `game/core/` 任何文件(M4-音效音量如裁决要做=唯一例外,需走核心小批并 MC 对拍);不动冻结值(色板冻结件/版式骨架 B252/C240/悬崖 8px/节点三态色);素材走 load_tex 守卫+回退链。
|
|
||||||
|
|
||||||
### M0 · 色板 token 换代(先行批,全局阻塞项)
|
|
||||||
|
|
||||||
| 项 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 文件 | `game/presentation/views/ui_kit.gd`(唯一);`design/art/art-bible.md` §7.2 补记一行(琥珀族双岗=主操作+收益的主动取舍,防翻案) |
|
|
||||||
| 改动 | BG_ROOT→#3A2E22;BG_OVERLAY→#362B20;新增 BG_BRIGHT #453723;新增 **CANDLE #F6C667**;WARM_SOFT→#E8D5A8;WARM_FAINT→#CDB88C |
|
|
||||||
| 优先级 | **P0(一切模块的前置,须先合并)** |
|
|
||||||
| 依赖 | 无 |
|
|
||||||
| 预期效果 | 全站底色提暖提亮、禁近黑大底落地;烛光黄 token 供 M2/M5 消费 |
|
|
||||||
| 风险 | WARM_SOFT/WARM_FAINT 消费面广(各屏说明文)——换代后全站说明文字色变,须整屏过一遍目检清单;GOLD_LIT 候选节点色改 CANDLE 由 M5 落(本批不动逻辑) |
|
|
||||||
|
|
||||||
### M1 · 图标资产批(10 枚手绘图标入库)
|
|
||||||
|
|
||||||
| 项 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 文件 | `game/assets/art/ui/` 新增 icon_sword/shield/heart/shovel/medkit/pouch/blast/coinbag/keyshard/refresh.png(源=demo src/ 盘上件直接搬运,**磁盘件不入 git**);`ui_kit.gd` 追加 TEX_ICON_* 常量 10 条(M0 合并后追加,避免撞车) |
|
|
||||||
| 资源类型 | 20×20 像素 PNG,NEAREST,1:1 消费或整数倍放大 |
|
|
||||||
| 优先级 | P0(M3/M6/M7/M8 的素材前置) |
|
|
||||||
| 依赖 | M0(同为 ui_kit.gd 写面,串行) |
|
|
||||||
| 预期效果 | 营地行/商店卡/三选一卡/道具槽图标位全部可接线;缺位回退字形惯例不破 |
|
|
||||||
| 注意 | worktree 执行须手工拷贝+`.godot` import 重刷(坑册条目);冒烟守卫=load_tex null 回退 |
|
|
||||||
|
|
||||||
### M2 · 标题屏重构
|
|
||||||
|
|
||||||
| 项 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 文件 | `game/presentation/ui_assembler.gd`(build_start_overlay 重写;build_diag_button 并入折叠组) |
|
|
||||||
| 改动 | 单列 VBox→双列 HBox;按钮三分组+组帽;文案动词化+悬停解释;主按钮 CANDLE 底;「测试与调试」折叠组(调整板/两层/种子/诊断转储内折);右列舞台件(hero_portrait+敌影+pedestal+flag_seal pennant)+玩法速览 plate9 牌 |
|
|
||||||
| 优先级 | P1 |
|
|
||||||
| 依赖 | M0、M10(tooltip 样式)、M1(不阻塞——立绘类素材已有) |
|
|
||||||
| 预期效果 | 首屏信息分层(动词按钮+悬停解释)、调试件退场一级视觉、品牌舞台感 |
|
|
||||||
| 冲突注意 | 返回值契约 `{lvbtn,resumebtn,tunebtn,dbgbtn,campbtn,settingsbtn,quitbtn,seed_edit}` 保持不变——main.gd 接线零改 |
|
|
||||||
|
|
||||||
### M3 · 营地屏行牌化
|
|
||||||
|
|
||||||
| 项 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 文件 | `game/presentation/views/camp_overlay_view.gd` |
|
|
||||||
| 改动 | 行牌左端 20px 图标槽(icon_rect 已有工厂);Lv 标签 lvtag 章化;禁用态文案(已满级/钥石不足);钥石徽章底 CANDLE 化;头带图标 16→20px |
|
|
||||||
| 优先级 | P1 |
|
|
||||||
| 依赖 | M0、M1 |
|
|
||||||
| 预期效果 | 三通道(图标+形状+颜色)扫读;与 demo ②一致 |
|
|
||||||
| 冲突注意 | `_forge_rows/_workshop_rows` 行结构键名探针依赖——行结构只增不删(加 icon 字段),探针断言面保持 |
|
|
||||||
|
|
||||||
### M4 · 设置屏行牌化
|
|
||||||
|
|
||||||
| 项 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 文件 | `game/presentation/views/settings_overlay.gd`;(若裁决做音效音量)`game/presentation/settings_store.gd` + 音频 bus——**核心面,拆独立小批** |
|
|
||||||
| 改动 | plate9 面板化;setrow 行(标签列+控件+why 行);自绘拨杆开关控件(新 UiKit 件,见 M10);滑杆样式化;**音效音量行=拍板点 P-C6,未裁前不摆** |
|
|
||||||
| 优先级 | P2 |
|
|
||||||
| 依赖 | M0、M10 |
|
|
||||||
| 预期效果 | 设置项可读性(每项带后果说明);控件形制与全站统一 |
|
|
||||||
| 冲突注意 | retarget(store)/控件公有只读=探针接缝,保留 |
|
|
||||||
|
|
||||||
### M5 · 冒险地图屏
|
|
||||||
|
|
||||||
| 项 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 文件 | `game/presentation/views/level_map_screen.gd` |
|
|
||||||
| 改动 | ①NODE_HALF 26×18→36×25(节点 73×50,层距/布局公式零改——_layout/_fit_canvas/_candidate_at 同源常量自动随动);②候选描边 GOLD_LIT→**CANDLE**(金色只留当前位);③节点下方类型文字标签(拍板点 P-C3——默认落「保留文字标签」案);④底栏重构=合并单条亮板(头像 mface+HP 轨改蓝填充+属性+本关加成+道具槽 44px+放弃 danger);⑤rest 兑付面板 plate9 化(node_overlay rest 分支样式) |
|
|
||||||
| 优先级 | P1 |
|
|
||||||
| 依赖 | M0、M1(道具槽图标)、M10 |
|
|
||||||
| 预期效果 | 节点信息三通道、候选/当前色相分离不再抢金;底栏一站读齐 |
|
|
||||||
| 冲突注意 | `layout_probe/canvas_probe` 探针出口保持;_draw_passage 折线算法不碰;底栏重构保留 `_relic_value` 投喂口(iter12 呈现补齐成果不丢——摆位随新底栏) |
|
|
||||||
|
|
||||||
### M6 · 商店屏 bcard 同构化
|
|
||||||
|
|
||||||
| 项 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 文件 | `game/presentation/views/shop_overlay_view.gd` |
|
|
||||||
| 改动 | pool 面(open_shelf/_build_shelf_card)横排行卡→**bcard 竖卡三列**(类型色带+图标槽+名称+描述+价签金 21px+底注档位);店顶爬价行「已购 N 件 · 现价 ×A^N」;GP 徽章 candle 化;**退役「库存余 N」**(已裁,2026-10-04 用户令本次执行——关卡节点地图 v1.5-a 注记已换代);**刷新钮呈现位照摆**(图标+余量角标占位 1,参数由 SR-1(商店刷新批) 投喂);legacy 面(open_shop 旧商品卡)维持原样(shop=off 对照承载) |
|
|
||||||
| 优先级 | P1 |
|
|
||||||
| 依赖 | M0、M1、M10(bcard 工厂件) |
|
|
||||||
| 预期效果 | 商店=付费可重复三选一的同构语言落地(2026-10-02 裁决呈现侧闭环);价格逻辑零改(核心 iter11②已落) |
|
|
||||||
| 冲突注意 | `buy_requested/leave_pressed` 信号面与 `_card_rows/_shelf_rows` 结构键不动 |
|
|
||||||
|
|
||||||
### M7 · 三选一屏 bcard 化
|
|
||||||
|
|
||||||
| 项 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 文件 | `game/presentation/views/bonus_pick_overlay.gd` |
|
|
||||||
| 改动 | 卡 170×88 按钮→bcard 竖卡(类型色带查表 tg 五族+图标+名称+描述+底注);选中态=金框 outline+✓ 章(替代文本前缀);头部入账两行金色数字排版;replace 子态与 result 态原样保留 |
|
|
||||||
| 优先级 | P1 |
|
|
||||||
| 依赖 | M0、M1、M10 |
|
|
||||||
| 预期效果 | 与商店同卡面语言;类型色=形状外第二通道 |
|
|
||||||
| 冲突注意 | `press_card/press_confirm/press_continue/selected_id` 探针面必须走真实按钮路径保持等价 |
|
|
||||||
|
|
||||||
### M8 · 战斗屏微调包
|
|
||||||
|
|
||||||
| 项 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 文件 | `battle_stage_view.gd`(narrator 牌化)、`battle_log_view.gd`(抽屉——**待 P-C7 裁**)、`ap_bar_view.gd`(点阵样式/余次收悬停)、`hero_info_panel_view.gd`(道具槽图标化——**不撤两段,待 P-C1 裁**)、`board_zone_view.gd`(常驻 hintbar) |
|
|
||||||
| 改动 | ①round_label→narrator plate9 素牌;②AP/RAP 点阵径向亮点样式(_make_dot 换自绘 Control);③弃图刷新余次副行保留现状(密度取舍待 P-C8);④道具槽 glyph→手绘图标(used/off/sel 三态保持);⑤棋盘底常驻 hintbar(左键挖掘/移动·右键封印·同格双击快开——文案已被 board_view 输入证实);⑥战报抽屉 vs 回看 overlay=**P-C7 未裁前不动**;⑦**C 区两段一律保留**(P-C1 未裁前不动) |
|
|
||||||
| 优先级 | P2(①④⑤可先落;②③⑥⑦挂拍板) |
|
|
||||||
| 依赖 | M0、M1、M10 |
|
|
||||||
| 预期效果 | 战报/操作提示可发现性提升;道具槽与全局图标语言统一 |
|
|
||||||
| 冲突注意 | 本模块文件多,建议再拆 8a(stage+log+ap_bar)/8b(info_panel+board_zone)两个子包并行 |
|
|
||||||
|
|
||||||
### M9 · 结算屏双情绪
|
|
||||||
|
|
||||||
| 项 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 文件 | `game/presentation/views/battle_end_overlay.gd` |
|
|
||||||
| 改动 | ①sealbadge 内嵌 flag_seal 图标 52px;②endrows 三行化(GP 行已有;**钥石行/本关加成行=组合根投影补喂**——main.gd 装配侧加两行文案投影,属呈现侧投影非核心);③数字滚动补间(UiKit.motion 包装,减动效直出终值);④庆祝立绘 idle 浮动占位(正式帧归后续资产批);⑤失败徽记灰化;⑥**失败奖励行灰显 vs 隐藏=P-C4 未裁前维持隐藏**;⑦胜利粒子:维持现行碎砖纹章 or 换尘金=P-C5,未裁不动 |
|
|
||||||
| 优先级 | P2 |
|
|
||||||
| 依赖 | M0、M10;(②涉 main.gd 装配两行投影,与 M2 同文件——**main.gd 由本模块独占时段协调,见 §四排他表**) |
|
|
||||||
| 预期效果 | 胜/败双情绪落差;GP/钥石/加成三账同屏收口 |
|
|
||||||
| 冲突注意 | `fx_probe` 三断言面(crest/dust/flag)保持;演出探针不破 |
|
|
||||||
|
|
||||||
### M10 · 公共件批(UiKit 新工厂 + tooltip 样式)
|
|
||||||
|
|
||||||
| 项 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 文件 | `ui_kit.gd`(M0 合并后第二轮追加,或并入 M0 一次落——建议**并入 M0** 减少单点撞车窗口) |
|
|
||||||
| 改动 | ①`bcard()` 竖卡工厂(色带/图标槽/价签位参数化,M6/M7 共用);②`switch_toggle()` 拨杆控件(M4);③`styled_slider()`(M4);④tooltip 主题化(TooltipPanel 深底多行样式,全站经 theme override 单点);⑤`verb_button()`(图标+动词+tooltip 三件套,M2/M3) |
|
|
||||||
| 优先级 | **P0(与 M0 同批)** |
|
|
||||||
| 依赖 | 无 |
|
|
||||||
| 预期效果 | 各模块零重复造件;单点换皮纪律延续 |
|
|
||||||
|
|
||||||
### 模块排他与依赖图
|
|
||||||
|
|
||||||
```
|
|
||||||
M0+M10(ui_kit.gd 独占,先行合并)
|
|
||||||
├─→ M1(图标入库,ui_kit 追加常量——紧随 M0)
|
|
||||||
│ ├─→ M3 营地
|
|
||||||
│ ├─→ M6 商店 ─┐
|
|
||||||
│ ├─→ M7 三选一 ├─ 三者文件互斥,可全并行
|
|
||||||
│ └─→ M8 战斗包 │
|
|
||||||
├─→ M2 标题屏(ui_assembler.gd 独占)
|
|
||||||
├─→ M4 设置屏(settings_overlay.gd 独占)
|
|
||||||
├─→ M5 冒险地图(level_map_screen.gd 独占)
|
|
||||||
└─→ M9 结算屏(battle_end_overlay.gd 独占;main.gd 投影补喂与 M2 错峰——M2 不碰 main.gd,M9 独占 main.gd)
|
|
||||||
```
|
|
||||||
|
|
||||||
**并行安全结论**:M0+M10 → M1 串行先行;其后 M2/M3/M4/M5/M6/M7/M8/M9 八个模块文件面两两不交,可全并行;每模块独立 worktree 独立合并(项目 loop 规范一迭代一批次,建议编排为同一迭代内多任务卡串行合并,或按用户批次纪律裁决)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 四、各模块文件/资源/优先级速查表
|
|
||||||
|
|
||||||
| 模块 | 主文件 | 资源类型 | 优先级 | 硬依赖 | 估时量级 |
|
|
||||||
|---|---|---|---|---|---|
|
|
||||||
| M0+M10 色板+公共件 | ui_kit.gd、art-bible.md §7.2 | 色 token、工厂件 | P0 | 无 | 0.5d |
|
|
||||||
| M1 图标资产 | assets/art/ui/ ×10、ui_kit.gd 常量 | PNG 20×20(盘上现成) | P0 | M0 | 0.5d(含 import 重刷) |
|
|
||||||
| M2 标题屏 | ui_assembler.gd | 重组件 | P1 | M0 | 1d |
|
|
||||||
| M3 营地 | camp_overlay_view.gd | 图标消费 | P1 | M0+M1 | 0.5-1d |
|
|
||||||
| M4 设置 | settings_overlay.gd(+settings_store.gd 待定) | 新控件 | P2 | M0+M10 | 0.5-1d(音效行另计) |
|
|
||||||
| M5 冒险地图 | level_map_screen.gd | 绘制参数+底栏重构 | P1 | M0+M1 | 1-1.5d |
|
|
||||||
| M6 商店 | shop_overlay_view.gd | bcard 消费 | P1 | M0+M1+M10 | 1d |
|
|
||||||
| M7 三选一 | bonus_pick_overlay.gd | bcard 消费 | P1 | M0+M1+M10 | 1d |
|
|
||||||
| M8 战斗包 | battle_stage/battle_log/ap_bar/hero_info/board_zone | 多样 | P2 | M0+M1 | 1-1.5d |
|
|
||||||
| M9 结算 | battle_end_overlay.gd(+main.gd 投影两行) | 补间+排版 | P2 | M0 | 1d |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 五、⚠ 冲突风险点(分派前必须逐项裁决——否则并行 Agent 必撞)
|
|
||||||
|
|
||||||
| # | 风险点 | 冲突双方 | 裁决建议 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| **P-C1** | **C 区「本关强化/流派件」撤口径**:demo 注记称两段撤出主画面(「禁重复展示」铁律+明细归结算回看);但流派件段是 **2026-10-04 用户两次试玩反馈点名刚加**的(「局内奖励选了什么看不到」),本关强化段=iter9 卡⑫落地 | demo 设计 vs 用户最新反馈(迭代 12 已落码) | **建议维持现状不撤**(用户反馈 > 原型注记;原型该注记自称「裁掉上轮待拍板项」属设计侧主张,未获用户裁决)。若坚持撤,须用户明示推翻两次反馈 |
|
|
||||||
| **P-C2** | **商店两件**:①刷新钮——现行设计无独立刷新(关卡节点地图 v1.5:重抽绑购买),demo 摆了钮+余量章但注记明列四问待裁;②库存余量——demo 退役,但 10-04 playnote「库存余量就近」注记待裁 | demo 摆出 vs 核心设计无此机制 | **刷新钮:不做**(实装=越权碰核心 runner,推翻 v1.5 须用户四问全裁);**库存余量:建议随 demo 退役**(用户反感库存可见已在 playnote 表态),但须与「就近」注记一并呈裁 |
|
|
||||||
| **P-C3** | 节点文字标签:demo 保留(评审去标签案被原型反对),但注记留「实装时若不像游戏可再评估悬停化」 | 文字标签 vs 悬停化 | 默认落**保留文字标签**;实装目检时再评 |
|
|
||||||
| **P-C4** | **失败结算奖励行**:demo=灰显弱化仍显示;现行=整行隐藏(OQ14「GP 总结归胜利」拍板口径) | demo vs OQ14 已拍板面 | **建议维持现行隐藏**(OQ14 是用户拍板面,demo 未推翻);要改须回 battle.md 修 spec |
|
|
||||||
| **P-C5** | **胜利粒子两套**:demo=尘金 twinkle;现行=碎砖拼纹章(样张 v2 冻结批 T3 终稿+fx_probe 断言) | demo vs 已冻结演出 | **建议维持碎砖纹章**(冻结件+断言面);尘金可作加层共存,但须冻结批程序 |
|
|
||||||
| **P-C6** | **设置屏音效音量行**:demo 双滑杆;现行仅主音量。新增=SettingsStore 扩键+音频 bus 拆分=**核心面改动** | demo vs 核心面 | 呈现批**不摆此行**;如要做,另立核心小批(MC 对拍闸) |
|
|
||||||
| **P-C7** | **战报历史形态**:demo=就地抽屉;现行=点击开模态明细回看(settlement_review_overlay 已存在且有探针断言) | 抽屉 vs 模态回看 | **建议维持模态回看**(既有断言面+pattern 6 模态纪律);抽屉可作 dig 态增强另议 |
|
|
||||||
| **P-C8** | 弃图刷新余次:demo 收悬停;现行副行常驻 | 密度取舍 | 建议**维持常驻**(破坏性操作的代价提示就近=pattern 7 精神) |
|
|
||||||
| **P-C9** | **ui_kit.gd 单点撞车**:M0/M1/M10 都写 ui_kit.gd;若拆三批并行必撞 | 模块间 | 已按 §三处理:M0+M10 并批、M1 紧随串行;**禁止任何其他模块直写 ui_kit.gd**(新常量需求一律提给 M0 批) |
|
|
||||||
| **P-C10** | **main.gd 共享面**:M2(标题屏接线在 main.gd:288-300 消费返回值)与 M9(结算投影补喂)都可能碰 main.gd | M2 vs M9 | M2 保持返回值契约**零改 main.gd**;main.gd 由 M9 独占 |
|
|
||||||
| **P-C11** | 奖励节点图标与战斗图标第一眼近似(demo 审计留痕:可换礼盒剪影) | 资产换代 vs 冻结样张 v1 | 挂起——非阻塞;若换,走样张闸程序 |
|
|
||||||
| **P-C12** | 素材手工搬运:图标批在 worktree 执行时 `game/assets/art/` 不在 git,须从主区拷贝+import 重刷(坑册已有同类事故:T0 基线 FAIL 两起) | 环境差 | 每批 T0 基线段先核对素材在位再开工 |
|
|
||||||
|
|
||||||
## 六、落地顺序建议(供编排者参考)
|
|
||||||
|
|
||||||
1. **第一波(串行)**:M0+M10 → M1(合计 ≈1d,全局解锁)
|
|
||||||
2. **第二波(全并行)**:M2 / M3 / M5 / M6 / M7(P1 五模块,文件互斥)
|
|
||||||
3. **第三波(并行)**:M4 / M8 / M9(P2,挂拍板项按 §五裁决结果裁剪)
|
|
||||||
4. **裁决先行项**:P-C1~P-C8 建议在第二波开工前由用户一次性裁决(本计划 §五「裁决建议」列可直接勾选)
|
|
||||||
5. 每批闸:loop 规范轻闸(冒烟+ui_input_probe;presentation 批加 ui_click_probe+ui_layout_probe);纯呈现批 MC 零跑;批末目检对照 `artwork/ui-redesign-2026-10-04/preview/v2-*.png` 九张渲染图
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 七、裁决落定与计划修订(2026-10-04 用户逐项裁决——本节为 §五 冲突点的终局口径,与 §五 相抵触处**以本节为准**)
|
|
||||||
|
|
||||||
### 7.1 P-C 裁决对照表
|
|
||||||
|
|
||||||
| # | 终裁 | 落点 |
|
|
||||||
|---|---|---|
|
|
||||||
| **P-C1** | **C 区两段不撤,优化展示**——「本关强化」「流派件」保留(流派件段出处=2026-10-04 用户两次试玩反馈,原型 v2 的撤除系设计侧越权,已改正),紧凑单行数据牌 + 口径细节(「来源 ×2」「叠层」)收悬停 | M8⑦ 改写为「保留+紧凑化」 |
|
|
||||||
| **P-C2** | **商店刷新做**(Q2 二次裁修订):机制定稿=**基础免费 0 次 + GP 刷新 ceil(20×1.8^已付费刷) provisional + 池源同源(共享池,与三选一同账本)**;正式推翻关卡节点地图 v1.5「无独立刷新、重抽绑购买」。**天赋/营地侧刷新次数增益=用户既有意向,后续添加,实现面预留增益位**。落码=核心小批 **SR-1(商店刷新批)**(非呈现批) | 新增 SR-1(商店刷新批);M6 内只留图标钮+角标的呈现位(角标=天赋供给免费次数,现值 0) |
|
|
||||||
| **P-C3** | 默认案:保留节点文字标签;实装目检再评悬停化 | 维持 §五 建议 |
|
|
||||||
| **P-C4** | **失败结算奖励行维持整行隐藏**(OQ14「GP 总结归胜利侧」不推翻);demo 灰显方案废弃 | M9⑥ 维持现状(零改动) |
|
|
||||||
| **P-C5** | **两套都做+开关**:碎砖拼纹章(现行冻结)与尘金 twinkle 并存,设置/调试面加「胜利演出风格」切换 | M9⑦ 改写 |
|
|
||||||
| **P-C6** | **只有主音量**——demo 的「音效音量」行系原型发明,撤;不做 SettingsStore 扩键 | M4 范围缩(无核心面) |
|
|
||||||
| **P-C7** | **冒险中不给数据回看**:战报带=单行「上轮」(撤历史抽屉方案);settlement_review_overlay 与结算框「明细回看」钮退役;历史/明细查看归新「生涯」界面(未做,已登记 06-待办清单) | M8⑥ 改写为「退役批」;M9 删明细回看钮;06 新登记 |
|
|
||||||
| **P-C8** | 默认案:弃图刷新余次维持常驻副行 | 维持 §五 建议 |
|
|
||||||
| **P-C9/C10/C12** | 工程纪律条,维持 §五 原案 | 不变 |
|
|
||||||
| **P-C11** | 奖励节点礼盒剪影:挂起,非阻塞 | 不变 |
|
|
||||||
|
|
||||||
### 7.2 文档勘误(本计划 §一/§二 的过期快照)
|
|
||||||
|
|
||||||
1. §1.2⑥ 与 §二-⑥ 系三选一同构同步**前**的快照——现行 demo 三选一已有通栏顶条(标题+刷新图标钮+余量角标 1)+ svisit 同款入账信息条 + 底部仅「确认选择」;M7 范围以本节为准补齐同构件。6.1 卡尺寸 216×300 已过期(现行 232×352)。
|
|
||||||
2. §1.1 「手绘图标 12 枚」计数混乱——手绘 10 枚 + 游戏原生 4 枚(forge/workshop/atlas/keystone);§1.3 ×10 正确。
|
|
||||||
3. P-C2 原表述「demo 摆出」漏了来源:刷新钮系 **2026-10-04 用户本人提案**(右上角图标+余量),非设计侧自作主张。
|
|
||||||
|
|
||||||
### 7.3 新增核心小批 SR-1(商店刷新批) · 商店独立刷新机制
|
|
||||||
|
|
||||||
| 项 | 内容 |
|
|
||||||
|---|---|
|
|
||||||
| 性质 | **核心面小批**(非呈现批):shop_draw 抽签面 + runner 停点状态 + 共享池账本回写 + 断点附随件 shop_shelf 扩刷新态 |
|
|
||||||
| 机制 | 基础免费刷新 0 次(free_count = 天赋/营地增益位,首批恒 0——增益形态后续由用户调整添加);GP 刷新价 = ceil(20 × 1.8^已付费刷新数) provisional(读数批判读);刷新重抽=共享池同源(与三选一同账本,池空硬闸同款) |
|
|
||||||
| 文档回写 | 冒险结构 共享池账本节 + 关卡节点地图 商店节点行(v1.5→v1.6 换代)——随批落文 |
|
|
||||||
| 呈现接口 | M6 商店屏预留刷新钮位+余量角标(参数由 SR-1(商店刷新批) 投喂;未合并前 M6 摆占位 1) |
|
|
||||||
| 06 登记 | 「商店独立刷新机制——两参数待调参 + 机制文档回写」(GP 经济节) |
|
|
||||||
| 估时 | 0.5-1d(含文档回写) |
|
|
||||||
|
|
||||||
### 7.3-a 补充裁决 · 库存余量退役=本次执行(2026-10-04 二次裁)
|
|
||||||
|
|
||||||
用户令「库存余量本次就进行修改,不等到后续」——P-C2② 的「待裁」状态终结:**货架卡退役「库存余 N/∞」字样随 M6 落码执行**(数据层令牌库/stock_left 快照字段不动,仅呈现退役);关卡节点地图 v1.5 注记「库存余量就近」已换代为 v1.5-a「库存余量不呈现」注记(本批同文落籍)。shop_overlay_view 现行 144 行库存 label 的删除随 M6 整卡重写,不单独开微批。
|
|
||||||
|
|
||||||
### 7.4 新登记 · 「生涯」界面(06-待办清单已录)
|
|
||||||
|
|
||||||
冒险中回看的唯一承接处:跨局汇总 / 历史冒险回看 / 图鉴承接。**未设计未实装**;M8/M9 的回看退役落码后,玩家在生涯上线前暂时无历史查看入口(用户知情裁决)。
|
|
||||||
|
|
||||||
### 7.5 落地顺序修订(覆盖 §六)
|
|
||||||
|
|
||||||
1. 第一波(串行):M0+M10 → M1
|
|
||||||
2. 第二波(全并行):M2 / M3 / M5 / M6 / M7(M7 按 §7.1 补同构范围)
|
|
||||||
3. 第三波(并行):M4 / M8 / M9 + **SR-1(商店刷新批)**(核心小批,独立闸=冒烟+账本对拍)
|
|
||||||
4. 第三波后:用户目检对照 preview/v2-*.png;「胜利演出风格」开关摆设位由用户点名(设置屏 or 调试面板)
|
|
||||||
@@ -1,81 +0,0 @@
|
|||||||
# Alpha 验收清单 · 战斗屏(初稿)
|
|
||||||
|
|
||||||
> 状态:**初稿成文于循环 1(2026-09-26,战斗舞台 Node2D 迁移批 T0)**。本文件 = Alpha 验收批(三段式程序第三段)的销项底单;循环 1 只成文不销项,随批更新状态列。
|
|
||||||
> 来源拼装(六源):① `design/gdd/ux/battle.md` AC 与 §13 上游义务对照表 ② `design/gdd/systems/表现与支撑/HUD框架.md` 验收标准与基线表 ③ `design/art/art-bible.md` 美术判据(§1.4/§2/§4.5/§8)④ `design/gdd/07-体验验证清单.md` §⑨ 真人试玩指引 ⑤ `design/gdd/06-待办清单.md` 挂 Alpha 条目 ⑥ 工程回归面(冒烟/五探针/文档三闸/MC)。
|
|
||||||
> 验法分档:**[headless]** = 场景探针或脚本可自动判定;**[真机渲染]** = 开窗口跑游戏读日志/截图测量(draw calls、灰度、帧率类,agent 可窗口化自动测大半);**[人]** = 用户目检或真人试玩,agent 只备料。
|
|
||||||
> 数值带(ap6-ac 阶段二压力验收)**不在本清单**——归调参批(2026-09-26 裁决⑦)。
|
|
||||||
|
|
||||||
## A. 布局与性能(源② + 源①)
|
|
||||||
|
|
||||||
| # | 判据 | 验法 | 状态 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| A1 | 三区无遮挡、无重叠、无内容裁切(棋盘全部格子与数字完整可见);分区尺寸与 battle.md 布局表一致 | [headless] ui_layout_probe + [人] 双分辨率目检 | 待验收 |
|
|
||||||
| A2 | 1280×800 与 1920×1080 两档均成立(1920 档换算值表现层升级批成文后此项才可销) | [人] 全屏目检两档 | 待验收(1920 档参数未成文) |
|
|
||||||
| A3 | 同屏 draw calls < 200 | [真机渲染] RenderingServer 调试读数(迁移批 T7 附首读数) | 待测(基线读数见循环 1 T7 交付) |
|
|
||||||
| A4 | 进入战斗屏 500ms 内首格可点 | [headless] ui_click_probe 首格可点计时 AC | 待验收 |
|
|
||||||
| A5 | B 区战斗舞台 = Node2D 舞台半区 + Control 文本半区(ADR-0006 分工表);站桩载体 Button/GridContainer/HBox 计数 = 0 | [headless] 场景树 dump 取证探针(迁移批 T5① 已实证 PASS——探针按台账 152 先例跑完即删,复跑件归呈现层测试分级批周期化时重建) | **已实证(循环 1 T5,2026-09-26)——周期化复跑件待建** |
|
|
||||||
|
|
||||||
## B. 可读性与色彩(源②基线表 + 源③)
|
|
||||||
|
|
||||||
| # | 判据 | 验法 | 状态 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| B1 | 全部数字对格底对比 ≥4.5:1 | [真机渲染] 截图采样明度计算 | 待验收 |
|
|
||||||
| B2 | 已开/未开格态灰度截图下可逐格分类;变异格纹带灰度可辨 | [真机渲染] 灰度转换截图 + 逐格分类脚本 | 待验收 |
|
|
||||||
| B3 | 无信息仅靠色相承载(色弱安全,art-bible §4.5 清单) | [真机渲染] 灰度截图复核 + [人] 抽检 | 待验收 |
|
|
||||||
| B4 | 字号下限:棋盘数字 ≥18px、明细正文 ≥14px、tooltip ≥13px(1280×800 基座) | [headless] 布局探针读值 | 待验收 |
|
|
||||||
| B5 | 中文字体随包内置并设默认,运行时中文渲染无缺字 | [headless] 注入字体非空 + has_char + 宽度 >0(C6 判据)+ [人] 目检光栅 | 待验收(当前=引擎回退字体,CJK 随包未落) |
|
|
||||||
| B6 | 按钮文案 ≤4 汉字宽度;译西文不破版 | [人] 目检 | 待验收(本地化专项前置) |
|
|
||||||
|
|
||||||
## C. 呈现义务(源① AC + 源② 验收标准)
|
|
||||||
|
|
||||||
| # | 判据 | 验法 | 状态 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| C1 | 悬停光标三语义(移动/挖/旗)随目标切换并高亮目标格;悬停已开格画合法路径;可挖域常驻呼吸微光 | [headless] ui_input_probe case①②③ | 待验收 |
|
|
||||||
| C2 | 一帧内意图整批到达,停手点击终结当帧收集;每次拒绝可感知(棋盘/资源/相位三面,前两类可区分;双通道反馈) | [headless] ui_probe 拒绝面断言 + [人] 目检 | 待验收 |
|
|
||||||
| C3 | 敌人站桩呈现:意图占位(普攻零表示/特殊技类型级提示,不预告名与数值)且挖掘期全程可见、映射跨局恒定、顺位可读、血量可读、敌方共享层数各立绘同值 | [headless] ui_probe 站桩断言 + [人] 目检 | 待验收 |
|
|
||||||
| C4 | 死亡灰化加碎裂退场(禁瞬消)且就地更新不丢灰化态 | [headless] 探针灰化态断言 + [人] 目检节奏 | 待验收 |
|
|
||||||
| C5 | 受击闪白、血条直角递减、结算弹道落点贴站桩中心 | [headless] 等价探针 + [人] 目检 | 待验收 |
|
|
||||||
| C6 | 状态槽:图标+层数+剩余结算次数,悬停见来源+语义+剩余;空态整排隐藏;战斗结束全清有微文案 | [headless] ui_probe BUG-0001 回归段 + ui_click_probe tooltip 段 + [人] 目检 | 待验收 |
|
|
||||||
| C7 | 结算逐行实时滚出带来源标注;未生效类行聚合计数带形状冗余;零值行不吞;高光三档不打空兑现 | [headless] ui_probe 结算段 + [人] 目检 | 待验收 |
|
|
||||||
| C8 | 终局:胜利金蜡封、失败暮蓝氛围层(明度不变);两反馈不合并、时序不倒挂 | [headless] 探针 + [人] 目检 | 待验收 |
|
|
||||||
| C9 | 任一模态打开时遮挡物隐藏或输入锁定、关闭逐层恢复;tooltip/明细行固定槽高不推挤布局 | [headless] ui_click_probe 回看段 | 待验收 |
|
|
||||||
| C10 | 终局呈现只消费流水与快照(零生命周期回读);重放渲染与实时渲染一致;载荷逐字段断言 | [headless] MC/冒烟既有断言 | 待验收 |
|
|
||||||
|
|
||||||
## D. 可访问性与输入(源②基线表)
|
|
||||||
|
|
||||||
| # | 判据 | 验法 | 状态 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| D1 | 无每秒超三次闪烁 | [真机渲染] 帧序列采样 | 待验收 |
|
|
||||||
| D2 | 减动效开关:时长减半或跳终态(结算兑现可加速不可跳过) | [headless] 开关态探针 + [人] 目检 | 待验收(开关本身未立项,先挂起) |
|
|
||||||
| D3 | 全程纯鼠标可玩 | [headless] ui_click_probe 全链 | 待验收 |
|
|
||||||
| D4 | 切片临时名零残留;呈现层零随机调用 | [headless] static_scan + grep | 待验收 |
|
|
||||||
|
|
||||||
## E. 真人试玩面(源④ 07§⑨ + 源① OQ)
|
|
||||||
|
|
||||||
| # | 判据 | 验法 | 状态 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| E1 | 照 07§⑨ 指引真人试玩 3–5 局(零天赋基线档),局中体感对号 ①–⑧ 观测项,局后一句话记录 | [人] 用户一次真人试玩(裁决⑦) | 待验收 |
|
|
||||||
| E2 | 样张 v1 终审(视觉语言冻结为换皮批输入) | [人] 用户看图 | 循环 1 异步触点,不阻塞 |
|
|
||||||
| E3 | 表现遗留收口复核(循环 2 交付后):敌人立绘/接触带微光/封印特效/原型件退役/C 区美化 | [人] 目检 + [headless] 回归闸 | 待循环 2 |
|
|
||||||
|
|
||||||
## F. 工程回归面(源⑥,每批常态闸)
|
|
||||||
|
|
||||||
| # | 判据 | 验法 | 状态 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| F1 | run_smoke 全绿(当轮基线零失败) | [headless] `python tools/run_smoke.py` | 循环 1 基线 557/0 绿,迁移批 T0–T5 每轮复跑全绿(2026-09-26) |
|
|
||||||
| F2 | 五探针全绿:ui_probe / ui_click_probe(SEED=7) / ui_layout_probe / ui_tune_probe / ui_input_probe 十一断言 | [headless] 场景探针 | 循环 1 基线全绿;迁移批每轮复跑全绿(ui_probe 敌站桩断言已随批等价改写为本体探针出口——台账 171) |
|
|
||||||
| F3 | 文档三闸对基线零新增 | [headless] doc_link_audit / doc_term_audit / gdd_lint 对基线快照 diff | 循环 1 基线已存档 |
|
|
||||||
| F4 | MC 12 局 RUNSUM 与基线逐位一致(核心层零漂移证据) | [headless] adventure_monte_carlo | 循环 1 基线采集于 T0(24 行 RUNSUM 存档),T7 对拍 |
|
|
||||||
|
|
||||||
## G. 源⑤ 06 挂 Alpha 条目涉战斗屏者(销项时逐条对表)
|
|
||||||
|
|
||||||
- Alpha:全怪物技能池数值验证与合理性设计(归难度曲线与 Boss 主责,非本清单销项——录以备查)。
|
|
||||||
- 雷格与安全格的资源分布差异化(Alpha 批,结构修订)——非战斗屏呈现面,录以备查。
|
|
||||||
- 表现层测试分级与 UI 驱动夹具周期化(06 台账 160-164 批登记)——夹具周期化落地时本清单 A5 取证件转正式回归件。
|
|
||||||
|
|
||||||
## 修订记录
|
|
||||||
|
|
||||||
| 日期 | 改动 |
|
|
||||||
|---|---|
|
|
||||||
| 2026-09-26 | 初稿成文(循环 1 T0,六源拼装;销项归 Alpha 验收批) |
|
|
||||||
| 2026-09-26 | T5/T6 状态列更新(A5 已实证/ F1、F2 迁移批全绿注记/F4 待 T7 对拍;B 区站桩断言改判注记) |
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
# 方案甲·高墙瓦片词表与查表逻辑(2026-09-26 定稿)
|
|
||||||
|
|
||||||
> 接线批(BoardWorld 查表合成器)的输入规格。定稿资产=`game/assets/art/board/terrain_*_dungeon.png` 21 枚。
|
|
||||||
> 规范侧:art-bible §3.2「高墙瓦片体系」/§8.5「生产分工」(v2.9)。
|
|
||||||
|
|
||||||
## 一、唯一件词表(16 墙瓦片 + 5 地面瓦片)
|
|
||||||
|
|
||||||
| 文件(terrain_ 前缀,均 _dungeon 后缀) | 邻接情形(n/e/s/w=True=邻格是墙) |
|
|
||||||
|---|---|
|
|
||||||
| wall_center | 四周皆墙(满格岩石顶面) |
|
|
||||||
| wall_center_crack / wall_center_speckle | 中心砖纹理变体(裂纹集/碎石斑;破平铺重复,分配 60/20/20) |
|
|
||||||
| wall_n | 北缘(上方地板):墨线+1px 微亮棱 |
|
|
||||||
| wall_s | 南缘(下方地板):墨线+立面窄暗条(约 1/3 格高) |
|
|
||||||
| wall_w | 西缘(左方地板):墨线;**东缘=水平镜像** |
|
|
||||||
| wall_nw | 凸角(上+左地板) |
|
|
||||||
| wall_sw | 凸角(下+左地板) |
|
|
||||||
| wall_hrun | 横条带中段(上下地板):顶微亮棱+底立面条 |
|
|
||||||
| wall_vrun | 竖条带中段(左右地板):双侧墨线 |
|
|
||||||
| wall_end_n | 端头(北向死头,南连墙):三向收缘 |
|
|
||||||
| wall_end_s | 端头(南连地板,北连墙):双侧缘+底暗条 |
|
|
||||||
| wall_end_w | 端头(左收缘,东连墙) |
|
|
||||||
| wall_lone | 孤立块(四周地板):四向收缘+底暗条 |
|
|
||||||
| wall_in_nw | 内凹角(西北对角是地板):角点单像素落线 |
|
|
||||||
| wall_in_sw | 内凹角(西南对角是地板):角点+立面侧 1px 齐平收头 |
|
|
||||||
| floor_1..5 | 地面瓦片 5 随机变体(明显暗于墙顶;按格坐标哈希分配) |
|
|
||||||
|
|
||||||
## 二、运行时镜像(flip_h,禁旋转——北受光不受损)
|
|
||||||
|
|
||||||
`wall_e←wall_w`、`wall_ne←wall_nw`、`wall_se←wall_sw`、`wall_end_e←wall_end_w`、`wall_in_ne←wall_in_nw`、`wall_in_se←wall_in_sw`。镜像件不出文件。
|
|
||||||
|
|
||||||
## 三、查表逻辑
|
|
||||||
|
|
||||||
1. 墙格取四邻(n/e/s/w)是否墙 → 16 正交情形映射(上表);板外视为墙。
|
|
||||||
2. 四邻皆墙时查对角:**双凹角不做专件**——多对角地板时回落单凹角,优先级 nw>ne>sw>se(v3 用户裁定:双凹角仅对角阶梯缺口出现,极罕见,残留 1px 缝可接受)。
|
|
||||||
3. 中心砖三变体按格坐标哈希分配(60/20/20),地板 5 变体同法——**初始化随机落定,禁逐轮重掷**(圣经原则三)。
|
|
||||||
|
|
||||||
## 四、雷坑与覆盖层
|
|
||||||
|
|
||||||
- 雷格已开态**不在本套**——后续独立贴图层承载(v3 用户裁定;旧 beast-cave 坑砖已于 2026-09-26 随旧砖清理删除,雷格贴图层自产)。
|
|
||||||
- 覆盖层留白:墙瓦片给类型角嵌纹样+封印旗让位;地面瓦片中央给数字色牌让位(圣经 §1.2 优先级栈)。
|
|
||||||
|
|
||||||
## 五、已知限制(接线时知悉)
|
|
||||||
|
|
||||||
1. 相邻成对双凹角(如 nw+ne)无专件,回落单件,角点自连不破闭合。
|
|
||||||
2. 每变体单一贴图,大面积墙群有平铺重复感——可加 texture 变体(生成器 tex_idx 参数已留)。
|
|
||||||
3. 非 center 基底+对角地板的混合情形(如北开缘+东南对角地板)凹角缺落点——22/47-blob 词表固有,升级 47-blob 另议。
|
|
||||||
4. underdark/deep_underdark 换色=AI 纹理色调映射,方案随换色批定(生成器 PALETTES 色槽表已备程序侧三色)。
|
|
||||||
|
|
||||||
## 六、生成器
|
|
||||||
|
|
||||||
`归档-terrain-walls-2026-09-26.zip` 内 `_tools/gen_terrain_walls.py`(参数化:色槽表/纹理相位/边缘常量;确定性种子可复现;换色批/微调先解包)。
|
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -1,73 +0,0 @@
|
|||||||
{
|
|
||||||
"schema_version": 1,
|
|
||||||
"diagram_type": "architecture",
|
|
||||||
"meta": {
|
|
||||||
"title": "Dungeon Sweeper game/ 架构(系统级)",
|
|
||||||
"locale": "zh-CN",
|
|
||||||
"output": "game-architecture-2026-10-05.html",
|
|
||||||
"quality_profile": "showcase",
|
|
||||||
"viewBox": [1130, 650],
|
|
||||||
"views": [
|
|
||||||
{ "id": "main-loop", "label": "主循环路径", "focus": ["main-root", "adventure-loop", "battle-domain", "board-mines"], "note": "组合根装配冒险循环,AdventureRunner 逐关推进,关卡内开战进入战斗枢纽与棋盘扫雷。" },
|
|
||||||
{ "id": "battle-hub", "label": "战斗枢纽", "focus": ["battle-domain", "board-mines", "reward-econ", "item-domain", "rng-service"], "note": "battle_orchestrator 是边最多的域:棋盘生成、扫雷判定、伤害结算、奖励抽取、道具消费、随机掷点。" },
|
|
||||||
{ "id": "data-path", "label": "数据通路", "focus": ["config-db", "data-tables", "meta-save", "adventure-loop"], "note": "ConfigDB autoload 单点加载 18 组数值表;组合根注入 db,元进度与存档经同一条配置通路。" }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"components": [
|
|
||||||
{ "id": "main-root", "type": "frontend", "label": "组合根 main.tscn", "sublabel": "main.gd — 装配·分派·转发", "tag": "入口场景", "pos": [30, 70], "size": [180, 110] },
|
|
||||||
{ "id": "presenters", "type": "frontend", "label": "呈现器簇", "sublabel": "hud_presenter 等 11 件", "pos": [250, 70], "size": [180, 110] },
|
|
||||||
{ "id": "views-board", "type": "frontend", "label": "棋盘 · 舞台视图", "sublabel": "board_view 等 9 件", "pos": [470, 70], "size": [180, 110] },
|
|
||||||
{ "id": "views-screen", "type": "frontend", "label": "屏幕 · 弹窗 · HUD", "sublabel": "level_map_screen 等 17 件", "pos": [690, 70], "size": [180, 110] },
|
|
||||||
{ "id": "debug-cluster", "type": "frontend", "label": "调试 · 模拟簇", "sublabel": "debug_session 等 4 件", "tag": "DS_DEBUG 门控", "pos": [910, 70], "size": [180, 110] },
|
|
||||||
|
|
||||||
{ "id": "config-db", "type": "database", "label": "配置服务 ConfigDB", "sublabel": "config_db — 表单点入口", "tag": "autoload", "pos": [30, 265], "size": [190, 120] },
|
|
||||||
{ "id": "adventure-loop", "type": "backend", "label": "冒险循环域", "sublabel": "adventure_runner 等 3 件", "pos": [260, 255], "size": [180, 140] },
|
|
||||||
{ "id": "battle-domain", "type": "backend", "label": "战斗域", "sublabel": "battle_orchestrator 等 5 件", "tag": "边最多枢纽", "pos": [490, 255], "size": [210, 150] },
|
|
||||||
{ "id": "rng-service", "type": "backend", "label": "随机服务 RngService", "sublabel": "rng_service — 全局随机", "tag": "autoload", "pos": [760, 275], "size": [180, 100] },
|
|
||||||
|
|
||||||
{ "id": "data-tables", "type": "database", "label": "数值表层", "sublabel": "schemas ×18 · .tres ×18", "pos": [30, 500], "size": [190, 110] },
|
|
||||||
{ "id": "item-domain", "type": "backend", "label": "道具 · 奇物 · 同调域", "sublabel": "relics_engine 等 3 件", "pos": [260, 490], "size": [180, 140] },
|
|
||||||
{ "id": "meta-save", "type": "backend", "label": "元进度 · 存档域", "sublabel": "meta_progression · save_manager", "pos": [470, 490], "size": [200, 140] },
|
|
||||||
{ "id": "board-mines", "type": "backend", "label": "棋盘 · 扫雷域", "sublabel": "board_data 等 3 件", "pos": [700, 490], "size": [190, 140] },
|
|
||||||
{ "id": "reward-econ", "type": "backend", "label": "奖励经济域", "sublabel": "reward_economy 等 2 件", "pos": [930, 500], "size": [170, 130] }
|
|
||||||
],
|
|
||||||
"boundaries": [
|
|
||||||
{ "kind": "region", "label": "presentation/ 呈现层", "wraps": ["main-root", "presenters", "views-board", "views-screen", "debug-cluster"] },
|
|
||||||
{ "kind": "region", "label": "core/ 全局服务(autoload)", "wraps": ["config-db", "rng-service"] },
|
|
||||||
{ "kind": "region", "label": "core/ 玩法域", "wraps": ["adventure-loop", "battle-domain", "item-domain", "meta-save", "board-mines", "reward-econ"] },
|
|
||||||
{ "kind": "region", "label": "data/ 数据层", "wraps": ["data-tables"] }
|
|
||||||
],
|
|
||||||
"connections": [
|
|
||||||
{ "id": "main-to-presenters", "from": "main-root", "to": "presenters", "label": "装配" },
|
|
||||||
{ "id": "presenters-to-views-board", "from": "presenters", "to": "views-board" },
|
|
||||||
{ "id": "presenters-to-views-screen", "from": "presenters", "to": "views-screen", "fromSide": "top", "toSide": "top" },
|
|
||||||
{ "id": "main-to-adventure", "from": "main-root", "to": "adventure-loop", "label": "冒险编排 · 注入 db/rng", "variant": "emphasis", "labelDy": -20 },
|
|
||||||
{ "id": "main-to-configdb", "from": "main-root", "to": "config-db", "label": "组合根引用", "fromSide": "bottom", "toSide": "top", "labelDy": 24 },
|
|
||||||
{ "id": "adventure-to-configdb", "from": "adventure-loop", "to": "config-db", "label": "读表", "labelDy": 26 },
|
|
||||||
{ "id": "adventure-to-battle", "from": "adventure-loop", "to": "battle-domain", "label": "开战" },
|
|
||||||
{ "id": "battle-to-rng", "from": "battle-domain", "to": "rng-service", "label": "掷点" },
|
|
||||||
{ "id": "battle-to-mines", "from": "battle-domain", "to": "board-mines", "label": "棋盘 · 扫雷", "fromSide": "bottom", "toSide": "top" },
|
|
||||||
{ "id": "battle-to-items", "from": "battle-domain", "to": "item-domain", "label": "伤害 / 掉落" },
|
|
||||||
{ "id": "battle-to-reward", "from": "battle-domain", "to": "reward-econ", "label": "结算 · 奖励抽取", "fromSide": "bottom", "toSide": "top", "labelDy": -14, "labelDx": -110 },
|
|
||||||
{ "id": "adventure-to-items", "from": "adventure-loop", "to": "item-domain", "label": "奇物 / 同调", "labelDy": 30 },
|
|
||||||
{ "id": "items-to-meta", "from": "item-domain", "to": "meta-save", "label": "落档", "labelDy": 24 },
|
|
||||||
{ "id": "configdb-to-tables", "from": "config-db", "to": "data-tables", "label": "加载 .tres", "labelDy": 30 }
|
|
||||||
],
|
|
||||||
"cards": [
|
|
||||||
{ "dot": "cyan", "title": "呈现层 presentation/", "items": [
|
|
||||||
"组合根装配呈现器并转发信号",
|
|
||||||
"ui_assembler 落地 26 件视图",
|
|
||||||
"调试簇挂 DS_DEBUG 门控接线"
|
|
||||||
] },
|
|
||||||
{ "dot": "emerald", "title": "规则引擎 core/", "items": [
|
|
||||||
"冒险循环是唯一试玩入口",
|
|
||||||
"战斗域边最多,向四域出边",
|
|
||||||
"道具域三侧消费,同调落存档"
|
|
||||||
] },
|
|
||||||
{ "dot": "rose", "title": "数据与全局服务", "items": [
|
|
||||||
"ConfigDB autoload 表单点入口",
|
|
||||||
"组合根统一注入 db 与 RngService",
|
|
||||||
"依赖走构造器注入,禁绕过单点"
|
|
||||||
] }
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
# 概念原型报告:扫雷 × 自动战斗
|
|
||||||
|
|
||||||
- **原型位置**:`prototypes/minesweeper-battle-concept/`(Godot 4.x,Engine 路径)
|
|
||||||
- **日期**:2026-09-06 · 迭代 v1 → v3
|
|
||||||
- **可证伪假设**:如果玩家通过扫雷决策为自动战斗获取道具,他们会感受到"每一步排雷都在影响战斗结果"的策略联动感。(验证信号:扫雷阶段主动规划目标;主动想进入下一轮)
|
|
||||||
|
|
||||||
## 假设判定:CONFIRMED(核心) / 部分确认(表现层)
|
|
||||||
|
|
||||||
用户(唯一测试者)在 v2 后反馈:"**目前整体轮次的玩法是没有问题的**",且确认小人边缘探索"更像地牢探险,氛围上 OK"。三层联动(挖雷→攒道具→结算兑现)作为循环骨架被接受并持续投入迭代——没有出现"战斗是过场"的否定信号。表现层(逐行结算文字)被判定"无所谓"(正式版将替换为战斗动画),兑现的**情绪强化**仍有待战斗动画验证。
|
|
||||||
|
|
||||||
## 迭代记录
|
|
||||||
|
|
||||||
| 版本 | 内容 | 用户反馈 |
|
|
||||||
|---|---|---|
|
|
||||||
| v1 | 全图点击挖雷,AP 12,逐格即时奖励 | AP 太多;想要小人控制;开/未开格难分辨;结算应统一画面而非即时生效 |
|
|
||||||
| v2 | 小人控制(参考 MS Minesweeper Adventure 模式)、初始 3×3 安全区、AP 8、统一战斗结算画面、色块区分 | 地牢氛围 OK;结算画面无所谓(正式版上战斗动画);**整体轮次玩法没有问题** |
|
|
||||||
| v3 | 行动经济统一(插旗 1AP+1旗)、标雷判定(标中+5 拆弹奖励/标错无惩罚)、修延续图旗子重置 bug | 待终验 |
|
|
||||||
|
|
||||||
## 最好时刻
|
|
||||||
|
|
||||||
小人控制上线后循环"活"了:从"选格子"变成"走位规划",挖/旗被锁定在小人相邻——位置本身成为资源(用户认可地牢探险感)。
|
|
||||||
|
|
||||||
## 最糟时刻 / 已修复问题
|
|
||||||
|
|
||||||
- v1 的 12 AP 节奏拖沓 → v2 降到 8 并引入走位成本
|
|
||||||
- v1 奖励即时生效导致"点一格就像结算一次" → v2 改为统一入库、轮末结算
|
|
||||||
- v3 前的 bug:延续图上旗子未随轮次重置(旗子资源凭空变多)→ 已修
|
|
||||||
|
|
||||||
## 意外发现
|
|
||||||
|
|
||||||
- 标雷判定把"插旗"从记账动作变成了**赌注式动作**——风险与收益同源原则(P3)的雏形在测试中自然浮现
|
|
||||||
- 用户主动要求的"小人控制"与 Microsoft Minesweeper Adventure 模式高度吻合,验证了参考方向的合理性
|
|
||||||
|
|
||||||
## 遗留验证点(下阶段处理,不阻塞 PROCEED)
|
|
||||||
|
|
||||||
1. 标雷"赌注式动作"的实际使用率与手感(v3 终验)
|
|
||||||
2. 标错惩罚是否需要(候选方案已登记,A2 GDD 前用小补丁实测)
|
|
||||||
3. 停手折算比例(×2)的数值合理性(A3 GDD 定稿)
|
|
||||||
4. 兑现的情绪强化(战斗动画)——垂直切片的 B5 验证
|
|
||||||
|
|
||||||
## Verdict: **PROCEED**
|
|
||||||
|
|
||||||
核心假设成立:扫雷决策与战斗结果的联动被测试者确认,循环骨架定稿并全部落入系统索引。下一步进入正式系统设计(GDD),用原型结论作为 Tuning Knobs 素材。
|
|
||||||
|
|
||||||
**PIVOT 记录**:无 PIVOT 链。原型代码不进生产(生产实现按 GDD 从零写,原型仅作参数与规则参考)。
|
|
||||||
@@ -1,178 +0,0 @@
|
|||||||
# 调研报告:Roguelike 难度类型基准与伤害模型悬崖(数值修正前期调研)
|
|
||||||
|
|
||||||
> 日期:2026-10-01 · 触发:M-3 数值修正立项前调研(白板首局全通 78.5% 越带 + 普通/完美档 78.5pp 胜率悬崖)
|
|
||||||
> 内部数据锚点:模拟档白板完美执行战役全通 **78.5%**;普通档 L1 **13%**、战役 **0%**;输入差 ≈ 每关多踩 **2 雷**(直伤 6–8/雷)(来源:本方模拟器实测,见 sim-data 与 `perfect-l1-lever-proposal-2026-09-29.md`)
|
|
||||||
> **可信度四级**:【官方统计】=Steam 官方成就页;【官方机制】=游戏数值可游戏内验证的 wiki(社区维护但逐条可查);【开发者一手】=开发者访谈/演讲/著作;【社区共识】=高可信社区估算;【推测】=本报告基于基准的推断,无直接出处。
|
|
||||||
|
|
||||||
## 摘要
|
|
||||||
|
|
||||||
1. 类型基准明确反对「白板完美执行 = 78.5% 全通」:杀戮尖塔 1800 万局统计的每局胜率约 **9%**,FTL 普通难度通关成就仅占全体玩家 **9.5%**——白板首局个位数胜率是类型常态。
|
|
||||||
2. 78.5pp 悬崖的机理是「伤害预算贴 EHP 阈值 + 零方差单轴直伤 + 无回复经济」三者叠加,把 ~30% EHP 的输入差放大成全或无;类型内成熟解法是**方差化、回复经济、多缓解轴、EHP 缓冲带**四件套(StS/Hades 均有实例)。
|
|
||||||
3. 「正确」可验收定义(§3.2):白板首局带 [0,10%]、白板 L1 带 [50,85%]、满局外成长带 [30,60%]、响应曲线每雷边际 ≤15pp 且呈 S 形连续。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §一 问题一:roguelike 类型基准(出发点的正确建模)
|
|
||||||
|
|
||||||
### 1.1 官方成就统计数据表
|
|
||||||
|
|
||||||
口径警示:Steam 成就百分比的分母是**全体拥有者**(含买而不玩者),数值系统性偏低;与我们的模拟胜率直接可比的是「每局胜率」口径(表下半)。除特别注明外均为【官方统计】。
|
|
||||||
|
|
||||||
| 游戏 | 指标 | 数值 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 杀戮尖塔 | 击败 Act1 Boss(4 角色成就,如 Guardian/Hexaghost) | 81.7–85.1%(全体玩家) | [S1] SteamDB 镜像(本方未直接核验,Steam 官方页超时) |
|
|
||||||
| 杀戮尖塔 | 用铁甲战士通关全战役(Ruby) | 56.6%(全体玩家) | [S2] Steam 官方 |
|
|
||||||
| 杀戮尖塔 | 解锁 Ascension(=至少通关一次) | 66.7%(全体玩家) | [S2] |
|
|
||||||
| 杀戮尖塔 | Ascension 10 / Ascension 20 达成 | 14.8% / 7.3%(全体玩家) | [S2] |
|
|
||||||
| Hades | 「复工」成就(首次击败最终 Boss 后解锁,另需钻石购买工作许可→实际首通率 ≥ 此值) | 34.8%(全体玩家) | [S3][S4] |
|
|
||||||
| Hades | 极乐净土 + 极端措施契约通关(高难检查点) | 13.5%(全体玩家) | [S3] |
|
|
||||||
| Hades | 倪克斯之镜全部天赋至少 1 级(局外成长深度) | 11.8%(全体玩家) | [S3] |
|
|
||||||
| FTL | 到达第 5 / 第 8 星区 | 43.2% / 37.5%(全体玩家) | [S5] |
|
|
||||||
| FTL | 击败最终旗舰:简单 / 普通 | 25.5% / 9.5%(全体玩家) | [S5] |
|
|
||||||
| 以撒:重生 | 击败终局 Boss Delirium(Lil Delirium)/ Ultra Hard | 28.8% / 28.8%(全体玩家,经检索转述) | [S6] |
|
|
||||||
| 死亡细胞 | 到达第二地图(≈「玩过游戏」覆盖上限) | 92.4%(全体玩家) | [S7] |
|
|
||||||
| 死亡细胞 | 击败首个 Boss 看守者 / 到达王座之间 / 首次击败国王之手(BC0 通关) | 72.9% / 48.3% / 40.6%(全体玩家) | [S7] |
|
|
||||||
| 死亡细胞 | 4 细胞难度下击败国王之手(=拿到第 5 细胞,近终局) | 6.8%(全体玩家) | [S7] |
|
|
||||||
|
|
||||||
每局胜率与首通分布(与模拟胜率同口径):
|
|
||||||
|
|
||||||
| 游戏 | 指标 | 数值 | 等级 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 杀戮尖塔 | 每局胜率(2020 年 1800 万局,占全部 7500 万局的样本) | **≈9%**(160 万胜局);平均胜局 64 分钟 / 平均败局 23 分钟 | 【社区分析】基于官方运行数据 [S8] |
|
|
||||||
| 杀戮尖塔 | 胜率-层数曲线在第 17/34 层(两处幕 Boss 检查点)出现**断层**;Ascension 0 玩家胜率线低于 A1–20 | 定性(图表) | 【社区分析】[S8] |
|
|
||||||
| FTL | 普通难度每局通关率(以成就近似) | ~10% 量级 | 【官方统计】[S5] |
|
|
||||||
| Hades | 首通(首次逃离)局数 | 社区估算均值 ~30–53 局,方差极大(<10 到 100+) | 【社区共识】[S9];官方未公布首通统计,明说不确定 |
|
|
||||||
|
|
||||||
未证实项(按任务要求明说):
|
|
||||||
- 任务背景中「StS 第一关 Boss 通过率 ~89%」**未找到一手出处**。最接近的官方口径是 SteamDB 镜像的 Act1 Boss 击杀成就 81.7–85.1%(全体玩家,非条件通过率)[S1]。
|
|
||||||
- 「Hades 设计上首局必死」:未找到官方逐字表述。可证实的官方事实是 God Mode 按死亡次数渐近减伤(见 1.3)与首局作为叙事教程的社区解读 [S10][S9]——此点标注为【社区共识】,非官方声明。
|
|
||||||
- 「FTL 首通 10–50+ 局」无一手统计;可用替代口径是普通难度旗舰成就 9.5%(全体玩家)[S5]。
|
|
||||||
- 「以撒/死亡细胞最终 Boss 成就 10–20%」:实测口径为以撒 Delirium 28.8%、死亡细胞 5 细胞 6.8%(全体玩家)[S6][S7],与该说法同量级但不精确相等。
|
|
||||||
|
|
||||||
### 1.2 类型设计惯例:难度目标函数怎么建模
|
|
||||||
|
|
||||||
三条已核实的「局外成长/难度阶梯」曲线形状:
|
|
||||||
|
|
||||||
1. **杀戮尖塔 Ascension 阶梯(细粒度小步)**:20 级,通关上一级解锁下一级,每级叠加 1–2 项小修正(官方描述为逐级累加的挑战修正)【官方机制】[S11]。官方成就显示 A10→A20 达成率 14.8%→7.3%,平滑衰减无悬崖 [S2]。
|
|
||||||
2. **死亡细胞 Boss Stem Cells(粗粒度但多轴复合)**:共 5 级,每级需用上一级难度击败最终 Boss 才解锁;每级同时调整**多根轴**——敌人侦测距离、回复经济(1BC 泉水隔房→2BC 取消泉水→3BC 仅 3 瓶→4BC 零瓶)、物品等级与内容解锁【官方机制】[S12]。官方成就显示 BC0 通关 40.6% → 5BC 6.8% [S7]。
|
|
||||||
3. **Hades 双向开通(成长朝上 + 难度上限朝上)**:
|
|
||||||
- 局外成长(倪克斯之镜):黑暗货币换永久生存加成——厚实皮肤 +50 HP(10 级)、死亡豁免 3 层(致死时保留 50% HP 再战)、冥河活力每房 +3 HP;全镜解锁需 35,365 黑暗(数十小时节奏)【官方机制】[S13]。
|
|
||||||
- 局内难度上探(惩罚契约/极端措施):13.5% 全体玩家达成「极端措施×极乐净土」[S3]。
|
|
||||||
- 官方无障碍阀:God Mode 起步 20% 减伤、每死 +2%、上限 80%——**按死亡次数渐近平滑难度**,可随时开关【官方机制】[S10]。
|
|
||||||
|
|
||||||
开发者一手佐证(设计意图面):FTL 的 GDC 演讲《Designing Without a Pitch: FTL Postmortem》与 Roguelike Radio #56 访谈讨论了 permadeath/资源紧张作为核心设计【开发者一手】[S14][S15]。教材面:Schreiber & Romero《Game Balance》(CRC 2021)第八章「Transitive Mechanics and Cost Curves」给出把多维战斗力折算为单一成本曲线再对齐难度的方法论【开发者一手(著作)】[S16][S17]。
|
|
||||||
|
|
||||||
### 1.3 结论面:30–60 分钟三关卡短局 roguelike 的「符合类型」区间
|
|
||||||
|
|
||||||
综合上表,各档位通过率的类型区间如下(区间本身为【推测】,锚点全部来自上表官方/高可信数据):
|
|
||||||
|
|
||||||
| 档位 | 符合类型的区间 | 类型锚点 |
|
|
||||||
|---|---|---|
|
|
||||||
| 白板(零局外加成)首局战役全通率 | **0–10%** | StS 每局 9%[S8]、FTL 普通旗舰 9.5%[S5] |
|
|
||||||
| 白板第一关通过率(新手首次尝试) | **50–85%** | StS Act1 Boss 击杀 81.7–85.1%[S1]、DC 首 Boss 72.9%[S7]——首关是过滤器不是墙 |
|
|
||||||
| 局外成长承接后战役最终通关率 | **30–60%** | Hades「复工」≥34.8%[S3]、DC BC0 通关 40.6%[S7]、StS 单角色通关 56.6%[S2](均为全体玩家最终达成口径) |
|
|
||||||
| 白板首局带 → 满成长带的跨度 | 5–10 倍空间,由局外成长+局内构筑共同爬升 | Hades 镜子全解锁 35,365 黑暗的时长节奏[S13] |
|
|
||||||
|
|
||||||
对照:我们白板完美执行档 78.5% 落在「满局外成长档」的区间里——**出发点建模错了位阶**:把「局外成长后的最终状态」当成了「白板首局状态」。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §二 问题二:伤害模型悬崖(阈值效应)
|
|
||||||
|
|
||||||
### 2.1 机理与命名
|
|
||||||
|
|
||||||
- **概念**:EHP(有效生命值)= 把所有减伤/回复折算后,真正需要打穿的伤害预算。把战斗生存力折算成单一预算轴再平衡,是数值教材的标准方法(《Game Balance》第八章 Transitive Mechanics and Cost Curves【开发者一手】[S16];Schreiber 免费课程 Game Balance Concepts 同主题【开发者一手】[S17])。
|
|
||||||
- **悬崖机理**:胜率 W(D) = P(我方输出预算 ≥ EHP 损耗预算)。当 ①伤害为**固定值**(零方差)、②**单轴真伤**(无格挡/闪避/回复摊薄)、③**预算贴近阈值**时,W(D) 退化为阶跃函数——输入的微小差(每关 2 雷 ≈ 24–32% EHP)导致输出的全或无(78.5% vs 0%)。加入方差后阶跃抹成 S 形曲线,斜率由方差幅度决定(机理为数学事实+类型观察,命名 **threshold effect / breakpoint(阈值/断点)** 在数值设计圈通用;**未找到**专门以此命名的 GDC 演讲或教材章节,明说不确定)。
|
|
||||||
- **类型内实证**:StS 1800 万局的胜率-层数曲线恰在两处幕 Boss 检查点(第 17/34 层)出现断层——检查点就是阈值,阈值越少越尖锐【社区分析】[S8]。
|
|
||||||
- **我们的对应诊断**(【内部实测】):50 HP 池 × 单雷直伤 6–8(=12–16% EHP/雷)× 无战斗间回复(仅恢复点节点)× 恢复数学弱(恢复概率 1/4 · 恢复量 1/6)→ 每关 2 雷的输入差在战役全程累积 6 雷 ≈ 72–96% EHP,直接跨越致死阈值。单次失误定价过高 + 无回复经济摊薄 + 零方差,三因叠加成悬崖。
|
|
||||||
|
|
||||||
### 2.2 主流解法清单(每条带出处)
|
|
||||||
|
|
||||||
| # | 解法 | 做法 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | **多缓解轴**:把单轴真伤拆成可经营的防御面 | StS 的 Block:当回合 1:1 抵消攻击伤害、回合开始清零——玩家每回合在「输出/格挡」间重新分配预算,伤害从「必挨的真伤」变成「可经营的决策面」 | 【官方机制】[S18] |
|
|
||||||
| 2 | **回复经济(healing economy)**:跨战斗的 HP 流水 | StS 篝火 Rest 选项=回复最大 HP 的 30%;Hades 冥河活力每房 +3 HP;死亡细胞直接把回复经济当难度轴(1BC 泉水隔房→2BC 无泉→3BC 3 瓶→4BC 零瓶) | 【官方机制】[S19][S13][S12] |
|
|
||||||
| 3 | **伤害方差控制**:固定值改区间掷骰 | XCOM 武器伤害为区间掷骰(如暴击伤害列为 5–7 的区间)——同期望下方差把阶跃抹成斜坡 | 【官方机制】[S20];「方差→斜率」的换算关系为【推测】(数学事实,无专门文献页) |
|
|
||||||
| 4 | **EHP 缓冲带**:把致命阈值推离单次失误预算 | Hades 死亡豁免 3 层(每层致死时回 50% HP 再战)+ 厚实皮肤 +50 HP;「应留多少余量」无文献定值,明说不确定 | 【官方机制】[S13][S21] |
|
|
||||||
| 5 | **难度平滑:大检查点拆小** | StS Ascension 20 级小步[S11]、死亡细胞 5 细胞多轴小步[S12]、Hades God Mode 每死 +2% 渐近[S10]、Hades 惩罚契约在满配后仍留 13.5% 达成的上探空间[S3] | 均已核实 |
|
|
||||||
|
|
||||||
### 2.3 杀戮尖塔 / Hades / 死亡细胞具体怎么做(对照)
|
|
||||||
|
|
||||||
| 游戏 | 对悬崖的机制组合 | 对白板基准的机制组合 |
|
|
||||||
|---|---|---|
|
|
||||||
| 杀戮尖塔 | Block 多轴经营 + 篝火 30% 回复 + 卡牌/遗物构筑改变每局预算 | Ascension 20 级把「更难」拆成 20 个小步,通关一次(56.6% 全体玩家)才进入天梯[S2][S11][S18][S19] |
|
|
||||||
| Hades | 死亡豁免×3 + 泉水/每房回血 + 半人马之心类 HP 奖励位 | 镜子生存向三轴(EHP/额外命/持续回复)+ God Mode 死亡渐近减伤,把首通 ~30–53 局[S9]的爬升全程托底[S13][S10] |
|
|
||||||
| 死亡细胞 | 瓶子/泉水=回复经济,BC 阶梯逐级收紧 | 5 细胞逐级解锁,每级动多根轴,40.6%→6.8% 平滑衰减[S7][S12] |
|
|
||||||
|
|
||||||
术语更正:任务书中「Anchises 死亡豁免」未找到对应机制;Hades 中该机制名为 **Death Defiance(死亡豁免)**,是镜子天赋(另有部分祝福/武器形态提供)【官方机制】[S21]。不确定用户所引何据,特此标注。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §三 回答核心问题
|
|
||||||
|
|
||||||
### 3.1 两个问题是否有成熟解决方案
|
|
||||||
|
|
||||||
| 问题 | 有/无 | 依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| ① 白板首局 78.5% 不符合类型规律 | **有成熟基准** | 类型内白板每局胜率个位数是常态:StS 9%[S8]、FTL 普通 9.5%[S5];首通局数以十局计(Hades 社区估算 30–53 局[S9])。78.5% 位于类型内「局外满成长档」的区间(30–60%),说明是**位阶错配**而非微调问题 |
|
|
||||||
| ② 普通档 2 雷输入差 → 78.5pp 悬崖 | **有成熟解法组合** | 阈值效应的标准四件套(方差化/回复经济/多缓解轴/EHP 缓冲带)+ 难度平滑,StS/Hades/死亡细胞均有可核实实例(§2.2/§2.3)。我们当前三因叠加(零方差单轴直伤+无回复经济+失误定价 12–16% EHP/雷)是类型内已知反模式 |
|
|
||||||
|
|
||||||
### 3.2 「正确」的可验收定义(目标曲线)
|
|
||||||
|
|
||||||
目标带(【推测】,但每条带均有官方锚点,见 §1.3 表):
|
|
||||||
|
|
||||||
- **带 A|白板(零局外)完美执行战役全通率:[0%, 10%]**
|
|
||||||
- **带 B|白板 L1 通关率:[50%, 85%]**(首关=过滤器不是墙)
|
|
||||||
- **带 C|营地满成长战役全通率:[30%, 60%]**
|
|
||||||
- **带 D|局外成长各中间档:A→C 之间连续插值,无单档跳变**
|
|
||||||
|
|
||||||
响应曲线形状要求(悬崖回归测试的量化验收,指标值为【推测/建议】):
|
|
||||||
|
|
||||||
1. **边际斜率**:配对种子扫描下,每 +1 踩雷/关 的胜率变化 **≤15pp**(当前实测 ≈39pp/雷:2 雷对应 78.5pp)。
|
|
||||||
2. **连续性**:输入差 0→6 雷(战役全程)的胜率曲线呈 **S 形连续**,无任何单步跳变 **>25pp**。
|
|
||||||
3. **位阶落带**:白板完美执行档 ∈ 带 A;普通玩家画像档 ∈ 带 B–D;营地满成长档 ∈ 带 C。
|
|
||||||
|
|
||||||
### 3.3 修正路径概要(只列方向与验收指标,不动手)
|
|
||||||
|
|
||||||
1. **先修悬崖(伤害模型层,最高优先)**——顺序有讲究:先修响应曲线,否则后续所有调参读数都被悬崖放大失真。
|
|
||||||
- 方向:直伤加区间方差(同期望);引入战斗间/战斗内回复经济(把单场爆发伤害改为跨场磨损,参考 Peglin 对照报告已登记方向);增加可经营的减伤面(Block 同构物);致死阈值与单次失误预算间留 ≥2–3 次失误余量。
|
|
||||||
- 验收:§3.2 之 1、2 达标(斜率 ≤15pp/雷、S 形连续)。
|
|
||||||
2. **再修白板基准(全局难度层)**
|
|
||||||
- 方向:全局难度上探使白板完美执行档从 78.5% 落入带 A;优先复用已注册 L1 专属杠杆(荆棘 effect_value 外延,见 `perfect-l1-lever-proposal-2026-09-29.md`,其 −7pp/格 定向比 3.5:1 在悬崖修复后需重新标定),不足再立全局新杠杆。
|
|
||||||
- 验收:模拟档白板战役 ∈ [0,10%];白板 L1 ∈ 带 B;普通档 L1 保持带内 [35,55](在册带)。
|
|
||||||
3. **再修局外成长承接**
|
|
||||||
- 方向:营地成长按「带 A → 带 C」总量缺口分配,参照 Hades 镜子生存向三轴配比(EHP/额外命/持续回复)而非单一数值轴;成长档位间均匀增量。
|
|
||||||
- 验收:满成长战役 ∈ [30,60%];每档成长增量 ≤15pp(无跳变档)。
|
|
||||||
4. **收尾:悬崖回归测试**
|
|
||||||
- 验收:重跑「普通 vs 完美」配对扫描,78.5pp 悬崖不复现,普通档对完美档胜率差随输入差渐变(§3.2 全部三条通过)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 引用来源
|
|
||||||
|
|
||||||
| # | 来源 | 可信度 |
|
|
||||||
|---|---|---|
|
|
||||||
| S1 | SteamDB 杀戮尖塔成就镜像 https://steamdb.info/app/646570/stats/ | 官方统计(SteamDB 镜像;本方抓取超时,数字经检索转述,未直接核验) |
|
|
||||||
| S2 | Steam 官方成就统计·杀戮尖塔 https://steamcommunity.com/stats/646570/achievements | 官方统计(本方直接抓取) |
|
|
||||||
| S3 | Steam 官方成就统计·Hades https://steamcommunity.com/stats/1145360/achievements | 官方统计(本方直接抓取) |
|
|
||||||
| S4 | GameRant:Hades 如何重新获得管理权限(佐证「复工」=首次通关后解锁) https://gamerant.com/hades-how-to-regain-administrative-privilege-what-its-for/ | 二手媒体(机制细节与官方一致) |
|
|
||||||
| S5 | Steam 官方成就统计·FTL https://steamcommunity.com/stats/212680/achievements | 官方统计(本方直接抓取) |
|
|
||||||
| S6 | Steam 官方成就统计·以撒 https://steamcommunity.com/stats/250900/achievements | 官方统计(页面过大,28.8% 数字经检索转述) |
|
|
||||||
| S7 | Steam 官方成就统计·死亡细胞 https://steamcommunity.com/stats/588650/achievements | 官方统计(本方直接抓取) |
|
|
||||||
| S8 | Fox Row:Slay the Spire Statistical Analysis(1800 万局) https://foxrow.com/slay-the-spire-statistical-analysis | 社区分析(基于 Mega Crit 官方运行 API 数据,高可信二手) |
|
|
||||||
| S9 | Reddit r/HadesTheGame:首通平均局数讨论 https://www.reddit.com/r/HadesTheGame/comments/zyru4o/how_many_runs_before_escape_is_average/ | 社区共识(估算,非官方) |
|
|
||||||
| S10 | Hades Wiki:God Mode(20% 起步、每死 +2%、上限 80%) https://hades.fandom.com/wiki/God_Mode | 官方机制(数值可游戏内验证) |
|
|
||||||
| S11 | StS Wiki:Ascension(20 级逐级解锁) https://slay-the-spire.fandom.com/wiki/Ascension | 官方机制(本方直接抓取) |
|
|
||||||
| S12 | Dead Cells Wiki(wiki.gg):Boss Stem Cells(5 级多轴阶梯) https://deadcells.wiki.gg/wiki/Boss_Stem_Cells | 官方机制(本方直接抓取) |
|
|
||||||
| S13 | Hades Wiki:Mirror of Night(厚皮肤 +50HP/死亡豁免 3 层/每房 +3HP/全镜 35,365 黑暗) https://hades.fandom.com/wiki/Mirror_of_Night | 官方机制(本方直接抓取) |
|
|
||||||
| S14 | GDC Vault:Designing Without a Pitch — FTL Postmortem https://www.gdcvault.com/play/1018034/Designing-Without-a-Pitch-FTL | 开发者一手 |
|
|
||||||
| S15 | Roguelike Radio #56:FTL 开发者访谈 http://www.roguelikeradio.com/2012/12/episode-56-interview-with-ftl.html | 开发者一手 |
|
|
||||||
| S16 | Schreiber & Romero《Game Balance》(CRC Press, 2021),第八章 Transitive Mechanics and Cost Curves https://www.routledge.com/Game-Balance/Schreiber-Romero/p/book/9781138485101 | 开发者一手(著作) |
|
|
||||||
| S17 | Ian Schreiber 免费课程 Game Balance Concepts https://gamebalanceconcepts.wordpress.com/ | 开发者一手(作者本人博客课程) |
|
|
||||||
| S18 | StS Wiki:Block(1:1 抵消、回合开始清零) https://slay-the-spire.fandom.com/wiki/Block | 官方机制(本方直接抓取) |
|
|
||||||
| S19 | StS Wiki:Rest Site(Rest=回复最大 HP 30%) https://slay-the-spire.fandom.com/wiki/Rest_Site | 官方机制(本方直接抓取) |
|
|
||||||
| S20 | XCOM Wiki:Assault Rifle(伤害区间掷骰,暴击伤害列 5–7) https://xcom.fandom.com/wiki/Assault_Rifle_(XCOM:_Enemy_Unknown) | 官方机制(本方直接抓取) |
|
|
||||||
| S21 | Hades Wiki:Death Defiance(致死时回 50% HP 的额外命) https://hades.fandom.com/wiki/Death_Defiance | 官方机制(本方直接抓取) |
|
|
||||||
| S22 | 本方模拟器实测(白板 78.5%/普通 0%/L1 13%/直伤 6–8/恢复 1/4·1/6) `D:\code\g-plan2-numfix-20260930\sim-data`、`perfect-l1-lever-proposal-2026-09-29.md` | 内部实测 |
|
|
||||||
|
|
||||||
**不确定项汇总**(禁止当作已证实使用):「Act1 Boss 89%」无一手出处(官方口径 81.7–85.1%,全体玩家);Hades 首局必死的官方逐字表述未找到;FTL 首通局数无一手统计;「EHP 缓冲带应留多少余量」无文献定值;Hades 官方从未公布首通局数统计;§1.3/§3.2 的区间与指标值为基于锚点的推测。
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
# 任务书——CI 预接线批(迭代 19 卡③)
|
|
||||||
|
|
||||||
> 版本 v1.2(2026-10-08 远端裁点闭环换代;v1.1=2026-10-07 grilling 全裁定稿)。立项依据=2026-10-07 用户令——自动化验收补齐批 §一 明示不收的 **B6(CI 预接线)** 移交另会话讨论后,本会话拍板立项,约 0.25d。
|
|
||||||
> 开工门=**goal 迭代级开工令(一次覆盖五卡)**;worktree=`iter19-ciwire`。**裁点①远端仓库=✅ 2026-10-08 用户裁:暂不建、维持待命**(哪天要 push 再议,届时首跑盯梢清单激活);裁点② ui_layout 入 CI=候卡①断言交付后裁(不阻塞本批)。
|
|
||||||
|
|
||||||
## 一、立项背景
|
|
||||||
|
|
||||||
`.github/workflows/tests.yml` 在库且结构完整:头注释自述「仓库已初始化 git(尚无远端)——本 workflow 在首次 push 到 GitHub 后自动生效」;`on: push/PR → main`;static-scan 段(`game/tests/static_scan.sh`,实存)+ headless smoke 段(`res://tests/run_all.gd`,实存)均在位。但两处欠账:
|
|
||||||
|
|
||||||
1. **场景探针段整块注释**(tests.yml:41-45,示例形态引用 `res://smoke/ui_probe.tscn`、`res://smoke/ui_click_probe.tscn`)——自 2026-10-05 路径修正批(9446302e)后未再动,示例选型已滞后于 probe_gate 现行默认段(input/struct/contrast 三探针,其中 ui_contrast_probe 2026-10-06 才注册)。
|
|
||||||
2. **远端仓库计划不在案**:`git remote -v` 为空(本会话实测),CI 从未真正运行;roadmap.md 与 design/gdd/06-待办清单.md 均无「远端仓库计划」登记(grep 实测零命中)——建不建、何时建、公开私有,无一处裁决记录。
|
|
||||||
|
|
||||||
本批只做**预接线**:把注释段解封成与现行轻闸口径一致的正式 CI 段,并补齐新生探针条目;远端仓库本身是另一个决策,只作呈报项挂出(§九)。
|
|
||||||
|
|
||||||
## 二、现状考证(file:line 级,开工复核)
|
|
||||||
|
|
||||||
| 事实 | 出处 |
|
|
||||||
|---|---|
|
|
||||||
| 探针段整块注释(示例 ui_probe/ui_click_probe) | .github/workflows/tests.yml:41-45 |
|
|
||||||
| 头注释自述「尚无远端,首次 push 后自动生效」 | tests.yml:3 |
|
|
||||||
| git 无远端 | `git remote -v` 空(2026-10-07 实测) |
|
|
||||||
| tests.yml 末次改动=2026-10-05 文档对齐批(9446302e,路径 game/ 化修正) | git log tests.yml |
|
|
||||||
| 注释段两示例路径实存未漂移 | game/smoke/ui_probe.tscn、ui_click_probe.tscn 逐一 ls 核过 |
|
|
||||||
| probe_gate 默认段三探针 .tscn 实存:ui_input/ui_struct/ui_contrast | game/smoke/ 逐一 ls 核过 |
|
|
||||||
| ui_struct_probe=2026-10-05 注册(mini-loop);ui_contrast_probe=2026-10-06 注册(UI 设计对齐批 T2) | 两 .gd 头注 |
|
|
||||||
| ui_audit_probe=2026-10-06 用户令新生,**必须窗口化**(headless 守卫同 shot_probe) | game/smoke/ui_audit_probe.gd:1-4 |
|
|
||||||
| probe_gate 是 Windows 专用(PowerShell+taskkill+cygpath),CI ubuntu-latest 不能调用 | tools/probe_gate.sh:11,28-34 |
|
|
||||||
| probe_gate 对三默认探针的判定=exit code 超时判 + **grep PASS**(退出码单凭不足恃) | tools/probe_gate.sh:50-74 |
|
|
||||||
| 冷检出需刷导入(.godot 不入 git)——probe_gate 用 `--editor --quit` 一次性付 | tools/probe_gate.sh:36-41 |
|
|
||||||
| 渲染闸批(同迭代兄弟卡)触碰文件=worktree/tools/render_gate.sh(新)/game/tests/golden//probe_gate.sh/CLAUDE.md/tests/README/roadmap——**T0-T6 逐条核过,不含 tests.yml**,无直接撞车 | design/research/任务书-自动化验收补齐批-2026-10-07.md §四 |
|
|
||||||
| 远端仓库计划零登记 | roadmap.md、06-待办清单.md grep「远端/remote」零命中 |
|
|
||||||
| ⚠ **触发分支死角(v1.1 并入)**:tests.yml 触发=[main],实际分支=master 且 main 分支不存在(git branch 实查 2026-10-07)——不修则远端建好后 CI 仍永不触发 | tests.yml on: 段;git branch |
|
|
||||||
|
|
||||||
### 探针分拣清单(CI 段选型的依据,开工复核用)
|
|
||||||
|
|
||||||
| 归属 | 探针 | 理由 |
|
|
||||||
|---|---|---|
|
|
||||||
| **进 CI 探针段(轻段)** | ui_input_probe / ui_struct_probe / ui_contrast_probe | headless 安全+带断言=probe_gate 默认段同款;ui_contrast 系 tests.yml 末次改动后新生,必须补入 |
|
|
||||||
| **不入轻 CI,归 --full 重闸**(兄弟卡 T3 收编层位,P5 已裁) | ui_probe / ui_tune_probe / t17_defer_probe / fx_probe(+ui_click 随 --click) | 时长 17-63s×4,挂重闸不拖轻 CI;示例句里的 ui_probe/ui_click 据此**不进 CI 段**——注释段选型滞后处 |
|
|
||||||
| **禁入 headless CI** | shot_probe / fx_shot_probe / board_shot_probe / ui_audit_probe | 必须窗口化,headless 无渲染面且探针内 fail-fast |
|
|
||||||
| **不入任何闸** | ui_layout_probe(兄弟卡 T5 补断言,归属见待裁 P2)、skill_rhythm_probe / board_stat_probe(零断言分析工具,且无 .tscn)、damage_probe / config_fatal_probe(兄弟卡 T4 退役件) | — |
|
|
||||||
|
|
||||||
## 三、范围
|
|
||||||
|
|
||||||
**收**:tests.yml 注释段解封改写为正式探针段(三默认探针+冷检出导入步+timeout/PASS 双判定外壳);**触发分支修正 push+pull_request 两处 main→master**(2026-10-07 用户裁 Q1/Q11.3);头注释「远端就绪即生效」明示;账务登记两处;远端仓库计划呈报项成文。
|
|
||||||
**不收**:远端仓库建不建/何时建/公开私有(呈报项,用户裁);static-scan 步骤与 run_all 冒烟步骤**本体**零改动(job 级基础设施步=冷检出导入步允许插在 checkout 之后——2026-10-07 用户裁 Q9 甲);probe_gate.sh 任何改动(归兄弟卡 T3);游戏运行时代码与探针件任何 diff。
|
|
||||||
|
|
||||||
## 四、任务卡
|
|
||||||
|
|
||||||
- **T0(0.05d)开工复核**:tests.yml 现行行号复读;§二分拣清单所列 .tscn 逐一存在性重核;兄弟卡 worktree 状态核对(若在飞,登记避让位);**PASS 判定串取样**——本机实跑三探针取输出格式样本钉死 grep 判据(白名单项)。
|
|
||||||
- **T1(0.10d)注释段解封改写**:tests.yml:41-45 注释块换成正式步骤——①冷检出导入步(`godot --headless --path game --import` 或 `--editor --quit` 形态,代拍板白名单),插在 smoke job **checkout 之后、run_all 冒烟步骤之前**(job 级基础设施步,同时覆盖冒烟与探针的 .godot 依赖);②三探针逐条登记(ui_input/ui_struct/ui_contrast,每步 `timeout` 外壳 + 退出码超时判 + PASS 判定,镜像 probe_gate 判定逻辑的 Linux 形态;**探针步骤留在 smoke job 内原注释位**,复用同 job setup-godot 不另开 job);③头注释「尚无远端」句保留并追加「远端仓库建好后**无需改本文件即自动生效**」明示;④触发分支 `push.branches` 与 `pull_request.branches` 两处 `[main]`→`[master]`。**CI 段为 Linux 独立命令形态,禁止调用 probe_gate.sh**(PowerShell/taskkill 依赖)。
|
|
||||||
- **T2(0.05d)静态核验**:pyyaml 解析 tests.yml(本机在库,actionlint 不要求);CI 段引用的每个 res:// 路径存在性脚本核对;timeout 外壳齐备清单逐条打勾;与兄弟卡新三闸术语(headless 轻闸/render_gate 渲染闸/--full 重闸)口径对齐检查。
|
|
||||||
- **T3(0.05d)账务+移交项成文**:roadmap 迭代 19 行邻行并入本卡登记(避撞兄弟卡在飞行);B6 出处(自动化验收补齐批 §一)闭环注记;「首次 push 后人工盯首跑」移交清单落本任务书 §七。
|
|
||||||
|
|
||||||
**合计≈0.25d**,与用户拍板一致。
|
|
||||||
|
|
||||||
## 五、🔴 设计契约(违反=返工;触碰=L3 停机)
|
|
||||||
|
|
||||||
1. **本批 diff 面=tests.yml 单文件**(+roadmap 账务行):游戏代码、探针件、probe_gate.sh、CLAUDE.md 零 diff。
|
|
||||||
2. **CI 轻段选型锁死**:只进 input/struct/contrast 三件;ui_probe/ui_click/ui_tune/t17_defer/fx 禁入轻 CI(兄弟卡 P5 裁决归 --full);窗口化四件(shot/fx_shot/board_shot/ui_audit)禁入 headless CI——违者与探针 fail-fast 护栏冲突=必红。
|
|
||||||
3. **无远端红线**:禁止为「端到端验证 CI」擅自建远端或 push——远端是独立决策(§九);本批验收只能是静态核验,谁也不许绕。
|
|
||||||
4. **在飞避让**:主区脏文件与兄弟卡 worktree 勿碰;roadmap 迭代 19 行四卡换代按**落籍顺序串行重放**、后合者 worktree 内 rebase(2026-10-07 用户裁 Q13)。
|
|
||||||
5. **判定外壳不降级**:每个探针步骤必须 timeout 外壳+PASS 判定双在位(ADR-0004 硬性要求;只跑不判=返工)。
|
|
||||||
|
|
||||||
## 六、停机点
|
|
||||||
|
|
||||||
- **S1**:静态核验若发现 tests.yml 结构性问题(setup-godot action 版本漂移/失效、upload-artifact 路径口径变动等),呈报后再动,不顺手代修范围外段。
|
|
||||||
- **S2**:兄弟卡若先行合并且三闸术语已换代,本批文案与旧口径冲突时停机对表再落笔。
|
|
||||||
|
|
||||||
## 七、验收闸与移交项
|
|
||||||
|
|
||||||
**验收(全部静态判据——本地无远端,端到端不可验,此为本批红线边界)**:
|
|
||||||
|
|
||||||
1. tests.yml 无整块注释探针段残留(41-45 行区域已成正式步骤)。
|
|
||||||
2. CI 探针段引用的每个 res://smoke/*.tscn 在 game/smoke/ 实存(逐一路径核对记录随出口注记)。
|
|
||||||
3. 每个探针步骤 timeout 外壳+PASS 判定齐备;头注释含「远端就绪即自动生效」句。
|
|
||||||
4. pyyaml 解析通过。
|
|
||||||
5. roadmap 邻行并入登记+B6 闭环注记落籍;git status 本批 diff 仅 tests.yml+账务行。
|
|
||||||
|
|
||||||
**移交项(首次 push 后人工盯首跑清单,本批不履行只移交)**:
|
|
||||||
|
|
||||||
- 首跑三查:static-scan 绿 / smoke 段绿 / 新探针段绿。
|
|
||||||
- Linux 环境差异预判:ui_contrast_probe 依赖字体渲染实测值,ubuntu runner 字体环境与 Windows 本机不同,首跑若红属环境差异非回归,逐条呈报处置。
|
|
||||||
- 冷检出导入步首跑耗时观察(probe_gate 本机经验=一次性 1-2 分钟,CI 上未实测;导入步已按 Q9 甲前置插入 smoke 步骤之前,smoke 段冷检出红灯风险已预消,首跑仍需实证)。
|
|
||||||
|
|
||||||
## 八、裁点留痕(0 项阻塞——全裁/后置)
|
|
||||||
|
|
||||||
- **裁点①远端仓库计划**:✅ 2026-10-08 用户裁=**暂不建、维持待命**(建否/何时/公私三问一并裁为「暂不建、不定期、届时再定」);预接线待命态=本批终态,§七首跑盯梢清单待远端立项之日激活。
|
|
||||||
- **裁点② ui_layout_probe 入 CI 归属**:候卡①(渲染闸批)为其补 1280/1920 断言交付后再裁,不阻塞本批。
|
|
||||||
|
|
||||||
## 九、远端仓库——已裁留痕(2026-10-08)
|
|
||||||
|
|
||||||
现状:`git remote -v` 为空;roadmap.md 与 06-待办清单.md 零登记;tests.yml 头注释是全仓唯一「远端」陈述。**✅ 已裁(2026-10-08)=暂不建、维持待命**——本批交付的预接线配置即为终态,哪天用户决定 push 远端时:建仓库与首次 push 由用户亲手做,届时另呈首跑盯梢(§七移交项随之激活);再往后若改主意要建,另编卡。
|
|
||||||
|
|
||||||
## 十、代拍板白名单
|
|
||||||
|
|
||||||
CI 步骤命名与注释措辞;冷检出导入步形态(`--import` vs `--editor --quit`);timeout 数值(默认沿用 probe_gate 同款 120s/探针);PASS 判定串(随探针实际输出格式,T0 本机实跑取样钉死);探针步骤落位=smoke job 内原注释位(复用同 job setup-godot,不另开 job);探针日志是否并入现有 upload-artifact 段;roadmap 邻行并入的具体措辞。
|
|
||||||
|
|
||||||
## 十一、呈报摘要
|
|
||||||
|
|
||||||
- **B6 CI 预接线已立项为本卡**(迭代 19 第二卡,兄弟卡=自动化验收补齐批;其 T0-T6 触碰文件逐条核过,不含 tests.yml,无直接撞车)。
|
|
||||||
- tests.yml 场景探针段(41-45 行)整块注释且选型滞后:示例的 ui_probe/ui_click 按兄弟卡 P5 裁决归 --full 重闸、**不进轻 CI**;轻 CI 应进=input/struct/contrast 三件(ui_contrast 系 2026-10-06 新生,必须补入)。
|
|
||||||
- 注释段引用的两探针路径实存未漂移;窗口化四件(shot/fx_shot/board_shot/ui_audit)禁入 headless CI。
|
|
||||||
- probe_gate.sh 是 Windows 专用,CI 段须 Linux 独立命令形态(timeout+grep PASS 双判定+冷检出导入步)。
|
|
||||||
- **本地无远端,端到端验证不可能**——验收全静态(pyyaml/路径存在性/timeout 外壳),「首次 push 后人工盯首跑」成移交清单;首跑预判 Linux 字体环境或致 contrast 红属环境差异。
|
|
||||||
- **远端仓库计划不在案**(remote 空+两文档零登记):建不建/何时建/公开私有,三项呈请用户裁决,本批不代决。
|
|
||||||
- 步骤 T0-T3,估时合计 **≈0.25d**;待裁点 **2 项**(P1 远端计划、P2 ui_layout 入 CI 归属)。
|
|
||||||
@@ -1,472 +0,0 @@
|
|||||||
# 任务书:UI 设计对齐批(迭代 16)· v1.0 定稿(P1-P11 裁决已齐,随开工令实施)
|
|
||||||
|
|
||||||
> 成文 2026-10-05。**性质**:纯呈现层 UI 设计代码对齐批——把三路改进方案(A 落码差异对照 / B OPT-A 机检 / C WB 像素纪律)的**代码侧可收项**落到 `game/presentation/**`,并在用户裁决后统一六个互相打架的取值。
|
|
||||||
> **事实源(必读全文)**:[UI预览demo三路改进整合对照-2026-10-04.md](UI预览demo三路改进整合对照-2026-10-04.md)(§二六大改进轴 / §三六分歧 / §四无分歧收项 / §五开放项)。
|
|
||||||
> **佐证**:[UI重设计原型v2落码-差异对照与改动计划-2026-10-04.md](UI重设计原型v2落码-差异对照与改动计划-2026-10-04.md)(原型 v2 落码 M0+M1+M10 已全落籍 master,§七 为用户终裁口径,本批是 v2.1 之上的**第二轮** UI 设计对齐)。
|
|
||||||
> **基线**:原型 = `artwork/ui-redesign-2026-10-04/src/ui-prototype.html`(v2.1,8 屏 1280×800,2026-10-05 实测 md5 `78ebbee0…`);实机 = `game/presentation/views/ui_kit.gd` 及各 `*_view` / `*_overlay` / `*_screen`。
|
|
||||||
> **归属迭代**:迭代 16(迭代 16 四卡已顺延迭代 17,本批为改编入册的 UI 优化需求)。
|
|
||||||
> **美术红线(2026-10-05 用户立规)**:`game/assets/art/**` 与 `artwork/**` **均不动**——不新增素材、不重烘/重采样/重 quantize 贴图、不改 PNG 一字节。本批只改 UI 设计代码(ui_kit 色板 token / 字号档 / 布局与圆角纪律 / 对比度垫底 / 抖动呈现 / panel_skinned 消费接线等)。凡结论指向「改素材才能解决」的一律转 06 登记,不自产。
|
|
||||||
> **本文件性质**:任务书正文 + 裁点归档。P1-P11 已全部裁决(✅ 见 §8),随迭代 16 开工令实施。
|
|
||||||
> **裁决进度**:✅ P1 = 甲(维持暖化)· ✅ P2 = 丁(棋盘格边长**零改动**,本次不动棋盘游戏画面)——2026-10-05 已决;✅ 其余 8 项**取向已定**(2026-10-06 用户采纳推荐):**P4 / P7 / P10 跟 demo**,**P3 / P6 / P8 / P11 按条款解**,**P5 两路同结论**(P9 为已决注销清单,不算裁点)。
|
|
||||||
> **「以 demo 为准」的适用范围(三层优先级栈)+ 三条不入本批的结构级差异 = §8.3。**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 目标与完成定义
|
|
||||||
|
|
||||||
### 1.1 一句话目标
|
|
||||||
|
|
||||||
在不碰任何美术资源的前提下,把三路改进方案里**可确定性收口的部分**(7 处对比度 FAIL / 站桩垂直溢出 / 4 处漏网裸色 / status 图标 preload 红线 / 类型色五族单点 / 面板皮消费面 / 圆角一致性)落到实机代码,并把**六个互相打架的取值**(底色冷暖 / 棋盘格边长 / 字号档位 / 九宫格切片 / 圆角去留 / 图标尺寸解法)与 §五 开放项(抖动范围、色板唯一来源等)一次性呈给用户裁决后统一实装。
|
|
||||||
|
|
||||||
### 1.2 完成定义(出口判定清单)
|
|
||||||
|
|
||||||
| # | 判定项 | 量化标准 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 对比度全绿 | 实机机检(含 §3.1 七处测点)对直背景 ≥4.5:1(art-bible §7.2 无区域例外);demo 侧 7 处读数由 T0 实机复测回填后失效 |
|
|
||||||
| 2 | preload 红线清零 | `status_slot_row.gd` 九枚图标改 `load_tex` 守卫路径;全仓呈现层素材 `preload` 计数 = 0 |
|
|
||||||
| 3 | 色板单点 | `ui_kit.gd` 为全站唯一取色出口;呈现层裸 `Color8(` 计数 ≤ N4a 白名单放行后的剩余数(目标 0) |
|
|
||||||
| 4 | 站桩不裁 | B 区站桩(battle.md 252px 舞台)纵向内容排满后仍留 ≥8px 余量;名行/血条/底座零裁切(探针 + 目检双证据) |
|
|
||||||
| 5 | 类型色单点 + 五族齐全 | `TG_*` 五族常量入 `ui_kit.gd`,`bonus_pick_overlay` / `shop_overlay_view` 改消费常量,零裸字面量;第五族(群伤)补齐并接线 |
|
|
||||||
| 6 | 既有纪律零回退 | `UiKit.button(min_w=216)` 宽度基准 + SIZE_FILL 不动;`ui_struct_probe` 全屏五族断言零红并保持 probe_gate 默认必跑段;MC 四代锚不重锚 |
|
|
||||||
| 7 | 六分歧全部收干 | 用户裁决的每一项都在代码 + 文档(art-bible / HUD框架)双侧同口径落文,零「代码一套文档一套」残留 |
|
|
||||||
| 8 | 重闸全绿 + 人闸 | 冒烟全量(基线 T0 重测回填)· run_all 十五套件 · ui_struct/ui_click/ui_input 三探针全绿 · doc 三闸零新增 · 熵增闸 PASS;实机目检清单过 |
|
|
||||||
|
|
||||||
> ⚠️ **基线纪律**:起草时点 master 头 = **446d5f9**,冒烟 **772/0**,run_all **14/15**(唯一红 = `reward_overlay_test`,master 既有在册红,本批守零新增)。以上均为**起草读数**,**T0 必须自行重测回填**;本任务书 §2 全部 `file:line` 与 §3 全部收项,一律以 T0 复核后的实况为准再落笔。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. 现状事实(代码级考证;起草时点 master 446d5f9)
|
|
||||||
|
|
||||||
> 本表已对整合对照 / OPT-A / WB 三份文档引用的行号逐条**实查**。凡漂移处均在「注」列标注旧值→现值。
|
|
||||||
|
|
||||||
| # | 事实 | 读数(file:line) |
|
|
||||||
|---|---|---|
|
|
||||||
| **F1** | **底色冷暖已在 master 落地(暖化侧)** | `ui_kit.gd:65` `BG_ROOT #3A2E22` · `:66` `BG_OVERLAY #362B20` · `:67` `BG_BRIGHT #453723`(M0 新增)· `:68` `CANDLE #F6C667`(M0 新增)· `:48` `WARM_SOFT #E8D5A8` · `:49` `WARM_FAINT #CDB88C`;依据落 `art-bible.md:410` 琥珀双岗注记。**OPT-A §6③「改代码还是改 demo」已被 2026-10-04 M0 批解决——代码已改暖,OPT-A 的「回归近黑 #1E1914/#1C1612」提案与现行 master 反向** |
|
|
||||||
| **F2** | **9 处色板漂移:实测 4 已收 / 5 未收** | 已收:`--warm-soft`(:10)↔`WARM_SOFT`(:48)、`--warm-faint`(:10)↔`WARM_FAINT`(:49)、`--bg-root`(:16)↔`BG_ROOT`(:65)、`--bg-overlay`(:16)↔`BG_OVERLAY`(:66)。未收:`--panel #E9D9B8`(:12) vs `PANEL_DATA #E2D2B6`(`ui_kit.gd:24`)、`--panel-edge #786E58`(:12) vs `PANEL_BORDER #786A58`(`:25`)、`--slot-back #3E362C`(:18) vs `SLOT_BACKDROP #342C24`(`:63`)、`--hp-back #282220`(:18) vs `HP_BAR_BACK #28221C`(`:83`)、`--wood-deep #6E4526`(:11) vs `CAMP_HEADER_BAND #7A5232`(`:80`)。**「9 处」待随 M0 降记为「5 处」** |
|
|
||||||
| **F3** | **类型色五族 `tg-*` 在 ui_kit 并不存在(整合对照 §四该条为过期记载)** | 全仓 `grep -i "tg" game/` **零命中**;OPT-A §3⑦与整合对照 §四「`tg-*` 常量已在 ui_kit 但未用于呈现」不成立。实际形态 = 内联裸 `Color8`:`bonus_pick_overlay.gd:96` 默认 `#C2B264`、`:98` heal `#66A457`、`:100` magic/blast `#8A72C4`、`:102` pierce `#57A0A0`;`shop_overlay_view.gd:189` 货架卡固定取默认值 `#C2B264`(未按类型分族)。**第五族(demo `--tg-aoe #E25676`,demo :19)在实机完全缺位** |
|
|
||||||
| **F4** | **九宫格切片实机恒 8** | `ui_kit.gd:286` panel `_tex_sb(tex, 8.0)`;`:327/328/330/331` button 常态/hover/pressed/disabled 均 `8.0`;`:299` `frame_skinned` `12.0`。素材实测 `panel_stone.png` = **48×48**、`button_stone.png` = **48×48**。demo 侧 `.plate9` border 12 / slice **16**(html:59)、`.btn9` border 11 / slice **16**(html:61) |
|
|
||||||
| **F5** | **panel_skinned 消费面实测 8 处 + 工厂 1 处(WB「仅 4 处」已过期)** | `ui_assembler.gd:202` · `battle_end_overlay.gd:33` · `battle_stage_view.gd:93` · `confirm_dialog.gd:19` · `hero_info_panel_view.gd:34` · `legend_overlay.gd:31` · `node_overlay.gd:17` · `settings_overlay.gd:39`;+ `ui_kit.gd:401`(BCard 工厂内部)。未消费皮的剩余面 T0 造册呈报 |
|
|
||||||
| **F6** | **棋盘格边长 = 动态公式 + clamp[26,46],不是常量 44** | `board_view.gd:114` `var _cell := 46.0`;`:246-251` `set_cell_area()` 按可用面积重算后 `clampi(cell, 26, 46)`;`board_cell_unit.gd:13` `edge := 46.0`。demo 定位 44px(html:288 `repeat(10,44px)` / gap 2px)。**冻结条款是 art-bible §8.1(:433) 锚点 45(10×10)/36(12×12) 与 HUD框架.md:67/72 定值档 + 装板校验区间 [30,45]——三方取值互不相等**(代码上限 46 / demo 44 / 条款 45)。**✅ 2026-10-05 用户裁 P2=丁:本批棋盘格边长零改动**(不调 clamp、不调定值档、不动棋盘游戏画面)。由此产生的已知偏差(代码上限 46 vs 条款 45 vs demo 44)**本批也不单侧改文档**——按 R7「禁单侧改完留漂移」,改为在本文档 §2.1 与 06 登记为已知偏差,等扩板(13×13/14×14)定档时随格边长专项一并处置 |
|
|
||||||
| **F7** | **地形瓦片源 32×32,缩放到格边必然非整数** | 实测 `game/assets/art/board/terrain_wall_center_dungeon.png` = 32×32、`terrain_floor_dungeon_1.png` = 32×32、`flag_seal.png` = 32×32;`board_cell_unit.gd:132` `draw_texture_rect(tex_base, rect, false)` 直接拉伸至 edge → 倍率 = edge/32(edge 取clamp后值,非整数即违规 §8.2 甲类) |
|
|
||||||
| **F8** | **字号无档位表,实测量 15 档,且低于 §7.4 下限** | `UiKit.label()` 调用档位统计(起草时点):11×5 / 12×9 / 13×12 / 14×11 / 15×13 / 16×13 / 17×2 / 18×2 / 20×2 / 22×2 / 24×3 / 26×3 / 40×1;另有 `status_slot_row.gd:67` tooltip 13、`:148` 10。§7.4(:417) 下限 = 正文/明细 ≥16、tooltip ≥14、棋盘数字 ≥18 → **11/12/13 档共 26 处在下限以下**。棋盘数字 `board_cell_unit.gd:238/262` `maxi(18, int(ceil(edge*0.5)))` 已合规 |
|
|
||||||
| **F9** | **7 处对比度 FAIL 的实机对应点(demo 读数须 T0 实机复测)** | ①站桩血数 `standee_body.gd:438-439`(11px 白字 α.95 + 深描边,直压 `:432` fill `Color(0.41,0.61,0.91)`=`#699CE8`;**实机敌我同色,demo 的敌方红 `#B0503F` 分支实机不存在**)②意图徽标 `standee_body.gd:172-178` 取色 + `:460-461` 绘制(atk=`RED_MINE #96362C` / buf=`HERO_BLUE #2E86DE` / debuff=`DEBUFF_PURPLE` / charge=`GOLD_DEEP`)③C 区槽占位字 `hero_info_panel_view.gd:196-207`(used=`STONE_FAINT` / 不可用=`STONE` / 字形 20px)④RAP 标签 `ap_bar_view.gd:74`(`UiKit.label("RAP 0", 14, true)` **无 color 参数 → 回落 `INK_LABEL #2E2218`**,`ui_kit.gd:212`) |
|
|
||||||
| **F10** | **站桩溢出在实机存在同构风险(非纯 demo 缺陷)** | demo 根因 = `nmrow` 13px 未锁 line-height(OPT-A §2.4,溢出 3.2px)。实机同型写法:`standee_body.gd:26` `var box := Vector2(150, 176)`(注记「实际高随壳层 row 布局注入」)+ `:476` **名行基线 = `box.y - 1.0`(离盒底仅 1px 余量)** + `:417-419` 底座贴 `box.y - 18.0` → 与 demo「声明值刚好=容器值」同款高危写法 |
|
|
||||||
| **F11** | **status 图标 preload 违规(可单独切分)** | `status_slot_row.gd:21-29` 九枚 `preload("res://assets/ui/icons/status_*.png")`;违反 `ui_kit.gd:121` 注释红线「禁 preload(素材缺位树上直接断言炸脚本)」。素材实测在位且均 **32×32** |
|
|
||||||
| **F12** | **图标/头像缩放违规全套核实** | 手绘十枚 20×20 已入库(`game/assets/art/ui/icon_*.png` 实测,M1 已落);**柜台四枚 `icon_forge/workshop/atlas/keystone` 仍 64×64**,显示 20px → 0.3125×;状态九枚 32×32 → 显示 24px(`status_slot_row.gd:123`)/16px(compact) → 0.75×/0.5×;BCard 图标槽 `ui_kit.gd:421` `Vector2(56,56)` 吃 20×20 源 → **2.8×**;地图头像 `level_map_screen.gd:136` `Vector2(50,52)` 吃 `character_hero_portrait.png` **46×48** → 1.087×/1.083× **纵横异倍**(违反 §8.2 乙类「免非整数但禁纵横异倍」) |
|
|
||||||
| **F13** | **既有宽度纪律与探针闸不得回退** | `ui_kit.gd:258` `button(text, min_w=216)` + SIZE_FILL;行板/角标/图标钮豁免 9 处(camp 5 + shop 2 + ap_bar 2 + 调试角标/诊断 2);`ui_struct_probe` 五族断言已入 probe_gate 默认必跑段(出口报告`:45-46`)。**R5 营地 1632px 爆宽事故先例在册** |
|
|
||||||
| **F14** | **Modal 登记纪律(背景约束)** | `main.gd:345-351` `_register_modal`(必 `set_anchors_and_offsets_preset` 非 `set_anchors_preset`)· `:353` `_open_modal` 单口 · `:373` `_input_locked`(`modal_stack.has_open()` 单一来源)。本批若不新增层则零触碰;若新增任何层必须走登记册 |
|
|
||||||
| **F15** | **demo 基线已再次漂移(三路文档的 demo 读数不可直接引用)** | `artwork/ui-redesign-2026-10-04/src/ui-prototype.html` 2026-10-05 实测 md5 `78ebbee0…`,**既不等于整合对照 §六记录的「当前 `4cc45cf3…`」,也不等于 OPT-A 记录的 `d2addb67…`**。→ demo 侧任何对比度/缩放/色板机检读数,落到实机前一律由 T0 重跑,禁止直接引用旧表 |
|
|
||||||
|
|
||||||
### 2.1 事实校正汇总(整合对照 / OPT-A 过期项,本批按此执行)
|
|
||||||
|
|
||||||
| 原记载 | 校正后事实 | 影响 |
|
|
||||||
|---|---|---|
|
|
||||||
| 「9 处色板漂移」 | 实测 **4 已收(随 M0)/ 5 未收** | §四「直接收」的量级下调;**2026-10-06 取向 = 取 demo 侧**(§8.2-P7 乙案),5 处改代码向 demo 值 |
|
|
||||||
| 「`tg-*` 常量已在 ui_kit 但未用于呈现」 | ui_kit **无** tg 常量;五族以裸 Color8 内联在 2 文件,且缺第五族 aoe(群伤) | 从「接线」改为「立项 TG_* + 补族 + 替换内联」 |
|
|
||||||
| 「实测仅 4 处消费 `panel_skinned`,需补到 9 处」 | 实测 **8 处 + 工厂 1 处** | 补面工作量≈0,改消费面清点 + 一致性校验 |
|
|
||||||
| 「棋盘格 44px 冻结不动」 | 代码无固定常量;= 动态公式 clamp[26,46],与 §8.1 锚点 45 冲突 | P2 实为「三方取值互不等」的三选一,不是「动/不动」 |
|
|
||||||
| 「站桩溢出 3.2px」 | demo CSS 缺陷,**但实机存在 1px 余量同型写法**(F10) | 收项改为「纵向余量纪律 + 探针断言」,不是直接改一行数值 |
|
|
||||||
| 「缺 10 枚手绘图标」 | 已入库(20×20) | C 亚组「图标入库」部分注销;真问题转为 64×64 柜台四枚的显示倍率(P6) |
|
|
||||||
| OPT-A §6①「`--candle` 归属待裁」 | `CANDLE` 已新增(`ui_kit.gd:68`)+ art-bible §7.2 双岗注记 | 已决(甲案),注销 |
|
|
||||||
| 「棋盘格 44px 冻结不动 / 32 / 45 三选一」 | **已裁(2026-10-05)= 丁案零改动**:`board_view.gd:251` `clampi(cell,26,46)` 与全部棋盘绘制一字不改 | ①T7 卡删除格边长子项;②**新增已知偏差**:代码上限 46 / §8.1 锚点 45 / demo 44 三者不一致,本批不单侧改条款(R7),登记 06 待扩板定档时随格边长专项一并处置 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 2.2 demo(原型 v2.1)取值抄录表 —— 本批唯一引用源
|
|
||||||
|
|
||||||
> **Q9 丙案(2026-10-06)**:demo 文件已被保存多次(整合对照记 `4cc45cf3` / OPT-A 记 `d2addb67` / 2026-10-05 实测 **`78ebbee0…`**)。本批**不再回读 demo 文件**——所需取值一律以本表为准;**T0 只核一次 md5 留痕**(若又变,登记注记即可,**不停机**)。
|
|
||||||
|
|
||||||
| demo 源 | 值 | demo 行号 | 本批用途 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| `--bg-root` | `#3A2E22` | :16 | P1 已裁(代码同值,零改动) |
|
|
||||||
| `--bg-overlay` | `#362B20` | :16 | P1 已裁(同上) |
|
|
||||||
| `--warm-soft` / `--warm-faint` | `#E8D5A8` / `#CDB88C` | :10 | 已收(M0) |
|
|
||||||
| `--panel` | `#E9D9B8` | :12 | **P7 乙**:`PANEL_DATA` 改向此值 |
|
|
||||||
| `--panel-edge` | `#786E58` | :12 | **P7 乙**:`PANEL_BORDER` 改向此值 |
|
|
||||||
| `--slot-back` | `#3E362C` | :18 | **P7 乙**:`SLOT_BACKDROP` 改向此值 |
|
|
||||||
| `--hp-back` | `#282220` | :18 | **P7 乙**:`HP_BAR_BACK` 改向此值 |
|
|
||||||
| `--wood-deep` | `#6E4526` | :11 | **P7 乙**:`CAMP_HEADER_BAND` 改向此值 |
|
|
||||||
| `--candle` | `#F6C667` | :11 | 已落 `CANDLE`(M0) |
|
|
||||||
| `--tg-buff/heal/magic/pierce/aoe` | `#C2B264` / `#66A457` / `#8A72C4` / `#57A0A0` / `#E25676` | :19 | **N4c**:立 `TG_*` 五族(前四族 = 实机现值) |
|
|
||||||
| `.plate9` | border 12 / slice **16** | :59 | **P4 乙**:`texture_margin` 8 → 16 |
|
|
||||||
| `.btn9` | border 11 / slice **16** | :61 | button 维持 8/8(**不跟**) |
|
|
||||||
| `.bcard` | 232×352 | :204 | **§8.3-E D1**,不入本批 |
|
|
||||||
| 棋盘网格 | 44px / gap 2 | :288 | **P2 已裁零改动**(不跟) |
|
|
||||||
| 字号分布 | 10×2 / 11×6 / 12×15 / 13×11 / 14×12 / 15×8 / 16×6 / 17×8 / 18×3 / 19×3 / 20×2 / 21×2 / 22×2 / 24 / 28 / 44 | — | **P3 不跟**(34 处 <14、54 处 <16) |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. 收项清单(无分歧、可直接收的部分)
|
|
||||||
|
|
||||||
> 全部为「数值中性」或「单点收口」,不依赖 §8 待裁点;除 N4b 受 P7 影响。逐项 file:line 已核证。
|
|
||||||
|
|
||||||
### N1 · 7 处对比度 FAIL 修法(已复算,据整合对照 §四 + OPT-A §2.2)
|
|
||||||
|
|
||||||
| # | 位置 | demo 读数 | 实机落点 | 修法 | 复算 |
|
|
||||||
|---|---|---|---|---|---|
|
|
||||||
| 1 | 站桩血数 | 2.09:1 | `standee_body.gd:438-439`(压 `:432` fill) | 数字**改压深底色牌**(在条中央按字宽 +6px 画 `HP_BAR_BACK #28221C` 素牌,再写字;牌宽随 `get_string_size`);**字号维持 11px**(条高仅 10px,放不下 16px)——按 **Q5 甲案**在 §7.4 登记「条带内读数」豁免,**与 P11 装饰 caption 豁免写成同一条款** | → 12.29 |
|
|
||||||
| 2 | 敌血数 | 4.04:1 | 同上同分支(实机敌我同色,T0 确认) | 随 N1-1 一并成立;若 T0 发现敌方独立分支则同法 | → ≥4.5 |
|
|
||||||
| 3 | 意图 atk | 3.96:1 | `standee_body.gd:172` `RED_MINE #96362C` | 底色降一档 → `RED_DEEP #963C30` | → 5.50 |
|
|
||||||
| 4 | 意图 buf | 2.94:1 | `standee_body.gd:175` `HERO_BLUE #2E86DE` | 底色降一档 → `#1E5A96`(作为 `HERO_BLUE` 的同族深档新增入 `ui_kit.gd`,命名规则同 `CONTACT_GLOW_DEEP`) | → 5.55 |
|
|
||||||
| 5 | 槽「已用」 | 1.90:1 | `hero_info_panel_view.gd:200` `STONE_FAINT` | 提档 → `WARM_FAINT` | → 4.95 |
|
|
||||||
| 6 | 槽「空」 | 1.34:1 | `hero_info_panel_view.gd:202` `STONE` | 提档 → `WARM_FAINT`(与 #5 同档)。**Q6 乙案:不新增通道**——沿用现行语义(空 = 虚位无字形 / 已用 = 暗字占位),只提墨色 | → 4.95 |
|
|
||||||
| 7 | RAP 标签 | 4.10:1 | `ap_bar_view.gd:74` | 显式传色 → `CONTACT_GLOW_DEEP`(`ui_kit.gd:59`) | → 5.63 |
|
|
||||||
|
|
||||||
**依据**:art-bible §7.2(:404)「一切文字(无区域例外)对直背景 ≥4.5:1」+「文字禁直接压纹理底」;§4.1 数字色牌原则(数字一律垫牌,可读不依赖底)。**零口味成分。**
|
|
||||||
|
|
||||||
### N2 · 站桩垂直余量纪律(3.2px 等价物)
|
|
||||||
|
|
||||||
- 实机「声明值刚好=容器值」高危写法:`standee_body.gd:26`(box 高 176 且随壳层注入)+ `:476`(名行基线 = 盒底 −1px)+ `:417-419`(底座贴盒底 18px 内)。
|
|
||||||
- 落法:名行 / 底座的整体纵向预算加 **≥8px 余量**(`:476` 名行基线上移,或 box 高略增),余量写成具名常量 `STANDEE_FOOT_MARGIN`(放在 `standee_body.gd` 常量区,取值不属色板,不进 `ui_kit.gd`)。
|
|
||||||
- 断言:`ui_struct_probe` 增一族「B 区站桩内容矩形 ⊆ 252px 舞台矩形,且下边距 ≥8px」。
|
|
||||||
|
|
||||||
### N3 · status 图标 preload → load_tex(单独可切分)
|
|
||||||
|
|
||||||
- `status_slot_row.gd:21-29` 九枚 `preload` → 改 `EFFECT_ICON` 存**路径串**,`_icon_tex()` 现调 `UiKit.load_tex(path)`(`ui_kit.gd:171`)。
|
|
||||||
- 保持 `_icon_tex` 立即断言面不变(`:195-196` 未知键 push_error + assert);保持 `res://assets/ui/icons/` 路径不变、**不搬运素材、不改动素材文件**(美术红线)。
|
|
||||||
- **可独立成 micro-loop**,不混入本批主体。
|
|
||||||
|
|
||||||
### N4 · 色板单点收口
|
|
||||||
|
|
||||||
| 子项 | 内容 | 依赖 |
|
|
||||||
|---|---|---|
|
|
||||||
| N4a | **4 处漏网裸色收进 `ui_kit.gd`**:`board_cell_unit.gd:79` `E_FACADE_FOOT_COL #342A20`、`:114` `FOG_MEMORY_PLATE #3A3A3A`、`:115` `FOG_MEMORY_INK #C4C4C4`、`:138` `oc #1E1812` 轮廓墨;另有 `level_map_screen.gd:36` `ICON_TINT_ON_GOLD`(以 `INK_ROUTE` 分量除法写成的乘法调制色,形态上仍是裸取色)——共 5 处(原整合对照记「4 处」,实查为 4+1)。**取值原样搬运,零观感变化** | 无 |
|
|
||||||
| N4b | **5 处未收漂移**(F2 表)——**取向已定:取 demo 侧**,5 个 token 改向 demo 值(Δ≤6/255,目视不可辨) | ✅ P7 = 乙 |
|
|
||||||
| N4c | **类型色五族立项 `TG_*`**:新增 `TG_BUFF #C2B264` / `TG_HEAL #66A457` / `TG_MAGIC #8A72C4` / `TG_PIERCE #57A0A0` / `TG_AOE #E25676`(第五族取 demo `--tg-aoe`,`:19`),替换 `bonus_pick_overlay.gd:96-102` 与 `shop_overlay_view.gd:189` 内联裸色;`bcard` 色带消费面同步。**Q4 甲案**:`shop_overlay_view.gd:189` 现行全用固定 `#C2B264`、**不分族**——同步补分族判定(与三选一同款 `idl.contains(...)` 匹配),使**五族都有消费面**(否则违 R1「先立常量再消费」) | 无(四族 = 实机现值、第五族 = demo 冻结值,取值零争议) |
|
|
||||||
|
|
||||||
### N5 · 面板皮消费面清点 + 圆角率自检(不改值)
|
|
||||||
|
|
||||||
- 对 F5 的 8 处消费点 + 未消费面逐一造册(哪面板该穿戏服、哪数据框该素面),依据 art-bible §7.1 判据「圆角=可触摸的物件,直角=须精确的信息」。
|
|
||||||
- 圆角值实测量(起草时点 `panel_flat` 第三参):**0 / 2 / 3 / 4 / 5 / 6 / 17 / 200** 八种;其中 17(标题屏底座椭圆)/ 200(结算金印,即 §7.1 的「圆形蜡封」)属条款明示的例外;真正的问题是余下 0/2/3/4/5/6 六档并存,与 §7.1「全 UI 恒定圆角率」本身就不一致。**是否收敛待 P5**。
|
|
||||||
|
|
||||||
### N6 · 既有纪律零回退(验收项,非改动项)
|
|
||||||
|
|
||||||
`ui_kit.gd:258` min_w=216 + SIZE_FILL、9 处豁免、`ui_struct_probe` 五族断言、模态登记纪律(F14)全部原样保持;本批任何结构改动后必须复跑全绿。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. 范围边界(🔴 不可越界)
|
|
||||||
|
|
||||||
| 禁项 | 理由 |
|
|
||||||
|---|---|
|
|
||||||
| 🔴 **零美术资源改动** | 用户 2026-10-05 立规。`game/assets/art/**`、`game/assets/ui/**`、`artwork/**` 三个目录内一切文件只读:禁改名、禁重烘/重采样/重 quantize、禁新增删除、禁重新导出。允许的只有 Godot `--import` 重刷类名缓存(已在 .import 目录,不属素材文件) |
|
|
||||||
| 🔴 **不改核心层** | 禁碰 `game/core/**`、`game/data/**`(`ui_kit.gd` 追加单点常量不属此列);本批为零逻辑变更的纯呈现批 |
|
|
||||||
| 🔴 **不改游戏数值** | 棋盘格边长若裁一个新值,只能是呈现层 `set_cell_area` 的 clamp/定值档调整,不得反馈到排雷玩法、装板校验以外的任何逻辑,也不重跑任何验收读数闸(MC 零跑) |
|
|
||||||
| 🔴 **不新开键盘/输入通道** | 排期 Beta(06「棋盘战斗键盘/手柄输入」条在册) |
|
|
||||||
| 🔴 **不动冻结条款而不双侧落文** | 若裁决要求改 art-bible §7.1/§7.2/§7.4/§8.1/§8.2 或 HUD框架格边长条款的冻结值,必须**代码与文档同批双侧落文**,禁单侧改完留下「两边说法不一致」的漂移 |
|
|
||||||
| **不触碰迭代 15② 在飞文件** | 奇物批实施段仍在迭代 15;T0 复核文件交集,命中即停机呈报 |
|
|
||||||
| **不做原型侧的交互形态改动** | C 区两段、战报形态、商店刷新/库存、失败结算奖励行均已由 v2 落码 §七 终裁(见 §8-P9 注销清单),本批不重开 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. 设计契约(🔴 触碰 = L3 停机)
|
|
||||||
|
|
||||||
| # | 契约 | 验证方式 |
|
|
||||||
|---|---|---|
|
|
||||||
| 🔴 R1 | **色板单点**:一切取色经 `UiKit` 常量;新增取色先立常量再消费;呈现层裸 `Color8(` 目标清零(过渡期只允许 §3-N4a 白名单内的在册处) | 静态计数 + review |
|
|
||||||
| 🔴 R2 | **资源红线**:素材一律 `UiKit.load_tex`(exists 守卫 + null 回退);呈现层 `preload` 素材 = 0;**素材文件零改动** | 静态 grep + 冒烟 |
|
|
||||||
| 🔴 R3 | **对比度硬指标**:一切文字对直背景 ≥4.5:1(§7.2 无区域例外);文字禁直压纹理底——须垫容器/色牌 | §7.2 T0/T2 机检脚本实跑 |
|
|
||||||
| 🔴 R4 | **宽度与探针闸零回退**:`UiKit.button(min_w=216)` 语义不动;新增布局改动后 `ui_struct_probe` 五族断言零红(含 modal 屏 `queue_sort` 强制手法) | probe_gate 默认段 |
|
|
||||||
| 🔴 R5 | **模态登记纪律**:若本批新增任何层,必须走 `_register_modal` + `_open_modal` 单口(禁绕栈直开,迭代 6 卡⑨事故先例) | ui_click_probe |
|
|
||||||
| 🔴 R6 | **减动效遵守**:本批落的一切动效/呈现补间经 `UiKit.motion()` 包装(`ui_kit.gd:115`);新增的呼吸/浮动/抖动面一律是无时长书写的静态表现,不新增第二个动效开关 | settings_store 双态断言 |
|
|
||||||
| 🔴 R7 | **文档双侧同步**:任何触及 art-bible §7.1/§7.2/§7.4/§8.1/§8.2 或 HUD框架格边长条款的裁决,同批落文,零「代码一套文档一套」 | doc 三闸 + 人工复核 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 6. 任务卡(逐卡一个 loop 轮次)
|
|
||||||
|
|
||||||
> 估时按「裁决要求实装」计;若某裁点裁决为「维持现状」,对应卡退化为一行注记(≈0.1d)。
|
|
||||||
> 依赖列:`—` = 无阻断(可直接发令);`P#` = 依赖 §8 对应裁点。
|
|
||||||
|
|
||||||
| 卡 | 内容 | 依赖 | 估时 | 轻闸 | 完成判据 |
|
|
||||||
|---|---|---|---|---|---|
|
|
||||||
| **T0** | 开工:worktree + **基线重测回填**(冒烟/run_all/三探针/doc 三闸/熵增)+ §2 事实表 15 项复核(重点 F2/F3/F6/F7/F9/F10/F15)+ 与迭代 15② 文件交集核对 + **demo md5 重核(留痕一次,此后不回读 demo 文件——Q9 丙)+ 7 处对比度实机重跑(替换 demo 读数)** | — | 0.25d | 冒烟基线 | 基线回填表;demo md5 与行号漂移注记;交集零命中或停机呈报 |
|
|
||||||
| **T1** | N3 preload 红线批(`status_slot_row.gd:21-29` → 路径串 + `load_tex`);**可单独切分 micro-loop** | — | 0.25d | 冒烟 + ui_struct | §1.2-2 |
|
|
||||||
| **T2** | N1 对比度七处修法落码(含 T0 实机读数回填校验)+ 新增 UI 文字对比度机检脚本入轻闸 | — | 0.75d | 冒烟 + 机检 + ui_struct | §1.2-1 |
|
|
||||||
| **T3** | N2 站桩纵向余量纪律(`:26`/`:417-419`/`:476`)+ 站桩不出框断言入探针 | — | 0.25d | 冒烟 + ui_struct | §1.2-4 |
|
|
||||||
| **T4a** | N4a 五处漏网裸色收 `ui_kit`(原值搬运,零观感)+ N4c `TG_*` 五族立项并替换两处内联 + **商店补分族判定**(Q4 甲) | ✅ | 0.65d | 冒烟 + ui_struct | §1.2-3/5 前半 |
|
|
||||||
| **T4b** | N4b 五处漂移**按 P7 乙案改代码向 demo**(`PANEL_DATA`→`#E9D9B8`、`PANEL_BORDER`→`#786E58`、`SLOT_BACKDROP`→`#3E362C`、`HP_BAR_BACK`→`#282220`、`CAMP_HEADER_BAND`→`#6E4526`)+ art-bible §7.2 同步注记 | ✅ P7=乙 | 0.5d | 冒烟 + ui_struct | §1.2-3 |
|
|
||||||
| **T5** | N5 面板皮消费面清点 + **P4 乙案:`ui_kit.gd:286` `texture_margin` 8 → 16**(button 维持 8)+ **Q1 丙案 `panel_skinned()` content margin clamp(工厂单点,调用点零改)** + P5 甲案圆角收敛为单一 `RADIUS_OBJECT` + 文案双侧落文 | ✅ P4=乙 / P5=甲 | 0.75d | 冒烟 + ui_click | §1.2-7 前半 |
|
|
||||||
| **T6** | 字号档位表 `FS_*` 立项 + 全库裸字号替换 + 低于 §7.4 下限的 26 处提档(含 decorations caption 豁免与否) | ✅ P3=甲 | 1.0d | 冒烟 + ui_struct/ui_layout | §1.2-7 中 |
|
|
||||||
| **T7** | ①**P6 甲案缩放纪律**(64×64 柜台四枚→**统一 32px**、50×52 地图头像→高定宽随、56×56 BCard 槽→40px、32×32 状态与瓦片)②**P10 乙案记忆态**:`board_cell_unit.gd` `_draw` 新增「地板纹理 + 灰罩 α.66」合成层 + 复跑记忆墨对比 ≥4.5:1 ——**棋盘格边长已裁零改动,不在本卡**;§8.2 例外登记随批落文 | ✅ P6=甲 / P10=乙 | 1.0d | 冒烟 + ui_struct + board_shot | §1.2-7 后半 |
|
|
||||||
| **T8** | **P8 甲案:只做卡顶类型色带试点**——`bcard` 的 `band` 随各 `TG_*` 逐卡生成 Bayer 有序抖动带(α 由深至 0)。**不跟 demo 的 CSS 渐变/blur**;B 区光柱与全站抖动留作后批 | ✅ P8=甲 | 0.5d | 冒烟 + ui_struct + board_shot | §1.2-7 末 |
|
|
||||||
| **T9** | 重闸:全量轻闸(含 ui_struct/ui_click/ui_layout/ui_input)+ doc 三闸零新增 + 熵增闸 | — | 0.25d | 重闸全绿 | §1.2-8 前半 |
|
|
||||||
| **T10** | 人闸:实机目检清单(**§1.4 整屏样张闸四项并入——Q2 乙** + 八屏对比 QA + 站桩不裁 + 对比度机检抽测 + 棋盘清晰度 + 1920 档复验 + 减动效双态)+ 代拍板追认 | — | 0.5d | 目检过 | §1.2-8 |
|
|
||||||
| **T11** | 收口五步 + 06/roadmap 状态行收口 | — | 0.25d | — | 收口齐 |
|
|
||||||
|
|
||||||
> **估时合计 ≈ 6.9d**(T0-T11;2026-10-06 定取向后重算:T4a 0.5→**0.65d**〔Q4 甲商店补分族〕、T7 0.75→**1.0d**〔并入 P10 记忆态〕、T8 1.25→**0.5d**〔P8 取甲仅卡顶试点〕)。知情预挂:**超软盒 3 日上限**,必须拆段。
|
|
||||||
> **三段切分预案**:
|
|
||||||
> - **段一(无阻断)** = T0 + T1 + T2 + T3 + T4a ≈ **2.15d** —— 自然切分点 **T4a 末**(此时已收完全部无分歧项,可交付一版「合规达标 + 单点收口、但视觉几乎未变」的中间态,用户可先行目检确认方向)。**全部裁点已定取向,段一可随时发令。**
|
|
||||||
> - **段二(取向依赖)** = T4b + T5 + T6 + T7 + T8 ≈ **3.75d** —— 自然切分点 **T6 末**。
|
|
||||||
> - **段三(收口)** = T9 + T10 + T11 ≈ **1.0d**。
|
|
||||||
> **不入本批**:§8.3-C 三条结构级差异(卡片 232×352 / 商店全屏化 / 地图底栏合并)已登记 06 待立项,不占本批估时。
|
|
||||||
> **合并方式(Q7 甲案)**:三段 = **同一迭代内的三个任务卡组,只在段三末合并一次**(段间不合并、不占额外迭代位),符合 roadmap「一迭代一 loop、一次合并登记」纪律。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 7. 验证闸
|
|
||||||
|
|
||||||
- **轻闸**(每轮):run_smoke 全量 + ui_input_probe + **ui_struct_probe**(本批触 presentation,加跑 ui_click_probe + ui_layout_probe)。
|
|
||||||
- **新增机检段**(T2 起入轻闸):①UI 文字对比度机检(无区域例外 ≥4.5:1)②呈现层裸 `Color8(` 计数与白名单比对 ③呈现层素材 `preload` 计数 = 0。
|
|
||||||
- **整屏样张闸(§1.4)处置 = Q2 乙案**:**不走独立样张闸**——demo v2.1 八屏本身即方向稿且已获用户验收,「方向稿目检先行」这一环在 demo 阶段已完成;改为把 §1.4 四项(文字对比 ≥4.5:1 / 明度分层三档带 / 整屏焦点预算首焦唯一 / 文字禁压纹理底)**原样并进 T10 人闸目检清单**,机检冻结随 T9 重闸一起做。
|
|
||||||
- **重闸**(T9):全量轻闸 + doc 三闸零新增 + 熵增闸。
|
|
||||||
- **MC**:纯呈现批,零数值零 RNG 消费变化 → **零 MC**(两入口铁规 + 无数值改动禁跑 MC)。若 T7 落 32px 导致装板校验/ `set_cell_area` 公式范围变更,仍不适用 MC(不改游戏逻辑),但须补「同一 seed 逐位一致」的结构类断言。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 8. 代拍板白名单与裁点(P1/P2 已裁 · 其余八项取向已定)
|
|
||||||
|
|
||||||
### 8.1 白名单内(实现层无争议项)
|
|
||||||
|
|
||||||
- 新常量命名前缀与摆放顺序(`FS_*` / `TG_*` / 色板族内按语义族分组)
|
|
||||||
- 探针 case 编号与断言文案
|
|
||||||
- 对比度垫牌的确切几何(宽 = 字宽 + N px,N 由 6/8 二选一)
|
|
||||||
- 未消费 `panel_skinned` 的面板补面顺序(按 §7.1 判据逐面判定即可)
|
|
||||||
- 抖动引擎的 Bayer 矩阵阶数(4×4 / 8×8)——**范围已由 P8 裁决**,矩阵阶数属实现细节
|
|
||||||
- **`RADIUS_OBJECT` 取值 = 5**(2026-10-06 代拍板,**可推翻**):与 `primary_button` / `danger_button` 现用 5px 同值(`ui_kit.gd:358` / `:374`),面板与按钮同圆角率即满足 §7.1「全 UI 恒定圆角率」;若 T5 目检嫌大改 4
|
|
||||||
- **未消费 `panel_skinned` 的面板不强制补皮**(2026-10-06 代拍板):按 §7.1 判据逐面判定——容器/分组框穿戏服,数据框/准线/进度条保持直角素面;判定结果随 T5 造册留痕,**不追求「全部补皮」**(WB 的「补到 9 处」是数量目标,不是判据)
|
|
||||||
- **新增机检脚本落点** = 新建 `game/smoke/ui_contrast_probe.gd`,并入 probe_gate 默认必跑段(与 `ui_struct_probe` 并列,不合并)
|
|
||||||
- **R7 文档双侧清单(本批要改的文档)**:P3 字号档位 + P11 装饰 caption 豁免 + 站桩血数「条带内读数」豁免 → **§7.4(:417)**;P7 五处色板 → **§7.2(:404)**;P10 记忆态 → **§6.5(:378)**;P6 例外登记 → **§8.2(:438)**;P4 九宫格切片 → art-bible 无既有条款,**新增注记**
|
|
||||||
|
|
||||||
### 8.2 裁点归档 ✅(全备选案 + 淘汰依据;P1-P11 已全裁)
|
|
||||||
|
|
||||||
> **进度(2026-10-06 更新)**:P1 / P2 **已裁**;其余 8 项**取向均已定**(用户采纳推荐,见各小节首行)——**P4 / P7 / P10 跟 demo**,**P3 / P6 / P8 / P11 按条款解**,**P5 两路同结论**。**适用范围、例外与三条不入本批的结构级差异 = §8.3。**
|
|
||||||
|
|
||||||
#### P1 · 底色冷暖(对照 §三①)—— ✅ 已裁,取甲案
|
|
||||||
|
|
||||||
> ✅ **用户裁决(2026-10-05)**:取**甲案**——维持现行 master 暖化三件套(`BG_ROOT #3A2E22` / `BG_OVERLAY #362B20` / `BG_BRIGHT #453723`)+ `CANDLE` + `WARM_*` 全套,demo 与 OPT-A 的近黑案作废。本项代码**零改动**;下表留档备查。
|
|
||||||
|
|
||||||
| 案 | 内容 | 依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| **甲(推荐)** | **维持现行 master 暖化**三件套 `BG_ROOT #3A2E22` / `BG_OVERLAY #362B20` / `BG_BRIGHT #453723`(`ui_kit.gd:65-67`)+ `CANDLE` 与 `WARM_*` 全套;demo 与 OPT-A 的近黑案作废 | ①已是 2026-10-04 M0 批落码结果,art-bible §7.2(:410) 已立「琥珀双岗注记」写明系主动取舍防回改;②这正是 OPT-A §6③ 自注的答案(「若认为暖化方向对,则应改代码而非改 demo」),M0 照此执行;③回退 = 推翻一个已合并批 + 改冻结注记,成本最高收益负 |
|
|
||||||
| 乙 | 回退近黑 `BG_ROOT #1E1914` / `BG_OVERLAY #1C1612`(OPT-A §5 P1-T1「以代码为唯一来源」) | OPT-A 该提法成文于 M0 **之前**,其前提(代码未改)已不成立;且 OPT-A 自承此案需「重开一个色板批」——若用户真要近黑,应作独立色板批重商,不塞在本批 |
|
|
||||||
| 丙 | 中间档折衷(如 `#2C2419` 级) | 两侧都不讨好:既推翻 M0 冻结值,又不回到 OPT-A 提案值,属于凭空造第三个未评审值,两侧都不讨好,评估成本最高。**淘汰** |
|
|
||||||
|
|
||||||
#### P2 · 棋盘格边长(对照 §三②)—— ✅ 已裁,取丁案(零改动)
|
|
||||||
|
|
||||||
> ✅ **用户裁决(2026-10-05)**:取**丁案**——`board_view.gd:251` 的 `clampi(cell, 26, 46)`、`:114` 默认 46.0、`board_cell_unit.gd:13` 与全部棋盘绘制**一字不改**;本次不动棋盘游戏画面。
|
|
||||||
> 随之确定三件事:①T7 卡删除「棋盘格边长」子项(缩为纯缩放纪律);②三方取值不一致(46/45/44)作为**已知偏差**登记(§2.1 + 06),本批不单侧改 HUD框架条款;③P6 若裁出「显示尺寸变化」,仍不得反向改动格边长。下表留档备查。
|
|
||||||
|
|
||||||
> 事实前提(F6/F7):三方取值互不等 —— 代码 = 动态公式 `clampi(cell, 26, 46)`(`board_view.gd:251`);demo = 44px(html:288);冻结条款 = art-bible §8.1(:433) 锚点 45(10×10)/36(12×12) + HUD框架:72 装板校验区间 [30,45]。
|
|
||||||
|
|
||||||
| 案 | 内容 | 依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| **甲(推荐)** | **保留动态公式,把 clamp 上限 46 → 45**(对齐冻结条款的定值档),T0 实测登记 10×10 / 12×12 两板的实际落值;demo 的 44px 在文档中标注为「原型参考值,非条款」 | 唯一同时满足三方约束的写法:HUD 定值 45 与校验区间 [30,45] 都守住,动态公式仍能在扩板(13×13/14×14,§8.1 注明换算值未定稿)时兜底。代价:32×32 瓦片在 45px 格为 **1.406×**,属甲类非整数,须在 §8.2 追加一条与「1920 档 1.35× 例外」同级的接受代价注记 |
|
|
||||||
| 乙 | 定值 **32px**(OPT-A §6②甲)——32×32 瓦片 1× 整数倍,甲类缩放硬规则全绿 | 32 落在装板区间 [30,45] 内**合法**,是唯一能让甲类纪律零违规的取值;但推翻 §8.1 两个冻结锚点(45/36),棋盘可视面积较 45px 缩约 29%,且 12×12 板能否塞进须重跑装板校验。**收益(纪律合规)明确、代价(版面缩水)也明确,请用户按优先级排序裁决** |
|
|
||||||
| 丙 | 定值 **45px / 36px** 两档、**取消动态公式**(整合对照 C 侧 §8.1 锚点意旨) | 严格贴条款,但与甲的区别只在「是否保留公式」:一旦扩板定档,没有公式兜底就得再改一次,反而多一轮改动。建议并入甲一并考虑(保留公式 + 上限 45,观感与丙等价,且留了兜底) |
|
|
||||||
| 丁 | 维持 clamp[26,46] 一字不改 | 现行上限 46 **已越出** HUD 定值 45,是实机与条款之间的一条既存不一致(只是当前未被断言触发)。选丁本身不是问题,但**必须同时在 HUD框架:72 把 46 写进条款**,否则这条不一致会一直挂着 |
|
|
||||||
|
|
||||||
#### P3 · 字号档位(对照 §三③)
|
|
||||||
|
|
||||||
> ✅ **取向已定(2026-10-06 用户采纳推荐)**:取**甲案**——立 `FS_*` 档位表(12/14/16/18/24/34)。**不跟 demo**:demo 字号实测 10×2 / 11×6 / 12×15 / 13×11 / 14×12 / 15×8,**34 处低于 §7.4 tooltip 下限 14、54 处低于正文下限 16**,跟了即批量引入条款违规。P11 已裁给豁免 ⇒ 12 档保留。
|
|
||||||
|
|
||||||
> 事实前提(F8):实机实测 15 个裸字号档,其中 **26 处低于 §7.4 下限**(正文/明细 ≥16、tooltip ≥14、棋盘数字 ≥18)。两案各自的六档里**都含**低于 §7.4 下限的档位,须先在 P11 取得豁免才能成立。
|
|
||||||
|
|
||||||
| 案 | 内容 | 依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| **甲(推荐)** | **混合案**:`FS_CAPTION 12` / `FS_HINT 14` / `FS_BODY 16` / `FS_SUB 18` / `FS_TITLE 24` / `FS_H1 34`(WB G1 六档);若 P11 不给豁免,则降为从 14 起的五档 | 档数最少、语义名可读;12/14 两档正好对应装饰位与 tooltip 下限,16/18 两档对应正文与棋盘数字下限,改动面集中在「低于下限」的那 26 处而非全库 |
|
|
||||||
| 乙 | OPT-A 六档 `12/16/24/32/40/48` | 缺 14/18/20/22 档,现有 13/15/17/20/22/26 六档会被迫就近上跳/下坠,**实际改动面比甲更大**;且同样依赖 P11 给 12 档豁免。保留为备选 |
|
|
||||||
| 丙 | 保守下限档 `14/16/23`(整合对照 C 侧口径) | 23 是棋盘数字在 45px 格的下限值(`ceil(45×0.5)`),但它是**一个画面某一处的下限值、不是全站 type scale**,单独成案会漏掉绝大多数文字位。降级为甲内部的一档取值 |
|
|
||||||
| 丁 | 不立档位表,只在现有 15 档上逐处「低于下限者提档」 | 能达标但不治根:下一次新界面仍会漂出第十六档。**淘汰**,除非用户只想做最小改动作为过渡 |
|
|
||||||
|
|
||||||
#### P4 · 九宫格切片值(对照 §三④)
|
|
||||||
|
|
||||||
> ✅ **取向已定(2026-10-06 用户采纳推荐)**:取**乙案**——`ui_kit.gd:286` panel `texture_margin` 8 → **16**,与 demo `.plate9` slice 16 对齐;button 维持 8/8。属 §8.3 判定「**跟 demo**」。代价:面板边角占比变大,已目检通过的面板观感会变,须随 T5 一并目检。**连带(Q1 丙案)**:`panel_skinned()` 工厂内加 **content margin clamp**——content margin < `texture_margin` 时自动抬到 `texture_margin`。依据:实查 9 处消费点中 **7 处 content margin < 16**(`hero_info_panel_view.gd:34` `(8,6,8,6)`、`battle_stage_view.gd:93` `(12,4,12,4)`、`ui_kit.gd:401` `(12,10,12,10)` 等),不处理则内容压到石框纹理上。调用点零改。
|
|
||||||
|
|
||||||
> 事实前提(F4):实机 `texture_margin` 恒 8(panel `:286` / button `:327-331` / frame `:299` = 12);素材 `panel_stone.png` 与 `button_stone.png` 实测均 **48×48**;demo `.plate9` border 12 / slice 16(html:59)、`.btn9` border 11 / slice 16(html:61)。
|
|
||||||
|
|
||||||
| 案 | 内容 | 依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| **甲(推荐)** | **维持实机 8 不动**,把 demo 的 slice 16 判定为原型侧偏差 | ①48×48 源在 margin 8 下,四角 8×8 足以承载石块纹样,中间拉伸区 32px,宽裕;②改 16 会把中间拉伸区压到 16px,大面板(如营地 372px 三柜台列)拉伸时纹理中心带被压缩;③WB 变体自己第 1 行的结论就是「实机 8 是对的 → 原型向实机对齐」,与本案同指 |
|
|
||||||
| 乙 | panel `texture_margin` 8 → **16**(WB 变体 §四.1),button 维持 8 | demo 侧选 16 的动机是「边缘 1:1 不插值」;Godot `StyleBoxTexture` 在 margin 8 下同样是边角原位、中段拉伸,不存在 demo 那种浏览器 border-image 的缩放插值问题。属纯口味差异,且会不可逆地改变现行已目检通过的外观。**保留备选** |
|
|
||||||
| 丙 | panel 与 button 全部改 16 | 同乙且波及面更大——按钮是全站最高频件。**淘汰** |
|
|
||||||
|
|
||||||
#### P5 · 圆角去留(对照 §三⑤)
|
|
||||||
|
|
||||||
> ✅ **取向已定(2026-10-06 用户采纳推荐)**:取**甲案**——语义不动、数值收敛为单一 `RADIUS_OBJECT`(4 或 5,T5 目检定);数据类保持 0;底座 17 / 金印 200 属 §7.1 例外保留。本项**跟不跟 demo 结论一致**(demo 容器走石板皮、主/危钮 5px,实机已等价)。
|
|
||||||
|
|
||||||
> 事实前提(N5):实机圆角值实测并存 **0/2/3/4/5/6/17/200** 八种;art-bible §7.1(:395) 判据 =「圆角 = 可触摸的物件,直角 = 须精确的信息」,面板 = 石板圆角矩形(**全 UI 恒定圆角率**),数字框/准线/进度条一律直角细线。**B 侧与 C 侧引的是同一条款的不同半句**,不是两条互相冲突的条款。
|
|
||||||
|
|
||||||
| 案 | 内容 | 依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| **甲(推荐)** | **语义不动、取值收敛**:容器/按钮 = 单一 `RADIUS_OBJECT`(4 或 5,由 T5 目检定);数据框/数字牌/AP 点阵/准线/血条 = 0(直角)保持;底座椭圆 17 / 结算金印 200 属 §7.1 明示例外,保留 | 双方要的东西实机**各自都已成立**:B 侧要的「精确信息直角」在实机已是 0,C 侧要的「圆角为世」在容器面已是圆角。真实遗留问题是六个不同数值并存,与「全 UI 恒定」不自洽——这一步的工作是**把数值收敛成一个**,不是改谁的语义 |
|
|
||||||
| 乙 | 按 B 侧扩展到开关/滑杆/血条/数字牌去圆角 | 实机这些件本就是 0/2(`switch_toggle` 轨道 3 / `styled_slider` 0 / 血条 `_draw` 矩形 0),可落空间极小;**降级为甲内部的子项**,不单列 |
|
|
||||||
| 丙 | 全站统一单一圆角(连数据框也倒圆角) | 直接违反 §7.1「数字框、准线、进度条一律直角细线、无纹理」。**淘汰** |
|
|
||||||
|
|
||||||
#### P6 · 图标尺寸解法(对照 §三⑥)
|
|
||||||
|
|
||||||
> ✅ **取向已定(2026-10-06 用户采纳推荐)**:取**甲案**——分族定显示档(纯代码、零素材改动)。**demo 不能当标准**:demo 自身同样是 64→20(0.3125×)与 32→16(0.5×)非整数倍违规,跟它等于继承违规。
|
|
||||||
|
|
||||||
> 事实前提(F12):手绘十枚 **20×20 已入库**;柜台四枚 `icon_forge/workshop/atlas/keystone` **仍 64×64** 而显示 20px(0.3125×);状态九枚 32×32 → 显示 24px / 16px(0.75× / 0.5×);BCard 图标槽 56×56 吃 20×20(2.8×);地图头像 50×52 吃 46×48(纵横异倍)。**红线:素材一字节都不能改** ⇒ 唯一可调的是「显示尺寸」。
|
|
||||||
|
|
||||||
| 案 | 内容 | 依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| **甲(推荐)** | **分族定显示档(纯代码,零素材改动)**:①手绘十枚 → 20px(1×) / 40px(2×) 双档,全部消费点二选一;②柜台四枚 64×64 → **统一 32px(0.5×)**,在 §8.2 登记一条例外(「64 源在 32 位 0.5×,待美术批出 32 源后消除」)——**Q3 甲案已关掉「32 / 64」二选一**;③状态九枚 32×32 → 常规档显示 **32px(1×)**;**mini(站桩)档维持 16px**,与 ② 共用同一条 0.5× 例外登记——实算:站桩宽 150px(`standee_body.gd:26`),4 槽 ×32px + separation 6×3 = 146px,**几乎无余量**,故 mini 档不动;④BCard 槽 56 → 40px(2×);⑤地图头像改「高定宽随」:定高 48px(1×),宽随源图比自适应(46×48 → 46×48,纵横异倍消除) | 唯一不破红线的路径。代价是若干位置的体积变化会带来连带布局微调(营地头带、BCard 卡面、B 区状态槽),需要 T7 一并目检确认不挤压既有结构(由 `ui_struct_probe` 兜底) |
|
|
||||||
| 乙 | 素材重烘 32/20 两族(OPT-A §2.3 修法) | 甲类纪律最干净的解,但**直接撞美术红线**(`game/assets/art/**` 不动)。本批不可选;改登 06「图标素材族重烘」条目,交用户自理的美术批 |
|
|
||||||
| 丙 | 64px 源 ÷2 显示 32px(WB G10) | 与甲②同解,但 WB 原文同时要求「资产批同步出 32px 变体」——去掉那半句后即等于甲②。**并入甲,不单列** |
|
|
||||||
| 丁 | 维持现状 + 在 §8.2 登记容留 | 现状四处均属甲类硬规则违规(0.3125× / 0.75× / 0.5× / 纵横异倍),容留等于承认条款破口。**淘汰** |
|
|
||||||
|
|
||||||
#### P7 · 色板唯一来源(对照 §五)
|
|
||||||
|
|
||||||
> ✅ **取向已定(2026-10-06 用户采纳推荐)**:取**乙案**——**demo = 唯一来源**,5 处改代码向 demo。属 §8.3 判定「**跟 demo**」。**demo 文件一个字节不动**(artwork 只读红线);五处 Δ 值均 ≤6/255,目视不可辨。
|
|
||||||
|
|
||||||
| 案 | 内容 | 依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| **甲(推荐)** | **代码 = 唯一来源**;demo 侧 5 处未收漂移值(F2)**一律作废**。demo 的处理方式有两种落法:①**不动 demo 文件**(本任务书 §2.1 已记明这 5 处作废);②在 demo 顶部加一行注记说明「此 5 值实机取值为准,demo 值作废」。**推荐①**——不动 demo 文件更符合「artwork 只读」红线 | 「单点」纪律本身已冻结(`ui_kit.gd:3` 头注);demo 是方向稿,不能反向约束实现;且 M0 已经示范过一趟:当时向 demo 对齐的那些 token,落地方式也是**改代码**而不是改 demo |
|
|
||||||
| 乙 | demo = 唯一来源;5 处改代码向 demo(`PANEL_DATA`→`#E9D9B8`、`PANEL_BORDER`→`#786E58`、`SLOT_BACKDROP`→`#3E362C`、`HP_BAR_BACK`→`#282220`、`CAMP_HEADER_BAND`→`#6E4526`) | 与 M0 已经走通的方向相反,会造成「同一份 UI 里两套追求并存」;且五处 Δ 值均 ≤6/255、**目视几乎不可辨**,为此改 5 个消费面很广的 token 性价比极低 |
|
|
||||||
| 丙 | 逐个议:5 处各按明度差大小分别取向 | 无原则可依,下一次还会再漂一次。**淘汰** |
|
|
||||||
|
|
||||||
#### P8 · 抖动呈现范围(对照 §五)
|
|
||||||
|
|
||||||
> ✅ **取向已定(2026-10-06 用户采纳推荐)**:取**甲案**——只做卡顶类型色带试点(≈0.5d),与 `TG_*` 五族耦合一次落到 `bcard`。**不跟 demo**:demo 的 CSS 平滑渐变(5 处)+ `drop-shadow` blur(3 处)违反像素纪律,改走 Bayer 有序抖动/硬边。全站与战斗屏两种更大范围留作后批登记。
|
|
||||||
|
|
||||||
> 事实前提:实机**无** CSS 平滑渐变,只有 Godot `_draw` 里的 alpha 渐隐——最典型的是 B 区光柱 60 段 α26→0 渐隐(`battle_stage_view.gd:143`)与若干 `Color()` 罩层。抖动=把渐变换成 Bayer 有序抖动的色阶台阶,属纯绘制代码改动,不碰素材。
|
|
||||||
|
|
||||||
| 案 | 内容 | 依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| **甲(推荐)** | **只做卡顶类型色带试点**:`bcard` 的 `band` 随各 `TG_*` 逐卡生成抖动带(α 由深至 0)——OPT-A §5 P2-T3 自己推荐的「最低风险 + 复用已有常量 + 收益直观」组合 | 与 T4a 的 `TG_*` 五族天然耦合,一次就能落到 `bcard` 一个件上;改动面在 `_draw` 但面积极小;万一观感不佳,回滚只是去掉一个参数位 |
|
|
||||||
| 乙 | 只在战斗屏铺(B 区光柱 + 暗角 + 棋盘压暗 + 落影) | 观感收益最大的一块,但也正是 `_draw` 里最敏感的面——站桩叠层序与棋盘焦点分配都已冻结(样张 v2 / board_shot 断言在册),一动就可能牵动既有渲染像素类断言与派样张基准。**建议作为独立后批,不混入本批** |
|
|
||||||
| 丙 | 全站铺(OPT-A 原案) | OPT-A 自评「纯增美而非修缺陷,风险高于 P0/P1」;全站铺需要先做一个完整的 Godot 侧有序抖动工具(低分辨率渲染 + NEAREST 放大 + Bayer 矩阵),估时会越过软盒。**保留为长期方向,本批不接** |
|
|
||||||
|
|
||||||
#### P9 · §五 其余开放项的处置(已决 / 注销清单)
|
|
||||||
|
|
||||||
> 以下均已在 [UI重设计原型v2落码-差异对照与改动计划-2026-10-04.md §七](UI重设计原型v2落码-差异对照与改动计划-2026-10-04.md) 由用户终裁,本批**不重开**;若用户要翻案须明示。
|
|
||||||
|
|
||||||
| 原开放项 | 终裁 | 出处 |
|
|
||||||
|---|---|---|
|
|
||||||
| C 区「本关强化 / 流派件」两段撤留 | **不撤**(保留 + 紧凑化,口径细节收悬停) | 落码计划 §7.1 P-C1 |
|
|
||||||
| 战报:就地抽屉 vs 模态回看 | **两者都不做**——冒险中不提供数据回看,战报带只留单行;`settlement_review_overlay` 与结算框「明细回看」钮退役;历史查看归「生涯」界面(迭代 17 卡④) | 落码计划 §7.1 P-C7 + §7.4 |
|
|
||||||
| 商店刷新钮 / 库存余量 | 刷新**做**(核心小批 SR-1,共享池与三选一同账本);库存余量**退役**(仅呈现层退役,数据层 `stock_left` 不动) | 落码计划 §7.1 P-C2 + §7.3 + §7.3-a |
|
|
||||||
| 失败结算奖励行 | 维持**整行隐藏**(OQ14 不推翻) | 落码计划 §7.1 P-C4 |
|
|
||||||
| 胜利演出两套取一 | 两套并存 + 开关(`UiKit.victory_fx_style` 已实装于 `ui_kit.gd:112`) | 落码计划 §7.1 P-C5 |
|
|
||||||
| `--candle` 归属 | **新增 CANDLE 常量**(OPT-A §6① 甲案)已落 `ui_kit.gd:68` | OPT-A §6① + F1 |
|
|
||||||
|
|
||||||
#### P10 · 记忆态(迷雾)呈现口径(对照 §五)—— ✅ 取向已定
|
|
||||||
|
|
||||||
> ✅ **取向已定(2026-10-06 用户采纳推荐)**:取**乙案**——改 demo 口径「地板纹理 + 灰罩 α.66」,在 `board_cell_unit.gd` `_draw` 新增一层合成(允许:新增绘制路径**不属**改素材)。属 §8.3 判定「**跟 demo**」。⚠ **不可让的底线**:改后须复跑记忆墨 `#C4C4C4` 对**加纹理后**的底是否仍 ≥4.5:1(§7.2 属优先级栈②,demo 在此让位于条款)。
|
|
||||||
|
|
||||||
| 案 | 内容 | 依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| **甲(推荐)** | 维持实机「记忆板 `#3A3A3A` 平涂 + `#C4C4C4` 记忆墨」(`board_cell_unit.gd:114-115`;art-bible §6.5(:378) 已立条款:记忆墨对记忆板 ≈6.3:1,过 §7.2 硬指标) | 已有 provisional 自检锚、对比度达标,且这条呈现口径已在迭代 11④ 迷雾批按「迷雾目检指引七步」做过目检确认;demo 侧「地板纹理 + 灰罩 α.66」叠上去反而会在实机瓦片态多一层合成、数字更难读 |
|
|
||||||
| 乙 | 改 demo 侧口径「地板纹理 + 灰罩 α.66」 | 需在 `_draw` 新增一层纹理合成路径;本批虽禁改素材,但**新增绘制路径是允许的**,所以技术上可行——分歧只在观感。倾向甲,请用户拍板 |
|
|
||||||
|
|
||||||
#### P11 · 装饰性 overline caption(11–12px)是否在 §7.4 给正式豁免(对照 §五)—— ✅ 取向已定
|
|
||||||
|
|
||||||
> ✅ **取向已定(2026-10-06 用户采纳推荐)**:取**甲案**——在 §7.4 明文给装饰性 caption **12px 豁免** + 附逐处清单(实机在册 11px×5 + 12px×9 须逐处判定是否真属装饰位)。**不跟 demo**(demo 的 10–13px 直接低于下限)。**合并条款(Q5 甲案)**:本豁免与站桩血数 11px 的「条带内读数」豁免**写成同一条款**,不开两个口子。
|
|
||||||
|
|
||||||
| 案 | 内容 | 依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| **甲(推荐)** | **给正式豁免**——在 §7.4 明文写入「装饰性 overline / caption(不承载需精确读取的信息,仅作分区标题或氛围小字)可至 12px」,并附**逐处豁免清单**(实机在册 11px×5 处 + 12px×9 处,须逐处判定是否真属装饰位,不是装饰位的照 §7.4 提档) | 现实中确实需要比正文小一档的辅助层;有条款 + 有清单,下次就不会再漂回去(WB 变体 G16 同指) |
|
|
||||||
| 乙 | **不给豁免**——全部提至 ≥14px | 严格遵守现有条款,零解释成本;代价是营地/商店/地图的辅助小字变大,卡面信息密度上升,可能挤压既有布局(须 `ui_struct_probe` 复跑确认不出屏、不互压) |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 8.3 「以 demo 为准」的适用范围(2026-10-06 用户采纳:三层优先级栈)
|
|
||||||
|
|
||||||
> 用户提出「全部以 demo 为准」。逐项核证后定为**三层优先级栈**,**不是一刀切**——demo 是 2026-10-04 的方向稿,它在四类地方自己就不合格(见 C 段)。
|
|
||||||
|
|
||||||
| 层 | 内容 | 效力 |
|
|
||||||
|---|---|---|
|
|
||||||
| **① 最高** | 用户既往终裁:v2 落码计划 §七 P-C1 / P-C2 / P-C4 / P-C5 / P-C6 / P-C7;本批 P1 / P2 裁决 | demo 与 ① 冲突时**一律不跟 demo** |
|
|
||||||
| **② 合规底线** | art-bible §7.2(一切文字对直背景 ≥4.5:1,无区域例外)· §7.4(字号下限)· §8.2(甲类禁非整数 / 乙类禁纵横异倍)· HUD框架格边长条款 | demo 与 ② 冲突时**一律不跟 demo** |
|
|
||||||
| **③ 视觉方向** | demo 原型 v2.1 的取值 | 只在 ①② 都没说话处生效 |
|
|
||||||
|
|
||||||
#### A · 跟 demo(3 项)
|
|
||||||
|
|
||||||
| 项目 | 落地 |
|
|
||||||
|---|---|
|
|
||||||
| P4 九宫格切片 | `ui_kit.gd:286` `texture_margin` 8 → **16**(button 维持 8/8) |
|
|
||||||
| P7 色板唯一来源 | 5 个 token 改向 demo 值(F2 表,Δ≤6/255) |
|
|
||||||
| P10 记忆态 | 改「地板纹理 + 灰罩 α.66」,新增 `_draw` 合成层(不改素材) |
|
|
||||||
|
|
||||||
#### B · 不跟 demo,按条款解(4 项)
|
|
||||||
|
|
||||||
| 项目 | 为什么不跟 |
|
|
||||||
|---|---|
|
|
||||||
| P3 字号档位 | demo 字号 34 处 < tooltip 下限 14、54 处 < 正文下限 16(§7.4) |
|
|
||||||
| P6 图标尺寸 | demo 自身就是 64→20(0.3125×)/ 32→16(0.5×)非整数倍违规(§8.2 甲类) |
|
|
||||||
| P8 抖动呈现 | demo 用 CSS 平滑渐变(5 处)+ `drop-shadow` blur(3 处),**违反像素纪律**——WB 变体第 6/7 项已判 demo 违规;改走 Bayer 有序抖动 / 硬边 |
|
|
||||||
| P11 小字豁免 | demo 的 10–13px 直接低于下限;按 §7.4 另立豁免条款 + 清单 |
|
|
||||||
|
|
||||||
#### C · 不跟 demo,按 ① 用户终裁(见 §8.2-P9 注销清单)
|
|
||||||
|
|
||||||
| demo 主张 | 终裁(优先级高于 demo) |
|
|
||||||
|---|---|
|
|
||||||
| C 区「本关强化 / 流派件」两段撤出主画面 | **不撤**(P-C1) |
|
|
||||||
| 战报就地抽屉 / 明细回看 | **都不做**,归生涯界面(P-C7) |
|
|
||||||
| 失败结算奖励行灰显 | **维持整行隐藏**(P-C4,OQ14) |
|
|
||||||
| 设置屏「音效音量」行 | **不做**(P-C6) |
|
|
||||||
| 商店刷新钮 / 库存余量 | 刷新**做**(SR-1);库存余量**退役**(P-C2 + §7.3-a) |
|
|
||||||
|
|
||||||
#### D · demo 无标准可依(回条款 / 回迭代 17)
|
|
||||||
|
|
||||||
图例屏 · 调试浮窗 · 暂停层(迭代 17③)· 生涯界面(迭代 17④)· 1920×1080 档 —— demo 八屏不含这些面。
|
|
||||||
|
|
||||||
#### E · demo 结构级差异三条 —— **不入本批**,已登记 06
|
|
||||||
|
|
||||||
| # | 差异 | demo | 实机(实查) | 判定 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| **D1** | 卡片尺寸 | **232×352**(css:204;v2 落码计划 §7.2 勘误已记此为 demo 现行值) | `ui_kit.gd:404` `custom_minimum_size = Vector2(216, 300)` | 卡面整体放大,商店 / 三选一布局须重排 |
|
|
||||||
| **D2** | 商店屏形态 | bg-bright 全屏底 + 56px 顶栏(差异表 5.2 🔴「可裁:保持模态但换卡面」,**未裁**) | `shop_overlay_view.gd:32` 仍 `modal_shell` dim 0.6 模态 | 模态 → 全屏属结构级,须重审 R5 模态登记纪律 |
|
|
||||||
| **D3** | 地图底栏 | 合并单条 88px 亮条(头像+HP 轨+属性+加成+道具槽+放弃;差异表 4.4 🔴) | `level_map_screen.gd:141/151/160` 仍 `life_box`/`attr_box`/`bonus_box` 三独立框(**M5 底栏重构未落**) | 底栏重构,取舍面大 |
|
|
||||||
|
|
||||||
三条均**另立专项或独立呈现批**,本批不接、不占本批估时(风险与估时量级远高于样式对齐)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 9. loop engineering 八件对照(合规自证)
|
|
||||||
|
|
||||||
| # | 八件要求 | 本文对应 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 计划书八节 | §1 目标与完成定义 · §2 现状事实 · §5 设计契约 · §4 范围边界 · §6 任务卡 · §7 验证闸 · §10 异常分级 · §8 白名单与裁点 |
|
|
||||||
| 2 | T0 开工 | §6 T0(基线重测回填 + 事实表复核 + demo md5 重核 + 实机对比度重跑) |
|
|
||||||
| 3 | 循环骨架 | §6 各卡(读卡 → 对事实源 → 实装 → 轻闸全绿 → 提交 → 台账 → 下一轮) |
|
|
||||||
| 4 | 轻闸 | §7 轻闸段(触 presentation,加跑 ui_click + ui_layout + ui_struct + 新增三段机检) |
|
|
||||||
| 5 | 重闸 | §7 重闸段 + §6 T9 |
|
|
||||||
| 6 | 人闸 | §6 T10 |
|
|
||||||
| 7 | 异常分级 | §10 |
|
|
||||||
| 8 | 收口五步 | §6 T11 + §12(含 §8.3-E 三条结构级差异的 06 登记) |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 10. 异常分级
|
|
||||||
|
|
||||||
| 级 | 触发 | 处置 |
|
|
||||||
|---|---|---|
|
|
||||||
| **L1** | 单轮轻闸/机检红 | 一次重试自查(先查是否在册已知坑:modal 屏容器排序须强制 `queue_sort`,见 ui-struct-probe 出口报告 §六.6;营地 ScrollContainer 内容系坐标出屏系合法豁免; Godot 类名缓存须 `--import` 重刷) |
|
|
||||||
| **L2** | 同类红连续 3 轮;或某卡面/面板因尺寸调整出现内容挤压、局部出屏 | 记录进任务书与工作日志,报备后调整该处取值/申请豁免(**禁反向修改全局宽度基准 216**) |
|
|
||||||
| **L3** | 任一 🔴 R1–R7 破;或发现「此条非改素材不可达成」;或与迭代 15② 在飞面出现文件交集;或 §8 任一裁点在执行中发现需要推翻已冻结条款而未获用户裁决 | **停机写报告等用户发令** |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 11. 现状留痕(供执行会话读序)
|
|
||||||
|
|
||||||
```
|
|
||||||
1. design/research/UI预览demo三路改进整合对照-2026-10-04.md(事实源;§二/§三/§四/§五)
|
|
||||||
2. design/research/UI重设计原型v2落码-差异对照与改动计划-2026-10-04.md §七(既有终裁口径,§8-P9 注销依据)
|
|
||||||
3. artwork/ui-redesign-2026-10-04-optA/优化方案-OPT-A.md(§2 四张机检表 / §4 结构性技术债 / §5 分批 / §6 拍板点)
|
|
||||||
4. artwork/ui-redesign-2026-10-04/variants/wb-20261004/改动计划-wb-20261004.md(§四 16 项改动 / G1-G16 分组 / P-1…P-4)
|
|
||||||
5. game/presentation/views/ui_kit.gd(色板单点 :9-103 / 呈现杂色档 :74-83 / HEX :86-103 / StyleBox 工厂 :190-304 / M10 公共件 :343-512)
|
|
||||||
6. game/presentation/views/standee_body.gd:26/:417-419/:432/:438-439/:476(站桩盒、底座、血条、血数、名行)
|
|
||||||
7. game/presentation/views/board_view.gd:114/:246-251 + board_cell_unit.gd:13/:79/:114-115/:132/:138/:238(格边长公式与棋盘绘制)
|
|
||||||
8. game/presentation/views/status_slot_row.gd:21-29(preload 红线)· ap_bar_view.gd:74(RAP 标签)· hero_info_panel_view.gd:196-207(槽位字)
|
|
||||||
9. game/presentation/views/level_map_screen.gd:36/:127/:136/:143/:153(裸色 / 头像非等比 / 说明文)
|
|
||||||
10. design/qa/ui-struct-probe-exit-report-2026-10-05.md(宽度基准 216 / 9 处豁免 / 五族断言 / queue_sort 坑)
|
|
||||||
11. design/art/art-bible.md §7.1(:395) §7.2(:404) §7.4(:417) §8.1(:433) §8.2(:438) · design/gdd/systems/表现与支撑/HUD框架.md:67/72(格边长定值档与校验区间)
|
|
||||||
12. demo 侧实查锚点:`src/ui-prototype.html:59` `.plate9` border12/slice16 · `:61` `.btn9` border11/slice16 · `:204` `.bcard` 232×352 · `:288` 棋盘 44px · `:10-19` CSS 变量族(含 `--tg-*` 五族 `:19`)
|
|
||||||
13. `design/art/art-bible.md` §1.4(:48) **整屏样张闸四项**——Q2 乙案:不走独立闸,四项并进 T10 人闸目检清单
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 12. 收口五步(完成后执行)
|
|
||||||
|
|
||||||
1. **active.md 快照**:追加本批条目(迭代 16 · UI 设计对齐批 · worktree 名 · 起止提交 · 闸读数)。
|
|
||||||
2. **台账条目**:查撞号后追加,含「变更文件清单 + 裁决面逐项 + 估时对照(**6.9d 预算** vs 实际)」。
|
|
||||||
3. **roadmap 迭代 16 行更新**:补任务书路径 + 估时 + 裁定状态(任务书成文时已同步补记本行);若拆批执行结论推翻了本文任一冻结条款,同批改该行。
|
|
||||||
4. **stage.txt**:本批不涉及阶段变更(阶段=M-4),不动。
|
|
||||||
5. **闸序列留痕**:T9 重闸全绿读数 + T10 人闸目检清单结论,写入台账(并同步 active.md 快照)。
|
|
||||||
6. **06-待办清单**:本批**无精确对应条目**(「资产升档重产批」06:283 属素材升档,恰为本批美术红线明令禁止的事项,不重复登记);实装完成后按要求移除/收口的条目若出现,届时另行补注记。
|
|
||||||
7. **结构级差异三条(§8.3-E)**:卡片 232×352 / 商店全屏化 / 地图底栏合并——**已登记 06 待立项**(「UI 原型 demo 结构级差异三项——待立项」条),本批不接。
|
|
||||||
8. **已知偏差(Q8 甲)**:棋盘格边长三方取值不一致(代码上限 46 / §8.1 锚点 45 / demo 44)——**已登记 06「棋盘格边长三方取值不一致——待扩板定档处置」条**;本批代码与文档均不改(R7 禁单侧改)。
|
|
||||||
9. **合并方式(Q7 甲)**:三段同属一个迭代,**只在段三末合并一次**,段间不单独合并。
|
|
||||||
@@ -1,171 +0,0 @@
|
|||||||
# 任务书-内容数据驱动扩展批(迭代 17 卡⓪)-2026-10-06
|
|
||||||
|
|
||||||
状态:任务书 v1.1(**全部裁决已落、零待裁点**,开工门=U0 用户发令)。设计权威=调研报告 [研究-内容数据驱动扩展架构-2026-10-06](研究-内容数据驱动扩展架构-2026-10-06.md)+本会话盘问裁决实录(台账 370)。
|
|
||||||
排期:**迭代 17 头卡(2026-10-06 用户令插队)**,迭代 17 现=卡⓪①③④四卡(M4 数值批已移迭代 18,roadmap 现行口径)。
|
|
||||||
|
|
||||||
**v1.1 修订记录(2026-10-06 五任务书联审,用户裁决 Q2 甲/Q6/Q7 + 事实勘误)**:①效果类型闭集扩两型(`damage_mult` 伤害倍率修正、`open_ticket` 新建伤害单)——nest_counter/flag_burst/war_banner 三处现状行为原词汇表装不下;②事件词汇补 `charge_full`(charge 满层沿);③pick_refresh 改走主动件分发通道不入事件订阅;④level_clear 归登记不实施(用户裁 Q6,§3.1 起草越界已删);⑤对拍判据两套口径落文(Q7,正主读数档升格为引用件);⑥计数勘误(事件/效果类型/消费点三处);⑦映射表五处语义修正(luck_coin 归属、deep_drill 降级、armory_prep 转移、boss 血量阈值事件改名通用化、first_dig fact 改每战口径);⑧断言面随迁与订阅重建时机补列。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 一、迭代目标与完成定义
|
|
||||||
|
|
||||||
把「内容的效果行为」从散布在结算代码里的硬编码分支,搬进内容数据行的三个字段——**订阅哪个事件(on)/ 什么条件(when)/ 什么效果(do)**——由一个通用解释器(EffectEngine)统一执行。完成后:加一件「已有效果类型」的新专长/新秘宝=只改 `.tres` 数据行,零代码。
|
|
||||||
|
|
||||||
**完成定义**:①旧 23 挂点枚举删除,27 行专长数据全部迁为事件订阅形态且行为等价(对拍判据两套,见 §六 T6 与 §八);②六件按 id 硬编码的被动秘宝迁毕、按 id 特判清零;③文案表值化(效果说明进数据行);④一个迭代内完成、一次合并登记。
|
|
||||||
|
|
||||||
## 二、裁决实录(2026-10-06 用户逐条裁定,全数有效)
|
|
||||||
|
|
||||||
| # | 裁决 | 内容 |
|
|
||||||
|---|---|---|
|
|
||||||
| R1 | 架构模型 | 发布订阅:结算管线同步 emit 事件(无队列无异步,确定性优先)→ EffectEngine 遍历持有集匹配订阅 → 执行数据行里声明的效果。**不是**代码级插件/监听器类——订阅关系本身是配置 |
|
|
||||||
| R2 | 拦截能力 | 不做通用拦截器链;只保留**改写窗口**(伤害单据 open_ticket 后、submit 前,modify 类效果收集后单点按声明序施加)。断链/否决能力不建,将来需要时加 veto 位。**窗口归属澄清(v1.1)**:armor_roll_rewrite / roll_discount 的现行消费点在护甲掷骰与克制判定的判定点内部,不在 open→submit 单点窗口——它们随各自事件(armor_roll / clamp_check)在判定点就地按声明序施加;modify_ticket 的「单点窗口」仅指 attack_commit 系单据 |
|
|
||||||
| R3 | 多订阅与冲突 | 一事件多订阅=常态(持有集即订阅集);冲突在**效果类型层用组合规则封死**(见 §四),内容行只能选类型不能自定义合并行为。遍历顺序=数据表声明序,写死保种子复放 |
|
|
||||||
| R4 | 旧挂点处置 | 23 个 hook 枚举**删除**(概念消亡:事件名+效果类型取代);其中 first_dig_spell、terrain_dig_double 退化为纯条件行;dig_count_segments 与 round_dig_bonus 保留为**两件独立内容**(效果类型不同:攻击分段 vs 攻击加值),订阅同事件 |
|
|
||||||
| R5 | 范围判据 | **现有实现全部改造**(含 luck_coin 偏运硬币→reward_roll 事件、文案硬编码、令牌 match、树规则键);**06 在册待办只登记不实施**(curio_roll/shop_purchase/gp_settle/level_clear 四事件只登记事件名与发射点设计,哪个 06 内容开工时随批加) |
|
|
||||||
| R6 | 框架先行 | round_start / enemy_hp_threshold / treasure_used 等发射点一律埋进本批,不论当前有无订阅者 |
|
|
||||||
| R7 | 交付形态 | **一个迭代完成**,按模块垂直切需求卡(框架/专长/秘宝/令牌树),不分批不分迭代、批末一次合并 |
|
|
||||||
| R8 | 术语纪律 | 事件=`.on("xxx")` 的 "xxx";订阅后逻辑=效果类型;多订阅叠加规则=组合规则。禁用「挂点/hook/合并律/挂账」等自造词(存量文档随 T7 换代) |
|
|
||||||
|
|
||||||
## 三、事件词汇表(定稿:实施 16,登记暂不做 4)
|
|
||||||
|
|
||||||
### 3.1 本批实施(16 个发射点)
|
|
||||||
|
|
||||||
| 事件名 | 发布时机(发射点,现有代码位置) | 载荷要点 |
|
|
||||||
|---|---|---|
|
|
||||||
| `dig_reveal` | 安全开格结算完成(battle_orchestrator 挖格段) | cell、round、is_first_dig_of_battle、terrain_kind |
|
|
||||||
| `dig_paid` | 付费开掘发起、动作经济闸收对价前 | cell、ap_cost、ap_surplus |
|
|
||||||
| `flag_hit` | 标中雷兑付时 | cell、round、adjacent_terrain |
|
|
||||||
| `mine_hit` | 踩雷时(含计数清零语义面) | cell、round、damage |
|
|
||||||
| `attack_commit` | 我方伤害单据开立(damage_controller.open_ticket 入口) | atk、target、matchup、feats_ctx |
|
|
||||||
| `clamp_check` | 克制关系判定修正点 | matchup(magic_vs_magic/magic_vs_heavy/pierce_vs_light/…) |
|
|
||||||
| `armor_roll` | 敌护甲掷骰判定 | target_ac、roll |
|
|
||||||
| `kill` | 敌人死亡确认 | target、overflow余量 |
|
|
||||||
| `damage_taken` | 我方受到伤害(kind ∈ {enemy_skill, terrain};雷伤走 mine_hit 不重复发) | kind、amount、source |
|
|
||||||
| `enemy_hp_threshold` | 敌人血量跌破其 unlock_hp_pct 阈值(unit_container.check_skill_unlocks 同点,开轮摇号前;**对所有带该字段的敌人逐个发射,非 Boss 专属**——Boss 语义留给订阅者 when 判定) | unit、pct、is_boss |
|
|
||||||
| `round_start` | 每轮开始 | round |
|
|
||||||
| `flag_settle` | 轮末旗伤结算(轮末序:旗伤开单→AP结转→积层反打,顺序显式在发射代码) | flags_hit_all、flags_count |
|
|
||||||
| `round_end` | 每轮结算收口 | round |
|
|
||||||
| `reward_roll` | 格面资源掷定(摇号前权重合成层,luck_coin 迁移落点) | cell、polarity、weights |
|
|
||||||
| `treasure_used` | 使用主动秘宝(use_treasure 受理面) | item_id、target |
|
|
||||||
| `charge_full` | charge 积层到达上限的沿(patient_burst 触发点,v1.1 补入) | unit、layers |
|
|
||||||
| (`curio_roll` 邻位)三选一候选生成现有钩位仅供**对拍观测**,不改发布面(观测行不计入发射点数) | —— | —— |
|
|
||||||
|
|
||||||
### 3.2 登记暂不做(4 个,发射点设计一行,随对应 06 内容批实施;R5 裁决 + Q6 裁决)
|
|
||||||
|
|
||||||
`curio_roll`(三选一候选生成时发布→服务「战利品鉴定」)/ `shop_purchase`(商店成交时发布→服务「符文重铸」)/ `gp_settle`(金币结算入账时发布→服务「贪婪契约」)/ `level_clear`(一张图清空兑付时发布,载荷含 round 与清图统计→服务后续内容批;**本批不写发射代码**——Q6 裁决:R5 原文有效,v1.0 §3.1 的实施行系起草越界,已删)。四者均系 06 在册内容件的前置,本批只在本文登记。
|
|
||||||
|
|
||||||
### 3.3 效果类型词汇表(定稿:19 行 23 个,解释器 switch 闭集;v1.0 计数「16」系勘误,v1.1 扩 `damage_mult`/`open_ticket` 两型)
|
|
||||||
|
|
||||||
| 效果类型 | 语义 | 收编的现状 |
|
|
||||||
|---|---|---|
|
|
||||||
| `add_ticket_rider` | 单据追加固定伤 | hero_attack_rider、venom_edge |
|
|
||||||
| `modify_ticket` | 改写单据数值(改写窗口,按序施加;窗口归属见 R2 澄清) | clamp_modifier×3、roll_discount、nest_aura、hit_trade、armor_roll_rewrite |
|
|
||||||
| `damage_mult` | **伤害倍率修正(v1.1 新增)**:对指定来向伤害乘系数(乘法族,正负分桶) | nest_counter 的踩雷减半面(mine_hit_halve) |
|
|
||||||
| `open_ticket` | **新建一张伤害单(v1.1 新增)**:从事件现场按通道开新单(attack/board_blast 等),与 add_ticket_rider(向已有单追加)相区分 | flag_burst 爆板(open_ticket(KIND_BOARD_BLAST))、war_banner 战旗轮末自开单 |
|
|
||||||
| `attack_bonus` | 攻击力加值 | round_dig_bonus |
|
|
||||||
| `attack_segments` | 攻击拆多段 | dig_count_segments(连珠矢) |
|
|
||||||
| `yield_mult` | 开格产出乘区(正负分桶) | dig_yield_mult×3、terrain_dig_double(条件行) |
|
|
||||||
| `spawn_spell` | 生成一次必中魔法矢 | first_dig_spell(条件行) |
|
|
||||||
| `overflow` | 击杀溢出弹射 | kill_overflow |
|
|
||||||
| `grant_material` | 掉落格面资源 | flag_resource、terrain_refund |
|
|
||||||
| `grant_ap` | 给行动点。**转移形态声明(v1.1)**:`mode:"transfer"`=轮末剩余 AP 转蓄力层(上限 3)**替代** RAP 转存并作废 cleared 口径——是转移非加法,不入加法族、按序单独施加 | ap_carry |
|
|
||||||
| `grant_gp` / `bias_wallet` | 金币面(**本批无现状收编,预留型**;luck_coin 实际归 bias_rewards,见下行——v1.1 勘误) | —— |
|
|
||||||
| `shield` | 减伤层 | charge_shield |
|
|
||||||
| `spike` | 满层反打 | charge_spike(触发事件=charge_full) |
|
|
||||||
| `apply_status` | 授予状态(复用 status_effects.tres 词汇) | heavy_debuff |
|
|
||||||
| `counter_add` / `counter_spend` | 计数器增减(重置点数据声明:round_start/round_end/level) | round_dig 计数、variant_counter、dig_charge 积点(nest_counter 移出本行——其真身是减半+反打,见 damage_mult/open_ticket 两型,v1.1 勘误) |
|
|
||||||
| `rewrite_board` | 改写棋盘格状态 | flag_neutralize |
|
|
||||||
| `reveal_tiles` / `remove_mines` / `refresh_pick` | 显影/移除/刷新(**主动件 kind 分发通道**,不经事件订阅——刷新是玩家主动动作,v1.1 澄清) | mine_reveal、cell_removal、pick_refresh |
|
|
||||||
| `bias_rewards` / `preview` | 抽取面 | reward_weight_bias(=luck_coin 现行 effect_kinds,经 reward_roll)、bonus_refresh |
|
|
||||||
|
|
||||||
### 3.4 组合规则(6 条,效果类型的必填属性,解释器内置)
|
|
||||||
|
|
||||||
| 规则 | 语义 | 适用 |
|
|
||||||
|---|---|---|
|
|
||||||
| 加法族 | 数值相加(可交换,顺序无关) | add_ticket_rider、attack_bonus、grant_material、grant_ap(非 transfer)、counter_add、shield |
|
|
||||||
| 乘法族 | 收集后一次施加(正负分桶) | yield_mult、damage_mult |
|
|
||||||
| 任意真族 | 任一命中即生效 | spawn_spell、overflow、spike |
|
|
||||||
| 按序改写族 | 收集→单点按声明序施加 | modify_ticket 及一切改写窗口效果 |
|
|
||||||
| 按序消耗族 | 按订阅序消耗共享资源,耗尽即止、拒绝走 reason 通道;**可选声明 `fallback`**(v1.1):资源不足时改付声明的基础对价(deep_drill 降级面——AP 富余付全价积计数、不足只付常规基础 1) | counter_spend |
|
|
||||||
| 即时执行族 | 每条命中订阅各自执行一次,天然可叠加、执行序=声明序 | open_ticket、grant_ap(mode:transfer) |
|
|
||||||
|
|
||||||
## 四、数据行目标形态与 schema
|
|
||||||
|
|
||||||
```
|
|
||||||
# feats.tres 一行(示例:奥术余烬 + 魔网织者)
|
|
||||||
{feat_id:"arcane_ember", rarity:"common", archetype:"magic",
|
|
||||||
desc:"普攻命中后追加 1 点必中魔法伤",
|
|
||||||
triggers:[
|
|
||||||
{on:"attack_commit", do:{kind:"add_ticket_rider", value:1, dtype:"magic"}} ]}
|
|
||||||
{feat_id:"mana_weaver", rarity:"rare", archetype:"magic",
|
|
||||||
triggers:[
|
|
||||||
{on:"clamp_check", when:[{fact:"matchup", op:"eq", value:"magic_vs_magic"}],
|
|
||||||
do:{kind:"modify_ticket", delta:-1}} ]}
|
|
||||||
```
|
|
||||||
|
|
||||||
- schema 校验照旧封闭且保留全部现有护栏:`on` ∈ 事件词汇、`do.kind` ∈ 效果词汇、`when.fact` ∈ fact 表、行键白名单、悬空引用加载致命、零裸 flat 禁令、流派扫雷触发点铁律(MINE_HOOKS 改为「每流派 ≥1 行订阅扫雷侧事件」同义校验)。
|
|
||||||
- **存档零改动**:持有集/装备存 id 不变,换的只是解释方式——纯重构可对拍的前提。
|
|
||||||
- fact 表(条件词汇,**封闭枚举 9 项**,v1.0「~15 等」开放写法系勘误):`matchup`、`is_first_dig_of_battle`(**现行口径=每战首次开格**,begin_battle 归零——v1.0 的 `is_first_dig_of_level` 与现行语义相反,已随 provisional 定案改正)、`terrain_kind`、`target_armor_class`、`flags_count`、`charge_layers`、`nest_count`、`round_index`、`counter`(按 counter_id 取值)。T2 落码时若发现 9 项装不下现状条件,属闭集缺口——停机呈报补表,禁在行内私开 fact。
|
|
||||||
|
|
||||||
## 五、23 挂点逐行移植映射表(等价性对拍底单)
|
|
||||||
|
|
||||||
| 旧 hook | 持有内容(feats.tres 实据) | 新形态 |
|
|
||||||
|---|---|---|
|
|
||||||
| hero_attack_rider | arcane_ember | on:attack_commit → add_ticket_rider |
|
|
||||||
| clamp_modifier | mana_weaver / azure_oath / hunter_rapier(穿刺) | on:clamp_check + when(matchup) → modify_ticket |
|
|
||||||
| first_dig_spell | mana_resonance | on:dig_reveal + when(is_first_dig_of_battle) → spawn_spell |
|
|
||||||
| kill_overflow | pierce_shot | on:kill → overflow |
|
|
||||||
| dig_count_segments | chain_arrows | on:dig_reveal→counter_add;on:attack_commit→attack_segments |
|
|
||||||
| roll_discount | weak_instinct | on:clamp_check → modify_ticket(档位移) |
|
|
||||||
| round_dig_bonus | miner_stubborn | on:dig_reveal→counter_add;on:mine_hit→counter 清零;on:attack_commit→attack_bonus |
|
|
||||||
| hit_trade | miner_hammer | on:attack_commit → modify_ticket(攻受交换) |
|
|
||||||
| armor_roll_rewrite | focus_mind | on:armor_roll → modify_ticket(免掷恒折扣) |
|
|
||||||
| heavy_debuff | armor_crack | on:attack_commit + when(重甲) → apply_status |
|
|
||||||
| dig_yield_mult | greedy_lantern / vein_intuition / gambler_pact | on:dig_reveal → yield_mult(乘法族) |
|
|
||||||
| deep_dig | deep_drill | on:dig_paid + when(ap 富余) → counter_spend(对价,fallback=常规基础 1);深层产出配额=counter fact 条件(cap=4) |
|
|
||||||
| flag_resource | mine_atlas | on:flag_hit → grant_material |
|
|
||||||
| nest_aura | nest_hunter | on:attack_commit + fact(nest_count) → modify_ticket |
|
|
||||||
| flag_all_hit | perfect_defense | on:flag_settle + when(全中) → yield_mult(旗伤乘区) |
|
|
||||||
| flag_strike | war_banner | on:flag_settle → open_ticket(attack 通道)(v1.1 改:战旗是自开单,非向已有单追加) |
|
|
||||||
| ap_carry | armory_prep | on:round_end → grant_ap(mode:transfer)(转蓄力层上限 3、替代 RAP 转存——转移非加法,v1.1 改) |
|
|
||||||
| charge_shield | iron_wall | on:damage_taken + fact(charge_layers) → shield |
|
|
||||||
| charge_spike | patient_burst | on:charge_full(满层沿)→ spike(v1.1 改:charge 事件原不在词汇表,已补入) |
|
|
||||||
| terrain_refund | ley_harvest | on:damage_taken(kind=terrain) → grant_material |
|
|
||||||
| terrain_dig_double | thorn_weaver | on:dig_reveal + when(伤害型地形) → yield_mult(×2) |
|
|
||||||
| flag_neutralize | purge_sapper | on:flag_hit + when(邻伤害地形) → rewrite_board |
|
|
||||||
| variant_counter | magma_body | on:damage_taken→counter_add;on:round_end→counter_spend 反打 |
|
|
||||||
|
|
||||||
秘宝侧六件:venom_edge(attack_commit→add_ticket_rider)、luck_coin(reward_roll→**bias_rewards**,现行 effect_kinds=reward_weight_bias;v1.1 勘误:原误归 bias_wallet)、dawn_order(round_start→grant_ap 队列)、dig_charge(dig_reveal→counter_add + dig_paid→counter_spend)、nest_counter(mine_hit→damage_mult(0.5) 减半 + open_ticket(reflect 通道) 反打——v1.1 改:原 counter_add 归类与现状不符,现实现无计数器)、flag_burst(flag_hit→open_ticket(board_blast));pick_refresh(**主动件 kind 分发→refresh_pick,不经事件订阅**)。
|
|
||||||
|
|
||||||
## 六、任务卡(T0-T7 ≈4.5d,软时间盒超限 L3 呈报切点)
|
|
||||||
|
|
||||||
| 卡 | 内容 | 估时 |
|
|
||||||
|---|---|---|
|
|
||||||
| T0 | 开工三查:worktree+基线复读(冒烟/探针/run_all/MC 对拍锚)+git status 归属核对(在飞 mapdmg/standee/uialign 只标旗不碰) | 0.25d |
|
|
||||||
| T1 | EffectEngine 框架:事件枚举+发射点 16 处埋点+订阅装载(**重建时机(v1.1 补)=每战 begin_battle 从持有集/装备集重建 trigger 列表**——冒险中途获得/换取的专长下一战生效,同战内不热载,确定性优先)+组合规则+改写窗口+计数器账本+确定性声明序 | 1.0d |
|
|
||||||
| T2 | 词汇表落码:schema 换代(feats/treasure 两表 trigger 形态+校验规则换代+fact 表)+护栏迁移(MINE_HOOKS 同义校验等) | 0.5d |
|
|
||||||
| T3 | 专长迁移:27 行数据改写(§五映射表逐行)+旧枚举删除+_feat_flags_for 退役+消费点拆除(**口径=研究文档的 23 个消费点,v1.0「24 处」系勘误;执行时逐处 grep 清点对账**)+文案入表(battle_narrator.gd:142 一处;v1.0「两处」系与 T4 重复计数)+**断言面随迁(v1.1 补)**:smoke_all 直呼断言(含「27 件」计数断言与 _feat_flags_for/HOOKS 直呼)与 damage_math_test 6 处 hook 引用同步改写,不列修断言工作项即开工=必红 | 1.25d |
|
|
||||||
| T4 | 秘宝迁移:六件被动+dig_charge 特判+主动件 kind 分发合流+luck_coin 经 reward_roll+curio_interact_controller 文案入表 | 0.75d |
|
|
||||||
| T5 | 令牌/树收尾:_apply_curio_pick match 收敛进效果类型+meta_tree 规则键走同面 | 0.5d |
|
|
||||||
| T6 | 回归闸(**对拍判据两套,v1.1 落文(Q7 裁决)**:①确定性复放与冒烟断言=**逐位一致**;②MC 统计量(通关率/画像)=**成型画像同带**——统计量无「逐位」可言,禁混用。锚口径正主=`design/qa/m4iter12-t7-batch1-readings-2026-10-04.md`(runsum 锚、seed0=90000、N=20、off/formed 配对、L1 通关率判读带),T0 按该口径自采 pre 锚留盘、T6 采 post 锚配对)+冒烟+run_all+探针+确定性复放 | 0.5d |
|
|
||||||
| T7 | 文档正主换代+出口报告:奇物.md/秘宝.md/敌人系统.md 词汇换代+registry 条目+06 状态收口+退出人闸材料包 | 0.25d |
|
|
||||||
|
|
||||||
## 七、契约红线(🔴 违反即停机呈报)
|
|
||||||
|
|
||||||
1. **存档零破坏**:存档键/存档格式/断点结构一字不改;换的只是运行时解释方式。
|
|
||||||
2. **数值等价**:迁移前后行为等价——判据两套(T6/v1.1):确定性复放与冒烟断言逐位一致;MC 统计量同带(m4iter12 口径)。发现必要偏差(如旧实现 bug 被顺带修正)必须停机呈报,禁静默吸收。
|
|
||||||
3. **确定性**:全同步调用、无队列无异步无 signal 时序依赖;遍历序=数据声明序。
|
|
||||||
4. **护栏保留**:封闭枚举校验/键白名单/悬空引用致命/零裸 flat 禁令/流派扫雷触发铁律全部以新形态延续,禁以「数据驱动」名义放开任何护栏。
|
|
||||||
5. **battle_orchestrator 历史脏件**:全程 worktree 批、主区禁直改;并行在飞三线(mapdmg/standee/uialign)只标旗不碰,T0 重取基线。
|
|
||||||
|
|
||||||
## 八、停机点与验证闸
|
|
||||||
|
|
||||||
- **S1**(T3 段末):首个流派(魔法流)迁移完跑对拍——若确定性复放非逐位一致且定位超出映射表误差,停机呈报。
|
|
||||||
- **S2**(T6):确定性复放不一致/成型画像越带/冒烟红——任一命中停机,禁带病合并。
|
|
||||||
- 验证闸:冒烟全量+run_all 全套+五探针+MC 对拍+确定性复放(同种子两次逐位一致)。
|
|
||||||
- 代拍板白名单:事件载荷字段命名、fact 表个别查询面落法、smoke 断言数漂移追认、发射点微调(±1 处)。
|
|
||||||
- 呈报不停机级:文案措辞、注释层、台账撞号顺延。
|
|
||||||
|
|
||||||
## 九、范围边界(明确不做)
|
|
||||||
|
|
||||||
- 4 个登记事件不实施(§3.2);外挂脚本层(调研案丙)不做;luck_coin 之外的数值重调不做(归 M4 数值批);relic/feat 存档键更名不做(06 在册命名统一条,存档键铁律);main.gd:475 疑似缺陷不随批(06 在册独立 mini-loop 待令)。
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
# 任务书:初始展开收窄批(迭代 14)
|
|
||||||
|
|
||||||
> 一句话:把开局免费展开从「一口气开掉约 2/3 板」收窄到阈值以内——甲=先布后删剃雷域收窄(治本)+ 乙=生成重掷闸 R₀≤cap(尾部封顶),混合双刀,玩法侧零改动路线。
|
|
||||||
> 状态:**裁决已齐零待裁**(2026-10-04 用户拍板方案与归属)——待用户发令升 loop 计划书。
|
|
||||||
> 归属:迭代 14(roadmap M-4 表已编卡)。
|
|
||||||
> 事实源:[研究-初始展开收窄可行性-2026-10-04.md](研究-初始展开收窄可行性-2026-10-04.md)(本任务书的全部代码断言/读数设计/风险面出自该报告,不重复展开)。
|
|
||||||
> 用户原反馈:design/research/playnote.md:7「每次开图就是开了片面积」(2026-09-29)。
|
|
||||||
|
|
||||||
## 一、立项依据与裁决记录(已齐,实施批零拍板点)
|
|
||||||
|
|
||||||
**立项链**:playnote 反馈(2026-09-29)→ 06「视野限制」条目 → 收窄面转独立可行性研究(2026-10-04)→ 报告交付 → **2026-10-04 用户裁:甲乙混合方案立项,编入迭代 14**。
|
|
||||||
|
|
||||||
五项裁决(用户拍板+报告建议追认):
|
|
||||||
|
|
||||||
| # | 裁决 | 内容 |
|
|
||||||
|---|---|---|
|
|
||||||
| D1 | 方案=甲+乙混合 | 甲=先布后删剃雷域收窄:剃雷域从「全 flood 域∪外扩 1 环」缩到「出生 3×3∪外扩 r 环」(参数化半径,现值 r=1)——开阔地从根上变小;乙=生成重掷闸:每次尝试出板后量最终板自然 R₀,>cap 则整板作废、同流重试(不开新流),并入合法性闸序列与既有 max_gen_attempts 预算 |
|
|
||||||
| D2 | cap 锚=板面 25–30% | 现值取 30%(按板格数比例化:10×10→30 / 12×12→43 / 13×13→51,实施批 T1 校准投值);收紧路径(30→25)归读数后拍板(P1) |
|
|
||||||
| D3 | 丙路(裸数字截断)否决退役 | 按 BFS 序数到 N 就停的截断会产出「可见 0 格+未开邻居」的扫雷不可能态(玩家受训直觉「见空白=周围全亮」被打破);**若未来必须精确逐板预算,唯一合法形态=0 格闭包原子单位吸附截断**(报告 §2 丙案),留档备而不用 |
|
|
||||||
| D4 | 玩法侧零改动 | minesweeper_rules.gd 不动;「初始展开恰等=出生 3×3+连通开阔地」验收口径**原样为真**(开阔地只是变小);排雷玩法.md 零修订 |
|
|
||||||
| D5 | 不拿收窄当难度杠杆 | 立项理由=开局信息给量与节奏体验;难度联动是须被四带复算吸收的副作用——带越界走回调呈报(S2),禁暗度陈仓 |
|
|
||||||
|
|
||||||
**机理一句话**:现行开阔地巨大(10×10 板均值 66.5 格=板面 66.5%,台账 122)的根因是先布后删把整个 flood 域的雷剃掉——剃掉的雷格数字归 0、flood 再长一波。甲把剃雷域缩到出生邻域,均值自然降至板面约三成(推算);甲降低均值但自然 flood 有重尾,乙闸兜住尾部,触发即罕见兜底。
|
|
||||||
|
|
||||||
## 二、参数面(两枚新参数,入 board_gen 行,走 ConfigDB)
|
|
||||||
|
|
||||||
| 参数 | 域(建议) | 现值(建议投值) | 说明 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| shave_ring_radius | int [0, 2] | 1 | 先布后删剃雷半径:剃雷域=距 spawn_center 切比雪夫距离 ≤1+r 的格(r=1 → 5×5=25 格)。r=0 即只剃出生 3×3 本身(退化为无环剃雷) |
|
|
||||||
| r0_max_cap | int [9, 板格数×0.5] | 按板格 30%:30 / 43 / 51 | 自然 R₀ 上限闸(合法性门)。加载期校验:cap ≥ 出生格数 9、cap ≤ 板格数一半(护栏);违例行加载期致命 |
|
|
||||||
|
|
||||||
域值与投值实施批 T1 定稿;两参数均为调参项(非结构冻结),后续收紧走调参不走修订。
|
|
||||||
|
|
||||||
## 三、T 卡分解(估时合计 ≈5.25 日;切分预案见末尾)
|
|
||||||
|
|
||||||
| 卡 | 内容 | 估时 |
|
|
||||||
|---|---|---|
|
|
||||||
| T0 | **改前基线取证**:`game/smoke/calibrate_boards.gd` 跑现行 R₀ 分布基线(顺手补 r0 方差/分位列小账)。⚠ 跑批须用户批准(MC 锚纪律:先推算后重跑) | 0.5d |
|
|
||||||
| T1 | **参数面**:board_gen_table schema 扩两列(shave_ring_radius/r0_max_cap)+ `game/data/tables/board_gen.tres` 全行投值 + 加载期校验(ConfigDB 通道)+ registry `board_gen_table` 条目换代 | 0.5d |
|
|
||||||
| T2 | **甲·剃雷域收窄**:`game/core/board_generator.gd:102-112` 剃雷域改「spawn 邻域切比雪夫 ≤1+r」参数化(r 读表),ring_removed 指标语义不变(现值变小=预期);注释同步(「外扩 1 环」改「外扩 r 环(r=shave_ring_radius)」) | 0.5d |
|
|
||||||
| T3 | **乙·R₀ 重掷闸**:生成-验证循环加合法性门——出板后 compute_r0() 实测自然 R₀,>cap 即整板作废同流重试,**排在可推理率评分之前**(合法性先于质量评分,同 inv4 白给板先例;全部尝试超阈 → 既有三分出口 accept_worst 诚实降级+告警,玩家永不卡死);metrics 增 `r0_cap_rejected` 尝试事实 | 0.5d |
|
|
||||||
| T4 | **断言面**:smoke 初始展开断言基线改写(恰等口径断言保留 + 新增「R₀ ≤ cap」结构断言 + ring_removed 量级断言);变异布置断言基线复核(smoke_all.gd:1184 一带——候选池=安全格−R₀ 自动变大,条件式语义不变);迷雾两态逐位一致断言确认零扰动(本批零碰呈现层);calibrate_boards 改前/改后对照输出 | 0.5d |
|
|
||||||
| T5 | **改后锚与结构读数**:同 seed0 配对取改后锚(对拍正主=改前锚,本批主效应=结构位移):R₀ 分布(期望 10×10 板 r0_mean 落 25–35 带)/实际雷数与实际密度(警戒:现值 ≈13% → 预期上浮,逼近 25% 相变线即触发 S1)/ring_removed/实测可推理率分布/重试次数/**闸触发率(r0_cap_rejected 占比——过高=甲乙配比失衡信号)**/变异布置数。**停机点 S1**:可推理率骤降+重试飙升(相变警戒)或闸触发率异常(>50% 尝试被拒)→ 停机呈报,禁继续压参 | 1d |
|
|
||||||
| T6 | **四带复算**:MC 冒险条件口径(balance_verifier 冒险段派生)四带判读(A[0,10]/B[50,85]/C[30,60] 预立/D ≤15pp·S 形——带 D 因每板轮数结构变化重看形态)。⚠ 跑批须用户批准。**停机点 S2**:带 B 越界 → 回调方案呈报(cap 收紧回调=反向放松;配套调参=雷密度/恢复点),用户拍板,禁自动调 | 1d |
|
|
||||||
| T7 | **文档面**:[棋盘生成.md](../gdd/systems/排雷循环/棋盘生成.md)(先布后删域语义句+反退化规则表+调参表两行+验收标准两条〔R₀≤cap 闸、剃雷域参数化〕+版本历史 v0.5);registry 同步;06「视野限制」条目收口;roadmap 迭代 14 行落籍注记。**零涉面明示**:排雷玩法.md/HUD框架/art-bible/board_view(迷雾纯呈现)/minesweeper_rules.gd/battle_orchestrator.gd(口径自动跟随 compute_r0,零代码) | 0.5d |
|
|
||||||
| T8 | **真人试玩观察清单**:报告 §4.3 四信号组(对症信号=「开一大片」体感消退/节奏信号=单板停留时长/策略信号=连锁与微光预读使用/迷雾联动信号=记忆态使用率)落 07-体验验证清单附录 | 0.25d |
|
|
||||||
|
|
||||||
**切分预案**:T0–T4+T7+T8 = 实施批 ≈3d;T5–T6 = 读数批 ≈2d 可切独立后批(若迭代 14 排满或跑批窗口未批)。切分时实施批出口闸=冒烟+doc 三闸+确定性复现断言;读数批后置不阻塞实施批落籍(结构读数与四带判读只测不判过渡期由 S1/S2 停机点兜底)。
|
|
||||||
|
|
||||||
## 四、拍板点(全部读数后置,不阻塞实施批)
|
|
||||||
|
|
||||||
| # | 拍板点 | 触发时机 |
|
|
||||||
|---|---|---|
|
|
||||||
| P1 | cap 收紧路径(30% → 25% 与否;或上调若 S1 显示闸过频) | T5 读数呈报 |
|
|
||||||
| P2 | 四带越界回调方案(cap 调整 vs 配套调参组合) | T6 呈报(S2) |
|
|
||||||
| P3 | 可推理率及格线 0.88 重校值(域 [0.85,1] 内调参) | T5 读数呈报(若实测分布失锚) |
|
|
||||||
|
|
||||||
## 五、批级验收标准
|
|
||||||
|
|
||||||
- R₀ 分布落带:改后 r0_mean ≤ cap(10×10 板 ≤30)且 ≥ 出生保障面(≥25,r=1 剃雷保证);重尾被闸封顶。
|
|
||||||
- 闸行为正确:超阈整板重掷不开新流(同种子同图确定性不破坏);重试耗尽走三分出口带降级标记;r0_cap_rejected 入指标集。
|
|
||||||
- 玩法侧零漂移:minesweeper_rules.gd 零 diff;「初始展开恰等」断言原样全绿;迷雾两态逐位一致断言零扰动。
|
|
||||||
- 确定性复现:同参数行同种子两遍生成逐位相同;换种子产物不全同。
|
|
||||||
- 闸全绿:冒烟+run_all 关联套件+doc 三闸零新增(跑闸口径按测试执行两入口铁规,loop 开发挂出口闸)。
|
|
||||||
- 读数义务:T5/T6 跑批各须用户批准;先推算后重跑。
|
|
||||||
|
|
||||||
## 六、风险与红线(浓缩自报告 §5,全文以报告为准)
|
|
||||||
|
|
||||||
1. **相变警戒**:实际雷密度向 25% 相变线上浮(10×10 推算 ≈19%)——可推理性恶化可能非线性,S1 停机点兜底。
|
|
||||||
2. **难度杠杆禁令**(D5):收窄的难度联动只能被吸收,不能被利用。
|
|
||||||
3. **并行面**:迭代 12 批次一(双层 BD)在飞,worktree g-plan2-m4iter12-bd-20261004——本批零碰 battle_orchestrator.gd,board_gen.tres/registry 若撞文件按台账协调让号。
|
|
||||||
4. 锚换代声明随批:改后旧结构读数(R₀ 均值/变异布置量/清图率历史锚)只测不判。
|
|
||||||
@@ -1,247 +0,0 @@
|
|||||||
# 任务书:奇物概念收口与词族对齐批(迭代 15)
|
|
||||||
|
|
||||||
- 日期:2026-10-05
|
|
||||||
- 设计事实源:[奇物.md](../gdd/systems/冒险循环/奇物.md) v2.6(概念唯一定义,2026-10-05 用户逐轮裁定)
|
|
||||||
- 登记台账:[06-待办清单](../gdd/06-待办清单.md) 三条目(渠道分工目标态 / 资源两个新种类入池 / 奇物命名统一后续)
|
|
||||||
- 实体登记:[entities.yaml](../registry/entities.yaml) `curio` 条目
|
|
||||||
- 状态:**定稿待发令**——用户 2026-10-05 令:本批只改文档,代码与配置改动整理成任务书编入迭代 15
|
|
||||||
- **loop 计划书八件对照**:①目标与完成定义=§一 ②现状事实(代码级,开工自行复核)=§二 ③设计契约(🔴 触碰=L3 停机)=§三 ④范围边界=§四 ⑤任务卡 T0..Tn=§五 ⑥验证闸=§六 ⑦异常分级=§七 ⑧代拍板白名单=§八
|
|
||||||
- **本任务书已有约束**:范式为"设计契约先行、代码后跟"——概念已由用户逐轮裁定定稿(v1.0→v2.6 共 6 轮),本批不做二次设计,只做**落地对齐**。任何在执行中冒出的"要不要改设计"念头,一律记 06 不在本批解决
|
|
||||||
- 数值全 provisional:本批只改标识符与结构,**不调任何平衡数值**;档位配额 70/25/3=98 是结构锚(schema validate 硬断言),本批零改动
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 一、目标与完成定义
|
|
||||||
|
|
||||||
一句话目标:把 v2.6 已定稿的「奇物」概念从**文档层**贯彻到**代码层与数据层**——三套旧词族(`feature_*` / `relic_*` / 运行层 `bonus_*`)全部对齐到统一词族,渠道分工与两个新种类入表,使代码与文档不再各说一套。
|
|
||||||
|
|
||||||
**为什么现在做**:用户 2026-10-05 的原始诉求是"这导致我们的代码实现和文档描述是分开的"。概念层已裁定完(6 轮),但代码层仍是三个旧词族 + 渠道未分离,**债已经欠了 9 次提交**。顶层已改名「奇物」而代码仍叫 `feature_*`,正是用户最初抱怨的"文档与代码分开"的临时态。
|
|
||||||
|
|
||||||
完成定义(逐条可验):
|
|
||||||
|
|
||||||
1. **词族对齐完成**:`feature_*` → `curio_*`(103 处 / 7 文件)、`relic_*` → `curio_*` 或 `feat_*`(162 处 / 12 文件)、运行层 `bonus_*` → `curio_*`(160 处 / 8 文件)全部改完,`game/` 下 `grep -c "feature_\|relic_\|_bonus_\|pick_bonus\|BonusInteract\|BonusPick"` 归零(存档键 5 个除外,见 T2 裁点)
|
|
||||||
2. **渠道分工落地**:三条渠道按分类分离——关底 Boss 击败=通过这一关 → 只出专长;奖励节点 / 商店 → 只出属性值提升 + 资源,专长在此只以门票形式出现;三渠道不再共用同一个池
|
|
||||||
3. **两个新种类入表**:刷新次数、专长获取门票进入 `adventure.tres`,各自带全参数
|
|
||||||
4. **商店货架补回复**:按默认原则,回复必须在商店货架内(现行缺)
|
|
||||||
5. **数据缺陷修复**:`relics.tres` 的 charge 标签补至 ≥4 件(档二要求同标签 ≥4,现仅 3 件,永远达不到)
|
|
||||||
6. **冒烟与三闸全绿**:批末 run_smoke 全量 + 三探针 + doc 三闸对基线**零新增** + 熵增闸 PASS
|
|
||||||
7. **断点存档往返幂等**:改词族不破存档——旧档能读、新档能续(若 T2 裁点选"换名+迁移",须验 v→v+1 往返)
|
|
||||||
|
|
||||||
## 二、现状事实(代码级,T0 开工须自行复核)
|
|
||||||
|
|
||||||
> 以下是 2026-10-05 读出的事实。开工时按 loop 规范 T0 复核,不以本节为准。
|
|
||||||
|
|
||||||
### 2.1 词族占用实况
|
|
||||||
|
|
||||||
| 词族 | 处数 | 文件数 | 主要落点 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| `feature_*` | 103 | 7 | `adventure_table.gd` / `adventure.tres` / `adventure_runner.gd` / `level_runner.gd` / `config_db_cross_validator.gd` / `bonus_interact_controller.gd` / `smoke_all.gd` |
|
|
||||||
| `relic_*` | 162 | 12 | `relic_table.gd`(+`.uid`)/ `relics.tres` / `relics_engine.gd` / `config_db.gd` / `battle_orchestrator.gd` / `damage_controller.gd` / `action_economy.gd` / `level_runner.gd` / `battle_narrator.gd` / `adventure_runner.gd` 等 |
|
|
||||||
| 运行层 `bonus_*` | 160 | 8 | `_bonus_deck` / `_bonus_taken` / `pick_bonus` / `BonusInteractController` / `BonusPickOverlay` / `bonus_interact_controller.gd` / `level_autoplay.gd` / `breakpoint_resume_test.gd` 等 |
|
|
||||||
|
|
||||||
**🔴 硬约束(不可撞车)**:`reward` 词族**已被占用**——`reward_pick`(rng 封闭流 scope)/ `reward_node`(`grant_aux_item` 的 context 字符串)/ `reward_preview`(道具效果 kind)。**统一词族不得使用 `reward_*`**,本批定为 `curio_*`(`treasure` / `trove` / `curio` / `haul` 零占用,2026-10-05 查证)。
|
|
||||||
|
|
||||||
### 2.2 封闭词表与结构锚(改动即触碰红线)
|
|
||||||
|
|
||||||
- `AdventureTable.FEATURE_KINDS: Array[String]` = `["attack", "max_hp", "armor", "gp", "ap", "heal"]`——**封闭六项**。断点附随件与牌库剔除态依赖它,扩种类须走 schema + registry 同步修订
|
|
||||||
- `AdventureTable.TIER_QUOTAS := {"common": 70, "rare": 25, "rarest": 3}`(合计 98)——**结构锚**,schema `validate()` 内有硬断言:"档位配额结构失锚……改总量须重裁"。本批**入新种类须占配额**,若配额总量不够,**只能在本批内重裁并说明**,不得调参绕过
|
|
||||||
- `adventure.tres` 现有 22 个键与 schema 的 22 个 `@export` 一一对应(2026-10-05 脚本校验通过),改名须同步两侧
|
|
||||||
- 节点类型是**封闭枚举五种**(战斗 / Boss / 奖励 / 恢复 / 商店)——本批**零扩类**(专长挂 Boss 节点兑付面)
|
|
||||||
|
|
||||||
### 2.3 渠道与池的现状
|
|
||||||
|
|
||||||
- 现行**三渠道共用同一个 98 张固定配额令牌池**(普通 70 / 稀有 25 / 罕见 3),三类混编
|
|
||||||
- 专长只占稀有/罕见档,与属性大件混编;商店货架靠"零专长挤掉一张普通卡"保底
|
|
||||||
- 商店货架 = 池 ∖ {GP 袋}(`shop.tres` 的 `pool_shelf` 行族,现为 attack / max_hp / armor_class / ap 四项,**缺回复**)
|
|
||||||
- 奖励节点与通关三选一**共享同一池、同权重同上限**(`node-reward` v2.4)
|
|
||||||
|
|
||||||
### 2.4 数据缺陷(独立于渠道结构,须单独修)
|
|
||||||
|
|
||||||
- `relics.tres` 的 **charge 标签只有 3 件**,而档位激活要求同标签 ≥4 件——**charge 流派永远达不到档二**,即使获取次数无限
|
|
||||||
- 一局确定性专长兑付次数 = 终局前 Boss 个数(三关 = 2 次),而档一阈值是同标签 ≥2——档一刚好够,档二(≥4)须靠门票补齐。**此项用户已定延后复裁**(触发=第四关内容批落地后实测),本批只登记不改
|
|
||||||
|
|
||||||
### 2.5 断点与存档键(5 个)
|
|
||||||
|
|
||||||
`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`——为存档兼容沿用历史名。`adventure_runner.gd` 内同时有 `_node_bonus_pending`(奖励节点停点态)。**是否随存档版本迁移换名须本批裁**(见 T2)。
|
|
||||||
|
|
||||||
## 三、设计契约(违反即返工,🔴 触碰 = L3 停机)
|
|
||||||
|
|
||||||
1. 🔴 **兑付频率不可改**:奇物**不是打一场战斗给一份**。关内普通战斗节点打完不给任何奇物;一关之内只兑付一次,触发点是**关底 Boss 被击败**——按 [冒险结构](../gdd/systems/冒险循环/冒险结构.md) 定义"通关一关 = 该关关底 Boss 被击杀",**这两件事是同一个时刻,不是一条链上的两步**。任何把专长挂到"战斗结算后"的实现即为 L3
|
|
||||||
2. 🔴 **两条轴互不决定**:分类轴(给的是什么:专长 / 属性值提升 / 资源)与渠道轴(从哪来:奖励节点 / 商店 / 关底 Boss 击败)**不得互相推导**。禁止"因为它要进商店所以另立一分类"这类反向推导(= 06 已登记的"两轴缠回去")
|
|
||||||
3. 🔴 **Boss 渠道独占专长**:关底 Boss 击败=通过这一关**只出专长**,属性值提升与资源在此不出现。这是渠道轴的定位决定,不是例外,不需另找理由。末关的 Boss 击败后不给(无后续关卡可消费)
|
|
||||||
4. 🔴 **专长门票四条口径不可改**:①**拿到即开、不可囤积**(不进持有集,选中/买下同一时刻开专长三选一);②**罕见只在概率、不在价格**(货架价与其他商品相当);③**一局限购一次**;④**计步保底**——连续 5 次三选一展示未出现 → 第 6 次必定出现(计数=**展示次数**,刷新后的重展计入,奖励节点与商店共享计数,触发后清零,限购用满后不再触发)
|
|
||||||
5. 🔴 **统一词族不得用 `reward_*`**(已被 `reward_pick` / `reward_node` / `reward_preview` 占用,见 §2.1)
|
|
||||||
6. 🔴 **档位配额结构锚不可绕过**:`TIER_QUOTAS` 的 70/25/3 有 validate 硬断言。改总量须重裁并留说明,不得调参绕过
|
|
||||||
7. 🔴 **不新增节点类型**:`关卡节点地图` 的节点类型封闭枚举五种不变,专长挂 Boss 节点兑付面
|
|
||||||
8. 🔴 **魔法道具边界不位移**:奇物**当局清零、跨局带走的是魔法道具**(判据走生命周期,不走"带在身上")。本批任何改动不得让奇物进同调位,也不得让魔法道具进当局随机渠道
|
|
||||||
9. 🔴 **层级纪律**:奇物只走当局随机渠道(奖励节点 / 商店 / Boss 兑付),不进元进度天赋树
|
|
||||||
10. **本批不改平衡数值**:所有 `feature_value_*` / `feature_quota_*` 的**值零变更**。入新种类属结构改动(占配额),非调参
|
|
||||||
11. **零战斗期新动词**:专长表达全部经"扫雷决策 → 自动结算"间接生效,不新增手动闪避 / 主动施法
|
|
||||||
|
|
||||||
## 四、范围边界(以下均不在本批,收到即停、不顺手做)
|
|
||||||
|
|
||||||
- **任何平衡数值的调参**——档位阈值、门票四参数的具体取值(概率 / 配额 / 限购次数 / 保底步数)、token 配额重裁方案。门票四参数本批只**建结构与字段**,取值走 provisional + 曲线调参批
|
|
||||||
- **第四关内容**——用户已定"后续还会有第四关,到时候试完觉得配合太少再调整"。档二可达性复裁触发条件是第四关落地后实测
|
|
||||||
- **charge 补件的内容设计**——本批只把 charge 补到 ≥4 件以打开档二通路,**补哪几件是内容裁决**,走独立内容批;本批若判断内容不可自决,则只做"档二对 charge 不可达"的显式登记(数据缺陷留痕),不硬补
|
|
||||||
- **玩家可见面违规改法**(06 独立条目:内部分类禁写入玩家可见面 + 档位呈现三路待裁)——属呈现面设计裁决,须用户拍板,本批不碰
|
|
||||||
- **教学引导相关**——用户 2026-10-04 裁改排 Beta
|
|
||||||
- **资源配比预设 / 判式换代 / 全局变异等 M-4 在途批**——与本批词族改名**撞同一批文件**(`adventure_table.gd` / `level_runner.gd` / `adventure.tres`),**须在 roadmap 排期上确认不与在途批并行**,本批开工门 = 相关在途批出口或用户明示插队
|
|
||||||
- **存档键换名的迁移实现**(若 T2 裁"换名")——须与存档版本迁移单独裁定,本批可只做"代码侧改名 + 兼容读旧键",迁移写 v+1 归存档批
|
|
||||||
|
|
||||||
## 五、任务卡(T0..T8 逐卡估时)
|
|
||||||
|
|
||||||
> **估时合计**(provisional,工作日)≈ 4.5 日,在 ≤3 日软时间盒边缘。**切分预案**:T0-T3 一段(词族对齐)≈ 2 日;T4-T8 二段(渠道分离 + 入表)≈ 2.5 日。切分点 = T3 出口。超限即按 loop 规范切迭代(L3 汇报)。
|
|
||||||
|
|
||||||
### T0 开工(≈0.3d)
|
|
||||||
|
|
||||||
- 建 worktree(分支名建议 `curio-wordfamily-20261005`),**主工作区只作合并落点**
|
|
||||||
- 基线复读记档:冒烟全量数字 / 三探针(`ui_input_probe` 十一断言)/ doc 三闸 / MC 对拍基准 / `git status` 归属核对(并行遗留只标旗不碰)
|
|
||||||
- **复核 §2 全部事实**(词族处数、封闭词表、配额锚、存档键清单),与本节不符以实测为准并回写本任务书
|
|
||||||
- 输出:worktree 名 + 基线数字 + 事实复核差异表
|
|
||||||
|
|
||||||
### T1 词族对齐第一批:`feature_*` → `curio_*`(≈0.7d)
|
|
||||||
|
|
||||||
> ✅ **T0 复核差异回写(2026-10-05 实测,master 413c936)**:①`feature_*` 实测 **93 处/7 文件**(§2.1 的 103 系③秘宝批动 smoke/bonus_interact_controller 前口径);②运行层 `bonus_` 族实测远超 160 处(含信号 bonus_choice_presented/bonus_resolved/bonus_overlay 等全部形态);③**`bonus_aux_carry` 语义澄清=秘宝件跨关携带(③批已对齐 treasure 词族,内部变量现名 _bonus_treasure_carry),非奇物概念——本批改名面剔除,存档键引号字面量照③批先例禁改**;④基线=冒烟 772/0+run_all 14/15(reward_overlay 红=M7 bcard 换控件致 `c is Button` 断言失效,成因已考,T2 触碰该测试时适配);⑤res_ 仅 smoke 局部变量 res_box 4 处(语义无关,资源词族 res_* 不撞)。
|
|
||||||
|
|
||||||
- 范围:`FEATURE_KINDS` → `CURIO_KINDS`、`feature_quota()` → `curio_quota()`、`feature_value()` → `curio_value()`、`feature_candidate_count` → `curio_candidate_count`、`feature_quota_{kind}_{tier}` → `curio_quota_*`、`feature_value_{kind}_{tier}` → `curio_value_*`
|
|
||||||
- 涉及:`adventure_table.gd` + `adventure.tres`(键名)+ 6 个引用文件
|
|
||||||
- **值零变更**(只改键名与常量名)
|
|
||||||
- ⚠️ `FEATURE_KINDS` 是封闭词表、断点附随件与牌库剔除态依赖它 → 改名须与 `entities.yaml` 同批同步
|
|
||||||
- 轻闸:冒烟全量绿 + 存档往返测试绿
|
|
||||||
|
|
||||||
### T2 词族对齐第二批:运行层 `bonus_*` + **存档键裁点**(≈0.7d)
|
|
||||||
|
|
||||||
- 范围:`_bonus_deck` / `_bonus_taken` / `pick_bonus` / `BonusInteractController` / `BonusPickOverlay` / `bonus_interact_controller.gd` / `level_autoplay.gd` / `breakpoint_resume_test.gd`
|
|
||||||
- **文件改名须同步 Godot `.uid` 与 `.tscn` 引用**(非文本层,无法靠 grep 自证)
|
|
||||||
- **裁点(本任务书内唯一待裁,批内自裁可行但须台账留痕)**:
|
|
||||||
- 五个**断点存档键**(`bonus_deck` / `bonus_taken` / `bonus_pending` / `bonus_result` / `bonus_aux_carry`)换不换名?
|
|
||||||
- 甲=**不换**(保存档兼容,仅改代码侧变量名)——推荐
|
|
||||||
- 乙=换 + 兼容读旧键(旧键读入映射到新键,写出用新键)
|
|
||||||
- 丙=换 + 存档版本迁移到 v+1(**范围外**,本批不做)
|
|
||||||
- 建议甲或乙;若判断丙才对,回写本任务书并转 06
|
|
||||||
- 轻闸:冒烟全量 + **断点存档往返测试绿** + `ui_click_probe`(触碰 presentation)
|
|
||||||
|
|
||||||
### T3 词族对齐第三批:`relic_*` → 专长(≈0.8d)
|
|
||||||
|
|
||||||
- 范围:`relic_table.gd`(+`.uid`)/ `relics.tres` / `relics_engine.gd` / 及 9 个引用文件
|
|
||||||
- 目标词族:**`feat_*`**(专长 Feat)。**顶层与内层分类各有各的词族**(v2.7 定名后确立):`curio_*` 是总称「奇物」/`feat_*` 是专长/`asi_*` 是属性值提升/`res_*` 是资源
|
|
||||||
- **文件名与 `class_name` 改名须同步 `.uid` 与 `.tscn`**(非文本层)
|
|
||||||
- **不新增节点类型**;MINE_HOOKS 红线校验逻辑零改动
|
|
||||||
- 轻闸:冒烟全量 + 全探针(三)
|
|
||||||
- **T3 出口 = 切分点**:段落一(词族对齐)完成,出阶段报告
|
|
||||||
|
|
||||||
### T4 渠道分离:池的拆分(≈0.8d)
|
|
||||||
|
|
||||||
- 目标:三个渠道各按分类白名单取候选,不再共用同一个 98 张池
|
|
||||||
- 关底 Boss 击败 → 只出专长
|
|
||||||
- 奖励节点 / 商店 → 专长**只以门票形式出现** + 属性值提升 + 资源
|
|
||||||
- ⚠️ **配额结构锚处置**:专长抽离共享池后,属性与资源的配额总量是否维持 98?**若须改 `TIER_QUOTAS` 总量,走重裁流程并在本任务书回写理由**(不得调参绕过 validate 硬断言)
|
|
||||||
- 商店货架 = 池 ∖ {GP 袋}(**计价物不自售**规则:凡以某渠道计价物为内容的奖励不进该渠道货架)
|
|
||||||
- 轻闸:冒烟全量 + 探针 + **MC 逐位对拍**(涉核心,必须)
|
|
||||||
|
|
||||||
### T5 专长门票入表(≈0.7d)
|
|
||||||
|
|
||||||
- 新增门票项到 `adventure.tres`,四参数全部建字段、**取值 provisional**:
|
|
||||||
- 出现概率 / 配额 / 限购次数(=1)/ 保底步数(=5 展示)
|
|
||||||
- 机制:**拿到即开、不可囤积**(不进持有集)→ 选中/买下同一时刻开专长三选一
|
|
||||||
- **计步保底计数器**:计数=展示次数、刷新后重展计入、奖励节点与商店**共享**计数、触发后清零、限购用满后不触发
|
|
||||||
- 稀有档处置须说明:门票进哪一档(罕见?),占多少配额
|
|
||||||
- 轻闸:冒烟全量 + 探针 + MC 逐位对拍
|
|
||||||
|
|
||||||
### T6 刷新次数入表 + 商店补回复(≈0.5d)
|
|
||||||
|
|
||||||
> ✅ **T6b 裁决回写(2026-10-05 用户裁方案B)**:refresh rare=2 从 heal rare 5 挤占(heal 5→3),**总量 98 锚不变**——validate 硬断言零改动。契约 10「curio_quota_* 值零变更」按用户裁更新:本批结构面允许的配额变化=heal 5→3 挤占予 refresh 2(其余值零变更)。**池架构语义确立=总池-渠道子集(多级缓存形)**:总池单一令牌库,三渠道按白名单取子集视图(T4 过滤式即此形态),registry pool_architecture 已落文。
|
|
||||||
|
|
||||||
- `FEATURE_KINDS` 扩项须走 schema + registry 同步修订(封闭词表,红线 §3.6)
|
|
||||||
- ⚠️ **必须先划清边界**:既有「商店独立刷新机制」是**进店后的免费次数 + GP 刷新**(商店自身的服务),本项是**作为奇物授予的**重抽次数——**两者不是一回事**,入表前须在 registry 里把边界写死,防止后续混淆结算
|
|
||||||
- 刷新次数的作用对象是**三选一界面而非角色**——不进加算区(§2.2 加算区四轴不含它)
|
|
||||||
- 补 `shop.tres` 的 `pool_shelf` 货架含回复(按默认原则:除已登记规则外,分类内成员都要在它该出现的渠道池子里)
|
|
||||||
- 轻闸:冒烟全量 + 探针 + MC 逐位对拍
|
|
||||||
|
|
||||||
### T7 档位通路与数据缺陷(≈0.4d)
|
|
||||||
|
|
||||||
- 复核 charge 标签件数。若本批能自决则补至 ≥4 件;若内容不可自决,则**只做显式登记**("档二对 charge 不可达,数据缺陷留痕,转内容批")——**不硬补、不塞占位件**
|
|
||||||
- 档二可达性复裁:**本批只做静态推演与登记**,实测归第四关内容批(用户已定)
|
|
||||||
- 轻闸:冒烟全量
|
|
||||||
|
|
||||||
### T8 批末闸与人闸材料(≈0.4d)
|
|
||||||
|
|
||||||
- 重闸:全量轻闸 + doc 三闸(对基线**零新增**)+ 熵增闸 + MC 逐位对拍(涉核心)+ 素材批机检断言(本批无素材则免)
|
|
||||||
- 人闸材料包(`design/qa/`):真人目检清单(重点 = 奇物列表呈现、档位激活反馈、门票弹出三选一面)+ 代拍板追认清单 + 三渠道兑付点目检指引(**专长兑付发生在关底 Boss 击败那一刻,不是战斗结算后**——这条要单列一个检查项)
|
|
||||||
- 收口五步:①`active.md` 快照 ②台账条目(查撞号)③里程碑移动更新 roadmap ④`stage.txt` 阶段变更 ⑤闸序列全绿留痕
|
|
||||||
|
|
||||||
## 六、验证闸
|
|
||||||
|
|
||||||
### 6.1 轻闸(每轮必跑,headless)
|
|
||||||
|
|
||||||
- `run_smoke` 全量
|
|
||||||
- `ui_input_probe`(十一断言)
|
|
||||||
- 触碰 presentation 时加跑 `ui_click_probe` + `ui_layout_probe`(T2 / T3 触碰)
|
|
||||||
|
|
||||||
### 6.2 重闸(批末 T8)
|
|
||||||
|
|
||||||
- 全量轻闸 + `doc_link` / `gdd_lint` / `doc_term` 三闸**对基线零新增**
|
|
||||||
- 熵增闸 PASS
|
|
||||||
- MC 逐位对拍(T4 / T5 / T6 涉核心,必须;T1-T3 纯改名可免但须在报告说明理由)
|
|
||||||
|
|
||||||
### 6.3 本批专属验收断言(概念与代码一致性)
|
|
||||||
|
|
||||||
| # | 断言 | 判据 |
|
|
||||||
|---|---|---|
|
|
||||||
| A1 | 词族归零 | `game/` 下 `feature_\|relic_\|_bonus_\|pick_bonus\|BonusInteract\|BonusPick` 命中数 = 0(存档键除外) |
|
|
||||||
| A2 | 禁词未用 | `game/` 下无 `reward_pick` / `reward_node` / `reward_preview` **新增**(既有三处不动) |
|
|
||||||
| A3 | 兑付频率正确 | 专长兑付点 = 关底 Boss 击败;**关内普通战斗节点不产奇物**(代码级断言 + 人闸目检双查) |
|
|
||||||
| A4 | 渠道分离 | 三渠道候选池按分类白名单过滤;专长在非 Boss 渠道只以门票形态出现 |
|
|
||||||
| A5 | 门票拿到即开 | 门票不进持有集;选中/买下同帧开专长三选一(断言:持有关卡推进后仍无门票残留) |
|
|
||||||
| A6 | 保底计数 | 连续 5 次展示未出 → 第 6 次必出;刷新重展计入;限购用满后不触发 |
|
|
||||||
| A7 | 值零变更 | T1-T3 全部改名的键,值与基线**逐位相等** |
|
|
||||||
| A8 | 存档往返 | 旧断点可读、可续;存档键按 T2 裁点结论验证 |
|
|
||||||
| A9 | 池配额锚 | `TIER_QUOTAS` validate 硬断言绿;若改总量须有重裁说明 |
|
|
||||||
| A10 | 节点类型零扩类 | 节点类型仍为封闭枚举五种 |
|
|
||||||
| A11 | 玩家可见面无分类名 | 奇物列表 / 三选一面 / 弹窗**不出现**"专长/属性值提升/资源"字样(与 06 独立条目协同,本批只做**断言检查**,不改法) |
|
|
||||||
| A12 | 档二通路 | charge 标签 ≥4 件,或已有显式登记"不可达 + 转内容批" |
|
|
||||||
|
|
||||||
## 七、异常分级(loop 规范)
|
|
||||||
|
|
||||||
- **L1 自救**:一次重试(改名后编译错、`.uid` 未同步等机械错)
|
|
||||||
- **L2 记录继续**:连续 3 次同红灯升级,写台账继续推进
|
|
||||||
- **L3 停机写报告**:触碰 §3 任一 🔴 红线 / 配额结构锚无法自洽 / 发现概念层自相矛盾 / MC 逐位对拍出现无法归因的漂移
|
|
||||||
|
|
||||||
**本批预判的 L3 高风险点**:
|
|
||||||
1. `relic_table.gd` 改名连带 `.uid` / `.tscn` 非文本层引用失败(T3)
|
|
||||||
2. 专长抽离共享池后配额结构锚失锚,需重裁(T4)
|
|
||||||
3. 存档键换名导致旧断点读不出(T2)
|
|
||||||
|
|
||||||
## 八、代拍板白名单(批内可自裁,台账留痕)
|
|
||||||
|
|
||||||
1. **词族细分名的具体拼写**——`curio_*` / `feat_*` / `asi_*` / `res_*` 的下划线与单复数形式,在不撞既有占用(`reward_*` 等)的前提下自定
|
|
||||||
2. **重命名时的中间态命名**——允许分步改(先改引用再改定义),只要批末归零
|
|
||||||
3. **T2 存档键裁点的甲/乙选择**(不选丙)
|
|
||||||
4. **T7 charge 是否硬补**——若内容不可自决,走"只登记不硬补"(本任务书已授权此判断)
|
|
||||||
5. **provisional 取值的第一版数字**——门票四参数、刷新次数件值,取 working value 即可,**须标 provisional 且归曲线调参批**,不进终值
|
|
||||||
|
|
||||||
## 九、待用户裁点(不在本批自裁范围)
|
|
||||||
|
|
||||||
| # | 待裁 | 阻塞面 | 建议 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| C1 | 玩家可见面三处违规的改法 + 档位呈现三路 | 06 独立条目;A11 断言只检查不修 | 单独开呈现面批 |
|
|
||||||
| C2 | 第四关内容与档二可达性复裁 | T7 实测、charge 补件 | 第四关内容批后 |
|
|
||||||
| C3 | 门票四参数的终值 | T5 provisional 定稿 | 曲线调参批 + MC 采集 |
|
|
||||||
| C4 | 存档键换名的正式迁移 | T2 裁点丙案 | 存档版本迁移批 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 附:本任务书引用的设计裁定链(v1.0 → v2.6,供执行者回溯)
|
|
||||||
|
|
||||||
| 版本 | 用户裁定要点 |
|
|
||||||
|---|---|
|
|
||||||
| v1.0 | 立《特性》:一次冒险内角色自身得到的提升;命名统一(此前三个名字:流派件 / 数值件 / 本关强化) |
|
|
||||||
| v1.1 | 分类重构为「属性提升 ASI / 专长 Feat」;刷新次数作用对象是选择界面而非角色,作为例外登记 |
|
|
||||||
| v1.2 | 专长渠道落定=关底 Boss 击败后;**不新增节点类型**(挂 Boss 节点兑付面) |
|
|
||||||
| v2.0 | 顶层改名「奖励」;分类扩为三类;重构为**两根轴**(分类轴 × 渠道轴);边界判据改走**生命周期**(当局清零的是奖励,跨局带走的是魔法道具) |
|
|
||||||
| v2.1 | Boss 渠道只出专长(独占);终局 Boss 不给;金币不进商店写成「计价物不自售」**规则**而非特例 |
|
|
||||||
| v2.2 | 非 Boss 渠道给**门票**形式(拿到即开、不可囤积);渠道约束重构为**三层**(分类白名单 / 可计算谓词 / 显式例外清单);立**默认原则**——除已登记规则外分类内成员都要在池子里 |
|
|
||||||
| v2.3 | 门票四条口径细化(含**计步保底**:连续 5 次展示未出第 6 次必出,刷新重展计入);修正默认原则表述——**只管分类内部**,"渠道出哪些分类"是渠道轴自己的定位决定 |
|
|
||||||
| v2.4 | 顶层定名**「奇物」Wondrous Item**(DND 魔法物品九分类的兜底杂类);落选 Treasure(偏财物)/ Relic(用户否决)/ 全部自造词;**代码词族定为 `curio_*`**(`reward_*` 已被占用) |
|
|
||||||
| v2.5 | 第三类定名**「资源」**(偏泛,故在 1.3 写死判据句);**回复留在资源**不拆第四类 |
|
|
||||||
| v2.6 | **修正核心循环图**——奇物不是打一场战斗给一份;关底 Boss 击败=通过这一关是同一时刻;兑付频率写进文首 / 2.1 / 待办 / registry |
|
|
||||||
@@ -1,184 +0,0 @@
|
|||||||
# 任务书——提灯载体道具批(迭代 19)
|
|
||||||
|
|
||||||
> 版本 v1.2(2026-10-08 裁点全裁换代;v1.1=2026-10-07 grilling 三轮全裁定稿)。
|
|
||||||
> 立项依据=用户拍板(2026-10-07):**提灯死接口缺口作为独立卡立项、编入迭代 19**——原登记去向「Alpha 信息件重定批」就此改道(改道留痕见 §一)。
|
|
||||||
> **✅ 裁点全裁(2026-10-08 用户令):①载体选型=案A(秘宝·同调位新行,按推荐)②缺陷处置=另卡先行(=迭代 20「主菜单开局缺陷修复批」,确认随同一 goal 先行跑,其落籍=本卡 T1 前置门)③商店分类条件点随案C 落选自然消解**。开工门=**goal 迭代级开工令(一次覆盖五卡=迭代 20 卡A+本迭代四卡)**;唯一残留交互=T0 行字段推荐值呈报(名称/文案/稀有度等)秒答「按推荐」即全收。worktree=`iter19-lantern`。
|
|
||||||
|
|
||||||
## 一、立项背景与改道留痕
|
|
||||||
|
|
||||||
**缺口现状**:视野迷雾机制(HUD框架「视野迷雾」节,正主定义)已实装,提灯视野外扩 +2 的**接线面**已就位(迭代 14⑤),但**全游戏无任何道具/途径能让玩家拿到提灯——功能不可达,完成度 0**。`board_view.gd:139` 注释自述「+2 预留不接效果——效果载体归 Alpha 信息件批」。
|
|
||||||
|
|
||||||
**改道留痕(本批立项即登记,执行批 T4 落文刷新指路句)**:提灯载体自 2026-09-30 迷雾立项配套拍板起,登记去向一直为「aux_items 新行,随 Alpha 信息件重定批一并登记」(HUD框架 v0.13 配套拍板 / board_view.gd:139·:145 注释 / art-bible.md:387 / qa 出口报告 m4iter14 §⑤ 四处在案)。2026-10-07 用户令:**改道为独立卡编入迭代 19**,不再等 Alpha 信息件重定批。连带口径:①原「Alpha 信息件重定批」中显影尘/地穴全图卷的能力封存重定义务**仍留在原批、不随本批代行**(两件事分卡,避免"两个变量一批"读数纪律冲突——先例=初始展开收窄批 §6.3 与提灯批分开归因);②迭代 19 自动化验收补齐批 §一「明示不进本批:B4 提灯死接口……归 Alpha 信息件重定批」一句随本批立项自然失效,该文为历史成文不改,本节即留痕。
|
|
||||||
|
|
||||||
**消歧(防混淆,主控已核实)**:仓库名字带"灯"的唯一现役物件 `greedy_lantern`(feats.tres:291「贪婪矿灯」)是 dig_reveal yield_mult 专长——开格产出放大,**与视野无关**,本批不碰该行;提灯点亮视觉(人设腰灯/棋盘光晕)挂「资产升档重产批」与「提灯点亮解禁候选」(06 立绘升档条挂起项)既有挂账,本批不接。
|
|
||||||
|
|
||||||
## 二、在册裁决检索结果(口头裁决检索在先义务履行记录)
|
|
||||||
|
|
||||||
动手前已检索 design/gdd/06-待办清单.md、roadmap.md、design/gdd/systems/ 全目录,结论:
|
|
||||||
|
|
||||||
| 检索对象 | 结果 |
|
|
||||||
|---|---|
|
|
||||||
| 06-待办清单 | **无「魔法提灯 / 提灯载体 / 视野限制」在册条目**(唯一沾边=立绘升档条内挂起项「提灯点亮解禁候选」,纯视觉、与本批无关;研究文档曾引用的 06「视野限制 / 初始展开收窄 / 魔法提灯」条目已随收窄批立项收口移除——roadmap 迭代 14 行「06 视野条目已于 745b92ea 清账批退役」在案)。**无已裁未录事项,本批不是重复立项** |
|
|
||||||
| roadmap.md | 迭代 14⑤=提灯 +2 接线小卡**已落地**(接线面+断言,载体明示不造);初始展开收窄批迭代 14① **已实装**(2026-10-05,出生 5×5)——收窄抬难在前、提灯减难在后,§6.3「相邻序位分开出口读数」的归因条件天然满足 |
|
|
||||||
| design/gdd/systems/ | HUD框架「视野迷雾」节=唯一正主定义(v0.13 配套拍板=灯甲形态 +2 flat、**类型微光不随视野扩**、载体归 aux_items 新行);秘宝.md v1.2 三层职责分界(操作包络加强类语义契合本效果);奇物.md ⚠ **专长体系推倒重设计中**冻结横幅(影响备选案 B) |
|
|
||||||
| 关联调研 | 调研-全局作用域变异设计空间-2026-10-04.md §3 案E **冻结**——「灯光收缩形与提灯撞车:同一杠杆第三家抢用」;案E 解封条件三件之一=「提灯接线落位」,本批落地即推进该解封条件。研究-初始展开收窄可行性-2026-10-04.md §4:Dredge 灯笼升级=视野外扩作为可成长信息件的成熟先例 |
|
|
||||||
|
|
||||||
## 三、现状考证(file:line 级,开工复核)
|
|
||||||
|
|
||||||
| 事实 | 出处 |
|
|
||||||
|---|---|
|
|
||||||
| 死接口本体:`FOG_LANTERN_BONUS=2` 常量在位;`_fog_lantern` 缺省 0=无提灯基线零扰动;半径算式已消费 | game/presentation/views/board_view.gd:138-141 |
|
|
||||||
| 公共接线面:`set_fog_lantern(enabled)`(true=半径 8+2、false=复原 0;写入即 refresh 全板重算雾态) | game/presentation/views/board_view.gd:146-148;半径算式 :818-823(`fogged := fdist > FOG_RADIUS + _fog_lantern`) |
|
|
||||||
| 断言防腐层:case⑮ 直接调 setter 断言开=dist R+1 格转可见+lantern=2/关=复原——**与载体无关,载体级断言须扩展** | game/smoke/ui_input_probe.gd:395-418 |
|
|
||||||
| 全仓 `set_fog_lantern` 调用面:仅 board_view 定义处 + ui_input_probe——**生产路径零调用**=死接口实锤 | 全仓 grep 2026-10-07 |
|
|
||||||
| BoardView 实例化组合根:`board_zone_view.gd:39`(战斗屏装配链);探针/单测另有三处直构 | game/presentation/views/board_zone_view.gd:39 |
|
|
||||||
| **载体通道①秘宝·同调位**:表=treasure_items.tres(registry 键 `aux_items`);九件现役(被动六+主动三),获渠=营地道具工坊同调装配,slot_cost 恒 1、位硬上限 3(attunement_growth.tres 里程碑求值);被动件走效果引擎订阅行(on/when/do 三字段,16 效果类型封闭词表) | game/data/tables/treasure_items.tres;game/core/treasure_items.gd;秘宝.md「现行形态速览」 |
|
|
||||||
| 同调存档面现成:save v4 三新域 boss_kill_count/attunement_equipped/attune_refresh_level,断点充能随档 | game/core/save_manager.gd:42·:80·:124·:314-322 |
|
|
||||||
| 同调入战斗通路:runner `set_attunement` → enc 携带 → `begin_battle` 注入 `attunement` 数组+`_attune_has(item_id)` 判定在位(private);`_fx.rebuild(feat_ids, attunement, tree_rules)` | game/core/adventure_runner.gd:937·:1079;game/core/battle_orchestrator.gd:75-77·:124-131·:225-250 |
|
|
||||||
| ⚠ 同调传参缺陷**已实查定案**(2026-10-07 另会话取证,非疑似):`_start_adventure` 是唯一开局漏斗(main.gd :421/:430 两入口全走 :510),参数面只传 hero_override/first_script/treasure_unlocked/shop_mode 四键,**未传 attunement/attune_refresh_level/tree_rules 三键**,补偿路径七条全无——**全部开局入口均丢同调**,非仅菜单开局 | design/gdd/06-待办清单.md「菜单开局未传同调装配与局外树规则」条+另一会话取证报告;game/presentation/main.gd:510 |
|
|
||||||
| **载体通道②专长**:表=feats.tres(27 行,archetype/rarity/triggers 订阅行);获渠=关底 Boss 击败专长三选一 + 专长门票(商店 feat_ticket 行/奖励节点罕见门票,拿到即开不进持有集);当局持有集 `_feats` 跨关携带、收束清零、断点 relics_seed 恢复现成 | game/data/tables/feats.tres;game/core/adventure_runner.gd:85·:137-142·:289-298·:379-396 |
|
|
||||||
| ⚠ 专长冻结横幅:奇物.md 头注「专长体系推倒重设计中……落笔完成前专长相关章节只作历史参照,不作新建依据」——往专长加新件须先获用户豁免 | design/gdd/systems/冒险循环/奇物.md:16 |
|
|
||||||
| **载体通道③商店货架**:shop.tres pool_shelf 六行封闭词表(attack/max_hp/armor/ap/feat_ticket/heal);价公式 `ceil(base_price × b^(关序−1) × A^(本次进店已购))`;账本=冒险结构 `_bonus_taken` 单点共享 | game/data/tables/shop.tres:68-94·:103-109 |
|
|
||||||
| **载体通道④合并案素材**:显影尘 probe_dust 行 deferred「能力封存」在表(effect_kinds 空行先例——表允许无效果行在位);探巢摆钟/爆破工兵包=active_charged 语义(使用期生效,与视野持续态冲突);工兵晨令=轮限被动 | game/data/tables/treasure_items.tres:9-19·:40-72·:151-173 |
|
|
||||||
| 奇物分类判据(商店/奇物渠道牵连):「给规则的是专长,给数字的是属性值提升,给余量的是资源」——视野外扩三类都不贴,走该渠道须新裁分类判据 | design/gdd/systems/冒险循环/奇物.md §1.4 |
|
|
||||||
| 提灯效果语义正主:灯甲形态(光照圈外扩 +2 格,flat 整数档);类型微光不随视野扩(微光锚=可挖域贴身 8 邻) | design/gdd/systems/表现与支撑/HUD框架.md:168·:170 |
|
|
||||||
| 效果语义出处链(+2 的定位):迷雾立项配套拍板④裁「灯甲视野外扩 +2、类型微光不随视野扩」;FOG_RADIUS 常量改动=非白名单须用户 | board_view.gd:138-139 注释;HUD框架 v0.13 |
|
|
||||||
| 体验验证联动信号在册:「迷雾联动信号(记忆态使用率):视野外扩道具(魔法提灯 +2)与记忆态的使用频率变化」 | design/gdd/07-体验验证清单.md:138 |
|
|
||||||
| 形象候选池正主:铲/旗/背包/提灯四件随身件=秘宝形象候选池(用户 2026-09-23 提案登记,彩蛋闭环=玩家在道具栏认出主角腰间同款)——提灯作为秘宝件有形象登记先例 | design/art/character-design.md:48 |
|
|
||||||
|
|
||||||
## 四、范围
|
|
||||||
|
|
||||||
**收**:提灯载体道具的载体选型落定后的——数据行落表(依裁决案)、载体到 `set_fog_lantern` 的生产路径接线(组合根/呈现桥)、存档面(依案,多数现成)、测试扩展(case⑮ 载体级断言+集成)、文档落籍与改道留痕刷新(§一)。
|
|
||||||
**不收**:+2 数值本身的重议(FOG_LANTERN_BONUS=2 为 2026-09-30 拍板值,载体只决定"怎么拿到",不决定"给多少");类型微光任何改动(拍板④钉死不随视野扩);提灯点亮视觉(挂账不动);显影尘/地穴全图卷能力封存重定(留原 Alpha 信息件重定批);全局变异案E 解封重议(本批只是推进其解封条件之一);贪婪矿灯 feats 行(消歧见 §一)。
|
|
||||||
|
|
||||||
## 五、载体备选案全列(裁决呈报面——设计权归用户,本节不代定案)
|
|
||||||
|
|
||||||
### 5.1 现役通道盘点
|
|
||||||
|
|
||||||
| 通道 | 数据表 | 获取通路 | 生效周期 | 存档面 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 秘宝·同调位 | treasure_items.tres | 营地道具工坊同调装配 | 永久持有、每局装配生效 | save v4 attunement_equipped(现成) |
|
|
||||||
| 专长 | feats.tres | Boss 击败三选一/专长门票 | 当局(收束清零) | 断点 relics_seed/_feats(现成) |
|
|
||||||
| 商店货架 | shop.tres pool_shelf | 商店房 GP 购买 | 当局 | `_bonus_taken` 账本(视野件需扩) |
|
|
||||||
| 奖励节点三选一 | adventure.tres 候选令牌 | 奖励节点(道具件令牌池现行空集休眠) | 当局 | 同专长/资源令牌面 |
|
|
||||||
| 元进度树 | meta_tree.tres | 账号级购点 | 跨局永久 | tree_nodes(现成) |
|
|
||||||
|
|
||||||
### 5.2 备选案
|
|
||||||
|
|
||||||
**案 A——秘宝·同调位新行(HUD框架配套拍板的原登记指向;推荐)**
|
|
||||||
- **获取渠道**:营地道具工坊「同调装配」段装配入位,slot_cost 1(与九件同规);同调位经 attunement_growth.tres 里程碑解锁(0 起步硬上限 3)——获取成本=占一个稀缺同调位的机会成本,零新机制。
|
|
||||||
- **稀有度定位**:与探巢摆钟/爆破工兵包并列的工兵系功能件;「魔法提灯」名号与九件气质(工兵/工程向)同族;**形象候选池有正主**(character-design.md:48 提灯四随身件=秘宝形象候选池,彩蛋闭环)。
|
|
||||||
- **与其他视野机制的叠加关系**:灯光区 8+2=10 与微光两圈分立(微光不扩,拍板④零触碰);与真视 3×3 护栏无涉(视野是呈现边界不是格面信息——不进叠加层、不触「真视窄域≤3×3」加载校验);与已实装的初始展开收窄(出生 5×5)构成减难补偿对,收窄在前本批在后、归因已分开。
|
|
||||||
- **接线与存档工作量**:treasure_items.tres 新行(form=passive、**triggers 空**——视野是纯呈现层不订阅任何结算事件,不走效果引擎,规避 16 效果类型封闭词表扩表);呈现桥=呈现侧(board_zone_view 装配链)从 orchestrator **公共只读访问器**(`_attune_has` 契约化出口,save v6 只读访问器先例——2026-10-07 用户裁 Q6,enc 透传案弃)判「装配集含提灯」→ `set_fog_lantern(true)`;复原语义=**每次 begin_battle 装配链按装配集显式重算 set_fog_lantern(含否)**,禁依赖战斗结束隐式复原(断点续玩/跨关天然正确——Q8.1);存档零新增(attunement_equipped 现成)。
|
|
||||||
- **测试面**:case⑮ 增载体级段——装配含提灯的 enc 起战斗→`fog_params_probe()["lantern"]==2` 且 dist R+1 格转可见;空装配基线 lantern==0 零扰动;单测补 treasure_items 行加载校验。集成断言挂 smoke。
|
|
||||||
- **风险**:①⚠ **同调传参缺陷已实查定案且影响全部开局入口**——不修则营地装配的提灯在任何开局路径下都不生效,案 A 功能目标破产;**已裁(2026-10-07,2026-10-08 确认)=缺陷另卡先行(迭代 20 缺陷批随同一 goal 先跑),其落籍=本卡 T1 前置门(§八 S1)**;②同调位竞争(3 位上限内九选 N+1,数值面=玩家侧取舍,不算风险);③「三层职责分界」新契约核对——秘宝=操作包络加强(视野/行动点/刷新/挖掘距离),视野外扩恰属操作包络,**语义契合正向**。
|
|
||||||
|
|
||||||
**案 B——专长新行(feats.tres,archetype=dig)**
|
|
||||||
- **获取渠道**:关底 Boss 击败专长三选一(每关一次兑付)或专长门票(商店 feat_ticket/奖励节点罕见门票)。
|
|
||||||
- **稀有度定位**:feats.rarity 三档(common/rare/rarest)自选一档呈报;dig 流派已有贪婪矿灯/矿脉直觉等先例,「灯」字面易与贪婪矿灯混淆(§一消歧须落文案)。
|
|
||||||
- **叠加关系**:同案 A(视野呈现边界机制面一致,与载体无关);当局清零=每局重新掷取,视野保障不稳定——三关可能一件都拿不到,**功能可达性不保证**。
|
|
||||||
- **接线与存档工作量**:feats.tres 新行(订阅行三字段——但视野不在 17 事件/16 效果类型词表内,**须扩封闭词表或旁路效果引擎**,两者都是内容数据驱动批的词表修订级改动);持有集/断点现成;呈现桥同案 A(读 `_feats`)。
|
|
||||||
- **测试面**:同案 A 形态,判据改持有集含提灯 feat。
|
|
||||||
- **风险**:⚠ **专长体系推倒重设计中(奇物.md 冻结横幅)**——27 件全数待重设、重设计主权归用户,本批往冻结区加新件须先获豁免,且重设计落地时本件随批重设=返工敞口;词表扩表牵动内容数据驱动批架构纪律。**不推荐**,除非用户有意把提灯归入"当局构筑变强"轴。
|
|
||||||
|
|
||||||
**案 C——商店货架商品(shop.tres pool_shelf 新 kind_id 行)**
|
|
||||||
- **获取渠道**:商店房 GP 购买(价公式现成:`ceil(base × b^(关序−1) × A^已购次数)`)。
|
|
||||||
- **稀有度定位**:与 feat_ticket/heal 并列的货架新 kind;base_price 与 GP 期望账联动(L2 商店前期望 ≈35-40 的既有账须复核加一货架后的取舍空间)。
|
|
||||||
- **叠加关系**:同案 A;商店可重复购买→须裁「买第二件是否叠加半径」(推荐=不叠加,flat +2 单次生效——**这是新增裁决面**);当局生效、跨关携带(商店购买写在冒险账本)。
|
|
||||||
- **接线与存档工作量**:shop.tres pool_shelf 新行(六行封闭词表扩一行);**奇物分类判据须新裁**——视野外扩不进属性数值(非 ASI)、不改规则(非专长)、按「给余量」勉强归资源但资源四项枚举(行动点上限/刷新/GP/回复)也无此形(§十 W3);视野件不进加算区,需当局持有账本新挂点;呈现桥同案 A。
|
|
||||||
- **测试面**:同案 A 形态+商店购买链路集成断言(买→下一场战斗 lantern==2)。
|
|
||||||
- **风险**:分类轴新裁+叠加规则新裁两处框架级裁决;货架经济账复核义务;「买视野」与秘宝「操作包络件」的职责分界重叠——同一效果两处可放,用户须裁谁让位。
|
|
||||||
|
|
||||||
**案 D——合并案:显影尘行激活重定(不开新载体)**
|
|
||||||
- **获取渠道**:同调位装配(显影尘行已在表,deferred→激活换装)。
|
|
||||||
- **稀有度定位**:复用既有行位;「魔法提灯」与「显影尘」二名取一或一名双效果,命名归用户。
|
|
||||||
- **叠加关系**:同案 A。
|
|
||||||
- **接线与存档工作量**:最省——一行改 deferred=false+定效果字段,接线同案 A;但显影尘原语义=「恢复推理原料(显影/信息)」与「灯光区呈现边界外扩」是两类效果,若定成双效果(显影+视野)则一行两义。
|
|
||||||
- **测试面**:同案 A。
|
|
||||||
- **风险**:⚠ **用户已拍板本缺口独立卡立项、与显影件重定分道**——本案实质是把两条线重新并轨,违背改道裁决的原意(改道理由=不等信息件批);显影尘/地穴全图卷的其余重定面(能力封存的全图信息定位)会被本批部分代行,读数归因混杂。**仅在用户明示"顺便把显影尘一起定了"时成立**,否则列为淘汰向。
|
|
||||||
|
|
||||||
**案 E——元进度树节点(meta_tree.tres,跨局永久视野 +2)**
|
|
||||||
- **获取渠道**:账号级天赋树购点(tree_nodes 已购等级现成)。
|
|
||||||
- **稀有度定位**:树节点一档,永久生效。
|
|
||||||
- **叠加关系**:同案 A;但永久 +2=**全玩家恒定灯光区 10**,等价于改 FOG_RADIUS 基线——迷雾「移动逐步照亮」的探索感常驻弱化,收窄批四带读数基准漂移(每局恒 +2 无对照组)。
|
|
||||||
- **接线与存档工作量**:tree_rules 已进 `begin_battle`(orchestrator `_fx.rebuild` 第三参),呈现桥读 tree_rules 同案 A;存档现成。
|
|
||||||
- **测试面**:同案 A,判据改 tree_rules 含节点。
|
|
||||||
- **风险**:与立项本意("载体**道具**")偏差最大——没有"拿到"的过程与取舍;难度读数无法归因(永久变量混入全部后续带);FOG_RADIUS 基线语义被旁路改写(常量改动=非白名单须用户的纪律被实质绕开)。**不推荐**,列出供完整性。
|
|
||||||
|
|
||||||
### 5.3 淘汰案与依据
|
|
||||||
|
|
||||||
| 淘汰案 | 依据 |
|
|
||||||
|---|---|
|
|
||||||
| 宝箱保底/掉落投放复活 | 「挖格不掉道具」2026-10-01 已退役、过渡投放池现行零行、奖励节点道具件令牌池空集休眠(秘宝.md 投放态注记)——复活退役渠道违反渠道退役裁决,且保底=无供给稀缺性,载体价值感消失 |
|
|
||||||
| 提灯专用关卡/专用节点 | 渠道轴无此形态(奇物渠道三枚举+商店+同调位);为单件道具重造关卡类型与关卡节点图生成器语义冲突,成本收益倒挂 |
|
|
||||||
| 常驻基线(FOG_RADIUS 8→10,不开道具) | 功能可达但「载体道具」立项本意落空——无获取过程、无取舍;FOG_RADIUS 改动=非白名单须用户且实质作废收窄批「初始展开恰等」验收原样主张;**不是道具方案,是改迷雾机制方案**,另案不混 |
|
|
||||||
| 全局变异行(variation.tres scope=global) | 调研-全局作用域变异 §3 案E 已冻结——「灯光收缩形与提灯撞车:同一杠杆第三家抢用」,解封条件三件在案且解封后归全局变异批 Own,不在本批 |
|
|
||||||
| 地形变异反制件挂靠 | 反制契约 2026-10-03 用户终裁作废(层级错配失败设计),counter_items 恒空合法 |
|
|
||||||
| 纯视觉点亮(人设腰灯亮起,无效果) | 不解决功能可达(雾半径不变);点亮视觉本身另挂「提灯点亮解禁候选」(06 挂起项)与整屏样张闸 |
|
|
||||||
|
|
||||||
### 5.4 推荐排序
|
|
||||||
|
|
||||||
**案 A > 案 D(条件)> 案 C > 案 B > 案 E**。案 A 是配套拍板的原登记指向、形象候选池有正主、三层职责语义契合、存档接线全现成。**✅ 已裁(2026-10-08 用户令)=案 A**;案 B/C/D/E 落选留档备查。行字段推荐值清单(display_name/desc 文案/rarity/行 id/slot_cost/门槛位——2026-10-07 用户裁 Q7)=T0 呈报、秒答「按推荐」即全收(provisional 投值,出口追认),**不留二次裁量停机**。
|
|
||||||
|
|
||||||
## 六、任务卡(T0 末 S0 停机;T1-T5 前提=S0 已裁,裁决前不执行)
|
|
||||||
|
|
||||||
- **T0(0.25d)**:worktree `iter19-lantern`;§三 现状考证逐条开工复核(file:line 漂移核对);**行字段推荐值呈报**(载体已裁案A——呈报=display_name/desc 文案/rarity/行 id/slot_cost/门槛位推荐值清单)→ 停机等秒答「按推荐」(goal 中唯一预期交互点)。
|
|
||||||
- **T1(0.5d,案A 定值)** 〔前提=迭代 20 缺陷卡已落籍+行字段秒答〕:treasure_items.tres 新行(form=passive、triggers 空,空 triggers 行合法性随显影尘先例);schema 校验面核对。
|
|
||||||
- **T2(0.5d)**:呈现桥接线——orchestrator 装配集只读出口契约化(或 enc 透传,方式归代拍板)→ board_zone_view 装配链判含提灯→ `set_fog_lantern(true)`,战斗结束/卸装复原 false;缺省零扰动基线保持(不装配=lantern 0=现行为逐位不变)。
|
|
||||||
- **T3(0.5d)**:测试扩展(三形态钉死,2026-10-07 用户裁 Q8.2/8.3)——probe=**case⑮ 内**加载体级段(装配含提灯→自动生效断言,不开新 case;迭代 14⑤ 接线段并进 case⑮ 先例);呈现桥判定=**注入装配集 stub 的单测**(game/tests/ 惯例位)+行加载单测;smoke=**现有套件加断言不新开套件文件**(装配→战斗→雾参数贯通);存档回归(装配→停点→回局 lantern 态一致)。
|
|
||||||
- **T4(0.5d)**:文档落籍——HUD框架 视野迷雾节「实施状态」注记换代(载体到位+接线闭环);秘宝.md 目录九件→十件(裁案 A/D);board_view.gd:139·:145 注释「归 Alpha 信息件批」改「迭代 19 提灯载体批落籍」;art-bible.md:387 同句刷新;06 登记(若案 A 则顺带核对「菜单开局同调传参」条与 W2 裁决的一致性);改道留痕以本任务书 §一 为准。
|
|
||||||
- **T5(0.25d)**:收口——重闸全绿(轻闸+run_all);MC 对拍=**静态论证不实跑**(提灯纯呈现层、off 态零生产路径变化,逐点推演落出口报告;渲染闸卡「MC 零跑静态论证」先例——2026-10-07 用户裁 Q3,实跑须走跑批批准制故弃);出口报告落 design/qa/;roadmap 迭代 19 行补本卡落地注记(§十一 避让)。
|
|
||||||
|
|
||||||
## 七、🔴 设计契约(违反=返工;触碰=L3 停机)
|
|
||||||
|
|
||||||
1. **效果语义零新增**:+2 flat=FOG_LANTERN_BONUS=2 既有拍板值,禁改数值、禁改半径算式、禁动 FOG_RADIUS 基线(常量改动=非白名单须用户,board_view.gd:138 纪律句沿用)。
|
|
||||||
2. **纯呈现边界**:排雷玩法/minesweeper_rules 零 diff;同板同动作序列无提灯/有提灯(不装配)两态结算逐位一致——case⑮ 既有断言面是回归底线,禁删减。
|
|
||||||
3. **类型微光不随视野扩**(拍板④):微光锚=可挖域贴身 8 邻,本批零触碰。
|
|
||||||
4. **设计权归用户**:载体选型已裁案A(2026-10-08);获取渠道随案A=同调装配;行字段(稀有度/文案/门槛数值)=T0 呈报秒答落定;执行批不得以"实现便利"代行任何一项;provisional 投值随出口报告追认。
|
|
||||||
5. **改道留痕与指路句同步**:「归 Alpha 信息件重定批」活性指路文本随 T4 刷新(§一记「四处」、本节原记「HUD框架两处」系口径矛盾——**以 T0 实查计数为准、逐处列清单**,禁新旧口径并存);历史成文(qa 报告、research 旧文档)原样保留不改。
|
|
||||||
6. **在飞避让**:迭代 19 渲染闸卡在飞(其触碰面见 §十一);worktree 隔离,主区脏文件勿碰勿代提交,roadmap 迭代 19 行四卡换代按**落籍顺序串行重放**、后合者 worktree 内 rebase(2026-10-07 用户裁 Q13)。
|
|
||||||
7. **复原语义**(Q8.1 钉死):每次 begin_battle 装配链按装配集显式重算 `set_fog_lantern(含否)`,禁依赖战斗结束隐式复原。
|
|
||||||
8. **营地与槽位视觉**:新行沿用现役程序化回退,零新素材(提灯点亮视觉挂账边界同 §一)。
|
|
||||||
9. **测试三形态钉死**(Q8.2/8.3):probe=case⑮ 内扩展不开新 case;呈现桥判定=装配集 stub 单测;smoke=现有套件加断言不新开套件文件。
|
|
||||||
|
|
||||||
## 八、停机点
|
|
||||||
|
|
||||||
- **S0**:T0 末**行字段推荐值呈报停机**——载体已裁案A,呈报面=行字段推荐值清单(唯一停机问询点);不秒答不进 T1。
|
|
||||||
- **S1**(前置门,2026-10-07 裁+2026-10-08 确认随同 goal 先行):**同调传参缺陷修复卡(=迭代 20「主菜单开局缺陷修复批」)落籍=T1 前置门**——缺陷已实查定案、影响全部开局入口,不修则案 A 功能目标破产;缺陷卡未落籍则 T1 不开工,本批不代修(缺陷卡随同一 goal 先跑、天然满足)。
|
|
||||||
- **S2**:用户若要求随批产出提灯点亮视觉资产——超出本批范围(挂账面见 §一),停机重议扩范围或维持挂账。
|
|
||||||
|
|
||||||
## 九、验收断言清单(本批完成定义)
|
|
||||||
|
|
||||||
1. 裁决案的数据行在表且加载校验通过(schema 白名单零违例)。
|
|
||||||
2. 生产路径贯通:裁决载体在位→战斗内 `fog_params_probe()["lantern"]==2`、dist==R+1 环带转可见;载体缺位→lantern==0 且现行为逐位不变。
|
|
||||||
3. ui_input_probe 载体级断言全绿且既有 case⑮ 断言零删减(实查计数 17,T0 复核为准);smoke 集成与存档回归全绿。
|
|
||||||
4. 重闸全绿+MC 对拍零扰动(off 态逐位一致基线保持)。
|
|
||||||
5. §七.5 四处活性指路句全部换代、零旧口径残留(历史成文除外)。
|
|
||||||
6. 出口报告落 design/qa/(含 provisional 追认单+行字段秒答记录);roadmap 迭代 19 行换代。
|
|
||||||
|
|
||||||
## 十、裁点留痕(0 项未裁——全裁,编号仅存档用)
|
|
||||||
|
|
||||||
- **裁点①载体选型**:✅ 2026-10-08 用户裁=**案A**(秘宝·同调位新行,按推荐);案 B/C/D/E 落选留档 §五。
|
|
||||||
- **裁点②缺陷处置**:✅ 2026-10-07 裁=另卡先行(=迭代 20「主菜单开局缺陷修复批」);2026-10-08 确认随同一 goal 先跑,其落籍=本卡 T1 前置门(§八 S1)。
|
|
||||||
- **裁点③商店分类+重复购买叠加**:随案C 落选自然消解,无裁点。
|
|
||||||
- 唯一残留交互=T0 行字段推荐值秒答(「按推荐」机制,非裁点)。
|
|
||||||
|
|
||||||
## 十一、与兄弟卡避让(迭代 19 渲染闸卡=自动化验收补齐批)
|
|
||||||
|
|
||||||
| 维度 | 结论 |
|
|
||||||
|---|---|
|
|
||||||
| 代码文件交集 | **零**——渲染闸卡触碰 tools/、game/tests/golden/、probe_gate/render_gate 脚本、tests/README、CLAUDE.md、数据配置.md:205 指路句;本批触碰 game/data/tables/、game/core/(出口契约化视案)、game/presentation/views/、game/smoke/ui_input_probe.gd。game/smoke/ 目录级同域但文件级不相交(渲染闸卡只收编探针进闸不改探针文件本体,实查其任务卡 T3 确认) |
|
|
||||||
| 文档交集 | roadmap.md 迭代 19 行两卡都要换代(渲染闸卡 T6 换主行、本批 T5 补卡注记)——按「邻行冲突分支内并入」先例处理;HUD框架 本批独改(渲染闸卡不碰 gdd) |
|
|
||||||
| 时序 | 五卡同批(迭代 20 卡A 先行+本迭代四卡)、独立 worktree 各自合并,roadmap 行换代按落籍顺序串行重放(Q13);本批 T1 硬等缺陷卡落籍+T0 行字段秒答,天然错峰 |
|
|
||||||
|
|
||||||
## 十二、估时与切分
|
|
||||||
|
|
||||||
T0-T5≈**2.5d**(载体已裁案A:T1 取 0.5d 定值,词表扩表案 B/C 落选)。天然切分点 **T0 末行字段秒答**——段一 T0(考证+呈报,0.25d)可与缺陷卡并行先行;段二 T1-T5(实装+收口,2.25d)等缺陷卡落籍+秒答后一次合并。
|
|
||||||
|
|
||||||
## 十三、呈报摘要
|
|
||||||
|
|
||||||
- **在册裁决检索结果**:06-待办清单无提灯载体条目、无已裁未录事项;提灯载体自迷雾立项(2026-09-30)登记去向为「aux_items 新行、随 Alpha 信息件重定批」,接线面与 case⑮ 断言已于迭代 14⑤ 就位(2026-10-05),载体始终未造=功能不可达完成度 0。2026-10-07 用户拍板独立卡编入迭代 19、与信息件批改道分卡,留痕见 §一。
|
|
||||||
- **备选案概览**:现役通道五案——案 A 秘宝同调位新行(原登记指向,形象候选池有正主,推荐)、案 B 专长新行(撞专长重设计冻结横幅,不推荐)、案 C 商店货架(分类判据需新裁)、案 D 显影尘行激活合并(与改道裁决相逆,条件成立才用)、案 E 元进度树(永久变量破坏读数归因,不推荐);淘汰案六件(掉落保底/专用关卡/常驻基线/全局变异/反制挂靠/纯视觉)各附依据(§5.3)。
|
|
||||||
- **估时**:T0-T5≈2.5d(案A 定值),切分点 T0 末行字段秒答(考证呈报 0.25d/实装收口 2.25d)。
|
|
||||||
- **裁点**:0 项未裁——裁点①载体=案A(2026-10-08)/裁点②缺陷另卡先行=迭代 20 缺陷批随同 goal 先跑/裁点③随案C 消解;残留交互仅 T0 行字段秒答。
|
|
||||||
- **契约要点**:+2 数值与半径算式零改动;纯呈现边界+类型微光不扩钉死;设计权全归用户;与迭代 19 渲染闸卡代码文件零交集、roadmap 邻行并入。
|
|
||||||
@@ -1,206 +0,0 @@
|
|||||||
# 任务书:敌人表行集多行批(v1.1 定稿,零待裁点,开工门=U0 用户发令)
|
|
||||||
|
|
||||||
> 成文 2026-10-05,v1.1 修订 2026-10-06(五任务书联审:P3 改裁丙撤投放、P1 补遭遇骰机制与实例总数语义、F2/F5/F7 事实勘误、套件数与头注换代、expect_pools 与行序契约补列)。
|
|
||||||
> **性质**:数据表校验与生成机制放开 + 配套呈现适配,允许同一场遭遇混编多种敌人。
|
|
||||||
> 事实源 = [06-待办清单](../gdd/06-待办清单.md)「同深度第二敌种与精英 / Boss 编码位」条剩余面(该条前半「同层多遭遇」已由关卡节点地图 v1.0 节点编号升级消解,剩余即本卡);设计权威 = [敌人系统](../gdd/systems/战斗循环/敌人系统.md) v0.13(技能池执行批已落籍,Boss 半血解锁技已入表)。
|
|
||||||
> 归属迭代:**迭代 17 · 卡①**(迭代 17 现=卡⓪数据驱动扩展批+①本批+③暂停层只读入口批+④生涯界面设计立项;M4 数值批已移迭代 18,roadmap 现行口径)。
|
|
||||||
> 满足 loop engineering 八件(见 §9 逐条对照)。
|
|
||||||
> 开工门:**已解**——前置「技能池实施批落地」已于 2026-10-05 完成(技能池执行批合并进 master,提交 d3fa887,冒烟 772/0)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 目标与完成定义
|
|
||||||
|
|
||||||
### 1.1 一句话目标
|
|
||||||
|
|
||||||
放开敌人表「同一(关卡序号 × 节点深度)行集内只允许一种敌人」的加载期校验,让同一场遭遇可以在表内配多种敌人混编上场,并把生成、呈现、断言全链接通。
|
|
||||||
|
|
||||||
### 1.2 完成定义(出口判定清单——五条全满足才算本批完成)
|
|
||||||
|
|
||||||
| # | 判定项 | 量化标准 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 校验放开 | 敌人表同一行集配两种以上敌人不再触发加载期致命错误;新的行集构成纪律(§5 R2 的具体条款,先随 P1/P4 裁决落文再落码)由加载期校验兜底 |
|
|
||||||
| 2 | 生成链接通 | 混编行集开战后,各敌种按裁决后的数量语义(P1)实例化上场,各自实例池独立摇号;固定顺位、死亡顺延、范围效果全体现行语义不破 |
|
|
||||||
| 3 | 零内容期零漂移 | 在未投放任何混编行的表状态下,MC 与冒烟数值断言对基线**逐位一致**(机制放开但表内容不变 = 行为必须不变) |
|
|
||||||
| 4 | 重闸全绿 | 冒烟全量(基线数字 T0 重测回填,禁止沿用本文历史数字)· run_all 十七套件 · 场景探针(触呈现加 ui_struct_probe / ui_click_probe / ui_layout_probe)· doc 三闸对基线零新增 · 熵增闸 PASS |
|
|
||||||
| 5 | 人闸完成 | 混编遭遇实机目检清单过(若在 P3 裁「本批投放首个混编行」)+ 代拍板追认清单过;收口五步齐 |
|
|
||||||
|
|
||||||
> ⚠️ **基线纪律**:本任务书起草时 master 头 = 413c936(ui-struct-probe mini-loop 合并后),冒烟基线 772/0。开工 T0 必须重测基线取实际值回填,禁止把本文数字当闸门。
|
|
||||||
|
|
||||||
## 2. 现状事实(代码级考证,2026-10-05 起草时点;T0 须自行复核)
|
|
||||||
|
|
||||||
> **T0 实核修订(2026-10-07,基点 e535436,L2 记录级——行号漂移不动摇结构)**:F1/F2 函数体/F6/F7/F11 主段/F8/F9 全部无漂移;漂移项如实改列——F2 冒烟四调用点现 = `smoke_all.gd:3534/3536/3566/3569`(卡③暂停层批 smoke_all 加行后移);F4 spawn 函数头现 = `unit_container.gd:42`(取行 :47、数量守卫 :66-69、难度修饰 :61-63 不变);F5 战前预取现 = `battle_orchestrator.gd:181`(遭遇骰 :182-193「数量骰先、atk 骰后」同 scope,spawn 调用 :196);battle_narrator.gd 实际路径 = `game/presentation/battle_narrator.gd`(boss_name 定义 :71、resolve :75、取名 :76——非 core/);config_db_test 现 = `:60`;expect_pools 段现 = `smoke_all.gd:3052-3084`(文案行 :3084);「smoke_all 十余处」实核 = 直接调用 7 处(ceil 3 处 :1997/:2311/:3239 + floor 4 处)另加跨表契约断言段 :294-311 与 :3518-3533/:3555-3564 两处复述段。补采改前锚 40 局已获用户批准落盘(L3 报告 §七,seed0=83000,`runsum_iter17enemy_pre_{off,formed}_n20_20261007.jsonl`)。
|
|
||||||
|
|
||||||
| # | 事实 | 读数 |
|
|
||||||
|---|---|---|
|
|
||||||
| F1 | 「每行集恰一敌种」校验位置 | `game/data/schemas/enemy_table.gd:108-112`——按 `(level_index, node_depth)` 聚合,行集内出现第二个 `enemy_id` 即报 `rowset_rule` 类错误,加载期致命中止 |
|
|
||||||
| F2 | 行集解析双算法共存 | ①`EnemyTable.resolve_rowset`(`enemy_table.gd:121-132`)= **floor 语义**(取 ≤ 请求坐标的最近行),仅 `smoke_all.gd:3452/3454/3484/3487` 四处使用(v1.0 行号 3383/3385/3415/3418 系起草后漂移,2026-10-06 复核);②`ConfigDbResolver.resolve_enemy_rowset`(`config_db_resolver.gd:33-34` → `_resolve_progress`)= **ceil 语义**(向上取整保证偏难,2026-09-18 拍板),是全部生产消费面入口。两函数都**只返回单行** |
|
|
||||||
| F3 | 双算法处置是既有待裁项 | 工作日志 312(2026-10-02 代码质量修复批)呈报的七拍板点之一「enemy_table.resolve_rowset 双算法」至今未裁——本批动行集解析必然擦到这条,列入 §8 待裁点 P2 |
|
|
||||||
| F4 | 生成消费点 | `unit_container.gd:47` `spawn()` 取单行后按 `unit_count`(或遭遇骰传入的数量)生成 count 个**同种**实例;数量域常量 `EnemyTable.UNIT_COUNT_MIN/MAX = [1,3]`,表校验与 spawn 守卫共用(`enemy_table.gd:18-21`) |
|
|
||||||
| F5 | 其余消费点 | `battle_orchestrator.gd:225`(战前预取行 erow_pre;v1.0 写 220 系漂移,2026-10-06 复核)· `battle_narrator.gd:75`(叙述取敌种)· `smoke/skill_rhythm_probe.gd:17` · `smoke/damage_probe.gd:270/421` · `smoke_all.gd` 十余处 · `tests/unit/data_config/config_db_test.gd:59-61`(双表精确行契约断言) |
|
|
||||||
| F6 | GDD 侧结构冻结 | 敌人系统.md 规则表「每个坐标只出一种敌种」(:75)+ 结构冻结条款含「每坐标恰一敌种」(:263)——属**结构冻结面**,修订须先走 GDD 修订流程落文再落码,禁止码先文后 |
|
|
||||||
| F7 | 表内容现状 | `enemy.tres` 共 **19 行、9 敌种**(地精/熊地精/霍布地精/食人魔酋长/巨蜘蛛/蛛化卓尔精灵/灰矮人/钩爪恐魔/灰矮人石君王;v1.0 写「21 行 8 敌种」系事实错误,漏霍布地精,2026-10-06 复核 `grep -c '"enemy_id"'`=19,冒烟断言文案自证「十九行」),现行每行集恰一行 |
|
|
||||||
| F8 | 遭遇骰与数量骰 | 数量区间(`unit_count`/`unit_count_max`)由战斗结算遭遇骰同流在 spawn 期掷定一次传入确定值(敌人系统零随机纪律——本系统只收确定结果);攻击区间同理。混编不改这条纪律 |
|
|
||||||
| F9 | 难度修饰 | `resolve_difficulty_modifiers` 按 (L,D) 精确匹配返回 hp_mult/atk_mult,施加于行值快照之前(`unit_container.gd:61-63`)——混编后该修饰**对行集内全部敌种同乘**,不改变异 |
|
|
||||||
| F10 | 范围效果语义 | 敌人系统.md:75「敌方效果对全体生效」规则的前提是「场上敌人全同种,范围效果作用于所有存活敌人是天然兼容的默认」——混编后「全体存活敌人共享」的结算语义**不需要改**(效果本就按存活单位逐一生效),但 GDD 该句前提描述须随批修订 |
|
|
||||||
| F11 | 现行同类先例 | 同表多行已有合法形态:`pool` 数组内多技能行、`unit_count` 区间;跨表「双表精确行契约」(board_gen × enemy 同坐标精确行)由 `smoke_all.gd:294-311` 与单测断言维护——混编放开后该契约的「精确行」语义须改为「精确行集」 |
|
|
||||||
|
|
||||||
## 3. 改动清单(分四组,逐组独立可提交)
|
|
||||||
|
|
||||||
### 组 A · GDD 修订先行(结构冻结面的合法修订通道)
|
|
||||||
|
|
||||||
| 文件 | 改动 |
|
|
||||||
|---|---|
|
|
||||||
| `敌人系统.md` | 「每个坐标只出一种敌种」规则改写为混编口径(行集多行、数量语义按 P1 裁决落文);结构冻结条款对应项改写;「敌方效果对全体生效」前提描述修订(F10);版本历史 +1 |
|
|
||||||
| `难度曲线与Boss.md` | 混编遭遇首放行集的难度归属注记(行值 provisional 归调参的既有口径不变) |
|
|
||||||
| `design/registry/entities.yaml` | 敌人表行集条目的契约描述同步 |
|
|
||||||
| `06-待办清单.md` | 「同深度第二敌种与精英 / Boss 编码位」条状态行收口(剩余面完成日期留痕,条目本体按解决口径处理) |
|
|
||||||
|
|
||||||
### 组 B · 表 schema 与解析层
|
|
||||||
|
|
||||||
| 文件 | 改动 |
|
|
||||||
|---|---|
|
|
||||||
| `enemy_table.gd` | 「每行集恰一敌种」校验(:108-112)替换为混编构成纪律校验(条款随 P1/P4 裁决:如行集总行数上限、Boss 行是否允许多行、同敌种重复行仍禁止);键结构 `(L,D,enemy_id)` 不变(dup_key 校验不动) |
|
|
||||||
| `config_db_resolver.gd` | `resolve_enemy_rowset` 由返回单行改为返回**行集数组**(ceil 命中 (l*,d*) 后取该坐标全部行);单行访问器保留还是全量换代随 P2 裁决 |
|
|
||||||
| `enemy_table.gd` floor 版 | 随 P2 裁决:退役或对齐;冒烟四处调用点同步 |
|
|
||||||
|
|
||||||
### 组 C · 生成与战斗编排
|
|
||||||
|
|
||||||
| 文件 | 改动 |
|
|
||||||
|---|---|
|
|
||||||
| `unit_container.gd` | `spawn()` 改受理行集:逐行按各自数量语义实例化,行主序生成序保持(`default_target` 固定顺位语义自然兼容);实例池快照逐行独立(现行逐实例快照逻辑天然兼容);数量域守卫改为行集级(上限随 P1) |
|
|
||||||
| `battle_orchestrator.gd:225` | 战前预取改行集形态 |
|
|
||||||
| `battle_narrator.gd:75` | 叙述取敌种改行集形态(混编遭遇的开战叙述口径——逐种列名还是取首种,随批定,属呈现文案) |
|
|
||||||
|
|
||||||
### 组 D · 断言与探针
|
|
||||||
|
|
||||||
| 文件 | 改动 |
|
|
||||||
|---|---|
|
|
||||||
| `smoke_all.gd` | 行集结构断言换代:「行集恰一敌种」相关断言(:2900 注释口径、L2/L3 定点行集断言 :3452-3487 段等)改断言新构成纪律;「双表精确行契约」断言改「精确行集」口径;**expect_pools 逐坐标池模板断言(:2973-2996)换代**——现行按 `"L_D"` 键每坐标一池精确比对,同坐标第二行即红,须改 `(L,D,enemy_id)` 键口径,且「十九行池模板」等文案随 F7 换代(v1.1 补列,原漏);新增混编正反断言(违规构成定位到类别) |
|
|
||||||
| `config_db_test.gd:59-61` | 同通道断言换代 |
|
|
||||||
| `skill_rhythm_probe.gd` / `damage_probe.gd` | 取数面随行集形态适配(行为零变更期逐位一致是验收条件) |
|
|
||||||
|
|
||||||
## 4. 范围边界(🔴 不可越界)
|
|
||||||
|
|
||||||
| 禁项 | 理由 |
|
|
||||||
|---|---|
|
|
||||||
| **零混编内容期行为零漂移** | 本批的默认形态 = 机制放开 + 表内容不变。P3 若裁「本批投放首个混编行」,投放行本身属内容变更,须单独 MC 取证(先推算后重跑铁规:跑批发起前须用户批准) |
|
|
||||||
| **不改遭遇骰/数量骰随机流** | 敌人系统零随机纪律与 RNG 单点红线不变;P1 已裁混编需新摇号(每行一骰),必须走既有封闭流扩签并先经用户批准(P1 裁决补充段已含此门) |
|
|
||||||
| **不改键结构与存档** | `(L,D,enemy_id)` 键、断点存档、跨局存档零触碰 |
|
|
||||||
| **不设精英/Boss 编码位** | 06 条目已裁「不设精英 / Boss 编码位」(精英 P2 内容承载),本批不重开 |
|
|
||||||
| **技能池构成纪律不动** | 每池恰一普攻、增益 ≤1、unlock_hp_pct 投放纪律(仅 Boss 行)原样。**知悉(v1.1)**:「原样」实为无硬闸——`enemy_table.gd:94-95` 注释明写纪律系文档登记非校验;P4 乙放开 Boss 多行后,「Boss 行带 unlock_hp_pct 可静默过校验」的无闸面随之扩大,后续内容批投放 Boss 多行时须逐行人工复核此面 |
|
|
||||||
| **数值零触碰** | hp/atk/unit_count/权重行值一律不动(P3 投新行除外,且新行行值 provisional 归调参) |
|
|
||||||
|
|
||||||
## 5. 设计契约(🔴 触碰 = L3 停机)
|
|
||||||
|
|
||||||
| # | 契约 | 验证方式 |
|
|
||||||
|---|---|---|
|
|
||||||
| 🔴 R1 | **零内容期逐位零漂移**:未投混编行的表状态下,全量冒烟数值断言 + MC 对基线逐项一致 | 冒烟全量 + MC 同种子逐项比对(跑批先报批) |
|
|
||||||
| 🔴 R2 | **GDD 先行**:结构冻结面修订必须先落 `敌人系统.md` 再落码;码先文后即返工 | 组 A 提交先于组 B/C |
|
|
||||||
| 🔴 R3 | **fail-fast 语义保持**:行集构成违例仍加载期致命中止,错误类别可定位;禁软回退 | 组 D 正反断言 |
|
|
||||||
| 🔴 R4 | **RNG 单点**:不新增 `randomize()`/自建随机源;如需新摇号点一律经 RngService 封闭流并先报批 | 静态审查 + rng 日志比对 |
|
|
||||||
| 🔴 R5 | **双表精确行契约不破**:board_gen × enemy 同坐标覆盖义务(`smoke_all.gd:294-311`)在混编口径下仍成立 | 组 D 断言换代后全绿 |
|
|
||||||
| 🔴 R6 | **混编行文件行序纪律(v1.1 补)**:同一 (L,D) 的多行在表文件内必须相邻且行序=声明序=生成序——resolver 返回序、battle_narrator 取首行叙述、expect_pools 断言、spawn 行主序全部依赖文件行序,行序即契约 | 组 B 校验(同坐标行不相邻即报错)+ 组 D 断言 |
|
|
||||||
|
|
||||||
## 6. 任务卡(逐卡一个 loop 轮次)
|
|
||||||
|
|
||||||
| 卡 | 内容 | 估时 | 轻闸 | 完成判据 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| **T0** | 开工:worktree + 基线重测回填 §1.2(冒烟/run_all/探针/doc 三闸)+ `git status` 归属核对 + §2 事实表复核(重点 F1/F2/F5 行号) | 0.5d | 全量冒烟基线 | 基线数字回填且全绿;事实表差异如实修订并呈报 |
|
|
||||||
| **T1** | 组 A:GDD 修订(敌人系统.md 混编口径 + 结构冻结条款 + F10 前提句 + 版本历史)+ registry + 06 状态行 | 0.5d | doc 三闸 | 三闸零新增;修订句读者测试过(只读该节能答三问) |
|
|
||||||
| **T2** | 组 B:schema 校验换代 + resolver 行集数组化(P1/P2 裁决后) | 0.75d | 冒烟 | 正反断言红绿各验;旧「恰一敌种」违例行按新纪律判定正确 |
|
|
||||||
| **T3** | 组 C:spawn 行集受理 + battle_orchestrator/narrator 适配 | 0.75d | 冒烟 + ui_struct_probe | 零内容期冒烟逐位绿 |
|
|
||||||
| **T4** | 组 D:smoke/单测/探针断言面换代 + 新增混编构成断言 | 0.5d | 冒烟 + run_all | 十七套件绿;新断言负向验证红(故意配违规行集能抓到) |
|
|
||||||
| **T5** | (条件卡,**P3 二裁丙=本批不触发,不执行**——投放连同 Boss 多行归后续内容批,该批开工时按本卡口径执行+MC 取证先报批+难度带读数义务) | 0.5d | — | — |
|
|
||||||
| **T6** | 重闸:全量轻闸 + doc 三闸 + 熵增闸 + MC 逐项比对(零内容期——本批唯一 MC 面;先报批) | 0.5d | 重闸全绿 | §1.2 判定 3/4 |
|
|
||||||
| **T7** | 人闸:目检清单(T5 执行时含混编遭遇实机目检)+ 代拍板追认 | 0.5d | 目检过 | §1.2 判定 5 |
|
|
||||||
| **T8** | 收口五步(active.md 快照 → 工作日志 → roadmap 迭代 17 行标注 → 06 收口 → 闸序列留痕) | 0.25d | — | 收口五步齐 |
|
|
||||||
|
|
||||||
> 估时合计 ≈ **3.75d**(T5 撤投放后全批;v1.0「含 T5 4.25d」口径随 P3 改裁作废),超 roadmap 软时间盒 3 日上限——知情预挂:T4 后按 L3 呈报切点,不擅切(沿迭代 9/秘宝批先例)。
|
|
||||||
|
|
||||||
## 7. 验证闸
|
|
||||||
|
|
||||||
- **轻闸**(每轮):run_smoke 全量 + ui_input_probe;触 presentation 的轮次(T3/T5)加 ui_click_probe + ui_layout_probe + ui_struct_probe(2026-10-05 起 ui_struct_probe 已入默认必跑段)。
|
|
||||||
- **重闸**(T6):全量轻闸 + doc 三闸(doc_link / gdd_lint / doc_term,对基线零新增)+ 熵增闸 + MC 逐项比对。
|
|
||||||
- **MC 触发**:零内容期对拍属「结构位移类存档锚」,**发起前先向用户请示定性**(CLAUDE.md MC 触发细则);T5 本批不触发(P3 丙),后续内容批投放时属数值验证场景、同样先报批。两入口铁规全程有效。
|
|
||||||
|
|
||||||
## 8. 代拍板白名单与待用户裁点
|
|
||||||
|
|
||||||
**白名单内**(执行会话可直接决断,commit 记录):
|
|
||||||
- 行集数组在 GDScript 层的具体返回形态(Array[Dictionary] 的键序、空集表达)
|
|
||||||
- 新校验错误类别命名与报错文案(沿用 `rowset_rule` 类别还是新增)
|
|
||||||
- 各组内提交粒度与改名措辞
|
|
||||||
|
|
||||||
**待用户裁点**(每个裁点列全备选案,含淘汰依据):
|
|
||||||
|
|
||||||
### P1 · 混编数量语义
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令):案甲**——每行各自 unit_count 独立实例化;**行集实例总数(各行骰后数量求和)≤4**(Q9 二裁消歧:「总数」=实例数非行数,行数不另设上限);UNIT_COUNT_MAX 语义改「单种数」随批换代校验与 spawn 守卫。
|
|
||||||
|
|
||||||
**裁决补充·遭遇骰交互(Q8 二裁,v1.0 漏裁)**:混编行集落地后**每行各掷一次数量骰**(与「每行各自 unit_count」语义自洽),单一行集仍吃单个 `unit_count_override` 且仅作用于该行集整体传入值按行分配的现行路径不存在——override 命中时跳过行内掷骰直接取值;每行一骰=遭遇骰封闭流新增消费点,**实现前须按 R4 报批扩签**(随机流消费次数变化牵动全部种子面),未获批准前 T2/T3 不得落码。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲(推荐,已裁) | 每行各自 `unit_count` 独立实例化,行集实例总数上限 ≤4;数量域 [1,3] 仍约束单行 | 表意最直白,作者按行写数即可;代价是 UNIT_COUNT_MAX 语义从「单场总数」改为「单种数」,须同步改校验与 spawn 守卫 |
|
|
||||||
| 乙 | 行集总数仍 ≤3,按行权重或行序分配各种只数 | 场上规模完全不变、数值面最稳;淘汰理由:分配规则本身是新的隐性机制,作者无法直接表达「我要 1 蜘蛛 + 2 地精」,表意失真 |
|
|
||||||
| 丙 | 每种恒 1 只 | 最简;淘汰理由:混编的主要价值(强弱搭配的数量结构)被阉割,等于只允许「2-3 种各 1 只」一种形态 |
|
|
||||||
|
|
||||||
### P2 · 行集解析双算法处置(工作日志 312 既有待裁项随批)
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令):案甲**——floor 版退役,全仓统走 resolver ceil 版(工作日志 312 待裁项随之销号)。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲(推荐) | 本批顺带统一:`EnemyTable.resolve_rowset`(floor 版,仅冒烟四处用)退役,全仓统走 resolver ceil 版 | 行集解析本来就要换代,双算法一起收是最便宜时点;一次批内只多 4 处调用点改动 |
|
|
||||||
| 乙 | 本批不动 floor 版,只把 ceil 版行集化;双算法待裁项保持独立 | 批面更纯;淘汰理由:换代后 floor 版从「双算法」变成「三形态」(floor 单行 / ceil 单行 / ceil 行集),债更重 |
|
|
||||||
|
|
||||||
### P3 · 本批是否投放首个混编遭遇行
|
|
||||||
|
|
||||||
**✅ 改裁(2026-10-06 二裁,用户令,推翻一裁案乙):案丙(撤投放)**——本批回到纯结构批,混编行只建机制不投内容;首个混编遭遇行(连同 Boss 多行内容)归后续内容批统一投放。改裁依据(联审实据):一裁案乙的「巨蜘蛛 1+钩爪恐魔 1」与现行首遇教学位纪律正面冲突——巨蜘蛛首遇位 (2,4) 表注释与冒烟断言均为「固定 2 只不加骰」,投 1 只直接违反;钩爪恐魔真首遇位在 L3 (3,1) 固定不加骰,L2 投放使其名存实亡;且 L2 每个 battle 坐标都有断言撞面((2,0) 撞首遇绿档 12 种子扫描、(2,4) 撞固定 2 断言、(2,5/6/7) 撞 expect_pools 精确池),一裁「L2 某普通节点」无可落地坐标。投放义务随批登记 07(后续内容批连同 Boss 多行一起投、投时 MC 取证先报批、难度带读数义务同登记)。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲 | 本批只放开机制、零内容投放;首个混编遭遇归后续难度曲线/内容批 | 与丙同向但未点名承接批,义务易悬空 |
|
|
||||||
| 乙(一裁,已推翻) | 本批顺带投放教学位混编行(L2 某普通节点,巨蜘蛛 1 + 钩爪恐魔 1,行值 provisional) | 推翻理由见上:与首遇教学位纪律/表注释/冒烟断言三面冲突,无合法坐标 |
|
|
||||||
| 丙(二裁,生效) | 撤投放,纯结构批;混编行内容归后续内容批(与 Boss 多行同批),投放时 MC 取证先报批 + 难度带读数义务随批登记 07 | 机制批零数值变更零 MC;投放的教学价值不抵三面断言/纪律/读数连带代价 |
|
|
||||||
|
|
||||||
### P4 · Boss 行集是否允许多行
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令):案乙(否决推荐案甲)**——Boss 行集校验同样放开(多行合法)。知情代价随批登记:Boss 半血解锁/独占技/难度带读数面自此可被 Boss 行内容变量影响;**另有两个具体读数面(v1.1 补列)**:①`battle_narrator.gd:70-77` `boss_name()` 取行集**首个命中行**的 display_name——Boss 行集多行后 Boss 名显示可能变成护卫名(取决于文件行序,R6 纪律的呈现面后果);②Boss 节点遭遇骰同样读首行 `unit_count` 区间(`battle_orchestrator.gd:225`),多行后首行区间即全行集骰域。**本批零内容投放不变**(P3 已改裁丙=撤投放),Boss 多行的实际内容投放归后续内容批,投放时节奏重测义务 07 在册、上述读数面逐项复核。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲(推荐) | 本批仅普通战斗节点放开;Boss 节点行集仍恰一行(加载期校验保留 Boss 行单行约束) | Boss 半血解锁技刚落籍、节奏重测(T7 读数)未跑,Boss 战形态此时不应再加变量;护卫型 Boss 属内容设计,归后续批单议 |
|
|
||||||
| 乙 | Boss 行同样放开 | 淘汰理由:半血解锁/独占技/难度带全部读数面失效风险,且无任何已裁设计支撑 Boss 护卫形态 |
|
|
||||||
|
|
||||||
## 9. loop engineering 八件对照(合规自证)
|
|
||||||
|
|
||||||
| # | 八件要求 | 本文对应 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 计划书八节 | §1 目标与完成定义 · §2 现状事实 · §5 设计契约 · §4 范围边界 · §6 任务卡 · §7 验证闸 · §10 异常分级 · §8 白名单与裁点 |
|
|
||||||
| 2 | T0 开工 | §6 T0(worktree + 基线重测回填 + 归属核对) |
|
|
||||||
| 3 | 循环骨架 | §6 各卡(读卡 → 对事实源 → 实装 → 轻闸 → 提交 → 工作日志) |
|
|
||||||
| 4 | 轻闸 | §7 轻闸段 |
|
|
||||||
| 5 | 重闸 | §7 重闸段 + §6 T6 |
|
|
||||||
| 6 | 人闸 | §6 T7 |
|
|
||||||
| 7 | 异常分级 | §10 |
|
|
||||||
| 8 | 收口五步 | §6 T8 |
|
|
||||||
|
|
||||||
## 10. 异常分级
|
|
||||||
|
|
||||||
| 级 | 触发 | 处置 |
|
|
||||||
|---|---|---|
|
|
||||||
| **L1** | 单轮轻闸红 | 一次重试(自查漏改/调用点遗漏);仍红 → L2 |
|
|
||||||
| **L2** | 同类错误连续 3 轮 / 事实表与 §2 不符 | 记录进本任务书与工作日志,修订事实表后继续;不阻断全批 |
|
|
||||||
| **L3** | 任一 🔴 R1–R6 破 / P1–P4 久决不下 / 发现需要新增随机消费点或改存档 | 停机写报告(列事实 + 影响面 + 方案对比),等用户发令;不自行决断 |
|
|
||||||
|
|
||||||
## 11. 现状留痕(供执行会话读序)
|
|
||||||
|
|
||||||
```
|
|
||||||
1. design/gdd/06-待办清单.md「同深度第二敌种与精英 / Boss 编码位」条(本批登记源,剩余面=行集校验放开)
|
|
||||||
2. design/gdd/systems/战斗循环/敌人系统.md v0.13(设计权威;:75 规则表 / :263 结构冻结 = 组 A 修订对象)
|
|
||||||
3. game/data/schemas/enemy_table.gd(F1 校验点 + floor 版解析)
|
|
||||||
4. game/core/config_db_resolver.gd(ceil 版解析,生产消费面)
|
|
||||||
5. game/core/unit_container.gd spawn(生成消费点,F4)
|
|
||||||
6. 工作日志 312(2026-10-02,enemy_table.resolve_rowset 双算法待裁项出处 = §8 P2)
|
|
||||||
```
|
|
||||||
@@ -1,114 +0,0 @@
|
|||||||
# 任务书——旧界面呈现断言回补批(迭代 19 卡②)
|
|
||||||
|
|
||||||
> 版本 v1.1(2026-10-07 grilling 三轮全裁定稿;v1.0 成文同日)。立项依据=主控 2026-10-07 拍板:迭代 16 之前落地的 UI 屏没有对比度/结构机检(旧屏只靠当时人工目检背书),值得追溯补测,估 0.5-1d。**待裁点 0 项**(全裁理由见 §八)。开工门=**迭代 19 迭代级 U0(一次覆盖卡①②③,卡④另受 S0 独立门)**;worktree=`iter19-uibackfill`。
|
|
||||||
|
|
||||||
## 一、立项背景
|
|
||||||
|
|
||||||
- ui_contrast_probe(对比度机检)2026-10-06 迭代 16ui T2 出生(b38ae07,初版 11 对),迭代 18 卡④随批 +3 对成现役 15 对(dc2d514);ui_struct_probe(结构机检)2026-10-05 ui-struct-probe mini-loop 出生(d77a245),后随迭代 17 卡③(pause 契约 d44fdd5)、迭代 18 卡④(career 四契约 dc2d514)、卡⑦(resume 专项 c32bb6c/5b3a8fd)增补。
|
|
||||||
- 两探针虽已进 probe_gate 默认段,但**测点对与专项契约是「随批登记」制**——谁落地谁登记。旧屏(营地/商店/设置/结算框等)落地时两探针尚未出生,出生后也无人回补:对比度测点对至今零覆盖旧屏文字位;结构侧专项契约(只读/零动效/登记序等)仅 pause/career 两屏有。
|
|
||||||
- 迭代 18 有先例证明此缺口会漏真违例:career 页初版深墨族 token 压深棕亮底 ~1.3:1(「深墨跨壳误用」),加测点对首跑即抓,批内返工落闸(dc2d514)。
|
|
||||||
- 本批性质=**测试覆盖回补,非缺陷修复批**:实现代码本身无已知问题,回补断言后若暴露存量违例,登记呈报、处置权归用户。
|
|
||||||
|
|
||||||
## 二、现状考证(file:line 级,开工复核)
|
|
||||||
|
|
||||||
| 事实 | 出处 |
|
|
||||||
|---|---|
|
|
||||||
| 测点表现役 15 对,**登记地=探针文件自身 `_pairs()` 表**(惯例:名称+UiKit 常量实时求值+α 混成参数;「测点表随批维护」) | game/smoke/ui_contrast_probe.gd:17-35(头注 :2-5) |
|
|
||||||
| 15 对构成:战斗 HUD 7 对(血数垫牌/意图四墨/C区槽两态/RAP)+全站锚 3 对(INK/PANEL_DATA、WARM/BG_ROOT、WARM_FAINT/STAGE_BG)+徽章工厂 1 对(营地徽+暂停层余额行)+生涯页 3 对 | ui_contrast_probe.gd:20-34 |
|
|
||||||
| 静态段(裸 Color8 白名单=空表+素材 preload=0)全 presentation 目录扫描,与测点对互补 | ui_contrast_probe.gd:11-14,77-105 |
|
|
||||||
| struct 采样根现役 13 个:start(+双列契约⑤)/settings/camp/career(+四契约⑩-⑬)/confirm/debug/level_map/battle_hud(board_zone[含 ap_bar]+info_panel+stage[含 battle_log])/pause(+契约⑧⑨)/battle_end/curio_pick/shop(+resume 专项⑦) | ui_struct_probe.gd:29-135,506,329 |
|
|
||||||
| **struct 从未采样**:legend_overlay、node_overlay(两枚真模态,有真实开合路径)、toast_stack(瞬态)、settlement_review_overlay(遗留件未接线,全仓零引用) | main.gd:254-265,1245-1248;rg 全仓核验 |
|
|
||||||
| 视野迷雾记忆墨:手算在册 ≈6.7:1 合规(记忆板 α.66 压 floor avg #453020 合成底),但**无机检对** | views/board_cell_unit.gd:258-264;ui_kit.gd:81-82 |
|
|
||||||
| 商店货架 iter16 换过分族带(TG_* 五族)——换色发生在对比度探针出生当批,货架牌底组合从未入测点表 | af5f317(2026-10-06);ui_kit.gd:49-53 |
|
|
||||||
| 营地打开=全量重建三柜台行+同调装配段+天赋树段+最近冒险(天赋树行板在开屏态即可见→已被 struct 采样面含) | views/camp_overlay_view.gd:224,120,177 |
|
|
||||||
| battle_log_view 并入 B 区舞台(struct 经 stage 根覆盖);settlement_review_overlay 遗留件(M9 退役后遗留) | views/battle_stage_view.gd:34,121;roadmap 迭代 17 行 |
|
|
||||||
| 背景事实一处订正:struct 探针出生 2026-10-05(mini-loop d77a245),非迭代 16;且其通用断言族(overlap/等宽/出屏/零尺寸)**已回溯覆盖** camp/shop/settings/battle_end 等旧屏——真缺口在①对比度测点对零覆盖②专项契约只有 pause/career③legend/node 屏从未过结构族。本批范围据此校正 | git log --follow ui_struct_probe.gd;ui_struct_probe.gd:29-135 |
|
|
||||||
| 迭代 18「深墨跨壳误用」先例:新测点对首跑暴露存量违例→批内返工(本批红线改为登记不修) | dc2d514 提交说明 |
|
|
||||||
| 旧屏出生批:09-24 垂直切片转正批 18 件(camp/shop/battle_end/board 族/legend/node/toast/ap_bar 等)、level_map 09-28、settings+confirm 09-29、curio+debug 10-05——全部早于两探针出生 | git log --diff-filter=A 逐件核验 |
|
|
||||||
|
|
||||||
## 三、普查表(迭代 16 前落地屏 × 两探针覆盖现状)
|
|
||||||
|
|
||||||
| 屏 | 落地 | 对比度测点对 | struct 覆盖 | 备注 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 战斗 HUD(board_zone/info_panel/stage/ap_bar) | 09-24 | 7 对+锚 3 对(覆盖最全) | ✔ battle_hud 根 | 基准 cohort |
|
|
||||||
| 战斗结算框 battle_end | 09-24 | **0 对** | ✔(battle_end 根+resume ⑦) | 每场必经 |
|
|
||||||
| 商店 shop | 09-24 | **0 对**(TG_* 分族带未测) | ✔ | 换色后未机检 |
|
|
||||||
| 营地柜台+天赋树 camp | 09-24/重构 10-04 | **0 对**(仅徽章 1 对间接) | ✔(开屏全量态) | 停留最长 |
|
|
||||||
| 设置面 settings | 09-29 | **0 对** | ✔ | 警示文 INK_HINT 未测 |
|
|
||||||
| 三选一 curio | 10-05 | **0 对** | ✔ | 人工目检较新 |
|
|
||||||
| 图例 legend / 节点结算 node | 09-24 | 0 对 | **✘ 从未采样** | 结构真缺口 |
|
|
||||||
| 视野迷雾(board_cell_unit _draw) | 09-24 | 0 对(手算在册 ≈6.7:1) | 不适用(非控件) | 便宜的锚定对 |
|
|
||||||
| 战斗日志 battle_log | 09-24 | 0 对(归 HUD 族间接) | ✔(stage 根) | M9 后单行摘要态 |
|
|
||||||
| toast / debug / confirm / start / level_map | 09-24~10-05 | 0 对(start/level_map 有全站锚+样张冻结记录 GOLD_DONE) | toast ✘(瞬态)其余 ✔ | 定性豁免为主 |
|
|
||||||
| settlement_review | 遗留件 | — | ✘ 未接线 | **出批**,归退役处置另议 |
|
|
||||||
|
|
||||||
## 四、范围
|
|
||||||
|
|
||||||
**收**:①选中屏(§五前五名+迷雾锚定对)ui_contrast 测点对回补入 `_pairs()` 表;②ui_struct 补采样 legend_overlay+node_overlay(真实开合路径驱动)+按需 WL 豁免登记。
|
|
||||||
**不收**:旧屏代码任何改动(含断言暴露的存量违例——登记呈报不修);settlement_review_overlay 处置(遗留件另议);toast/debug 等瞬态与调试面的测点对;probe_gate.sh 任何改动(两探针已在默认段);07 清单改排。
|
|
||||||
|
|
||||||
## 五、补测优先级排序(独立核证,可推翻主控初步倾向)
|
|
||||||
|
|
||||||
排序轴=玩家停留时长+文字密度+历史目检遗留风险(落地越早、此后换色越多风险越高):
|
|
||||||
|
|
||||||
1. **战斗结算框**——每场战斗必经+读数停留(GP 合计/统计行/按钮),09-24 最老 cohort,0 对。**与主控倾向一致**。
|
|
||||||
2. **商店**——商品名/价格/属性描述/已购态文字密度高,iter16 当天换过 TG_* 分族带却从未机检(换色后无哨兵=最真实的遗留风险),0 对。**与主控倾向一致**。
|
|
||||||
3. **营地柜台+天赋树**——单次停留最长的屏(购买/同调/树行 33 节点文本),文字密度全场最高之一;iter12 重构(10-04)大改后仅人工目检。**此处推翻主控倾向:settings 降位、camp 升 3**——settings 停留短/文字少/09-29 落地较新,camp 三项轴全面占优。settings 保留在收测名单(第 4 位),不做取舍争议。
|
|
||||||
4. **设置面**——警示文 INK_HINT 与选项标签,1-2 对低成本收掉。
|
|
||||||
5. **三选一 curio**——选项名/描述/价签,停留短但 0 对,顺路收。
|
|
||||||
6. **迷雾记忆墨锚定对**——手算已合规,入表仅为把手算读数变机检哨兵(α 混成机制现成),近零成本。
|
|
||||||
7. **legend/node**——缺口在结构侧不在对比度侧(文字少):struct 补采样即可,对比度不加对。
|
|
||||||
|
|
||||||
## 六、任务卡
|
|
||||||
|
|
||||||
- **T0(0.1d)**:建 worktree;基线复读记档(probe_gate 全绿+contrast 15 对/struct 13 根现状);复核 §二表 file:line(漂移即停记)。
|
|
||||||
- **T1(0.25d)高优先双屏测点对**:battle_end(标题墨/正文墨/按钮墨对结算底)+shop(商品名/价格/属性描述五族 TG_* 对货架牌底/已购态)候选对入 `_pairs()` 表——一律 UiKit 常量实时求值;代拍板白名单=①具体取点位选择②每屏对数在验收带内微调③测点命名措辞(2026-10-07 用户裁 Q5.2)。验收=probe_gate 默认段绿;若红→§十 S1。
|
|
||||||
- **T2(0.25d)中优先三屏+迷雾**:camp(等级章字 INK_ON_DEEP/树行名/价格墨/最近冒险条目)+settings(警示文/选项标签)+curio(选项名/描述)+迷雾记忆墨合成对(FOG_MEMORY_INK 对 α.66 记忆板混成 floor 底)。验收=同 T1。
|
|
||||||
- **T3(0.25d)struct 补采样**:legend_overlay(ap_bar legend_toggled 真路径开→closed 关)+node_overlay(show_rest 合成喂入→continue_pressed 关)两根入 `_audit` 流,通用五族断言即生效;首跑红→WL 豁免逐条核注理由或 §十 S2 呈报。验收=struct 13 根→15 根全绿。
|
|
||||||
- **T4(0.15d)收口**:轻闸全绿+冒烟基线复跑(T0 记档基线持平)+**出口报告落 `design/qa/iter19-uibackfill-exit-report-<日期>.md`**(批次标准清单义务;违例呈报清单若有随附);settlement_review_overlay 遗留件在 **06 登记退役处置条目**(「另议」落位不留悬空);roadmap 本卡行换代(§九 ②)。验收=全绿+零旧屏 diff(git 核验=仅两探针文件+roadmap+06 登记行)。
|
|
||||||
|
|
||||||
**估时合计 ≈1.0d**(上限贴用户预估;违例呈报清单整理时间另计不扩批)。
|
|
||||||
|
|
||||||
## 七、🔴 设计契约(违反=返工;触碰=L3 停机)
|
|
||||||
|
|
||||||
1. **旧屏代码零 diff**:本批只许动 game/smoke/ui_contrast_probe.gd、ui_struct_probe.gd 与 roadmap 本卡行。断言暴露的存量对比度违例一律登记呈报不当场改——处置权归用户(与迭代 18 career 先例的「批内返工」不同,本批是回补批非修复批)。
|
|
||||||
2. **测点对惯例**:一律 UiKit 常量实时求值(禁硬编码 hex——代码换色即闸红);α<1 走现有混成参数;豁免条目须行尾注理由。
|
|
||||||
3. **struct 零删减**:现有 13 根采样段/五族断言/pause-career 契约族/resume 专项原样保留;WL 豁免新增须注理由,零理由登记=返工。
|
|
||||||
4. **探针纪律**:种子钉死惯例沿用(struct 显式填 42,迭代 18 卡⑦五探针审计条款在册)。
|
|
||||||
5. **在飞避让**:主区脏文件、迭代 19 渲染闸卡全部触碰面(§九)勿碰勿代提交。
|
|
||||||
6. **WL 豁免边界**(2026-10-07 用户裁 Q10.2):仅「断言语义与该屏设计意图冲突」类可豁免(如瞬态动画中采样);疑似真违例一律 S2 呈报,**禁止自行 WL 消音**。
|
|
||||||
7. **迷雾记忆墨合成对底色**(2026-10-07 用户裁 Q10.1):三关底色取**最亮者**求合成(最坏情况判据);T0 实查三关同底则单对。
|
|
||||||
|
|
||||||
## 八、待裁点(0 项)
|
|
||||||
|
|
||||||
全裁理由:①屏清单=普查表全量核证产物,主玩家面(前 6 项)无一有取舍争议,仅优先级排序调整(settings→camp 换位)属主控明示授权「可推翻」范围;②违例处置权红线已定(登记呈报归用户),非开工前裁点;③与迭代 19 渲染闸卡文件交集为零(§九),无协调裁决需求;④编卡位(迭代 19 邻卡)归主控例行编排权,本任务书只给建议不裁。开工后仅 §九两停机点可能升级呈报。
|
|
||||||
|
|
||||||
## 九、与迭代 19 渲染闸卡的文件交集与避让条款
|
|
||||||
|
|
||||||
渲染闸卡(roadmap.md:75)触碰面:tools/render_gate.sh(新)、tools/probe_gate.sh(头注释纪律句改写+--full 段)、tools/shot_checker.py、game/tests/golden/(新)、game/smoke/四渲染探针、tests/README.md、CLAUDE.md、roadmap 迭代 19 行。
|
|
||||||
本批触碰面:game/smoke/ui_contrast_probe.gd、ui_struct_probe.gd、roadmap 本卡行。
|
|
||||||
**交集=roadmap.md 邻行换代一处**——避让条款:①本批零触碰 probe_gate.sh(contrast/struct 已在默认段,头注释「测点表随批维护」句对本批语义自洽,无需改写);②roadmap 迭代 19 行四卡(①渲染闸/②本卡/③CI 预接线/④提灯载体)都要换代——默认序卡①最先,实际按**落籍顺序串行重放**、后合者在 worktree 内 rebase 解行冲突(2026-10-07 用户裁 Q13);③渲染闸卡的 shot_checker B 类(截图文字对比度)与本批测点对是**互补非重复**(前者整屏像素判定、后者 token 实时求值)——若渲染闸先落地且其 B 类首跑报出与本批重叠的违例,两边呈报清单合并去重后统一呈用户,避免双通道同案双报。
|
|
||||||
|
|
||||||
## 十、停机点与验收闸
|
|
||||||
|
|
||||||
**停机点**:
|
|
||||||
- **S1**:新测点对首跑若暴露存量对比度违例(≥1 对 <4.5:1)——逐条全量清单呈报,处置权归用户(登记存量 vs 另立修复批)。首跑判定是本批最大不确定性:旧屏文字位从未机检过。
|
|
||||||
- **S2**:legend/node 首跑结构断言若红(两屏从未过结构族)——同 S1 呈报;合法豁免入 WL 注理由,缺陷呈报不修。
|
|
||||||
|
|
||||||
**验收闸(本批完成定义)**:
|
|
||||||
1. `_pairs()` 表 15 对→约 25-32 对(**预期带非闸值**),闸=新增对覆盖 §五前 6 项每屏 ≥1 直接测点对,probe_gate 默认段全绿。
|
|
||||||
2. struct 采样根 13→15(+legend/node)全绿;WL 新增条目均有理由注。
|
|
||||||
3. git diff 范围核验=仅两探针文件+roadmap 本卡行,旧屏代码零 diff。
|
|
||||||
4. 若有违例:呈报清单落出口登记(不修)。
|
|
||||||
5. 冒烟基线持平(T0 记档值为准)+**probe_gate 默认段总时长增幅 ≤2s**(闸值;本批为静态求值+两屏采样,预期远低于此)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 呈报摘要(给主控)
|
|
||||||
|
|
||||||
1. **普查结论**:旧屏 11+ 枚中,struct 通用族已回溯覆盖绝大多数(出生 2026-10-05 非 10-06,背景事实订正);真缺口=①对比度测点对旧屏 **0 对**(15 对现役全属 HUD/锚点/徽章/生涯)②专项契约仅 pause/career 有③legend/node 两屏从未过结构族④迷雾记忆墨只有手算无机检⑤settlement_review 系未接线遗留件,出批归退役另议。
|
|
||||||
2. **优先级(独立核证,部分推翻主控倾向)**:战斗结算框 > 商店 > **营地柜台+天赋树** > 设置面 > 三选一 > 迷雾锚定对;legend/node 只补结构不补对比度。推翻点:camp(停留最长+文字最密+iter12 重构后仅目检)升 3,settings(停留短/落地较新)降 4 但保留在收测名单。
|
|
||||||
3. **估时**:T0-T4 ≈1.0d(贴预估上限;违例呈报整理另计)。
|
|
||||||
4. **红线**:只加断言零改旧屏;违例登记呈报不修(处置权归用户;与迭代 18 career 批内返工先例区分)。
|
|
||||||
5. **避让**:与迭代 19 渲染闸卡文件交集仅 roadmap 邻行一处;probe_gate 零触碰;shot_checker B 类与本批互补非重复,呈报合并去重。
|
|
||||||
6. **待裁点 0 项**(§八全裁理由);停机点 2 处(S1 对比度首跑存量违例/S2 legend-node 结构首跑)。
|
|
||||||
@@ -1,184 +0,0 @@
|
|||||||
# 任务书:暂停层只读入口批(v1.1 定稿,零待裁点,开工门=U0 用户发令)
|
|
||||||
|
|
||||||
> **T0 基线回填(2026-10-06 执行会话实测,HEAD=44328b1)**:冒烟 **783/0**(§1.2 注记 782 系 ed38c54 时点参考值,卡④落籍后 +1,以本读数为对拍基线)· run_all **17 套全绿** · probe_gate 默认段(ui_input+ui_struct+ui_contrast)全绿。§2 事实表 F1-F10 逐条实核全绿(F2 登记册=main.gd:332、z 序注记=:242-243;F3 badge 工厂缺位+营地本地拼装=camp_overlay_view.gd:79-92;F5 访问器行号逐一符合、boss_kill_count=save_manager.gd:250 精确;F8 settings=main.gd:260;F10 dbgbtn=ui_assembler.gd:161-164)。**迭代 15② 交集核对:零命中**——卡②/卡③均已 2026-10-05 落籍(roadmap 现行口径,无在飞面);在飞 worktree 三件(iter17-dd 卡⓪〔尚无超前提交〕/uialign/standee〔均零 diff〕)与本批文件面零交集。
|
|
||||||
|
|
||||||
> 成文 2026-10-05,v1.1 修订 2026-10-06(五任务书联审:R4 快照口径收敛、badge 工厂路径裁决〔Q10 甲〕、P1 丁的 06 Esc 登记补办、基线换代 iter16ui 批后、F5/F10 事实勘误、入口守卫与只读断言口径补列)。
|
|
||||||
> **性质**:功能性 UI 交互新增——局内暂停层,承载钥石余额与营地柜台解锁进度的**只读**查看。
|
|
||||||
> 事实源 = [06-待办清单](../gdd/06-待办清单.md)「解锁界面与钥石呈现的交互形态(残余:暂停层只读入口)」条。
|
|
||||||
> 归属迭代:**迭代 17 · 卡③**(迭代 17 现=卡⓪数据驱动扩展批+①敌人表行集多行批+③本批+④生涯界面设计立项;M4 数值批已移迭代 18,roadmap 现行口径)。
|
|
||||||
> 满足 loop engineering 八件(见 §9 逐条对照)。
|
|
||||||
> **美术红线(2026-10-05 用户立规)**:本批不得包含观感类、素材类内容;呈现必须复用现行公共件(UiKit 工厂件)与 ui_kit 色板 token,**不新画任何素材、不新建任何色值**。功能性 UI 交互不算美术。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 目标与完成定义
|
|
||||||
|
|
||||||
### 1.1 一句话目标
|
|
||||||
|
|
||||||
冒险进行中(战斗屏与关卡地图屏)给玩家一个暂停入口,打开一层只读界面,查看当前钥石余额与营地三柜台的解锁进度(永久强化已买到什么程度),看完即关,不提供任何购买或修改操作。
|
|
||||||
|
|
||||||
### 1.2 完成定义(出口判定清单)
|
|
||||||
|
|
||||||
| # | 判定项 | 量化标准 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 入口可达 | 局内两个主屏(战斗屏 / 关卡地图屏)均可按 P1 裁决的形态打开暂停层;入口在对局外(主菜单)不误出现 |
|
|
||||||
| 2 | 只读数据正确 | 暂停层展示的钥石余额、三柜台进度与 `MetaProgression` 访问器读数逐项一致;无任何可点购买/切换控件 |
|
|
||||||
| 3 | 公共件复用 | 全部构成件来自 UiKit 工厂(modal_shell / bcard / label / icon_rect / verb_button 等)与色板 token;**badge 由本批在 ui_kit 新增工厂件并同步迁入营地钥石徽(Q10 甲裁决)**;零新素材、零新色值、零新字体 |
|
|
||||||
| 4 | 模态纪律 | 登记进 modal_stack 登记册(main.gd:332 同款),z 序与输入锁行为符合缺陷⑤纪律;与既有弹窗层的关系按 P2 裁决落实 |
|
|
||||||
| 5 | 重闸全绿 + 人闸 | 冒烟全量(基线 T0 重测回填)· run_all 十七套件 · ui_struct_probe / ui_click_probe / ui_input_probe / ui_contrast_probe 全绿 · doc 三闸零新增 · 熵增闸 PASS;实机目检清单过 |
|
|
||||||
|
|
||||||
> ⚠️ **基线纪律(v1.1 换代)**:起草时点 master 头 = 413c936(冒烟 772/0);**v1.1 修订时点现行头 = ed38c54**,中间落了整个 iter16ui 批(12+ 提交触 ui_kit.gd,F3 行号全部漂移失效)+ M4 移批,现行基线读数=冒烟 782/0、run_all 17 套件、**ui_contrast_probe 已入 probe_gate 默认必跑段**(新增文字层必须过对比度机检)。§2 行号系 413c936 时点考证,T0 按现行 HEAD 重取回填,禁止沿用本文行号与数字。
|
|
||||||
|
|
||||||
## 2. 现状事实(代码级考证,2026-10-05 起草时点;T0 须自行复核)
|
|
||||||
|
|
||||||
| # | 事实 | 读数 |
|
|
||||||
|---|---|---|
|
|
||||||
| F1 | 现行无暂停层 | 全仓无 pause/暂停 实现;局内模态层 = 图例 / 节点兑付 / 关卡画面 / 三选一 / 终局 / 商店 / 营地 / 设置 / 确认弹窗 / 调试浮窗(main.gd:332 登记册 + :242 z 序注记) |
|
|
||||||
| F2 | 模态基础设施现成 | `modal_stack.gd` 状态机 + `_open_modal`/`_close_modal` 单口(main.gd:353 起)+ 输入锁 = `modal_stack.has_open()` 开态查询;新层照登记册追加即可,零新机制 |
|
|
||||||
| F3 | 公共件清单 | `presentation/views/ui_kit.gd`:`modal_shell` · `verb_button`(图标+动词+tooltip 三件套)· `bcard`(BCard 竖卡:色带/图标槽/价签/底注参数化)· `switch_toggle` · `styled_slider` · label / icon_rect 等;色板 token(WARM / STONE / INK_ON_GOLD / CANDLE 等)同文件单点。**badge 工厂现状不存在(v1.1 勘误)**:营地钥石徽系 camp_overlay_view.gd:80-93 本地拼装(panel_flat+icon_rect+label)非公共件——处置=Q10 甲裁决,见 §3 组 A |
|
|
||||||
| F4 | 按钮宽度纪律 | `UiKit.button(text, min_w=216)` 全站最小宽度基准 + SIZE_FILL(2026-10-05 ui-struct-probe 批);行板/角标/图标钮豁免 9 处先例在册;ui_struct_probe 已入轻闸默认必跑段(按钮互压/等宽/出屏/零尺寸断言) |
|
|
||||||
| F5 | 数据面现成 | `meta_progression.gd` 只读访问器齐全:`keystone_balance()`(:28)· `forge_level/forge_flat/forge_price`(:34-44)· `workshop_status()`(:90)· `is_item_unlocked`(:85)· `attune_camp_status()`(:370)· `attune_refresh_charges()`(:397)· `tree_camp_rows()`(:260);**Boss 击杀计数 `boss_kill_count` 实际在 `core/save_manager.gd:250`(v1.0 误记 meta_progression.gd,2026-10-06 勘误)**——暂停层只读消费,零核心层改动 |
|
|
||||||
| F6 | 钥石呈现现状 | 营地屏顶栏钥石徽(camp_overlay_view.gd:80-93,烛光黄底+深墨字徽章形制,**本地拼装**——badge 工厂化后迁入 ui_kit)与结算屏入账明细已落地;**战斗屏内 GP/钥石已迁出**(hero_info_panel_view.gd:4-6 注记)——局内想看钥石余额没有任何入口,正是 06 条残余面的由来 |
|
|
||||||
| F7 | 营地三柜台现行构成 | 属性锻造(forge 三行)· 道具工坊(workshop 六件按总通关次数解锁)· 天赋树(迭代 12 批次二营地树 UI);另有同调装配面(attune)。暂停层展示范围见 P3 裁点 |
|
|
||||||
| F8 | 设置面先例 | `settings_overlay.gd` = 最小设置面(音量/全屏/减动效),SettingsOverlay 实例由 main.gd:260 创建并登记模态——暂停层与其关系见 P2 裁点 |
|
|
||||||
| F9 | 减动效开关 | 已转正(迭代 8 卡④,settings_store 承载);排播队列与轮横幅在减动效开时延迟归零——暂停层进出呈现须遵守同一开关(P4 裁点) |
|
|
||||||
| F10 | 调试浮窗先例 | debug_overlay(**迭代 14.5 调试整合批,git 48c0b34**——v1.0 误记迭代 15①,2026-10-06 勘误)= 悬浮 Dialog 形态、DS_DEBUG 门控、仅开始菜单可开——其「角标入口 + Dialog 层」形态是暂停层的最近先例,但门控与可达域不同(暂停层 = 玩家常态功能,对局内可达) |
|
|
||||||
|
|
||||||
## 3. 改动清单(两组)
|
|
||||||
|
|
||||||
### 组 A · 暂停层本体(新文件一个)
|
|
||||||
|
|
||||||
| 文件 | 改动 |
|
|
||||||
|---|---|
|
|
||||||
| `presentation/views/ui_kit.gd` | **新增 badge 工厂件(Q10 甲裁决)**:钥石徽形制(icon_rect+label 徽章)参数化收编;营地钥石徽(camp_overlay_view.gd:80-93 本地拼装)同步迁入工厂调用,消单点重复——营地侧改动仅替换拼装为工厂调用,观感零变化 |
|
|
||||||
| `presentation/views/pause_overlay.gd`(新) | 只读覆盖层:标题区 + 钥石余额行(badge 工厂件:icon_rect(TEX_ICON_KEYSTONE) + label,色板 token 取现行值)+ 三柜台进度区(范围随 P3)+ 关闭钮;全部经 UiKit 工厂件拼装,零自绘 |
|
|
||||||
| `main.gd` | 实例化 + 登记 modal_stack 登记册(z 序位置随 P2)+ 打开/关闭接线 |
|
|
||||||
|
|
||||||
### 组 B · 入口与断言
|
|
||||||
|
|
||||||
| 文件 | 改动 |
|
|
||||||
|---|---|
|
|
||||||
| 入口挂点(P1 已裁丁=**常驻角标**,Esc 不落码) | 战斗屏 HUD 与关卡地图屏各一角标(复用 debug 角标形制);**装配落点 T0 复核后在 ui_assembler / 两屏装配段中定点(白名单内决断)**;宽度纪律遵守 min_w=216 或申请豁免(角标类已有豁免先例)。**入口守卫(v1.1 补)**:其他模态(商店/三选一/营地/设置等)开启时角标置灰不可点(has_open 守卫)——iter16ui 后商店/三选一系全屏 page_shell 会盖住角标,守卫防「看得见点不着」态 |
|
|
||||||
| `smoke/ui_struct_probe.gd` / `ui_click_probe.gd` / `ui_input_probe.gd` | 暂停层结构断言(不出屏/零尺寸/按钮宽度)+ 打开关闭行为断言 + 只读性断言(**口径(v1.1 补)=巡检层内控件的 signal 连接清单(get_signal_connection_list),断言无任何指向购买/解锁/写入路径的连接;巡检信号名清单 T2 落码时列全进探针**) |
|
|
||||||
| `smoke_all.gd` | 数据一致性断言(暂停层投影 = MetaProgression 访问器读数) |
|
|
||||||
|
|
||||||
## 4. 范围边界(🔴 不可越界)
|
|
||||||
|
|
||||||
| 禁项 | 理由 |
|
|
||||||
|---|---|
|
|
||||||
| 🔴 **零素材零新色值** | 用户 2026-10-05 立规:美术/素材由用户独立成批自理;本批只拼公共件。发现「这里缺一个图标/色值」的冲动一律转 06 登记,不自产 |
|
|
||||||
| **只读,零写操作** | 暂停层不接任何购买/切换/设置写通路;设置修改仍走设置面 |
|
|
||||||
| **核心层零改动** | 只消费 `MetaProgression` 既有只读访问器;不改 meta_progression.gd、不改存档、不改数值 |
|
|
||||||
| **不冻结游戏逻辑** | 自动战斗逻辑确定性、无实时压力;暂停层 = 纯查看层,不做「时间停止」机制(逻辑本无自走时钟,无需冻结——若 P2 裁出排播暂停需求,单独呈报) |
|
|
||||||
| **不做生涯/历史回看** | 跨局汇总与历史冒险回看归迭代 17 卡④(生涯界面设计立项),本批不越界承接 |
|
|
||||||
| **不触碰迭代 15② 在飞文件** | 奇物批渠道分离实施段在迭代 15 继续,本批与其零文件交集(若 T0 复核发现交集,停机呈报) |
|
|
||||||
|
|
||||||
## 5. 设计契约(🔴 触碰 = L3 停机)
|
|
||||||
|
|
||||||
| # | 契约 | 验证方式 |
|
|
||||||
|---|---|---|
|
|
||||||
| 🔴 R1 | **公共件单点**:一切面板/按钮/徽章/卡片经 UiKit 工厂产出;禁裸色值字面量、禁自建 PanelContainer 样式 | ui_struct_probe + 静态审查 |
|
|
||||||
| 🔴 R2 | **模态登记纪律**:新层必须登记 modal_stack 登记册,z 序=树序=登记序(缺陷⑤纪律);禁绕模态栈直开(迭代 6 卡⑨事故先例) | ui_click_probe 断言 |
|
|
||||||
| 🔴 R3 | **输入锁语义**:暂停层开启时棋盘/节点输入锁定(has_open 开态查询),关闭后恢复原屏交互,无状态残留 | ui_input_probe 断言 |
|
|
||||||
| 🔴 R4 | **数据只读同源**:展示值一律实时读访问器;**快照口径(v1.1 收敛,原句先禁后允系起草矛盾)**——开层时预取快照仅允许在**单次开层生命周期**内使用,禁跨开层持有,采用快照时须在 T4 目检材料中披露口径(读哪几个访问器、何时取值) | 冒烟断言 |
|
|
||||||
| 🔴 R5 | **减动效遵守**:P4 已裁零动效直开直关——本契约收敛为「**零动效路径存在断言**」(探针断言层进出无过渡动画节点/时长归零路径),减动效开关无新增消费 | 探针断言 |
|
|
||||||
|
|
||||||
## 6. 任务卡(逐卡一个 loop 轮次)
|
|
||||||
|
|
||||||
| 卡 | 内容 | 估时 | 轻闸 | 完成判据 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| **T0** | 开工:worktree + 基线重测回填 + §2 事实表复核(重点 F1/F3/F5/F6)+ 与迭代 15② 在飞面交集核对 | 0.25d | 冒烟基线 | 基线回填;交集核对零命中或停机呈报 |
|
|
||||||
| **T1** | 组 A:pause_overlay.gd 本体(按 P1-P4 裁决落形态)+ main.gd 登记接线 | 1.0d | 冒烟 + ui_struct_probe | 层可开关;结构断言绿 |
|
|
||||||
| **T2** | 组 B:入口挂点 + 三探针断言(结构/点击/输入)+ 冒烟数据一致性断言 | 0.75d | 冒烟 + 三探针 | §1.2 判定 1/2/4 |
|
|
||||||
| **T3** | 重闸:全量轻闸(含 ui_struct/ui_click/ui_layout)+ doc 三闸 + 熵增闸 | 0.25d | 重闸全绿 | §1.2 判定 5 前半 |
|
|
||||||
| **T4** | 人闸:实机目检清单(双屏入口/**其他模态开着时角标守卫态**/只读性/数据正确/零动效直开直关/**开层时排播队列排空副作用观察**〔_open_modal 开层前 _flush_row_queue 系既有层同款行为,与玩家「暂停」预期之差记入目检确认项〕/与设置面关系)+ 代拍板追认 | 0.5d | 目检过 | §1.2 判定 5 |
|
|
||||||
| **T5** | 收口五步 + 06 状态行收口 | 0.25d | — | 收口五步齐 |
|
|
||||||
|
|
||||||
> 估时合计 ≈ **3.0d**,贴软时间盒上限——知情预挂:T2 末为天然切分点,超限按 L3 呈报不擅切。
|
|
||||||
|
|
||||||
## 7. 验证闸
|
|
||||||
|
|
||||||
- **轻闸**(每轮):run_smoke 全量 + ui_input_probe + ui_struct_probe + **ui_contrast_probe(v1.1 补——已入 probe_gate 默认必跑段,本批新增文字层必须过对比度机检)**(本批触 presentation,三轮加 ui_click_probe + ui_layout_probe)。
|
|
||||||
- **重闸**(T3):全量轻闸 + doc 三闸零新增 + 熵增闸。
|
|
||||||
- **MC**:纯呈现批,零数值改动 → **零 MC**(两入口铁规 + 无数值改动禁跑 MC)。
|
|
||||||
|
|
||||||
## 8. 代拍板白名单与待用户裁点
|
|
||||||
|
|
||||||
**白名单内**(实现层无争议项):
|
|
||||||
- 层内行序与分组的具体排布(哪个柜台在上、余额行位置)——复用营地屏同序即可
|
|
||||||
- 断言编号与探针 case 命名
|
|
||||||
- 关闭钮文案(「返回」/「继续」级措辞)
|
|
||||||
|
|
||||||
**待用户裁点**(呈全备选案,含淘汰依据):
|
|
||||||
|
|
||||||
### P1 · 暂停入口位置与唤起形态
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令):案丁**——常驻角标为主入口,Esc 附加快捷通道登记 06 排期 Beta 随键盘批统一接(**06 登记已于 2026-10-06 联审批补办落文**——v1.0 裁后未执行,属行政漏步;另注:该登记同时使 06 键盘条目「弹层界面现行全鼠标」清单 +1 项,属本批连带披露)。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲 | 战斗屏与关卡地图屏各加一个角标按钮(复用 debug 角标形制,玩家常态可见、无门控) | 发现性最好,触屏/鼠标直点;代价是两个屏各加一个常驻控件 |
|
|
||||||
| 乙 | Esc 键唤起(PC 惯例) | 零常驻控件;淘汰候选:发现性差(无提示玩家不知道),且全仓现行无键盘输入处理(06 键盘/手柄条目排期 Beta),为暂停层单独开键盘通道属越级 |
|
|
||||||
| 丙 | 并入既有设置入口——设置面内加「钥石与解锁进度」页 | 入口零新增;淘汰候选:设置是「改」的面、暂停层是「看」的面,语义混居;且查看进度要先进设置,路径变深 |
|
|
||||||
| 丁(推荐) | 甲 + 乙 组合:常驻角标为主入口,Esc 作为附加快捷通道登记 06 排期 Beta 随键盘批统一接 | 当前只落甲,Esc 不单独开通道而是并进键盘批——发现性与批面干净兼得 |
|
|
||||||
|
|
||||||
### P2 · 与既有弹窗层的关系(modal 登记序位置与遮罩)
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令):案甲**——登记设置层同档带 dim 遮罩,开启时不可再开其他层。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲(推荐) | 登记在设置层同档(登记册尾段、确认弹窗之前),带 dim 遮罩(modal_shell 现行 dim 参数),开启时不可再开其他层 | 与设置/确认同语义档,z 序行为可预期;modal_shell 现成 |
|
|
||||||
| 乙 | 半透明无遮罩,允许层下屏可见可操作 | 淘汰候选:违反模态输入锁纪律(R3),「暂停」语义不成立 |
|
|
||||||
| 丙 | 全屏独立屏(LevelMapScreen 式) | 淘汰候选:暂停层是轻量查看面,独立屏形态过重;且独立屏有进出互斥编排成本,与「看一眼就关」的场景不配 |
|
|
||||||
|
|
||||||
### P3 · 展示内容范围
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令):案甲**——钥石余额 + 三柜台进度。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲(推荐) | 钥石余额 + 三柜台进度(属性锻造三行已购等级 / 道具工坊六件解锁态 / 天赋树已购概览) | 与 06 条「钥石余额与解锁态(营地三柜台进度)」字面一致 |
|
|
||||||
| 乙 | 甲 + 同调装配态(attune 装备中件与充能余量) | 信息更全;淘汰候选:同调是局内机制投影,与「跨局解锁进度」主题不同类,且局内 C 区已有秘宝槽呈现,重复 |
|
|
||||||
| 丙 | 仅钥石余额一行 | 淘汰候选:信息太薄,为看一个数字开一层不值——06 条明确含解锁态 |
|
|
||||||
|
|
||||||
### P4 · 减动效联动口径
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令):案甲**——进出零动效直开直关。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲(推荐) | 暂停层进出默认零动效(直开直关),减动效开关无新增消费 | 最简且天然合规;只读查看层本无演出需求 |
|
|
||||||
| 乙 | 进出加淡入淡出(200ms 档,复用关卡屏先例),减动效开 = 归零 | 观感更柔;代价是多一个动效轴要维护双态断言,且淡入淡出属观感微调,擦「美术红线」边 |
|
|
||||||
|
|
||||||
## 9. loop engineering 八件对照(合规自证)
|
|
||||||
|
|
||||||
| # | 八件要求 | 本文对应 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 计划书八节 | §1 目标与完成定义 · §2 现状事实 · §5 设计契约 · §4 范围边界 · §6 任务卡 · §7 验证闸 · §10 异常分级 · §8 白名单与裁点 |
|
|
||||||
| 2 | T0 开工 | §6 T0 |
|
|
||||||
| 3 | 循环骨架 | §6 各卡 |
|
|
||||||
| 4 | 轻闸 | §7 轻闸段(触 presentation 加跑三件已写明) |
|
|
||||||
| 5 | 重闸 | §7 重闸段 + §6 T3 |
|
|
||||||
| 6 | 人闸 | §6 T4 |
|
|
||||||
| 7 | 异常分级 | §10 |
|
|
||||||
| 8 | 收口五步 | §6 T5 |
|
|
||||||
|
|
||||||
## 10. 异常分级
|
|
||||||
|
|
||||||
| 级 | 触发 | 处置 |
|
|
||||||
|---|---|---|
|
|
||||||
| **L1** | 单轮探针/冒烟红 | 一次重试自查(登记序/modal 树序——Godot 4.7 modal 屏 queue_sort 坑在册:探针采样须强制 queue_sort,ui-struct-probe 批已留手法) |
|
|
||||||
| **L2** | 同类红连续 3 轮 / 与既有层 z 序冲突 | 记录进任务书与工作日志,调整登记序后继续 |
|
|
||||||
| **L3** | 任一 🔴 R1–R5 破 / 发现需要新素材或新色值才能达成裁决形态 / 与迭代 15② 在飞面出现文件交集 | 停机写报告等用户发令 |
|
|
||||||
|
|
||||||
## 11. 现状留痕(供执行会话读序)
|
|
||||||
|
|
||||||
```
|
|
||||||
1. design/gdd/06-待办清单.md「解锁界面与钥石呈现的交互形态(残余:暂停层只读入口)」条
|
|
||||||
2. game/presentation/modal_stack.gd + main.gd:242/:332(登记册与 z 序纪律)
|
|
||||||
3. game/presentation/views/ui_kit.gd(公共件与色板单点:modal_shell/bcard/verb_button/徽章形制)
|
|
||||||
4. game/core/meta_progression.gd(只读访问器面,F5)
|
|
||||||
5. game/presentation/views/settings_overlay.gd(最小设置面先例)· debug_overlay.gd(角标+Dialog 先例)
|
|
||||||
6. design/qa/ui-struct-probe-exit-report-2026-10-05.md(按钮宽度纪律 216 与结构探针口径)
|
|
||||||
```
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
# 任务书:武器锻造系统设计提案批(迭代 18 卡③)· v1.2 定稿(零待裁点)
|
|
||||||
|
|
||||||
> 起草 2026-10-07。开工门=**U0 用户发令**(提纲版任务书——零待裁点目标:系统的设计裁点全部在提案**产物**内全备选呈裁,不在任务书拦截)。
|
|
||||||
> 定位=**纯文档批**:产出《武器锻造系统》设计提案一份,呈用户盘问裁决;**提案批准前零代码零表改,实装批另行立项走全流程**。提案源=playnote 2026-10-06 用户手迹(06 专条在册)。
|
|
||||||
|
|
||||||
## 1. 目标与完成定义
|
|
||||||
|
|
||||||
### 1.1 一句话目标
|
|
||||||
|
|
||||||
把用户「攻击力提升改造为武器锻造」的提案(剑/长枪/法杖×普攻/穿刺/魔法+轻甲→重甲/魔法甲、各级成长+满级特效)写成可与现役轴对齐、可裁决、可立项实装的设计提案文档。
|
|
||||||
|
|
||||||
### 1.2 完成定义(出口判定清单)
|
|
||||||
|
|
||||||
1. 提案文档落 design/research/(命名 `提案-武器锻造系统-2026-10-XX.md`),§5 框架八节齐全。
|
|
||||||
2. 全部现役事实引用可溯(file:line/表行),零凭空断言。
|
|
||||||
3. 每个设计裁点呈**全备选案**(含淘汰依据+各自代价/联动——拍板呈报纪律)。
|
|
||||||
4. 数值只给框架与量纲(provisional),终值显式标注归 Alpha 收官 M4 数值批统一调整。
|
|
||||||
5. 06 专条与 roadmap 卡③行状态随批换代。
|
|
||||||
|
|
||||||
## 2. 现状事实(提案的对齐基准——代码级考证,2026-10-07)
|
|
||||||
|
|
||||||
- **F1 攻击力现役两源,皆 flat 加算、无武器实体**:①营地属性锻造=meta.tres forge_products(攻击锻造 atk+1/生命锻造 max_hp+3/护甲锻造 armor+1;base_price 20、price_ratio_pct 150);②关卡货架=shop.tres **pool_shelf 六行+pool 公式**(config_db.gd:330/:334 现役)——products 行族(atk_up/hp_up base 2/armor_up)系 **legacy**(shop=off 对照承载,shop_table.gd:16、shop.tres:107-109),迁移面(§5.8)对准现役行族。
|
|
||||||
- **F2 攻击类型轴现状(审计重考证——轴已存在休眠,非待新建)**:主角 `attack_type` 轴现役在册=hero.tres:11 `"normal"`+hero_table.gd:13 enum{normal,pierce,magic}(2026-09-18 营地扩展前置批立轴,战斗段甲效矩阵消费、数值中性休眠);pierce/magic 现为**格面资源** cell_type 走克制直伤(battle_orchestrator.gd:830 注/:846-854——必中全额不掷点);**克制矩阵已是全 3×3 九格**=settlement.tres:31-47(normal/pierce/magic × light/ward/heavy);feats.tres 三值(pierce_vs_light/magic_vs_heavy/magic_vs_magic)系**专长 matchup 条件值**非矩阵本体(when fact=matchup——其中 magic_vs_magic 在现行甲域下永假=死条件,清理随提案呈裁);敌方装甲 armor_type 域={light,ward,heavy}(enemy_table.gd:113),实值 light×14/heavy×4/ward×1(enemy.tres),缺省 light(enemy_table.gd:110-113、battle_orchestrator.gd:1155/:1294)。敌方攻击无类型(damage_controller.gd:19/:513 空串=不查矩阵)。克制矩阵正主=战斗结算/敌人系统文档。
|
|
||||||
- **F3 主角护甲现状(审计重考证)**:AC=hero_armor_class 单值现役生效(掷点批机制,defender_ac 消费 battle_orchestrator.gd:172);**甲型结构位已在册休眠**=hero.tres:10 `armor_type:"light"`+hero_table.gd:12(敌方攻击恒 normal 档故数值中性);甲域三型={light,ward,heavy}——用户案「重甲/魔法甲」与现役域的映射(魔法甲↔ward?)=提案定名裁点。提升渠道=锻造 armor+1/货架甲升/局内属性件。
|
|
||||||
- **F4 局内属性件**:奇物属性值提升分类(生命/AC/攻击三轴加算区,关间不清零)——局内获取线;与 F1 营地/商店的局外-关内双线并存是现役结构。
|
|
||||||
- **F5 相邻系统**:营地三柜台(属性锻造/Boss 两档/工坊六件阈值);GP 经济(商店刷新两参数 provisional 在册);数据驱动基建=迭代 17 卡⓪ EffectEngine 已落籍(效果类型闭集 19 行定稿、**类型实数 24**〔effect_engine.gd:28-35——源码注记「23」系笔误〕——**提案的满级特效优先复用现役效果类型,新效果类型=实装批的代码面**)。
|
|
||||||
- **F6 成长曲线反馈**(playnote 同日原文):「一开始不能让角色的成长系数太高……没升级前成长系数跟不上关卡怪物难度提升;能力解锁后才能匹配」——锻造定位须回应此曲线诉求。
|
|
||||||
|
|
||||||
## 3. 范围边界(🔴 不可越界)
|
|
||||||
|
|
||||||
1. 纯文档:零代码/零表改/零数值投值。
|
|
||||||
2. 不预支实装排期:提案裁决通过后实装批另行立项(roadmap 不预占卡)。
|
|
||||||
3. 不动现役系统语义:提案中的「迁移面」一节只描述方案,不执行。
|
|
||||||
4. 黑话禁令(doc-conventions §4 三形态):不造机制词/流程词/工作包代号——「武器锻造」系用户原词可用,衍生素材名随提案内定名节呈裁。
|
|
||||||
5. 提案不得与「冒险 BD/奇物三分类」既有裁决冲突面沉默:凡触碰属性值提升分类/渠道白名单处,须显式引用《奇物》现行口径并说明关系。
|
|
||||||
|
|
||||||
## 4. 设计契约(🔴 触碰 = L3 停机)
|
|
||||||
|
|
||||||
1. 全备选案纪律:每个裁点甲乙丙并列+淘汰依据,禁只呈推荐案。
|
|
||||||
2. 事实可溯:引用现役行为必带 file:line 或表行坐标;考证错误=文档级 L3(本批唯一产物即文档)。
|
|
||||||
3. provisional 标注纪律:一切数值带 provisional 标+归宿批注记(Alpha 收官 M4)。
|
|
||||||
4. 与用户原案的关系显式化:playnote 原文三条逐条对照——提案是放大、收窄还是替代,逐条说明,禁静默改案。
|
|
||||||
|
|
||||||
## 5. 提案文档必答框架(八节,缺节不收口)
|
|
||||||
|
|
||||||
1. **武器实体化程度**(核心裁点):(前提=**唤醒休眠 attack_type 轴**〔F2〕,非新建)甲=纯升级轨无实体(锻级=atk 成长曲线+类型标签写入既有轴);乙=武器槽实体(一生主械,换械=构筑决策);丙=折中(主械唯一+类型由械定)。逐案对照 F1 两源与奇物属性件的关系(吸收/并存/退役)。**通用必答=携带数与换械时机**(单持/多持;换械限营地还是战斗中可换——三案都必须作答)。
|
|
||||||
2. **攻击类型轴关系**:武器类型与格面资源类型(F2)两轴怎么共存——叠加/替代/互斥;**克制矩阵已是全 3×3**(settlement.tres:31-47)——加第四类型或第四甲型才扩维,否则复用现役九格;**专长件联动必答**:新 matchup 值与专长条件词族的兼容+死条件(magic_vs_magic 永假在册)清理。
|
|
||||||
3. **护甲实体化**:轻/重/魔法甲 vs 现役 AC 单值+休眠甲型位(F3)——**甲域映射定名裁点**(魔法甲↔ward/扩第四甲域?);类型带基础 AC 差异+克制反向落点(敌方攻击无类型已考证=克制反向仅己方攻击面生效);升级轨与满级特效框架。
|
|
||||||
4. **成长曲线定位**(F6):锻造作为曲线调节器的位置——前期压制/解锁节奏/与关卡难度曲线的匹配关系;与「开局成长系数」反馈的呼应面。
|
|
||||||
5. **经济与解锁**:营地柜台承载(第几柜台/与属性锻造的关系——替换还是并列);锻造等级 cap;GP 定价结构(provisional);**材料经济裁点**=GP 之外要不要材料/掉落物(效果类型已有 grant_material 钩,effect_engine.gd:32——三案并列呈裁);**配比预设挂起批边界注记**=A4 配比预设批(2026-10-05 挂起冻结)的预算/容量/克制双注直接吃武器类型与柜台结构变更,提案不得预设该批重启口径。
|
|
||||||
6. **满级特效清单框架**:每械/甲 1-2 条;逐条标注数据驱动兼容性(复用 EffectEngine 现役效果类型 or 需新效果类型=实装批代码量标记)。
|
|
||||||
7. **数值框架 provisional**:各等级值/特效值只给量纲与锚点(终值归 Alpha 收官 M4 数值批)。
|
|
||||||
8. **迁移面与裁点汇总**:现役 meta 锻造行与货架 pool_shelf 现役行族(legacy products 行族标注)的过渡方案(保留/改名/吸收)+全裁点一览表(供盘问轮)。
|
|
||||||
|
|
||||||
## 6. 任务卡(T0-T2)
|
|
||||||
|
|
||||||
- **T0 轴盘点与事实复核**(≈0.25d):§2 六事实逐条复核+克制矩阵正主文档对读(战斗结算/敌人系统/行动经济)。
|
|
||||||
- **T1 提案成文**(≈0.75d):八节框架+全备选案+provisional 数值框架+playnote 原文逐条对照。
|
|
||||||
- **T2 呈报人闸**(≈0.5d,一轮呈裁基线):呈用户盘问裁决(先例=奇物概念 7 轮——轮次扩展估时另计,每轮追加≈0.25d);裁决后 06 专条/roadmap 卡③行状态换代;若裁决通过→实装批立项材料(任务书草案输入)随批准备。
|
|
||||||
|
|
||||||
**估时合计 T0-T2 ≈ 1.5d**(一轮呈裁基线)。
|
|
||||||
|
|
||||||
## 7. 验证闸
|
|
||||||
|
|
||||||
- 纯文档批零游戏测试(测试执行两入口铁规);闸=doc 三闸(doc_link/gdd_lint/doc_term 零新增)+熵增闸+自证清单(§1.2 五条逐条判定)。
|
|
||||||
- 人闸=提案全文盘问裁决(本批唯一必经人审,即 T2)。
|
|
||||||
|
|
||||||
## 8. 异常分级
|
|
||||||
|
|
||||||
L1/L2 标准三级。停机点:S1=T0 复核发现 §2 事实错误(提案基准失效,重考证后再成文)——**2026-10-07 审计已触发一次:§2 四处失真随 v1.1 重考证改写,本版即产物**;S2=盘问轮出现「原案前提被推翻」类纠偏(先例=试玩反馈两机制提案题一整题重写)——当轮停,重写受影响节再呈。
|
|
||||||
|
|
||||||
## 9. loop engineering 八件对照(合规自证)
|
|
||||||
|
|
||||||
计划书(本文件)/T0 三查(文档批口径=git status+事实复核)/循环骨架/轻闸(§7 文档三闸)/重闸(同左,无 MC)/人闸(§7 盘问裁决)/异常分级(§8)/收口五步。
|
|
||||||
|
|
||||||
## 10. 现状留痕(执行会话读序)
|
|
||||||
|
|
||||||
先读 06「武器锻造系统」专条+playnote.md 武器锻造手迹(原文)→ 本文件 §2 → meta.tres/shop.tres 商品行段 → battle_orchestrator.gd 克制轴段(:830-854)→ 《奇物》v2.8 属性值提升分类节 → 《战斗结算》《敌人系统》克制矩阵节。裁决沿革:roadmap 卡③行+active.md 台账 381/385。
|
|
||||||
|
|
||||||
## 11. 版本记录
|
|
||||||
|
|
||||||
- v1.0(2026-10-07):起草。提纲版——设计裁点在提案产物内呈裁,任务书零待裁点;估时 1.5d(一轮呈裁基线)。
|
|
||||||
- v1.2(2026-10-07):定稿(用户令「没有问题,按推荐的来」+goal 发令确认)——零待裁点维持,开工门=U0。
|
|
||||||
- v1.1(2026-10-07):subagent 对抗审计触发 S1 重考证(总判=须重审→本版即重审产物)——🔴×6 修复:F1② 货架行族改 pool_shelf 现役(products=legacy,hp_up base=2 非 4)/F2 主角 attack_type 轴已存在休眠(hero.tres:11+hero_table.gd:13,前提倒置改写)/F2 克制矩阵已是全 3×3(settlement.tres:31-47,甲域={light,ward,heavy} 非 light/heavy/magic)/F3 甲型结构位已在册休眠/F2 克制直伤行号订正(:830/:846-854)/F5 效果类型实数 24(「23」系笔误);🟡×7:专长 matchup 联动与死条件清理入 §5.2/材料经济裁点入 §5.5/携带与换械通用必答入 §5.1/配比预设挂起批边界注记/《奇物》指针 v2.8/:1272 引用订正。
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
# 任务书:混编遭遇首批投放批(迭代 18 卡⑤)· v1.2 定稿(裁点全裁)
|
|
||||||
|
|
||||||
> 起草 2026-10-07。开工门=**U0 用户发令**(卡① 已落籍 9cc4b8b;✅ 裁点全裁 2026-10-07 用户令全按推荐:P1-P4 甲,见 §7)。
|
|
||||||
> 定位=**纯内容批**:在卡①交付的多行机制上做首次内容投放。义务源=07「后续内容批义务」(敌人表行集多行批 P3 丙二裁挂单,2026-10-06;已编入本卡)。
|
|
||||||
|
|
||||||
## 1. 目标与完成定义
|
|
||||||
|
|
||||||
### 1.1 一句话目标
|
|
||||||
|
|
||||||
在 enemy.tres 投放首个混编遭遇行(同 (关卡, 节点) 行集多敌种)——是否连带 Boss 多行由 P2 裁;零代码改动(机制面全部由卡①承载)。
|
|
||||||
|
|
||||||
### 1.2 完成定义(出口判定清单)
|
|
||||||
|
|
||||||
1. enemy.tres 新增混编行落表,同 (L,D) 多行**相邻且行序=声明序=生成序**(R6 行序契约)。
|
|
||||||
2. 首遇教学位行零触碰:巨蜘蛛 L2 节点 4「固定 2 不加骰」等表注释语义逐位保持,对应冒烟断言绿。
|
|
||||||
3. expect_pools 断言面随新坐标池模板换代绿(键形制=卡①交付的 (L,D,enemy_id) 口径)。
|
|
||||||
4. Boss 行(若 P2 裁投放):Boss 名取首行显示/Boss 遭遇骰**逐行区间骰**读数〔卡① Q8 逐行骰已消解「读首行区间」旧口径——卡①出口报告 7859441 在册〕/半血解锁/独占技四面读数逐项过(实机目检清单交付)。
|
|
||||||
5. 07 难度带读数义务随批登记;**MC 取证跑批不进本批**(顺延 Alpha 收官 M4 数值批统一执行〔2026-10-06 用户令定序、2026-10-07 复确认〕,跑批发起届时另报批)。
|
|
||||||
6. 敌种属性数值零变更(混编组合本身即难度变化源,禁二次加难)。
|
|
||||||
|
|
||||||
## 2. 现状事实(代码级考证,2026-10-07 master;卡① 落籍后 T0 复核以 master 新态为准)
|
|
||||||
|
|
||||||
- **F1 表现状**:enemy.tres 共 19 行/9 敌种,行键 (level_index, node_depth, enemy_id),行集校验 enemy_table.gd:108-112(master 现状=每行集恰一敌种,卡①放开设计在册)。各关构成:L1=地精系+熊地精+食人魔酋长;L2=熊地精系+巨蜘蛛+卓尔精灵(Boss d9);L3=灰矮人系+钩爪恐魔+石君王(Boss d9)——**现状零跨关混编**。
|
|
||||||
- **F2 卡①交付面**(本批的前置依赖,落籍后生效):行集校验放开;R6 行序纪律(任务书-敌人表行集多行批 :103);每行一骰数量骰(encounter 封闭流扩签,实例总数 ≤4,UNIT_COUNT_MAX 语义改「单种数」——:138/:140);expect_pools 断言换代 (L,D,enemy_id) 键(:79);Boss 行亦放开(P4 乙)。
|
|
||||||
- **F3 Boss 面**(多行投放时六面读数载体):Boss 节点=level 表 `node_type=="boss"` 编码位(level_table.gd:20/:89-91,每关恰一);Boss 名取首行 display_name(battle_narrator.gd:71-77);Boss 遭遇骰=每行各掷自己区间骰(battle_orchestrator.gd:181-198——「读首行区间」系 Q8 消解前旧口径);半血解锁 unlock_hp_pct(unit_container.gd:80-169;unlock_hp_pct 无硬闸=文档纪律,enemy_table.gd:94-95 注)。
|
|
||||||
- **F4 首遇教学位**:enemy.tres:486-487 巨蜘蛛「首遇位节点 4 固定 2 不加骰」;:518-519 钩爪恐魔「(节点0/节点1) 固定数量不加骰」;冒烟断言 smoke_all.gd:3535/:3568/:2288-2293 在册。
|
|
||||||
- **F5 义务原文**:07-体验验证清单.md:174(六面读数+教学位复核+MC 先报批)。
|
|
||||||
- **F6 spawn 现状**:unit_container.gd:42-95 spawn 单行受理(master 现状);行集化改法=卡①任务书 :71(逐行实例化/行主序/池逐行独立快照/守卫行集级)。spawn 期守卫=ENEMY_ROWSET_INSTANCE_MAX=4 fail-fast(unit_container.gd:82-84,超限种子战斗当场拒启)。
|
|
||||||
|
|
||||||
## 3. 范围边界(🔴 不可越界)
|
|
||||||
|
|
||||||
1. **零代码**:只动 enemy.tres 数据行+表注释;T0 复核若发现卡①机制缺口(多行 spawn/每行一骰/断言换代未在 master 生效)=**L3 停机呈报**,禁本批补码。
|
|
||||||
2. 敌种属性值(hp/atk/pool/权重/倍率)零变更;不改既有 19 行任何现值。
|
|
||||||
3. 首遇教学位行(F4 两处)零触碰、不混编。
|
|
||||||
4. 关卡图/生成器/难度曲线零改动。
|
|
||||||
5. MC/verifier 跑批零发起(顺延 Alpha 收官数值批——硬约束,发起前须用户批准的纪律不变)。
|
|
||||||
|
|
||||||
## 4. 设计契约(🔴 触碰 = L3 停机)
|
|
||||||
|
|
||||||
1. **R6 行序**(沿卡①契约):同 (L,D) 多行在表文件内相邻且行序=声明序=生成序——resolver 返回序/narrator 取首行/expect_pools/spawn 行主序全部依赖文件行序。
|
|
||||||
2. **实例总数 ≤4**(卡① P1 裁):静态判据=**Σ(unit_count_max,固定行缺省=unit_count)≤4**(守卫 fail-fast 见 F6)——T1 设计稿逐案自证最坏骰和(如 d5 案=固定 1+蜘蛛[2,3]→上限 4 安全;d7 案仅容固定 1 搭档)。
|
|
||||||
3. **表注释纪律**:每新行带注释(设计意图/读数预期);教学位语义注释逐字保持。
|
|
||||||
4. **只投已验证组合**:首批混编只允许「已现役敌种」两两组合(9 敌种池内),零新敌种(新敌种=独立内容批);**敌种不得早于其首遇位所在关出现**(跨关混编禁令——正撞首遇教学位纪律与卡① P3 改裁依据)。
|
|
||||||
|
|
||||||
## 5. 任务卡(T0-T5)
|
|
||||||
|
|
||||||
- **T0 开工三查+机制到位复核**(≈0.25d):worktree+基线复读;**卡①机制在位验证**(多行 spawn/每行一骰/expect_pools 新键在 master 的断言实跑);07:174 义务对读。
|
|
||||||
- **T1 混编行设计稿**(≈0.5d):按 P1 裁案产出候选组合×坐标提案(全备选案+淘汰依据呈裁):每案列 (L,D)/行序/两行 unit_count 搭配(总数 ≤4 自证)/与首遇位和 Boss 位的冲突排查;B 重点=巨蜘蛛 L2 d4 首遇位与 L2/L3 各 Boss d9 均为禁区。**新行全行值裁定来源随案呈裁(P4)**:甲=复制同敌种既有行值/乙=provisional 新值——expect_pools 池模板断言值随裁定走。
|
|
||||||
- **T2 人闸**:用户裁敌种候选与坐标(P1-P3)。
|
|
||||||
- **T3 数据行落地**(≈0.25d):enemy.tres 新行+表注释(R6 相邻+行序纪律落表)。
|
|
||||||
- **T4 断言面随迁**(≈0.5d):expect_pools 新坐标池模板断言(键=卡①口径);首遇位断言逐项复核绿;Boss 行断言(若投放:首行名/首行区间/解锁/独占技四断言)。
|
|
||||||
- **T5 收口**(≈0.25d):轻闸全量+doc 三闸+熵增+07 读数义务登记(六面读数清单入 §⑲ 式新条目)+出口报告+人闸实机目检清单(混编遭遇呈现/行序/实例总数 ≤4 目视);**顺带订正 07:174「Boss 遭遇骰读首行区间」措辞**(逐行骰口径换代)。
|
|
||||||
|
|
||||||
**估时合计 T0-T5 ≈ 1.75d**(MC 取证顺延 Alpha 收官数值批,不占本批估时)。
|
|
||||||
|
|
||||||
## 6. 验证闸
|
|
||||||
|
|
||||||
- 轻闸(每轮):run_smoke 全量(expect_pools/首遇位断言为核心回归面)。
|
|
||||||
- 重闸(批末):轻闸全量+run_all+doc 三闸(零新增)+熵增闸;**MC 零跑**(顺延在案——07 登记的读数义务届时随 Alpha 收官批执行)。
|
|
||||||
- 人闸:实机目检清单随出口报告(混编遭遇至少触发一次:同场两敌种呈现/行序与表一致/总数 ≤4/若 Boss 多行则六面逐项)。
|
|
||||||
|
|
||||||
## 7. 裁点(✅ 已全裁——2026-10-07 用户令全按推荐)
|
|
||||||
|
|
||||||
- **P1 首批投放方案(✅ 裁甲)**(核心裁点):**甲=单点试水**——L2 一处普通节点(d5/d7 候选)「巨蜘蛛+熊地精」双行混编:最小验证、教学位零冲突、Boss 不动(推荐——首次投放以机制验证优先,读数噪音最小);乙=每关一处——L1/L2/L3 各选一普通节点混编(覆盖面全、读数一次到位,但首批同时动三关);丙=甲+Boss 护卫多行(卓尔/石君王行集+杂兵行——六面读数全激活,首投即动 Boss 风险最高)。
|
|
||||||
- **P2 Boss 多行是否入首批(✅ 裁甲=不入)**:**甲=不入**(随 P1 甲/乙——Boss 多行待首批读数回看后第二批,推荐);乙=入(即 P1 丙)。
|
|
||||||
- **P3 教学界保护(✅ 裁甲)**:**甲=L1 教学段(d0-d2)维持零混编**(首遇教学位纪律的自然延伸,推荐);乙=L1 亦开放候选(不推荐——教学段行为变化涉 07 教学项)。
|
|
||||||
- **P4 新行行值来源(✅ 裁甲)**:**甲=复制同敌种既有行值**(零数值新增——混编组合本身即变化源,与完成定义 6「属性零变更」同构,推荐);乙=provisional 微调值(归难度曲线批锚)。
|
|
||||||
|
|
||||||
**代拍板白名单**:表注释措辞/断言文案/候选坐标在同方案内的微调(不出方案族)。
|
|
||||||
|
|
||||||
## 8. 异常分级
|
|
||||||
|
|
||||||
L1/L2 标准三级。停机点:S1=T0 发现卡①机制未在 master 生效(前置缺口);S2=任意既有断言因投放红灯且归因指向机制面(非数据面)——机制缺陷归卡① 回修,本批禁改码;S3=混编行设计稿无法满足总数 ≤4 或行序契约(方案族须重议,回 T1)。
|
|
||||||
|
|
||||||
## 9. loop engineering 八件对照(合规自证)
|
|
||||||
|
|
||||||
计划书(本文件,开工随批追认)/T0 三查/循环骨架(逐卡一轮)/轻闸(§6)/重闸(§6)/人闸(§6 目检清单)/异常分级(§8)/收口五步。
|
|
||||||
|
|
||||||
## 10. 现状留痕(执行会话读序)
|
|
||||||
|
|
||||||
先读 design/research/任务书-敌人表行集多行批-2026-10-05.md(前置批契约与 R6/P1/P3 裁决全文)→ 本文件 §2 → enemy.tres(19 行全读,重点 :486-487/:518-519 注释)→ smoke_all.gd expect_pools 段(:3052-3084)+首遇位断言(:3535/:3568)→ 07:174 义务原文。裁决沿革:roadmap 卡⑤行+active.md 台账 381/385。
|
|
||||||
|
|
||||||
## 11. 版本记录
|
|
||||||
|
|
||||||
- v1.0(2026-10-07):起草。裁点 P1-P3 待裁;开工门含卡① 落籍(worktree iter17-enemy-20261007 在飞)。
|
|
||||||
- v1.2(2026-10-07):裁点全裁定稿——用户令全按推荐(P1 甲=L2 单点试水/P2 甲=Boss 多行不入首批/P3 甲=L1 教学段零混编/P4 甲=新行复制同敌种既有行值);开工门收敛为 U0。
|
|
||||||
- v1.1(2026-10-07):subagent 对抗审计修订(总判=小修后可开工)——🔴×1:判定4/人闸/F3「Boss 遭遇骰读首行区间」改逐行骰口径(卡① Q8 已消解,T5 顺带订正 07:174);🟡×4:实例总数静态判据改 Σ(unit_count_max)≤4/跨关混编禁令入 §4.4/新行行值来源立 P4 裁点/卡① 任务书引用行号订正(v1.1 页码);开工门注记卡① 已落籍〔9cc4b8b〕。
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
# 任务书:生涯界面实装批——期一(迭代 18 卡④)· v1.2 定稿(裁点全裁)
|
|
||||||
|
|
||||||
> 起草 2026-10-07。开工门=**U0 用户发令**(✅ 提纲期一追认=2026-10-07 用户令「没有问题,按推荐的来」代解人闸——P6 营地条带仍随期二;✅ 裁点全裁同令全按推荐:P1-P3 甲,见 §7)。
|
|
||||||
> 范围=提纲(design/gdd/systems/跨局循环/生涯.md v0.1)分期建议的**期一**:跨局汇总页+主菜单入口落位+终身计数域存档迁移。期二(历史回看)/期三(图鉴)另行立项,本批零触碰。
|
|
||||||
> 若提纲评审修改期一范围 → 本任务书升 v1.1 对齐后再开工(升版义务写进开工门)。
|
|
||||||
|
|
||||||
## 1. 目标与完成定义
|
|
||||||
|
|
||||||
### 1.1 一句话目标
|
|
||||||
|
|
||||||
主菜单新增「生涯」一级入口(与营地平级),进入跨局汇总页——总局数/通关局数(新增终身计数域,存档 v6)/各关通关次数/Boss 击杀/钥石余额/三柜台解锁概览只读呈现。
|
|
||||||
|
|
||||||
### 1.2 完成定义(出口判定清单)
|
|
||||||
|
|
||||||
1. 主菜单「营地与系统」组出现「生涯」钮(P1 甲提纲在册),点击开生涯页,关闭返回菜单。
|
|
||||||
2. 汇总页条目(P2 裁集)数值与数据源逐项一致(各只读访问器对照断言)。
|
|
||||||
3. 终身计数域落存档 v6:v5 档升 v6 幂等迁移、新档默认值、冒险收束自增恰一(三断言)。
|
|
||||||
4. 生涯页零写通路(收束入账除外)——只读巡检断言(白名单外零信号连接,17卡③形制)。
|
|
||||||
5. 结构探针生涯屏断言入轻闸(互压/出屏/零尺寸/ui_struct 族)。
|
|
||||||
6. 旧档兼容:v5 现役档载入后生涯页正常显示(计数域缺省补零),无损坏。
|
|
||||||
|
|
||||||
## 2. 现状事实(代码级考证,2026-10-07)
|
|
||||||
|
|
||||||
- **F1 提纲裁决面**:P0-P5 全甲已裁(生涯.md:87)——主菜单一级入口与营地平级(:9)、局内不放入口且生涯零跳转、汇总每局一行+cap 扩容+用时埋点=**期二**、敌人图鉴优先=期三、单局明细由 settlement_review_overlay 复活承接=期二;新发现 P6=营地底栏「最近冒险」条带去留(期二必答项,:89-99)——**期一不裁不动**。
|
|
||||||
- **F2 期一数据源**(提纲 :35-41 六类):总局数/通关局数=**现无数据源,须新增终身计数域**(save_manager.gd:106-117 现役 meta schema 无此二字段;first_adventure_done 是布尔 :117、level_clear_counts 按关计次 :109 反推不出总局数);各关通关次数=level_clear_counts 现役;Boss 首杀/总杀=boss_first_kill/boss_kill_count 现役;钥石余额=keystone_balance 现役;三柜台概览=forge_levels/item_unlocks/tree_nodes 现役。
|
|
||||||
- **F3 存档版本**:v5 现役(SAVE_FORMAT_VERSION:=5,save_manager.gd:39);迁移链 _init 自注册 1→v5(:53-57),分发在 load_from_disk(:138,逐版 call :160-162)——v6 沿同链追加。
|
|
||||||
- **F4 recent_summaries**:cap=10(save_manager.gd:40 SUMMARY_CAP;apply_adventure_summary :325 唯一入账口 push_front+pop :336-338);字段集 adventure_runner.gd:1010-1021。**期一不改 cap 不加字段**(扩容/用时埋点=期二)。
|
|
||||||
- **F5 用时埋点零**:core 层无现实用时采集(grep 仅命中回合数语义的 duration)——期二义务,期一不做。
|
|
||||||
- **F6 settlement_review_overlay.gd**:在盘零引用(退役注记 ui_assembler.gd:67)——期二复活承接,期一不动。
|
|
||||||
- **F7 营地最近冒险条带**:camp_overlay_view.gd:423-436 全量拼行无上限(P6 撑爆机制在册)——期一零改动。
|
|
||||||
- **F8 主菜单装配点**:ui_assembler.gd:102 build_start_overlay——「营地与系统」组帽 :149、营地钮 :150、设置 :152、退出 :156;生涯钮插此组。
|
|
||||||
- **F9 公共件现役**:page_shell(ui_kit.gd:394,全屏页先例=商店/三选一 UI 对齐批)、bcard(:695)、modal_shell(:367);UI 基线纪律 FS_*/TG_*/BUTTON_MIN_H=40(ui_kit.gd:437)。
|
|
||||||
- **F10 模态登记**:main.gd:340-342 十一层(…camp_overlay, settings_overlay, pause_overlay, confirm_dialog, debug_overlay);生涯层为全屏页,插序见 P3。
|
|
||||||
|
|
||||||
## 3. 范围边界(🔴 不可越界)
|
|
||||||
|
|
||||||
1. 期一三件:生涯页(汇总段)+主菜单入口+终身计数域 v6。**期二/期三内容零触碰**(历史回看列表/用时埋点/SUMMARY_CAP 扩容/旧档摘要迁移/图鉴/settlement_review 复活/营地条带 P6 处置——全部不做)。
|
|
||||||
2. 数值零改动;核心循环(战斗/扫雷/奖励)零触碰——纯呈现+存档 meta 域追加。
|
|
||||||
3. 生涯页零跳转(提纲 P4 甲):页内不放任何「前往他处」入口,仅只读展示+关闭。
|
|
||||||
4. 局内不放生涯入口(提纲 P4 甲)——开始覆盖层之外的任何屏不挂钮。
|
|
||||||
5. 美术红线:复用 UiKit 公共件与色板 token,零新素材零新色值零新字体(迭代 16 基线)。
|
|
||||||
|
|
||||||
## 4. 设计契约(🔴 触碰 = L3 停机)
|
|
||||||
|
|
||||||
1. **存档迁移向后兼容**:v5→v6 只增字段不改不删(迁移链先例 F3);迁移幂等(重复迁移零副作用);「通关局数」等新域缺省补零旧档可载。
|
|
||||||
2. **单一入账口**:终身计数自增只许落在冒险收束处(与 apply_adventure_summary 同点或同函数链),禁第二写入点。
|
|
||||||
3. **只读呈现**:生涯页全部经只读访问器(MetaProgression 现役访问器面+save 计数新访问器);17卡③「只读巡检断言」(游戏语义信号白名单外零连接)沿用为本批 C 级断言。
|
|
||||||
4. **page_shell 模态栈纪律**:生涯层入 ModalStack 登记(插序 P3 裁值);输入锁判据 has_open 兼容(生涯开着=游戏输入锁定,与他层同语义)。
|
|
||||||
5. **UiKit 单点**:新控件只许组合既有工厂件(verb_button/label/page_shell 等);字号走 FS_*、语义色走 TG_*,裸 Color8/裸字号=违例。
|
|
||||||
6. **核心层零 await**:呈现层加载不引入核心等待。
|
|
||||||
|
|
||||||
## 5. 任务卡(T0-T5)
|
|
||||||
|
|
||||||
- **T0 开工三查+提纲定稿对读**(≈0.25d):worktree+基线复读+§2 逐条复核;**对照评审后的生涯.md 定稿**(若期一范围有变=L3 呈报升版,禁带差异开工)。
|
|
||||||
- **T1 存档 v6**(≈0.5d):终身计数域两字段(命名 provisional:adventure_total/adventure_cleared)+迁移函数(v5→v6)+写入单口(契约2)+只读访问器+断言三件(升档幂等/新档缺省/收束自增恰一)。**随批同步三处(审计)**:①旧断言换代=smoke_all.gd:4734-4735/:4832-4833 硬断言「写盘 version==5」同批改 6;②registry=design/registry/entities.yaml save_file 条目(现 stale 在 4——v5 批已漏一次)+save_manager.gd:39 版本史注释;③cleared 判定字段=summary["cleared"](adventure_runner.gd:1012,"completed" 唯一出口=末关通关 :1005)现成直用。
|
|
||||||
- **T2 收束入账接线**(≈0.25d):收束点自增(口径=P1 裁值);断言(通关局与中止局各一夹具)。
|
|
||||||
- **T3 生涯页**(≈0.75d):主菜单入口钮(F8 装配点)+page_shell 全屏页+汇总段逐行(P2 裁条目集,数据源全现成;**工坊概览取数=workshop_status 投影**〔meta_progression.gd:90,含 display_name/threshold/progress——非 item_unlocks raw 键〕);零动效;关闭回菜单。
|
|
||||||
- **T4 探针断言**(≈0.5d):ui_struct 生涯屏结构断言族+入口点击链(合成点击真路径)+只读巡检(契约3)+旧档载入冒烟夹具(v5 样档升 v6)。
|
|
||||||
- **T5 收口**(≈0.25d):重闸(轻闸+run_all+doc 三闸+熵增;MC 零跑=纯呈现+meta 域追加,静态论证随出口报告)+07 目检条目+生涯.md 状态行换代(v0.1 范围草案→期一已实装)+出口报告+台账。
|
|
||||||
|
|
||||||
**估时合计 T0-T5 ≈ 2.5d**。
|
|
||||||
|
|
||||||
## 6. 验证闸
|
|
||||||
|
|
||||||
- 轻闸(每轮):run_smoke 全量+ui_input_probe;触 presentation 加跑 ui_click_probe+ui_layout_probe。
|
|
||||||
- 重闸(批末):轻闸全量+run_all+doc 三闸(零新增)+熵增闸+MC 零跑(静态论证)。
|
|
||||||
- 人闸:实机目检清单随出口报告(入口/页呈现/数值与存档实况一致/旧档载入/关闭回返)。
|
|
||||||
|
|
||||||
## 7. 裁点(✅ 已全裁——2026-10-07 用户令全按推荐)
|
|
||||||
|
|
||||||
- **P1 「通关局数」口径(✅ 裁甲)**(错了改不回的终身计数,最重裁点):**甲=三关全通才计 1**(「通关」字面口径,与 level_clear_counts 分层不冲突,推荐);乙=到达第 3 关即计(宽松口径,与字面冲突,不推荐);丙=双计数并存(通关+到达,甲乙各留一列——汇总页多一行,信息冗余)。
|
|
||||||
- **P2 期一汇总条目集(✅ 裁甲)**:**甲=提纲六类九项全做**(数据源全现成——F2 逐项核过,推荐);乙=四项核心(总局/通关/钥石/柜台概览)先上,各关次数与 Boss 击杀随期二。
|
|
||||||
- **P3 生涯层模态登记序(✅ 裁甲)**:**甲=营地同档**(settings 层旁、confirm_dialog 之前——全屏页先例同构,推荐;**树序同步**:登记序=树序=addChild 序〔ui_assembler.gd:65/main.gd:319-321 纪律〕,生涯层挂树位置须与登记插位一致);乙=最高档(confirm_dialog 后、debug 前——关闭优先级语义随之变)。
|
|
||||||
|
|
||||||
**代拍板白名单**:字段命名(adventure_total/adventure_cleared 类)/文案/行序排版/页内分组标题/**总局数口径=含放弃与失败的所有开局**(「开局即计」,与通关局数分层)。
|
|
||||||
|
|
||||||
## 8. 异常分级
|
|
||||||
|
|
||||||
L1/L2 标准三级。停机点:S1=评审后提纲与 §3 范围不一致(升版重报);S2=旧档迁移任何字段丢失或类型漂移(存档红线);S3=MetaProgression 现役访问器面不足以支撑某条目(需新访问器——评估后如涉核心写通路则停机呈报)。
|
|
||||||
|
|
||||||
## 9. loop engineering 八件对照(合规自证)
|
|
||||||
|
|
||||||
计划书(本文件)/T0 三查/循环骨架/轻闸(§6)/重闸(§6)/人闸(§6)/异常分级(§8)/收口五步。
|
|
||||||
|
|
||||||
## 10. 现状留痕(执行会话读序)
|
|
||||||
|
|
||||||
先读 design/gdd/systems/跨局循环/生涯.md(**评审定稿版**)→ 本文件 §2 → save_manager.gd(:39-57 迁移链/:106-117 schema/:316-338 summaries)→ ui_assembler.gd:102-160(开始覆盖层装配)→ ui_kit.gd page_shell 段(:394±)→ design/qa/iter17-pause-exit-report-2026-10-06.md(只读巡检断言先例)。裁决沿革:roadmap 卡④行+active.md 台账 379/381/385。
|
|
||||||
|
|
||||||
## 11. 版本记录
|
|
||||||
|
|
||||||
- v1.0(2026-10-07):起草,范围=提纲期一。前置=提纲评审(人闸)+P1-P3 裁。
|
|
||||||
- v1.2(2026-10-07):裁点全裁定稿——用户令全按推荐(P1 甲=三关全通才计/P2 甲=六类九项全做/P3 甲=营地同档登记序+树序同步);提纲期一人闸由同令代解(P6 随期二);开工门收敛为 U0。
|
|
||||||
- v1.1(2026-10-07):subagent 对抗审计修订(总判=小修后可开工;§2 行号零引用错)——🟡×4 入义务面:旧断言 version==5→6 同步(smoke 两处)/registry save_file 行+save_manager:39 注释同步/工坊概览改 workshop_status 投影取数/P3 补树序同步半句;🟢:迁移链幂等安全性确认(_normalize 补缺省机制)/总局数口径入白名单/cleared 字段来源点明。
|
|
||||||
@@ -1,223 +0,0 @@
|
|||||||
# 任务书:生涯界面设计立项(v1.1 设计提纲版,零待裁点,开工门=U0 用户发令)
|
|
||||||
|
|
||||||
> 成文 2026-10-05,v1.1 修订 2026-10-06(五任务书联审:F4 事实改正——recent_summaries 现役在存、P2 甲口径重述〔Q5 甲〕、总局数/通关局数标注涉存档 schema、营地既有最近冒险清单列入设计稿必答项、N 候选补「维持 10」、文件名与行号勘误、UiKit 对齐与 save v6 义务补登记)。
|
|
||||||
> **性质**:纯设计批——产出「生涯」界面的设计提纲(信息架构 + 承载内容清单 + 与既有界面的关系 + 分期实装建议 + 待裁点),**本批零实装、零代码、零数据面改动**。
|
|
||||||
> 事实源 = [06-待办清单](../gdd/06-待办清单.md)「『生涯』界面——冒险中数据回看的唯一承接处」条(2026-10-04 用户裁决 P-C7:冒险中不给数据回看,历史战报/结算明细的查看去向 = 新「生涯」界面;生涯未做前冒险中无历史回看入口 = 已知代价,用户知情裁决)。
|
|
||||||
> 归属迭代:**迭代 17 · 卡④**(迭代 17 现=卡⓪数据驱动扩展批+①敌人表行集多行批+③暂停层只读入口批+④本批;M4 数值批已移迭代 18,roadmap 现行口径)。
|
|
||||||
> **实装批另行立项**:本任务书只交付设计提纲文档与裁点呈报;任何实装(数据面/界面/存档域)须用户审毕提纲后另行发令立项。
|
|
||||||
> 满足 loop engineering 八件(按设计批形态适配,见 §9 逐条对照)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 目标与完成定义
|
|
||||||
|
|
||||||
### 1.1 一句话目标
|
|
||||||
|
|
||||||
为「生涯」界面立一份可供裁决的设计提纲:说清这个界面是谁、装什么、和既有界面怎么分工、分几期做、每期做什么,以及开工前需要用户拍板哪些点。
|
|
||||||
|
|
||||||
### 1.2 完成定义(出口判定清单)
|
|
||||||
|
|
||||||
| # | 判定项 | 量化标准 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 提纲成文 | 设计提纲落正主候选位置(建议 `design/gdd/systems/跨局循环/生涯.md` 或按 P0 裁决的载体),含信息架构 / 承载内容清单 / 与既有界面关系 / 分期实装建议 / 待裁点五节 |
|
|
||||||
| 2 | 事实对齐 | 提纲中的现状描述经代码级复核(§2 事实表),无凭印象书写 |
|
|
||||||
| 3 | 裁点齐备 | §8 待裁点逐条列全备选案(含淘汰依据),无「待定」二字悬空 |
|
|
||||||
| 4 | 零实装 | 本批 diff 仅含设计文档与 06 状态行;`game/` 零改动、存档零改动、零测试执行(两入口铁规:非 loop 实施批且用户未点名测试) |
|
|
||||||
| 5 | 人闸 | 设计提纲交付用户评审;06 状态行更新为「设计提纲已成文待评审」 |
|
|
||||||
|
|
||||||
## 2. 现状事实(代码级考证,2026-10-05 起草时点;T0 须自行复核)
|
|
||||||
|
|
||||||
| # | 事实 | 读数 |
|
|
||||||
|---|---|---|
|
|
||||||
| F1 | 冒险中回看已退役 | M9(P-C7 裁)落码:`battle_end_overlay.gd:106` 明细回看钮退役(v1.0 写 :90 系漂移,:90 现为 GP 账目行;signal 退役注记在 :9)、`review_pressed` 信号退役;`battle_log_view.gd:47` 战报带改单行「上轮摘要(回看归「生涯」)」、:115 带点击回看入口退役;`ui_assembler.gd:67` 注记「明细回看 overlay 已随 M9/P-C7 退役——冒险中回看归「生涯」06 登记」 |
|
|
||||||
| F2 | 遗留文件 | `presentation/views/settlement_review_overlay.gd` 文件本体仍在,冒险中已无入口(处置见 P5 裁点:实装期复活承接还是退役删除) |
|
|
||||||
| F3 | 跨局持久面 = save v5 meta 域 | `keystone_balance` / `forge_levels` / `item_unlocks` / `level_clear_counts` / `boss_first_kill` / `boss_kill_count` / `tree_nodes` / `fork_sides` / `attunement_equipped` / `attune_refresh_level` / `first_adventure_done` / **`recent_summaries`**(save_manager.gd:39 schema 注记 + meta_progression.gd 访问器面;v1.0 键集漏列 recent_summaries,v1.1 补) |
|
|
||||||
| F4 | ⚠️ **历史冒险记录面现状(v1.1 事实改正——v1.0 误记「无历史冒险记录面」)** | **`recent_summaries` 现役在存**:`save_manager.gd:40` `const SUMMARY_CAP := 10`(注释「最近冒险摘要保留条数(最新在前)」)、`:325-338` `apply_adventure_summary()` 逐局 push_front 归档(附 boss_drops 副本)、`:316` `recent_summaries()` 访问器;`settle_adventure()`(meta_progression.gd:129)**经** `apply_adventure_summary` 留痕(:125 注记「keystone_drops 副本随摘要入 recent_summaries」);registry entities.yaml:73 meta 域九件明列。**真实缺口只有三件**:①cap 10→N 扩容(P2 甲);②摘要五件事(结局/到达关卡/钥石合计/种子)**无「用时」字段**——全仓 grep elapsed/ticks/duration 零采集点,补用时=新增埋点;③**冒险总局数/通关局数无 lifetime 计数域**(`first_adventure_done` 是布尔、`level_clear_counts` 按关计次反推不出局数、cap 10 摘要不能累 lifetime)——总局数/通关局数须新增计数域,**涉存档 schema(save v6 迁移义务)**,归期一实装批 |
|
|
||||||
| F5 | 当局结算呈现仍在 | 冒险收束时结算屏入账明细(钥石 +N、新解锁)现行保留——退役的只是「局后任意时刻回看」,不是收束当下 |
|
|
||||||
| F6 | 跨局汇总数据源现状 | 总通关次数(level_clear_counts 按关)、Boss 首杀/总击杀、钥石余额与累计流(余额在,累计收支无流水)、锻造/工坊/天赋树解锁态——大半字段可直接读访问器;**「冒险总局数 / 通关局数」两格无数据源(v1.1 勘误——v1.0 误标「全现成·零新数据面」)**:须新增 lifetime 计数域,涉存档 schema,见 F4③ |
|
|
||||||
| F7 | 图鉴承接的候选内容 | 06 在册相关条目:「敌方技能图鉴 / 学习呈现」(P2,见过→认得→记谱);奖励格图鉴柜台空置(2026-10-04 配比预设批裁决该柜台承接配比容量,后随配比预设整体挂起——柜台仍空);秘宝/奇物均无图鉴面 |
|
|
||||||
| F8 | 相邻界面分工现状 | 营地 = 跨局成长**操作**面(花钥石买强化)**+ 既有只读「最近冒险」清单**(camp_overlay_view.gd:431 `_rebuild_recent()` 渲染逐局「完成/放弃/失败 · 通关 N 关 · 钥石 +N · 种子 N」,camp_shop_presenter.gd:85 投影 `"recent"`——生涯期二落地后此清单去留/迁移/去重是设计稿必答项,v1.1 补);主菜单 = 入口面(新冒险/继续上局/营地/设置/调试);设置面 = 环境开关;教学「帮助」手册(Beta 批初裁:全部内容放一个文档,未实装);暂停层(迭代 17 卡③)= 局内只读查看钥石与解锁进度 |
|
|
||||||
| F9 | 06 条目原文口径 | 「跨局汇总 / 历史冒险回看 / 图鉴承接」三段内容清单是 06 条目给定骨架,本提纲在其上展开,不另起炉灶 |
|
|
||||||
| F10 | 阶段语境 | 教学引导五条目已整体改排 Beta(2026-10-04 拍板);生涯未标阶段——分期建议须回答「生涯第几期落在 Alpha 后哪个窗口」 |
|
|
||||||
|
|
||||||
## 3. 设计提纲(本批交付物本体)
|
|
||||||
|
|
||||||
### 3.1 信息架构(草案,待 P1 裁决)
|
|
||||||
|
|
||||||
「生涯」是**局外只读界面**,与营地平级挂在主菜单(或按 P1 裁为营地内页签)。一句话定位:**营地管「花」,生涯管「看」**——所有跨局数据的回看集中在这里,冒险中一律不给回看(P-C7 裁决的延续)。
|
|
||||||
|
|
||||||
```
|
|
||||||
主菜单
|
|
||||||
├─ 新冒险 / 继续上局
|
|
||||||
├─ 营地(操作面:花钥石、装配、天赋树)
|
|
||||||
├─ 生涯(只读面,本提纲)
|
|
||||||
│ ├─ 跨局汇总(累计战绩与解锁总览)
|
|
||||||
│ ├─ 历史冒险回看(逐局摘要与结算明细)
|
|
||||||
│ └─ 图鉴(敌人 / 秘宝 / 奇物——范围随 P3)
|
|
||||||
├─ 设置
|
|
||||||
└─ 退出
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3.2 承载内容清单(草案,逐段标数据可行性)
|
|
||||||
|
|
||||||
| 段 | 内容 | 数据源 | 可行性 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 跨局汇总 | 冒险总局数 / 通关局数 / 各关通关次数 / Boss 首杀与总击杀 / 钥石余额(累计收支流水可选)/ 三柜台解锁完成度概览 | F6 大半现成;**总局数/通关局数两格需新增 lifetime 计数域(涉存档 schema,F4③)** | 期一可做,但**非「零新数据面」**——两个计数域随期一实装批走 save v6 迁移(v1.1 勘误) |
|
|
||||||
| 历史冒险回看 | 逐局摘要:第 N 局、结局(通关/失败/放弃)、走到哪、钥石收入、关键构筑(可选)、用时;单局结算明细回看(复活 settlement_review 承接) | **F4 现役 recent_summaries(cap 10)+ 扩容 N + 补用时埋点(P2 甲口径重述)** | **期二**,数据面改动=扩容+加字段+迁移旧档摘要(P2) |
|
|
||||||
| 图鉴承接 | 敌人图鉴(06 在册 P2 条目承接:见过→认得→记谱)/ 秘宝图鉴 / 奇物图鉴 / 奖励格图鉴(空置柜台) | 逐类立「见过」记账面=**新增 meta 域,涉存档 schema(save v6 迁移义务,v1.1 补)** | **期三**,范围与顺序随 P3 |
|
|
||||||
|
|
||||||
### 3.3 与既有界面的关系(分工一句话矩阵)
|
|
||||||
|
|
||||||
| 界面 | 管什么 | 与生涯的边界 |
|
|
||||||
|---|---|---|
|
|
||||||
| 营地 | 跨局成长的**操作**(买/装配/点树)+ 既有只读「最近冒险」清单(F8) | 营地不改生涯只读定位;生涯不做任何购买入口,「去买」按钮也不放(跳转型入口随 P4);**营地「最近冒险」清单的去留/迁移/去重是设计稿必答项(v1.1 补)**——期二落地后两处逐局列表并存还是营地侧撤下并入生涯,设计稿须给明确建议 |
|
|
||||||
| 暂停层(迭代 17 卡③) | **局内**只读看钥石与解锁进度 | 暂停层看「这一局进行中的当前值」,生涯看「跨局累计与历史」;局内是否给生涯入口随 P4 |
|
|
||||||
| 结算屏 | 当局收束当下的入账明细 | 收束当下保留;生涯承接的是收束之后的任意时刻回看 |
|
|
||||||
| 帮助手册(Beta 批) | 规则与玩法的说明文档 | 手册讲「怎么玩」,生涯讲「我玩过什么」;图鉴条目文案与手册条目是否共用内容源,归 Beta 批一并裁(本提纲只登记接口) |
|
|
||||||
| 图例面板(legend_overlay) | 局内符号/徽标解码 | 局内即时解码不动;图鉴是跨局收集面,两者不合并 |
|
|
||||||
|
|
||||||
### 3.4 分期实装建议(供裁决,实装批另行立项)
|
|
||||||
|
|
||||||
| 期 | 内容 | 前置 | 建议窗口 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 期一 | 跨局汇总页(大半只读投影;总局数/通关局数两个 lifetime 计数域走 save v6 迁移)+ 生涯入口落位 | 本提纲裁决完毕 + **实装批前置义务(v1.1 补):对齐 iter16ui 后现行 UI 基线**——FS_* 六档字号/TG_* 语义色/BUTTON_MIN_H=40/ui_kit 色板单源/page_shell 模态栈纪律(与卡③任务书同款红线);UI 基线对齐义务由本提纲登记、实装批承接 | Alpha 后最近一个 UI 窗口(可与暂停层批同迭代序列后续) |
|
|
||||||
| 期二 | 历史冒险回看(recent_summaries 扩容 N+补用时埋点+旧档摘要迁移 + 逐局列表 + 单局明细,settlement_review 复活承接随 P5;营地「最近冒险」清单去留一并落地) | 期一 + P2 数据面裁决 | 期一落地后独立批 |
|
|
||||||
| 期三 | 图鉴承接(范围与顺序随 P3;「见过」记账面新增 meta 域=**save v6 迁移义务**) | P3 裁决 + 对应「见过」记账面 | Beta 窗口候选(与教学引导同阶段评估——「认得」轴与教学相关) |
|
|
||||||
|
|
||||||
> 本地化文案权(v1.1 补):生涯界面本体按钮/页签/空态文案归「设置与本地化」线(全仓无 i18n 实装,先例=教学文案权登记),图鉴条目文案与手册共源已在 §3.3 登记接口——实装批承接。
|
|
||||||
|
|
||||||
### 3.5 本批不做
|
|
||||||
|
|
||||||
实装、数据面 schema 设计细节(字段级)、界面布局稿(观感稿归用户美术批纪律)、任何代码。期一/二/三均为**另行立项**的实装批,本任务书不预占。
|
|
||||||
|
|
||||||
## 4. 范围边界(🔴 不可越界)
|
|
||||||
|
|
||||||
| 禁项 | 理由 |
|
|
||||||
|---|---|
|
|
||||||
| 🔴 **零实装零代码** | 本批 diff 仅限设计文档与 06 状态行;`game/` 任何文件不得出现在 diff 中 |
|
|
||||||
| 🔴 **零测试执行** | 两入口铁规:纯文档批且用户未点名——不跑冒烟/探针/MC,结论全部来自静态阅读 |
|
|
||||||
| **不推翻 P-C7** | 「冒险中不给数据回看」是用户裁决,本提纲不提议在冒险中恢复回看入口(暂停层卡③的只读查看是另一裁决面,不冲突) |
|
|
||||||
| **不新增美术/素材内容** | 2026-10-05 用户立规:美术由用户独立成批自理;本提纲不含布局稿/视觉稿/素材需求清单(如需素材,登记为实装批的前置待办即可) |
|
|
||||||
| **不预占实装排期** | 分期建议是建议不是排期;roadmap 迭代位由用户逐期点名 |
|
|
||||||
|
|
||||||
## 5. 设计契约(🔴 触碰 = L3 停机)
|
|
||||||
|
|
||||||
| # | 契约 | 验证方式 |
|
|
||||||
|---|---|---|
|
|
||||||
| 🔴 R1 | **事实先于设计**:提纲中每一句现状描述须能指回 §2 事实表或代码位置;凭印象书写即返工 | 评审逐节抽查 |
|
|
||||||
| 🔴 R2 | **引用不转述**:提及既有系统的规则时只引用规范名 + 链接,不复述对方数值与口径(doc-conventions §8) | doc 三闸(文档批可按用户点名补跑) |
|
|
||||||
| 🔴 R3 | **无正主不下定义**:生涯尚无正主文档——本提纲即正主候选;在正主落位前,其他文档不得替「生涯」补定义 | 提纲 P0 载体裁决落实 |
|
|
||||||
| 🔴 R4 | **黑话禁令**:提纲全文白话,机制概念不造词;「生涯」一词是用户已用的玩家可见名,可直接用 | 写后自查 |
|
|
||||||
|
|
||||||
## 6. 任务卡
|
|
||||||
|
|
||||||
| 卡 | 内容 | 估时 | 验证 | 完成判据 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| **T0** | 开工:worktree + §2 事实表复核(重点 F1/F2/F4/F7——逐条指到代码行)+ 差异呈报 | 0.25d | 静态复核(零测试) | 事实表全绿或差异呈报修订 |
|
|
||||||
| **T1** | 提纲成文:§3 五节按裁决框架写全(信息架构 / 内容清单 / 界面关系 / 分期建议 / 待裁点),落载体随 P0 | 0.75d | 读者测试(只读各节第一段能看懂全篇) | §1.2 判定 1/2/3 |
|
|
||||||
| **T2** | 人闸交付 + 06 状态行更新 + 收口 | 0.25d | 用户评审 | §1.2 判定 4/5 |
|
|
||||||
|
|
||||||
> 估时合计 ≈ **1.25d**,在软时间盒内。
|
|
||||||
|
|
||||||
## 7. 验证闸
|
|
||||||
|
|
||||||
- 本批为纯文档批:**零测试**(两入口铁规)。
|
|
||||||
- doc 三闸(doc_link / doc_term / 熵增)**默认不跑**;用户点名则按点名执行并对基线零新增。
|
|
||||||
|
|
||||||
## 8. 代拍板白名单与待用户裁点
|
|
||||||
|
|
||||||
**白名单内**:
|
|
||||||
- 提纲文档的小节组织与行文措辞
|
|
||||||
- 06 状态行更新措辞
|
|
||||||
|
|
||||||
**待用户裁点**(呈全备选案,含淘汰依据):
|
|
||||||
|
|
||||||
### P0 · 提纲与正主载体
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令)**:案甲——提纲直接落 design/gdd/systems/跨局循环/生涯.md(状态=范围草案),同步 02-系统清单.md(**根索引正名,v1.0 误写「02-系统清单索引」,全仓无此文件名**)。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲(推荐) | 提纲成文即落 `design/gdd/systems/跨局循环/生涯.md`(状态=范围草案),同步 02-系统清单.md 根索引 | 「吸收即死」纪律:中间文档不留;正主早立早受益(R3) |
|
|
||||||
| 乙 | 提纲暂存 design/research/ 待评审后再转正 | 评审前不动 GDD 树;淘汰候选:与「吸收即死」纪律冲突,且评审意见最终还是要落正主,多一次搬运 |
|
|
||||||
|
|
||||||
### P1 · 生涯入口位置
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令)**:案甲——主菜单一级入口,与营地平级。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲(推荐) | 主菜单一级入口,与营地平级 | 「生涯 = 跨局数据的家」与营地同级最直白;主菜单按钮组有现行形制可复用(实装期) |
|
|
||||||
| 乙 | 营地内页签/分区 | 入口少一个;淘汰候选:营地是操作面,把只读回看塞进操作面会让营地更挤,且「看」与「买」混居违反分工矩阵 |
|
|
||||||
| 丙 | 结算屏内加入口 | 淘汰候选:只有收束时可达,违背「任意时刻回看」的承接定位 |
|
|
||||||
|
|
||||||
### P2 · 历史冒险回看的数据面范围(期二核心裁点,本批只呈框架)
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令:案甲;同日 Q5 甲二裁口径重述)**:每局一行摘要(结局/到达关卡/钥石收入/用时),上限存最近 N 局;N=20/50 实装期按存档体积读数定。**口径重述(v1.1——一裁建立在 v1.0「无历史冒险记录面」误记上,实际 recent_summaries 现役 cap=10)**:本裁的实际工作量=①**扩容 cap 10→N**(非新建数据面,向后兼容);②**补「用时」字段埋点**(现无任何采集点,属新增数据面改动,随期二);③旧档既有 ≤10 条摘要原样保留迁移;④N 候选补第三案「**维持 10 不动**」——实装期读数三选一(20/50/维持 10),读数方法(谁测、体积门槛几何、何时测)与设计稿参数化维度(列表形态/滚动/分页/上限提示)由设计稿给出、实装期执行。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲 | 每局一行摘要(结局/到达关卡/钥石收入/用时),上限存最近 N 局(N 候选 20/50/维持 10) | 存储最小、实现最简;回看粒度到「局」不到「战」;现役面只需扩容+补字段 |
|
|
||||||
| 乙 | 甲 + 每局完整结算明细留痕(逐行结算单据全存) | 回看最完整;淘汰候选:单局结算单据量大,存档体积与 schema 复杂度显著上升,且 99% 的回看诉求摘要即可满足 |
|
|
||||||
| 丙 | 不存历史,历史回看段整段取消(生涯只做汇总+图鉴) | 淘汰候选:06 条目明列「历史冒险回看」,且 P-C7 裁决的代价(冒险中无回看)正是由它补偿 |
|
|
||||||
|
|
||||||
### P3 · 图鉴承接的内容范围与顺序(期三核心裁点)
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令)**:案甲——敌人图鉴优先(06 在册条目承接),秘宝/奇物随后;奖励格图鉴只登记不激活。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲 | 敌人图鉴优先(06 在册 P2 条目「敌方技能图鉴/学习呈现」直接承接),秘宝/奇物随后 | 在册条目有先约,敌人是玩家信息需求最硬的一类 |
|
|
||||||
| 乙 | 秘宝/奇物图鉴优先 | 收集类游戏惯例;淘汰候选:无在册条目支撑,且秘宝/奇物件数少(秘宝九件目录),图鉴价值密度低 |
|
|
||||||
| 丙 | 奖励格图鉴(空置柜台)并入期三 | 该柜台已随配比预设挂起冻结(2026-10-05 用户令),本提纲只登记不激活——重启须用户另行发令 |
|
|
||||||
|
|
||||||
### P4 · 局内是否给生涯入口 / 生涯内是否放「去营地」跳转
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令)**:案甲——均不放:局内只看暂停层,生涯纯只读零跳转。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲(推荐) | 均不放:局内只看暂停层(卡③),生涯只在主菜单;生涯内纯只读零跳转 | 分工矩阵最干净;暂停层与生涯零重叠 |
|
|
||||||
| 乙 | 生涯内放「去营地」跳转 | 看完进度顺手去买动线短;代价是只读面开始出现操作引导,边界稀释 |
|
|
||||||
| 丙 | 局内暂停层放「生涯」入口 | 淘汰候选:违反 P-C7(冒险中不给数据回看)——历史回看经局内可达等于绕回退役前 |
|
|
||||||
|
|
||||||
### P5 · settlement_review_overlay.gd 遗留文件处置(实装期执行,本批只裁方向)
|
|
||||||
|
|
||||||
**✅ 裁决(2026-10-06 用户令)**:案甲——期二实装批复活承接(单局明细回看呈现载体,改挂生涯)。
|
|
||||||
|
|
||||||
| 案 | 内容 | 淘汰/保留依据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 甲(推荐) | 期二实装批复活承接(作为单局明细回看的呈现载体,改挂生涯) | 现成件,结算明细的排版逻辑都在;复活成本远低于新画 |
|
|
||||||
| 乙 | 本批随提纲删文件 | 死代码早清;淘汰候选:期二大概率要用,删了再写是浪费;且本批零代码边界禁动 game/ |
|
|
||||||
| 丙 | 永久退役删除,期二新写 | 淘汰候选:同乙的浪费理由;除非期二裁决换新呈现形态 |
|
|
||||||
|
|
||||||
## 9. loop engineering 八件对照(设计批适配自证)
|
|
||||||
|
|
||||||
| # | 八件要求 | 本文对应 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 计划书八节 | §1 目标与完成定义 · §2 现状事实 · §5 设计契约 · §4 范围边界 · §6 任务卡 · §7 验证闸 · §10 异常分级 · §8 白名单与裁点 |
|
|
||||||
| 2 | T0 开工 | §6 T0(worktree + 事实复核;设计批无基线跑测) |
|
|
||||||
| 3 | 循环骨架 | §6 各卡(设计批三卡串行) |
|
|
||||||
| 4 | 轻闸 | §7(纯文档批零测试,符合两入口铁规) |
|
|
||||||
| 5 | 重闸 | §7(doc 三闸默认不跑,用户点名则对基线零新增) |
|
|
||||||
| 6 | 人闸 | §6 T2(设计提纲评审 = 本批唯一人闸) |
|
|
||||||
| 7 | 异常分级 | §10 |
|
|
||||||
| 8 | 收口五步 | §6 T2(active.md 快照 + 工作日志 + 06 状态行 + roadmap 迭代 17 行随批登记) |
|
|
||||||
|
|
||||||
## 10. 异常分级
|
|
||||||
|
|
||||||
| 级 | 触发 | 处置 |
|
|
||||||
|---|---|---|
|
|
||||||
| **L1** | 提纲某节读者测试不过 | 当节重写(可读性第一纪律),不重试机制 |
|
|
||||||
| **L2** | 事实复核发现 §2 与代码不符 | 修订事实表并记录;若差异动摇提纲结构 → L3 |
|
|
||||||
| **L3** | 🔴 R1–R4 任一破 / 发现 06 条目与代码实态冲突(如回看退役实际未落码)/ 裁点框架本身不成立 | 停机呈报差异,等用户发令 |
|
|
||||||
|
|
||||||
## 11. 现状留痕(供执行会话读序)
|
|
||||||
|
|
||||||
```
|
|
||||||
1. design/gdd/06-待办清单.md「『生涯』界面——冒险中数据回看的唯一承接处」条(P-C7 裁决原文指路)
|
|
||||||
2. design/research/UI重设计原型v2落码-差异对照与改动计划-2026-10-04.md §七(P-C7 裁决记录出处)
|
|
||||||
3. game/presentation/views/battle_end_overlay.gd / battle_log_view.gd / settlement_review_overlay.gd(退役与遗留实态)
|
|
||||||
4. game/core/meta_progression.gd settle_adventure + save_manager.gd:39-40/:316/:325-338(跨局数据面与 recent_summaries 现役面考证点)
|
|
||||||
5. design/gdd/06-待办清单.md「敌方技能图鉴 / 学习呈现」条(图鉴承接的在册先约)
|
|
||||||
```
|
|
||||||
@@ -1,95 +0,0 @@
|
|||||||
# 任务书:种子随机化与调试浮窗升级批(迭代 18 卡⑦)· v1.2 定稿(裁点全裁)
|
|
||||||
|
|
||||||
> 起草 2026-10-07。开工门=**U0 用户发令**(✅ 裁点全裁 2026-10-07 用户令全按推荐:P1-P6 甲,见 §7)。现状考证系起草时点代码实态(file:line 在册),T0 须自行复核。
|
|
||||||
> 裁决沿革:三裁点已于 2026-10-07 用户令全裁落 roadmap 卡⑦(首次冒险固定/测试调试接口显式指定/种子不进玩家 UI);调试浮窗目标态同令落文(独立最高层浮窗+DS_DEBUG 默认打开+当局数据只读区块),本批据此起草。**本项修订迭代 15 卡① P3 甲「仅开始菜单可开·对局不可达」裁决**。
|
|
||||||
|
|
||||||
## 1. 目标与完成定义
|
|
||||||
|
|
||||||
### 1.1 一句话目标
|
|
||||||
|
|
||||||
玩家界面开新冒险的主种子从硬编码 42 改为随机生成(首局与显式指定除外),调试浮窗升级为全局可开、DS_DEBUG 默认打开、带当局数据只读区块(含本局种子=种子唯一查看位)。
|
|
||||||
|
|
||||||
### 1.2 完成定义(出口判定清单)
|
|
||||||
|
|
||||||
1. 非首次冒险、调试种子框为空时,开新冒险的主种子为随机值;同一种子下行为逐位不变(确定性复放断言不破)。
|
|
||||||
2. 首次冒险维持固定种子(P5 裁值);调试种子框输入合法整数时全场景按输入值(含首局)。
|
|
||||||
3. 断点续玩逐位不变(存档 master_seed 回填路径零改动)。
|
|
||||||
4. DS_DEBUG=1 时调试浮窗启动即打开(P3 裁值),入口对局中可开(P2 裁案),遮挡语义按 P1 裁案。
|
|
||||||
5. 浮窗新增当局数据只读区块(P4 裁字段集),数值与只读访问器逐项一致。
|
|
||||||
6. ui_tune_probe 断言面换代全绿;冒烟全量绿;MC 零跑(静态论证:单种子内行为零变更)。
|
|
||||||
|
|
||||||
## 2. 现状事实(代码级考证,T0 须自行复核)
|
|
||||||
|
|
||||||
- **F1 种子源**:`main.gd:1210-1213 _seed_value()`——调试种子框 `seed_edit.text` 为合法整数则用之,**否则硬编码返回 42**。唯一消费点不变(main.gd:332 注记在册)。
|
|
||||||
- **F2 消费面五路**:新冒险 `main.gd:482`;断点续玩(main.gd:447 系会话日志读 `bp.get("master_seed",0)`,真正种子回填在 core resume_adventure 内——存档已载种子,续玩天然不受影响);调试开局行 `main.gd:612`;会话上下文 `main.gd:1174`(诊断转储以重算 `_seed_value()` 冒充本局种子=既有病灶,随 T3 改向);**调试对局第五路=main.gd:188 将 `_seed_value` 以 Callable 注入 DebugSession**(debug_session.gd:49/:79 `rng.new_adventure(_seed_value.call())`——两层调试对局实际吃种子框)。
|
|
||||||
- **F3 RNG 架构**:`rng_service.gd` 统一随机流,`new_adventure(seed)` 重置全局计数器,封闭流十签(`PURPOSE_TAGS` rng_service.gd:18,encounter 在册);冒烟/测试全链显式传种子(smoke_all.gd:38 `set_master_seed(42)`、:451 seed 7、breakpoint_resume_test 1234/4321)——**测试面零改动**。
|
|
||||||
- **F4 局摘要已携带 master_seed**(adventure_runner.gd:1010-1021 `_settle` 字段集)。
|
|
||||||
- **F5 调试浮窗现状六点**:①入口=开始覆盖层角标(main.gd:292-293,DS_DEBUG=1 才点亮);②门禁=main.gd:1186-1191 `if not _start_overlay.visible: return`(仅开始菜单可开);③形态=modal_shell Dialog(debug_overlay.gd:128,640 宽);④登记=ModalStack 末位(main.gd:340-342 十一层之末——**登记册内已是 z 最高位**);⑤初始 `visible=false`(debug_overlay.gd:40,非默认开);⑥五区块(胜利演出/种子输入〔默认文本 "42" debug_overlay.gd:166〕/数值滑条/批量模拟/两层调试入口)**无当局数据面**。
|
|
||||||
- **F6 遮挡机制**:modal_stack.gd:9-34——登记序=树序=z 遮挡序;`open(earlier)` 隐藏其后各层、关闭恢复(:17-26)。debug_overlay 登记末位⇒他层打开时浮窗暂隐、他层关闭时恢复(:20-25 循环对末位成员生效)。
|
|
||||||
- **F7 对局发起随开随收**:`main.gd:607-609 _start_debug_levels()` 关浮窗后开局;对局期不可再开=门禁(F5②)所致。
|
|
||||||
- **F8 探针现状**:ui_tune_probe.gd 八段断言——①打开可见性+树序在开始层后(:26-34)②滑条联动 ③应用 ④重置 ⑤批量模拟 N=10 ⑥关闭 ⑦hero 表运行期不可变 ⑧单次加成生效(经 `_start_adventure_from_menu()` 真实路径 :75;isolate_save 后首局态)。①的树序/门禁断言与 ⑤ 的开局路径均受本批改动影响,**探针须换代**。
|
|
||||||
|
|
||||||
## 3. 范围边界(🔴 不可越界)
|
|
||||||
|
|
||||||
1. 玩家可见 UI(非调试面)零改动——种子不进任何玩家 UI。
|
|
||||||
2. 核心层零触碰:rng_service/冒险 runner/存档 schema 零 diff;随机种子生成本身**不走 rng_service**(不污染封闭流)。
|
|
||||||
3. 测试面零改动:冒烟/单元/探针显式传种子路径一字不动(ui_tune_probe 换代除外——那是本批 T4)。
|
|
||||||
4. 调试浮窗为纯表现+组合根接线:零核心写,当局数据只读(17卡③只读巡检纪律沿用)。
|
|
||||||
5. 存量缺陷不搭车:五区块既有交互(滑条/模拟)语义零变更。
|
|
||||||
|
|
||||||
## 4. 设计契约(🔴 触碰 = L3 停机)
|
|
||||||
|
|
||||||
1. **C1 种子三分**:玩家入口随机(非首局)/首局固定(P5 裁值=42)/显式指定全场景优先;调试对局同口径(P6 甲——经 Callable 第五路与玩家同规则,空框随机、要固定填框)。三者判定只许落在 `_seed_value()` 单点,禁止第二处读种子框。
|
|
||||||
2. **C2 存档契约零变更**:master_seed 字段既有语义不动;断点续玩逐位复放断言保持绿。
|
|
||||||
3. **C3 确定性**:同种子行为逐位不变;随机化不引入 rng_service 消费点(首选用引擎全局熵 `randi()`——Godot 4 启动自播种子〔headless 同〕;rng_service.gd:5「禁止 randomize()/自建 RNG」系玩法代码纪律,组合根建种子属豁免面——不进玩法 RNG 消费);冒烟固定种子面断言值零漂移。
|
|
||||||
4. **C4 浮窗只读**:当局数据区块全部经只读访问器(adventure/settlement/MetaProgression 现役访问器面),零直读内部状态、零写通路;断言沿用 17卡③「白名单外零连接」巡检形制。
|
|
||||||
5. **C5 探针缝**:一切断言走真实 UI 路径(按钮信号/组合根入口——ADR-0004);探针禁碰真实存档(isolate_save 纪律)。
|
|
||||||
6. **C6 门禁单口**:`_show_debug_overlay()` 改造后仍是唯一开窗入口(门禁逻辑改在函数内,不散落调用面)。
|
|
||||||
|
|
||||||
## 5. 任务卡(T0-T5,逐卡一 loop 轮次)
|
|
||||||
|
|
||||||
- **T0 开工三查**(≈0.25d):worktree+基线复读(冒烟/探针/doc 三闸/MC 对拍基准)+git status 归属核对+§2 逐条复核(重点:modal 登记列表现值、DS_DEBUG 门控点)。
|
|
||||||
- **T1 种子随机化**(≈0.25d):`_seed_value()` 默认分支按 C1 三分落码(首局判定=`save_manager.is_first_adventure_done()` 现役布尔);种子框默认文本 "42" 改空+占位提示(代拍板白名单);断言=冒烟既有固定种子断言逐位绿+探针新增(非首局连抽 4 次不全等 42;首局=42;显式输入优先)。**三 UI 探针种子钉死(审计 🔴)**:ui_input_probe:33-34/ui_layout_probe:17-18/ui_click_probe:156-164 均经 `_start_adventure_from_menu()`+isolate_save 隐式吃 `_seed_value()`——探针种子框文本钉死显式值,禁依赖默认分支;ui_click_probe:134-137 DS_DEBUG 角标断言随 P2 迁移同批改向。
|
|
||||||
- **T2 浮窗骨架升级**(≈0.5d):按 P1 裁案落遮挡语义(甲=登记制零改 / 乙=独立置顶层);按 P2 裁案落对局中入口(甲=角标迁宿主〔战斗屏+地图屏,17卡③形制〕/乙=热键/丙=两者);按 P3 裁案落默认打开;门禁 C6 单口改向;随开随收逻辑改向(对局中开窗不再视为开局前置)。**输入锁死防护(审计 🔴)**:开冒险路径显式关浮窗+`_input_locked()` 与暂停角标置灰判据改 `has_open_excluding(debug_overlay)`(main.gd:384-387/:994-995;modal_stack.gd:28-33 关闭复活机制在「默认开」下=每次关他层复活浮窗→has_open=true→**棋盘输入锁死**,不改必停机)——P1 甲乙两案同需此改造;对局中批量模拟按钮禁用(长程异步模拟与活跃结算并存的态不开放)。
|
|
||||||
- **T3 当局数据只读区块**(≈0.5d):P4 裁字段集落区块(数据源=只读访问器;**种子字段=adventure.master_seed 现值,非 `_seed_value()` 重算**〔main.gd:497 访问器在册;:1174 同病随批改向〕;刷新=开窗时+模态开合信号驱动);零动效(零 tween/AnimationPlayer——17卡③契约沿用)。
|
|
||||||
- **T4 探针换代**(≈0.25d):ui_tune_probe ①段断言改向(树序新基准+对局中可开+DS_DEBUG 默认开)+当局数据块值对断言+⑧段回归确认;冒烟投影断言随迁。
|
|
||||||
- **T5 收口**(≈0.25d):重闸(轻闸全量+doc 三闸+熵增)+出口报告(provisional 追认单+人闸目检清单=DS_DEBUG 实机全流程)+台账。
|
|
||||||
|
|
||||||
**估时合计 T0-T5 ≈ 2.0d**(roadmap 原注 1d 系骨架口径,本表含探针换代与收口勘误至 2.0d)。
|
|
||||||
|
|
||||||
## 6. 验证闸
|
|
||||||
|
|
||||||
- 轻闸(每轮):run_smoke 全量+ui_input_probe;触 presentation 加跑 ui_click_probe+ui_layout_probe。
|
|
||||||
- 专闸:ui_tune_probe 换代全绿(本批核心回归面)。
|
|
||||||
- 重闸(批末):轻闸全量+doc 三闸(零新增)+熵增闸+**MC 零跑**(纯呈现+种子生成不改单种子内行为——静态论证随出口报告;如需复放锚,固定种子冒烟即对拍面)。
|
|
||||||
- 人闸:DS_DEBUG=1 实机目检(默认开→对局中开合→当局数据与实际局况一致→浮窗对局发起链路)。
|
|
||||||
|
|
||||||
## 7. 裁点(✅ 已全裁——2026-10-07 用户令全按推荐)
|
|
||||||
|
|
||||||
- **P1 遮挡语义(✅ 裁甲)**:**甲=维持 ModalStack 登记制**(他模态开时浮窗暂隐、关后自动恢复——零新机制,与登记序末位现状一致〔F6〕,推荐;代价=输入锁/角标判据换排除式,甲乙同需,见 T2);乙=脱离登记册独立置顶(真「永远最高层」——他模态之上仍悬浮;代价=模态输入锁判据 has_open 需开例外口+遮挡纪律破例面,风险高于收益)。
|
|
||||||
- **P2 对局中入口形态(✅ 裁甲)**:**甲=角标迁宿主**(战斗屏 HUD+关卡地图屏各一枚,17卡③暂停角标同形制,DS_DEBUG 门控——先例同构,推荐);乙=全局热键(零 UI 占位,但手柄/触屏不友好);丙=甲+乙并存。
|
|
||||||
- **P3 默认打开范围(✅ 裁甲)**:**甲=应用启动即开**(DS_DEBUG=1 会话常开,手动可关、角标可再开——推荐);乙=仅主菜单默认开、对局期收起。
|
|
||||||
- **P4 当局数据字段集(✅ 裁甲)**:**甲=六项**(种子/关卡/节点/HP/GP/钥石——只读访问器全现成,推荐);乙=甲+调试深字段(RNG 计数器/池余量等);丙=仅种子(最小面)。
|
|
||||||
- **P5 首局固定种子值(✅ 裁甲)**:**甲=沿用 42**(零迁移,推荐——首局模板 0 既有教学态即在此种子下标定);乙=换专用教学常量(语义更清,断言随改)。
|
|
||||||
|
|
||||||
- **P6 调试对局种子口径(审计新增,✅ 裁甲)**:甲=与玩家同一口径(调试对局空框随全局规则——非首局随机,要固定随手填框);乙=调试对局强制显式种子。裁决=甲(2026-10-07 用户令)。
|
|
||||||
|
|
||||||
**代拍板白名单**:断言文案/区块标题文案/种子框占位提示词/角标落点像素级微调(不新增形制)。
|
|
||||||
|
|
||||||
## 8. 异常分级
|
|
||||||
|
|
||||||
L1 自救(一次重试)→ L2 记录继续(连续 3 次同红灯升级)→ L3 停机写报告等用户。停机点:S1=T0 复核发现 modal 登记序/遮挡语义与本任务书 §2F6 不符(探针断言基准换代须重议);S1+=对局中开浮窗后棋盘输入锁死或暂停角标置灰(T2 防护失守即停);S2=随机化导致既有冒烟固定种子断言红灯(确定性破约,禁继续)。
|
|
||||||
|
|
||||||
## 9. loop engineering 八件对照(合规自证)
|
|
||||||
|
|
||||||
计划书(本任务书+开工时升 loop 计划书或径以本文件为计划书随批追认)/T0 三查(§5 T0)/循环骨架(逐卡一轮)/轻闸(§6)/重闸(§6)/人闸(§6 实机目检)/异常分级(§8)/收口五步(快照+台账+roadmap 状态+stage 不变+闸序列留痕)。
|
|
||||||
|
|
||||||
## 10. 现状留痕(执行会话读序)
|
|
||||||
|
|
||||||
先读本文件 §2 全部 file:line → roadmap 迭代 18 卡⑦行 → design/qa/iter17-pause-exit-report-2026-10-06.md(badge 工厂件/只读巡检先例)→ main.gd 调试浮窗节(:1184-1200)→ debug_overlay.gd 全文(259 行)→ ui_tune_probe.gd 全文(94 行)。卡⑦三裁与浮窗目标态的裁决沿革在 roadmap.md 迭代 18 卡⑦行+active.md 台账节 382/384 条。
|
|
||||||
|
|
||||||
## 11. 版本记录
|
|
||||||
|
|
||||||
- v1.0(2026-10-07):起草。三裁点已裁(roadmap 卡⑦在册),本任务书新增实装级裁点 P1-P5 待裁;估时勘误 roadmap 1d→2.0d(含探针换代与收口)。
|
|
||||||
- v1.2(2026-10-07):裁点全裁定稿——用户令全按推荐(P1 遮挡=甲登记制/P2 入口=甲角标迁宿主/P3 默认开=甲启动即开/P4 字段=甲六项/P5 首局=甲沿用 42/P6 调试对局口径=甲同玩家规则);开工门收敛为 U0。
|
|
||||||
- v1.1(2026-10-07):subagent 对抗审计修订(总判=小修后可开工)——🔴×2 修复:输入锁死防护入 T2(默认开×遮挡复活×has_open 组合必锁棋盘)+三 UI 探针隐式吃种子钉死入 T1;🟡×4:消费面补第五路(DebugSession Callable)/当局数据种子源改 master_seed 访问器(:1174 同病随批改)/对局中禁模拟口径/§10 指路订正;🟢:C3 randi 豁免口径/P1 代价归属修正/S1+ 停机点扩充。
|
|
||||||
@@ -1,350 +0,0 @@
|
|||||||
# 任务书:秘宝代码词族对齐批(v1.0 定稿,待发令开工)
|
|
||||||
|
|
||||||
> 成文 2026-10-05。**性质**:纯代码标识符改名 + 玩家可见文案清零,**零行为变更、零数值变更、零 schema 契约变更**。
|
|
||||||
> 设计权威 = [秘宝 GDD](../gdd/systems/排雷循环/秘宝.md) v0.9 版本行(2026-10-05 用户拍板「魔法道具」→「秘宝」);[registry `aux_items` 条目](../registry/entities.yaml) 仍是条目键事实源(**本批不改条目键**,见 §4 范围边界)。
|
|
||||||
> 归属迭代:**迭代 15 · 需求③**(迭代 15 现有 ① 调试功能整合批〔已落籍〕+ ② 奇物词族对齐与渠道分离批〔T0-T8 在册〕)。
|
|
||||||
> 满足 loop engineering 八件(见 §9 逐条对照);本任务书 = 计划书八节的前五节落地,§6 任务卡为执行单元。
|
|
||||||
> **用户三项拍板(2026-10-05)**:①编入迭代 15(追加)②**全族彻底改(含数据表)** ③**断点存档键一律保留**。
|
|
||||||
|
|
||||||
> 🔴 **撞批警示(与同迭代 ② 奇物批)**:本批与 `任务书-奇物词族对齐与渠道分离批-2026-10-05.md` 撞同一批文件(`core/level_runner.gd` · `data/tables/adventure.tres` · `core/adventure_runner.gd` 断点区),且**双方都动断点存档键**(本批禁改、②批内有"存档键正式迁移"待裁点)。
|
|
||||||
> **2026-10-05 07:29 复核:② 奇物批已收口落库**(合并提交 `c571af2`,"merge: 奇物概念收口与词族对齐(迭代15②号卡·文档与数据层)")——**并行撞批风险已解除,本批可独立开工**。但 ② 已改动 `adventure_runner.gd`(46 行) / `config_db.gd` / `level_runner.gd`(10 行) / `adventure_table.gd`(113 行) / `adventure.tres`(42 行) / `relic_table.gd` / `shop_table.gd`,**本批事实表须按 T0 重新复核**(已做首轮复核,见 §2 F1/F3 修订)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 目标与完成定义
|
|
||||||
|
|
||||||
### 1.1 一句话目标
|
|
||||||
|
|
||||||
把代码层 `aux_*` / `AuxItem*` 词族(**358 处 / 35 文件**)整体换词为「秘宝」词族,使**代码词根、中文规范名、玩家可见文案三者对齐**,消除「魔法道具」进入玩家视野的残余通道。
|
|
||||||
|
|
||||||
### 1.2 完成定义(出口判定清单——五条全满足才算本批落籍)
|
|
||||||
|
|
||||||
| # | 判定项 | 量化标准 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 词族换尽 | `game/` 下 `aux_*`/`AuxItem*`/`AUX_ITEM*`/`"aux_item"` 出现处**仅剩 §4.0 三类例外**(敌方语汇 / 道具工坊 / §4.1 十二处存档键 + 冒烟夹具),其余全数换词。**裁决后无待定欠债——全改** |
|
|
||||||
| 2 | 玩家可见清零 | `grep -rn "魔法道具" game/` **零命中**(2026-10-05 收口后复核现基线 = **5 处玩家可见字符串**,见 §3 组 A;其余 60+ 命中均为注释,由组 D 清) |
|
|
||||||
| 3 | 重闸全绿 | 冒烟 **747/0**(现基线,迭代 15 前实测值)· 十一探针全绿 · MC 逐位对拍**零漂移** · doc 三闸**对基线零新增** · 熵增闸 PASS |
|
|
||||||
| 4 | 人闸完成 | 目检清单过 + 代拍板追认清单过 + §8 白名单外无代拍板 |
|
|
||||||
| 5 | 收口五步 | active.md 快照 / 台账条目 / roadmap 里程碑行 / stage.txt(如变)/ 闸序列留痕 |
|
|
||||||
|
|
||||||
> ⚠️ **基线纪律**:迭代 15 调试整合批已把冒烟推进到 **747 项**。本批开工前必须重测基线取实际值(本任务书不写死数字,T0 复核后回填),**禁止用本文档的历史数字当闸门**。
|
|
||||||
>
|
|
||||||
> ✅ **T0 回填(2026-10-05 实测,主区 3c4291d 实跑)**:冒烟基线 = **755 项 / 0 失败**(§1.2 的 747 与判式批出口 750 均系②批前旧数,作废);run_all = 15 套件 14 绿,唯一红 = `reward_overlay_test.gd`(**② 奇物批遗留基线红**,与本批无关,对照口径=零新增);词族实数 = **364 处 / 36 文件**(§2 F1 的 358 处系②批前口径);`treasure_*` 词根全仓零冲突;§4.1 六存档键引用普查 HEAD↔批末逐键零差异。
|
|
||||||
|
|
||||||
## 2. 现状事实(代码级,T0 须自行复核)
|
|
||||||
|
|
||||||
| # | 事实 | 读数 |
|
|
||||||
|---|---|---|
|
|
||||||
| F1 | `aux_*` / `AuxItem*` 词族规模 | **358 处 / 36 文件**(`game/` 下 `.gd` + `.tres`)——⚠️ **2026-10-05 收口后复核:文件数 35→36**(`presentation/views/hero_info_panel_view.gd`,奇物批带入引用),处数不变 |
|
|
||||||
| F2 | 重灾文件 | `core/adventure_runner.gd`(79) · `core/level_runner.gd`(27) · `presentation/bonus_interact_controller.gd`(19) · `core/battle_orchestrator.gd`(18) · `smoke/smoke_all.gd`(14) · `presentation/aux_interact_controller.gd`(14) · `core/config_db.gd`(14) · `presentation/main.gd`(13) |
|
|
||||||
| F3 | 玩家可见「魔法道具」文案 | **⚠️ 2026-10-05 收口后复核 = 5 处**(初查 3 处,漏 2 处 UI 文案):`battle_narrator.gd:117` · `battle_narrator.gd:118` · `bonus_interact_controller.gd:76` · **`hero_info_panel_view.gd:56`**(`UiKit.label("魔法道具", 16, true)` 槽位标题)· **`hero_info_panel_view.gd:178`**(`slot.tooltip_text = "魔法道具槽(空)"` 悬停提示) |
|
|
||||||
| F4 | 🔴 **`battle_narrator.gd` 同屏两义共现** | 117-118 行输出"魔法道具" ‖ 同文件 **139 行** `arch_names := {"magic": "魔法", ...}` = 敌方伤害语汇——同一 narrator 内两义并存,是歧义的**唯一真实暴露点** |
|
|
||||||
| F5 | 断点存档键(**禁改**) | `bonus_aux_carry` · `aux_detail` · `aux_cleared` · `aux_cleared_last` · `aux_items`(断点快照数组)· `attunement_charges` —— **2026-10-05 收口后复核 = 34 处引用**(初查 28 处,增量来自②奇物批带入的调用点;**②未迁移任何键名**,diff 核实无键名改动) |
|
|
||||||
| F6 | 🔴 **冲突面:`aux_items` 一名两义** | 既是**断点存档键**(`adventure_runner.gd:976` 写入 / `:951-953` 读取,跨局持久,改名即破档)**又是** registry 条目键与 ConfigDB 持有变量名(`config_db.gd:50` `var aux_items: AuxItemTable`)——**同一字符串,语义不同层** |
|
|
||||||
| F7 | 🔴 **冲突面:`"aux_item"` 是加载期校验域串** | `reward_table.gd:15` `CELL_TYPES` 封闭枚举含 `"aux_item"`(十型之一)· `:16` `AUX_ITEM_TYPE` 常量 · `smoke_all.gd:3932-3933` **断言 `CELL_TYPES.size() == 10` 且 `has("aux_item")`** —— 改此串 = 改 schema 契约 + 改 .tres 数据行 + 改冒烟断言,**三重连锁** |
|
|
||||||
| F8 | Godot 类名/文件名 | `AuxItemTable`(schema) · `aux_items.gd` · `aux_item_table.gd` · `aux_interact_controller.gd` —— 改名须同步 `.uid` + `.tscn` 引用(迭代 14.5 有实证先例:主区跑前须 `--import` 重刷类名缓存) |
|
|
||||||
| F9 | 中文注释层现状 | 大量注释仍写"魔法道具"(如 `aux_items.gd:2` `aux_items_test.gd:2` `bonus_interact_controller.gd:92` `config_db.gd:27`)——**注释属本批清理对象**(与 §1.2 判定 2 同批) |
|
|
||||||
| F10 | 文档侧已完成 | 2026-10-05 消歧更名批(`430419c` + `06e94b7`):26 个设计文档已改「秘宝」,`秘宝.md` 已重命名,registry 30 处已同步,owner 路径已指向新文件。**本批只做代码侧,文档侧除 §3 链接修复外不动** |
|
|
||||||
|
|
||||||
## 3. 改动清单(分六组,逐组独立可提交)
|
|
||||||
|
|
||||||
### 组 A · 玩家可见文案(**P0,最高优先**)
|
|
||||||
|
|
||||||
| 文件:行 | 现状 | 改为 |
|
|
||||||
|---|---|---|
|
|
||||||
| `presentation/battle_narrator.gd:117` | `return "魔法道具\n%s" % aux_line` | `return "秘宝\n%s" % aux_line` |
|
|
||||||
| `presentation/battle_narrator.gd:118` | `return "魔法道具\n随机获得一件"` | `return "秘宝\n随机获得一件"` |
|
|
||||||
| `presentation/bonus_interact_controller.gd:76` | `toast.show_toast("上关剩余 %d 件魔法道具已随关卡结束清空" ...)` | `"上关剩余 %d 件秘宝已随关卡结束清空"` |
|
|
||||||
| **`presentation/views/hero_info_panel_view.gd:56`** | `col.add_child(UiKit.label("魔法道具", 16, true))` | `UiKit.label("秘宝", 16, true)` |
|
|
||||||
| **`presentation/views/hero_info_panel_view.gd:178`** | `slot.tooltip_text = "魔法道具槽(空)"` | `slot.tooltip_text = "秘宝槽(空)"` |
|
|
||||||
|
|
||||||
> **后两处是 2026-10-05 收口后补入的**(初查仅命中 3 处,漏了 UI 标签与 tooltip 两处——`grep "魔法道具"` 命中 60+ 行但绝大多数是注释,**这两处是真实玩家可见字符串**)。
|
|
||||||
> **组 A 独立成一个提交**——它是本批唯一有玩家可见效果的部分,先行落地上游台账可独立验收。**F4 两义共现随本组一并消解**(117-118 改后同屏不再出现两个"魔法")。
|
|
||||||
> **目检提示**:组 A 落地后须实机确认 C 区槽位标题与悬停提示——这是玩家唯一会看到的「秘宝」二字。
|
|
||||||
|
|
||||||
### 组 B · schema 与数据表文件(类名 + 文件名 + @export)
|
|
||||||
|
|
||||||
| 现状 | 改为 | 注意 |
|
|
||||||
|---|---|---|
|
|
||||||
| `data/schemas/aux_item_table.gd` | `treasure_item_table.gd` | 类名 `AuxItemTable` → `TreasureItemTable`;`@export` 字段名与 `item_id` 主键**不动** |
|
|
||||||
| `data/tables/aux_items.tres` | `treasure_items.tres` | 表内行键(`item_id` 值 / `effect_kinds` / 效果字段)**全不动**;仅文件名与 `ext_resource` 路径改 |
|
|
||||||
| `core/aux_items.gd` | `core/treasure_items.gd` | 类名 `AuxItems` → `TreasureItems`;`inventory_count` / `snapshot_inventory` / `validate_use` 等**方法名不动** |
|
|
||||||
| `core/config_db.gd:50` | `var aux_items: AuxItemTable` | `var treasure_items: TreasureItemTable`(**变量名改**;⚠️ 与 F6 存档键冲突面相关,见 §7 C2) |
|
|
||||||
| `core/config_db.gd:27` | `"aux_items": "aux_items.tres"` | `"treasure_items": "treasure_items.tres"`(注册表键) |
|
|
||||||
| `core/config_db.gd` 访问器 | `aux_item_row()` / `aux_items_transitional_rows()` 等 | 统一换词;**调用方全量跟改**(`battle_orchestrator` / `level_runner` / `meta_progression` / 三个 presentation / `attunement`) |
|
|
||||||
|
|
||||||
> **`.uid` / `.tscn` 同步强制**:改名后须 `godot --headless --path game --import` 重刷类名缓存(迭代 14.5 实证:主区跑前不刷会命中旧类名缓存),并在 T0 记录导入前后 `.uid` 清单差异。
|
|
||||||
|
|
||||||
### 组 C · 文档链接修复(**仅链接,不改称谓**)
|
|
||||||
|
|
||||||
历史文档正文按换名先例原样保留旧名,但**指向旧文件名的活链接必须修**(重命名已使其失效):
|
|
||||||
|
|
||||||
| 文件:行 | 链接 | 修法 |
|
|
||||||
|---|---|---|
|
|
||||||
| `research/proposal-magic-item-attunement-2026-09-22.md:6` | 已于 `430419c` 修好 | ✅ 免 |
|
|
||||||
| `research/调研-全局作用域变异设计空间-2026-10-04.md:322` | 已于 `430419c` 修好 | ✅ 免 |
|
|
||||||
| `design/dev/architecture/architecture.md:113` | `../../design/gdd/...` 断链 | **既有欠债**(多一层 `design/`),本批顺带修(`../../gdd/...`) |
|
|
||||||
| `design/dev/architecture/architecture.md:196` | 同上 | 同上 |
|
|
||||||
|
|
||||||
> 该断链**改动前即存在**(已用 `git show HEAD:` 复现验证),本批顺带清偿,不单独计工时。
|
|
||||||
|
|
||||||
### 组 D · 中文注释层(**与组 A 同批**)
|
|
||||||
|
|
||||||
`game/` 下所有注释中的「魔法道具」→「秘宝」。**注意区分不得改的两类**:
|
|
||||||
|
|
||||||
| 词 | 处置 |
|
|
||||||
|---|---|
|
|
||||||
| `魔法矢` / `魔法反噬` / `魔法族` / `魔法护甲` / `arch_names["magic"]` | 🔴 **敌方伤害/护甲语汇,一律不动** |
|
|
||||||
| 格面类型微光色带描述(紫/穿刺蓝/…) | 不动(属 `magic` 格面家族) |
|
|
||||||
| 「魔法道具」 | ✅ 改「秘宝」 |
|
|
||||||
| 「道具工坊」 | 不动(营地柜台名,玩家可见面现名,本批不改) |
|
|
||||||
|
|
||||||
### 组 E · 测试文件名与内部变量(**最后做**)
|
|
||||||
|
|
||||||
| 类别 | 文件/标识符 | 改法 |
|
|
||||||
|---|---|---|
|
|
||||||
| 测试文件 | `tests/unit/core/aux_items_test.gd` · `tests/unit/data_config/aux_target_violation_test.gd` · `tests/unit/data_config/reward_dangling_aux_test.gd` | 文件名 + 内部 `AuxItemsScript` preload 路径 + 套件名(`tests/run_all.gd:35` 登记行同步) |
|
|
||||||
| 内部变量 | `_last_aux_cleared` · `_bonus_aux_carry` · `_last_draw_aux` · `aux_inventory` · `aux_items`(局部) | ✅ 换词(**非存档键的**局部变量;存档键见 §4) |
|
|
||||||
| 🔴 冒烟断言 | `smoke_all.gd:3932-3933` `CELL_TYPES.size() == 10 and has("aux_item")` | **见 §7 C1 裁决**——本批不动断言值即需同步改 .tres 与 enum,两条路由 C1 定 |
|
|
||||||
|
|
||||||
### 组 F · 分派语汇与域串(**C1 裁决后新增,全改**)
|
|
||||||
|
|
||||||
`"aux_item"` 字面量 **16 处**,全部代码内闭合、**无存档依赖**,一律换词(建议 `treasure_item`;若与局内「奇物」`curio_*` 词族冲突,改 `treasure_*` 全族统一前缀):
|
|
||||||
|
|
||||||
| 文件 | 行 | 处置 |
|
|
||||||
|---|---|---|
|
|
||||||
| `core/adventure_runner.gd` | 231 / 366 / 490 / 510 / 556 / 583 / 601 / 672 | ✅ 8 处分派与兑付字面量全改(同源,须一次改齐) |
|
|
||||||
| `data/schemas/reward_table.gd` | 15 `CELL_TYPES` / 16 `AUX_ITEM_TYPE` / 50 校验分支 | ✅ 改(枚举项 + 常量名 + 分支引用三者同改) |
|
|
||||||
| `presentation/battle_narrator.gd` | 115 | ✅ 改(叙述分派键) |
|
|
||||||
| `presentation/bonus_interact_controller.gd` | 127 | ✅ 改(呈现分派键) |
|
|
||||||
| `smoke/smoke_all.gd` | 562 / 3847 / **3932-3933** | ✅ 改(**断言 `has("aux_item")` 与 `size()==10` 必须同步,否则冒烟红**) |
|
|
||||||
| `tests/unit/data_config/reward_dangling_aux_test.gd` | 25 | ✅ 改(夹具注入串 `"cell_type": "aux_item"`) |
|
|
||||||
|
|
||||||
> ⚠️ **`reward.tres` 无需改**(已核:零 `aux_item` 数据行,池种随迭代 11 T7 退役)。
|
|
||||||
> ⚠️ **枚举项改名后 `CELL_TYPES.size() == 10` 仍为 10**(改的是字面量不是项数),但 `has()` 的参数须同步——这是本组唯一的机械陷阱。
|
|
||||||
> 🔴 **`smoke_all.gd:4473/4495` 的 `"aux_items"` 夹具键禁改**(见 §4.2)——它们构造的是断点存档快照,改了夹具就与真存档脱节。
|
|
||||||
|
|
||||||
## 4. 范围边界(🔴 不可越界)
|
|
||||||
|
|
||||||
### 4.0 ✅ 改名总原则(用户 2026-10-05 拍板:**全改,保证一致性**)
|
|
||||||
|
|
||||||
> **凡属本作"秘宝"概念对象的标识符——无论是文件、类、变量、方法、枚举值、字符串字面量,还是注册表键——全部统一换词。**
|
|
||||||
> 判据一句话:**该标识符是否指向"秘宝"这个概念?** 是 → 改;不是(敌方语汇 / 通用词 / 存档历史键)→ 不改。
|
|
||||||
|
|
||||||
**三类例外(唯一不改项,穷举)**:
|
|
||||||
|
|
||||||
| 例外 | 具体 | 理由 |
|
|
||||||
|---|---|---|
|
|
||||||
| ① **敌方语汇** | `magic` 格面族 · `magic_bolt` / `magic_recoil` · `ward 魔法护甲` · `arch_names["magic"]` | 属敌方伤害/护甲语汇,与秘宝无概念关联 |
|
|
||||||
| ② **玩家可见既有柜台名** | 「道具工坊」 | 营地三柜台之一,玩家已习惯,本批不动(与秘宝是父子关系,非同义) |
|
|
||||||
| ③ **跨局存档历史键** | 见 §4.2 白名单 | 改则破档 |
|
|
||||||
|
|
||||||
### 4.1 禁改:跨局存档键(用户 2026-10-05 明令,破档即玩家进度丢失)
|
|
||||||
|
|
||||||
**判据**:凡**写入断点存档 / 跨局持久化**的键名,一律不改。
|
|
||||||
|
|
||||||
| 键名 | 写入点 | 性质 |
|
|
||||||
|---|---|---|
|
|
||||||
| `bonus_aux_carry` | `adventure_runner.gd:982` | 断点:道具件跨关携带 |
|
|
||||||
| `aux_items` | `adventure_runner.gd:976` 写 / `:844` 读 | 断点:持有集快照 |
|
|
||||||
| `aux_detail` | `adventure_runner.gd:880/890/538/635/654/665/227/228/685` 读写 | 断点:三选一掷定详情 |
|
|
||||||
| `aux_cleared` | `adventure_runner.gd:887` 写 / `:864` 读 / `level_runner.gd:523` 写 / `bonus_interact_controller.gd:75` 读 | 断点:关末清空计数 |
|
|
||||||
| `aux_cleared_last` | `adventure_runner.gd:908` 写 | 断点:末关清空反馈 |
|
|
||||||
| `attunement_charges` | `adventure_runner.gd:970` 写 / `:251` 读 | 断点:同调主动件充能余量 |
|
|
||||||
|
|
||||||
> **上述键在代码旁必须加显式禁改注释**:`// 🔴 存档键(历史名 aux_*,与中文名「秘宝」对应),禁改——改则破档`
|
|
||||||
> **配套动作**:对应的**内部变量**(`_bonus_aux_carry` / `_last_draw_aux` / `aux_inventory` / `_last_aux_cleared`)**照改不误**——变量名不落盘,禁改的只是键名字面量。这正是解 C2 一名两义的关键。
|
|
||||||
|
|
||||||
### 4.2 `aux_items` 三处同名用法(**C2 裁决落地**)
|
|
||||||
|
|
||||||
同一个字面 `aux_items` 在三处语义不同,**处置各异**:
|
|
||||||
|
|
||||||
| 位置 | 实际语义 | 处置 |
|
|
||||||
|---|---|---|
|
|
||||||
| `config_db.gd:27` `var aux_items` = `AuxItemTable` | **注册表键 + 持有变量** | ✅ **改**(`treasure_items` / `TreasureItemTable`)——纯进程内,加载期从 `loaded.get()` 取,不落盘 |
|
|
||||||
| `config_db.gd:27` `"aux_items": "aux_items.tres"` | **表注册项** | ✅ **改**(ConfigDB 内部映射,两端同改即闭合) |
|
|
||||||
| `adventure_runner.gd:976/844` `"aux_items"` | **断点存档键** | 🔴 **禁改** + 加注释标记 |
|
|
||||||
| `smoke_all.gd:4473/4495` `"aux_items": [...]` | **冒烟夹具(构造断点快照)** | 🔴 **禁改**——它构造的就是存档键,改了则夹具与真存档脱节、测试失去意义 |
|
|
||||||
|
|
||||||
### 4.3 ✅ C1 裁决落地:`"aux_item"` 域串**照改**(连锁面已实测收窄)
|
|
||||||
|
|
||||||
**用户 2026-10-05 拍板全改。实测复核后连锁面比预估小得多**:
|
|
||||||
|
|
||||||
| 原判断 | 实测 | 结论 |
|
|
||||||
|---|---|---|
|
|
||||||
| 要改 `reward.tres` 数据行 | **`reward.tres` 已零 `aux_item` 数据行**(aux_item 池种随迭代 11 第①批 T7 退役) | ✅ **无需改数据文件** |
|
|
||||||
| 要改冒烟断言 | `smoke_all.gd:3932-3933` 断言 `size()==10 and has("aux_item")` | ⚠️ 断言**必须同步改**(枚举与断言同源) |
|
|
||||||
| schema 契约 | `reward_table.gd:15/16/50` | ✅ 改(枚举 + 常量 + 校验分支) |
|
|
||||||
|
|
||||||
**全仓 `"aux_item"` 字面量 16 处(全部代码内闭合,**无跨局存档依赖**)**:
|
|
||||||
|
|
||||||
| 文件:行 | 用途 |
|
|
||||||
|---|---|
|
|
||||||
| `adventure_runner.gd:231/366/490/510/556/583/601/672` | 分派与兑付(8 处,同一分派语汇) |
|
|
||||||
| `reward_table.gd:15` `CELL_TYPES` · `:16` `AUX_ITEM_TYPE` | 枚举与常量 |
|
|
||||||
| `battle_narrator.gd:115` | 叙述分派键 |
|
|
||||||
| `bonus_interact_controller.gd:127` | 呈现分派键 |
|
|
||||||
| `smoke_all.gd:562/3847/3932` | 冒烟断言与夹具判断 |
|
|
||||||
| `reward_dangling_aux_test.gd:25` | 夹具注入串 |
|
|
||||||
|
|
||||||
> ✅ **这 16 处无一是存档键**(对比 §4.1 的 12 处)——**可彻底改,无兼容风险**。
|
|
||||||
> ⚠️ 改后 `smoke_all.gd:3932` 断言须同步为新字面量,否则冒烟红。
|
|
||||||
|
|
||||||
### 4.4 其他禁改项
|
|
||||||
|
|
||||||
### 本批**不做**(硬边界,违反即 L3 停机)
|
|
||||||
|
|
||||||
| 禁项 | 理由 |
|
|
||||||
|---|---|
|
|
||||||
| **断点存档键一律保留** | 用户 2026-10-05 明令。`bonus_aux_carry` / `aux_detail` / `aux_cleared` / `aux_cleared_last` / `aux_items`(断点数组)/ `attunement_charges` **一字不改**——破档即玩家进度丢失 |
|
|
||||||
| **registry 条目键 `aux_items` 不改** | 属数据契约键(`design/registry/entities.yaml`),与 06 更名批的"条目键沿用"口径一致。⚠️ 注意与 §4.2 的 ConfigDB 表注册键区分:**registry 条目键禁改,ConfigDB 表注册键可改** |
|
|
||||||
| **数值零触碰** | 本批纯改名。`magnitude` / `charge_n` / `w` / `t` / 权重档位**一律不动** |
|
|
||||||
| **行为零变更** | 不得借改名之机重构逻辑、调参数、改流程 |
|
|
||||||
| **`magic` 格面族与 `ward` 护甲** | 敌方语汇,与本批无关(组 D 已锁) |
|
|
||||||
| **Godot 类名/文件名改动须同步 `.uid`+`.tscn`** | 漏改 = 类名缓存错乱(迭代 14.5 实证坑) |
|
|
||||||
| **不改 `game/README.md`** | 文档侧已由 `430419c` 收口,本批零文档债 |
|
|
||||||
|
|
||||||
### 降级面(可接受的**部分完成**形态)
|
|
||||||
|
|
||||||
若 T1 之后发现全族换词的连锁面超出预期,**允许降级**,但必须按序:
|
|
||||||
|
|
||||||
| 级 | 降级形态 | 代价 |
|
|
||||||
|---|---|---|
|
|
||||||
| G1 | 组 A + D 完成,组 B/C/E 留 backlog | 玩家可见歧义已消,代码词根仍不一致——**可接受终态** |
|
|
||||||
| G2 | A+B+C+D 完成,组 E 留 backlog | 测试文件名/局部变量暂旧——**可接受终态**(测试仍跑得通) |
|
|
||||||
| G3 | 仅组 A 完成 | 玩家歧义消但代码债留存——**下限,不可再降** |
|
|
||||||
|
|
||||||
> **降级总则**:一轮一降级;连续两卡降级 = L2 记录;🔴 契约项不可降级(存档键 / 数值 / schema 契约)。
|
|
||||||
|
|
||||||
## 5. 设计契约(🔴 触碰 = L3 停机)
|
|
||||||
|
|
||||||
| # | 契约 | 验证方式 |
|
|
||||||
|---|---|---|
|
|
||||||
| 🔴 R1 | **存档兼容零破坏** | 断点续玩回归:存 → 退 → 读 → 持有集/充能余量/候选详情逐项一致;`attunement_charges` 充能账本不丢 |
|
|
||||||
| 🔴 R2 | **数值零漂移** | MC 逐位对拍(`adventure_monte_carlo.gd` 锚种子)输出**逐位相同**;冒烟数值断言全绿 |
|
|
||||||
| 🔴 R3 | **schema 契约面零变更** | 加载期校验行为一致:格面十型封闭校验、悬空引用校验、跨表校验(`config_db_cross_validator.gd`)错误消息语义不变(**文案可变、行为不可变**) |
|
|
||||||
| 🔴 R4 | **零 schema 字段更名** | `item_id` 主键 / `effect_kinds` 值域 / `form` 值域 / `slot_cost` 全部原样 |
|
|
||||||
| 🔴 R5 | **零 await 保持** | 核心层(`core/`)不因改名引入 await/异步——破坏可回放性(MC 逐位对拍的前提) |
|
|
||||||
|
|
||||||
> R1–R5 任一破 = **L3 停机写报告**,不自行修复后继续。
|
|
||||||
|
|
||||||
## 6. 任务卡(逐卡一个 loop 轮次)
|
|
||||||
|
|
||||||
| 卡 | 内容 | 估时 | 轻闸 | 完成判据 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| **T0** | 开工:worktree + 基线复读(冒烟实际值/十一探针/MC 基准/三闸)+ `git status` 归属核对 + 记录 `.uid` 清单 + **回填 §1.2 基线数字** | 0.5d | 全量冒烟基线 | 基线数字回填进本文档 §1.2 且全绿 |
|
|
||||||
| **T1** | **组 A + D**(玩家可见文案 + 中文注释层) | 0.5d | 冒烟 + `grep "魔法道具" game/` 零命中 | 组 D 分色表零误改(`魔法矢`/`魔法护甲` 未被误改) |
|
|
||||||
| **T2** | **组 C**(链接修复,含 architecture.md 既有断债清偿) | 0.25d | doc 三闸 | `doc_link` 对基线**零新增** |
|
|
||||||
| **T3** | **组 F**(`"aux_item"` 分派语汇与域串 16 处,含冒烟断言同步) | 0.5d | 冒烟 + MC 对拍 | `smoke_all.gd:3932` 断言同步后绿;`reward.tres` 零改动 |
|
|
||||||
| **T4** | **组 B-1**(schema 文件名 + 类名 + `.uid` 同步 + `--import` 重刷) | 0.75d | 冒烟 + `--import` 后类名解析 | `TreasureItemTable` 加载零报错 |
|
|
||||||
| **T5** | **组 B-2**(ConfigDB 持有变量 + 表注册键 + 访问器 + 全部调用方跟改) | 0.75d | 冒烟 + MC 对拍 | 冒烟数值断言全绿;**§4.2 四处同名用法按表分置** |
|
|
||||||
| **T6** | **组 E-1**(测试文件名 + preload + run_all 登记) | 0.5d | 冒烟(十五套件全跑) | `run_all` 无 fixture 缺失 |
|
|
||||||
| **T7** | **组 E-2**(内部变量换词,**存档键字面量除外**) | 0.5d | 冒烟 + MC 对拍 | MC 逐位零漂移;§4.1 十二处存档键**逐字未变**(diff 专项核) |
|
|
||||||
| **T8** | **重闸**:全量轻闸 + doc 三闸 + 熵增闸 + MC 逐位对拍 | 0.5d | 重闸全绿 | §1.2 判定 3 五项全绿 |
|
|
||||||
| **T9** | **人闸**:目检清单(含 C 区槽位标题与 tooltip 实机确认)+ 代拍板追认 | 0.5d | 目检过 | §1.2 判定 4 |
|
|
||||||
| **T10** | **收口五步** | 0.25d | — | §1.2 判定 5 |
|
|
||||||
|
|
||||||
> 估时合计 ≈ **5.5 日**,**超 roadmap 软盒 3 日上限**。知情预挂:T8 后按 L3 呈报切点,不擅切(沿迭代 9 先例)。或执行中触发 G1/G2 降级可压至 3 日内。
|
|
||||||
>
|
|
||||||
> **T7 的存档键零变更核验方法**:`git diff` 后逐条比对 §4.1 表中 12 处键名字面量,须**逐字节一致**——这是本批最容易破档的一卡,须专项核。
|
|
||||||
|
|
||||||
## 7. 冲突面裁决记录(C1/C2/C3 **已全部关闭**)
|
|
||||||
|
|
||||||
### C1 · `"aux_item"` 格面域串改不改? ✅ **已裁决:全改(用户 2026-10-05)**
|
|
||||||
|
|
||||||
**原事实**:`"aux_item"` 是加载期校验域串,改动 = 三重连锁(enum + .tres 数据行 + 冒烟断言)。
|
|
||||||
|
|
||||||
**裁决后实测收窄(关键)**:
|
|
||||||
|
|
||||||
| 原判断 | 实测结果 |
|
|
||||||
|---|---|
|
|
||||||
| 需改 `reward.tres` 数据行 | **`reward.tres` 已零 `aux_item` 数据行**(池种随迭代 11 T7 退役)→ **该连锁项消失** |
|
|
||||||
| 需改冒烟断言 | `smoke_all.gd:3932-3933` 断言必须同步改(**唯一保留的连锁项**) |
|
|
||||||
| schema 契约 | `reward_table.gd:15/16/50` 照改 |
|
|
||||||
|
|
||||||
**结论**:全仓 `"aux_item"` 字面量 **16 处,全部代码内闭合,无跨局存档依赖** → **可彻底改,无兼容风险**。落地细则见 §4.3。
|
|
||||||
|
|
||||||
### C2 · `aux_items` 一名两义拆不拆? ✅ **已裁决:拆(用户 2026-10-05)**
|
|
||||||
|
|
||||||
**裁决**:内部持有变量与注册表键 ✅ 全改;断点存档键 🔴 保留 + 加禁改注释;冒烟夹具 🔴 保留(它构造的就是存档键)。
|
|
||||||
|
|
||||||
**解法核心**:**"键名禁改"与"变量名禁改"是两回事**——禁改的只是落盘的键名字面量,进程内的变量名/注册表键照改不误。这就把一处危险同名拆成了「两个可改 + 两个不可改」的清晰边界。
|
|
||||||
|
|
||||||
| 位置 | 语义 | 处置 |
|
|
||||||
|---|---|---|
|
|
||||||
| `config_db.gd:27` `var aux_items` / `:50` 持有变量 | 进程内持有 | ✅ 改 `treasure_items` |
|
|
||||||
| `config_db.gd:27` `"aux_items": "aux_items.tres"` | 表注册项 | ✅ 改(两端同改闭合) |
|
|
||||||
| `adventure_runner.gd:976/844` `"aux_items"` | 断点存档键 | 🔴 禁改 + 注释 |
|
|
||||||
| `smoke_all.gd:4473/4495` `"aux_items"` | 冒烟夹具 | 🔴 禁改(改则夹具与真存档脱节) |
|
|
||||||
|
|
||||||
落地细则见 §4.2。
|
|
||||||
|
|
||||||
### C3 · 与同迭代 ② 奇物批的串行次序(✅ **2026-10-05 已消解**)
|
|
||||||
|
|
||||||
**原事实冲突**:两批同属迭代 15、**撞同一批文件**、**双方都动断点存档键**。
|
|
||||||
|
|
||||||
**✅ 消解结论(2026-10-05 07:29 复核)**:② 奇物批**已收口落库**(合并提交 `c571af2`),**并行撞批风险解除**。本批现为迭代 15 唯一在途需求,可独立开工。
|
|
||||||
|
|
||||||
**⚠️ 残留义务**:
|
|
||||||
1. **T0 须重新取基线**——② 已把冒烟推进(判式换代批 T5 出口读数 **750/0**、奇物批又动数据层),§1.2 的 747 是②之前的旧数,**禁止沿用**。
|
|
||||||
2. **T0 须复核 §2 全部事实表**——② 改动面覆盖 `adventure_runner.gd` / `config_db.gd` / `level_runner.gd` / `adventure_table.gd` / `adventure.tres` / `relic_table.gd` / `shop_table.gd`,其中 `adventure_runner.gd` 是本批 F2 第一重灾文件(79 处)。
|
|
||||||
3. **② 的"存档键正式迁移"待裁点状态须查清**——若 ② 已迁移了 `bonus_aux_carry` / `aux_items` 等键名,本批 §4 的禁改清单须同步更新(**这是本批唯一仍需向用户确认的残留项**)。
|
|
||||||
|
|
||||||
## 8. 代拍板白名单
|
|
||||||
|
|
||||||
**白名单内**(执行会话可直接决断,commit 记录):
|
|
||||||
- 内部变量/方法/文件/类的具体英文词形选择(`treasure_items` / `secret_treasure` 等,须语义贴"秘宝")
|
|
||||||
- 新旧标识符在同一文件不同位置的**注释措辞**
|
|
||||||
- 改名顺序与提交粒度(§3 五组可再细分)
|
|
||||||
|
|
||||||
**白名单外**(须回报用户):
|
|
||||||
- 任何 🔴 R1–R5 契约的取舍
|
|
||||||
- 降级级别选择(G1/G2/G3)
|
|
||||||
- 冒烟基线数字与本文档不符时的取用
|
|
||||||
- **§4.1 存档键白名单的任何增补**(增补即意味着扩大破档面)
|
|
||||||
- **§4.0 三类例外的边界质疑**(例如某个 `magic_` 标识符到底属敌方语汇还是秘宝概念)
|
|
||||||
|
|
||||||
> ✅ **C1 / C2 已于 2026-10-05 裁决关闭**(全改保一致),不再是待裁点。
|
|
||||||
|
|
||||||
## 9. loop engineering 八件对照(合规自证)
|
|
||||||
|
|
||||||
| # | 八件要求 | 本文对应 | 状态 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 计划书八节(目标完成定义/现状事实/设计契约/范围边界/任务卡/验证闸/异常分级/代拍板白名单) | §1 目标与完成定义 · §2 现状事实 · §5 设计契约 · §4 范围边界 · §6 任务卡 · §6/§7 验证闸 · §10 异常分级 · §8 白名单 | ✅ 八节齐 |
|
|
||||||
| 2 | T0 开工(worktree + 基线复读 + 归属核对) | §6 T0 卡 | ✅ |
|
|
||||||
| 3 | 循环骨架(一轮一卡:读卡→对事实源→实装→轻闸→提交→台账) | §6 各卡 · 纪律见下 | ✅ |
|
|
||||||
| 4 | 轻闸(冒烟 + 十一探针;触 presentation 加 click/layout) | §6 各卡轻闸列 | ✅ 组 A/B-2 触 presentation → 须加 `ui_click_probe` + `ui_layout_probe` |
|
|
||||||
| 5 | 重闸(批末:全量轻闸 + doc 三闸 + 熵增闸 + MC 逐位对拍) | §6 T7 · §1.2 判定 3 | ✅ 本批涉 core → **MC 逐位对拍必跑** |
|
|
||||||
| 6 | 人闸(目检 + 代拍板追认 + 异步终审) | §6 T8 | ✅ 本批无样张类 → 异步终审触点不适用(可省) |
|
|
||||||
| 7 | 异常分级(L1 自救 / L2 记录 / L3 停机) | §10 | ✅ |
|
|
||||||
| 8 | 收口五步 | §6 T9 | ✅ |
|
|
||||||
|
|
||||||
**执行纪律补充**(承 roadmap §执行纪律):
|
|
||||||
- **一批一 loop**:本批单独成 loop,不与他批并行;单 worktree 多点提交一次合并
|
|
||||||
- **worktree 铁律**:开工必建 worktree(`../g-plan2-iter15-code-align`),轮内禁开第二个
|
|
||||||
- **测试执行两入口铁规**:改标识符后**无法靠文档层自证**,冒烟必须在 T1 之后每轮实跑
|
|
||||||
- **归零式改名慎独**:358 处机械替换,**必须分组 + 分轮**,禁止一次性全仓 sed(否则断链与误改不可定位)
|
|
||||||
- **提交粒度**:A/D 一组、B-1、B-2、E-1、E-2 各一提交,便于逐段回滚定位
|
|
||||||
|
|
||||||
## 10. 异常分级
|
|
||||||
|
|
||||||
| 级 | 触发 | 处置 |
|
|
||||||
|---|---|---|
|
|
||||||
| **L1** | 单点改名后冒烟红 | 一次重试(自查字面漏改/`.uid` 未刷);仍红 → L2 |
|
|
||||||
| **L2** | 同类错误连续 3 轮 / 连锁面超预期 | 记录进本任务书 §4 降级面 + 台账,降级继续(不阻断全批) |
|
|
||||||
| **L3** | 任一 🔴 R1–R5 破 / C1·C2 久决不下 / 需动数值或 schema 契约 | **停机写报告**(列事实+影响面+方案对比),等用户发令;**不自行决断** |
|
|
||||||
|
|
||||||
## 11. 现状留痕(供执行会话读序)
|
|
||||||
|
|
||||||
```
|
|
||||||
1. 本文 §7 冲突面 C1/C2/C3 → 若用户未拍板,T0 后即停机呈报
|
|
||||||
2. design/gdd/systems/排雷循环/秘宝.md v0.9(设计权威·换名理由与代码欠债登记)
|
|
||||||
3. design/registry/entities.yaml(条目键 aux_items = 数据契约键,禁改依据)
|
|
||||||
4. design/gdd/06-待办清单.md(「命名统一后续」条目 = 本批的 06 登记源)
|
|
||||||
5. design/research/任务书-奇物词族对齐与渠道分离批-2026-10-05.md(同迭代 ②·撞批对象,见 §7 C3)
|
|
||||||
6. .zcode/inflight-active-backup-*.md 台账 352(迭代 15 需求① 落籍态)
|
|
||||||
```
|
|
||||||
|
|
||||||
> **注 1**:`entities.yaml` 无法被标准 YAML 解析器读取(项目把 `**粗体**` 当键名用,改动前即如此)——校验结构须用正则提取键集合比对,**勿用 `yaml.safe_load`**。
|
|
||||||
>
|
|
||||||
> **注 2**:局内「奇物」概念文档 = [奇物.md](../gdd/systems/冒险循环/奇物.md) v2.7(7 轮裁定定稿,2026-10-05 落文),任务书 = `任务书-奇物词族对齐与渠道分离批-2026-10-05.md`。**本批与它分属两套词族**(`aux_*` = 局外秘宝 / `feature_*`·`relic_*`·`bonus_*` = 局内奇物),但撞同一批文件——见 §7 C3。
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
# 任务书——自动化验收补齐批(迭代 19)
|
|
||||||
|
|
||||||
> 版本 v1.1(2026-10-07 成文;同日**拷打轮一 Q1-Q8 全裁「按推荐」后升版**,裁决记录见 §九;低争议组五项一并落文)。
|
|
||||||
> 立项依据=2026-10-07 全迭代两阶段验收盘点报告(仅自动化口径:功能性验收=单元/冒烟/行为探针/MC 对拍;展示性验收=结构/对比度/布局/截图/像素机检,**不含人工目检**)。
|
|
||||||
> 开工门=U0(用户发令)。**待裁点 0 项**——P1-P5 与拷打轮一 Q1-Q8 均已裁(§九)。
|
|
||||||
|
|
||||||
## 一、立项背景(盘点结论摘要)
|
|
||||||
|
|
||||||
全迭代自动化验收的缺口集中在三处(此处只收 A 级+C 级):
|
|
||||||
|
|
||||||
1. **渲染像素闸长期缺位**:`tools/probe_gate.sh` 头注释明文「shot_probe 禁入本闸(headless 无渲染面)……归真人目检」——窗口化截图族(shot_probe/fx_shot_probe/board_shot_probe)从未进任何自动闸;迭代 15③ 起五件渲染闸(golden_compare/shot_probe/fx_probe/ui_layout_probe/board_shot)明示屏蔽,补跑挂 07⑮ 至今无履行记录。`tools/golden_compare.py` 工具在库但**黄金图基线零在库**。
|
|
||||||
2. **探针游离在闸外**:ui_probe / ui_tune_probe / t17_defer_probe / fx_probe 四件带断言探针不在 probe_gate/run_all/CI 任何自动链,只能手动敲命令——回归无哨兵。
|
|
||||||
3. **账务漂移**:tests/README.md 写「752+ 断言/十五套件」,实测 smoke_all.gd 静态 746 处 check、run_all.gd manifest 17 条;冒烟「834/0」系运行时计数——两种口径无对照说明。tests/integration/ 仅 README 无实体。
|
|
||||||
|
|
||||||
**迭代 15③ 挂账「渲染五闸」逐件归宿对账**(本批后五闸全部有归属,07⑮ 机器补跑半随之核销):
|
|
||||||
|
|
||||||
| 五闸成员 | 本批归宿 |
|
|
||||||
|---|---|
|
|
||||||
| shot_probe | T1 render_gate(扩屏后)→ shot_checker A-D 判定 |
|
|
||||||
| golden_compare | T2 基线入库+接线进 render_gate |
|
|
||||||
| board_shot | T1 render_gate 取证段(Q7:失败=红)+ T2 golden 判定 |
|
|
||||||
| fx_probe | T3 probe_gate `--full`(headless 逻辑层断言,非渲染件) |
|
|
||||||
| ui_layout_probe | T5 补 1280/1920 两档最小断言(ui_struct_probe 实查仅当前视口单档跑——分辨率维度无重复建设) |
|
|
||||||
|
|
||||||
**明示不进本批**:B4 提灯死接口(验收已在位=ui_input_probe case⑮,缺的是载体道具本体,归 Alpha 信息件重定批);B5 旧界面呈现断言回补、B6 CI 预接线——移交另会话讨论,裁后若立项另行编卡。
|
|
||||||
|
|
||||||
## 二、现状考证(file:line 级,开工复核)
|
|
||||||
|
|
||||||
| 事实 | 出处 |
|
|
||||||
|---|---|
|
|
||||||
| probe_gate 默认段=input/struct/contrast 三探针,`--click` 可选加跑;头注释含「shot_probe 禁入本闸……归真人目检」纪律句 | tools/probe_gate.sh:5-9 |
|
|
||||||
| 四探针实跑现状全绿(2026-10-07 本机 headless 实测):ui_probe 17.4s / ui_tune_probe 49.6s / t17_defer_probe 63.0s / fx_probe 21.9s,合计≈152s | game/smoke/ 对应 .tscn 入口 |
|
|
||||||
| shot_probe 现仅四屏(menu/camp/level/battle),输出缺省 `user://qa-screens`,最小自检=存在且非零字节,像素断言归 shot_checker;headless 有 fail-fast 护栏 | game/smoke/shot_probe.gd:2-27 |
|
|
||||||
| **board_shot_probe 截整屏视口**(`get_viewport().get_texture()`),非棋盘区裁剪——golden 对比前须加裁剪步骤 | game/smoke/board_shot_probe.gd:55-57 |
|
|
||||||
| shot_checker.py 断言面 A-D 机检可判(A 屏级骨架/B 文字对比度 ≥4.5:1/C 明度三档带/D 文字禁压纹理;E 焦点预算=语义面归人闸),取样坐标源=shot_meta.json | tools/shot_checker.py 头注 |
|
|
||||||
| golden_compare.py 在库、黄金图基线零在库;.gitignore 仅挡 `artwork/`,game/tests/golden/ 入库无阻 | tools/golden_compare.py;.gitignore:49-50 |
|
|
||||||
| ui_struct_probe 仅当前视口单档跑,无 1920 证据——ui_layout 两档断言有真增量 | game/smoke/ui_struct_probe.gd:430 |
|
|
||||||
| config_fatal_probe 与 run_all 已登记 config_db_fatal_oob_test 断言面重复;**且 2026-10-02 代码质量修复批已呈报其退役待裁(未裁,本批还账)** | game/smoke/config_fatal_probe.gd;active.md 台账 312 |
|
|
||||||
| **数据配置.md:205 引用 config_fatal_probe 为 Fatal 语义验证载体**——退役必须连带改指路句 | design/gdd/systems/表现与支撑/数据配置.md:205 |
|
|
||||||
| damage_probe A1 红灯=改前既有(诊断件非验收件);**M4 数值批 roadmap 行引用其修复义务——出闸留盘不影响该引用** | design/qa/m4iter14-mineq-exit-report §四.7 |
|
|
||||||
| registry 无测试闸登记处(仅 architecture/entities 两 yaml)——收口账面只落 roadmap/07 | design/registry/ 实查 |
|
|
||||||
| 主区在飞脏文件 15+(含 roadmap.md 迭代 19/20 改行)未提交 | git status 2026-10-07 |
|
|
||||||
|
|
||||||
## 三、范围
|
|
||||||
|
|
||||||
**收**:A 级全量(渲染闸自动化+扩屏+黄金图基线入库+四探针收编+重闸纪律扩容+退役件处置)+C 级账务(README 漂移/integration 目录/诊断件标注)。
|
|
||||||
**不收**:B4/B5/B6(§一);游戏运行时代码任何改动;轻闸默认段断言面任何删减;1920 档独立跑(Q4 裁:单档 1280,留注记)。
|
|
||||||
|
|
||||||
## 四、任务卡
|
|
||||||
|
|
||||||
- **T0(0.25d)**:建 worktree `iter19-verify`;基线复读记档(轻闸+run_all+四探针时长复测);git status 归属核对(在飞脏文件只标旗不碰)。
|
|
||||||
- **T1(1.25d)渲染闸脚本**:新增 `tools/render_gate.sh`——窗口化自动闸,骨架复用 probe_gate(timeout 守卫/孤儿 Godot 预清后清/退出码闸/残留清点)。段组成:①**shot_probe 扩屏后**(Q3:新纳生涯页/暂停层/设置面;商店房可达性考证后定,不可达则注记留 B 批)四屏+N 屏截图 → shot_checker.py A-D 断言自动判定;②fx_shot_probe 三时刻抓帧、board_shot_probe L1-L3 棋盘抓帧——**取证段失败语义=闸红**(Q7:超时/零字节/文件缺失任一即 FAIL,不做像素判定但「渲染真实发生」必须成立);③基准档 1280 单档(Q4),1920 留注记;④过程截图落 `user://qa-screens` 用后即弃(Q2),**任何过程 PNG 禁入 git**。
|
|
||||||
- **T2(0.75d)黄金图基线入库**:board_shot L1-L3 整屏帧先按 **shot_meta.json 取样坐标裁剪棋盘区**(禁硬编码像素)再生成基线入 `game/tests/golden/`(测试资产入库先例,.gitignore 已核不挡);golden_compare.py 接线进 render_gate(容差 provisional);**基线生成前置条件=素材齐盘,素材缺位即 L3 停机(S3)——基线严禁锚在字形回退态**(Q5);基线换代权限=呈现类改动批内 agent 自行换代+提交说明强制写明触发原因,数值/逻辑批禁碰(Q6)。
|
|
||||||
- **T3(0.5d)探针收编+纪律改写+重闸扩容**:probe_gate.sh 增 `--full` 段=ui_probe+ui_tune_probe+t17_defer_probe+fx_probe(轻闸默认段不变);头注释「渲染闸归真人目检」纪律句删除改写为新三闸口径;**CLAUDE.md loop 规范 §5 重闸定义正式扩容**(Q1):重闸=轻闸+doc 三闸+熵增+MC+**render_gate+probe_gate --full**——不写入规范=新闸继续游离。
|
|
||||||
- **T4(0.25d)退役件**:config_fatal_probe 删除(.gd+.uid)+**连带改数据配置.md:205 指路句改指 config_db_fatal_oob_test**(2026-10-02 代码质量批呈报退役的还账;active.md 台账历史记录不动);damage_probe 保留在盘、头注标注「诊断工具·非验收件」,出一切闸清单(M4 行引用其修复义务不受影响);全仓引用清查(CLAUDE.md/tests README/smoke README)。
|
|
||||||
- **T5(0.5d)零断言件与账务**:ui_layout_probe 补 1280/1920 两档最小断言(四区矩形不越界/不重叠;有真增量见 §二);skill_rhythm_probe/board_stat_probe 头注标注「分析工具·非验收件」;tests/README.md 漂移修正(套件数 17、断言双口径说明)+**integration 空壳目录删除、章程句并入 tests/README**(Q8,吸收即死)。
|
|
||||||
- **T6(0.5d)收口**:重闸全绿(轻闸+`--full`+render_gate+run_all+doc 三闸/熵增)+主区合并复跑(含 render_gate)+出口报告+账面两处:07⑮ 机器补跑半核销注记(目检半仍归用户不销号)、roadmap 迭代 19 行换代(registry 无闸登记处,已实证,无登记动作)。
|
|
||||||
|
|
||||||
## 五、🔴 设计契约(违反=返工;触碰=L3 停机)
|
|
||||||
|
|
||||||
1. **游戏运行时代码零 diff**:本批只许动 tools/、game/tests/、game/smoke/ 探针件与文档。探针断言暴露的存量呈现缺陷一律登记不修(S1),修复另立项。
|
|
||||||
2. **轻闸默认段零删减**:probe_gate 现行 input/struct/contrast 断言面与 `--click` 语义原样保留;`--full` 只增不改。
|
|
||||||
3. **golden 基线边界**:只入 `game/tests/golden/`;**基线严禁在素材缺位(字形回退态)下生成**(S3);基线换代须提交说明写明触发原因;数值/逻辑类批禁止动基线。
|
|
||||||
4. **过程产物即弃**:golden 基线之外的一切截图 PNG 落临时区用后即弃、禁入 git(Q2)。
|
|
||||||
5. **在飞避让**:主区 15+ 脏文件(含 roadmap.md)勿碰勿代提交;本批 worktree 隔离,合并 roadmap 撞行按「邻行冲突分支内并入」先例。
|
|
||||||
6. **改纪律落文**:probe_gate 头注释改写与 CLAUDE.md 重闸扩容须在 T3 内同步完成,禁止新旧两套口径并存(Q1)。
|
|
||||||
|
|
||||||
## 六、停机点
|
|
||||||
|
|
||||||
- **S1**:render_gate 首跑若出现存量 FAIL(对比度/明度/骨架任一),逐条呈报全量清单,**登记 06 条目级**,处置权归用户——首跑判定是本批最大不确定性(shot_checker 四类断言从未在现行构建上全量跑过)。
|
|
||||||
- **S2**:golden 逐像素若因字体渲染/平台差异误红,容差调整呈报后定值。
|
|
||||||
- **S3**:T2 生成基线时素材缺位→L3 停机呈报(基线禁锚回退态,Q5)。
|
|
||||||
|
|
||||||
## 七、验收断言清单(本批完成定义)
|
|
||||||
|
|
||||||
1. `tools/render_gate.sh` 存在且退出码闸生效(人为制造一处断言失败可验红;取证段失败同样验红=Q7)。
|
|
||||||
2. `game/tests/golden/` 三张棋盘基线在库(素材齐盘态生成)且 golden_compare 在 render_gate 内自动执行。
|
|
||||||
3. shot_probe 屏清单含生涯页/暂停层/设置面,shot_meta.json 对应取样键齐。
|
|
||||||
4. `probe_gate.sh --full` 四探针全绿且被重闸流程引用;probe_gate 头注释无「归真人目检」残留句;**CLAUDE.md loop §5 含 render_gate 与 --full**(Q1)。
|
|
||||||
5. config_fatal_probe 不存在;数据配置.md:205 指路句改指 config_db_fatal_oob_test;damage_probe 头注含「非验收件」;引用零残留。
|
|
||||||
6. tests/integration/ 目录不存在,章程句在 tests/README.md(Q8)。
|
|
||||||
7. tests/README.md 数字与实测一致且含双口径说明。
|
|
||||||
8. 重闸全绿+主区合并复跑全绿(含 render_gate)+出口报告落 design/qa/。
|
|
||||||
|
|
||||||
## 八、代拍板白名单
|
|
||||||
|
|
||||||
golden 容差参数 provisional 定值(S2 呈报后落定);render_gate 实现细节(截图清理执行方式/段序);商店房可达性考证结论(不可达即注记留 B 批);退役件引用句措辞。
|
|
||||||
|
|
||||||
## 九、裁决记录
|
|
||||||
|
|
||||||
**P1-P5(2026-10-07 用户令,v1.0)**:P1 范围=A+C 全收、B4 不收、B5/B6 移交另会话;P2 渲染闸=本机窗口化自动闸;P3 golden=语义断言为主+逐像素限棋盘 L1-L3+基线测试资产入库;P4 编号=迭代 19 本卡、M4 已顺延迭代 20;P5 收编挂重闸+退役两件+零断言三件标注+ui_layout 两档断言;纪律改写授权(「渲染闸归真人目检」=历史偷懒标记,删除)。
|
|
||||||
|
|
||||||
**拷打轮一(2026-10-07 用户令「全按推荐」,v1.1)**:Q1 重闸定义正式扩容写 CLAUDE.md loop §5;Q2 过程截图落临时区用后即弃禁入 git;Q3 shot_probe 扩屏(生涯页/暂停层/设置面+商店考证);Q4 单档 1280、1920 留注记;Q5 运行时素材缺位=SKIP、基线生成素材缺位=L3 停机(基线禁锚回退态);Q6 呈现批 agent 可换代基线+提交说明强制、数值/逻辑批禁碰;Q7 取证段失败=闸红;Q8 integration 删空壳章程并入 tests/README。**低争议组照落**:S1 登记 06 条目级;golden 前置裁剪坐标取 shot_meta.json 禁硬编码;config_fatal_probe 退役连带数据配置.md:205 指路句;五闸归宿对账表入 §一;T6 删 registry 空炮句(实证无闸登记处)。
|
|
||||||
|
|
||||||
## 十、估时与切分
|
|
||||||
|
|
||||||
T0-T6≈4.25d(拷打轮一扩屏+重闸扩容后自 3.75 上调),超软盒 3d 预挂;天然切分点 T2 末——段一 T0-T2(渲染闸,核心)≈2.25d / 段二 T3-T6(收编+退役+账务+收口)≈2d,两段同属一迭代、一次合并。
|
|
||||||
@@ -1,347 +0,0 @@
|
|||||||
# 双层 BD 体系整合定稿:基础 BD 天赋树化 + 局内 BD 流派扩充
|
|
||||||
|
|
||||||
- 日期:2026-10-03
|
|
||||||
- 版本:v3 整合仲裁版(吸收并取代两份并行调研稿:甲稿=proposal-dual-layer-bd-tree-and-archetypes-2026-10-03.md〔已核证实据+代码锚点〕、乙稿=调研-双层BD体系-天赋树化与流派扩充-2026-10-03.md v2〔扩充游戏面+设计工具〕——两原件按吸收即死退役)
|
|
||||||
- 状态:**五裁全落(2026-10-03 用户):R1 甲/R2 乙/R3 乙/R4 甲(信息型永不对冲+复查闸)/R5 甲——任务书已定稿(裁定详情=任务书 §八/§九 9.5),待用户发令升 loop 计划书**;未落地备选内容已自包含迁 06「双层 BD 延期与备选内容总登记」
|
|
||||||
- 仲裁原则:**事实冲突以带来源核证为准**(哈迪斯行解锁等三处乙稿不准确处已修正,见 1.1 注记);**结构分歧不擅自定案,标 R1-R5 交用户裁**(本稿正文按推荐案落文);数值全 provisional,只锁机制形态与交互关系
|
|
||||||
- 红线(违者提案无效):①扫雷推理保持胜利主因 ②流派件全部局内随机获取、局外树只放全局规则件、两层不代位 ③流派表达经「扫雷决策→自动结算」、零战斗期新动词 ④数值不承诺
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 0. 结论速览
|
|
||||||
|
|
||||||
| # | 结论 | 属性 |
|
|
||||||
|---|------|------|
|
|
||||||
| A1 | 三旧体系收敛「**一树双币**(GP 买深度/钥石开门与规则/里程碑=第三成本)**三脉一脊**(主干脊柱 row-gating+锻造/钥石/同调三脉)**+彩蛋节点 ≤3**+装配区」——树形态三案中按推荐融合案落文(**R1**) | 方案(R1) |
|
|
||||||
| A2 | 分化感=累积为基、**互斥与预算两语言并用**:互斥 A/B 节点只放规则面、营地免费切换、MC 验两侧差 <~3pp;预算容量(哈迪斯 2 悟性式)为扩容后备;**否决阿卡那式「第二套构筑系统」**(局内 BD 已承担构筑职能);同调装配=预组规则包入口(土豆兄弟映射);彩蛋节点(哈迪斯 2 觉醒式)≤3 进树 | 判据 |
|
|
||||||
| B1 | 流派差异五类来源中三类为地基:**规则改写 ~50-60%/资源转化 ~25%/风险重定价 ~10-15%**;每流派**强制 ≥1 件挂扫雷结算触发点**(防沦为战斗数值皮肤);动词少是品类常态(Balatro 两动词/土豆兄弟一动词),深度瓶颈在件池规模不在动词数 | 归纳 |
|
|
||||||
| B2 | **九流派=七核心+一实验+一缓议**:魔法/穿刺/普攻/开格/标旗/蓄力/吞噬 + 巢穴经济(喂雷,实验性挂后)+ 淘金(缓议支撑件族);成型判据机制化=**标签+档位激活**(集 2 件档一/4 件档二,散件保底);件设计原则=**正负双修** | 提案 |
|
|
||||||
| B3 | 动词面:**基础锁定挖/旗两枚**,件池深度承担重复感(首批 ~25 件、目标 ≥30 再评估);件派生动词白名单(禁信息类)留二期 | 推荐 |
|
|
||||||
| B4 | 地形变异转「第三资源带」:伤害型(荆棘/岩浆/落石)=可定价风险(**开格前已可见=危险红角标,前提成立**);信息型(藤蔓/烬覆/矿尘)立场两案分歧=**R4**(甲=永不对冲/乙=限价限量清除工具);替代被毙反制道具的方式=通用触发键+局内件+商店保底,非关卡特化件 | 判据(R4) |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 第一部分 任务 A:基础 BD 的天赋树化
|
|
||||||
|
|
||||||
### 1.1 参照系统对照表(十游戏合并版)
|
|
||||||
|
|
||||||
| 游戏 | 节点语言/节点类型 | 货币 | 前置逻辑 | 互斥/约束 | 关键机制实据 |
|
|
||||||
|------|------------------|------|----------|--------|--------------|
|
|
||||||
| 哈迪斯(命运镜) | 12 项才能×红/绿双面=24 版本;每面按 rank 投资(上限 1~40 级) | **镜内即双币**:黑暗=买级(35,365 全满);冥河钥匙=开行(首行免费,其后 1~30 把递增,共 65 把) | 无顺序链,全表可见;「钥匙开行→黑暗买级」两段式 | **红/绿双面互斥**(同槽只激活一面,分开投资) | 绿面解锁=累计收集 ≥300 黑暗触发(不花钥匙);镜前**随时免费切换**;1 钥匙重置全镜返还黑暗;真实 A/B 对:影之存在/炽之存在、不死反抗/顽固反抗、命运权力/命运说服 |
|
|
||||||
| 哈迪斯 2(秘术卡+咒语) | 25 卡 5×5 排布,激活耗悟性(每卡 0~5 点);咒语=纯内容解锁另轨 | 灰烬=解锁卡; Psyche=扩悟性池(10→30);月尘=卡升 Epic | 开局仅 9 卡可见,获得揭示相邻(迷雾式);0 费卡靠**觉醒条件**(如「命运」=激活全部相邻卡) | 无 A/B 对;互斥来自**预算**——全卡合计 56 悟性 >池上限 30,**永远无法全激活** | 6 套预设配装;强度(阿卡那)与解锁(咒语)分用两套货币界面,双轨不混;1→2 代演进=「槽位双面」→「预算+迷雾揭示+条件门」 |
|
|
||||||
| 死亡细胞(收集者) | 四页签:通用/变异/武器/技能;节点语义异质——蓝图=内容解锁、Forge=品质掉率、变异=局内货架资格 | 细胞(跨局);金币(局内) | 条目间无前置链(wiki 无记载,未核证);Forge **档内有链**:+/++/S 档每 25/150/500 细胞 +5%,须先满上一档 | 无 A/B;**Boss 干细胞=难度门非货币**(更低 BSC 击败终 Boss 获得,试管插拔) | 蓝图=敌掉(10%/1.7%/0.4%/0.03%,每群系每局至多 1 件)+Boss 序列+秘密区域,交蓝图+付细胞入池;BSC 改写:1BSC 新通道+Boss 相位/2BSC 移除血泵+细胞×2/3BSC 道具+1 级/5BSC Malaise+第七关 |
|
|
||||||
| 盗贼遗产(庄园) | 真·混布树 33 节点:数值房(生命/法力/攻击各 75 级)/职业房/功能建筑(铁匠/建筑师/附魔师)/功能节点 | 金币;**全局通胀定价**:每买 1 级全线 +10 金(负重系 +50) | **邻接前置且须买满**:前房完全解锁才开后房(附魔师/建筑师前置 Equip Up;Lich 前置 Haggle;Shinobi 前置 Barbarian 满级) | 无互斥;分化来自通胀与购买顺序 | 符文 11 种=**仙女宝箱(探索挑战)找到**后附魔师处购买(175→9,625,共 269,500);死亡金币=Charon 收走全部,庄园 Haggle 每级 −10% 过路费(5 级上限留 50%)——「铁匠铺本身是节点」=系统解锁可当节点 |
|
|
||||||
| 吸血鬼幸存者 | 局外无树三语言:PowerUp 商店(24 种数值件 1~10 级)/成就(内容)/遗物(规则改写=开启子系统);**进化链在局内**(武器满级+特定被动→进化形态——双持有前置的局内样本) | 金币 | PowerUp 无前置;定价加性:单级价=初始价×(1+已购级数)+全局费 floor(20×1.1^总级数) | 无互斥;一键全额退款;满级件可禁用不退款 | 遗物例:Randomazzo 开局内 Arcana/Gracia's Mirror 开反转模式/Seventh Trumpet 开无尽/Atlas Gate 开 Adventures——「遗物=开启子系统」是规则改写件的局外形态 |
|
|
||||||
| 杀戮尖塔 | 无树无货币:每角色 5 层解锁(卡/遗物交替)+升阶档 | 无(成就页明文「成就不解锁任何内容」) | 解锁层随游玩推进(具体触发未核证);角色链=前一角色完成/获胜 | 无 | 铁甲第 1 层=Heavy Blade/Limit Break 等,第 2 层=遗物 Omamori/Shovel 等;升阶=难度改写(每角色独立逐级解锁,A1 精英更频繁/A2 普通敌伤害提升) |
|
|
||||||
| 以撒的结合 | **成就解锁制**:纯内容解锁(道具/角色/挑战入池) | 成就(不可刷里程碑) | 成就链(角色 A 通关→解锁 B) | 无互斥、无数值成长 | **700+ 道具两两脚本化协同**的涌现引擎;**套装系统(猫套/书套):集齐同标签件→质变变身=「流派成型判据」的机制化先驱**;道具品质 0-4 级。元进度可完全无数值树(与本作账号叙事口径不符,仅对照) |
|
|
||||||
| 土豆兄弟 | 角色解锁+难度 0-5 阶梯 | 通关里程碑 | 角色×难度二维矩阵 | 无互斥 | **角色=预组规则包**(角色本身就是流派,分化前移到选人);**正负双修道具海**(每件 +X%/−Y%,拿件永远是决策);**同件 3 合 1 升品**;自动战斗+构筑深度的成功先例 |
|
|
||||||
| Ball x Pit | **城建摆放**(局外树替代形态):数值建筑 buff+内容解锁 | 局内带回的建筑材料 | 建筑等级链 | 无互斥;摆放无组合规则 | 亮点在局内:**球融合进化**(两球合一 100+ 配方=局内版吸血鬼幸存者) |
|
|
||||||
| Blue Prince | 极轻元进度(房间蓝图入池) | 游玩发现 | 线性 | 无 | 反例参照:解谜驱动可把元进度压到近零——本作不适用(账号叙事需求) |
|
|
||||||
|
|
||||||
> **事实仲裁注记**(甲稿核证为准,乙稿三处修正):①哈迪斯命运镜行解锁=**冥河钥匙阶梯**(1~30 把/行,共 65),非「累计投入 N 点」;②盗贼遗产死亡金币=**Charon 收走+Haggle 减税留存**,非「强制花光」;③吸血鬼幸存者**进化链=局内机制**,其局外元进度=PowerUp+遗物两件。来源见文末。
|
|
||||||
|
|
||||||
### 1.2 归纳:统一节点语言的五种路线 + 分化手段光谱
|
|
||||||
|
|
||||||
**五种路线**:
|
|
||||||
1. **槽位统一(哈迪斯)**:数值=档位深度、规则=槽位内容、互斥=双面;内容解锁留镜外;镜内本就双币(钥匙买访问/黑暗买深度)。教训:一次统一两层就够;「统一语言」≠「单一货币」。
|
|
||||||
2. **货币统一(死亡细胞)**:异质节点共用一币一 UI,前置=价签;Forge 档内链是唯一例外。零学习成本,但产物=「已购清单」非「构筑」。
|
|
||||||
3. **物理树统一(盗贼遗产)**:邻接买满前置允许四类混布、树=幻想载体;代价=跨类定价+摆位义务+全局通胀的额外平衡负担。
|
|
||||||
4. **预算语言(哈迪斯 2)**:节点不互斥,激活预算 56>30 永不全激活强制取舍;配迷雾揭示做进度幻想。人格来自预算分配——互斥的成熟替代品。
|
|
||||||
5. **不统一(吸血鬼幸存者/杀戮尖塔)**:三语言各管一层/元进度只动内容池——「不统一」也是成熟答案;统一是**幻想需求**(账号人格)驱动,非系统卫生需求。
|
|
||||||
|
|
||||||
**分化手段光谱(五手段)**:互斥选择(哈迪斯 A/B,会话叙事「今夜怎么玩」)/ 槽位容量(死亡细胞变异槽,装配取舍)/ 预算容量(哈迪斯 2 悟性,柔和互斥)/ 累积顺序+价格通胀(盗贼遗产,时间轴分化)/ 预组规则包(土豆兄弟角色,分化前移开局)。
|
|
||||||
|
|
||||||
### 1.3 分化感适配判定
|
|
||||||
|
|
||||||
- 用户口径「基础 BD=我的账号玩成什么样」=身份叙事;哈迪斯 A/B 表达「今夜我想怎么玩」=会话叙事——语义有错位,故 A/B 只作**点缀不放主位**(全树互斥面 ≤10-15%),主分化=累积侧重+装配(同调=预组规则包入口)+内容门侧重。
|
|
||||||
- **A/B 适配规则**(两稿一致):只放规则面节点;营地**随时免费切换**(核证原制);两侧「不同强」非「强弱」——MC 验两侧通关率差 <~3pp。
|
|
||||||
- **预算制=后备扩容语言**:规则节点长大后(互斥槽 >8 或两侧平衡维护成本高)迁哈迪斯 2 预算制;两制可并存。
|
|
||||||
- **否定结论(乙稿,采纳)**:局外不做阿卡那式「第二套构筑系统」——本作局内 BD 已承担构筑职能,两头分散互相稀释;哈迪斯 2 只取「觉醒彩蛋」与「预算后备」两件工具。
|
|
||||||
- **彩蛋节点(采纳)**:点满某支脉一整排→自动激活 0 费规则节点(觉醒式),数量 ≤3,不进主路径,给深度玩家挖掘。反例:被发现率 <5% 存档→改树内可见灰色预告。
|
|
||||||
|
|
||||||
### 1.4 收敛方案:「一树双币三脉一脊」+装配区+彩蛋(R1 推荐融合案落文)
|
|
||||||
|
|
||||||
**R1 树形态三案**:甲=**融合案(推荐,本节正文)**:乙稿骨架(主干脊柱+三脉+彩蛋)为形、甲稿区制语义为里(命中线并入、A/B 集中制、双币铁律、MC 两侧差验证);乙=甲稿区制线性(根基/规则/内容门/装配四区,无物理树形);丙=乙稿原案(含其哈迪斯行门槛表述,事实修正后与甲几乎重合)。
|
|
||||||
|
|
||||||
```
|
|
||||||
[主干·矿井脊柱](row-gating,哈迪斯式)
|
|
||||||
投入点数累计解锁新行;GP 付费;数值+全局小规则
|
|
||||||
四线:生命/攻击/命中(甲稿新增第四线)/护甲
|
|
||||||
┌────────────┼────────────┐
|
|
||||||
[锻造脉] [钥石脉] [同调脉]
|
|
||||||
数值专精分叉 内容解锁 槽位与规则
|
|
||||||
(父开子, (钥石付费+ (Socket 节点=同调位 0→3;
|
|
||||||
盗贼遗产式) 里程碑门=Boss Fork 互斥规则节点=A/B 面,
|
|
||||||
│ 首杀) 营地免费切换——A/B 集中在此)
|
|
||||||
└─ [彩蛋节点 ≤3]:点满某脉某排 → 觉醒免费规则节点(哈迪斯 2 式)
|
|
||||||
装配交互(冒险前同调装配)不进树——树管容量,装配管选择
|
|
||||||
```
|
|
||||||
|
|
||||||
- **节点语言统一**:节点=「花货币点亮一个永久效果」,类型只是标签(数值 Stat/规则 Rule/内容 Unlock+Socket 三分法,两稿一致)。
|
|
||||||
- **双币铁律**:GP(可刷软货币,局内掉落死亡不清空)喂主干数值与数值专精;钥石(里程碑稀缺币,Boss 逐杀)喂 Unlock/Socket/Fork。合并单币会让钥石贬值或 GP 通胀——哈迪斯镜内双币同构背书。
|
|
||||||
- **里程碑=第三成本**:通关数/Boss 首杀等游玩事实作节点可见性与解锁条件,不占币(吸收尖塔「成就即门槛」;同调谓词表泛化为全树前置类型)。
|
|
||||||
- **规则区 A/B 槽示例**(provisional,首期 4-6 槽集中同调脉):开局姿态(先手压制 vs 稳健拓荒)/雷感直觉(踩雷减半 vs 标错返 AP)/经济人格(商店折价 vs GP 掉落增益)/克制专精(普攻+1 魔法−1 vs 反之)。
|
|
||||||
- **GP 通胀防线(乙稿反例条件采纳为常设监控)**:GP 可高效刷取(死亡不清空+无遗产税)则双币分层失效——监控 GP 获取速率,必要时引入盗贼遗产式价格通胀或哈迪斯式「重置返还」节点。
|
|
||||||
|
|
||||||
### 1.5 三旧体系数据迁移口径(并采两稿)
|
|
||||||
|
|
||||||
1. **锻造**:已购等级→等效节点点亮(原样映射);**差额 GP 一次性补偿(宁多勿少——元进度不可让玩家感到亏损,乙稿原则采纳)**;命中线为新增第四线(现缺,数值批定值域)。
|
|
||||||
2. **钥石**:已解锁内容→Unlock 节点默认点亮;未花费存量→1:1 转新树钥石余额;规则区(Fork)成为钥石第一个非解锁型消费去向。
|
|
||||||
3. **同调**:已解锁槽位→Socket 节点默认点亮;已拥有道具→池内已解锁;装配 UI/交互不变。⚠ 衔接注记:同调实施批(迭代 11 ①)落地的 0/3+谓词表是**树批的输入**——树批把 slot 与谓词收编为 Socket 节点+全树里程碑前置,同调批先按已裁任务书独立落地、不为树批预留改动。
|
|
||||||
4. **存档**:v3→v4:`tree` 域(node_id: level 单表+双货币余额+里程碑成就表);旧三域只读保留一个版本周期用于回滚;迁移链沿用 v1→v2→v3 自注册模式。
|
|
||||||
|
|
||||||
### 1.6 反例条件(任务 A)
|
|
||||||
|
|
||||||
| # | 关键结论 | 会推翻它的反例条件 | 触发后动作 |
|
|
||||||
|---|----------|--------------------|------------|
|
|
||||||
| A-1 | 一树双币收敛 | GP 可无限刷取→货币分层失效 | 价格通胀节点或拆回平行页签 |
|
|
||||||
| A-2 | 局外不做第二套构筑系统(否阿卡那) | 玩家反馈「开局面定型」太死、账号无构筑感 | 在同调装配内扩预算制(不动天赋树) |
|
|
||||||
| A-3 | A/B 只放规则面+免费切换 | 某侧选取率长期 >80%(伪对立);或玩家当开局微调面板高频切换 | 降为可全点节点;切换加 ~1 钥石成本 |
|
|
||||||
| A-4 | A/B 两侧「不同强」 | MC 任一对两侧通关率差 >~3pp | 该对重做或降同面多档 |
|
|
||||||
| A-5 | 线性+门槛前置够用(不上二维邻接树) | 树规模 >~120 节点,或用户要「庄园长大」物理树幻想 | 改盗贼遗产式邻接前置 |
|
|
||||||
| A-6 | 彩蛋节点低成本可留 | 发现率 <5% 存档 | 改树内可见灰色预告 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 第二部分 任务 B:局内 BD 流派扩充
|
|
||||||
|
|
||||||
### 2.1 流派机制学归纳(十二游戏合并版)
|
|
||||||
|
|
||||||
| 游戏 | 核心动词 | 流派差异主来源 | 比重估算(改写/转化/重定价/替换) | 可迁移工具 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| Balatro | 出牌/弃牌 | 计分规则改写(倍率/触发顺序/牌型定义) | 70/20/10/0 | **管线顺序即收益**(+Mult 左置 ×Mult 640 vs 反之 480);小丑挂点分「计分时/手牌持有/独立」;Four Fingers/Shortcut 改「什么是成手」 |
|
|
||||||
| Peglin | 瞄准发射 | 圣物改写弹珠物理+回合规则;自伤换威力 | 60/15/25/0 | 「小游戏→结算」链路每环节可挂件(与本作同构);刷新流=Refreshield+Refresher Course |
|
|
||||||
| Luck be a Landlord | 摇老虎机 | 符号协同引擎(互食/邻接关系图) | 20/70/10/0 | 符号间关系=流派;本作映射=格面符号/巢穴关系 |
|
|
||||||
| Loop Hero | 摆地块 | 地形邻接组合改写刷怪与资源 | 40/20/40/0 | 摆放=新增动词(非规则改写);3×3 山→山峰(「两山成峰」不实) |
|
|
||||||
| 杀戮尖塔 | 打牌 | 卡池聚簇(毒/力量/格挡);能量→层数转化 | 30/50/20/0 | 流派标签+聚簇权重;Blade Dance 能量→牌→伤害链;Boss 遗物重定价(Runic Dome 无意图/+1 能量) |
|
|
||||||
| 哈迪斯 | 攻击动作 | 恩赐改写动作属性;双人恩赐组合 | 60/0/10/30 | **每动词恰一槽**(Strike/Flourish/Shot/Dash/Aid);Duo=两神指定件前置互锁(Curse of Longing) |
|
|
||||||
| 以撒的结合 | 移动+射击 | 道具协同涌现引擎 | 40/20/10/0(协同 30) | **套装系统(猫套/书套)=流派成型判据机制化先驱**;道具品质 0-4 |
|
|
||||||
| 小骨英雄 | 攻击动作 | 头颅=整组技能替换;铭文套装 | 10/20/10/60 | **铭文双层:件→标签→档位阈值(集 2/4 件激活档位效果)——流派无需钦定可混搭(2 毒+2 眩晕),成型判据可工程化** |
|
|
||||||
| 土豆兄弟 | 移动(攻击全自动) | 正负双修道具海+角色预组包 | 20/30/50/0 | ①**正负双修:拿件永远是决策**(三选一直接适配)②同件 3 合 1 升品③自动战斗+构筑深度的成功先例 |
|
|
||||||
| CloverPit | 拉杆 | 护符改写符号概率/赔付/触发;债务时钟 | 60/10/30/0 | 官方口径「老虎机是为被破坏而设计的」——**小游戏被件改写是核心乐趣**(与本作同构,但本作多一道推理红线) |
|
|
||||||
| Ball x Pit | 瞄准发射弹球 | 球融合进化(两球合一 100+ 配方) | 50/20/10/0+合成 20 | **合成进化局内化**(两件合成高级件)——纵向深度+「凑对」单局叙事 |
|
|
||||||
| Blue Prince | 房间 draft | 地图构筑即流派 | 30/40/30/0 | 节点图已固定,不适用,仅记录 |
|
|
||||||
|
|
||||||
**权重结论(两稿一致)**:规则改写 ~50-60%+资源转化 ~25%+风险重定价 ~10-15% 为地基;替换与组合是放大器。**铁律(乙稿反例条件采纳为硬约束):每流派必须 ≥1 件挂在扫雷结算触发点上**——本作伤害与奖励由扫雷间接制造,若改写件全挂战斗端,流派沦为「战斗数值皮肤」。
|
|
||||||
|
|
||||||
**新增设计工具(乙稿产出,本稿采纳)**:
|
|
||||||
1. **标签+档位激活**(以撒套装/小骨铭文):所有流派件带流派标签;**集 2 件同标签→档位一(流派核心规则);集 4 件→档位二(完全体,如有)**。成型判据从设计描述变可工程化机制,允许混搭(2 魔法+2 穿刺=中间态构筑)。**散件保底**:单体强度成立,档位只做质变不做启动(防「凑不齐全是废件」挫败)。甲稿「罕见·流派钥匙件」降级为各流派锚点件(强度/身份锚),成型判据统一走标签计数。
|
|
||||||
2. **正负双修**(土豆兄弟):流派件原则上带小代价——三选一永远有决策张力,天然防滚雪球。纯增益件须专项论证隐性成本才准入。
|
|
||||||
3. **合成进化**(Ball x Pit/吸血鬼幸存者):两件同名/同标签合成升品——池深解药,**三期再议**。
|
|
||||||
|
|
||||||
**哈迪斯恩赐槽的映射启示(甲稿)**:哈迪斯把改写挂动词槽(每动词一槽);本作无战斗动词可挂,等价挂点=**结算段槽**(grant/buff_debuff/combat/decay/verdict 五段+flag_judged/cell_revealed/round_end_board 三批事件)——流派件=「往结算段某段塞一条自己的规则」,与恩赐槽同构。
|
|
||||||
|
|
||||||
### 2.2 本作结构禀赋(代码实态,开工自行复核行号)
|
|
||||||
|
|
||||||
- 伤害单据五配方封闭枚举(`damage_controller.gd:41-45`):`hero_attack`(掷点→折扣/暴击→克制点→池乘区)/`enemy_skill`(**敌方 rider 必中附加后置已有先例**,英雄侧对称位空缺)/`board_typed`(穿刺弹/魔法矢必中)/`board_blast`(全体恒定)/`board_flat_hero`(无类型直伤,**单据已带 variant_id**)。新来源唯一接入面=`open_ticket`;扩配方动 `_resolve` match(:167-181)与 KIND_ 常量。
|
|
||||||
- 轮末结算五段序冻结(settlement.tres:9)+三批事件:`flag_judged`(轮末旗判定批,`battle_orchestrator.gd:533-556`)/`cell_revealed`(含 mine 负向路由 :308-311)/`round_end_board`。
|
|
||||||
- AP 经济口:`queue_ap_delta`(下轮排队)已有;cleared 轮剩余 AP 作废口径(`action_economy.gd:90-93`)=可改写规则素材;现行 8 AP/轮、挖/旗各 1。
|
|
||||||
- 克制矩阵(`settlement.tres:30-46`):normal[轻0/魔甲+1/重−1]、pierce[轻−1/魔甲+1/重0]、magic[轻0/魔甲−1/重+1];英雄 `attack_type` 恒 normal(hero.tres:10-11)。**类型-关卡错位=现成流派叙事**:magic=L3 钥匙 L2 罚(后期兑现)/pierce=L2 强 L1 罚(中期成型)/normal=全程平滑。
|
|
||||||
- 命中掷骰折扣档(`_roll_discount` :292-295,[3,7]→[75,50,25])=可改写路径。
|
|
||||||
- 三选一池:现行平铺权重(`adventure.tres:8-24`),**已裁未实施的 70/25/5 令牌池=node-reward.md v2.2**(M-4 数值批落地)——机制件带挂进稀有/罕见档;稀有度命名对齐令牌池三档=**普通/稀有/罕见**(乙稿「史诗」一律映射为「罕见」)。
|
|
||||||
- 地形六型(variation.tres):伤害型 thorn/magma/rockfall(**开格前可见=危险红角标,board_view.gd:783-784,迭代 6 T6 已落地——明码定价前提成立**)与信息型 vine/ash/mine_dust(hide_number,不进结算)。
|
|
||||||
- 巢穴控制:标中旗→控制巢穴→敌方 side-wide「削弱」percent 状态行(八型批,battle_orchestrator.gd:822)——猎巢人类件的叠加锚点已存在。
|
|
||||||
- 商店:三件纯数值(shop.tres:36-57);重构批(迭代 11 ②)改共享池同构——机制件上架随重构后表值扩展+保底逻辑。
|
|
||||||
|
|
||||||
**流派×系统交互矩阵**(+++强耦合/+弱/0 无关;标旗×开格 AP 争用与魔法×克制 L2 罚=设计内张力非缺陷):
|
|
||||||
|
|
||||||
| 流派 | 攻击克制 | AP 经济 | 三选一池 | 商店/GP | 地形 |
|
|
||||||
|------|---------|---------|----------|---------|------|
|
|
||||||
| 魔法流 | +++ | 0 | ++ | + | 0 |
|
|
||||||
| 穿刺流 | +++ | + | ++ | + | 0 |
|
|
||||||
| 普攻流 | ++ | + | ++ | + | 0 |
|
|
||||||
| 开格流 | 0 | ++ | ++ | ++ | + |
|
|
||||||
| 标旗流 | + | +++ | ++ | 0 | + |
|
|
||||||
| 蓄力流 | + | +++ | ++ | 0 | 0 |
|
|
||||||
| 吞噬流 | + | + | ++ | 0 | +++ |
|
|
||||||
| 巢穴经济(实验) | 0 | + | + | ++ | 0 |
|
|
||||||
|
|
||||||
### 2.3 流派提案(七核心+一实验+一缓议)
|
|
||||||
|
|
||||||
> 通用规格:件只出现在局内随机渠道(三选一池/商店/格面);稀有度=普通/稀有/罕见(对齐令牌池三档);每件带流派标签;原则上正负双修;**每流派 ≥1 件挂扫雷结算触发点**;档位效果 provisional 归数值批。
|
|
||||||
|
|
||||||
#### 攻击类型流派族(克制轴三线)
|
|
||||||
|
|
||||||
族共性:把英雄恒定 normal 攻击改写为某类型主输出语言;三线关卡曲线互为镜像(magic 后期兑现/pierce 中期成型/normal 全程平滑)——成型前弱势关=流派自带成本,非缺陷。
|
|
||||||
|
|
||||||
**S1 魔法流**——恒定结算、与开格运气解耦的地板伤害
|
|
||||||
| 件 | 稀有度 | 挂点 | 效果 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 奥术余烬 | 普通 | hero_attack 后置 rider(对称复用 enemy_skill rider 结构) | 普攻命中后追加 ~1 点必中魔法伤害——独立于扫雷开图产出、伴随每次攻击恒定结算(用户原例,期望 1.5→1.5+1) |
|
|
||||||
| 魔网织者 | 稀有 | 克制点直调 | 追加魔法伤害对魔法护甲敌获得克制加成——绑进克制表防无脑泛用 |
|
|
||||||
| 湛蓝誓约 | 稀有 | 克制点直调 | 对重甲敌你的所有魔法伤害克制点 +~1(把「第三关钥匙」人格化) |
|
|
||||||
| 魔能共鸣 | 罕见·锚点 | rider 强化+格面魔法矢 | rider 提升;每关首次开格必出魔法矢(吸收甲稿魔导球) |
|
|
||||||
- 档位:魔法 ≥2→rider 值提升(档一);≥4→rider 可暴击(档二)。
|
|
||||||
- 交互点:克制矩阵(magic 列 L2 是付费关,数值批保证 L3 兑现 >L2 亏损);格面魔法矢行;伤害管线新配方=**英雄侧 rider(全案唯一配方扩张)**。
|
|
||||||
- 反例:成型后通关率 >基线 +5pp 且命中参与次要化→rider 改命中触发或降值;魔法流玩家场均开格显著低于全池均值→追加伤害改按已开格数缩放(乙稿)。
|
|
||||||
|
|
||||||
**S2 穿刺流**——克制轻甲中期滚雪球;溢出与节奏转化
|
|
||||||
| 件 | 稀有度 | 挂点 | 效果 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 猎手刺剑 | 普通 | 克制点直调 | 对轻甲敌穿刺伤害提升(正负双修:对重甲无增益) |
|
|
||||||
| 连珠矢 | 稀有 | 开格计数→攻击段数 | 本轮每开 ~3 安全格,攻击额外 +~1 段穿刺(上限 ~2)——开格节奏变攻击段数 |
|
|
||||||
| 猎弱本能 | 稀有 | `_roll_discount` 折扣档 | 对轻甲敌折扣档改善一档(对冲 pierce 列 L1 −1 开局罚) |
|
|
||||||
| 贯穿射击 | 罕见·锚点 | hero_attack 结算尾溢出转移 | 击杀时溢出伤害以穿刺类型弹射下一存活敌;无次敌追加本体 ~半额(Boss 板保底) |
|
|
||||||
- 二期备选:穿甲锥(对控制巢穴敌穿刺增伤——与标旗流协同桥);击杀轻甲返还 1 AP(战斗→扫雷跨阶段回流,新管道谨慎件)。
|
|
||||||
- 反例:L3 后期(Boss 战占比高)期望塌陷 >30%→保底改全额追加;L1 统治力成必选→下调克制系数而非削件(乙稿)。
|
|
||||||
|
|
||||||
**S3 普攻流**——「排雷排得多好,打得就有多疼」+命中赌博重定价(两稿并案)
|
|
||||||
| 件 | 稀有度 | 挂点 | 效果 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 矿工的执拗 | 普通 | hero_attack 加成区读轮内开格数 | 首段攻击 +X,本轮每安全开格 +~1(上限 ~5);踩雷清零 |
|
|
||||||
| 矿工重锤 | 普通 | 命中交换(正负双修原生形态,乙稿) | 普攻增伤 X%、命中判定减成——高 AC 负期望、低 AC 正期望 |
|
|
||||||
| 专注 | 稀有 | `_armor_roll` 路径改写 | 攻击不再掷骰,恒定 ~75% 折扣结算(方差买断成期望——稳定器人格) |
|
|
||||||
| 碎甲震击 | 稀有 | 命中重甲附加 debuff(乙稿) | 命中重甲附加「护甲裂解」(后续全队增伤)——Boss 战价值件 |
|
|
||||||
- 二期锚点备选:孤注一掷(每轮攻击减至 1 次大幅倍增——攻击频率规则改写,乙稿)。
|
|
||||||
- 反例:重锤对全 AC 段期望均不低于基线→交换是伪设计,高 AC 区间惩罚必须显著负期望(乙稿);执拗致「量>对」错误率升而胜率不降→k 改连续安全开格 streak(甲稿)。
|
|
||||||
|
|
||||||
#### 扫雷环节流派族
|
|
||||||
|
|
||||||
**S4 开格流**——风险重定价签名流派:双向放大
|
|
||||||
| 件 | 稀有度 | 挂点 | 效果 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 贪婪矿灯 | 普通 | 正/负双向乘区(正负双修) | 开格产出 +X%,踩雷惊动巢穴数 +1(乙稿) |
|
|
||||||
| 矿脉直觉 | 稀有 | 连续安全开格计数 | 连续开安全格产出逐连倍增;踩雷清零连击——**推理密度直接奖励**(乙稿;甲稿「深入地下」行梯度权重并入其数值批备选形态) |
|
|
||||||
| 深挖钻头 | 稀有 | 格面深层资源 | ⚠ 红线审查件:开格可掘深层资源,但雷位信息 −1(自携信息税,与信息型地形同族——**去留随 R4 裁定**,R4 甲则改设计或退役) |
|
|
||||||
| 赌徒的血签 | 罕见·锚点 | `_grant_routed` 正/负双向乘区 | 开格一切正向产出 ×~1.5,踩雷负向 ×~2(用户原案:奖励大增惩罚同等加重) |
|
|
||||||
- 约束:净期望必须 ≈0 或为负,卖方差与爆发上限;熟练玩家接近纯赚=熟练度兑现,罕见档配额控出场。
|
|
||||||
- 反例:盲挖期望为正→挂点重做为「按开格时相邻已揭示数字格数加成」(直接奖励推理密度,乙稿);成型后通关率 >基线 +5pp→倍率调至期望净负(甲稿)。
|
|
||||||
|
|
||||||
**S5 标旗流**——旗从防御削弱升格输出引擎(最亲推理,红线风险最低)
|
|
||||||
| 件 | 稀有度 | 挂点 | 效果 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 雷区图谱 | 普通 | flag_judged 标中→格面资源 | 标中雷立即获得格面资源——插旗开始产出,对标开格(乙稿) |
|
|
||||||
| 猎巢人 | 稀有 | 巢穴控制数→伤害光环 | 每控制 1 巢穴,对其中敌伤害 +~Z(叠既有削弱状态;乙稿「总控协议」全体攻击版并作数值批备选形态) |
|
|
||||||
| 完美布防 | 罕见 | 同轮全中判定 | 一轮旗全部标中→本轮旗伤 ×~2(奖励全对推理) |
|
|
||||||
| 战旗军规 | 罕见·锚点 | flag_judged 批后新开单点(复用 board_typed,零新配方) | 轮末每面标中旗对旗所在巢穴敌结算 ~M 必中伤害(类型数值批定) |
|
|
||||||
- 验收判据(用户算例口径):全旗轮每轮输出 ≈N+M,两轮全旗 >2N+M;数值批验收=全对推理下全旗轮期望 ≥开格轮的 ~85-100%,信息不足早期板低于盈亏平衡。
|
|
||||||
- 反例:盲标期望也 ≥开格轮→M 压至盲标盈亏平衡下或加「连续未标中旗伤衰减」软锁(甲稿);标旗流玩家开格数趋 0→旗收益与已开格数挂钩强制两动词互哺(乙稿)。
|
|
||||||
|
|
||||||
#### 跨环节引擎流派族
|
|
||||||
|
|
||||||
**S6 蓄力流**——AP 机会成本改写:「不动也是行动」(甲稿独有,补「少动作流派」位与多动作流派成对偶)
|
|
||||||
| 件 | 稀有度 | 挂点 | 效果 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 铁壁整备 | 稀有 | 蓄力层第二出口 | 每层→下轮开场 ~S 点伤害减免(与件 2 同持交互倾向简化为各自计数取先到,provisional) |
|
|
||||||
| 厚积薄发 | 稀有 | 满层 spike | 蓄力满 ~C 层→下轮首段 ×~2 且必中 |
|
|
||||||
| 整备军备 | 罕见·锚点 | 轮末 AP 结转(复用 queue_ap_delta+改写 cleared 作废口径) | 轮末每剩余 1 AP→1 层蓄力(上限 ~C),每层下轮首段 +~1 |
|
|
||||||
- 反例:极限拖轮(最小开格+最大蓄力)通关率 >基线 +3pp→砍转化率/上限,或蓄力同时给敌方技能池 +1 摇号(对称代价)。
|
|
||||||
|
|
||||||
**S7 吞噬流(地形食利)**——地形从纯税到第三资源带(任务 B.4 主落点;替代被毙反制道具义务)
|
|
||||||
| 件 | 稀有度 | 挂点 | 效果 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 地脉采撷 | 普通 | 受地形伤→小额资源补偿 | 每次承受地形伤害附带掉落小额格面资源——地形格从纯税变薄矿(**伤害仍发生**——乙稿「岩浆血脉=免疫转增益」按其自身判据 3「纯免税件=反制道具借尸还魂」仲裁改设计) |
|
|
||||||
| 荆棘编织者 | 稀有 | 地形格开格双产出 | 挖开伤害型地形格额外掉落一次格面资源——主动吃地形换资源 |
|
|
||||||
| 净化工兵 | 稀有 | 旗判定→地形中和 | 标中旗相邻的伤害型地形格中和 ~1 格(变普通格);与 06 在册「工兵爆破」同族不同件互不冲突。⚠ 仅限伤害型(R4) |
|
|
||||||
| 熔火之躯 | 罕见·锚点 | board_flat_hero 单据 variant_id 监听→反打开单(复用 board_typed/board_blast) | 每承受 1 次地形伤害获 1 层熔屑;轮末每层对全体敌 ~1 必中反伤。**触发键=「受地形伤」通用,不按地形种类特化** |
|
|
||||||
- 前提已成立:伤害型地形格开格前可见(危险红角标,board_view.gd:783-784)。
|
|
||||||
- 反例:触发键并入 mine_hit(雷伤≠地形伤,并入=踩雷惩罚被绕过=伤红线①)→整族重审;免疫类地形件提案=违判据 3 直接否(乙稿判据仲裁化)。
|
|
||||||
|
|
||||||
**S8 巢穴经济流(喂雷流,实验性,乙稿)**——主动惊动巢穴换收益
|
|
||||||
- 件:驯兽师哨子(普通:主动踩雷惊动的巢穴战后额外掉落)/血祭矿镐(稀有:主动踩雷免伏击惩罚+掉落提升)/深渊邀约(罕见:每场敌方数量 +X,清图三选一变四选一)。
|
|
||||||
- 风险:不损推理(仍需知道雷位才能挑雷),但松动「避雷」默认目标——须生命资源做硬瓶颈。**挂批次最后、预留砍除接口(R5 裁是否进迭代 12)**。
|
|
||||||
- 反例:踩雷期望收益在血量瓶颈外恒正→两次数值迭代压不住则整流派砍除。
|
|
||||||
|
|
||||||
**S9 淘金流(缓议)**——钱生势支撑件族
|
|
||||||
- 件族:吝啬鬼账本(每保留 ~100 GP 攻击 +~1,甲稿)≈金脉共鸣(每持有 N GP 攻击 +X%,乙稿——同一钩子并一案);贪婪契约(商店折扣+金币掉落增税);消费回馈/战利品鉴定。
|
|
||||||
- 定位=支撑引擎非胜利条件(Balatro 经济小丑位);单独立派人格弱。**先作件族挂配套池观察,数据说话后再立派**(两稿一致缓议)。
|
|
||||||
|
|
||||||
### 2.4 动词面裁决(两稿一致):坚持两动词
|
|
||||||
|
|
||||||
- 基础动词锁定挖/旗两枚,流派全部来自规则改写件。乙稿补强论据:Balatro 两动词(150 小丑)、CloverPit 单动词、土豆兄弟单动词(攻击全自动)——**动词少是品类常态,深度瓶颈在件池规模与件间协同**。
|
|
||||||
- 件池规模:首批 ~25 件(七流派×3-4);反馈「操作重复」时先扩件池(目标 ≥30 再评估),**B 级预案**(二期):件派生动词白名单(拔旗返 AP/熄灭地形格等资源转化类)。⚠ 两稿 B 级预案分歧:甲稿禁一切信息类派生动词;乙稿允许「概率收窄」类信息动词(如花 AP 收窄一格信息)——**随 R4 一并裁**(信息类边界同一问题)。
|
|
||||||
- 反例:件池 ≥30 后仍反馈操作重复且定位在操作层→重启动词扩充讨论。
|
|
||||||
|
|
||||||
### 2.5 地形变异:从纯税到流派素材(R4 标注)
|
|
||||||
|
|
||||||
**可行(两稿一致)**:转化件挂局内、贴近威胁决策点,精确回应「层级错配」原诊断;以撒诅咒房/恶魔房交易=「把负面要素当资源门」的成熟心理模型。
|
|
||||||
|
|
||||||
**可行判据(并采)**:①只走局内渠道 ②利用地形格须先经扫雷信息定位(不绕推理)③必须带代价/机会成本——纯免税件否决(判据 3 已用于仲裁 S7 普通件设计)④每关两种绑定变异至多一条利用路径(保留关卡压迫感)⑤出现率保底:对应关卡商店必刷 ≥1 本关变异交互件(保底规则可做成天赋树 Rule 节点=两层呼应合法接口;依赖商店重构批落地)。
|
|
||||||
|
|
||||||
**信息型立场=R4**:甲(甲稿)=藤蔓/烬覆/矿尘**永不对冲**——hide_number 的税是推理红线的看门税,一切「清除/穿透/揭示」件无论挂哪层都不做;乙(乙稿)=可做**清除/穿透类工具且限价限量**。伤害边界两稿一致:只吃 variant 单据,绝不并入 mine_hit。
|
|
||||||
|
|
||||||
**反例**:保底落实后无流派支持玩家仍普遍视变异为「更恶心的纯税」→保底升级为「格面低概率掉落本关交互件」(乙稿)。
|
|
||||||
|
|
||||||
### 2.6 反例条件汇总(任务 B)
|
|
||||||
|
|
||||||
| # | 关键结论 | 反例条件 | 触发后动作 |
|
|
||||||
|---|----------|----------|------------|
|
|
||||||
| B-1 | 规则改写主赛道+扫雷端挂点 | 战斗端挂点过多扫雷端脱钩 | 每流派强制 ≥1 扫雷触发点件(硬约束已内置) |
|
|
||||||
| B-2 | 档位激活作成型判据 | 「凑不到 2 件的散件全是废件」挫败 | 散件单体强度保底,档位只质变不启动(已内置) |
|
|
||||||
| B-3 | 正负双修原则 | 某件代价使三选一跳过率显著高于数值件 | 该件调代价或退纯增益+专项论证 |
|
|
||||||
| B-4 | 各流派件反例 | 见 2.3 各流派反例行 | 随行动作 |
|
|
||||||
| B-5 | 坚持两动词 | 件池 ≥30 后仍反馈操作重复(操作层非决策层) | 件派生动词白名单试点(边界随 R4) |
|
|
||||||
| B-6 | 变异可转素材 | 保底后无件玩家体验更差 | 保底升级为格面低概率掉落 |
|
|
||||||
| B-7 | 喂雷流实验性保留 | 血量瓶颈外踩雷期望恒正且两轮数值压不住 | 整流派砍除 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 第三部分 落地改动面清单(并采版,含代码锚点)
|
|
||||||
|
|
||||||
### 纯表值改动
|
|
||||||
|
|
||||||
| 改动 | 涉及表 | 批次 |
|
|
||||||
|---|---|---|
|
|
||||||
| 三选一池扩「机制件带」(稀有/罕见档条目+流派标签聚簇权重;挂已裁 70/25/5 令牌池框架——**前置=M-4 数值批落地令牌池**) | adventure.tres 池结构+新机制件条目 | 一 |
|
|
||||||
| 机制件定义(名称/效果/稀有度/标签/正负双修参数) | 新 schema relic_table(或并入 reward 族+tag 字段) | 一 |
|
|
||||||
| 商店机制件上架与保底参数(**前置=商店重构批共享池落地**) | shop.tres | 二 |
|
|
||||||
| 格面资源掉落增列(深层资源层/地脉补偿等) | reward.tres | 二 |
|
|
||||||
| 天赋树纯数值节点内容 | 天赋树节点表(新表,内容为表值) | 三 |
|
|
||||||
| 旧三体系→新树节点映射+差额补偿 | 迁移映射表(新表) | 三 |
|
|
||||||
|
|
||||||
### 需要新机制
|
|
||||||
|
|
||||||
| 机制 | 服务对象 | 改动面(锚点) | 批次 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 伤害管线新配方:英雄侧 rider(唯一配方扩张) | 魔法流 | damage_controller.gd `_resolve` match :167-181+KIND_ 常量 :41-45(enemy_skill rider :217 为对称先例) | 一 |
|
|
||||||
| **标签+档位激活引擎** | 全部流派成型判据 | 件 tag 系统+档位规则表(新) | 一 |
|
|
||||||
| 旗伤开单点 | 标旗流 | flag_judged 批后(battle_orchestrator.gd:533-556),复用 board_typed 零配方 | 一 |
|
|
||||||
| 「件乘区」槽(行值倍率/改写钩) | 开格/吞噬/魔法流 | `_grant_routed`→`_dispatch_row`(:422/:438) | 一~二 |
|
|
||||||
| 扫雷结算新触发点:开格连击计数、mine_hit 监听、轮末巢穴状态查询 | 开格/普攻/标旗流 | `_settle`(:289-355)+ActionEconomy | 一~二 |
|
|
||||||
| 攻击掷骰路径改写(免掷骰恒折扣/折扣档前移) | 普攻/穿刺流 | damage_controller.gd :285-295 | 二 |
|
|
||||||
| 击杀溢出弹射 | 穿刺流 | hero_attack 结算尾 | 二 |
|
|
||||||
| 轮末 AP 结转段(cleared 作废口径改写) | 蓄力流 | action_economy.gd :90-93/:148 | 二 |
|
|
||||||
| variant 单据监听→反打 | 吞噬流 | battle_orchestrator.gd :315-324(variant_id 已在票上) | 二 |
|
|
||||||
| 战斗→扫雷跨阶段回流(击杀返 AP) | 穿刺流二期 | AP 经济新管道(谨慎) | 二期 |
|
|
||||||
| 召唤物/持续伤害源(悬浮魔法球) | 魔法流二期 | 战斗单位系统新实体类型 | 二期 |
|
|
||||||
| 商店保底逻辑(本关变异交互件必刷) | B4 | 商店生成器(前置商店重构批) | 二 |
|
|
||||||
| 商店置换服务(符文重铸——攻击类型族后期转换) | 攻击类型族 | 商店新交互 | 二期 |
|
|
||||||
| 地形格清除/转化(旗二级效果) | 吞噬流 | 插旗动作扩展+变异格状态机(限伤害型,R4) | 二 |
|
|
||||||
| **天赋树系统**:节点表+双币+row-gating+Fork 互斥+彩蛋觉醒+装配区 | 任务 A 全部 | 新系统(最大工程量)+营地 UI 重构 | 三 |
|
|
||||||
| 存档 v3→v4(tree 域+三旧域迁移+差额补偿+只读保留一版) | 任务 A | save_manager.gd :33/:49-66/:71-84 | 三 |
|
|
||||||
| 合成进化(两件合成升品,可选) | 池深解药 | 道具合成器 | 三期再议 |
|
|
||||||
|
|
||||||
### 文档面正主吸收位(实施批随批改)
|
|
||||||
|
|
||||||
元进度.md(树化改写)/node-reward.md(机制件带条目规格)/战斗结算.md(rider 配方+旗伤反打开单点)/行动经济.md(AP 结转口径)/地形变异.md(第三资源带节+R4 落文)/魔法道具.md(流派件与同调位边界句)/商店 spec(保底)。
|
|
||||||
|
|
||||||
### 建议实施顺序(两稿并采,R2/R3 标注)
|
|
||||||
|
|
||||||
1. **批次一(管线验证)**:机制件定义表+标签档位引擎+伤害 rider 配方+旗伤开单点+**魔法流+标旗流先行**(两稿交集最高、用户原案、红线风险最低)+MC 锚 A。
|
|
||||||
2. **批次二(流派铺量)**:穿刺/普攻/开格/蓄力/吞噬五流派件+件乘区+掷骰改写+AP 结转+variant 监听+地形转化件+商店保底(前置:商店批/数值批已落地)+MC 锚 B。巢穴经济流挂观察位(R5)。
|
|
||||||
3. **批次三(天赋树,R2 裁是否独立迭代 13)**:树系统+存档 v4+营地 UI+迁移(依赖同调批 0/3 谓词落地为输入)。
|
|
||||||
4. 二期/三期:跨阶段回流、召唤物、置换服务、合成进化、件派生动词白名单(R4 边界)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 第四部分 裁断点清单(R1-R5,详细背景随任务书呈报)
|
|
||||||
|
|
||||||
> **裁定状态(2026-10-03 用户)**:R1 甲(融合案)/R2 乙(两层全入迭代 12,超限切 12/12b)/R3 乙(七流派批次一全量铺)/R5 甲(喂雷流不做留待办)已裁;**R4 待裁**(详报=任务书 §九)。
|
|
||||||
|
|
||||||
| # | 裁断点 | 选项 | 推荐案(本稿正文所按) |
|
|
||||||
|---|--------|------|------------------------|
|
|
||||||
| R1 | 树形态 | 甲=融合案(脊柱+三脉+彩蛋+区制语义,本稿 1.4)/乙=区制线性/丙=乙稿原案 | 甲 |
|
|
||||||
| R2 | 迭代 12 范围 | 甲=迭代 12 只做批次一+二(局内流派),批次三天赋树拆迭代 13 /乙=两层全入迭代 12 | 甲 |
|
|
||||||
| R3 | 首批流派阵容 | 甲=批次一仅魔法+标旗验证管线,批次二铺满七流派 /乙=七流派批次一起铺 /丙=只做五流派(引擎族缓) | 甲 |
|
|
||||||
| R4 | 信息型地形+信息类边界 | 甲=永不对冲(信息型清除件不做、信息类派生动词禁)/乙=限价限量清除工具+「概率收窄」派生动词可做 | 甲(红线①保守侧;乙须显式确认红线边界) |
|
|
||||||
| R5 | 喂雷流(实验性) | 甲=迭代 12 不做,06 留实验登记视读数再立项 /乙=批次二末位做+预留砍除接口 /丙=彻底砍除 | 甲 |
|
|
||||||
|
|
||||||
## 来源
|
|
||||||
|
|
||||||
**外部核证(甲稿调研代理,带来源)**:hades.fandom.com(Mirror_of_Night/Arcana_Cards/Boons);deadcells.wiki.gg(The_Collector/The_Blacksmith/Boss_Stem_Cells/Blueprints);rogue-legacy.fandom.com(Manor/Enchantress/Charon);vampire-survivors.fandom.com(PowerUps/Relics);slay-the-spire.fandom.com(Ironclad/Achievements/Ascension);balatrowiki.org(Jokers/Activation_sequence);peglin.fandom.com;luck-be-a-landlord.fandom.com;loophero.fandom.com(Cards);skul.fandom.com(Inscriptions/头颅页)。未核证项:死亡细胞条目间前置链/尖塔解锁层触发。
|
|
||||||
|
|
||||||
**乙稿扩充参照(未经逐条核证,作设计参照不作事实引用)**:以撒的结合/土豆兄弟/CloverPit/Ball x Pit/Blue Prince 机制描述。
|
|
||||||
|
|
||||||
**本作代码实态**:damage_controller.gd/battle_orchestrator.gd/action_economy.gd/minesweeper_rules.gd/board_view.gd/adventure.tres/variation.tres/meta.tres/settlement.tres/shop.tres/save_manager.gd(行号以 2026-10-03 工作区为准,开工自行复核)。
|
|
||||||
|
|
||||||
**已裁设计态引用**:node-reward.md v2.2(70/25/5 令牌池,M-4 数值批落地)/任务书-魔法道具同调实施批-2026-10-02.md(迭代 11 ①)/任务书-GP商店房重构-三选一同构化-2026-10-02.md(迭代 11 ②)/06「反制维度承载失义」终裁记录(反制契约作废、counter_items 恒空合法、局内应对待本调研结论)。
|
|
||||||
@@ -1,148 +0,0 @@
|
|||||||
# 审查-地图战斗资源(2026-10-06)
|
|
||||||
|
|
||||||
审查对象:道具系统三层中的地图战斗资源层(格面资源 CellResource,九型封闭枚举)。事实源为正主 GDD `design/gdd/systems/战斗循环/地图战斗资源.md`、相邻文档四篇、数据表四张、实现代码五个文件的相关段。文档与代码/数据不一致处以代码和数据为准,不一致本身记为发现。本报告为纯静态审查,未运行任何测试。
|
|
||||||
|
|
||||||
## §1 现状盘点
|
|
||||||
|
|
||||||
### 九型字典表
|
|
||||||
|
|
||||||
| 类型 | 正向兑付(开安全格/标中雷) | 负向兑付(开雷格/标错安全格) | 效果真实时限 | 数值出处 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| attack 增伤 | attack_up:主角输出 +50%,入 hero_offense 池,当轮战斗段生效(标中 ×1.25 溢价) | enrage:敌方输出 +25%,入 enemy_output 池,全体敌当轮还手生效 | 两向都是**当轮一次结算**(dur=1,衰减段移除) | reward.tres:8-16、60-68;status_effects.tres:8-15、35-42 |
|
|
||||||
| defense 护甲 | ac_up:主角护甲等级 +1,掷点阈值轴,不入池 | off_guard:主角护甲等级 −1,同轴负向 | 两向都是**当轮一次结算**(dur=1) | reward.tres:18-26、70-78;status_effects.tres:17-24、44-51 |
|
|
||||||
| heal 回血 | heal_minor:主角当场回复 2 点生命(满血零兑付) | heal_backlash:主角直伤 6 点(案C 殿后到战斗段末,不经增益状态) | 两向都是**更久**——生命账本跨轮、跨战斗、跨关(level_runner.gd:50-56、507;adventure_runner.gd:59) | reward.tres:38-48、80-88 |
|
|
||||||
| blast 群伤 | spark_aoe:全体存活敌各吃 1 点伤害(战斗段末统一落地) | enemy_alert:敌方全体护甲等级 +1/层,可叠,轮末清零 | 正向**一场战斗**(敌生命不回复,扣减持续本场剩余);负向**当轮一次结算**(alert dur=1) | reward.tres:28-36、90-98;status_effects.tres:80-87 |
|
|
||||||
| weaken 削弱 | weaken:敌方输出 −65%,入 enemy_output 池,同名只续时 | sapped:主角输出 −25%,入 hero_offense 池 | 正向**两次结算**(dur=2,授予轮+下一轮,status_effects.tres:26-33)——超过一回合;负向**当轮一次结算** | reward.tres:50-58、100-108;status_effects.tres:26-33、53-60 |
|
|
||||||
| pierce 穿刺 | pierce_strike:最前存活敌吃 2 点穿刺克制直伤,必中不掷点 | pierce_snare:主角直伤 8 点,不经增益状态 | 正向**一场战斗**(敌生命);负向**更久**(主角生命账本) | reward.tres:122-131、144-152 |
|
|
||||||
| magic 魔法 | magic_bolt:最前存活敌吃 2 点魔法克制直伤,必中不掷点 | magic_recoil:主角直伤 8 点,不经增益状态 | 同 pierce:正向**一场战斗**,负向**更久** | reward.tres:133-142、154-162 |
|
|
||||||
| action 行动点 | ap_up:下轮行动点 +1,排队到下轮开轮兑现 | ap_drain:下轮行动点 −1,同通道 | 两向都是**下一轮**(queue_ap_delta 排队,notify_round_start 兑现后清零,action_economy.gd:191-208) | reward.tres:164-182 |
|
|
||||||
| gp 金币 | gp_coin:战斗内 GP 缓冲 +3,战斗完成随 gp_dropped 入钱包(胜负都入账,level_runner.gd:508) | gp_lose:战斗内 GP 缓冲 −2,同通道(缓冲可为负,钱包入账时钳 ≥0,level_runner.gd:664-666) | 两向都是**更久**——钱包跨战斗,冒险收束才清零(level_runner.gd:672-674) | reward.tres:184-202 |
|
|
||||||
|
|
||||||
兑付编排事实:伤害形态兑付(群伤/克制直伤/主角直伤)自 2026-10-06 案C 起一律暂存到战斗段末统一落地,主角死于敌方还手则地图伤害账整体不兑(battle_orchestrator.gd:457、814-818、1031-1042)。非伤害形态(状态、治疗、行动点、GP 缓冲)在授予段当场兑付。
|
|
||||||
|
|
||||||
### 极性矩阵要点
|
|
||||||
|
|
||||||
四种「动作×格型」组合(定义归本文档,路由执行在 battle_orchestrator.gd:462-508、836-886):
|
|
||||||
|
|
||||||
- **开安全格 = 正向**:兑该格资源的正向行;插旗安全格直接挖开 = 零兑付,记作废归因行(四情况④,battle_orchestrator.gd:469-473)。
|
|
||||||
- **开雷格 = 负向**:兑该格资源的负向行;插旗雷格再挖开负向照常、标中不发(四情况②,battle_orchestrator.gd:505-508)。
|
|
||||||
- **标中雷(旗留到轮末)= 正向**:兑该雷格资源的正向行,且 ×1.25 旗溢价(flag_hit_premium=125,settlement.tres:9;battle_orchestrator.gd:703-707);每颗雷只兑一次。
|
|
||||||
- **标错安全格 = 负向**:记「标旗未中」归因行,并兑该安全格资源的负向行;每格只罚一次(battle_orchestrator.gd:874-886)。
|
|
||||||
|
|
||||||
注意:标错与开雷格消费**同一行负向字典**,惩罚数值完全同档,无档次差(详见 §3 极性矩阵对称性)。
|
|
||||||
|
|
||||||
### 清图奖励对象
|
|
||||||
|
|
||||||
- 配置位置:`game/data/tables/reward.tres` 的 clear_default 池,现行唯一一行 clear_blast(群伤 [24,40],中点 32,weight 1,reward.tres:110-120)。池恒非空由加载校验保证(reward_table.gd:116-118)。**level.tres 里没有任何清图奖励配置**——任务书口径「level.tres(关卡配置与清图奖励)」与事实不符,清图奖励全部挂在 reward.tres,level.tres 只承载关卡节点模板与 rest_heal_pct。
|
|
||||||
- 摇定与兑付:装板摇号批尾同流摇定身份(reward_economy.gd:68-69、75-77);清图批恰好发一次,完美排雷(零误标且至少标中一面旗)追加第二份(p_perfect=200,settlement.tres:8;battle_orchestrator.gd:891-903)。
|
|
||||||
- 按图类型差异化程度:**零**。clear_<图类型> 命名空间是预留插槽,schema 对 clear_default 以外的 clear_ 前缀显式拒绝(reward_table.gd:18、62-66);棋盘生成侧图类型词表已到 v1.1 三词(dungeon/underdark/deep_underdark,board_gen.tres),插槽未启用。
|
|
||||||
|
|
||||||
### 九型覆盖小结
|
|
||||||
|
|
||||||
九型的兑付形态分布并不均匀:**状态类 6 行**(attack±/defense±/weaken−/blast−),**直接改血类 7 行**(heal±/blast+/pierce±/magic±,清图行同族),**行动点 2 行**,**GP 2 行**。两个同质问题:
|
|
||||||
|
|
||||||
1. **伤害兑付换皮感重**。pierce 与 magic 两型机制完全同构——正向同为 2 点必中克制直伤(仅 attack_type 不同、查克制矩阵不同行),负向同为 8 点主角直伤,连数值都相同(reward.tres:122-162)。两型的全部差异挂在克制矩阵 ±1 点数上。加上 blast 正向(1 点群伤)与 heal 负向(6 点直伤),九型里有四型的兑付本质是「一个伤害数字」,类型多样性主要靠状态行和 action/gp 两个特殊轴撑着。
|
|
||||||
2. **正负不对称呈两极化**。defense(±1 护甲等级)、action(±1 行动点)镜像对称;gp(+3/−2)近似对称;attack(+50%/+25%)轻度不对称;而 heal(+2/−6,3 倍)、pierce/magic(+2/−8,4 倍)负向数倍于正向,weaken 则反向倒挂(正向 −65%×2 结算,负向 −25%×1 结算,正向远强)。不对称本身不必然是问题(标中旗锚要求标中收益高于挖格),但同型字典内 3-4 倍的量级差值得在 §3 记录。
|
|
||||||
|
|
||||||
## §2 可玩性审查
|
|
||||||
|
|
||||||
### 决策张力
|
|
||||||
|
|
||||||
**标雷的动机强度:够,但理由是「期望」而非「类型」。** 标中旗 = 该雷格资源正向 ×1.25(settlement.tres:9 flag_hit_premium=125;battle_orchestrator.gd:703-707),插旗与挖格同价 1 行动点(action_economy.tres:9-10),每轮 8 点预算(action_economy.tres:7)。雷安同池意味着标中与挖安全格面对同一权重分布,标中期望 = 挖格期望 ×1.25——条款3 判式把 β 比值带锁在 [1.2, 2.5] 正是在管这个比值(战斗结算.md 验收标准末条)。叠加完美排雷门票(至少标中一面旗)与旗的链阻断功能,玩家没有理由绕开已推理确定的雷不标。真正的决策在「不确定的格敢不敢标」:标错 = 负向兑付 + 完美资格破坏,而负向类型装板期已摇定、标前不可见——罚 8 血还是 −2 金币是盲盒。这个结构把旗正确地引导向「推理确定的雷」,设计意图成立。
|
|
||||||
|
|
||||||
**开安全格的正向兑付目前不影响挖格路径——不是玩家无脑,是系统不给信息。** 未开格的资源身份在界面上不显示(05-不做清单:14;地图上只有已开格挂身份徽章,main.gd:235、655-658)。玩家挖哪一格,决策原料只有数字推理、连锁形状和「这格安不安全」,类型层对路径选择的贡献为零。「读敌拍板、抢类型」(地图战斗资源.md:120 设计意图)在现行实现下不成立——玩家无法抢一个看不见的东西。该意图的兑现依赖「未开格类型微光」(HUD框架.md:131-141,英雄周围 8 格先读类型不读极性),其实装状态标注为「游戏内待实施批」(HUD框架.md:141;06-待办清单「未开格类型徽章呈现时机」条状态=待办)。**这是本节最主要的发现:类型层的决策价值整体挂在一个未实施的呈现批上。**
|
|
||||||
|
|
||||||
### 构筑协同
|
|
||||||
|
|
||||||
格面兑付与战斗 build 之间有真实但深浅不一的呼应:
|
|
||||||
|
|
||||||
- **状态行进既有池与轴**:attack_up/sapped 进 hero_offense 池、enrage/weaken 进 enemy_output 池(settlement.tres:20 effect_pool_map;damage_controller.gd:451-459),ac_up/off_guard/alert 走护甲等级阈值轴(damage_controller.gd:393-408)。池和轴是全部战斗修正的同一把尺子,格面兑付天然与普攻流、蓄力流等特性构筑同池共振,这层协同是结构白送的。
|
|
||||||
- **克制直伤与攻击类型轴**:pierce_strike/magic_bolt 查甲效矩阵,与破甲/换型构筑呼应;特性 clamp_modifier 族对棋盘克制直伤同样生效(damage_controller.gd:340、425-435)。但淬毒刃纹(attune_venom)明文只加成主角攻击、排除棋盘直伤(damage_controller.gd:225-226)——同一条「穿刺/魔法」构筑线,主角侧和棋盘侧的加成口径不一致,属于协同面上的一个豁口(事实登记,是否补齐归对应批裁决)。
|
|
||||||
- **摇号面已被构筑投影**:偏运硬币给稀有正向型 {heal, gp, pierce, magic} 权重 +N(reward_economy.gd:177-207),全局作用域变异 board_skew 按「生存族下调、进攻族上浮」投影整池权重(reward_economy.gd:184-249)。装板摇号不再是纯静态表——构筑与地图事实已经能改写类型分布,这是本层与构筑系统最新、也最实的挂接面(2026-10-04 批)。
|
|
||||||
- **gp/action 两轴外联**:gp 兑付进冒险钱包、与商店经济咬合(level_runner.gd:664-674);action 兑付与工兵晨令、蓄力流共用 queue_ap_delta 通道(battle_orchestrator.gd:276-278)。
|
|
||||||
|
|
||||||
### 反套路空间
|
|
||||||
|
|
||||||
**「类型是第二层规划素材」目前只在统计层面成立,个体格层面为零。** 装板摇号对每个非封锁格独立取号(reward_economy.gd:66-67,对统一行集逐格 weighted_pick),无保底、无卡组结构、格与格之间独立同分布。这意味着已开格的类型分布对未开格**不携带任何信息**——开出三个 attack 不会让下一格更可能是 heal。玩家唯一能规划的是池构成本身(9 行权重、合计 77,reward.tres)和两条外部投影(偏运硬币、图级偏斜)。再加上未开格身份不可见(§2 决策张力已述),玩家从已开格读不出任何可用于下一步的具体规划素材。设计文档自述「在"数字恒真"的推理之外,类型是第二层规划素材」(地图战斗资源.md:11)——**这句承诺的实现度目前约等于零**,它的两个前提(类型先读 = 微光;分布先验 = 配比预设,06-待办清单「冒险前资源配比预设」条,2026-10-04 立项)都还在待办里。结构上身份摇定即可查(query_identity 对未开格同样返回,reward_economy.gd:96-105;冒烟在案),预读类道具的桥接位已备,反套路空间的骨架在、肉还没长。
|
|
||||||
|
|
||||||
### 获取体验
|
|
||||||
|
|
||||||
**正向反馈链路完整**。已开格常显类型徽章(main.gd:235 注释与 655-658 回调);结算明细 9 类行型逐行指回来源格,标中与清图有强制高光,完美排雷有独立高光行(战斗结算.md 明细流水节;battle_orchestrator.gd:903)。「奖励未生效」行把满层、满血、无敌可打三类空兑付如实留痕(battle_orchestrator.gd:751、800-804;damage_controller.gd:486-488)。玩家事后能说出「这局挖到了什么」。
|
|
||||||
|
|
||||||
**两个感知短板**:① attack_up/ac_up 都是 dur=1 且当轮衰减,主角每轮只攻击一次——+50% 在 atk=2 的个位数粒度下实际表现为 +1 伤害(2×1.5 取整),「我拿到了增伤」的感知非常薄;06-待办清单「八型批数值点评」条已登记「±25% 常取整无感」的同族问题。② 负向兑付是盲盒:踩雷/标错之前不知道该格类型,罚 6 血(heal_backlash)、8 血(pierce_snare/magic_recoil)、−1 行动点还是 −2 金币全凭装板摇号。兑付本身确定、可归因,但**惩罚的轻重不可预知**——这与全游戏「数字恒真、推理可确定」的基调存在张力。它目前不致命(推理能消除「标错」这件事本身),但「标错一次的代价 ≈ 踩一颗雷,且罚多重看命」会不会让玩家对不确定格彻底不敢插旗,是值得在真人试玩里盯的点。类型微光落地后负向类型同样先读,盲盒自然变明账——这个发现与 §2 决策张力的主发现是同一个根。
|
|
||||||
|
|
||||||
## §3 合理性审查
|
|
||||||
|
|
||||||
### 生命周期↔时限口径(本节重点)
|
|
||||||
|
|
||||||
用户认知「地图战斗资源只在战斗循环一个回合内起效果」。逐型核对实现,这句认知**只对 9 型中的 2 型完全成立**:
|
|
||||||
|
|
||||||
| 时限档 | 覆盖 | 行数 |
|
|
||||||
|---|---|---|
|
|
||||||
| 当轮一次结算(真·一回合) | attack±、defense±、blast−(警觉)、weaken−(乏力) | 6 行 |
|
|
||||||
| 两次结算(跨到下一轮) | weaken+(dur=2,status_effects.tres:31) | 1 行 |
|
|
||||||
| 下一轮生效 | action±(queue_ap_delta 排队下轮,action_economy.gd:191-208) | 2 行 |
|
|
||||||
| 一场战斗(敌生命扣减不回复) | blast+、pierce+、magic+、清图 clear_blast | 4 行 |
|
|
||||||
| 更久(主角生命账本跨战斗跨关 / GP 钱包到冒险收束) | heal±、pierce−、magic−、gp± | 6 行 |
|
|
||||||
|
|
||||||
逐型结论:attack、defense 两型正负皆一回合,认知成立;blast、weaken 两型一合一超,半成立;**heal、pierce、magic、action、gp 五型两向都超过一回合**,其中 heal 与 gp 的效果一直活到冒险层——heal_minor 回的 2 点血跨战斗跨关(level_runner.gd:50-56、507),gp_coin 的 3 金币进钱包、冒险收束才清零(level_runner.gd:672-674)。九型里七型至少有一向超出「一回合」。
|
|
||||||
|
|
||||||
这句认知的文档源头可追到地图战斗资源.md v0.5 更名批自述「只在战斗结算生效」——该表述说的是「兑付动作发生在轮末结算」,被误读成「效果只活一回合」。**差距本身就是发现**:本层的真实时限结构是「状态行当轮、行动点下轮、削弱两轮、敌血一场、主角血与金币到冒险」,三档时限并存。这不一定需要改实现,但口径需要在某处说清(GDD 修订或教学呈现),否则后续设计评审会一直按错误前提推演。另注:增益状态容器寿命 = 一场战斗(增益状态.md:53),状态行 dur 全为 1(weaken 为 2),状态类效果确实不跨战斗——「一回合」认知大概是从此处过度推广出来的。
|
|
||||||
|
|
||||||
### 极性矩阵对称性
|
|
||||||
|
|
||||||
正向与负向的数值量级逐型对照(出处见 §1 字典表):
|
|
||||||
|
|
||||||
- **镜像对称**:defense(±1 护甲等级)、action(±1 行动点)。
|
|
||||||
- **近似对称**:gp(+3/−2)。
|
|
||||||
- **轻度不对称**:attack(+50% vs +25%)——且正向只作用主角一次攻击、负向作用全体敌一整轮还手,方向相反、覆盖面也不同;06-待办清单「八型批数值点评」条已登记「50/25 是否有意」。
|
|
||||||
- **显著不对称**:heal(+2 vs −6,负向 3 倍)、pierce/magic(+2 vs −8,负向 4 倍)。负向直伤三行 2026-10-01 刚抬档(4/5/5→6/8/8,reward.tres 尾部批注,用户口径「踩雷必须痛」),正向未动——同型字典内正负量级差是有意拉开的,但 3-4 倍意味着「标错一个 heal/pierce/magic 型安全格」的代价数倍于「开对该格」的收益,失误税很重。
|
|
||||||
- **反向倒挂**:weaken 正向(−65%×2 结算)远强于负向(−25%×1 结算)——这是标中旗锚的刻意设计(标中必须比挖格值),合理。
|
|
||||||
|
|
||||||
**标错与开雷格没有拉开档次**:两种失误消费同一行负向字典(battle_orchestrator.gd:508 与 886 同走 _grant_routed 负向),数值零差别。标错额外付出「标旗未中」归因、完美资格破坏和旗本身的 1 行动点,踩雷则把雷格变成可通行残址——两边附带损益不同,但核心惩罚同档。「推理失误」与「主动/被迫踩雷」是否该同罚,是一个可以提出来的设计问题(标错至少建立在玩家的错误判断上,踩雷有时是推理穷尽的被迫赌)。登记为观察点,定性归用户。
|
|
||||||
|
|
||||||
### 清图奖励合理性
|
|
||||||
|
|
||||||
- **强度与难度的匹配**:清一张 10×10 图需开完全部安全格(min_safe_count 50,扣除 R₀ 免费展开约 40 格后实挖十余格、跨数轮),奖励为一次性 [24,40] 群伤(中点 32)。对照敌种血量(小怪 4-28、Boss 50-72,enemy.tres),这是 Boss 血条的约 45%-64%——清图尖峰是全游戏最大单笔伤害,与「清全图」的投入大体相称。
|
|
||||||
- **但清图奖励被借去补主角输出短板**:主角每轮基础攻击 2 点(hero.tres:8),对 50+ 血的 Boss 远远不够,Boss 战在结构上依赖清图尖峰供伤害——reward.tres 批注原话「撑起 boss"必清图才打得动"节奏」。清图奖励从「清图的彩头」变成了「Boss 战的必需弹药」,两者耦合。副作用已自记:批注登记「perfect L1 boss 胜率 97% 越 75% 上界加剧」(reward.tres:256-259)。**只标注失衡事实,调参归难度曲线与Boss 批。**
|
|
||||||
- **苟活与强迫两个方向都不成立**:不清图则敌人持续输出、且换图新资源断供,苟活没有收益;不清图也能靠多轮磨死小怪场,普通场不存在强迫。风险集中在 Boss 场对清图的结构性依赖(上一条)。
|
|
||||||
- **差异化程度为零**:现行只有默认槽一行群伤,三档图类型(dungeon/underdark/deep_underdark)共用同一清图奖励;预留插槽未启用(§1 已述)。清图奖励的形态单一(只有伤害一种)也加重了上一条的耦合——想调「清图给什么」只有调一个伤害数字可用。
|
|
||||||
|
|
||||||
### 数值核对
|
|
||||||
|
|
||||||
核对范围按任务书只到四项,不给任何调参方案。
|
|
||||||
|
|
||||||
**① 九型兑付数值是否在设计文档声明的取值带内**:全在。reward.tres 19 行 weight 均在 [0,999]、power 均在 [0,999];区间行过中点锚校验(heal_minor 2/2/2、clear_blast 24/32/40,(24+40)/2=32 恰为整中点);负向 9 行 weight=0 纯字典符合声明;clear_default 池恒正当量校验在案(reward_table.gd:116-118)。状态行幅度均在各自取值域(status_effects.tres 九行,attack_up 50、weaken −65 在 [60,85] 取负、off_guard −1、alert +1 等)。
|
|
||||||
|
|
||||||
**② 摇号权重是否单点可调**:是。摇号池 = cell 池正向行 weight>0 全集(reward_economy.gd:306-316),每行 weight 是独立表字段,单行改动即单点调参;现行 9 行权重 14/11/16/4/8/8/8/6/2,合计 77。注意权重面已有两个外部投影(偏运硬币 +N、图级偏斜守恒重分配,reward_economy.gd:195-249),单行调参的实际分布效果需在投影语境下复算。
|
|
||||||
|
|
||||||
**③ provisional 标记盘点**:reward.tres 全行 provisional 归难度曲线与Boss(文件尾部批注链);status_effects.tres 九行 provisional(off_guard 幅度、weaken duration 终值、当量锚复算归状态层重设计批);clear_blast 中点 32 为 Package B 第 4 轮 provisional 未提交值;gp 两行 tier=1 自记「provisional 占位」;flag_hit_premium=125、p_perfect=200、equivalence_ref_damage=4 均 provisional(settlement.tres:7-9 及批注)。本层没有一个数值是定稿状态。
|
|
||||||
|
|
||||||
**④ 明显失衡点标注(只标注)**:a) heal/pierce/magic 三型正负 3-4 倍量级差(§3 对称性已述);b) attack 正向 +50% 在 atk=2 粒度下实际 +1,名实落差(06-待办「八型批数值点评」条同族在案);c) spark_aoe 定值 1 对小怪 4 血是 25%、对 Boss 50+ 血约 2%,同型兑付价值随敌种血量方差极大;d) clear_blast 与 Boss 战耦合 + perfect 胜率 97% 越界(§3 清图节已述);e) gp_gain 权重 2/77 ≈ 2.6%,符合「低概率惊喜」定位,无量级问题,仅登记。
|
|
||||||
|
|
||||||
**文档与实现不一致清单(以代码和数据为准)**:
|
|
||||||
|
|
||||||
1. 九型字典 attack/ac_up/weaken 三行写「幅度/上限/权重见 reward.tres」(地图战斗资源.md:110-114)——幅度与上限实在 status_effects.tres,reward.tres 对应行 power=0 不消费;只有权重在 reward.tres。(低)
|
|
||||||
2. gp 型行名不一致:GDD 字典与调参表写 gp_gain/gp_loss,reward.tres 的 reward_id 实为 gp_coin/gp_lose(gp_gain/gp_loss 是 effect_id 通道键,reward.tres:184-202)。(低)
|
|
||||||
3. 候选集合节代码行号引用漂移:`_rollable_rows()`「第 207-213 行」实为 reward_economy.gd:306-316;身份循环「第 65-67 行」实为 :66-67;`_do_dig`「第 256-264 行」实为 minesweeper_rules.gd:300-316。(低)
|
|
||||||
4. 清图节图类型词表写 {dungeon, underdark}(2026-09-19),滞后于棋盘生成词表 v1.1 三词(+deep_underdark,2026-09-20;棋盘生成.md v0.4 注记「差异化插槽句不随批动」)。(低)
|
|
||||||
5. v0.16 注记「摇号权重合计面 76 为九型基准值」滞后:heal_minor 权重 2→4 后 cell 池正向合计为 77(reward_economy.gd:211 代码注释与 06-待办「冒险前资源配比预设」条均已写 77)。(低)
|
|
||||||
6. 任务书口径两处修正:level.tres 无清图奖励配置(§1 已述);「board_generator.gd(装板)」——装板编排(install + roll_board)实在 battle_orchestrator.gd:288-328,board_generator.gd 只生成棋盘、零资源逻辑。(低)
|
|
||||||
7. 05-不做清单:14「未开格显示奖励身份」旧裁定与 2026-09-18 类型微光拍板方向并存:待办条已裁决「修订不做清单裁定(owner 修订,合法)」且 HUD框架.md:131-141 已立微光正主定义,不做清单正文未同步修订。(低)
|
|
||||||
8. reward.tres 归属层核实结论:第一层审查报告称「reward.tres 实为格面层数据」——**属实**。现行 19 行中 18 行是 cell 池格面资源、1 行是 clear_default 清图槽,全部归地图战斗资源系统;历史上的可选类道具行已删、aux 秘宝投放词表保留但零投放(reward_economy.gd:306-313 门控分支)。表名「reward」是历史沿用,内容就是本层。(登记,非问题)
|
|
||||||
|
|
||||||
## §4 拓展方向
|
|
||||||
|
|
||||||
以下只写方向,不设计具体道具、不写数值。道具设计权归用户(2026-10-04 裁定)。
|
|
||||||
|
|
||||||
1. **类型先读通道落地(微光实施)**。§2 决策张力与反套路空间两个主发现同根:类型层的决策价值整体挂在未实施的「未开格类型微光」上(HUD框架.md:131-141 定义已定稿、色带已冻结)。实施后「抢类型」「类型是第二层规划素材」两句设计意图才第一次为真,负向惩罚也从盲盒变明账。同时需要把 05-不做清单:14 的旧裁定按已裁决方向正式修订,消掉文档层面的并存矛盾。
|
|
||||||
2. **兑付时限口径的显性化**。§3 主发现:本层真实时限是三档并存(当轮状态 / 下轮行动点与两轮削弱 / 跨战生命与金币),而「只在战斗结算生效」的旧表述支持了错误认知。方向是在 GDD 把九型时限逐型写清(§1 字典表可直接作为底稿),并在呈现与教学侧让玩家能预期「这份收益管多久」——否则后续所有涉及本层的设计评审都会按「一回合」的错误前提推演。
|
|
||||||
3. **清图奖励对象的差异化与非伤害化**。解决 §3 清图节两个问题:图类型差异化为零(插槽已留、词表已三词,启用只差配置行),以及清图奖励形态单一导致的「Boss 战必清图」耦合。clear_<图类型> 命名空间启用后,清图奖励可以从「一个伤害数字」扩展为按图类型配置的多样对象,Boss 战对清图尖峰的结构性依赖也随之有解。这是机制内已留好结构位的方向,不动九型枚举。
|
|
||||||
4. **兑付词汇的差异化**。针对 §1 小结的同质发现(pierce/magic 同构、四型兑付是换皮伤害数字):方向是丰富非伤害兑付词汇。增益状态容器还留着一个从未启用的「并存」合并策略位(增益状态.md P1),action/gp 两型已示范了非伤害轴的可行性。丰富词汇不等于加新型——九型封闭枚举是结构冻结项,加型走文档修订;在现有九型内让各行兑付形态拉开差异是更轻的起点。
|
|
||||||
5. **摇号面与地图/事件的挂接深化**。偏运硬币(件级投影)与 board_skew(图级投影)已开了「装板摇号可被外部投影」的先例(reward_economy.gd:195-249),冒险前资源配比预设(06-待办,2026-10-04 立项)是同一方向的放大——玩家预设分布、摇号定落位。方向是让「类型分布」成为地图、事件、构筑三方都能读写的公共面,本层从静态表变成被投影的基线。连带义务已在待办登记(经济契约对账须按配比包络复算)。
|
|
||||||
6. **负向兑付的梯度化讨论**。§3 对称性发现:标错与开雷格同档同罚,且 heal/pierce/magic 负向 3-4 倍于正向。方向有二且互不排斥:一是让两种失误的惩罚拉开档次(路由侧的事,不动字典);二是借助方向 1 的类型先读,让惩罚从「不可预知的重」变成「可预知的重」,把公平性感知问题转化为规划问题。两条都不需要动数值。
|
|
||||||
7. **「未来功能道具结构位」的兑现路径**。P1 登记的功能道具渠道(长周期、更强力的功能性道具,渠道归关卡节点地图域定稿)至今只是结构位。伤害单据管线已示范了本项目的标准扩展方式(新来源 = 填一张单,damage_controller.gd:86-104),功能道具落地时可沿同一管线接入兑付面,本层需要做的只是确认结构位的字段够用。此方向不解决具体发现,是把已登记的 P1 从「空位」推进到「可启用状态」的前置清理。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
审查方法说明:本报告按 systems-designer 框架(动词/决策/感受三问、最优策略反模式、隐藏信息过载检查)与 game-balancer 方法(取值域核对、权重分布与期望口径、provisional 盘点、失衡只标注不调参)执行。全部数值判断均可回溯到上文标注的文件与行号。
|
|
||||||
@@ -1,209 +0,0 @@
|
|||||||
# 审查-奇物(2026-10-06)
|
|
||||||
|
|
||||||
审查对象:奇物层(一次冒险内获得、冒险收束即清零的增益总称),含分类轴三枚举(专长 / 属性值提升 / 资源)与渠道轴三出口(奖励节点三选一 / 商店 / 关底 Boss 击败)。件数与数值一律以 `game/data/tables/` 各表为准;文档与实现不一致处以实现为准,并把不一致本身记为发现。
|
|
||||||
|
|
||||||
先交代一处任务书口径修正:`game/data/tables/reward.tres` 不是奖励节点三选一池,它是**地图战斗资源**(格面资源)的表,属于道具三层里的第三层,不属奇物。奖励节点与通关的三选一池事实源是 `game/data/tables/adventure.tres` 的 `curio_*` 行族(配额、件值、门票四参数)。本报告按此口径盘点。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §1 现状盘点
|
|
||||||
|
|
||||||
### 1.1 专长(27 件,`game/data/tables/feats.tres:7-261`)
|
|
||||||
|
|
||||||
| 件名 | rarity | archetype(流派) | hook | 机制一句话 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 奥术余烬 | 普通 common | magic | hero_attack_rider | 普攻命中后追加 1 点必中魔法伤害 |
|
|
||||||
| 魔网织者 | 稀有 rare | magic | clamp_modifier | 魔法伤害对魔法护甲敌克制点 +1 |
|
|
||||||
| 湛蓝誓约 | 稀有 rare | magic | clamp_modifier | 魔法伤害对重甲敌克制点 +1 |
|
|
||||||
| 魔能共鸣 | 罕见 rarest | magic | first_dig_spell | rider 附加 +2;首次开安全格追加 2 点必中奥术矢(文档写「每关首次」,实现是「每战首次」,`battle_orchestrator.gd:492-497` 台账披露待追认) |
|
|
||||||
| 雷区图谱 | 普通 common | flag | flag_resource | 标中雷立即额外得 1 份格面资源 |
|
|
||||||
| 猎巢人 | 稀有 rare | flag | nest_aura | 每控制 1 巢穴,对其中敌伤害 +1 |
|
|
||||||
| 完美布防 | 稀有 rare | flag | flag_all_hit | 同轮旗全部标中则该轮旗伤 ×2 |
|
|
||||||
| 战旗军规 | 罕见 rarest | flag | flag_strike | 轮末每面标中旗对所在巢穴敌结算 2 点必中伤害 |
|
|
||||||
| 贯穿射击 | 罕见 rarest | pierce | kill_overflow | 击杀时溢出伤害半额弹射下一存活敌 |
|
|
||||||
| 连珠矢 | 稀有 rare | pierce | dig_count_segments | 本轮每开 3 安全格攻击 +1 段(上限 2 段),段值 2 |
|
|
||||||
| 猎弱本能 | 稀有 rare | pierce | roll_discount | 命中折扣档前移一档 |
|
|
||||||
| 猎手刺剑 | 普通 common | pierce | clamp_modifier | 穿刺伤害对轻甲敌克制点 +1 |
|
|
||||||
| 矿工的执拗 | 普通 common | normal | round_dig_bonus | 本轮每安全开格攻击 +1(上限 5),踩雷清零 |
|
|
||||||
| 矿工重锤 | 普通 common | normal | hit_trade | 攻击 +25%、命中判定 −2(正负双修原生件) |
|
|
||||||
| 专注 | 稀有 rare | normal | armor_roll_rewrite | 攻击不掷骰,恒按 75% 折扣结算 |
|
|
||||||
| 碎甲震击 | 稀有 rare | normal | heavy_debuff | 命中重甲附加护甲裂解 25(后续全队增伤) |
|
|
||||||
| 贪婪矿灯 | 普通 common | dig | dig_yield_mult | 开格正向产出 +25%,踩雷负向 +25% |
|
|
||||||
| 矿脉直觉 | 稀有 rare | dig | dig_yield_mult | 开格产出 +10%,连续安全开格逐连加成(上限 5 连),踩雷清零连击 |
|
|
||||||
| 赌徒的血签 | 罕见 rarest | dig | dig_yield_mult | 开格正向产出 +50%,踩雷负向 +100% |
|
|
||||||
| 深挖钻头 | 稀有 rare | dig | deep_dig | 开格可多付 1 AP 使本格产出双份(2026-10-04 v2 形态;effects 里的 cap 4 已无消费面,见 §3.4) |
|
|
||||||
| 整备军备 | 罕见 rarest | charge | ap_carry | 停手时剩余 AP 转蓄力层(上限 3),每层下轮首段 +1 |
|
|
||||||
| 铁壁整备 | 稀有 rare | charge | charge_shield | 每层蓄力转 1 点减伤 |
|
|
||||||
| 厚积薄发 | 稀有 rare | charge | charge_spike | 蓄力满层时下轮首段 ×2 |
|
|
||||||
| 地脉采撷 | 普通 common | devour | terrain_refund | 受地形伤害时补偿 1 份格面资源(伤害仍发生) |
|
|
||||||
| 荆棘编织者 | 稀有 rare | devour | terrain_dig_double | 挖开伤害型地形格产出双份 |
|
|
||||||
| 净化工兵 | 稀有 rare | devour | flag_neutralize | 标中旗中和相邻伤害型地形格 |
|
|
||||||
| 熔火之躯 | 罕见 rarest | devour | variant_counter | 每受 1 次地形伤害积 1 层,轮末每层对全体敌 1 点必中反伤 |
|
|
||||||
|
|
||||||
分布:七流派 magic / flag / pierce / normal / dig / devour 各 4 件,charge 3 件;稀有度普通 7 / 稀有 14 / 罕见 6。挂点真实兑付面已逐件核实:23 种 hook 全部经 `battle_orchestrator.gd:106-184` 译为结算旗,且每一面旗都有下游消费(`damage_controller.gd:203-312` 战斗侧、`battle_orchestrator.gd:482-994` 扫雷/地形/旗判侧、`action_economy.gd:98-150` 行动经济侧)——**27 件没有一件是死挂点**。每流派至少 1 件挂扫雷结算触发点的红线由 `feat_table.gd:113-126` 加载校验硬卡,七流派全过。
|
|
||||||
|
|
||||||
### 1.2 资源(4 项,`adventure.tres:14-30`)
|
|
||||||
|
|
||||||
| 项 | 档位与配额(令牌数) | 件值 | 奖励节点 | 商店 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 金币(GP 袋) | 普通 18 / 稀有 5 | 20 / 50 | 出 | **不出**(「计价物不自售」谓词,`shop.tres:68-92` 货架词表无 gp 行,符合设计) |
|
|
||||||
| 回复 | 稀有 3 | +6(当即回血,封顶生效上限) | 出 | 出(`shop.tres:88-91`「应急回复」基价 5) |
|
|
||||||
| 行动点上限 | 罕见 3 | +1(每场战斗首轮基线) | 出 | 出(`shop.tres:80-83`「行动点件」基价 5) |
|
|
||||||
| 刷新次数 | 稀有 2 | +1 | 出 | **不出**(货架词表无 refresh 行——奇物.md 1.3 声称「奖励节点与商店两个渠道都可出现」(奇物.md:97),数据不支持,记为发现 F-13) |
|
|
||||||
|
|
||||||
另有一件渠道形成员:**专长获取门票**(按奇物.md 2.2 归专长的非 Boss 形态)——奖励节点与商店都出,出现概率 20%(`adventure.tres:31` `feat_ticket_chance`)、每局出现上限 2(`feat_ticket_quota`)、限购 1 次(`feat_ticket_limit`)、计步保底连续 5 次展示未出第 6 次必出(`feat_ticket_pity_step`),商店货架「奇物门票」基价 5(`shop.tres:84-87`)。四参数的实现与文档口径逐条核对一致(`adventure_runner.gd:809-828`:保底按展示次数计、刷新重展计入、节点与商店共享同一计数、触发清零、限购满后保底冻结)。
|
|
||||||
|
|
||||||
主收入侧的金币掉落(非奇物兑付、归冒险结构 GP 账本)顺带登记供 §2.4 用:普通战斗均值 3(2-4)、精英 5(4-6,预留)、Boss 8(6-10),关级加值 L1/L2/L3 = 0/1/2(`shop.tres:7-35`)。
|
|
||||||
|
|
||||||
### 1.3 属性值提升(3 项,`adventure.tres:9-13, 20-25`)
|
|
||||||
|
|
||||||
| 项 | 档位与配额 | 件值(小/大) | 奖励节点 | 商店 |
|
|
||||||
|---|---|---|---|---|
|
|
||||||
| 攻击 | 普通 18 / 稀有 5 | +1 / +2 | 出 | 出(「攻击锻升」基价 4,`shop.tres:68-71`) |
|
|
||||||
| 生命上限 | 普通 17 / 稀有 5 | +5 / +10 | 出 | 出(「生命锻升」基价 4,`shop.tres:72-75`) |
|
|
||||||
| AC(护甲) | 普通 17 / 稀有 5 | +1 / +2 | 出 | 出(「护甲锻升」基价 4,`shop.tres:76-79`) |
|
|
||||||
|
|
||||||
参照基值(`hero.tres:7-9`):生命 26 / 攻击 2 / AC 10。三项封闭、与文档口径一致。商店价格公式 = ceil(基价 × 1.1^(关序−1) × 1.8^(本次进店已购次数))(`level_runner.gd:805-814`,knob 在 `shop.tres:93-94` `price_a=1.8 / price_b=1.1`)。
|
|
||||||
|
|
||||||
### 1.4 三分类 × 三渠道交叉开关表:实际填充小结
|
|
||||||
|
|
||||||
按实现(`adventure_runner.gd:782-811` 渠道白名单过滤 + `level_runner.gd:758-790` 货架词表)填格:
|
|
||||||
|
|
||||||
| 分类 \ 渠道 | 奖励节点 | 商店 | 关底 Boss 击败(=通关) |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 专长 | **门票**(20% 概率 + 保底,替换末位候选) | **门票**(同池同保底,货架基价 5) | **直接给**(三选一,候选只出专长令牌,`adventure_runner.gd:785-786, 985`) |
|
|
||||||
| 属性值提升 | 出(3/3 项齐) | 出(3/3 项齐) | 空(设计如此——Boss 是专长独占渠道) |
|
|
||||||
| 资源 | 出(4/4 项齐) | 部分出(行动点、回复在架;金币按谓词不出;**刷新次数不在架**) | 空(设计如此) |
|
|
||||||
|
|
||||||
九格里五格有内容、四格空。空格清单:①属性×Boss、②资源×Boss——渠道轴定位的设计空,成立;③金币×商店——「计价物不自售」可计算谓词,成立且与文档一致;④**刷新次数×商店——文档声称应出(奇物.md:97)而货架词表无此行**,是没对齐的实空(F-13)。
|
|
||||||
|
|
||||||
没有某一格独胖到失衡,但按令牌质量看分布倾斜明显:非 Boss 池 98 张里普通档 70 张全是属性+金币(小 GP 18/小攻击 18/小生命 17/小护甲 17),金币单种 23 张是池内最大户;稀有档 25 张里恢复 3 + 刷新 2 合计 5 张,罕见档仅 AP 3 张——「改手感」的件(AP/回复/刷新)合计 8/98 ≈ 8%,池子的绝对主体是数值件与钱。
|
|
||||||
|
|
||||||
件数与文档声称的核对:奇物.md 未声称专长件数;双层BD定稿(B3,`双层BD体系-整合定稿-2026-10-03.md:252`)写「首批 ~25 件」,实装 27——调研稿估算口径,不算正式失同步,提示而已。池总量 98 与冒险结构.md、schema 结构锚(`adventure_table.gd:36` `TIER_QUOTAS 70/25/3`)三处一致。但冒险结构.md 提升池表仍写「恢复件 稀有 5」(冒险结构.md:178),表内实为 3(让 2 席给刷新件,`adventure_table.gd:55` 批注「T6 挤占 2 席位予 refresh——用户 2026-10-05 裁方案B」)——文档滞后,记为发现 F-10 的附属。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §2 可玩性审查
|
|
||||||
|
|
||||||
### 2.1 决策张力
|
|
||||||
|
|
||||||
**三选一内部(非专长面)**:候选全部是纯增益数值件与钱,没有代价面——正负双修原则只覆盖专长(见 §3.4 F-9),属性/资源件之间不存在「拿 A 失 B」的天然对冲,取舍退化为「哪个数字眼下更有用」。真正起张力作用的是两条结构线,而且都成立:一是**共享池**——商店买一件,奖励节点面就少一枚(`adventure_runner.gd:84` 同一 `_curio_deck` 账本),花钱与等白嫖在抢同一份库存;二是**池子可 sculpt**——普通档 70 张被逐张消耗后,稀有/罕见件的相对密度上升,买便宜小件不只是买数值,也是在给后面的三选一「滤池」。这两条是现状里最有分量的决策来源,但它们是隐性的,玩家不看文档很难意识到第二条。
|
|
||||||
|
|
||||||
**专长三选一内部(Boss 面与门票面)**:从 27 件池抽 3,追流派件(赌后面还能摸到同标签)与拿无条件强件(放弃成型)之间的取舍真实存在——尤其在一局只有 2~3 次专长兑付的约束下(见 2.3),每次三选一都几乎是不可逆的方向投资。这条张力是全层最硬的一处。
|
|
||||||
|
|
||||||
**商店买 vs 攒**:金币是「当局清零、只能花在商店与付费刷新」的货币(冒险结构.md:140-146),攒着不花没有利息也没有结转,所以「买不买」是伪问题,真问题是「买哪件、买几件」。价格曲线(首购 L2 约 5、第二件约 8、第三件约 15,A=1.8 链按次爬升,`level_runner.gd:805-814`)让每次进店的前两三件便宜、后面陡贵,配合每次买后整架重抽(`level_runner.gd:750, 758`),节奏自然是「每店扫两三件便宜货」。**换算上一个值得点名的观察**:小 GP 袋 20 ≈ 商店两三次首购(≈ +2~4 点属性),而小攻击件只值 +1——在三选一面里「拿钱」经常比「拿数值」划算,GP 袋是池内最大户(23 张)进一步放大了这个倾向。此处只标注换算关系,调参归难度曲线与Boss批。
|
|
||||||
|
|
||||||
**付费刷新的定价体感**:刷新价 ceil(20 × 1.8^已付费刷)(`level_runner.gd:850-852`,knob 是 schema 默认值 `adventure_table.gd:44-45`,adventure.tres 未落行)——首刷 20 ≈ 四次商店首购,相对收入(单关约 20-40 GP,见 2.4)非常贵,免费刷新基础 0 次。结果是商店刷新机制存在但早期几乎用不起,命中率压力实际由门票保底与共享池吸收。
|
|
||||||
|
|
||||||
### 2.2 构筑协同
|
|
||||||
|
|
||||||
**流派内协同**:七个流派的件面按「同一标签互相抬」组织,骨架成立——魔法流 rider 件(余烬/共鸣)与克制件(魔网/湛蓝)共享同一份魔法伤害输出面;标旗流四件全挂旗判批(图谱给资源、军规开单、布防倍增、猎巢光环),是一条自洽的「旗从防御转输出」链;蓄力流三件围着蓄力层转(军备产层、铁壁花层减伤、厚积满层爆发),但**蓄力层的唯一来源是整备军备**——没抽到军备,铁壁与厚积的 `charge_layers` 恒 0,两件都是死件(`battle_orchestrator.gd:975`、`damage_controller.gd:312, 237`)。一个流派里两件以第三件为启动前提,而第三件是罕见档、全池只此 1 张——这是协同结构里最脆的一环。
|
|
||||||
|
|
||||||
**跨流派组合**:扫雷侧件与战斗侧件有真实的跨流派桥——开格流的产出(开格计数)同时喂养穿刺的连珠矢与普攻的执拗;吞噬流的地形件与标旗流(净化工兵吃旗判)有交叠。混搭空间存在,2+2 中间态在机制上可行(档位按标签独立计数,`feats_engine.gd:13-30`)。
|
|
||||||
|
|
||||||
**但档位质变只有魔法流真的兑付**:`FeatsEngine.tiers_for` 对七流派都算档,可消费档位的只有 magic(`battle_orchestrator.gd:176-180`:档一 rider+1、档二 rider 可暴击);其余六流派的「档一/档二」在结算里**没有任何兑付点**,只有 HUD 显示档位读数(`hud_presenter.gd:108-110`)。也就是说「集 2 件质变、集 4 件完全体」这套成型判据,对七分之六的流派目前是一句界面提示,不是结算事实——玩家凑齐两件标旗件,什么也不会发生。**【高 H-2】**
|
|
||||||
|
|
||||||
**支配性候选**:无条件件(不看流派、不看局面、拿到就赚)在池子里的权重偏高——奥术余烬(普通档,每次普攻必中 +1,对基值攻击 2 的主角是无条件 +33%~50% 期望输出)、矿工重锤(+25% 攻击,代价 −2 命中对低 AC 段近似免费)、专注(恒 75% 折扣,把方差买断)。27 件里 23 件无任何代价键(见 §3.4 F-9),三选一的「拿件永远是决策」(土豆兄弟式正负双修)在实装面大面积不成立。这些件在任意构筑里都是优先进项,是收敛压力的来源。**【中 M-6】**
|
|
||||||
|
|
||||||
### 2.3 反套路空间
|
|
||||||
|
|
||||||
**每局构筑方向确实分化**:专长令牌每局从同一副 27 张的牌库不放回抽,每局确定性的专长兑付只有 2 次(L1、L2 关底 Boss;L3 终局 Boss 不给,`adventure_runner.gd:975-1000` 非末关分支),加门票最多 3 次(`adventure.tres:33` 限购 1)。2~3 次三选一、每次见 3 件——每局能拿到的专长只占全池约一成,且选中踢池,物理上不可能两局拿同一套。分化是结构保证的,这一点成立。
|
|
||||||
|
|
||||||
**但「成型」在这套次数下基本不发生**:档一需同标签 2 件、档二需 4 件。一局 2~3 次专长兑付,每次三选一里出现同标签两件的概率有限(3 个候选 ÷ 27 张池、7 个标签),玩家可以靠「见同标签就锁」主动凑档一,但档二在一局最多 3 件的总盘子下**严格不可达**——不是奇物.md:334 写的「几乎不可达」,是不可能(该条已登记延后复裁,此处只是把「几乎」修正为「严格」并附上代码依据)。charge 流派全池只有 3 件(feats.tres),档二对它原理性不可达(奇物.md:335 已登记)。结论:当前三关结构下,所有流派实际都活在「散件单体保底」层,档位系统是分叉不到的未来内容——这使 2.2 的 H-2(六流派档位无兑付)在当前反而无实际伤害,但第四关落地时两者会同时变成真问题。
|
|
||||||
|
|
||||||
**收敛风险**:分化的另一面是「每局都抓同一批无条件强件」。余烬/重锤/专注这类不看流派的件在任何方向里都成立,而稀有度又不影响出现率(每件 1 张令牌等概率,`adventure_runner.gd:281-291` 建库 + Fisher-Yates 等概率抽),罕见锚点件与普通件同概率刷脸——玩家很快就会学会「无视流派、按强度表抓件」。另外提一个测量面隐患:MC 自动策略 316-f 是「1 级优先度=最稀有」(冒险结构.md:183),模拟读数系统性偏向罕见件,不能拿 MC 的选取分布当人类取舍的证据。
|
|
||||||
|
|
||||||
### 2.4 获取体验
|
|
||||||
|
|
||||||
**兑付节奏**:一局的奇物触点 = 奖励节点 3 次(三关各 1,`level.tres:8-10` 三关模板各 1 个 reward 节点)+ 商店 2 次(仅 L2、L3 有商店节点)+ Boss 专长三选一 2 次 + 门票至多 1 次。数值与资源沿关卡中段流动,但**构筑身份(专长)的全部决策被压在 2~3 个关底时刻**——关内三选一只给数字不给规则,玩家在关内做的所有三选一都不改变「这局是谁」,只有打赢 Boss 那一刻才变。延迟满足本身符合品类通例(杀戮尖塔/哈迪斯同构,奇物.md:157 有登记),但叠加「档二不可达 + 六流派档位无兑付」之后,关底三选一的实际内容是「再挑一件散件」,仪式感大于构筑感。
|
|
||||||
|
|
||||||
**商店票价与收入匹配**:L1 全程收入约 20 GP(4 场普通战 ×3 + Boss 8 + 零星格面惊喜),L2 进店前累计约 40,L3 进店前约 60-70(`shop.tres:7-35` 掉落行值推算)。首购 5 GP 起、A 链爬升到第四件约 26——每次进店买得起 2~4 件,既不渴死也不随便全扫,取舍空间成立。一个结构性别扭:**L1 没有商店节点**(`level.tres:8` 五个模板均无 shop;冒烟批注「两关商店房必经各 1」`smoke_all.gd:476-477` 坐实只有两关有店)——这既违反关卡节点地图.md「每关恰 1 个商店房、Boss 前一位必经位」的编排规则(关卡节点地图.md:63),又让 L1 挣的约 20 GP 在第一关全程无消费口,经济体验的第一课是「钱没处花」。**【中 M-3】**
|
|
||||||
|
|
||||||
**命中率**:想要的件摇不到怎么办,现状给出的缓冲是三层——共享池(商店与奖励节点互为备份)、买后/付费重抽、门票计步保底。但保底只保门票本身,具体某件奇物没有任何保底:罕见 AP 全池 3 张,单次三选一摇到 AP 的概率约 9%(3/98 按令牌粗估),一整局 5~7 个非 Boss 停点下来约四成局见不到 AP;想要某件指定专长,单个 Boss 停点命中率 3/27 ≈ 11%。池子越大越稀释,这个方向目前只有「池耗即枯竭」的自然缓解(消耗普通件提高稀有密度),没有主动对焦机制。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §3 合理性审查
|
|
||||||
|
|
||||||
### 3.1 生命周期 ↔ 强度匹配
|
|
||||||
|
|
||||||
当局清零的边界在实现里是干净的:专长持有集、令牌池、门票计数全部活在 AdventureRunner 的局内存态里,新冒险 `_reset_curio_state()` 全清(`adventure_runner.gd:269-277`);跨局存档 meta 域逐键核对(`save_manager.gd:102-117` 默认数据模型:keystone/forge/tree/attunement 等 12 键)**没有任何奇物键**——专长只进断点域瞬态快照(`"relics"`、`feat_ticket_pity` 等,`adventure_runner.gd:1085-1088`),属文档明许的断点豁免(冒险结构.md:310)。27 件专长的效果逐一过挂点语义:全部作用于当局战斗结算、扫雷结算、行动经济与地形处理,没有一件碰钥石、元进度、同调或任何跨局面。强度配「这一局」没有问题。
|
|
||||||
|
|
||||||
反向的瑕疵倒有一个:魔能共鸣的「每关首次开格」被落地成「每战首次」(`battle_orchestrator.gd:492-497` 批注自承「台账披露待追认」)——效果在生命周期内被放大了约 5 倍(一关约 5 战),这是强度与原始设计口径的失配,挂着待追认状态一直没收口。**【低 L-7】**
|
|
||||||
|
|
||||||
### 3.2 渠道 ↔ 稀有度匹配
|
|
||||||
|
|
||||||
**专长侧:rarity 对获取难度零影响。** 建库时每件专长恰好 1 张令牌(`adventure_runner.gd:289-291`),Boss 渠道在 27 张里等概率抽 3——普通的奥术余烬与罕见的贯穿射击出现率完全相同。feats.tres 头部批注的「common/rare→稀有令牌档、rarest→罕见令牌档」(feats.tres:270-271)只是给令牌贴了个档标签,Boss 渠道抽选不按档分层,这个映射在现行结构里是空转。「专长稀有且改变机制」的定位里,「改变机制」成立,「稀有」目前只剩卡片上的一行字。对比属性/资源侧:rarity 确实映射到配额档(70/25/3),出现率差异真实存在——**同一个 rarity 字段在两个分类里语义不一致**,一个管概率一个不管。**【中 M-4】**
|
|
||||||
|
|
||||||
**商店与奖励节点的档次**:两渠道同池同件同档(共享池是 2026-10-03 拍板的设计,冒险结构.md:154),商店卖的和奖励节点给的没有任何档次差——差异化全靠「花钱定向 + 买后重抽」。这是已拍板形态,不算缺陷,但值得点名事实:商店没有自己的货架深度,票价买的纯粹是确定性。
|
|
||||||
|
|
||||||
### 3.3 边界判据执行
|
|
||||||
|
|
||||||
「当局清零 vs 跨局保留」一刀切在实现里执行一致,见 3.1 的存档键核对,无越界。但同一份文档/代码集里有一批**口径漂移**,逐条登记(文档滞后于实现,除注明外均为低severity):
|
|
||||||
|
|
||||||
- **F-1【高】刷新次数资源件是死档。** 兑付「刷新次数 +1」只加进 `_attune_refresh_x`(`adventure_runner.gd:414-415`),而这本账在**每一次三选一呈现时无条件重置**为秘宝同调基线(`adventure_runner.gd:572, 981` 与 `present_node_curio:573`)。玩家在奖励节点选刷新件 → 停点关闭 → 下一个三选一呈现时 +1 被清零——**从选出到被抹掉之间不存在任何可消费它的窗口**(商店刷新走的是独立的 `shop_refresh_free`/付费计数,不吃 X/Y)。池里 2 张刷新令牌是给玩家递的空选项,还占着稀有档席位。这同时违反默认原则的精神(分类成员在池里就该是有效成员)。
|
|
||||||
- **F-2【中】通关三选一的内容文档与实现分裂。** 冒险结构.md:164,170-181 仍写非末关通关发「提升池六种(攻击/生命/护甲/GP/恢复/AP)三选一」,实现里通关面只出专长令牌(`adventure_runner.gd:785-786` 渠道过滤 + 985 批注「T4 渠道白名单」),「六种」早已是七种(含刷新)且整体挪去了奖励节点/商店面。属性与资源的兑付次数因此比冒险结构文档声称的少(通关面不再出),相邻文档没跟上渠道轴裁决。
|
|
||||||
- **F-3【中】L1 无商店节点**(详见 2.4,违反关卡节点地图.md:63 编排规则,且 L1 金币无消费口)。
|
|
||||||
- **F-4【低】奇物.md 两处「尚未入表」已入表。** 调参表写门票四参数「尚未入表」(奇物.md:303)、资源种类注「刷新次数与专长获取两项尚未入表」(奇物.md:305)——`adventure.tres:14, 17-18, 31-34` 全部在表。
|
|
||||||
- **F-5【低】奇物.md 2.5 在册事项声称渠道分工「尚未实施」(奇物.md:241-243)**——三渠道白名单过滤已实装(T4/T5,`adventure_runner.gd:778-788`),交叉表已是现行状态。
|
|
||||||
- **F-6【低】奇物.md 三处引用 `relics.tres`(奇物.md:64, 286, 335)**,实际文件名是 `feats.tres`(同文件调参表:302 写的就是 feats.tres,文档内部自相矛盾)。
|
|
||||||
- **F-7【低】「一关只兑付一次」的字面越界。** 奇物.md:12, 52 写「一关之内奇物只兑付一次,触发点是关底 Boss 被击败」,但同文档的循环图(奇物.md:39-50)与实现都表明奖励节点、商店在关内中途就兑付属性/资源——这句口径只对「战斗节点不给 + Boss 渠道一次」成立,写成全称命题与自身图示打架。
|
|
||||||
- **F-8【低】完美布防稀有度不一致**:双层BD定稿 S5 表写「罕见」(`双层BD体系-整合定稿-2026-10-03.md:215`),feats.tres 实为 rare。以表为准,调研稿未回改。
|
|
||||||
|
|
||||||
### 3.4 数值核对
|
|
||||||
|
|
||||||
只核四项,不给调参方案(调参归难度曲线与Boss批):
|
|
||||||
|
|
||||||
**① rarity 与数值幅度的相关性**:属性/资源侧严格单调——稀有件值 = 普通 ×2(攻击 1/2、生命 5/10、护甲 1/2),大 GP = 小 GP ×2.5(20/50),罕见 AP 独占一头,成立。专长侧相关性弱且局部倒挂:普通的奥术余烬是无条件 rider +1,稀有的魔网织者/湛蓝誓约是条件触发(限定敌护甲类型)的 +1,常见局面下普通件期望不低于稀有件;普通的矿工重锤 +25% 攻击的幅度压过多数稀有件。rarity 在专长侧既没有概率含义(3.2)也没有稳定的幅度含义。**【中 M-4 同条登记】**
|
|
||||||
|
|
||||||
**② 属性提升幅度带内带外**:schema 取值域 [0,999](`adventure_table.gd:60-72`),实值 1~50 全部带内。相对基值的幅度需要标注:大攻击 +2 对基值攻击 2 是 **+100%/件**(池内 5 张),小攻击 +1 是 +50%/件(18 张);大生命 +10 对基值 26 约 +38%;AC +1/+2 走掷点阈值轴不按百分比计。幅度本身有池竞争做软闸(攻击令牌要和另外 75 张抢 5~7 个停点),不构成必须动的失衡,但「攻击件值相对基值的比例」是全池最陡的一根杠杆,标注为失衡观察点。**【低 L-5】**
|
|
||||||
|
|
||||||
**③ provisional 标记盘点**:审查面内数值**全域 provisional**——adventure.tres 尾部批注「全部 provisional-pending-曲线调参批」(含配额 70/25/3 为结构锚、值锚归曲线批);feats.tres「数值全 provisional 归 M-4 数值批」;shop.tres「货架行值全部 provisional」;门票四参数 schema 注 provisional(`adventure_table.gd:77-80`);价格因子 1.8/1.1 provisional;刷新旋钮 20/1.8/0 是 schema 默认值的 provisional 且 **adventure.tres 未落行**(表里没有 shop_refresh_* 三行,运行靠 schema 默认值兜底——knob 不在表内,调参批改表会扑空,`adventure_table.gd:43-45`)。另外商店付费刷新与三选一付费刷新共用同一对旋钮(冒险结构.md:335),单点调参口径已登记。另有一批**表值被代码字面量顶死**的破口:整备军备蓄力上限写死 `mini(3, …)`(`action_economy.gd:145`,表内 cap=3 只是巧合一致)、矿脉直觉逐连步长写死 ×10(`battle_orchestrator.gd:622`)、连珠矢「每 3 格 1 段」的除数写死 /3(`battle_orchestrator.gd:994`)、厚积薄发满层阈值写死 charge_layers>=3(`damage_controller.gd:215, 237`)——这些数表上改了不会生效;深挖钻头的 `deep_dig_cap`(表内 cap=4)自 v2 改形态后**无任何消费面**(仅冒烟读,`battle_orchestrator.gd:161`),是死字段。**【中 M-5】**
|
|
||||||
|
|
||||||
**④ 明显失衡点标注**:a) F-1 刷新件死档(2 张稀有令牌零收益,池内最劣选项没有之一);b) 蓄力流两件以罕见档整备军备为唯一启动器(2.2),该流派整体是「抽到军备才存在」的流派;c) 小 GP 袋 20 的换算效率高于同档数值件(2.1),GP 袋 23 张为池内最大户,三选一里「拿钱」常是数学最优——与「属性提升是池子主体」的体感定位有张力;d) 魔能共鸣「每关首次→每战首次」的口径放大(3.1)未收口。均只标注,方案归曲线调参批。
|
|
||||||
|
|
||||||
另登记一条原则与数据的差距:**正负双修原则在实装面大面积缺席**——27 件里带代价键的只有 4 件(矿工重锤、贪婪矿灯、赌徒的血签、深挖钻头),23 件纯增益;`feat_table.gd:17-18` 要求纯增益件「以 positive_only 批注登记、人工清单呈报」,但全表没有一行带 note/positive_only 批注(feats.tres 通篇无 note 字段)——原则的执行登记机制空转。按用户 2026-10-04 裁定(27 件「烂但暂不重设」),此处只登记差距,不提案重设。**【中 M-6 同条登记】**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## §4 拓展方向
|
|
||||||
|
|
||||||
以下只写方向,不设计具体道具(道具设计权归用户,2026-10-04 裁定),不写数值草案,也不提「重新设计 27 件」。
|
|
||||||
|
|
||||||
**方向一:把刷新次数件修活,再谈它的渠道。** F-1 死档不解决,刷新×商店那格填不填都没有意义。修复方向有两条路子可选:让刷新件走一本不随停点重置的独立账(与秘宝 X/营地 Y 双源并列成第三源),或把它改成「选中即重抽当前停点一次」的即时兑付(与金币/回复的即时兑付性质同族)。顺带可以把 F-13(刷新不在商店货架)一并裁决:要么货架词表补行,要么文档改掉「两渠道都可出现」那句。解决 §3 的 F-1/F-13 与 §2.1 刷新定价被架空的连带问题。
|
|
||||||
|
|
||||||
**方向二:给六流派的档位质变立「兑付位」,而不是先立效果。** 引擎投影(tier 读数)已在,缺的是每流派档一/档二挂在结算管线哪一段的机制位——这属于系统结构立项(像 magic 挂 rider 段那样给 flag/pierce/normal/dig/charge/devour 各指一段),具体质变效果设计归用户与数值批。不先立兑付位,第四关落地后「档二可达」也无处兑现。解决 §2.2 的 H-2,也是 2.3 档二复裁的前置。
|
|
||||||
|
|
||||||
**方向三:让 rarity 在专长侧获得真实语义。** 现状 rarity 在专长侧不管概率也不稳管幅度(§3.2、§3.4①)。可走方向是按档分层 Boss 候选(如三选一候选按档配比或加权),或让门票池与 Boss 池的档构成拉开——核心是让「罕见锚点」稀有一点,普通件做大盘子。这会同时缓解收敛压力(§2.3:罕见件与普通件同概率刷脸,强度表抓件策略没有成本)。
|
|
||||||
|
|
||||||
**方向四:对齐商店编排与第一关经济。** L1 无商店节点与「每关恰 1 个商店房」必须二选一收口(改图或改文档),它同时决定「L1 挣的钱有没有处花」。若补 L1 商店,商店渠道从一局 2 次变 3 次,门票保底计数与池耗节奏都要跟着重估;若改文档承认两关一店,则 L1 的金币投放节奏值得单独看一眼。解决 §2.4 的 M-3。
|
|
||||||
|
|
||||||
**方向五:按已登记的触发条件,在第四关内容批复裁档位结构。** 奇物.md:334 已登记「第四关落地后实测复裁」,本审查补两条硬证据:现行三关结构下档二**严格**不可达(每局专长兑付上限 3 件 < 阈值 4),charge 流派件数缺口(3 < 4)使其原理性不可达。复裁时的可选项空间包括调阈值、调兑付次数、或由用户补 charge 第 4 件——件设计权归用户,此处只保证证据上桌。
|
|
||||||
|
|
||||||
**方向六:稀有/罕见资源件的曝光机制。** AP 3 张、回复 3 张、刷新 2 张合计 8/98,是池子里最稀的一档,且无任何保底(保底只保门票)。方向是讨论「非专长件要不要某种曝光/分层机制」(如停点候选的档配比、或商店货架对稀缺种的定向位),让「改手感的件」在一局里至少露脸一次——不立新件,只讨论池结构。回应 §2.4 命中率与 §1.4 的分布倾斜。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 附:发现清单索引
|
|
||||||
|
|
||||||
| 编号 | 级别 | 内容 | 位置 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| H-1(=F-1) | 高 | 刷新次数资源件死档:X 账每次三选一呈现重置,兑付 +1 无消费窗口 | adventure_runner.gd:414-415 vs 572/981 |
|
|
||||||
| H-2 | 高 | 六流派档位质变无消费面:tiers 只有 magic 被兑付 | battle_orchestrator.gd:176-180;feats_engine.gd |
|
|
||||||
| M-1(=F-2) | 中 | 通关三选一内容文档与实现分裂(提升池六种 vs 只出专长) | 冒险结构.md:164,170-181 vs adventure_runner.gd:785-786 |
|
|
||||||
| M-2(=F-3) | 中 | L1 无商店节点,违反「每关恰 1 商店房」,L1 金币无消费口 | level.tres:8 vs 关卡节点地图.md:63 |
|
|
||||||
| M-3(=F-9) | 中 | 正负双修原则缺席:23/27 纯增益,positive_only 登记空转 | feats.tres;feat_table.gd:17-18 |
|
|
||||||
| M-4 | 中 | 专长 rarity 与概率、幅度双脱钩 | adventure_runner.gd:289-291;feats.tres |
|
|
||||||
| M-5 | 中 | 表值被代码字面量顶死 4 处 + deep_dig_cap 死字段;刷新旋钮未落表 | action_economy.gd:145 等;adventure_table.gd:43-45 |
|
|
||||||
| M-6 | 中 | 无条件强件的支配性候选与收敛风险 | §2.2/§2.3 |
|
|
||||||
| L-1(=F-4) | 低 | 门票与刷新「尚未入表」实则已入表 | 奇物.md:303,305 vs adventure.tres:31-34 |
|
|
||||||
| L-2(=F-5) | 低 | 渠道分工「尚未实施」实则已实施 | 奇物.md:241-243 |
|
|
||||||
| L-3(=F-6) | 低 | relics.tres 引用三处,实为 feats.tres | 奇物.md:64,286,335 |
|
|
||||||
| L-4(=F-7) | 低 | 「一关只兑付一次」全称表述与自身图示打架 | 奇物.md:12,52 |
|
|
||||||
| L-5 | 低 | 攻击件值相对基值比例全池最陡(失衡观察点) | adventure.tres:20-21;hero.tres:8 |
|
|
||||||
| L-6(=F-8) | 低 | 完美布防稀有度 调研稿「罕见」 vs 表 rare | 双层BD定稿:215 vs feats.tres:66 |
|
|
||||||
| L-7 | 低 | 魔能共鸣「每关首次→每战首次」口径放大未收口 | battle_orchestrator.gd:492-497 |
|
|
||||||
| L-8(=F-13) | 低 | 刷新次数不在商店货架 vs 奇物.md「两渠道都可出现」 | shop.tres:68-92 vs 奇物.md:97 |
|
|
||||||
| L-9 | 低 | 恢复件配额 文档 5 vs 表 3(让位刷新件) | 冒险结构.md:178 vs adventure.tres:17 |
|
|
||||||
|
|
||||||
(高 2 / 中 6 / 低 9,共 17 条;F 编号为正文内联编号,与上表合并去重。)
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
# 审查-总览(2026-10-06)
|
|
||||||
|
|
||||||
> 道具系统三层审查的总览页。三份分层报告是同批交付物:
|
|
||||||
> - [审查-秘宝-2026-10-06.md](审查-秘宝-2026-10-06.md)——发现 11 条(高 1/中 4/低 6),拓展方向 6 条
|
|
||||||
> - [审查-奇物-2026-10-06.md](审查-奇物-2026-10-06.md)——发现 17 条(高 2/中 6/低 9),拓展方向 6 条
|
|
||||||
> - [审查-地图战斗资源-2026-10-06.md](审查-地图战斗资源-2026-10-06.md)——发现 13 条(高 2/中 4/低 7),拓展方向 7 条
|
|
||||||
>
|
|
||||||
> 合计发现 41 条(高 5/中 14/低 22),拓展方向 19 条。本页只做跨层对照与归集,逐件证据与行号一律在各分层报告。四份均为中间文档:结论吸收进 GDD 正主后按「吸收即死」纪律退役。
|
|
||||||
|
|
||||||
## 一、三层对照表
|
|
||||||
|
|
||||||
| 维度 | 秘宝 | 奇物 | 地图战斗资源 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 设计定位 | 营地装配、整局生效的同调件(机制轴唯一来源) | 当局获得、收束清零的增益总称(专长/资源/属性提升 × 奖励节点/商店/关底Boss) | 格面资源九型,装板摇号预分配,挖格/标旗触发兑付 |
|
|
||||||
| 生命周期 | 整局冒险 | 一场冒险 | 名义「一回合」,**实际三档并存**(当轮/下轮~两轮/跨战到冒险——见跨层问题一) |
|
|
||||||
| 获取渠道 | 营地装配,零门槛,位上限 3 | 一关一次兑付(Boss 击败为触发点),门票有保底 | 每个非封锁格必有,结构保证 |
|
|
||||||
| 数值承重 | 机制修正类(禁裸 flat 契约守住) | 专长改机制 + 属性/资源纯数值 | 伤害/状态/行动点/金币四路兑付 |
|
|
||||||
| 数值状态 | 全部 provisional | 全部 provisional | 全部 provisional |
|
|
||||||
| 现役规模 | 9 件(另退役 2、搁置 2) | 专长 27 + 资源 4 + 属性 3 + 门票 1 | 九型兑付 19 行 + 清图槽 1 行 |
|
|
||||||
| 审查结论一句话 | 结构健康,但有 1 个高危漏洞(爆破工兵包拒绝序颠倒可无限白嫖 AP)和 2 件被严格支配 | 问题最多的一层:刷新件死档、六流派档位空转、无条件强件收敛压力 | 设计意图(类型是第二层规划素材)整体挂在未实施的类型微光批上,实现度约等于零 |
|
|
||||||
|
|
||||||
## 二、跨层问题
|
|
||||||
|
|
||||||
以下四条是任何一份分层报告内部都看不全、必须摆在一起才显形的问题。
|
|
||||||
|
|
||||||
### 1. 生命周期轴实际上是四档,三层概念没把它切干净
|
|
||||||
|
|
||||||
用户口径里三层对应「跨局之外的三档」:整局(秘宝)/当局(奇物)/一回合(地图)。实现核对后,地图战斗资源层内部就横跨三档:状态类当轮、行动点下轮、削弱两轮、敌血一场战斗、**主角回血与金币一直活到冒险层**(heal 回的 2 点血跨战斗跨关,gp 进钱包冒险收束才清零)。也就是说「一回合层」里的 heal、gp 两型与奇物层的回复件、GP 袋是同一本账、同一寿命。三层之间没有越界(奇物零跨局写入已核实),但层内时限口径从未在任何文档里写清——「只在战斗结算生效」的旧表述被误读成「效果只活一回合」,按错误前提推演后续设计评审是实际风险。出处:地图报告 §3 时限口径节(含逐型对照表)。
|
|
||||||
|
|
||||||
### 2. 同一类效果在多层各有兑付通道,口径互不照面
|
|
||||||
|
|
||||||
- **行动点**:三层都在发 AP——地图层 action 型 ±1(下轮)、奇物层行动点上限 +1(罕见档 3 张)、秘宝层三件(工兵晨令每战 +1×3 轮 / 掘进蓄能积点换 +1 / 爆破工兵包 +4)。同一资源四条来路,强度差两个数量级(掘进蓄能全冒险 ≤+2 vs 爆破工兵包单充能 +4 还外带两效),没有一处文档把四条通道放在一起对账。
|
|
||||||
- **伤害骑乘**:秘宝淬毒刃纹与奇物专长 rider 族是同类东西走两条平行注入通道,且淬毒刃纹明文排除棋盘直伤——同一条「穿刺/魔法」构筑线,主角侧与棋盘侧加成口径不一致(秘宝报告 §3 定位自洽、地图报告 §2 构筑协同豁口,互为印证)。
|
|
||||||
- **刷新**:同一概念三个半来路——秘宝刷新件 X 源(活)、营地升级 Y 源(活)、GP 付费档(活)、奇物刷新次数资源件(**死档**:兑付款在下一次三选一呈现时被无条件重置,从选出到抹掉之间没有消费窗口)。玩家在池子里抽到的是一张必然归零的令牌。
|
|
||||||
|
|
||||||
### 3. 文档口径漂移是三层通病,合计约 20 处
|
|
||||||
|
|
||||||
三层报告的「文档与实现不符」合计约 20 处(秘宝 5、奇物 9、地图 5~7)。模式高度一致:文档声称「尚未入表/尚未实施」而实现早已落地(奇物 F-4/F-5),或文档停留在上一形态而实现已换代(秘宝.md 正文五处过渡形态残留、冒险结构.md「提升池六种」)。另有三个文件名层面的指路错误会实打实绊倒后续批次:秘宝.md 把 `treasure_items.tres` 误写为 `aux_items.tres`;奇物.md 三处误引 `relics.tres`(实为 `feats.tres`);`reward.tres` 表名沿用历史,内容 19 行全部归属地图战斗资源层——本次两个审查 agent 都先按表名猜错了归属再自我纠正。**建议在近期任一文档批次里顺带收口这批指路错误**,成本低、绊人概率高。
|
|
||||||
|
|
||||||
### 4. 数值全 provisional,且「表值被代码字面量顶死」在两层都有
|
|
||||||
|
|
||||||
三层数值无一处定稿,全部挂在「难度曲线与Boss」数值批上——这本身是已知安排。但审查发现一个会架空该批次的结构问题:奇物层有 4 处表值被代码字面量顶死(蓄力上限 mini(3,…)、逐连步长 ×10、连珠矢除数 /3、厚积阈值 >=3),改表不生效;刷新旋钮三行干脆没落表(靠 schema 默认值兜底)。**数值批开工前需要先有一份「哪些数改表真的生效」的清单**,否则会出现改了表、跑不出差别的空转。(秘宝层 2 处写死属有意设计,已注明。)
|
|
||||||
|
|
||||||
## 三、高危发现速览(五条全录)
|
|
||||||
|
|
||||||
| # | 层 | 发现 | 性质 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | 秘宝 | 爆破工兵包拒绝序颠倒:真视与 +4 AP 先发、中立移除空集拒绝不扣充能,恒可用件可无消耗刷 AP | 可玩性漏洞 + 契约违例,需修复 |
|
|
||||||
| 2 | 奇物 | 刷新次数资源件死档:X 账每次三选一呈现即重置,兑付无消费窗口,2 张稀有令牌是空选项 | 实现缺陷 |
|
|
||||||
| 3 | 奇物 | 六流派档位质变无消费面:tiers 只有 magic 被兑付,「集 2 件质变」对七分之六流派是界面读数 | 结构缺口(当前三关结构下无实际伤害,第四关落地时变真问题) |
|
|
||||||
| 4 | 地图 | 类型层决策价值整体挂在未实施的类型微光批上:未开格类型不可见 + 摇号逐格独立,「第二层规划素材」实现度约零 | 设计意图未兑现,兑现路径已在册(微光批待办) |
|
|
||||||
| 5 | 地图 | 清图奖励被借作 Boss 战必需弹药:perfect L1 Boss 胜率 97% 越 75% 上界(表内批注自记) | 失衡标注,调参归数值批 |
|
|
||||||
|
|
||||||
## 四、拓展方向汇总(19 条按主题归集,仍只到方向性讨论)
|
|
||||||
|
|
||||||
各方向的完整论述见分层报告 §4;此处按主题归成六簇,括号内为出处。所有方向共同遵守:不设计具体道具、不写数值草案(道具设计权归用户,2026-10-04 裁定)。
|
|
||||||
|
|
||||||
**A. 让玩家看得见(信息呈现先行)**
|
|
||||||
- 类型微光落地(地图 1)——两层最高价值方向:「抢类型」「第二层规划素材」两句设计意图第一次为真,负向惩罚从盲盒变明账;需同步修订 05-不做清单旧裁定。
|
|
||||||
- 兑付时限口径显性化(地图 2)——九型时限逐型写清(地图报告 §1 字典表可直接作底稿),呈现与教学侧让玩家能预期收益管多久。
|
|
||||||
- 装配面呈现件间联动提示(秘宝 3 的一部分)。
|
|
||||||
|
|
||||||
**B. 让已有的活过来(结构修复优先于新增)**
|
|
||||||
- 刷新件修活再谈渠道(奇物 1)——独立账或即时兑付两路子,顺带裁决刷新×商店空格。
|
|
||||||
- 六流派档位兑付位立项(奇物 2)——先立结算管线的挂载位,质变效果设计归用户。
|
|
||||||
- 功能道具结构位兑现路径(地图 7)——沿伤害单据管线接入,把 P1 从空位推进到可启用。
|
|
||||||
|
|
||||||
**C. 分类与语义框架重定**
|
|
||||||
- 秘宝五维度框架重定或体面退役(秘宝 1)——plan 空档、info/counter 名实不符、运行时零消费。
|
|
||||||
- rarity 在专长侧获得真实语义(奇物 3)——概率与幅度双脱钩的现状下,罕见锚点不稀有。
|
|
||||||
- 兑付词汇差异化(地图 4)——pierce/magic 完全同构、四型兑付是换皮伤害数字;九型枚举不动,在枚举内拉开兑付形态。
|
|
||||||
|
|
||||||
**D. 渠道与经济对齐**
|
|
||||||
- L1 商店编排收口(奇物 4)——改图或改文档二选一,连带 L1 金币消费口。
|
|
||||||
- 稀有/罕见资源件曝光机制(奇物 6)——AP/回复/刷新合计 8/98 且无保底。
|
|
||||||
- 秘宝解锁渠道兑现(秘宝 5)——unlock_requires 与 workshop_items 对终局形态零约束。
|
|
||||||
|
|
||||||
**E. 决策深度(不动件数,动节拍与相位)**
|
|
||||||
- 主动件使用相位扩展(秘宝 2)——把「何时能用」做成差异轴。
|
|
||||||
- 充能节拍多样化(秘宝 4)——行为积点/关末结转/跨关衰减,码内已有原语。
|
|
||||||
- 负向兑付梯度化(地图 6)——标错与开雷格拉开档次,或借微光把「不可预知的重」变「可预知的重」。
|
|
||||||
|
|
||||||
**F. 层间与远期**
|
|
||||||
- 层间边界划线(秘宝 6)——哪类效果只能由哪层出,明文纪律。
|
|
||||||
- 摇号面与地图/事件挂接深化(地图 5)——类型分布成为地图、事件、构筑三方可读写的公共面。
|
|
||||||
- 清图奖励差异化与非伤害化(地图 3)——图类型插槽启用只差配置行,顺带解「Boss 战必清图」耦合。
|
|
||||||
- 第四关批复裁档位结构(奇物 5)——档二严格不可达与 charge 缺口两条硬证据已上桌。
|
|
||||||
|
|
||||||
**优先序建议(供拍板参考,非裁决)**:A 簇与 B 簇是「兑现已承诺的东西」,C/D 簇是「把名实不符的框架扶正」,E/F 簇是「真正的拓展」。若只做一件事,类型微光(A-1)撬动的已承诺设计意图最多。
|
|
||||||
@@ -1,135 +0,0 @@
|
|||||||
# 审查-秘宝(2026-10-06)
|
|
||||||
|
|
||||||
> 审查范围:秘宝层(营地装配、整局生效的同调件,终局形态)。事实源优先级:代码与数据表 > GDD。
|
|
||||||
> 数据表 `game/data/tables/treasure_items.tres` 共 13 行:现役 9、退役 2、搁置(deferred)2——与 GDD「目录九件」口径相符。
|
|
||||||
> 本报告只读审查,未运行任何游戏测试;数值核对止于带内/单点/provisional/失衡标注四项,不含调参方案。
|
|
||||||
|
|
||||||
## §1 现状盘点
|
|
||||||
|
|
||||||
逐件简表(件名以 `treasure_items.tres` 行为准;机制一句话按代码兑付点写实,数值=表值):
|
|
||||||
|
|
||||||
| 件名 | 被动/主动 | 维度标签 | 机制一句话 | 数值/充能 | 状态 |
|
|
||||||
|---|---|---|---|---|---|
|
|
||||||
| 淬毒刃纹 venom_edge | 被动 | counter | 穿刺/魔法攻击的正向修正档额外 +N(damage_controller.gd:225-226,注入点 battle_orchestrator.gd:253) | N=2 | 现役 |
|
|
||||||
| 标中殉爆 flag_burst | 被动 | action | 每标中一面旗,全体存活敌吃 N 群伤(battle_orchestrator.gd:844-847) | N=2 | 现役 |
|
|
||||||
| 惊巢反制 nest_counter | 被动 | risk | 挖雷该次惩罚减半(ceil(power/2),码内固定)+ 反弹 N 群伤(battle_orchestrator.gd:710-719) | 反弹 N=2 | 现役 |
|
|
||||||
| 工兵晨令 dawn_order | 被动 | action | 每场战斗前 effective_rounds 轮每轮 +1 AP,经 queue_ap_delta 通道(battle_orchestrator.gd:277-278、1127-1128) | +1×3 轮/每战 | 现役 |
|
|
||||||
| 偏运硬币 luck_coin | 被动 | risk | 装板摇号时四个稀有正向 kinds(heal/gp/pierce/magic)权重 +N,池结构不动(reward_economy.gd:192-205,注入点 battle_orchestrator.gd:254) | N=2 | 现役 |
|
|
||||||
| 三选一刷新件 pick_refresh | 被动 | info | 每碰一次三选一可重抽 X 次(优先消耗、不结转;adventure_runner.gd:646-656) | X=1 | 现役 |
|
|
||||||
| 掘进蓄能 dig_charge | 主动(充能) | action | 每战斗域每开 charge_n 个安全格积 1 点,可花 1 点换当轮 +1 AP(battle_orchestrator.gd:500-504、650-654) | +1 AP/次,charge_n=3,2 充能/冒险 | 现役 |
|
|
||||||
| 探巢摆钟 nest_pendulum | 主动(充能) | risk | 3×3 窗口真视其中雷格(叠加层,treasure_items.gd:143-151、175-178) | 2 充能/冒险 | 现役 |
|
|
||||||
| 爆破工兵包 blast_kit | 主动(充能) | action+risk | 3×3 真视 + 当轮 +4 AP + 中立移除窗口内未揭示无旗雷格(battle_orchestrator.gd:656-673;移除过滤 minesweeper_rules.gd:80-90) | +4 AP,2 充能/冒险 | 现役 |
|
|
||||||
| 工兵令 sapper_order | — | action | 旧过渡形态 AP 件,已由工兵晨令接位 | — | 退役(不审) |
|
|
||||||
| 探宝罗盘 loot_compass | — | plan | 预读件,退役留痕 | — | 退役(不审) |
|
|
||||||
| 显影尘 probe_dust | — | info+counter | 能力封存,效果待重定 | — | 搁置(不审) |
|
|
||||||
| 地穴全图卷 catacomb_scroll | — | info+plan | 能力封存,效果待重定 | — | 搁置(不审) |
|
|
||||||
|
|
||||||
**目录九件机制轴覆盖小结**:九件共 10 个维度标签(爆破工兵包双标)。分布为 action 4(标中殉爆、工兵晨令、掘进蓄能、爆破工兵包)、risk 4(探巢摆钟、惊巢反制、偏运硬币、爆破工兵包)、info 1(三选一刷新件)、counter 1(淬毒刃纹)、plan 0。分布不均且有两处名实不符:plan 维度自罗盘退役后空档;info 唯一承载(三选一刷新件)做的是奖励重抽,与 GDD 五维度表「信息=恢复推理原料」的定义无关;counter 唯一承载(淬毒刃纹)是伤害骑乘,与「反制=对抗地形变异」的定义无关(该契约 2026-10-03 已终裁作废)。维度标签在同调形态下已不驱动任何运行时逻辑(GDD 自述「代码零维度分支」),但作为内容自查清单,现行标签已不能回答「玩家陷入什么困境时有得选」。
|
|
||||||
|
|
||||||
## §2 可玩性审查
|
|
||||||
|
|
||||||
### 决策张力(3 选 9,每件 1 槽)
|
|
||||||
|
|
||||||
同调位 0 起步、硬上限 3(attunement_growth.tres:9,slot_cap=3),每件 slot_cost 恒 1 且由 schema 强制(treasure_item_table.gd:129-131)。形式上 9 选 3,但真实选择面被两条支配关系压缩:
|
|
||||||
|
|
||||||
1. **工兵晨令接近「永远先拿」**:每场战斗前 3 轮无条件 +1 AP(battle_orchestrator.gd:277-278、1127-1128),无触发条件、无构筑前提,对任何打法都是纯收益;参照每轮预算 8(行动经济.md v0.6 注记),首轮即 +12.5% 行动预算,且前几轮正是开图关键期。九件中唯一的同等泛用件是爆破工兵包(一件三效)。
|
|
||||||
2. **两件被严格支配**:掘进蓄能全冒险上限 +2 AP(2 充能×每次 +1,且须先开 3 安全格积点,积点每场战斗清零重攒——battle_orchestrator.gd:251-252、500-504),被工兵晨令(每战 +3 AP、全冒险数十 AP)与爆破工兵包(+4 AP×2 还外带真视与移除)同时支配;探巢摆钟(仅 3×3 真视×2)被爆破工兵包(同 2 充能,真视之外多 +4 AP 与中立移除)严格支配。同槽位同充能下的严格支配使这两件事实上退出竞争,9 选 3 实为约 7 选 3,且首选位近乎内定。
|
|
||||||
3. 余下的竞争位(淬毒刃纹/标中殉爆/惊巢反制/偏运硬币/三选一刷新件)之间有真实取舍:淬毒刃纹依赖主角攻击类型构成(无穿刺/魔法攻击时是死槽),标中殉爆依赖插旗频率,惊巢反制依赖踩雷频率——这一层的张力是健康的。
|
|
||||||
|
|
||||||
证据:treasure_items.tres:98-120(两件的表值对照)、battle_orchestrator.gd:650-654(掘进蓄能受理闸)。
|
|
||||||
|
|
||||||
### 构筑协同
|
|
||||||
|
|
||||||
存在联动,但多为单向、浅层:
|
|
||||||
|
|
||||||
- **信息喂旗喂殉爆**:探巢摆钟/爆破工兵包的真视提高标中率 → 标中殉爆的触发次数随之上升(battle_orchestrator.gd:844-847 以标中事件为触发)。这是九件内唯一一条「件与件」的因果链。
|
|
||||||
- **AP 件放大基线循环**:工兵晨令/掘进蓄能/爆破工兵包的 AP 全部汇入同一账本(grant_ap/queue_ap_delta 两既有原语),间接放大一切挖/旗行为,但彼此之间不读写对方状态。
|
|
||||||
- **孤立件占多数**:淬毒刃纹(战斗伤害侧)、偏运硬币(奖励权重侧)、惊巢反制(惩罚减免侧)、三选一刷新件(meta 侧)各自挂在一个独立兑付点上,互不感知;装配界面也不呈现任何「这三件放在一起会怎样」的信息(meta_progression.gd:369-395 的投影只列 equipped 布尔)。
|
|
||||||
|
|
||||||
结论:协同停留在「九件各自放大基础循环的不同侧面」,缺一条「件读件」的结构化通道;现有唯一真联动(真视→标中→殉爆)未被任何文案或界面显式表达,玩家要靠自己悟。
|
|
||||||
|
|
||||||
### 反套路空间
|
|
||||||
|
|
||||||
被动六件全自动生效,玩家的操作感全部落在三件主动件上:
|
|
||||||
|
|
||||||
- **探巢摆钟**:时机决策真实存在——新图早用买信息 vs 留给推理断头时刻;2 充能/冒险跨约三关,稀缺性高。但「稀缺 + 每冒险重置」的组合指向囤积倾向(留着不用到冒险结束作废),GDD 与代码均无对冲设计(无关末转化、无溢出补偿)。
|
|
||||||
- **爆破工兵包**:窗口选择有一定深度(要结合数字推理雷密度),但因为它「恒可用」(组合判据取或,ap_grant 恒有信息——秘宝.md:130;treasure_items.gd:107-108),时机决策退化为「想用就能用」,深度主要靠中立移除的目标选择撑。
|
|
||||||
- **掘进蓄能**:决策深度趋零——受理闸是 bank>0(battle_orchestrator.gd:650-654),积点自动累积,玩家的决定只是「按不按」,且收益 +1 AP 小到按与不按差别甚微。
|
|
||||||
- 被动件一侧,玩家的「操作」只剩装配时点的三选一决定;整局冒险中没有任何一个被动件给玩家一个可以回应的节拍点(无触发提示之外的交互面)。
|
|
||||||
|
|
||||||
### 获取体验
|
|
||||||
|
|
||||||
- **装配门槛**:营地装配面(meta_progression.gd:351-367)只查两件事——是同调行、未满位。**不查解锁态**:虽然 meta.tres workshop_items 保留了旧六件的解锁阈值(1/1/2/2/3/3 通关),且 schema 留有 unlock_requires 谓词字段(首批全空=全解锁合法态),现行九件的获取实际零门槛——有位就能装。解锁渠道对终局形态是装饰(详见 §3 不符点 2)。
|
|
||||||
- **增长曲线体感**:里程碑三条(attunement_growth.tres:10-34)——m1 通关 1 次、m2 Boss 杀 3、m3 通关 3 且 Boss 杀 6。计数口径透明(clear_count=逐关通关合计含重复、boss_kill_count 含重复,save_manager.gd:306-307 注)。问题在于粒度:新玩家 0 位开局,整个秘宝系统在首次通关前完全不可见;首通一次冒险(3 关各一 Boss 全杀)同时点亮 m1+m2 直升 2 位;之后 m3 要再通两次。曲线呈「0 →(首通)→ 2 →(三通)→ 3」的前挤后疏形态,0→2 的跨度让「位」的稀缺感从未被体验就消失,2→3 又间隔过长。可预期性本身达标(数据驱动、改表不动码,Attunement.slots 实时求值 attunement.gd:24-27),但里程碑进度是否在呈现层可见,本次未审呈现层,存疑待查。
|
|
||||||
|
|
||||||
## §3 合理性审查
|
|
||||||
|
|
||||||
### 生命周期↔强度匹配
|
|
||||||
|
|
||||||
整局生效的被动件数值幅度普遍克制(+2 骑乘、+2 权重、减半+反弹 2),与「全程生效」大致相称;唯工兵晨令按「每场战斗」复发,全冒险累计强度显著超出同槽位其余件(见 §2 支配关系)。反向失配更刺眼:**掘进蓄能挂着「每冒险 2 充能」的冒险级稀缺框架,兑付的却是单轮级收益(+1 AP)**——生命周期标定(冒险)与强度标定(单轮)差两个数量级,这一件的表值形态本身即是失衡点(只标注,不调参,归难度曲线与Boss)。爆破工兵包则相反:单充能兑付「真视+4 AP+中立移除」三效,价值密度为九件之冠。
|
|
||||||
|
|
||||||
### 承重契约遵守(逐条)
|
|
||||||
|
|
||||||
GDD 四条承重契约(秘宝.md:22)核对结果:
|
|
||||||
|
|
||||||
| 契约 | 结论 | 证据 |
|
|
||||||
|---|---|---|
|
|
||||||
| 机制轴禁裸 flat 数值(行键白名单封闭) | **守住** | KEY_WHITELIST 封闭 + EFFECT_KINDS 封闭枚举,越键/越 kind 加载即错(treasure_item_table.gd:51-53、41-43、90-92);九件效果全部条件触发/机制修正类。附注:淬毒刃纹 +N 是攻击类型门控的条件骑乘,守住字面,但它是九件中最接近「纯数值件」的一件(见下节定位自洽) |
|
|
||||||
| 真视窄域 ≤3×3 | **守住** | mine_reveal 活行 target≠area_3x3 加载报错;board_wide 行禁 mine_reveal(treasure_item_table.gd:110-115);现役两件真视均 area_3x3 |
|
|
||||||
| 核心层零 await、零随机 | **守住**(抽查) | attunement.gd 全静态纯函数;treasure_items.gd 无 await/RNG;兑付路径(battle_orchestrator.gd:253-278、639-680、710-719、844-847、1127-1128)同步执行;偏运硬币只改权重、取号次数不变(reward_economy.gd:192-205 注释与实现一致) |
|
|
||||||
| 雷安同池冻结(硬币只动权重投影) | **守住** | _biased_cell_rows 仅对四个稀有正向 kinds 的 weight 加 N,行集/池结构/负向行零触碰(reward_economy.gd:192-205) |
|
|
||||||
|
|
||||||
**契约相邻的重大违例(独立列出)**:GDD 验收条款「产生效果与消耗永远成对」「拒绝全部发生在①②」(秘宝.md:116、195;代码注释 battle_orchestrator.gd:633-636 同款自述)被爆破工兵包打破——use_treasure 的步骤③内,真视叠加与 +4 AP 入账**先于**中立移除的空集拒绝(battle_orchestrator.gd:656-673);目标 3×3 内无可移除雷格时返回失败、不消耗充能,但 AP 与真视已发。由于爆破工兵包恒可用(组合判据取或)且 grant_ap 无上限域(action_economy.gd:181-188),对着无可移除雷格的窗口反复点击即可无限白嫖 +4 AP——这是高危可玩性漏洞兼契约违例,根因是迭代 13 给两件套老件加第三效果时,新效果的零信息拒绝被放进了「合法输入下无失败」的步骤③。
|
|
||||||
|
|
||||||
### GDD 定位自洽(「机制轴唯一来源」)
|
|
||||||
|
|
||||||
九件中八件锚在机制轴上(旗判定、AP 队列、奖励池权重、充能节拍、移除规则、三选一重抽),定位成立。**淬毒刃纹是最弱的一件**:它是战斗伤害侧的平坦骑乘,与迭代 12 特性/奇物层的 rider 轴(damage_controller feat_flags 的 rider_flat 族,battle_orchestrator.gd:100-104 注)是同一类东西,只是走了一条平行注入通道(attune_venom,damage_controller.gd:448、225-226)——「秘宝=机制轴唯一来源、数值件归他层」的分层叙事在这一件上与他层重叠。惊巢反制的「减半」也是纯数值调制,但挂点是挖雷惩罚这一机制事件,可算机制修正,勉强在界内。
|
|
||||||
|
|
||||||
### 数值核对(四项止步)
|
|
||||||
|
|
||||||
1. **带内核对**:全部表值落在 schema 声明域内(magnitude [0,999]、charges≥1、effective_rounds≥1、charge_n≥1——treasure_item_table.gd:117-160);爆破工兵包 +4 AP 与 GDD「半轮预算」锚定口径一致(每轮预算 8,秘宝.md:175);三件主动 charges 均 2/冒险,与目录九件速览一致(秘宝.md:18)。
|
|
||||||
2. **同源旋钮单点可调**:除两处码内固定语义外全部单点——例外一:惊巢反制的「减半」比率 ceil(power/2) 写死在 battle_orchestrator.gd:712(设计文档明示「减半系固定语义不消费 magnitude」,属有意);例外二:偏运硬币作用的 kinds 清单 LUCK_BIAS_KINDS 写死在 reward_economy.gd:180(底稿 §3 口径)。GP 付费刷新价与商店刷新共读 shop_refresh_cost_base/curve 两旋钮(adventure_runner.gd:684-688),单点性符合 2026-10-06 用户令。
|
|
||||||
3. **provisional 标记盘点**:treasure_items.tres:7、attunement_growth.tres:6、meta.tres:121-122(attune_refresh_upgrade 行族)、秘宝.md:18「值全 provisional 归难度曲线与Boss」——秘宝层数值全部 provisional,无已锁定值。
|
|
||||||
4. **明显失衡点标注**(不给方案):①掘进蓄能全程 ≤+2 AP/冒险 vs 工兵晨令每战 +3 AP——同槽位两个数量级差;②探巢摆钟被爆破工兵包严格支配(同充能同槽位,少两效);③淬毒刃纹在无穿刺/魔法攻击构成下为零收益死槽,无兜底分支。
|
|
||||||
|
|
||||||
### 文档与实现不符点(以代码/数据为准)
|
|
||||||
|
|
||||||
1. **【高危,同上】** 效果-消耗成对契约的实现违例(battle_orchestrator.gd:656-673)。
|
|
||||||
2. **meta.tres workshop_items 停留过渡形态**:列的六件中工兵令/探宝罗盘已退役、显影尘/地穴全图卷搁置(meta.tres:39-69),新九件中七件未登记;且装配写口 toggle_attunement 不查解锁态(meta_progression.gd:351-367)——解锁渠道对现行形态零约束,schema 里 unlock_requires 字段(首批全空)与「正式解锁渠道归道具工坊柜台」的注释承诺(treasure_item_table.gd:25-26)均未兑现。
|
|
||||||
3. **退役键 transitional_sync_slots 残留**:代码侧已退役(仅剩注释),但 registry/entities.yaml:625 仍按现行键登记、冒险结构.md:185 与 ux/level-clear.md:94 仍按现行描述;06-待办清单:248 称「读取点归零」与 registry 现状不符。
|
|
||||||
4. **秘宝.md 正文多处过渡形态残留未随终局落籍刷新**::15 实现面写 `aux_items.tres`(实际文件名 treasure_items.tres);:41「六件道具的字段定义」(现行 13 行);:76 五维度表「行动」行现行承载仍列工兵令(已退役);:171 调参表六行、:189 验收「现行六行道具定义加载通过(三件有效实装投放)」均为旧口径(现行=9 同调行、投放池零行——:173 投放态注记已是对的,自相矛盾)。
|
|
||||||
5. **F2 投放维度覆盖检查已随掉落渠道退役消失**(config_db_cross_validator.gd:49-53),但秘宝.md:190 验收标准仍列「覆盖检查」条目,未标注消亡。
|
|
||||||
|
|
||||||
### 其他低优先发现
|
|
||||||
|
|
||||||
- use_phase 字段无消费方:全部行填 active_dig,被动件该字段无义,使用窗口在 use_treasure 硬编码(battle_orchestrator.gd:642-643),grep 全仓无读取点——死字段。
|
|
||||||
- 惊巢反制的「减半」用 ceil 取整(battle_orchestrator.gd:712):1 点惩罚减半后仍是 1,低惩罚档下该件第一效果为零——与「减半」的直觉表述有出入,呈文案层面需注意。
|
|
||||||
|
|
||||||
## §4 拓展方向
|
|
||||||
|
|
||||||
以下只写方向,不设计具体道具、不写数值草案(道具设计权归用户)。
|
|
||||||
|
|
||||||
1. **维度框架重定或体面退役**。五维度标签是过渡形态的遗物:plan 空档、info/counter 名实不符、运行时零消费。要么按终局形态重立机制轴分类(例如板面信息/行动经济/战斗骑乘/冒险 meta 四分,与九件实际兑付点对齐),要么把字段降为纯展示标签并删掉覆盖自查叙事。解决 §1 的覆盖空档与 §3 定位自洽中「标签不再描述现实」的问题。
|
|
||||||
2. **主动件的使用相位扩展**。现行主动三件全部只能在挖掘期发起(use_phase 单一值且硬编码),时机决策被压缩在一种相位里。把「何时能用」本身做成件的差异轴(如结算期、战斗段、停点期各有专属窗口),能在不加件数的前提下加深时机决策。解决 §2 反套路空间中「被动全自动、主动时机浅」的问题。
|
|
||||||
3. **件间联动的结构化挂接面**。现行唯一真联动(真视→标中→殉爆)是隐式涌现。可探讨的方向是定义一张「件可读接口」清单(他件充能余量、本冒险触发计数等只读投影),让未来的件能合法地读他件状态,把单向联动升级为可设计的组合面;同步需要在装配面呈现联动提示。解决 §2 构筑协同的孤立问题。
|
|
||||||
4. **充能节拍的多样化**。现行主动件共享同一种节拍(每冒险 2 充能、冒险开始重置),导致「囤到作废」与「严格支配」两类问题都缺结构性出口。掘进蓄能的「行为积点」(开安全格攒点)证明码内已有第二种节拍的原语(_attune_bank),把充能节拍本身做成件的设计轴(行为积点/关末结转/跨关衰减等),可让主动件在强度之外以节奏分化。解决 §2 掘进蓄能支配问题与囤积倾向的结构性根因(调参仍归难度曲线与Boss)。
|
|
||||||
5. **解锁与成长渠道的兑现**。unlock_requires 谓词字段与 workshop_items 渠道都在,但对终局形态零约束;把装配资格接入真实的元进度门槛(通关计数/Boss 击杀谓词已在计数键枚举内),能让「获取」从全解锁的白板变成成长弧的一部分,与同调位里程碑共用一套计数语言。解决 §2 获取体验中门槛缺失与 §3 不符点 2。
|
|
||||||
6. **与他层的边界划线**。淬毒刃纹与特性/奇物 rider 轴的通道重叠(attune_venom vs feat rider_flat)提示需要一条明文分层纪律:哪类效果只能由秘宝层出、哪类归特性层,避免两层各自长出让玩家难以归因的同类加成。解决 §3 定位自洽的重叠问题,也为将来反制维度承载重定(迭代 12 双层 BD 调研待裁)预先划线。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 附:发现清单索引
|
|
||||||
|
|
||||||
| 级别 | 发现 | 位置 |
|
|
||||||
|---|---|---|
|
|
||||||
| 高 | 爆破工兵包步骤③内拒绝:+4 AP 与真视已发但充能不扣,可无限白嫖(违效果-消耗成对契约) | battle_orchestrator.gd:656-673 |
|
|
||||||
| 中 | 掘进蓄能/探巢摆钟被严格支配,真实选择面压缩(失衡标注,不调参) | treasure_items.tres:37-47、98-120 |
|
|
||||||
| 中 | 解锁渠道停留过渡形态,装配零门槛;unlock_requires 承诺未兑现 | meta.tres:39-69、meta_progression.gd:351-367 |
|
|
||||||
| 中 | transitional_sync_slots 退役键在 registry 与两份 GDD 残留 | registry/entities.yaml:625、冒险结构.md:185、ux/level-clear.md:94 |
|
|
||||||
| 中 | 秘宝.md 正文多处过渡形态残留与自相矛盾(aux_items.tres 文件名、六件口径、工兵令承载、验收条目) | 秘宝.md:15、41、76、171、189-190 |
|
|
||||||
| 低 | 维度标签语义漂移:plan 空档、info/counter 名实不符 | treasure_items.tres 九行 dimension_tags |
|
|
||||||
| 低 | 淬毒刃纹与特性层 rider 轴通道重叠,分层叙事模糊 | damage_controller.gd:225-226、battle_orchestrator.gd:100-104 |
|
|
||||||
| 低 | use_phase 死字段 | treasure_items.tres 全行;无消费方 |
|
|
||||||
| 低 | 同调位曲线 0→2→3 前挤后疏;新玩家首通前系统不可见 | attunement_growth.tres:10-34 |
|
|
||||||
| 低 | 惊巢反制 ceil 减半在 1 点惩罚档下零效果 | battle_orchestrator.gd:712 |
|
|
||||||
| 低 | GP 付费刷新与刷新件 X 源价值互相侵蚀(权衡提示) | adventure_runner.gd:676-708 |
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
# 研究-内容数据驱动扩展架构-2026-10-06
|
|
||||||
|
|
||||||
状态:调研+提案,**零代码修改**,待用户拍板。
|
|
||||||
问题原文(用户):「如果我们要对其物进行修改设计的话,是不是只要更改我们的配置文件就好了?如果是一些机制类的专长,也能够只改配置文件,不改动代码吗?我希望我们这里可以做得比较拓展一些……你可以学习一下各种支持mod扩展的游戏,他们是如何实现的。」
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 〇 结论(先答两问)
|
|
||||||
|
|
||||||
1. **改已有物品的数值/名字/稀有度/投放渠道 → 是,只改配置表就能生效**(所有内容族都已是 `.tres` 数据表,加载期校验,运行时通用读取)。
|
|
||||||
2. **给已有物品换一个全新效果行为 / 加一件带新效果的新物品 / 加机制类新专长 → 现状必须改代码**。因为「效果类型」是封闭枚举,每新增一个枚举值都要:改 schema 枚举 → 加一处 `match` 翻译分支 → 在结算代码里加消费点 → 在文案代码里加说明文字,共 3-4 处代码。
|
|
||||||
3. 项目里**已经有一个完全做到「只改配置」的范本:技能池**。`skills.tres` 加一行技能、`enemy.tres` 的 `pool` 里引用它(Boss 半血解锁只需 `unlock_hp_pct: 50` 字段),全链路零代码。差距是把专长/秘宝/令牌提到同等水平。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 一 现状盘点:各内容族「改配置能走多远」
|
|
||||||
|
|
||||||
内容全部在 `game/data/tables/*.tres`,schema 在 `game/data/schemas/`,统一清单装载于 `game/core/config_db.gd:12-31`;表里没有任何回调/脚本路径,行为全部用封闭枚举字符串键+参数字典表达。表内数据与「配置」的分离没有问题,问题出在代码侧对数据的解释方式。
|
|
||||||
|
|
||||||
| 内容族 | 定义处 | 只改配置能做什么 | 必须改代码才能做什么 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 技能(技能池) | `skills.tres` + `enemy.tres` pool | **加新技能整件**(伤害/增益/妨害、权重、冷却、Boss半血解锁)——全链路数据驱动 | 新的技能大类(现仅 basic/damage/buff/debuff 四类) |
|
|
||||||
| 状态效果 | `status_effects.tres` | 加新状态行(技能/奖励格引用它) | 新的状态机制形态 |
|
|
||||||
| 专长(奇物·规则改写类) | `feats.tres`(27行) | 加「挂点已存在」的新专长:数值、稀有度、流派标签随写随生效;同挂点多件自动累加 | 新挂点(hook)=4处代码;现 23 挂点封闭(`feat_table.gd:36-67`) |
|
|
||||||
| 秘宝/同调件 | `treasure_items.tres`(13行) | 加「效果类型已存在」的新件(如又一个 3×3 显影件);改充能/占槽/解锁谓词 | 新效果类型=改枚举+执行分支;**被动件按物品 id 硬编码**(见二B) |
|
|
||||||
| 奇物令牌(属性/资源) | `adventure.tres` | 改配额/数值 | 新令牌种类(分发键=代码 match,`adventure_table.gd:84-114`) |
|
|
||||||
| 格面资源 | `reward.tres` | 加新资源行(percent 类经 `effect_id` 路由进状态系统) | 新格面行为 |
|
|
||||||
| 局外天赋树 | `meta_tree.tres`(33节点) | 数值/价格/前置/上限 | 新规则键(现仅 2 个规则键 wired,`battle_orchestrator.gd:261-264`) |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 二 差距精确清单:效果行为硬编码在哪些代码位置
|
|
||||||
|
|
||||||
调查核证(file:line 均经抽查复核):
|
|
||||||
|
|
||||||
**A. 专长:两段式,翻译段硬编码。**
|
|
||||||
- 求值段(半通用):`_feat_flags_for` 对 23 个 hook 逐个 `match` 展开(`battle_orchestrator.gd:101-179`)。
|
|
||||||
- 消费段(硬编码):每个展开出的旗在结算代码里各有一处读取点——`damage_controller.gd` 13 处(rider_flat:253、nest_aura:257、round_dig:264、crack:276、shield:312、clamp:429-434、discount_shift:219-221、hit_trade:203/228、armor_roll_rewrite:209、spike:215/236 等);`battle_orchestrator.gd` 11 处(first_dig_spell:487、terrain_dig_double:519、flag_strike:537、dig_yield:604-615、chain_arrows:974-980 等)。
|
|
||||||
- 流派档位(≥2件/≥4件质变)硬编码在 `battle_orchestrator.gd:171-175`。
|
|
||||||
|
|
||||||
**B. 秘宝:主动件半通用,被动件按 id 硬编码。**
|
|
||||||
- 主动件:`use_treasure` 按 `effect_kinds` 通用分发(`battle_orchestrator.gd:648-666`)——这部分是好的;但混有按 id 的特判(`dig_charge` 积点闸,:643-647)。
|
|
||||||
- 被动件按件 id 硬编码:`venom_edge`(:248 → damage_controller.gd:225)、`luck_coin`(:249 → reward_economy.gd:195-207)、`dawn_order`(:272-273、:1098-1099)、`nest_counter`(:703-713)、`flag_burst`(:828-831)、`pick_refresh`(adventure_runner.gd:650)。
|
|
||||||
|
|
||||||
**C. 奇物令牌:** `_apply_curio_pick` 按 kind match(`adventure_runner.gd:412-449`)。
|
|
||||||
|
|
||||||
**D. 呈现文本硬编码(新内容会「无名无声」的直接原因):**
|
|
||||||
- 物品卡说明:`battle_narrator.gd:104-121`(令牌)、`:142-166`(专长逐 hook 文案)、`curio_interact_controller.gd:185-204`(秘宝只认 3 种 kind)。
|
|
||||||
- 无本地化/文本表:`display_name` 内联在 .tres 里(这本身没问题),但**效果说明文字**没有一处在数据行里,全在代码里。
|
|
||||||
|
|
||||||
**E. 基础设施(新词=代码,但这是合理边界):**
|
|
||||||
- 谓词表计数键 `COUNTER_KEYS`(`attunement_growth_table.gd:22`)、存档域(版本迁移 `save_manager.gd:50-57`)、渠道白名单(`adventure_runner.gd:757-763`,设计规格 `design/gdd/systems/冒险循环/奇物.md:200-217`)。
|
|
||||||
|
|
||||||
**F. 已经在做对的事(不需要改,是改造的地基):**
|
|
||||||
- 加载期校验+交叉校验悬空引用即致命(`config_db.gd:106-148`、`config_db_cross_validator.gd`);
|
|
||||||
- 行键白名单/零裸flat护栏(`treasure_item_table.gd:51-53`、`feat_table.gd:76-79`)——这些封闭校验是设计护栏,改造要保留它们,改的只是「枚举值↔代码分支」的绑定方式;
|
|
||||||
- MC 模拟器直接实例化真实的 battle_orchestrator(`monte_carlo.gd:20-22`)——**效果执行一旦数据化,模拟器自动看到新内容,调平衡不用双写**。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 三 支持 mod 的成熟游戏是怎么实现的(官方文档查证)
|
|
||||||
|
|
||||||
| 游戏 | 内容加法 | 机制加法 | 机制要点 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| Minecraft(数据包,官方) | 纯 JSON:配方/战利品表/进度/谓词/标签/附魔等几十类注册表 | 要写 Java mod | 战利品表=「条件对象+奖池条目」纯 JSON;进度=「触发器类型+条件+奖励」纯 JSON;谓词是跨系统复用的通用条件词汇 |
|
|
||||||
| Factorio(官方 mod API) | 数据阶段 prototype(Lua 表:物品/配方/实体)——官方内容本身就是 prototype | 要写运行阶段 Lua 脚本 | 数据/逻辑分两个阶段;运行期行为靠事件系统钩子 |
|
|
||||||
| RimWorld(官方 mod 体系) | XML Defs(defName 主键,加载期注册)+ XML 补丁操作改原版数据 | 要写 C# 程序集(Harmony 运行时补丁) | 纯数据 mod 能加特性/研究/动物等几乎所有「内容」;数据不够时才落代码,且补丁机制把改动隔离在数据层 |
|
|
||||||
|
|
||||||
(来源:minecraft.wiki/w/Data_pack、wiki.factorio.com/Modding、rimworldwiki.com/wiki/Modding——前两者已逐条核对原文,RimWorld 维基反爬只取到入口页,机制按通行记载表述。)
|
|
||||||
|
|
||||||
**四条共性,就是「改配置不改代码」的全部秘密:**
|
|
||||||
|
|
||||||
1. **内容=数据,机制=解释器。** 代码里只有一套通用的「效果类型+参数」解释器;每件内容是一行数据,声明自己是什么类型、带什么参数。
|
|
||||||
2. **游戏在稳定的时机对外喊一声(事件),内容声明「我在什么时机、什么条件下、发生什么效果」。** 时机词汇(开格/标旗/受击/击杀/轮末……)是封闭且稳定的,内容条目只是订阅者。
|
|
||||||
3. **条件是通用词汇,跨内容复用**(Minecraft 谓词、RimWorld 的条件类、我们已有的谓词表雏形)。
|
|
||||||
4. **加载期注册+校验闸兜底**:id 唯一、引用悬空、键出域,全部启动即报错——这一条我们已经在做。
|
|
||||||
5. **边界同样存在**:Minecraft 数据包加不了新机制,Factorio 的新行为也要写 Lua。mod 游戏不是「零代码」,而是**把「新机制」压缩成「往词汇表里加一个类型」(一次性、低频),让「新内容」完全数据化**(高频、零代码)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 四 改造方案(备选案全列)
|
|
||||||
|
|
||||||
### 案甲:最小修(清理性,约 1 天)
|
|
||||||
只消灭「按件 id 硬编码」(二B 被动件改造成 effect_kinds 通用分发)+ 把物品效果说明文字搬进数据行。
|
|
||||||
- 收益:秘宝族达到「同类件纯配置」;新件不再无名无声。
|
|
||||||
- 不解决:专长新挂点仍要改代码;令牌/树不变。
|
|
||||||
- 风险:低。纯重构+文案搬家,冒烟+MC 对拍可验。
|
|
||||||
|
|
||||||
### 案乙:效果类型统一+时机埋点(推荐,约 3-4 天,可分期)
|
|
||||||
把专长/秘宝/令牌统一到「**触发时机 + 条件 + 效果类型+参数**」的数据形态:
|
|
||||||
1. 定一份跨内容通用的**效果类型词汇表**(伤害修正/开单/资源授予/状态授予/改写/计数器……)——现 23 hook+12 kind 是这份词汇表的初稿素材,也是主要工作量所在(熔火之躯的积层反打、矿工重锤的命中交换这类需要词汇表有计数器/轮末/改写能力)。
|
|
||||||
2. 在结算段关键节点布**语义事件点**(开格/标旗/受击/击杀/轮末/Boss半血/使用道具……),一条内容行声明 `{on=时机, when=条件谓词, do=效果}`,由通用执行器解释。
|
|
||||||
3. 保留全部现有护栏:封闭词表、键白名单、悬空引用致命、零裸flat禁令照旧,只是校验对象从「枚举在 schema 里」变为「词汇表条目存在且已实现」。
|
|
||||||
4. MC 模拟器零改动自动受益(共用执行器)。
|
|
||||||
- 分期建议:①专长(23 hook 收敛)→②秘宝被动件并入 →③令牌/树规则键。每期独立冒烟可落籍。
|
|
||||||
- 风险:中。23 个消费点的等价性改写,需 MC 对拍锚+冒烟全绿兜底;触到 battle_orchestrator 历史脏件(惯例走 worktree 批)。
|
|
||||||
|
|
||||||
### 案丙:完整 mod 式(外挂脚本层,约 5 天以上)
|
|
||||||
案乙基础上允许数据行指向外挂 GDScript 效果脚本(Godot 支持运行时加载脚本),即真正意义上的第三方可扩展。
|
|
||||||
- 收益:任何行为都可外挂,词汇表不再是边界。
|
|
||||||
- 不建议现在做:导出安全、脚本沙箱、兼容矩阵、探针全覆盖都是额外工程;Alpha 前没有第三方 mod 需求,词汇表不够用时再加类型(案乙路径)成本远低于维护插件层。挂账待「mod 需求」立项再启。
|
|
||||||
|
|
||||||
**推荐:案乙,按 ①②③ 分期立项**(可并进现有 roadmap 排期,或作为迭代 17 候选卡)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 五 拍板点
|
|
||||||
|
|
||||||
1. **立项选择**:案甲(1天,只清秘宝)/ 案乙(3-4天,专长+秘宝+令牌全数据化,推荐)/ 案丙(挂账)。
|
|
||||||
2. **排期位置**:并入迭代 17 候选序列,还是单独立卡插队。
|
|
||||||
3. **案乙词汇表范围**:首批是否 23 hook+12 kind 全收敛,还是先收敛专长族试点后扩。
|
|
||||||
4. **文本表值化是否随批**(牵 UI 呈现,battle_narrator/curio_interact_controller 两处)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 六 附:顺带发现(非本议题,仅登记)
|
|
||||||
|
|
||||||
- 菜单开局路径 `main.gd:475` 未传 `attunement`/`tree_rules` 参数(营地装配后从主菜单开局可能丢同调装配/局外树规则;冒烟是直呼 runner 面故未拦住)——是否立项修复待用户令。
|
|
||||||
- relic 词族与 feat 词族命名统一已在 `design/gdd/06-待办清单.md:101` 在册,案乙动 feats.tres 时可顺路处理或明确避让。
|
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
# 综合:道具变异可选项菜单(2026-10-07)
|
|
||||||
|
|
||||||
> 用途:专长重设计的选材菜单。综合两份调研原材料(调研-roguelike道具玩法变异-2026-10-07.md、调研-扫雷类游戏玩法变异-2026-10-07.md),按本游戏的动词/挂点重新组织。**本文件不设计具体道具**——选材与排版归用户,设计权归用户。
|
|
||||||
|
|
||||||
## 〇、两个先放进口袋的结论
|
|
||||||
|
|
||||||
1. **「扫雷×自动战斗」已有官方先例**:DemonCrawl 的 Autosweeper Division(游戏替你扫雷、玩家只管道具策略与经济)。我们的品类判断不是孤证。
|
|
||||||
2. **反面教材六特征**(roguelike 调研 §4,逐条有实例):代价打在看不见的系统上 / 触发不可控不分敌我 / 无上下文净亏损 / 永久剥夺保障且反直觉 / 改操作不给控制手段 / 纯数值无体感。对照面结论:**契约不可怕,糊涂账才可怕**——这与我们已立的「纯代价件禁止出生」准入校验同向。
|
|
||||||
|
|
||||||
## 一、模式适配度梯队(roguelike 调研 §3 结论)
|
|
||||||
|
|
||||||
| 梯队 | 模式 | 一句话理由 |
|
|
||||||
|---|---|---|
|
|
||||||
| 第一梯队 | **触发器扩展**(当 X 时 Y) | 扫雷事件离散可数、每下触发可归因,正好补上触发器类「满屏特效说不清」的最大短板;学习成本最低 |
|
|
||||||
| 第一梯队 | **环境/棋盘改写** | 雷区即字面棋盘,改写落点比任何参照游戏都直接;成本=公示(改过的格子必须可见) |
|
|
||||||
| 第一梯队 | **资源转换通道** | AP/生命/旗/刷新/视野信息已异质且多;且踩雷是玩家主动选择的确定事件,「掉血」是天然可计划的燃料 |
|
|
||||||
| 第二梯队 | 操作动词新增/替换 | 我们动词集只有四个(挖/旗/停手/刷新),动一个就是极强体感;代价=输入层+教程+UI 各一份,替换类还要回收肌肉记忆 |
|
|
||||||
| 第二梯队 | 风险契约 | 与「当局清零」天然合拍(痛感限一局内);扫雷信息透明让代价可计算,契约更像策略而非赌博 |
|
|
||||||
| 第二梯队 | 规则豁免 | 我们基础规则少而硬,豁免辨识度极高;**高危区=信息规则(数字不撒谎)绝对不可碰**,安全区=代价规则与承诺规则 |
|
|
||||||
| 第三梯队 | 召唤/陪衬物 | 战斗侧零输入成本顺手;扫雷侧「板面代理」失误归因风险高 |
|
|
||||||
| 第三梯队 | 攻击形态变换 | 无手搓攻击可载,落过来会退化为结算公式改写,不单独立类 |
|
|
||||||
|
|
||||||
## 二、按动词挂点的可选项菜单
|
|
||||||
|
|
||||||
每个挂点列出可用的变异模式与参照实例(出处见两份调研文件)。「层」列是按已裁分界尺的初步归层建议——最终归层由用户在重设计时逐件定。
|
|
||||||
|
|
||||||
### 挖格(扫雷侧核心动词)
|
|
||||||
|
|
||||||
- 触发器:「挖到数字 n 时」「挖出资源格时」「连续安全开格时」(参照:RoR2 尤克里里、20MTD 碎裂)——层:专长
|
|
||||||
- 资源转换:挖格附带消耗/转换(烧血换双倍产出——踩雷燃料化的反面用法)——层:专长
|
|
||||||
- 动词参数扩展:挖掘距离、一次挖多格(参照:DemonCrawl Drill 附魔格数值+1/≥10 升级战利品——格值池可打开超过 8)——层:秘宝域(机能包络)
|
|
||||||
- 格上叠状态层:冻结/附魔/重遮蔽叠在资源格之上而非新增类型(DemonCrawl Glacial/Forgotten/Enchanted Cells 三先例)——层:地图层内容方向
|
|
||||||
|
|
||||||
### 插旗
|
|
||||||
|
|
||||||
- 触发器:「标中时」「标错时」(我们已有标中兑付,触发器是它的自然延伸)——层:专长
|
|
||||||
- 语义改写:旗变陷阱、旗变信标(标中的雷格变成可引爆物)——层:专长
|
|
||||||
- 承诺规则豁免:旗可拔/可移动(触碰承诺规则——豁免类安全区,但会动摇「旗=承诺」的根基,需明示代价)——层:专长,慎用
|
|
||||||
|
|
||||||
### 停手 / 回合末
|
|
||||||
|
|
||||||
- 停手转化:停手时剩余 AP/未开板面折算成战斗资源(**用户 playnote「弃图流」的形态落点**;参照:以撒献血袋式主动兑换 + 哈迪斯囤积斩经济进公式)——层:待定(动词新增+转换通道复合)
|
|
||||||
- 回合末触发器:「轮末若 AP 全用尽」「轮末若有标中旗」(参照:杀戮尖塔枯枝的回合事件利用)——层:专长
|
|
||||||
|
|
||||||
### 刷新
|
|
||||||
|
|
||||||
- 刷新扩展:免费次数、刷新质量(只刷某档)——层:秘宝域(刷新=机能账,已裁归口)
|
|
||||||
- 刷新变质:把刷新从「换候选」改成「换板面规则」——层:地图层/专长,慎用
|
|
||||||
|
|
||||||
### 视野 / 信息(微光先读的延长线)
|
|
||||||
|
|
||||||
- 半信息升级:区域聚合线索(Tametsi 染色区块雷数)、分布形状线索(Hexcells 连续标记)——与微光「读类型不读雷安」同构的下一级——层:秘宝域(视野机能)
|
|
||||||
- 信息购买/兑换:花钱买信息(DemonCrawl 陌生人 Psychic/Detective)、富余资源换信息(Book of Espionage 满血拾心转锁定)——层:资源类奇物(转换源)候选
|
|
||||||
- 反向玩法:信息丢失/过期(DemonCrawl Forgotten 词缀,已开格重遮蔽)——层:地图层词缀方向(注意:用户已暂缓地图类型词缀线)
|
|
||||||
|
|
||||||
### 清图
|
|
||||||
|
|
||||||
- 清图事件总线化:「清图」作为标准触发事件让道具订阅(DemonCrawl「win a stage」标准化触发管线先例)——层:结构位,归地图层清图奖励对象题(已暂缓)
|
|
||||||
- 清图目标多样化:清图≠杀光,可以是「达成出口条件」(Radical Dungeon Sweeper 找钥匙找门)——层:地图层远期
|
|
||||||
|
|
||||||
### 战斗结算
|
|
||||||
|
|
||||||
- 触发器:标中/击杀/受伤/溢出(我们已有标中兑付与伤害单据管线,扩展成本低)——层:专长
|
|
||||||
- 风险契约:双倍输出换半血、承伤轴换输出轴(**用户 playnote「自爆流」的形态落点**;参照:RoR2 塑形玻璃/超脱、以撒死猫)——层:专长
|
|
||||||
- 规则豁免:代价规则豁免(如「每场战斗第一次踩雷不受伤」——参照以撒圣斗篷「每房间挡第一次伤害」)——层:专长
|
|
||||||
|
|
||||||
### 经济 / 资源转换
|
|
||||||
|
|
||||||
- 转换通道矩阵:血↔GP、GP↔输出(RoR2 众筹)、治疗溢出→伤害(恩库哈纳)、满血拾取→信息——层:专长(通道本身)+ 资源类奇物(凭证)
|
|
||||||
- **纪律**:任何两条互转通道必须防兑换环(每轮上限/递减/损耗)——roguelike 调研 §1.3 的通用解法
|
|
||||||
|
|
||||||
## 三、扫雷调研带来的三个结构启发
|
|
||||||
|
|
||||||
1. **格子可以叠「状态层」**:DemonCrawl 证明雷/空之外还能有战利品格/宝箱/陌生人/地标/附魔/冻结——我们的九型资源格之上可以叠状态,而不必加新类型(与「枚举冻结」纪律兼容)。
|
|
||||||
2. **格值池可以打开**:经典扫雷 0-8 的邻接计数不是天花板(DemonCrawl 格值可 ≥10)。
|
|
||||||
3. **「必须猜」的处理谱系六档**(强无猜生成→手工关卡→判定端原谅→提示指路→错误资源化→竞技提纯)——我们是「推理确定+惩罚可算」路线,DemonCrawl 的「错误资源化」(失误喂养 Build)与我们「踩雷=可计划燃料」的判断互证。
|
|
||||||
|
|
||||||
## 四、给重设计的选材建议(非裁决)
|
|
||||||
|
|
||||||
- 专长池的骨架模式建议用**触发器扩展**(第一梯队、学习成本最低、「当 X 时 Y」自然语言可读),穿插**风险契约**与**资源转换**制造决策尖点。
|
|
||||||
- 用户点名的「改变操作方式」需求,在本游戏的落点=**动词新增/替换**(第二梯队,成本高但体感最强)与**资源转换**(弃图流的通道);以撒式攻击形态变换无载体,不建议追。
|
|
||||||
- 每件候选过三关:准入校验(代价与收益同账可核算)→ 分界尺(机能归秘宝/机制归专长)→ 定义卡 3+1 句(何时获得/结算时点/写进哪个目标/抽屉兼容性)。
|
|
||||||
@@ -1,348 +0,0 @@
|
|||||||
# 调研:Roguelike 与幸存者类游戏中「道具如何改变玩法」
|
|
||||||
|
|
||||||
> 用途说明:本文件是《扫雷×自动战斗 Roguelike》道具三层重设计(秘宝/奇物/专长)的灵感原材料,只交付「模式分类 + 实例 + 适配评估」,不做本游戏的具体道具设计,设计权归用户。调研日期:2026-10-07。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 0. 调研范围与资料说明
|
|
||||||
|
|
||||||
覆盖游戏:以撒的结合(重生/忏悔)、哈迪斯1、哈迪斯2、杀戮尖塔、吸血鬼幸存者、土豆兄弟(Brotato)、雨中冒险2、Nova Drift、20 Minutes Till Dawn,另以 Dead Cells 的武器词缀/变异/词相系统作补充。
|
|
||||||
|
|
||||||
资料纪律与可达性说明:
|
|
||||||
|
|
||||||
- 本机网络只放行了 wiki.gg 系域名。以下五个游戏的条目**本次已逐条在一手 wiki 上核对**:以撒的结合(bindingofisaacrebirth.wiki.gg)、杀戮尖塔(slaythespire.wiki.gg)、雨中冒险2(riskofrain2.wiki.gg)、Dead Cells(deadcells.wiki.gg)、20 Minutes Till Dawn(20minutestilldawn.wiki.gg)。文中这些条目的效果描述以核对结果为准。
|
|
||||||
- fandom 与维基百科在本机不可达。以下游戏的相关条目引用的是其公认的一手 wiki 规范地址(fandom),内容基于公开通行资料整理,**标注为「未核对」,取用前建议按链接复核**:哈迪斯1/2、吸血鬼幸存者、Brotato、Nova Drift。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 变异模式分类
|
|
||||||
|
|
||||||
按「它改了什么」分为八类。每类给出定义、3-5 个具体实例、设计代价(底层支撑 + 玩家学习成本)。
|
|
||||||
|
|
||||||
### 1.1 攻击形态变换:攻击本身换一种物理形态
|
|
||||||
|
|
||||||
定义:不改变「攻击多少」,而改变「攻击是什么」——弹道、蓄力、判定范围整个换掉。
|
|
||||||
|
|
||||||
| 游戏 | 道具 | 效果 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 以撒的结合 | 硫磺火(Brimstone) | 眼泪变为蓄力血激光束,穿透敌人与障碍物,伤害按帧多次结算;蓄力时间随射速变化 | [wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/Brimstone) |
|
|
||||||
| 以撒的结合 | 妈妈的刀(Mom's Knife) | 眼泪替换为一把可投掷也可持握挥砍的刀,高伤穿透 | [wiki.gg 未核对](https://bindingofisaacrebirth.wiki.gg/wiki/Mom%27s_Knife) |
|
|
||||||
| 以撒的结合 | 内眼/变异蜘蛛(The Inner Eye / Mutant Spider) | 一次射出三发/四发散射,射速大幅下降;两者叠加可到七发 | [wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/The_Inner_Eye) |
|
|
||||||
| 哈迪斯1 | 代达罗斯锤子(Daedalus Hammer) | 每局 1-2 把,数选一改造武器招式:如「连环斩」(按住普攻连斩)、「诅咒斩」(普攻回血但总血量 -60%)、「蓄力突刺」(投枪特殊改为蓄力)、「火箭弹」(炮特殊改为火箭)、「三连射」(弓普攻三箭) | [fandom 未核对](https://hades.fandom.com/wiki/Daedalus_Hammer) |
|
|
||||||
| 哈迪斯2 | 代达罗斯锤子 | 沿用同一机制,为每把武器(含 Ω 招式)提供数选一的招式改造 | [fandom 未核对](https://hades.fandom.com/wiki/Daedalus_Hammer) |
|
|
||||||
| Nova Drift | 刃(Blade,超级模块)/磁轨炮(Railgun)等武器件 | 超级模块「刃」把射击武器整体替换为环绕机身的近战刀刃;武器件本身即形态选择(磁轨炮=蓄力穿透、榴弹=抛物线范围) | [fandom 未核对](https://nova-drift.fandom.com/wiki/Super_Mods) |
|
|
||||||
| 吸血鬼幸存者 | 武器进化(如 鞭子→血之泪) | 满级武器+指定被动+宝箱后进化为新武器:血之泪附带吸血与暴击,判定与节奏全变 | [fandom 未核对](https://vampire-survivors.fandom.com/wiki/Evolution) |
|
|
||||||
|
|
||||||
设计代价(底层支撑):
|
|
||||||
|
|
||||||
- 攻击管线必须数据驱动、可插拔:弹道生成、蓄力、命中判定要解耦成可替换的模块,否则每种形态都是硬编码。
|
|
||||||
- 形态之间的**两两交互**是组合爆炸。以撒的著名协同都是形态件相遇的产物(硫磺火×鲁多维科=可控激光环),每加一件形态件就要回答「它和已有每件形态件叠在一起是什么」。
|
|
||||||
- 每种形态需要独立的手感调试与视觉反馈,美术/音效成本跟着形态数走。
|
|
||||||
|
|
||||||
玩家学习成本:高。玩家要重新学瞄准节奏(蓄力、甩刀、贴身),一件形态道具等于一份「新武器教程」。以撒的鲁多维科口碑两极,核心原因就是它同时改了形态和操控方式。
|
|
||||||
|
|
||||||
### 1.2 操作动词新增/替换:玩家多一个动作,或旧动作被换掉
|
|
||||||
|
|
||||||
定义:改变「玩家按什么键、做什么操作」,而不是改变操作的数值结果。
|
|
||||||
|
|
||||||
| 游戏 | 道具 | 效果 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 以撒的结合 | 鲁多维科技术(The Ludovico Technique) | 射击键不再发射眼泪,改为全程手动操控一颗悬浮眼泪,停在敌人身上持续造成伤害 | [wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/The_Ludovico_Technique) |
|
|
||||||
| 以撒的结合 | 嚼过的树叶(Gnawed Leaf) | 静止 1 秒(不按移动/攻击键)变成无敌雕像——「不动」从一个空操作变成有价值的动词 | [wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/Gnawed_Leaf) |
|
|
||||||
| 雨中冒险2 | 异端四件套(Visions/Hooks/Strides/Essence of Heresy) | 分别替换主技能/副技能/位移/特殊技能为全新技能;集齐四件角色直接变成隐藏人物「异端者」 | [wiki.gg 已核对](https://riskofrain2.wiki.gg/wiki/Visions_of_Heresy) |
|
|
||||||
| Dead Cells | 背包三变异(Porcupack / Armadillopack / Acrobatipack) | 「翻滚」这个动词被追加功能:滚过敌人时用背包近战攻击、用背包盾格挡、滚后用背包远程射击 | [wiki.gg 已核对](https://deadcells.wiki.gg/wiki/Mutations) |
|
|
||||||
| 20 Minutes Till Dawn | 围城(Siege)+「站桩」协同(Stand your Ground) | 静止时 40% 概率射击不耗弹药;协同后站桩换更多弹道与射速、移动更慢——「站着不动」成为可投资的动词 | [wiki.gg 已核对](https://20minutestilldawn.wiki.gg/wiki/Upgrades) |
|
|
||||||
|
|
||||||
设计代价(底层支撑):
|
|
||||||
|
|
||||||
- 输入/动作层要能注册新动词或整体替换旧动词,并且所有依赖旧动词的下游(教程、UI 提示、成就、AI 队友)都要跟着改。
|
|
||||||
- 「替换」类比「新增」类贵得多:新增是加一个分支,替换是回收玩家已有的肌肉记忆。
|
|
||||||
|
|
||||||
玩家学习成本:最高的一类。玩家为一局游戏建立的操作习惯被改写,误操作期很长。这类道具的口碑天然两极(鲁多维科、异端套都是争议与神作评价并存),设计时要把「学习期也有收益」考虑进去。
|
|
||||||
|
|
||||||
### 1.3 资源转换通道:开一条 A 资源兑 B 效果的通道
|
|
||||||
|
|
||||||
定义:不创造新资源,而是打通既有两种资源之间的兑换,让一种资源的盈余变成另一种的产出。
|
|
||||||
|
|
||||||
| 游戏 | 道具 | 效果 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 以撒的结合 | 献血袋(IV Bag) | 主动道具,无限次使用:掉半颗心换 1-2 金币 | [wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/IV_Bag) |
|
|
||||||
| 以撒的结合 | 黑暗乞丐(Dark Bum) | 跟班自动收集红心,攒满后吐出黑心/魂心/蜘蛛——把溢出的治疗资源转成防御资源 | [wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/Dark_Bum) |
|
|
||||||
| 以撒的结合 | 纵火狂(Pyromaniac) | 爆炸不再伤害以撒,反而回血——把「敌方伤害源」转成「我方治疗源」 | [wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/Pyromaniac) |
|
|
||||||
| 雨中冒险2 | 众筹(The Crowdfunder) | 装备:开启后持续自动射击,每发子弹烧 1 金币,射速随开启时间爬升——金币直接兑输出 | [wiki.gg 已核对](https://riskofrain2.wiki.gg/wiki/The_Crowdfunder) |
|
|
||||||
| 雨中冒险2 | 恩库哈纳的意见(N'kuhana's Opinion) | 治疗量蓄能,满后发射追踪骷髅光弹——治疗溢出转伤害 | [wiki.gg 未核对](https://riskofrain2.wiki.gg/wiki/N%27kuhana%27s_Opinion) |
|
|
||||||
| 哈迪斯1 | 囤积斩(Hoarding Slash,锤子改造) | 普攻伤害随当前金币量提升——经济资源直接进伤害公式 | [fandom 未核对](https://hades.fandom.com/wiki/Daedalus_Hammer) |
|
|
||||||
| Brotato | 献血(Blood Donation) | 每秒掉 1 点血,每波结束 +40 材料——生存资源兑经济资源 | [fandom 未核对](https://brotato.fandom.com/wiki/Items) |
|
|
||||||
|
|
||||||
设计代价(底层支撑):
|
|
||||||
|
|
||||||
- 经济系统必须多币种,且每种资源都有独立的产出口和消耗口,否则没有「盈余」可兑换。
|
|
||||||
- 兑换率就是平衡刀锋:定高了无人问津,定低了瞬间被刷爆。
|
|
||||||
- **必须防兑换环**:A→B 和 B→A 两条通道同时存在且都正收益时,玩家原地刷资源。通用解法是加每轮上限、递减兑换率、或让其中一环带损耗。
|
|
||||||
|
|
||||||
玩家学习成本:低到中。「拿 X 换 Y」一读就懂,但最优兑换时点需要玩家自己算账——这恰好是这类道具的深度来源。
|
|
||||||
|
|
||||||
### 1.4 风险契约:签一份带真实痛感的合同换超模强度
|
|
||||||
|
|
||||||
定义:收益超过同级数值件,但附带一条会持续咬人的代价;玩家的决策点在「敢不敢签」。
|
|
||||||
|
|
||||||
| 游戏 | 道具 | 效果 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 雨中冒险2 | 塑形玻璃(Shaped Glass) | 伤害 ×2,生命 ×0.5,指数叠加(3 件时 8 倍伤害、12.5% 生命) | [wiki.gg 已核对](https://riskofrain2.wiki.gg/wiki/Shaped_Glass) |
|
|
||||||
| 雨中冒险2 | 超脱(Transcendence) | 只留 1 点血,其余全部转为可再生护盾——换一套承伤规则,治疗体系全废 | [wiki.gg 已核对](https://riskofrain2.wiki.gg/wiki/Transcendence) |
|
|
||||||
| 以撒的结合 | 死猫(Dead Cat) | 生命上限压到 1 颗心,换 9 条命 | [wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/Dead_Cat) |
|
|
||||||
| 哈迪斯1 | 混沌祝福(Chaos boon) | 先承受数场战斗的减益(如「普攻被封印」),熬过后拿到永久增益——代价前置、收益后置 | [fandom 未核对](https://hades.fandom.com/wiki/Chaos) |
|
|
||||||
| Dead Cells | 词相「该死」(Damned) | 诅咒不再即死,改为「受伤与造成伤害都翻倍」,且诅咒宝箱出现率翻倍 | [wiki.gg 已核对](https://deadcells.wiki.gg/wiki/Aspects) |
|
|
||||||
| 杀戮尖塔 | 咖啡滤杯(Coffee Dripper)等 Boss 遗物 | +1 能量,但休息点不能再回血——拿长期恢复能力换每回合节奏 | [fandom 未核对](https://slay-the-spire.fandom.com/wiki/Coffee_Dripper) |
|
|
||||||
|
|
||||||
设计代价(底层支撑):
|
|
||||||
|
|
||||||
- **代价必须可读**:拾取瞬间就要讲清楚会失去什么(文案、图标、后果预览),否则玩家归因给「游戏坑我」而不是「我签错了」。
|
|
||||||
- 数值上契约要做成「期望超模 + 痛感真实」才有人签;痛感太轻变纯超模,痛感太重变废件。
|
|
||||||
- 契约会改变后续所有系统的压力分布(超脱让治疗道具全变废卡),需要联动清理或转化机制兜底。
|
|
||||||
|
|
||||||
玩家学习成本:中。单次决策好学,难在评估「这份代价在我的构筑里有多痛」——这正是契约类的策略深度,但也是「新手陷阱」口碑的来源。
|
|
||||||
|
|
||||||
### 1.5 触发器扩展:新增「当 X 时 Y」的反应规则
|
|
||||||
|
|
||||||
定义:给游戏的事件系统挂上新的监听器——命中时、击杀时、受伤时、回合末,某个效果自动发生。
|
|
||||||
|
|
||||||
| 游戏 | 道具 | 效果 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 雨中冒险2 | 尤克里里(Ukulele) | 命中 25% 概率发射链电,对最多 3 个附近目标造成 80% 总伤害 | [wiki.gg 已核对](https://riskofrain2.wiki.gg/wiki/Ukulele) |
|
|
||||||
| 雨中冒险2 | 溺水者的手势(Gesture of the Drowned) | 装备冷却减半,但冷却一好就强制自动触发——把「手动装备」改造成「定时触发器」 | [wiki.gg 已核对](https://riskofrain2.wiki.gg/wiki/Gesture_of_the_Drowned) |
|
|
||||||
| 杀戮尖塔 | 枯枝(Dead Branch)× 腐化(Corruption) | 枯枝:每当一张牌被消耗,随机补一张牌;腐化让技能 0 费且打出即消耗,两者合成无限过牌引擎 | [wiki.gg 已核对](https://slaythespire.wiki.gg/wiki/Dead_Branch) |
|
|
||||||
| Dead Cells | 连击节奏(Kill Rhythm)/连击(Combo) | 交替使用武器加攻速;连续命中叠伤害层数(挨打或超时清空) | [wiki.gg 已核对](https://deadcells.wiki.gg/wiki/Mutations) |
|
|
||||||
| 20 Minutes Till Dawn | 碎裂(Splinter)/碎冰(Shatter)/超载协同(Overload) | 击杀的敌人炸成 3 颗子弹;冻结敌人死亡时爆炸;闪电命中燃烧敌人引发爆炸 | [wiki.gg 已核对](https://20minutestilldawn.wiki.gg/wiki/Upgrades) |
|
|
||||||
| Brotato | 受惊的香肠(Scared Sausage) | 命中概率附加燃烧(概率随元素属性提升) | [fandom 未核对](https://brotato.fandom.com/wiki/Items) |
|
|
||||||
|
|
||||||
设计代价(底层支撑):
|
|
||||||
|
|
||||||
- 需要一个事件总线/触发器管线:事件类型要枚举齐全(命中/击杀/受伤/拾取/回合开始/回合末),且所有效果走同一条管线才能组合。
|
|
||||||
- 触发链会自激(A 触发 B、B 又触发 A),需要每事件/每帧次数上限或触发深度限制。
|
|
||||||
- 屏幕表现要可读:触发器叠多了之后满屏爆炸,玩家需要能归因「刚才那下是什么打出来的」。
|
|
||||||
|
|
||||||
玩家学习成本:最低。「当 X 时 Y」是自然语言,一看就懂;叠触发器叠出连锁反应也是幸存者类爽感的主要来源。深度藏在「我该喂哪个事件」里。
|
|
||||||
|
|
||||||
### 1.6 规则豁免:白纸黑字的基础规则,对你不成立
|
|
||||||
|
|
||||||
定义:不动数值也不加触发,直接宣布某条基础规则失效(或反向生效)。
|
|
||||||
|
|
||||||
| 游戏 | 道具 | 效果 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 以撒的结合 | 圣斗篷(Holy Mantle) | 每个房间抵挡第一次伤害——「碰到就掉血」这条规则每房间豁免一次 | [wiki.gg 未核对](https://bindingofisaacrebirth.wiki.gg/wiki/Holy_Mantle) |
|
|
||||||
| 以撒的结合 | 混沌(Chaos) | 道具池规则作废:之后任何房间都可能出任何池子的道具 | [wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/Chaos) |
|
|
||||||
| 杀戮尖塔 | 符文金字塔(Runic Pyramid) | 回合结束不再弃牌——手牌轮换规则对你不成立 | [wiki.gg 已核对](https://slaythespire.wiki.gg/wiki/Runic_Pyramid) |
|
|
||||||
| 杀戮尖塔 | 蛇眼(Snecko Eye) | 每回合多抽 2 张,但抽到的牌费用随机化(0-3)——费用规则被改写,口碑两极 | [wiki.gg 已核对](https://slaythespire.wiki.gg/wiki/Snecko_Eye) |
|
|
||||||
| 杀戮尖塔 | 绽放印记(Mark of the Bloom) | 「你不再能治疗」——反向豁免,剥夺规则保障(详见第 3 节反面教材) | [wiki.gg 已核对](https://slaythespire.wiki.gg/wiki/Mark_of_the_Bloom) |
|
|
||||||
| 吸血鬼幸存者 | 深红裹尸布(Crimson Shroud,月桂进化) | 单次受到伤害的上限压到 10 点——伤害公式的天花板规则被改写 | [fandom 未核对](https://vampire-survivors.fandom.com/wiki/Crimson_Shroud) |
|
|
||||||
|
|
||||||
设计代价(底层支撑):
|
|
||||||
|
|
||||||
- 规则必须集中实现、可被判例外:如果「伤害结算」散落在十几处代码里,一条豁免就要改十几处。豁免类道具倒逼架构把规则引擎化、带优先级表。
|
|
||||||
- 每条豁免与既有全部系统的交互都是 QA 项(纵火狂让自爆道具从陷阱变成治疗),豁免件数量 = 测试面。
|
|
||||||
- 辨识度最高、记忆点最强的一类——玩家多年后还记得「金字塔不弃牌」。
|
|
||||||
|
|
||||||
玩家学习成本:低(「这条规则对你不成立」一句话说完),但多条豁免叠加后的相互作用连老玩家也难预判,组合的不可预判性是它的深度也是它的风险。
|
|
||||||
|
|
||||||
### 1.7 召唤/陪衬物:发一个替你干活的实体
|
|
||||||
|
|
||||||
定义:道具实体化为一个自主行动的陪衬物,替你输出、防御或收集。
|
|
||||||
|
|
||||||
| 游戏 | 道具 | 效果 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 以撒的结合 | 梦魇(Incubus) | 跟班,完全复制以撒当前的眼泪形态与伤害——你的构筑它同步成长 | [wiki.gg 未核对](https://bindingofisaacrebirth.wiki.gg/wiki/Incubus) |
|
|
||||||
| 以撒的结合 | 通灵蝇(Psy Fly) | 环绕跟班,自动拦截飞向以撒的敌方子弹——纯防御陪衬 | [wiki.gg 未核对](https://bindingofisaacrebirth.wiki.gg/wiki/Psy_Fly) |
|
|
||||||
| 雨中冒险2 | 鱿鱼炮台(Squid Polyp)/女王腺体(Queen's Gland) | 触发装备时召唤鱿鱼炮台;每 30 秒自动孵化一只甲虫守卫 | [wiki.gg 未核对](https://riskofrain2.wiki.gg/wiki/Squid_Polyp) |
|
|
||||||
| 20 Minutes Till Dawn | 龙蛋(Dragon Egg)/幽灵伙伴(Ghost Friend) | 龙蛋 3 分钟孵化成龙,成长期还能继续投升级;幽灵伙伴自动连射穿透弹 | [wiki.gg 已核对](https://20minutestilldawn.wiki.gg/wiki/Upgrades) |
|
|
||||||
| Nova Drift | 构建物体系(炮塔/僚机/机雷 + Carrier/Engineer 机体) | 机体与模块可以把整局玩法改成「指挥舰队」,本体退居二线 | [fandom 未核对](https://nova-drift.fandom.com/wiki/Mods) |
|
|
||||||
|
|
||||||
设计代价(底层支撑):
|
|
||||||
|
|
||||||
- 需要实体池、最简 AI、目标选择逻辑;陪衬物的行为蠢一点点,玩家归因就是「道具烂」而不是「我菜」,容错标准比玩家本体高。
|
|
||||||
- 陪衬物是「零输入输出」,数值上必须收税:占用跟班位、稀释道具池、成长时间、或本体惩罚(20MTD 的召唤大师协同直接削弱子弹)。
|
|
||||||
|
|
||||||
玩家学习成本:最低之一,且情感价值高(陪伴感、养成感,龙蛋要等 3 分钟才会孵化这件事本身就是记忆点)。
|
|
||||||
|
|
||||||
### 1.8 环境/棋盘改写:改的不是你,是这局游戏本身
|
|
||||||
|
|
||||||
定义:改写关卡、地图、遭遇或「道具系统自身」的生成规则。
|
|
||||||
|
|
||||||
| 游戏 | 道具/系统 | 效果 | 出处 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 以撒的结合 | 红钥匙(Red Key) | 在楼层墙面上开凿新房间,约 10% 开出恶魔房/天使房等特殊房;突破 13×13 边界直接进入错误房 | [wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/Red_Key) |
|
|
||||||
| 以撒的结合 | TMTRAINER | 拾取后本局所有后续道具变成 2-3 个效果随机拼接的故障道具——改写的是「道具」这个东西本身的生成规则 | [wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/TMTRAINER) |
|
|
||||||
| 杀戮尖塔 | 潘多拉魔盒(Pandora's Box) | 牌库里的初始打击/防御全部转化为随机牌——开局配置被整个重铸 | [wiki.gg 已核对](https://slaythespire.wiki.gg/wiki/Pandora%27s_Box) |
|
|
||||||
| 哈迪斯1 | 惩罚契约「极端措施」(Extreme Measures) | 直接改写各层 Boss 战(换人、换场地、换招式) | [fandom 未核对](https://hades.fandom.com/wiki/Pact_of_Punishment) |
|
|
||||||
| 吸血鬼幸存者 | 秘牌「疯狂律动」(Mad Groove) | 把全图所有散落道具磁吸到身边——地图资源分布规则作废 | [fandom 未核对](https://vampire-survivors.fandom.com/wiki/Arcanas) |
|
|
||||||
|
|
||||||
设计代价(底层支撑):
|
|
||||||
|
|
||||||
- 关卡/棋盘生成器必须数据驱动且支持运行期修改,存档结构要能容纳「被改过的地图」。
|
|
||||||
- **玩家信任是核心成本**:棋盘规则被改写必须充分公示(图标、预告、规则说明),否则玩家的体验是「游戏骗人」而不是「道具好强」。红钥匙开房前用红色门框预告,就是公示的正面例子。
|
|
||||||
- 改写「系统自身」的一类(TMTRAINER)还要处理崩溃、死档等工程风险。
|
|
||||||
|
|
||||||
玩家学习成本:中。玩家要重新评估「这张图现在是什么规则」,信息量取决于改写的公示质量。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. 速查表
|
|
||||||
|
|
||||||
| 模式 | 底层支撑要求 | 学习成本 | 代表作 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 攻击形态变换 | 可插拔攻击管线 + 形态两两交互 | 高 | 硫磺火、哈迪斯锤子 |
|
|
||||||
| 操作动词新增/替换 | 输入层可注册/回收动词 | 最高 | 鲁多维科、异端套 |
|
|
||||||
| 资源转换通道 | 多币种经济 + 防兑换环 | 低-中 | 献血袋、众筹 |
|
|
||||||
| 风险契约 | 代价可读性 + 联动兜底 | 中 | 塑形玻璃、死猫 |
|
|
||||||
| 触发器扩展 | 事件总线 + 自激保护 | 最低 | 尤克里里、枯枝 |
|
|
||||||
| 规则豁免 | 规则引擎化 + 全交互 QA | 低(组合难预判) | 符文金字塔、混沌 |
|
|
||||||
| 召唤/陪衬物 | 实体池 + 最简 AI + 数值收税 | 低 | 梦魇、龙蛋 |
|
|
||||||
| 环境/棋盘改写 | 生成器数据驱动 + 公示 | 中 | 红钥匙、潘多拉魔盒 |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. 逐模式对「扫雷 + 自动战斗」的适配评估
|
|
||||||
|
|
||||||
本游戏的动词与资源盘点:扫雷侧动词 = 挖格、插旗、停手(结束回合)、刷新;扫雷侧资源 = 行动点、生命、旗子、刷新次数、已翻开的信息(视野);战斗侧 = 自动结算(构筑作为输入,战斗过程无手动操作)。以下只评估「该模式落在这些动词上会是什么形态」,不做具体道具设计。
|
|
||||||
|
|
||||||
### 3.1 攻击形态变换 → 适配度:低-中
|
|
||||||
|
|
||||||
- 扫雷侧没有手动攻击,「攻击手感」这个变异对象不存在。以撒式变异的精髓(蓄力节奏、瞄准方式)在自动战斗里无处落。
|
|
||||||
- 唯一能落的形态是「结算管线可插拔」:伤害如何分配、单体还是溅射、按什么顺序结算,由构筑决定。但这是「数值公式的改写」,玩家体感远弱于手搓硫磺火。
|
|
||||||
- 结论:不是不能做,而是它在我们的游戏里会退化成「规则改写」的子集,不必单独立类。
|
|
||||||
|
|
||||||
### 3.2 操作动词新增/替换 → 适配度:高
|
|
||||||
|
|
||||||
- 扫雷侧动词集极小(只有 4 个),新增或替换一个动词就是极强体感的变异——动词越少的游戏,动词件的相对重量越大。
|
|
||||||
- 与秘宝的「操作包络」相邻但有清晰分界:秘宝放宽既有动词的参数(看得更远、挖得更远、AP 更多),动词件是新增一个动作或换掉一个动作。两者可以共存,分类时不混淆即可。
|
|
||||||
- 代价:每个新动词要进输入层、UI、教程各一份;替换类(如替换「插旗」)要处理玩家已有习惯的回收问题。
|
|
||||||
|
|
||||||
### 3.3 资源转换通道 → 适配度:高
|
|
||||||
|
|
||||||
- 已有资源异质且多(AP / 生命 / 旗子 / 刷新次数 / 视野信息),两两开通道就是一片设计空间,不需要先造新资源。
|
|
||||||
- 扫雷有一个其它游戏没有的特性:**受伤是玩家主动选择的确定事件**(明知是雷还挖)。这让「掉血」天然成为可计划兑换的燃料,比动作游戏里「挨打换资源」可控得多。
|
|
||||||
- 注意防兑换环:任何两条互相转换的通道都要有损耗或每轮上限。
|
|
||||||
|
|
||||||
### 3.4 风险契约 → 适配度:高
|
|
||||||
|
|
||||||
- 奇物「当局清零」的特性与契约天然合拍:契约的痛感被限制在一局之内,敢签的门槛低于永久件。
|
|
||||||
- 扫雷的信息透明让代价可读性极好:玩家看得到雷率、剩余雷数、自己的血线,「这份契约有多痛」是可计算的,契约决策因此更像策略而不是赌博。
|
|
||||||
- 注意:代价文案要在拾取前完整讲清(塑形玻璃的「BUT」句式是范本)。
|
|
||||||
|
|
||||||
### 3.5 触发器扩展 → 适配度:最高
|
|
||||||
|
|
||||||
- 扫雷板面事件离散、确定、可数:「挖出一个数字 n」「插旗插对」「踩到雷」「停手」「轮末结算」全是边界清晰的事件,触发条件玩家可以自己验证。
|
|
||||||
- 相比幸存者类乱战中的触发(满屏特效归因困难),扫雷触发器「讲得清」——每一下触发都能指认来源,这正好补上触发器类最大的体验短板。
|
|
||||||
- 「当 X 时 Y」也是学习成本最低的句式,适合作为专长池的骨架模式。
|
|
||||||
|
|
||||||
### 3.6 规则豁免 → 适配度:中-高
|
|
||||||
|
|
||||||
- 我们的基础规则少而硬(数字不撒谎、挖雷要付出代价、旗子是承诺),每条豁免的辨识度因此极高——规则越少,豁免越响。
|
|
||||||
- 高危区:**「数字撒谎」类豁免直接破坏逻辑推理契约**,等于拆掉扫雷的底层信任,不建议进入池子;安全的豁免对象是代价规则与承诺规则(挖雷不死、旗子可改),而不是信息规则。
|
|
||||||
- 架构前提:规则要集中实现、可判例外,否则豁免件的 QA 面失控。
|
|
||||||
|
|
||||||
### 3.7 召唤/陪衬物 → 适配度:中-高
|
|
||||||
|
|
||||||
- 战斗侧:自动战斗中召唤物零输入成本,天然适配,收税方式可照抄品类惯例(占格子/削本体)。
|
|
||||||
- 扫雷侧可延伸出独有形态:「板面代理」——替你执行某个低自主度动作的陪衬物(如自动插旗)。但代理犯错时玩家归因给道具,失误率必须极低或失误后果极轻,这是该类在本游戏的特有设计约束。
|
|
||||||
|
|
||||||
### 3.8 环境/棋盘改写 → 适配度:最高
|
|
||||||
|
|
||||||
- 雷区本身就是棋盘,改写对象现成且具体:雷的密度、雷的类型、地形格、结算前的板面修整。「棋盘」在多数 roguelike 里是隐喻,在我们这里是字面意义——改写类道具的落点比任何参照游戏都直接。
|
|
||||||
- 核心成本是公示:板面规则改写必须可见(改过的格子要有视觉标记),否则玩家的逻辑推理会被悄悄破坏,体验是「游戏骗人」。
|
|
||||||
- 与规则豁免的分工建议:豁免改「规则对你是否成立」,棋盘改写改「这张图长什么样」,两者别混在一件上。
|
|
||||||
|
|
||||||
### 3.9 适配度总评
|
|
||||||
|
|
||||||
第一梯队(模式与载体天然同构):**触发器扩展、环境/棋盘改写、资源转换通道**。
|
|
||||||
第二梯队(高适配但有明确约束):操作动词新增/替换(约束:输入层与教程成本)、风险契约(约束:文案公示)、规则豁免(约束:别碰信息规则)。
|
|
||||||
第三梯队:召唤/陪衬物(战斗侧顺手、扫雷侧需谨慎)、攻击形态变换(退化为结算公式改写,不单独立类)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. 反面教材:公认失败/无趣设计的共同特征
|
|
||||||
|
|
||||||
### 4.1 具体案例
|
|
||||||
|
|
||||||
- **以撒 / 塔之诅咒(Curse of the Tower)**:受伤时在身边生成 6 颗即爆炸弹,炸弹不分敌我、小房间躲不掉,还会炸毁献血机等互动点。代价大于收益 + 触发不可控的教科书案例。[wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/Curse_of_the_Tower)
|
|
||||||
- **以撒 / 以撒的心脏(Isaac's Heart)**:本体无敌,但伤害判定转移到一个走位滞后的跟班心脏上,躲弹难度反而上升。改写了核心操作,却没给配套的控制手段。[wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/Isaac%27s_Heart)
|
|
||||||
- **以撒 / 豆奶(Soy Milk)**:射速拉满但伤害乘 0.2,基础面板上 DPS 几乎不变甚至下降,只有命中特效流里才发光。无上下文时是数值陷阱。[wiki.gg 已核对](https://bindingofisaacrebirth.wiki.gg/wiki/Soy_Milk)
|
|
||||||
- **杀戮尖塔 / 绽放印记(Mark of the Bloom)**:一个事件选项永久封死全部治疗,连复活道具都会静默失效,社区专门立了「耻辱墙」记录中招玩家。一次选择永久剥夺安全网 + 交互反直觉。[wiki.gg 已核对](https://slaythespire.wiki.gg/wiki/Mark_of_the_Bloom)
|
|
||||||
- **杀戮尖塔 / 蛇眼(Snecko Eye)**:费用全部随机化让「看费打牌」的规划失效,强弱完全取决于卡组均价。规则改写覆盖面太广时,玩家感到「被道具玩」——它是争议件而非纯失败件,正说明覆盖面需要控制。[wiki.gg 已核对](https://slaythespire.wiki.gg/wiki/Snecko_Eye)
|
|
||||||
- **雨中冒险2 / 石流肩甲(Stone Flux Pauldron)**:双倍生命换一半移速,而移速牵动着躲弹、赶路、拾取全部系统。单一代价打在全身系统上,公认最弱月神件。[wiki.gg 已核对](https://riskofrain2.wiki.gg/wiki/Stone_Flux_Pauldron)
|
|
||||||
- **纯数值填充件(通识,无单条出处)**:Brotato、吸血鬼幸存者、以撒早期都有大量「+X% 属性」小件,它们作为奖池填充存在是品类惯例,但被玩家记住和讨论的从来不是它们——「拿了跟没拿一样」是数值件的原罪。
|
|
||||||
|
|
||||||
### 4.2 共同特征清单
|
|
||||||
|
|
||||||
1. **代价打在玩家看不见或牵一发动全身的系统上**(移速、全部治疗能力),玩家签的时候无法预估痛在哪里。
|
|
||||||
2. **触发不可控、效果不分敌我**,道具实际在惩罚持有者。
|
|
||||||
3. **无上下文时是净亏损**,收益依赖玩家并未拥有的配合件——把「构筑协同」误用成「单件是坑」。
|
|
||||||
4. **永久剥夺某类保障且交互反直觉**(复活不生效),中招一次的怨气盖过百次正常体验。
|
|
||||||
5. **改写操作但不给配套控制手段**,玩家为道具的野心付出操作代价。
|
|
||||||
6. **纯数值、无行为变化、无画面反馈**,存在感为零。
|
|
||||||
|
|
||||||
对照面:塑形玻璃与死猫同样代价惨重却口碑良好,差别在于——代价一句话讲得清、后果当场兑现、且换来的强度肉眼可见。**契约不可怕,糊涂账才可怕。**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. 附:来源清单
|
|
||||||
|
|
||||||
### 5.1 本次已逐条一手核对(wiki.gg)
|
|
||||||
|
|
||||||
以撒的结合:
|
|
||||||
|
|
||||||
- Brimstone: https://bindingofisaacrebirth.wiki.gg/wiki/Brimstone
|
|
||||||
- The Ludovico Technique: https://bindingofisaacrebirth.wiki.gg/wiki/The_Ludovico_Technique
|
|
||||||
- The Inner Eye / Mutant Spider: https://bindingofisaacrebirth.wiki.gg/wiki/The_Inner_Eye
|
|
||||||
- Gnawed Leaf: https://bindingofisaacrebirth.wiki.gg/wiki/Gnawed_Leaf
|
|
||||||
- IV Bag: https://bindingofisaacrebirth.wiki.gg/wiki/IV_Bag
|
|
||||||
- Dark Bum: https://bindingofisaacrebirth.wiki.gg/wiki/Dark_Bum
|
|
||||||
- Pyromaniac: https://bindingofisaacrebirth.wiki.gg/wiki/Pyromaniac
|
|
||||||
- Soy Milk: https://bindingofisaacrebirth.wiki.gg/wiki/Soy_Milk
|
|
||||||
- Dead Cat: https://bindingofisaacrebirth.wiki.gg/wiki/Dead_Cat
|
|
||||||
- Chaos: https://bindingofisaacrebirth.wiki.gg/wiki/Chaos
|
|
||||||
- Curse of the Tower: https://bindingofisaacrebirth.wiki.gg/wiki/Curse_of_the_Tower
|
|
||||||
- Isaac's Heart: https://bindingofisaacrebirth.wiki.gg/wiki/Isaac%27s_Heart
|
|
||||||
- Red Key: https://bindingofisaacrebirth.wiki.gg/wiki/Red_Key
|
|
||||||
- TMTRAINER: https://bindingofisaacrebirth.wiki.gg/wiki/TMTRAINER
|
|
||||||
|
|
||||||
杀戮尖塔:
|
|
||||||
|
|
||||||
- Snecko Eye: https://slaythespire.wiki.gg/wiki/Snecko_Eye
|
|
||||||
- Runic Pyramid: https://slaythespire.wiki.gg/wiki/Runic_Pyramid
|
|
||||||
- Mark of the Bloom: https://slaythespire.wiki.gg/wiki/Mark_of_the_Bloom
|
|
||||||
- Pandora's Box: https://slaythespire.wiki.gg/wiki/Pandora%27s_Box
|
|
||||||
- Dead Branch: https://slaythespire.wiki.gg/wiki/Dead_Branch
|
|
||||||
|
|
||||||
雨中冒险2:
|
|
||||||
|
|
||||||
- Shaped Glass: https://riskofrain2.wiki.gg/wiki/Shaped_Glass
|
|
||||||
- Transcendence: https://riskofrain2.wiki.gg/wiki/Transcendence
|
|
||||||
- Visions of Heresy(含四件套): https://riskofrain2.wiki.gg/wiki/Visions_of_Heresy
|
|
||||||
- Gesture of the Drowned: https://riskofrain2.wiki.gg/wiki/Gesture_of_the_Drowned
|
|
||||||
- The Crowdfunder: https://riskofrain2.wiki.gg/wiki/The_Crowdfunder
|
|
||||||
- Ukulele: https://riskofrain2.wiki.gg/wiki/Ukulele
|
|
||||||
- Stone Flux Pauldron: https://riskofrain2.wiki.gg/wiki/Stone_Flux_Pauldron
|
|
||||||
|
|
||||||
Dead Cells:
|
|
||||||
|
|
||||||
- Aspects: https://deadcells.wiki.gg/wiki/Aspects
|
|
||||||
- Mutations: https://deadcells.wiki.gg/wiki/Mutations
|
|
||||||
|
|
||||||
20 Minutes Till Dawn:
|
|
||||||
|
|
||||||
- Upgrades: https://20minutestilldawn.wiki.gg/wiki/Upgrades
|
|
||||||
- Synergies: https://20minutestilldawn.wiki.gg/wiki/Synergies
|
|
||||||
|
|
||||||
### 5.2 规范引用、本机未核对(fandom 不可达,建议取用前复核)
|
|
||||||
|
|
||||||
- 哈迪斯1/2 Daedalus Hammer: https://hades.fandom.com/wiki/Daedalus_Hammer
|
|
||||||
- 哈迪斯1 Chaos(混沌祝福): https://hades.fandom.com/wiki/Chaos
|
|
||||||
- 哈迪斯1 Pact of Punishment(惩罚契约/极端措施): https://hades.fandom.com/wiki/Pact_of_Punishment
|
|
||||||
- 吸血鬼幸存者 Arcanas(秘牌): https://vampire-survivors.fandom.com/wiki/Arcanas
|
|
||||||
- 吸血鬼幸存者 Evolution(武器进化): https://vampire-survivors.fandom.com/wiki/Evolution
|
|
||||||
- 吸血鬼幸存者 Crimson Shroud: https://vampire-survivors.fandom.com/wiki/Crimson_Shroud
|
|
||||||
- Brotato Items: https://brotato.fandom.com/wiki/Items
|
|
||||||
- Nova Drift Mods: https://nova-drift.fandom.com/wiki/Mods
|
|
||||||
- Nova Drift Super Mods: https://nova-drift.fandom.com/wiki/Super_Mods
|
|
||||||
- 杀戮尖塔 Coffee Dripper: https://slay-the-spire.fandom.com/wiki/Coffee_Dripper
|
|
||||||
@@ -1,335 +0,0 @@
|
|||||||
# 调研:全局作用域变异设计空间(精英/Boss 图整图变异)
|
|
||||||
|
|
||||||
> 性质:纯调研零代码(2026-10-04,独立会话;任务来源=06-待办清单「全局作用域变异」条目——2026-09-19 用户拍板「Boss 图变异暂无设计想法,留 Alpha 再设计」)。
|
|
||||||
> 研究对象:精英/Boss 图**整图生效**的变异形态——scope=global 词表位已在 schema 保留、语义全空([地形变异](../gdd/systems/排雷循环/地形变异.md) 首批六类型全为 region 格子级)。
|
|
||||||
> **状态:已裁决+已立项(2026-10-04 用户:拍板点 P1-P8 与盘问 Q1-Q4 全按推荐案落;批位=迭代 14 ③号卡,roadmap 已登记;任务书待起草)。本文 v1.1 按裁决后口径回写,勘误注记两处在案。**
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 结论前置
|
|
||||||
|
|
||||||
1. **全局变异是"词表位已留、语义全空"**:schema 层零结构改动即可承载(`variation_table.gd:22` SCOPES 已含 global,六行现行数据全 scope=region)——六案候选里只有**资源面(案A)与成本面(案D)**两案能不碰三条承重约束(零特判/数字恒真/可推理率≥0.85 绝对锚)直接落;信息面与规则改写两案分别撞已预留杠杆与正式变更边界。
|
|
||||||
2. **推荐序(已裁决):案A 资源面·微贫向偏斜(首发,迭代 14 ③号卡)> 案D 成本面(冻土,次批候选)> 案B 诡雷弱化版(远期)> 案E 信息面(冻结,解封条件在案)> 案C 规则改写(远期概念池);案F 结构面不进变异框架**(与 A5 初始展开收窄批撞同一杠杆,归棋盘生成/难度曲线域)。
|
|
||||||
3. **查重主结论(任务书三例逐一对照)**:「某型资源全局翻负」与九型字典负向九行语义重复,改用贫化/倾斜表达零重叠;「邻接数字语义变形」撞"数字恒真"推理地基(排雷玩法.md:103)+零特判正式变更边界;「整图极性偏移(诡雷海)」与 region 伤害型同轴放大,不推荐。与既有设计零同轴的只有资源面与成本面两案。
|
|
||||||
4. **投放节奏(已裁决)**:L1 Boss 免疫(带B 白板 L1 通过率 [50,85] 的教学保护)→ **L2/L3 Boss 恒定一型(双关同型,Q2 甲)** → 开战横幅+HUD 常驻角标+帮助手册行三层预告 → **Boss 图替换制**:scope=global 上板时该图不再布 region 片(L2 完美 Boss 承伤 55.8% 已越带,叠加制火上浇油)。
|
|
||||||
5. **与 C1 基线读数的关系**:region 变异已把难度预算烧掉一大段(普通档 L1 83%→43%)。现行四带下全局变异的合法战场是**带A**(白板战役全通 [0,10%],现行完美档 78.5% 越上界 68.5pp——游戏对带A来说太简单,L2/L3 Boss 图全局变异正是压向带A 的收敛杠杆且不碰带B);带A 收敛判读后置 M-4(Q4 甲),落地批 off/on 对拍只测不判。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 现状事实(代码与文档级)
|
|
||||||
|
|
||||||
### 1.1 正主归属与登记原文
|
|
||||||
|
|
||||||
| 面 | 归属 | 出处 |
|
|
||||||
|---|---|---|
|
|
||||||
| 机制框架(变异是什么、scope 语义承载) | [地形变异](../gdd/systems/排雷循环/地形变异.md)(P1 后置表 Alpha 行:「全局作用域变异(精英/Boss 图整图生效的变异形态)……作用域语义归难度曲线与Boss」) | 地形变异.md:122 |
|
|
||||||
| 投放计划(哪关出现、频率、强度) | [难度曲线与Boss](../gdd/systems/冒险循环/难度曲线与Boss.md)(P2 后置表:「全局作用域变异的投放计划|机制框架归地形变异,投放计划归本文,随关卡扩展」) | 难度曲线与Boss.md:260 |
|
|
||||||
| 总登记 | 06-待办清单「全局作用域变异」条:现状=作用域语义未定稿,来源=P1 后置表(首批类型定稿批 2026-09-20 落地:首批四类型均为 region 格子级;scope=global 词表位保留);归属=难度曲线与Boss;状态=待办(Alpha)——**2026-10-04 立项后待实施批随批收口** | 06-待办清单.md:12-20 |
|
|
||||||
|
|
||||||
### 1.2 词表位与现行数据
|
|
||||||
|
|
||||||
- `game/data/schemas/variation_table.gd:22`:`const SCOPES := ["region", "global"]`——**global 已是合法枚举值,加载校验放行,零行数据使用**。
|
|
||||||
- 效果/触发/布置三枚举现行词表(:23-25):`EFFECTS = ["none","flat_damage","hide_number"]` / `TRIGGERS = ["on_open","on_number_shown"]` / `PLACEMENTS = ["closed_only","any"]`。框架承诺「新增类型 = 清单加行 + 必要时扩充枚举词表,不改读取方」——全局型若引入新效果轴,走同一扩词表通道(读取方按枚举路由的分支仍须实现)。
|
|
||||||
- `game/data/tables/variation.tres` 六行(thorn/vine/magma/ash/rockfall/mine_dust)**实核全部 scope=region**。
|
|
||||||
- 现行六类型(地形变异.md §类型清单):伤害型三档(荆棘丛 1 / 岩浆 2 / 落石 3,on_open+closed_only)+ 信息型三档(藤蔓缠绕/烬覆/矿尘,on_number_shown+any)。**这两轴就是全局型查重的基准轴**。
|
|
||||||
|
|
||||||
### 1.3 实现四挂点(实施改动面的既有地形)
|
|
||||||
|
|
||||||
| 挂点 | 位置 | 现行职责 |
|
|
||||||
|---|---|---|
|
|
||||||
| 布置段 | `game/core/battle_orchestrator.gd:330`(`_place_variants`,装板序第 4 步:生成→初始展开→资源格→变异格,:306-308) | 候选池门控(unlock_level ≤ 关卡 + board_types 交集,∅ 通配)→ 池内均匀选一 → 连通片生长写入格子快照;专用随机流 `variant_place` 一板恰一 scope |
|
|
||||||
| 伤害兑付 | `game/core/battle_orchestrator.gd:483-490` | 轮末结算逐行读 `variant_ids` 开伤害单据(DamageController,附 variant_id 归因) |
|
|
||||||
| 信息遮蔽 | `game/presentation/main.gd:792`(`_variant_mask_lookup`)+ `board_view.gd:207` | 呈现层 resolver 注入,"?"占位;模拟走查询面不经遮蔽(读数口径不受污染) |
|
|
||||||
| 危险角标 | `game/presentation/main.gd:807`(`_variant_mark_lookup`)+ `board_view.gd:213` | flat_damage 未开格左下危险红三角(迭代 6 T6)——伤害型**开前可见**,信息型遭遇式 |
|
|
||||||
| 迭代 12 第三面 | `battle_orchestrator.gd:783-795`(净化工兵中和相邻伤害型格,`BoardData.clear_variants`)+ :62/:169/:504/:534(地脉采撷/荆棘编织者/熔火之躯经 relic_flags 挂钩) | 地形应对件四件已落(git bfbb473)——全局型的组合关系必须与它们对账(裁决 Q3 甲见 §4.4) |
|
|
||||||
|
|
||||||
数据承载:`board_data.gd:18` `variants := {}`(Vector2i → Array[String] 逐格字典)。**板级作用域没有承载位**——全局型需要新增板级字段(如 `board_variants: Array[String]`),这是一处结构性小扩列。
|
|
||||||
|
|
||||||
### 1.4 全局型必须穿过的四条承重约束
|
|
||||||
|
|
||||||
1. **零特判原则**(地形变异.md §核心规则;排雷玩法承接):变异不得改写扫雷规则本体,挖格/插旗/连锁展开不增分支。「全板规则改写」类候选默认越线——若做是排雷玩法+地形变异双文档正式变更(框架原文明示此门槛)。
|
|
||||||
2. **数字恒真**(排雷玩法.md:103):「每个非雷格的数字恒等于它的八邻雷数,整局推理都建立在这句话上」——数字语义变形类候选直接拆推理地基。
|
|
||||||
3. **可推理率 ≥0.85 绝对锚**(棋盘生成.md:109,结构冻结):生成期对"不靠赌占比"的承诺。信息面全局型使玩家侧实际可推理率跌破生成端承诺值(模拟经查询面不受影响,真人被遮蔽)——锚的语义在真人侧失真。
|
|
||||||
4. **候选池门控双闸**(unlock_level + board_types;registry variant_pool_gate):全局型需要**第三维门控=节点身份(Boss/精英)**——现行门控按关卡+地形,Boss 图与普通图不可区分(这也是今天 Boss 图吃 region 变异的原因,见 1.5)。
|
|
||||||
|
|
||||||
### 1.5 关键现状:Boss 图今天已经在吃 region 变异
|
|
||||||
|
|
||||||
布置门控只看关卡序号与 board_type,不分节点身份——Boss 图装板走同一条 `_place_variants` 路径。台账 96 的 L2 Boss 承伤读数(55.8% 越带)正是**岩浆(region)上 Boss 板**长轮次累积的实测后果。所以全局作用域不是"Boss 图从无变异到有变异",而是"**再加一层(叠加制)还是换一层(替换制)**"的结构选择——已裁决=替换制(§4.4)。
|
|
||||||
|
|
||||||
### 1.6 C1 基线读数溯源(含撞名警示)
|
|
||||||
|
|
||||||
任务书所称「2026-09-20 首批变异定稿批的 C1 基线读数」经溯源=**台账 96 的 R3+unique 基线格读数**(atk+0%/hp+0% 配置、对无变异基线的对比读数),正式登记处:
|
|
||||||
|
|
||||||
- active.md 台账 96(git 5420a16)+ 06 清单注记(git 35cc9ad,登记于「基线通关率越带」与「L2 Boss 承伤越带」两条,后随 2026-10-03 带换代与 06 清欠移除——读数正主留 git 与台账):
|
|
||||||
|
|
||||||
| 读数 | 无变异基线 | 变异后 | 现行带下判读 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 普通档 L1 通关率 | 83% | **43%** | 普通档 v3.4=失败常态窗,只记读数不设带 |
|
|
||||||
| 普通档 L2 通关率 | 87% | **60%** | 同上 |
|
|
||||||
| 完美档 L1 | 87% | **70%** | **带B [50,85] 带内**(距下缘余量 ~20pp) |
|
|
||||||
| 完美档 L2 | 87% | **60%** | 带A 战役口径的面,逐关只测不判 |
|
|
||||||
| L1 Boss 承伤(完美) | 26.7% | **49.8%** | 贴 ≤50% 带缘 |
|
|
||||||
| L2 Boss 承伤(完美) | 35.7% | **55.8%** | **越 ≤50% 带**(变异伤害长轮次累积;归调参批未决) |
|
|
||||||
|
|
||||||
- **撞名警示**:「C1」另有第二义=M-3 迭代 5 杠杆扫描的组合标签(C1 = P1+P2 两刀,design/qa/m3-iter5-lever-scan-2026-09-28.md:33)——与变异批基线读数无关,引用时勿混。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. 外部先例:「整层 modifier」四家(一手核证)
|
|
||||||
|
|
||||||
> 以下四家均于本会话抓取 wiki 原文核证;每条注明出处。另有一句带过的知识库补充单独标注。
|
|
||||||
|
|
||||||
### 2.1 The Binding of Isaac——楼层诅咒(Curse)
|
|
||||||
|
|
||||||
- 出处:[bindingofisaac.fandom.com/wiki/Curses](https://bindingofisaac.fandom.com/wiki/Curses)(本会话抓取核证)。
|
|
||||||
- 机制:诅咒是**改变整个楼层**的特殊效果,进层时以小概率触发(原版基础 1.25%,随成就解锁逐步升到 20%),**进场时屏幕顶部横幅明示**。
|
|
||||||
- 原版三诅咒(Wrath of the Lamb):Curse of the Lost(本层房间数大增、地图更大)/ Curse of Darkness(本层地图被移除)/ Curse of the Labyrinth(XL 层——两层合并为一张超大图)。
|
|
||||||
- 现代版扩充(知识库口径,未逐条核证):Curse of the Blind(道具台全变"?")/ Curse of the Unknown(血量隐藏)/ Curse of the Maze(房间转移乱序)等——信息剥夺与规则改写两个方向的整层先例都在。
|
|
||||||
- 对本作的映射:**「整层作用域+进场横幅预告+低概率逐层掷定」是全局变异呈现与节奏的直接模板**;信息剥夺类(Blind/Darkness)对应案E,规则改写类(Maze)对应案C——注意以撒核心循环不依赖数字推理,同类剥夺搬到扫雷等比放大破坏力(§3 案E)。
|
|
||||||
|
|
||||||
### 2.2 Slay the Spire——进阶(Ascension 1-20)
|
|
||||||
|
|
||||||
- 出处:[slay-the-spire.fandom.com/wiki/Ascension](https://slay-the-spire.fandom.com/wiki/Ascension)(本会话抓取核证)。
|
|
||||||
- 机制:通关三幕后逐级解锁,**20 级累计叠加**,每级 +5% 分数。投递按轴分步:A1 精英出现率 +60% → A2/A3/A4 普通敌/精英/Boss 伤害分轴上抬 → A5 休息回复降 75% → A6 开局已损血 → A7-A9 三类敌 tougher → A10 开局带诅咒牌 → A11 药水槽 −1 → A12 升级卡概率减半 → A13 Boss 金币 −25% → A14 生命上限 −5 → A15 事件不利 → A16 商店 +10% → A17-A19 三类敌招式强化 → A20 三幕双 Boss。
|
|
||||||
- 对本作的映射:**难度投递"按轴分步、逐级累计、先量后质"的教科书**——先数量/数值轴(可推导),后资源/经济轴(案A),最后才是招式/结构轴(案B/C);「每级一个看得见的变化」与本作关间台阶纪律(每关至少投放一项新内容)同构。开局诅咒牌(A10)= 常驻整局修饰的先例。
|
|
||||||
|
|
||||||
### 2.3 Hades——惩罚契约(Pact of Punishment / 热度)
|
|
||||||
|
|
||||||
- 出处:[hades.fandom.com/wiki/Pact_of_Punishment](https://hades.fandom.com/wiki/Pact_of_Punishment)(本会话抓取核证)。
|
|
||||||
- 机制:通关一次后解锁,15 条件(地狱模式再 +1)自由勾选、按档位给热度,热度×武器对挂赏金。与本调研直接相关的四条:
|
|
||||||
- **Extreme Measures(极端措施)1-4**:每档**彻底改写一个区域 Boss 的战斗结构**(复仇女神加技能→骨蛇强化→多头犬加头→冥王终形态)——「遭遇级规则改写」的先例,且是**玩家自愿勾选**;
|
|
||||||
- **Heightened Security(高度警戒)**:陷阱与岩浆伤害 +400%——**地形伤害轴的全局放大**与本作案B同构;
|
|
||||||
- **Underworld Customs(冥界海关)**:每进一个区域强制移除一个祝福——区域级经济税(案A 同向);
|
|
||||||
- **Tight Deadline(限时)**:逐区域计时(分区域作用域的先例)。
|
|
||||||
- 对本作的映射:**「按遭遇/区域分档勾选」证明整层修饰不必是纯税**——与赏金挂勾后成了核心终局循环;Extreme Measures 说明 Boss 遭遇是规则改写类修饰的最佳宿主(Boss 战玩家预期本来就"非常规")。
|
|
||||||
|
|
||||||
### 2.4 Dead Cells——瘴气(Malaise)
|
|
||||||
|
|
||||||
- 出处:[deadcells.fandom.com/wiki/Malaise](https://deadcells.fandom.com/wiki/Malaise)(本会话抓取核证;效果细节为该 wiki 口径)。
|
|
||||||
- 机制:5 Boss 细胞(5BC)引入的区域压力轴:按区域驻留时长累积,敌人变异为感染变体(加速/强化)、精英更频;泄压面=进食/道具/无伤击杀。
|
|
||||||
- 对本作的映射:**「逐层压力轴+显式泄压阀」的成对设计**——全局变异若只加压不泄压就是纯税(本作反制道具配套义务已作废、变异=受控纯税是知情现状,但全局型作用面大,成对设计的参考价值更高);「高层级专属投放」对应本作「L2/L3 Boss 图专属」的节奏。
|
|
||||||
|
|
||||||
### 2.5 小结映射表
|
|
||||||
|
|
||||||
| 先例形态 | 本作候选案 | 可搬机制 |
|
|
||||||
|---|---|---|
|
|
||||||
| 以撒:进层横幅+整层生效+低概率 | 全部案 | 预告呈现模板;概率制节奏备选 |
|
|
||||||
| 尖塔:按轴分步逐级累计 | 投放节奏 §4 | 先资源/经济轴后结构轴的投递序 |
|
|
||||||
| Hades:Extreme Measures 遭遇级改写+赏金 | 案C(远期) | Boss 战=规则改写的合法宿主;纯税→赏金对 |
|
|
||||||
| Hades:Heightened Security 地形伤害放大 | 案B | 地形轴全局放大的强度参照(+400% 档位感) |
|
|
||||||
| 死亡细胞:压力轴+泄压阀成对 | 全部案 | 反制/泄压面与全局型成对考虑 |
|
|
||||||
|
|
||||||
知识库补充(未逐条核证):Loop Hero 的地形卡=玩家主动铺设的整环修饰("全局修饰"的玩家侧反向:修饰作为构筑资源而非惩罚)——若未来全局变异想从纯税转向双刃,是方向参照。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. 候选形态设计空间(六案)
|
|
||||||
|
|
||||||
> 每案四件套:形态/玩家体验、查重(与既有设计重叠面)、强度锚(对照四带与既有杠杆)、实施改动面(生成管线哪层)。推荐序见 §6。
|
|
||||||
|
|
||||||
### 案A:全局资源面修正(微贫向偏斜)——首发(已裁决,迭代 14 ③号卡)
|
|
||||||
|
|
||||||
- **形态(裁决定稿,Q1 甲)**:整图修摇号分布,不修任何格子数据、不动生成端。**正向格面池合计不变,内部结构倾斜**——进攻族(attack/blast/pierce/magic)权重上浮,生存族(heal/defense)明显下调,gp/action 白名单不动(防商店分层带联动);总期望微降 3-5%(provisional,具体行值归难度曲线与Boss provisional 投值)。
|
|
||||||
- **⚠ 勘误注记(v1.0→v1.1 换形)**:v1.0 原拟「沃土+雷密对冲」形作废——雷数与密度是**生成器事实**(board_generator 产物),变异布置在装板序第 4 步(生成之后),布置段加不了雷;改生成端加雷=破坏「生成器产物恒零变异格、布置在生成后」的两阶段结构,恰好踩本报告否决案F的同一条理由。微贫向偏斜=唯一同时满足「带A 方向正确+不踩纯挨打+零结构修订(只动正向池权重,不碰『负向行不参与摇号』现行口径,不动生成端)」的形。
|
|
||||||
- **玩家体验**:「这层奶薄、枪很肥」——生存资源变薄、进攻资源变肥,玩家被迫转向用进攻续命的主动策略;总期望微降但体感不是纯挨打(深挖钻头「付 2AP 无可见提升纯挨打」二连反馈的教训已避开:资源面变化逐格可见可归因)。Boss 图获得「险地肥矿」的身份辨识。
|
|
||||||
- **查重**:
|
|
||||||
- 与九型字典负向九行(enrage/heal_backlash/…/gp_loss)**零重叠**——负向行是"动作错了才兑付"的极性面,资源面是"摇号分布"的供给面;任务例②「某型资源全局翻负」若按字面做(如 heal 全局变 backlash)=与负向字典语义重复且破坏雷安同池极性契约,不做,用偏斜表达。
|
|
||||||
- 与偏运硬币同机制不同主体:relic 已有池内权重投影先例(`reward_economy.gd:184` `_biased_cell_rows`,luck_bias 装配态常量加法投影;地图战斗资源.md v0.16 注记:只动池内权重、雷安同池同分布、off 态逐位零扰动)。全局变异=逐图配置的图级投影,**同一投影点可扩参承载**;合成序已裁=图级先、件级后(§8-⑤)。
|
|
||||||
- 与六变异零同轴(六变异全是格子级效果,资源面是全图摇号分布)。
|
|
||||||
- **强度锚**:关级通关恒等式「奖励侧输出占比 ∈ [15%, 40%]」——偏斜保持占比带内、总期望微降方向朝带A;**方向幅度不定(进攻变肥部分抵消生存变薄),故带A 收敛判读后置 M-4 只测不判(Q4 甲)**。走禁独立调参网络:投一型 MC 重锚一次(off/on 双档现行纪律)。
|
|
||||||
- **实施改动面**:schema 加 effect 词(`resource_face`,effect_value 语义=生存族下调幅度——**不适用 flat_damage 的 [1,9] 加法核互锁,新域随任务书定**;加载互锁补一条 scope=global ⇒ placement 恒 any);`BoardData` 板级字段;`_place_variants` 全局分支(门控第三维=节点身份)+该图跳过 region 布置(替换制);`reward_economy` 投影点扩参;开战横幅呈现。**生成管线零改动**(摇号在装板段,不在生成器)。
|
|
||||||
|
|
||||||
### 案B:整图极性偏移(诡雷海)——不推荐,弱化版远期
|
|
||||||
|
|
||||||
- **形态**:任务书例①的字面化——按比例的安全格携带"诡雷"标:数字恒真不破(雷数不含诡雷,数字照旧等于八邻雷数),挖开时按**雷罚当量**口径结算伤害行(而非 region 伤害型的 1/2/3 小整数)。
|
|
||||||
- **玩家体验**:最重的一案。无角标形态=「数字说它安全,挖开却挨雷罚当量」——**推理被系统性背叛**,与"数字恒真"的信任契约正面冲突,扫雷品类的玩家对这种背叛极其敏感(会退化为全图插旗保平安,动作经济被锁死);有角标形态=全图红三角≈region 伤害型的密度极端,失去"全局"身份。
|
|
||||||
- **查重**:与荆棘丛/岩浆/落石**同轴放大**(同为 flat_damage 轴,仅作用域与当量不同)——任务提示查重点的直接命中;与迭代 12 应对件强耦合:熔火之躯(受地形伤积层反打)与荆棘编织者(挖伤害格双产出)在诡雷板上强度激增,净化工兵(中和相邻伤害格)面对无格可中的全局型整件报废——三件应对件的 MC 平衡全部要重算。
|
|
||||||
- **强度锚**:雷罚当量 6/8/8(已转正)× 诡雷比例——期望承伤激增;L2 Boss 承伤 ≤50% 带已越(55.8%),叠加必恶化。Hades Heightened Security(陷阱伤害 +400%)证明该轴外部存在,但那是玩家自愿勾选的终局难度。
|
|
||||||
- **实施改动面**:新 trigger 词+结算路由+呈现策略三件,改动面中等,但**体验面风险全场最高**。
|
|
||||||
- **弱化版出路**(远期候选):诡雷只附小额税(1-2 点,同 region 伤害型当量档)且带角标——那就是"全板轻伤害变异",等价于 percent_of_cells 拉满的 region 布置,不需要新作用域。结论:本轴的生存空间很小,排序垫底但留档。
|
|
||||||
|
|
||||||
### 案C:全板规则改写(数字语义变形 / 连锁失效)——远期概念池
|
|
||||||
|
|
||||||
- **形态**:任务书例②——邻接数字语义变形(±1 / 奇偶 / 四向邻接)、连锁展开不传播(坍塌显形失效)、旗判定变体等。
|
|
||||||
- **玩家体验**:最"新玩法"的一案,也是最能摧毁推理信任的一案——本作与以撒不同,扫雷核心循环就是数字推理,改写语义等于临时换游戏;以撒 Curse of the Maze(房间转移乱序,规则改写类)是玩家公认最恶性诅咒之一,可作体验预警。
|
|
||||||
- **查重**:直接撞承重约束①②(零特判+数字恒真)——地形变异.md 原文明示此类须「同时修订排雷玩法与本文的正式变更」;全部既有确定性断言与 MC 锚连带重锚,实施成本全场最高、收益面最模糊。
|
|
||||||
- **强度锚**:无法用现有带直接验收(推理类改写改变的是"玩家算得对"的定义本身——可推理率定义连带失锚,solver_rules 冻结条款棋盘生成.md:125 挡在前面)。
|
|
||||||
- **实施改动面**:排雷玩法规则本体+全部下游。**Hades Extreme Measures 指出的出路:这类改写的合法宿主是 Boss 遭遇(玩家预期"非常规")且最好与赏金成对**——若未来做,先做成 Boss 图专属+补偿奖励的双刃形态,而非纯税。
|
|
||||||
- **结论**:本批不做;挂概念池,重启条件=双层 BD 二期或终局难度批点名。
|
|
||||||
|
|
||||||
### 案D:成本面价目变形(冻土)——次批候选(首发批未入选)
|
|
||||||
|
|
||||||
- **形态**:整图挖格行动点 2→3(或插旗 +1)。它不动规则本体、不动数字、不动资源,只动价目。
|
|
||||||
- **玩家体验**:直观可数、可归因(「这层每格贵 1 点」),决策压力真实:8 AP 下每格 2→3 = 轮可挖格 4→2.7,**挖掘量近 −33%**,清图轮数增加、Boss 长轮次承伤连带上升——压力传导链清晰,玩家能算。
|
|
||||||
- **查重**:**行动经济 P2「地形成本修饰」价目钩子的首个真实客户**(行动经济.md:187:「MVP 价目均匀是有意简化;钩子已预留,待地形变异首批类型扩展」);与挖掘风险不等式联动(现行已破线,难度曲线与Boss.md P1 表在册,加成本恶化破线——启用须与该对账并批);与 AP 件(ap_up/迟滞)同池竞争注意力度轴。
|
|
||||||
- **强度锚**:行动经济契约+挖掘风险不等式并批复算;等效于"行动点表值级"调降的图级微型化——回滚阶梯第四级(AP 表值调降)的用户裁决门槛适用:图级价目变形把这一档从"全局一档"细化到"逐图掷定",裁决粒度更细但性质相同,**启用前须过用户裁决**(本次裁决 P2=甲未含案D,案D 启用属未来另批)。
|
|
||||||
- **实施改动面**:schema effect 词(`cost_modifier`)+行动经济价目读取注入+门控第三维+横幅。生成管线零改动。
|
|
||||||
|
|
||||||
### 案E:信息面全板(遮蔽 / 灯光收缩)——冻结,解封条件在案
|
|
||||||
|
|
||||||
- **形态**:两形——数字遮蔽全板(hide_number 同轴放大)/ 灯光半径收缩(FOG_RADIUS 8→4 一类,未开格全黑圈外扩)。
|
|
||||||
- **玩家体验**:信息剥夺在以撒是经典整层诅咒,但本作核心循环=数字推理,剥夺等比放大破坏力;半遮蔽弱形态(如出生区外遮蔽)介于两者之间。
|
|
||||||
- **查重(本查重点最密集的一案)**:
|
|
||||||
- 与藤蔓缠绕/烬覆/矿尘**同轴**(hide_number 的作用域放大);
|
|
||||||
- 灯光收缩形与**提灯撞车**:`board_view.gd:139` `FOG_LANTERN_BONUS=2` 已预留、06 在册归属 Alpha 信息件批,A5 收窄报告 §6.3 已裁「收窄与提灯编相邻序位分开读数」——全局灯光修饰=同一杠杆的第三家抢用;
|
|
||||||
- **反制面为零**:显影尘/地穴全图卷「能力封存」(魔法道具.md:68/2026-09-29 拍板④甲)+ R4 甲红线「信息型永不对冲、永不清除」(迭代 12 定稿)——信息面全局型=无任何出口的纯信息税;
|
|
||||||
- 真相视护栏(魔法道具.md:80「任何真视类目标域 ≤3×3,全图级只留给恢复推理原料类」)虽不直接拦截"收信息",但「恢复推理/代替推理」的哲学锚反向适用于本案:整图收走推理原料与框架精神相悖。
|
|
||||||
- **强度锚**:可推理率 0.85 锚在真人侧失真(§1.4-3);教学定稿批(2026-10-04 归档)「只教扫雷、P4 丙形帮助手册零再教」——无教学容量承载新遮蔽规则。
|
|
||||||
- **实施改动面**:数字遮蔽形=遮蔽 resolver 现成(`main.gd:792`)只改判定域;灯光形=FOG_RADIUS 常量改修饰量——技术上两形都是全场最便宜,**正因为便宜才更要拦住**:它会是"顺手就做了"但体验税最重的一案。
|
|
||||||
- **解封条件**(随案登记):显影件解封重定落位 + 提灯接线落位 + 全局型池门控三件齐后,重议「半板遮蔽」弱形态。
|
|
||||||
|
|
||||||
### 案F:结构面变形(板形 / 密度 / 初始展开收窄 / 雷布局聚簇)——不进变异框架
|
|
||||||
|
|
||||||
- **形态**:以撒 Curse of the Lost/Labyrinth 的对应物——整图更大/更密/出生区更窄/雷聚簇。
|
|
||||||
- **查重(结论性否决)**:板形/密度本来就是棋盘生成按(关卡×深度)坐标投的参数行(难度曲线与Boss.md 调参表);**A5 初始展开收窄批已立项**(2026-10-04,迭代 14,甲乙混合)正在全局研究"开局给多少"的同一杠杆——变异框架再做结构面=第三家抢同一旋钮;且变异框架纪律「生成器产物恒零变异格、布置在生成后」(地形变异.md 布置段)要求结构面候选回生成器改**事实**,破坏生成/布置两阶段结构(案A 勘误换形的同一依据)。
|
|
||||||
- **结论**:结构偏差的合法住所=棋盘生成参数+难度曲线行值(即调参域),不进变异框架;全局变异的本分=「不改板的事实,只改格的数据或全局修饰」。以撒 XL 层先例的价值留给未来关卡扩展批(更大 Boss 板=新板形行),不是变异。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. 投放节奏(已裁决口径)
|
|
||||||
|
|
||||||
### 4.1 落点:哪关出现
|
|
||||||
|
|
||||||
| 图 | 裁决 | 理由 |
|
|
||||||
|---|---|---|
|
|
||||||
| L1 Boss(食人魔酋长) | **免疫(P6 甲)** | 带B(白板 L1 通过率 [50,85],"首关=过滤器不是墙")是教学保护带;L1 已承载首批变异(荆棘/藤蔓)+全套基础系统的首遇教学负载;带A 收敛不需要 L1 |
|
|
||||||
| L2 Boss(蛛化卓尔精灵) | **首发位** | 带A(白板战役全通 [0,10%])收敛的主战场;玩家此时已完整经历两关 region 变异,理解"变异"概念 |
|
|
||||||
| L3 Boss(灰矮人石君王) | **同上案A(双关同型,Q2 甲)** | 关间台阶纪律由 L3 既有新内容(落石/矿尘/灰矮人/钩爪恐魔)满足;同型双关白送一组同型对照读数(off/on 对拍更干净) |
|
|
||||||
| 精英节点(P2 未实装) | 随精英批联动 | 精英修饰乘数表 MVP 空表预留(难度曲线与Boss.md 曲线雕刻节)=第三轴首场景;全局型与精英词缀同属"节点身份修饰",门控第三维按 boss/elite 设计、首发批只放 boss(精英前向兼容) |
|
|
||||||
| 普通图 | 永不(现行语义即精英/Boss 图专属) | 带D 悬崖未修(现行 ≈39pp/雷,超 2.6 倍)——普通图再加逐图不连续性会恶化响应曲线 |
|
|
||||||
|
|
||||||
### 4.2 频率与确定性
|
|
||||||
|
|
||||||
- **裁决=恒定制(P4 甲)**:L2/L3 Boss 图 100% 带一型全局变异(类型固定=L2/L3 同上案A 微贫向偏斜;案D 冻土退为次批候选,启用属未来另批)。理由:本作同种子确定性复放是验收地基,恒定制让攻略知识可积累、归因无歧义(「L2 Boss 就是险地肥矿」是可学习的关卡身份,尖塔 A20 双 Boss 同理是"每个玩家都知道"的固定事实)。
|
|
||||||
- **备选掷定制**(50% 或以撒式低概率):变化感更强,但 3 张 Boss 图的样本面下掷定收益极低、归因成本高——若未来关卡扩到 5+ 再议。
|
|
||||||
- **刷新/换图语义(含勘误注记)**:`variant_place` 一板一 scope 现行纪律保持。**勘误注记(v1.1)**:v1.0「全局型随图重掷」句只对掷定制成立——固定演进+替换制下 Boss 图**无可重掷之物**(类型是配置事实非掷定结果),且 Boss 图 `variant_place` 流**零取号=合法态**(无布置即无消费,不影响确定性契约);region 图不受影响(轮内刷新照旧重掷 region 片)。
|
|
||||||
|
|
||||||
### 4.3 预告呈现(裁决=P5 甲三层全做)
|
|
||||||
|
|
||||||
region 变异是遭遇式(未开无预告,P2 后置标识在册)——**全局型不适用遭遇式**:整图语义开局即全场生效,藏着等于暗改规则。三层预告:
|
|
||||||
|
|
||||||
1. **开战横幅一行**(战斗初始化段,HUD 框架新义务)——以撒进层横幅先例;文案归本地化批口径(教学 P5 乙先例)。
|
|
||||||
2. **HUD 常驻角标**(战斗全程可见,防中局遗忘)。
|
|
||||||
3. **帮助手册一行**(P4 丙「形帮助手册零再教」的承载位——手册补一行,不做交互教学)。
|
|
||||||
4. 结算明细行沿用 region 口径(伤害行带 variant_id 归因已通;案A 资源面无伤害行,资源兑付行本就逐格归因)。
|
|
||||||
|
|
||||||
### 4.4 单层变异原则:替换制(裁决=P3 甲)
|
|
||||||
|
|
||||||
| 制 | 语义 | 利 | 弊 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| **替换制(已裁决)** | scope=global 上板的图**不再布 region 片**(每图一型纪律的板级推广:普通图=region,Boss/精英图=global) | L2 Boss 承伤 55.8% 已越带,替换制天然止血不火上浇油;归因清晰(「Boss 图的变异是整图型」身份干净);Boss 板形大、region 片 5%+bonus 布置在 14×14 上密度观感本就稀 | Boss 图失去"踩到荆棘格"的微观遭遇面,整图型必须独自撑起变异体验 |
|
|
||||||
| 叠加制(未采纳) | Boss 图=region 片+全局型双层 | 遭遇面+整局面双份 | 承伤带恶化加剧;双层归因复杂(玩家分不清死因是岩浆格还是全局型);「每图至多一种类型」纪律要破例开洞 |
|
|
||||||
|
|
||||||
- **连带裁决(Q3 甲)**:替换制+案A(资源面不产生地形伤)⇒ 迭代 12 四件地形应对件(地脉采撷/荆棘编织者/净化工兵/熔火之躯)在 L2/L3 Boss 图**无的放矢=知情代价,接受**——四件主战场在普通图(每关 6/7 张,Boss 覆盖 1/7),失效面有限;随批在 registry/调参日志登记知情,MC on 档(件开)读数观察。
|
|
||||||
- 替换制的隐性收益:全局型的强度标定可以**以 region 布置为基线对照**(同图有/无整图型的 MC 对拍),带内落点更好扫。
|
|
||||||
|
|
||||||
### 4.5 与门控、数据面的接口预留
|
|
||||||
|
|
||||||
- 门控第三维:variant_pool_gate 需扩节点身份轴(boss/elite 才进全局候选池;普通图候选池遇 scope=global 行跳过——筛空回落「池空=静默零布置」合法态)——registry 条目连带修订。
|
|
||||||
- 词表:effect 新词 `resource_face`;placement 对全局型无语义(整图),加载互锁补「scope=global ⇒ placement 恒 any」防配置歧义。
|
|
||||||
- 强度参数归属:全部 provisional 归难度曲线与Boss(与 region 调参表同待遇),每投一型=禁独立调参网络成员(MC 重锚+锚登记,off/on 对拍现行纪律)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. 与 C1 基线读数的关系(难度预算视角)
|
|
||||||
|
|
||||||
region 变异落地(2026-09-20)已经完成了一次"免费加难":普通档 L1 −40pp / 完美档 L1 −17pp / L2 Boss 承伤 +20pp(§1.6 表)。在那个基础上,全局变异的正确姿势不是"继续叠伤害",而是看清现行四带下**难度预算的剩余缺口在哪**:
|
|
||||||
|
|
||||||
1. **带B(白板 L1 [50,85])不吃全局变异**:L1 Boss 免疫(§4.1)——现行完美 L1 70% 落带内(region 变异后),带B 的收敛问题留给全局难度批既有杠杆,全局变异不参与。
|
|
||||||
2. **带A(白板战役全通 [0,10%])是全局变异的合法战场**:现行完美档战役 78.5% 越带上界 68.5pp——游戏对带A来说**太简单**,方向上需要加难;L2/L3 Boss 图是战役终盘的两场硬仗,在此投全局型正是把全通率压向带A 的精准杠杆,且完全绕开带B。微贫向偏斜的净方向幅度不定(进攻变肥部分抵消生存变薄)——**判读后置 M-4(Q4 甲)**。
|
|
||||||
3. **L2 Boss 承伤带 ≤50% 已越(55.8%)是首发选型的硬约束**:首发全局型必须选**不加承伤期望的轴**——案A 偏斜(资源结构变化,承伤面间接、可控)入选;案B 诡雷/雷罚向直接排除。
|
|
||||||
4. **带D(≤15pp/雷)悬崖未修**:全局变异只投 Boss 图(§4.1)天然绕开普通图响应曲线主面;若未来想投普通图,须排在带D 修复之后。
|
|
||||||
5. **记账纪律**:region 变异的基线读数当时挂在「基线通关率越带」条目(git 35cc9ad)、Boss 承伤越带单独立条——全局变异投放时沿用同款记法:投一型、测一轮、锚登记一行(off/on 对拍),避免与调参批窗口混同(「执行阶段=曲线调参批」的现行口径延续)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 6. 推荐序(已裁决)
|
|
||||||
|
|
||||||
| 序 | 案 | 档位 | 一句话理由 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| 1 | **案A 资源面(微贫向偏斜)** | **首发——已立项迭代 14 ③号卡** | 三承重约束零触碰、投影点现成(偏运硬币先例)、强度连续可调、主动策略体感避开纯挨打红线 |
|
|
||||||
| 2 | 案D 成本面(冻土) | 次批候选 | 价目钩子首个客户、直观可归因;须与挖掘风险不等式(现行破线)并批,且 AP 级裁决须过用户(本次未启用) |
|
|
||||||
| 3 | 案B 诡雷(弱化版) | 远期 | 与 region 伤害型同轴放大,生存空间小;Hades 先例=该轴适合玩家自愿勾选的终局难度,不适合固定投放 |
|
|
||||||
| 4 | 案E 信息面 | 冻结 | 反制面为零+提灯撞车+教学无容量;解封条件三件在案(§3 案E) |
|
|
||||||
| 5 | 案C 规则改写 | 远期概念池 | 正式变更成本全场最高;合法宿主=Boss 专属+赏金成对(Hades Extreme Measures 模式),留双层 BD 二期后议 |
|
|
||||||
| — | 案F 结构面 | 不进本框架 | 与 A5 收窄批撞杠杆、破生成/布置两阶段结构;归棋盘生成/难度曲线调参域 |
|
|
||||||
|
|
||||||
**2026-10-04 裁决**:序 1 立项进迭代 14(③号卡,与①初始展开收窄批/②判式换代批同迭代、互不撞——收窄=普通图初始展开轴/判式=不等式判读口径/全局变异=Boss 图资源面轴,出口读数各自分开归因);序 2-5 按 P8 甲档位留档。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 7. 裁决记录(2026-10-04 用户:拍板点+盘问前沿全按推荐案)
|
|
||||||
|
|
||||||
### 7.1 原拍板点 P1-P8
|
|
||||||
|
|
||||||
| # | 拍板点 | 备选案 | 裁决 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| P1 | 是否现在立项全局变异 | 甲=维持挂起;乙=立项首发批 | **乙(立项)** |
|
|
||||||
| P2 | 首发型选型 | 甲=案A 沃土+雷密对冲向;乙=案A 贫土向;丙=案D 冻土;丁=A/D 双型逐关演进 | **甲(形态经 Q1 勘误换形=微贫向偏斜)** |
|
|
||||||
| P3 | 单层变异原则 | 甲=替换制;乙=叠加制(须先修 L2 Boss 承伤带) | **甲(替换制)** |
|
|
||||||
| P4 | 落点节奏 | 甲=L2/L3 Boss 恒定制+类型固定演进;乙=掷定制;丙=以撒式低概率 | **甲(恒定制+固定演进)** |
|
|
||||||
| P5 | 预告呈现规格 | 甲=横幅+常驻角标+手册行三层全做;乙=减配(只横幅) | **甲(三层全做)** |
|
|
||||||
| P6 | L1 Boss 免疫 | 甲=免疫(带B 教学保护);乙=L1 也带 | **甲(免疫)** |
|
|
||||||
| P7 | 带A 收敛杠杆注册 | 甲=注册进全局难度批(M-4)杠杆表随批排序;乙=独立小批不进带A收敛叙事 | **甲(注册 M-4)** |
|
|
||||||
| P8 | 远期案处置 | 甲=案B/E/C 按本文档位留档(解封条件在案);乙=案E 直接删除出候选池 | **甲(留档)** |
|
|
||||||
|
|
||||||
### 7.2 盘问前沿 Q1-Q4(grilling 轮次,2026-10-04)
|
|
||||||
|
|
||||||
| # | 前沿问题 | 备选案 | 裁决 |
|
|
||||||
|---|---|---|---|
|
|
||||||
| Q1 | 案A 换形(雷密对冲不可实现后拿什么对冲) | 甲=**微贫向偏斜**(进攻族↑生存族↓合计不变 EV 微降 3-5%);乙=纯中性偏斜(EV 持平零难度贡献);丙=纯沃土(Boss 图偏易方向反);丁=贫土(纯挨打红线) | **甲(微贫向偏斜)** |
|
|
||||||
| Q2 | L3 Boss 首发批处置 | 甲=**L2/L3 双关同上案A**;乙=L3 空窗等案D;丙=回落 region 布置(多回落分支+回到已越带状态) | **甲(双关同型)** |
|
|
||||||
| Q3 | 替换制下四件地形应对件 Boss 图失效 | 甲=**接受为知情代价**(主战场普通图 6/7、Boss 覆盖 1/7,registry/调参日志随批登记);乙=半替换(破每图一型开洞) | **甲(知情代价)** |
|
|
||||||
| Q4 | 带A 判读批序 | 甲=**独立批先行,判读后置 M-4 只测不判**;乙=等 M-4 带D 修复后合并批 | **甲(独立先行)** |
|
|
||||||
|
|
||||||
### 7.3 代拍项(实现期可翻,随批锚登记)
|
|
||||||
|
|
||||||
- **偏运硬币合成序**:图级投影先、件级 luck_bias 后(环境事实先定型、玩家构筑叠其上)——两投影均为池内权重面,雷安同池与取号次数零变化。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 8. 实现面补强注记(grilling 缺漏清偿,任务书起草时逐条核对)
|
|
||||||
|
|
||||||
1. **门控兜底**:普通图候选池遇 scope=global 行必须跳过(门控第三维),筛空回落「池空=静默零布置」合法态(地形变异 P0 口径),零报错零警告。
|
|
||||||
2. **偏斜白名单**:gp/action 权重不动(防商店分层带联动破线)——可调面仅 attack/blast/pierce/magic(上浮)与 heal/defense(下调)六行。
|
|
||||||
3. **清图奖励不受案A影响**:清图槽(clear_default/clear_blast)独立于格面池,完美排雷第二份兑付口径零改动;远期若想全局型触清图槽,另批另议。
|
|
||||||
4. **固定演进的承载**:boss 节点→全局变异绑定=门控结果(节点身份读 encounter,既有字段),**不动 level.tres 结构**;variation.tres 加 scope=global 行承载效果与数值(unlock_level/board_types 照填,第三维在 gate 代码)。
|
|
||||||
5. **偏运硬币合成序**(§7.3 代拍):图级先、件级后,逐位锚登记。
|
|
||||||
6. **随批文档清单**:地形变异.md(类型清单+scope 语义节+验收「每图一型」板级推广+勘误注记)/难度曲线与Boss.md(投放计划 P2 行升级+调参表新行)/registry(variation_table+variant_pool_gate 两条件目)/HUD框架.md(横幅+常驻角标义务)/教学引导.md(手册一行)/06-待办清单(「全局作用域变异」条收口移除)/行动经济.md(P2 价目钩子行注记=案D 留位不启用)。
|
|
||||||
7. **MC/锚面**:off/on 双档对拍+新锚登记(off=替换制 Boss 图零 region 布置的基线,on=全局变异激活);off 态与现行 Boss 图(带 region 片)**行为不同**(替换制本身即行为变更)——off 基线定义=替换制落地后的零变异 Boss 图,对拍时须注明两代 off 语义差异。
|
|
||||||
8. **呈现件闲置注记**:替换制下 Boss 图零 region 格 ⇒ 变异角标/遮蔽 resolver 在 Boss 图零消费(合法态,断言按「Boss 图无格子级变异标记」登记)。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 附:证据链索引
|
|
||||||
|
|
||||||
| 事实 | 出处 |
|
|
||||||
|---|---|
|
|
||||||
| 06 条目原文/归属 | design/gdd/06-待办清单.md:12-20 |
|
|
||||||
| scope=global 词表位 | game/data/schemas/variation_table.gd:22;三枚举词表 :23-25;跨字段互锁 :53-67 |
|
|
||||||
| 六行现行数据全 region | game/data/tables/variation.tres:11-69 |
|
|
||||||
| 布置段/装板序/兑付/中和 | game/core/battle_orchestrator.gd:283-318 / :306-308 / :330-378 / :483-490 / :783-795 |
|
|
||||||
| 格子数据承载(无板级位) | game/core/board_data.gd:18, 49-55 |
|
|
||||||
| 遮蔽/角标 resolver | game/presentation/main.gd:228-229, 792, 807;game/presentation/views/board_view.gd:207-213 |
|
|
||||||
| 偏运硬币投影先例 | game/core/reward_economy.gd:62, 178-191;design/gdd/systems/战斗循环/地图战斗资源.md v0.16 |
|
|
||||||
| 迭代 12 地形应对件四件 | git bfbb473(地脉采撷/荆棘编织者/净化工兵/熔火之躯) |
|
|
||||||
| 零特判/类型清单/布置段纪律 | design/gdd/systems/排雷循环/地形变异.md(§核心规则;v0.3-v0.6 版本史) |
|
|
||||||
| 数字恒真 | design/gdd/systems/排雷循环/排雷玩法.md:103 |
|
|
||||||
| 可推理率 ≥0.85 绝对锚/solver 冻结 | design/gdd/systems/排雷循环/棋盘生成.md:109, 125 |
|
|
||||||
| 四带(A/B/C/D)与现行越带读数 | design/gdd/systems/冒险循环/难度曲线与Boss.md:127-136 |
|
|
||||||
| Boss 锚/加难走廊/挖掘风险不等式破线/P2 全局投放计划 | 难度曲线与Boss.md:184-193, 253-254, 260 |
|
|
||||||
| 价目钩子 P2 | design/gdd/systems/排雷循环/行动经济.md:187 |
|
|
||||||
| 显影件封存/真视护栏 | design/gdd/systems/排雷循环/秘宝.md:68-80 |
|
|
||||||
| 提灯预留/迷雾三态 | game/presentation/views/board_view.gd:138-139;design/research/研究-初始展开收窄可行性-2026-10-04.md §1/§6.3 |
|
|
||||||
| C1 基线读数正主 | git 5420a16(active.md 台账 96);git 35cc9ad(06 注记);撞名辨析=design/qa/m3-iter5-lever-scan-2026-09-28.md:33 |
|
|
||||||
| 以撒楼层诅咒 | https://bindingofisaac.fandom.com/wiki/Curses |
|
|
||||||
| 尖塔进阶 1-20 | https://slay-the-spire.fandom.com/wiki/Ascension |
|
|
||||||
| Hades 惩罚契约 | https://hades.fandom.com/wiki/Pact_of_Punishment |
|
|
||||||
| 死亡细胞瘴气 | https://deadcells.fandom.com/wiki/Malaise |
|
|
||||||
|
|
||||||
## 版本历史
|
|
||||||
|
|
||||||
| 版本 | 日期 | 改动 |
|
|
||||||
|---|---|---|
|
|
||||||
| v1.0 | 2026-10-04 | 首版:现状核证+四先例一手调研+六案设计空间+投放节奏+推荐序+八拍板点(纯调研零代码,拍板归用户) |
|
|
||||||
| v1.1 | 2026-10-04 | **裁决落盘批**:P1-P8+盘问 Q1-Q4 全按推荐案(P1 乙立项/P2 甲案A/P3 甲替换制/P4 甲恒定固定演进/P5 甲三层预告/P6 甲 L1 免疫/P7 甲注册 M-4/P8 甲留档;Q1 甲微贫向偏斜/Q2 甲双关同型/Q3 甲知情代价/Q4 甲独立先行)回写全文;勘误注记两处(雷密对冲形作废=生成器事实+两阶段结构;固定演进下全局型无可重掷+替换制 Boss 图 variant_place 零取号合法态);新增 §8 实现面补强注记八条+代拍项(偏运硬币合成序);批位=迭代 14 ③号卡(roadmap 同批登记) |
|
|
||||||
@@ -1,221 +0,0 @@
|
|||||||
# 调研:扫雷及类扫雷「开格子推理」游戏的玩法变异
|
|
||||||
|
|
||||||
> 用途:本文是《扫雷×自动战斗 Roguelike》道具系统重设计的**灵感原材料**,只交付「变异分类 + 实例 + 可映射点」,不含本游戏的具体道具设计(设计权归用户)。
|
|
||||||
> 调研日期:2026-10-07。信息来源以一手官方材料(商店页、官网、官方补丁注记)为主;本次调研环境中 Fandom wiki、Wikipedia、Steam 社区指南不可达,个别规则细节来自中文社区内容(B 站/知乎/机核/TapTap/搜狗快照),已在文中标注。所有出处 URL 见文末清单。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 1. 规则变异分类
|
|
||||||
|
|
||||||
把「扫雷公式」(方格棋盘 + 隐藏雷 + 邻接计数线索 + 点开/插旗)拆开看,各作品动刀的位置可归为六类。每类给出具体游戏实例。
|
|
||||||
|
|
||||||
### 1.1 格型变异(格子本身是什么)
|
|
||||||
|
|
||||||
| 变异 | 实例 | 说明与出处 |
|
|
||||||
|---|---|---|
|
|
||||||
| 雷换成怪物,点开掉血而不是即死 | DemonCrawl | 雷格变成有血条意义上的「怪物」,踩到扣生命值;「失误(mistake)」本身成为可被系统消费的事件(如 Boss「Starving Plant」:你犯错时喂养饥饿植物)[出处 S3] |
|
|
||||||
| 一格多雷(多重雷) | 14 Minesweeper Variants「多雷(M)」 | 一个格子里可以放多颗雷,线索数字按雷的总数计,插旗也要标记雷数 [出处 S7] |
|
|
||||||
| 冻结格 | DemonCrawl 词缀 Glacial | 「关卡含一个冰冻格象限;开完一半空格后移除所有光环」[出处 S3] |
|
|
||||||
| 附魔格(在指定格上持续生效的效果) | DemonCrawl v1.94 机制 | 「Enchanted Cells:附着在特定格子上的定向道具效果」,如 Drill 改造成附魔道具:每回合该格数值 +1,≥10 时升级该格战利品 [出处 S3] |
|
|
||||||
| 战利品格 / 宝箱 / 陌生人 / 地标 / Boss | DemonCrawl | 盘面上除了雷和空格,还有可拾取的 loot、可花钱互动的陌生人(stranger)、可触发的地标(landmark)、Boss 及其掉落表 [出处 S2/S3] |
|
|
||||||
| 已开格重新遮蔽 | DemonCrawl 词缀 Forgotten | 「每当你 chord 或直接开格,把它重新遮住」——信息会丢失,记忆变成资源 [出处 S3] |
|
|
||||||
| 数字线索格本身可移动/被操作 | Minesweeper Genius | 「将数字的加减规则与记忆游戏相结合」;玩法说明为「计算每行每列有多少炸弹,用旗子标明」[出处 S9] |
|
|
||||||
|
|
||||||
### 1.2 线索类型变异(数字告诉你什么)
|
|
||||||
|
|
||||||
| 变异 | 实例 | 说明与出处 |
|
|
||||||
|---|---|---|
|
|
||||||
| 连续/不连续标记 | Hexcells 系列 | 六边形格,数字表示相邻 6 格内雷数;花括号 {n} 表示这些雷是连在一起的;系列还引入了不连续标记与格外列线索 [出处 S5/S6] |
|
|
||||||
| 线型线索(整列雷数) | Tametsi | 「显示某一列的总雷数」[出处 S4] |
|
|
||||||
| 区域线索(染色区块雷数) | Tametsi | 「显示不同颜色区块的总雷数」[出处 S4] |
|
|
||||||
| 边相邻与点相邻区分 | Tametsi | 异形格子混排,「相邻分为边相邻和点相邻」[出处 S4] |
|
|
||||||
| 计数半径/邻接关系改写 | 14 Minesweeper Variants | 该作主体是「数量规则」变体:知乎研究文章确认 14 个变体中有 11 种是数量规则,即「规定题版中每个数字线索的含义」;社区内容确认的具体规则包括:骑士(按马步计数)、蛇(雷连成一条蛇形路径)、小十字 X'(只计正交方向邻格)、对偶 D 等 [出处 S7/S8] |
|
|
||||||
| 非数字线索、非整数线索 | 14 Minesweeper Variants 2 | 官方商店页原话:「Non-numeric clues and non-integer clues」[出处 S1] |
|
|
||||||
| 行列计数(类数织) | Minesweeper Genius | 每行每列炸弹总数是核心线索 [出处 S9] |
|
|
||||||
|
|
||||||
注:Picross/数织的「行列连续段计数」本质上是把邻接计数换成线性约束;Tametsi 的线型线索和 Minesweeper Genius 的行列计数已经证明这条映射成立,故数织不再单列。
|
|
||||||
|
|
||||||
### 1.3 棋盘拓扑变异(雷区长什么形状)
|
|
||||||
|
|
||||||
| 变异 | 实例 | 说明与出处 |
|
|
||||||
|---|---|---|
|
|
||||||
| 六边形格 | Hexcells 系列、各类「六边形扫雷」手游 | 邻格从 8 个降为 6 个,包围数可变 [出处 S5/S10] |
|
|
||||||
| 混合密铺(方/六边/三角混排) | Tametsi | 「a variety of tilings beyond the standard square grid」(官方商店页)[出处 S5] |
|
|
||||||
| 双倍宽/双倍高棋盘 | DemonCrawl 词缀 Horizontal / Vertical | 「Stage is twice as wide / twice as tall」[出处 S3] |
|
|
||||||
| 屏幕边缘环绕 | DemonCrawl | 补丁注记提到投射物「不会环绕屏幕(won't wrap the screen)」作为特例说明,即存在环绕棋盘机制 [出处 S3] |
|
|
||||||
| 3D/球面/VR | Globesweeper(球体/立方体,方/六边/三角格)、Delete(3D 旋转方块)、SweeperVR(VR) | TapTap 综述文章逐款列出 [出处 S10] |
|
|
||||||
| 多板/混合棋盘 | DemonCrawl Endless Multiverse | 「stages are blended together and randomized」(官方商店页)[出处 S2] |
|
|
||||||
|
|
||||||
### 1.4 推理资源变异(推理之外你还有什么牌)
|
|
||||||
|
|
||||||
| 变异 | 实例 | 说明与出处 |
|
|
||||||
|---|---|---|
|
|
||||||
| 生命/失误容忍 | DemonCrawl(生命之心 hearts)、Chocolate Sweeper(点错即判负,但棋盘保证不用猜) | DemonCrawl 用多条命把「猜错」从终局事件降级为资源消耗;Chocolate Sweeper 反过来:不允许猜,但「除了第一下以外每一步都可以靠推理」[出处 S2/S8] |
|
|
||||||
| 提示系统(指路不指答案) | 14 MSV 1&2 | 「The hint system tells you where to focus on when you get stuck, while it does not simply tell the solution」(官方商店页)[出处 S1] |
|
|
||||||
| 笔记/画线工具内建 | 14 MSV、Tametsi | 「built-in drawing tools」「drawing tools for taking notes」(官方商店页)[出处 S1/S5] |
|
|
||||||
| 道具直接改写推理 | DemonCrawl | 例:被动道具 Book of Espionage「满血拾取生命时,glean(锁定)一个随机隐藏格」;附魔、投射物、陌生人等都可代替玩家「开格」[出处 S3] |
|
|
||||||
| 经济(金币/商店/制作) | DemonCrawl | 金币在 Item Shop 消费;蓝图(blueprint)解锁后可随意制作道具 [出处 S2/S3] |
|
|
||||||
|
|
||||||
### 1.5 计分与节奏变异
|
|
||||||
|
|
||||||
| 变异 | 实例 | 说明与出处 |
|
|
||||||
|---|---|---|
|
|
||||||
| 多层推进、找钥匙找门 | Radical Dungeon Sweeper | 「Explore every floors. Find the key. Find the door. Escape.」(官方商店页);「每一关有限的步数内躲过怪物,找到前往下一层的钥匙」[出处 S11/S12] |
|
|
||||||
| 计时压力 | DemonCrawl(Arena homeland「Mountain」:犯错扣关卡计时) | 计时与犯错挂钩 [出处 S3] |
|
|
||||||
| PvP 竞技 | DemonCrawl Arena(8 人匹配、MMR 赛季)、超元扫雷(多人共扫一张大图) | [出处 S2/S3/S10] |
|
|
||||||
| 自动战斗/自动扫雷 | DemonCrawl Autosweeper Division | 「autobattler-inspired 'Autosweeper Division' that sweeps for you, allowing you to concentrate on your item strategy and economy」(官方商店页原文)——扫雷 × 自动战斗已有先例,且设计重心正是「道具策略与经济」[出处 S2] |
|
|
||||||
| 每日挑战 | DemonCrawl Hero Trial | 每日一局,v2.6.0 起有小概率应用手工制作的道具+精通配置(约 50 种,好坏都有)[出处 S3] |
|
|
||||||
| RPG 化冒险模式 | Microsoft Minesweeper 冒险模式 | 经典模式外「加了一些 RPG 元素的冒险模式」[出处 S10] |
|
|
||||||
|
|
||||||
### 1.6 生成与元规则变异(关卡从哪来)
|
|
||||||
|
|
||||||
| 变异 | 实例 | 说明与出处 |
|
|
||||||
|---|---|---|
|
|
||||||
| 程序生成但保证可解 | 14 MSV 1&2 | 「Every level can be completed by logic. Guessing is not required.」+「The puzzles are procedurally generated」[出处 S1] |
|
|
||||||
| 全手工关卡 | Hexcells(36 题)、Tametsi(100 关 + 60 解锁关) | 「100 increasingly difficult hand-designed levels」[出处 S5] |
|
|
||||||
| 词缀叠加改变一局规则 | DemonCrawl stage mods(100+) | 详见第 2 节 [出处 S2/S3] |
|
|
||||||
| 无猜生成算法的公开讨论 | 知乎《能否设计一种没有死猜的扫雷程序》、CSDN 黑猫扫雷开源项目 | 把无猜扫雷分三类:强无猜(算法保证局面时刻有解,如 Chocolate Sweeper)、检测到不可解则不惩罚玩家下一次点击等;并指出「判雷是 NP 难题」[出处 S8] |
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 2. DemonCrawl 专项拆解
|
|
||||||
|
|
||||||
DemonCrawl(Steam appid 1141220,开发商 Therefore Games,GameMaker 引擎)是本课题最直接的参照系:它是「扫雷 + 道具 + Roguelite」里内容量最大、活得最久(2019 年发售,2026 年仍在更新)的一个。以下逐系统列清单,均来自官方商店页、官网与官方补丁注记。
|
|
||||||
|
|
||||||
### 2.1 一局的基本结构
|
|
||||||
|
|
||||||
- 雷被替换为「怪物」,点开怪物格扣生命(hearts),生命耗尽即败。
|
|
||||||
- 关卡(stage)串联成征程(quest);官方提供 5 个 Quest 与多个难度档 [S2]。
|
|
||||||
- 盘面上除怪物与空格,还有:战利品(loot)、宝箱、陌生人(stranger,可花钱互动,如 Psychic「知道你不会相信的事」、Scientist「对附近物体做实验并传送碰撞的投射物」、Detective 等)、地标(landmark)、Boss(各有专属掉落表)[S2/S3]。
|
|
||||||
- 资源:生命、灵魂(souls,部分道具/精通消耗)、金币(商店消费)、法力(魔法道具充能)。
|
|
||||||
- 格子数值可以超过 8(附魔道具 Drill 的效果「该格数值 +1,≥10 时升级战利品」证明数值池被打开)[S3]。
|
|
||||||
|
|
||||||
### 2.2 道具系统
|
|
||||||
|
|
||||||
**分类**(官网原话:Passive、Consumable、Magic、Omen、Legendary 五类;商店页称 1000+ 可发现道具,官网旧版称 600+)[S2/S13]:
|
|
||||||
|
|
||||||
| 类别 | 机制要点 | 实例(均引自官方补丁注记) |
|
|
||||||
|---|---|---|
|
|
||||||
| 被动 Passive | 持有即生效,不可被消耗(中文社区翻译佐证:黑底、常驻背包生效)[S14] | Gold Nugget「通关一关时按已通关数得金币,失去该道具时得 5 倍」;Psychic Medal「关卡额外出现 Psychic」;Book of Espionage「满血捡心时 glean 一个隐藏格」 |
|
|
||||||
| 消耗 Consumable | 一次性使用 | Pina Colada「90% 概率抵消伤害,直到你受到伤害」 |
|
|
||||||
| 魔法 Magic | 消耗法力/充能 | 词缀 Leaky Water Cooler 会「每 10 回合让满充能的魔法道具损失一半法力」 |
|
|
||||||
| 凶兆 Omen | 负面道具,本质是一种需要「完成/熬过去」的状态效果 | Demonic Beach Ball、Melted Ice Cream「抵消非凶兆状态效果的完成」 |
|
|
||||||
| 传说 Legendary | 稀有强力 | Resounding Rune「你的其他传说与被动道具额外触发一次」 |
|
|
||||||
| 神圣 Divine | 通过神话徽章(Mythic Emblem)获得的超稀有道具 | v1.94/v2.0.0 注记提到 divine items 与 mythic emblems 挂钩 |
|
|
||||||
| 特殊子类 | Doll(精通玩偶,30 金币,每关开始触发、效果随精通充能数缩放)、Glint(开局增益,如 Golden Glint「开局多 30 金币」)、Fiber、附魔道具、随从 Minion(普通/魔法/大型/狂暴/闪光五种,各对应不同道具类别) | v1.95、v1.92、v2.3.9 注记 |
|
|
||||||
|
|
||||||
**获得方式**:关卡内拾取(loot)、宝箱、金币商店(Item Shop,含夏季限定商店)、陌生人/地标互动、Boss 掉落表、蓝图制作(hard 模式解锁,先「解出蓝图」再随意制作)、赛季活动奖盒 [S2/S3]。
|
|
||||||
|
|
||||||
**改变什么**:道具效果的落点几乎覆盖扫雷公式的每个部件——开格(solve/glean 指定格)、格值(Drill 附魔每回合 +1)、盘面物体(Jock 把自己发射出去摧毁路径上的一切含隐藏怪物)、信息(Psychic)、伤害(Evasion 闪避属性:概率躲开怪物伤害并抵消「翻开时」效果)、经济(金币/商店)、规则本身(传说道具让其他道具重复触发)[S3]。
|
|
||||||
|
|
||||||
**值得注意的设计手法**:
|
|
||||||
- **词条化的效果总线**:v2.5.0 注记「Implemented standardized trigger event for full damage negation, rewired existing items into it」「Rewired … into the standard 'count stages complete' pipeline」——官方在持续把道具效果重接到标准化触发事件上,说明道具池大到一定程度后,触发器统一管线是刚需 [S3]。
|
|
||||||
- **道具与精通的交叉**:Doll 道具的效果随精通充能缩放,制造「留着充能强化 Doll,还是花掉放大招」的决策 [v1.95 注记]。
|
|
||||||
|
|
||||||
### 2.3 关卡词缀(stage mods)与特殊关卡
|
|
||||||
|
|
||||||
官方称 100+ 词缀(官网旧版 70+),词缀「对棋盘玩法有戏剧性影响」,命名格式是「形容词+形容词+地名」式组合(如 Abstract Burning Forest、Double Dry Ocean、Dark Burning Forest)[S2/S13]。补丁注记中可考的具体词缀:
|
|
||||||
|
|
||||||
| 词缀 | 效果(原文引用) |
|
|
||||||
|---|---|
|
|
||||||
| Glacial | 关卡含一个冰冻格象限;开完一半空格后移除所有光环 |
|
|
||||||
| Chummy | 每当怪物被翻开,生成一个怪物 |
|
|
||||||
| Forgotten | 每当你 chord 或直接开格,把它重新遮住 |
|
|
||||||
| Horizontal / Vertical | 关卡宽/高翻倍 |
|
|
||||||
| Kinetic | v2.6.0 新增(具体效果未在摘要中) |
|
|
||||||
| Cryptic | 难度评级从 1 上调到 2(v2.3.9) |
|
|
||||||
| Purge(Arena) | 每 5 秒摧毁一个随机可见的战利品/陌生人/地标 |
|
|
||||||
| Barbed / Cinder / Captive / Prefecture / Pagan | Arena 相关词缀与家园(homeland)联动 |
|
|
||||||
|
|
||||||
**特殊关卡**:Item Tree「在果实落地前摘下成熟的道具」;Boss 关(Boss 有专属 mod 与掉落表,如 Starving Plant「生成饥饿植物,你犯错时喂它,Boss 吃掉植物时你掉血」);季节活动关 [S3]。
|
|
||||||
|
|
||||||
**模式矩阵**:Quest(5 个征程 × 多难度)、Endless Multiverse(关卡混合随机化,近无限)、Hero Trial(每日,v2.6.0 起有手工配置池)、Beyond(3 关高难)、Classic(纯扫雷,2026 年加了排行榜)、Arena(8 人 PvP,家园 homeland 系统 + MMR 赛季)、**Autosweeper Division(自动战斗模式:游戏替你扫,你只管道具策略与经济——与本游戏的自动战斗结算结构同构)** [S2/S3]。
|
|
||||||
|
|
||||||
### 2.4 元进度结构
|
|
||||||
|
|
||||||
- **代币与天赋**:玩游戏中获得 Token,花在 Talent 上,「操纵道具出现概率(manipulate item odds)」;支持多存档配置(profile)尝试不同 build [S2/S13]。
|
|
||||||
- **精通 Mastery**:40 个可解锁精通,每个是「被动效果 + 充能大招」的职业式结构;例:Juggler(闪避与强力和弦双概率属性对冲)、Puppeteer(收集 Doll、可把 Doll 召唤为临时随从、有对应 Doll 就能放其他精通的大招)、Gardener(每关开始获得 Hungry Seed,可种在指定格)、Monk(锁 1 个道具槽、心掉落转灵魂、不能捡金币钻石但地面战利品转为减伤)。官方明说设计目标是「占领新设计空间」[S3]。
|
|
||||||
- **图鉴 Codex**:发现的道具录入图鉴;图鉴同时是配装(loadout)管理器,支持粘贴配置指令 [S2/S3]。
|
|
||||||
- **蓝图与制作**:100+ 蓝图,解出后可在 Hard 模式随意制作道具 [S2/S3]。
|
|
||||||
- **神话徽章 Mythic Emblem**:与神圣道具挂钩的稀有收集 [S3]。
|
|
||||||
- **外观**:头像、背包皮肤、超稀有 Paint 掉落、全息效果 [S2/S3]。
|
|
||||||
- **赛季活动**:夏/复活节/万圣节/圣诞节活动,限定任务、奖盒、专属机制(如沙滩排球小游戏输了扣 1 血)[S3]。
|
|
||||||
- **排行榜**:每个 Quest 的 Hard 及以上难度 + 每日 Hero Trial 都有跨平台排行榜 [S2]。
|
|
||||||
|
|
||||||
### 2.5 DemonCrawl 对「猜」的处理
|
|
||||||
|
|
||||||
DemonCrawl **保留**了扫雷的不确定性,但把「猜错」从即死改为可管理的资源损耗与事件:生命多条、闪避属性、失误触发 Boss/道具效果(Starving Plant 靠你的犯错进食)、道具可以直接替你解决不确定格(glean/solve/投射物摧毁)。它的设计取向从 Autosweeper 模式的官方描述可见一斑——推理操作本身都可以被自动化,留下的是「道具策略与经济」[S2/S3]。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 3. 「必须猜」问题的处理谱系
|
|
||||||
|
|
||||||
从「彻底消灭」到「拥抱随机」,各作品形成一条完整谱系:
|
|
||||||
|
|
||||||
1. **消灭(生成端保证)——强无猜**:算法保证局面时刻有解。代表:Chocolate Sweeper(「除了第一下以外每一步都可以靠推理」,点到可能是雷的格子判负)、14 MSV 1&2(官方:每关均可纯逻辑完成)、开源项目「黑猫扫雷」把「强无猜/竞速无猜/强可猜」做成生成参数。知乎讨论指出这类生成要对抗「判雷是 NP 难题」的复杂度 [S1/S8]。
|
|
||||||
2. **消灭(内容端保证)——手工关卡**:Hexcells、Tametsi 全手工设计,官方写明「guessing is never required」;Tametsi 用「前一个谜题的果是下一个谜题的因」的展开式结构控制节奏 [S4/S5]。
|
|
||||||
3. **消灭(判定端原谅)**:不保证可解,但检测到局面不可解时,不惩罚玩家下一次点击(知乎无猜分类中的第二类)[S8]。
|
|
||||||
4. **弱化(提示替代答案)**:14 MSV 的提示系统「告诉你往哪想,但不直接给答案」;内建画线工具让玩家自己推演 [S1]。
|
|
||||||
5. **保留但降级(错误资源化)**:DemonCrawl——猜错扣血不即死,失误还能喂养 Build;Radical Dungeon Sweeper 用「有限的步数 + 最安全的路线」把猜转化为路径规划风险 [S3/S11/S12]。
|
|
||||||
6. **保留并提纯(竞技化)**:DemonCrawl Arena PvP、超元扫雷多人同图——在多人对抗里,运气方差本身是公平性的一部分(所有人面对同一局面)[S3/S10]。
|
|
||||||
|
|
||||||
各自的理由(从材料可归纳):纯解谜向作品(14 MSV、Hexcells、Tametsi、Chocolate Sweeper)把「无需猜测」当作核心卖点写进商店页,因为它们的乐趣是推理的纯净性;Roguelike 向作品(DemonCrawl、Radical Dungeon Sweeper)保留不确定性,因为它们的乐趣是风险管理与 Build 构筑,「必须猜」的时刻正是道具/资源系统的用武之地。中文社区对 Roguelike 扫雷的批评也印证了这点:「中后期随机性过强,运气与技巧难平衡」(TapTap 综述文末)[S10]。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. 对本游戏已有挂点的可映射点
|
|
||||||
|
|
||||||
以下只列「变异 → 挂点」的对应关系,不做具体道具设计。
|
|
||||||
|
|
||||||
### 4.1 映射到「格面资源类型」(九型资源格)
|
|
||||||
|
|
||||||
- DemonCrawl 证明了「格子承载超出雷/空语义的内容」是成立的:怪物格、战利品格、宝箱格、陌生人、地标、附魔格、冻结格。本游戏的九型资源格可以再往上叠「格的状态」(冻结/附魔/重遮蔽)而不是只叠新类型——Glacial/Forgotten/Enchanted Cells 三个词缀都是状态层变异 [S3]。
|
|
||||||
- 多重雷(一格多雷)直接对应「一格多资源/资源叠层」:14 MSV 的多雷规则证明玩家能接受「格子里有数量」的推理负担 [S7]。
|
|
||||||
- DemonCrawl 把格值池打开(格值可 ≥10):资源格的价值刻度不必被经典扫雷的 0–8 限制 [S3]。
|
|
||||||
|
|
||||||
### 4.2 映射到「清图奖励」
|
|
||||||
|
|
||||||
- DemonCrawl 的「win a stage / complete a stage」是标准化触发事件,大量道具挂在通关/过关节点上(Gold Nugget 按通关数发钱)[S3]——清图奖励可以做成一个公开的事件总线,让道具订阅。
|
|
||||||
- Tametsi 的「60 个额外谜题需解锁」、DemonCrawl 的蓝图/图鉴收集,证明「清图 → 元进度货币」是被反复使用的回路 [S2/S5]。
|
|
||||||
- Radical Dungeon Sweeper 的「找钥匙找门再下层」:清图不一定等于杀光,可以是「达成出口条件」——奖励目标多样化 [S11]。
|
|
||||||
|
|
||||||
### 4.3 映射到「行动点经济」
|
|
||||||
|
|
||||||
- DemonCrawl 的法力/充能系统(魔法道具按回合充能,词缀还能抽干法力)是「行动点」的近亲:道具使用节奏由资源曲线控制 [S3]。
|
|
||||||
- Radical Dungeon Sweeper 的「每关有限步数」是把行动点做成显式预算的直接先例 [S12]。
|
|
||||||
- Chocolate Sweeper/黑猫扫雷的「竞速无猜」参数说明:计时/步数压力可以只作为可选模式词缀存在,不必进主线 [S8]。
|
|
||||||
|
|
||||||
### 4.4 映射到「微光先读」(未开格可读出部分信息)
|
|
||||||
|
|
||||||
- Hexcells 的花括号/横杠标记是「线索的元信息」(不告诉你雷在哪,告诉你雷的分布形状)——与微光「读得出类型、读不出雷安」是同构的半信息设计 [S5/S6]。
|
|
||||||
- Tametsi 的区域线索(染色块总雷数)证明「跨格聚合的粗信息」与逐格细信息可以共存,且粗信息适合做成可解锁/可消耗的探查手段 [S4]。
|
|
||||||
- DemonCrawl 的 Psychic/Detective 等陌生人是「花钱买信息」的具身化(信息NPC化),Book of Espionage 是「把富余资源(满血的心)兑换成信息」的先例 [S3]。
|
|
||||||
- DemonCrawl 词缀 Forgotten(已开格重遮蔽)提示微光的反向玩法:信息可以会丢失/过期,记忆与笔记成为玩家技能 [S3]。
|
|
||||||
|
|
||||||
### 4.5 额外提示:自动战斗参照
|
|
||||||
|
|
||||||
DemonCrawl 的 Autosweeper Division 是现成的「扫雷×自动战斗」官方先例:自动扫雷器替你开格,玩家专注「道具策略与经济」。它的存在说明把操作层自动化后,设计重心会自然滑向道具/经济/构筑层——这与本游戏的轮末自动战斗结算是同一条演化路径 [S2]。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. 出处清单
|
|
||||||
|
|
||||||
一手官方材料:
|
|
||||||
- [S1] 14 Minesweeper Variants Steam 商店页:https://store.steampowered.com/app/1865060/14_Minesweeper_Variants/ ;14 Minesweeper Variants 2:https://store.steampowered.com/app/2631960/14_Minesweeper_Variants_2/
|
|
||||||
- [S2] DemonCrawl Steam 商店页:https://store.steampowered.com/app/1141220/DemonCrawl/
|
|
||||||
- [S3] DemonCrawl 官方补丁注记(Steam News,Therefore Games 发布):v1.91–v2.6.0,入口 https://store.steampowered.com/news/app/1141220 (引用内容包括 Enchanted Cells、Evasion、词缀 Glacial/Chummy/Forgotten/Horizontal/Vertical/Kinetic/Purge、Doll/Glint/Minion 体系、Omen/Legendary/Divine 道具、Mastery 设计阐述、Autosweeper 等)
|
|
||||||
- [S4] 机核网《Tametsi:再排一个雷我就睡觉》(线型线索/区域线索/异形格/无猜/谜题展开结构):https://www.gcores.com/articles/161496
|
|
||||||
- [S5] Tametsi Steam 商店页:https://store.steampowered.com/app/709920/Tametsi/ ;Hexcells Infinite:https://store.steampowered.com/app/304410/Hexcells_Infinite/
|
|
||||||
- [S11] Radical Dungeon Sweeper Steam 商店页:https://store.steampowered.com/app/761170/Radical_Dungeon_Sweeper/
|
|
||||||
- [S13] DemonCrawl 官网(道具五分类、精通、蓝图、词缀数量):https://demoncrawl.com/
|
|
||||||
|
|
||||||
二手社区材料(规则细节以此类为准时已在文中标注):
|
|
||||||
- [S6] 微信公众号《【独游推荐】Hexcells:一款零运气的"扫雷"》(六边形相邻 6 格、{连续}标记、格外列线索);经搜狗搜索快照获取
|
|
||||||
- [S7] B 站社区内容确认 14 MSV 变体规则名:多雷 M、蛇、骑士、小十字 X'、对偶 D、无三连等(如 https://www.bilibili.com/video/BV1Vy411B7po/ 等);完整规则表未能直接抓取(Fandom wiki 不可达),以游戏内规则卡为准
|
|
||||||
- [S8] 知乎《能否设计一种没有死猜的扫雷程序》 https://www.zhihu.com/question/34826077 (无猜三分类、Chocolate Sweeper);知乎《〈14 种扫雷变体〉的 NP 完全性·序言(下)》 https://zhuanlan.zhihu.com/p/646826515 (14 个变体中 11 种为数量规则);CSDN《黑猫扫雷——开源无猜扫雷项目》 https://blog.csdn.net/weixin_39625975/article/details/113078020
|
|
||||||
- [S9] Minesweeper Genius 玩法说明(行列计数、数字加减与记忆结合):itmop/2265 等下载站玩法介绍,经搜狗搜索快照获取(该作 Steam 已下架或不可检索,App Store 页面本次未能抓取)
|
|
||||||
- [S10] TapTap《肉鸽、3D 甚至是 VR,扫雷到底能玩出多少花样?》(变体游戏综述:Microsoft Minesweeper 冒险模式、超元扫雷、六边形扫雷、Hexcells、Tametsi、Globesweeper、Delete、SweeperVR、Radical Dungeon Sweeper、DemonCrawl,及"中后期随机性过强"的批评):https://www.taptap.cn/moment/252582800589326733
|
|
||||||
- [S12] Radical Dungeon Sweeper 中文介绍(有限步数找钥匙下层的描述):西西软件园 https://www.cr173.com/game/711885.html
|
|
||||||
- [S14] B 站专栏《DemonCrawl 地豆的蹩脚翻译之道具(被动道具部分)》(被动道具黑底、常驻生效):https://www.bilibili.com/read/cv9193543
|
|
||||||
|
|
||||||
环境说明:本次调研中 Fandom(DemonCrawl wiki、14 MSV wiki)、Wikipedia、Steam 社区指南、Simon Tatham 官方文档(chiark.greenend.org.uk)均网络不可达;DemonCrawl 道具逐条清单(1000+)未能从 wiki 逐条核对,第 2 节的道具实例全部改引官方补丁注记原文。若需逐条道具清单,建议人工补查 DemonCrawl Fandom wiki 的 Items/Stage Mods 页面。
|
|
||||||
Loaded 100 of 102 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user