From 76b86dc44d9c5285180b3405b5977c230aa33e59 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sat, 7 Nov 2026 07:13:50 +0800 Subject: [PATCH 1/3] =?UTF-8?q?docs(08):=20=E5=88=A0=E3=80=8C=E9=80=90?= =?UTF-8?q?=E8=A1=8C=E7=BB=93=E7=AE=97=E6=8E=92=E6=92=AD=E3=80=8D=E8=A1=8C?= =?UTF-8?q?=EF=BC=882026-11-07=20=E7=94=A8=E6=88=B7=E4=BB=A4=EF=BC=89?= =?UTF-8?q?=EF=BC=8B=E6=96=87=E9=A6=96=E7=89=88=E6=9C=AC=E5=8F=B7=20v1.28?= =?UTF-8?q?=E2=86=92v1.29?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户裁定该表现不是想要的,Alpha 表现清单删除此行;同表「战斗演出链(弹道/受击/血条/灰化)在役」行保留,覆盖伤害飘字与攻击特效。待办清单第一条缺口同步去掉已完成的删行项,余项=文字列表退役范围、日志两处中文字段清理、battle 不可整体跳过承诺与战斗表现因果可读判据改写。凭据:开工现查 166114e0 远端 CI conclusion=success(exit=0);文档域闸 --docs【验收通过】无新增红 exit=0。 --- design/gdd/08-Alpha版本标准.md | 3 +-- 待办清单.md | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/design/gdd/08-Alpha版本标准.md b/design/gdd/08-Alpha版本标准.md index 144eff1c..ef64060f 100644 --- a/design/gdd/08-Alpha版本标准.md +++ b/design/gdd/08-Alpha版本标准.md @@ -2,7 +2,7 @@ > **一句话定位**:本文定义这个项目的 **Alpha 版本包含哪些东西**——它是里程碑 M3 的完成标准,也是判断"还差什么"的对照表。 > **本文只列条目,不写内容**:每样东西是什么、规则怎么走,一律归各自的权威文档,本文只给指路链接。想知道某样东西的定义,请点链接,不要在本文里找解释。 -> **状态**:**已定稿(v1.28)**——2026-10-13 用户令定稿,历次升版明细见 git 提交史。Alpha 的内容范围自此冻结:增删条目一律须经用户裁决。 +> **状态**:**已定稿(v1.29)**——2026-10-13 用户令定稿,历次升版明细见 git 提交史。Alpha 的内容范围自此冻结:增删条目一律须经用户裁决。 > **成文**:2026-10-13。 ## 本文怎么用 @@ -152,7 +152,6 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 主角立绘三态 | [角色设计](../art/character-design.md) | 在役 | | 状态图标 | [美术圣经](../art/art-bible.md) | 在役 | | 战斗演出链(弹道 / 受击 / 血条 / 灰化) | [战斗表现](systems/战斗循环/战斗表现.md) | 在役 | -| 逐行结算排播 | [settlement-summary](../ux/settlement-summary.md) | 在役 | | 减动效开关 | [设置与本地化](systems/表现与支撑/设置与本地化.md) | 在役 | | 全局纹理过滤设为邻近采样 | [待办清单](../../待办清单.md) | 在役(default_texture_filter=0+平滑渐变件三处显式 LINEAR 白名单,翻转面全枚举闭合) | | UI 字体(全局像素字,Fusion Pixel 单套单字重) | [美术圣经](../art/art-bible.md) §7.4 | 在役(现状即终稿——拉丁沿用自带字形不另接专件、不上第二字重;信息层级手段=字号档差+墨色深浅) | diff --git a/待办清单.md b/待办清单.md index 14003875..f1e322b7 100644 --- a/待办清单.md +++ b/待办清单.md @@ -57,7 +57,7 @@ **实况**:用户裁定撤掉战斗屏结算期逐行滚动的文字列表,保留伤害飘字与攻击特效;日志零文案只存字段。现行日志已逐行全字段落盘(game/presentation/playtest_logger.gd:130-143;开新/续玩均开会话,game/presentation/main.gd:247/:295)——零缺漏、无需补采,与裁定不符处是日志多带中文文案两处(text 与平铺的 display_name)。文字列表消费面=game/presentation/views/battle_log_view.gd:173-260 与 game/presentation/row_pacer.gd:100;动画特效走 target/target_id,不依赖行文案(game/presentation/views/battle_stage_view.gd:328-341)。[战斗结算](design/gdd/systems/战斗循环/战斗结算.md) v1.8 明细流水节规范句仍写「文案入表、代码读表拼行」,与本裁定相反。 -**缺口**:还差设计讨论——文字列表退役范围(飘字与特效保留面)、日志两处中文字段清理、[08-Alpha版本标准](design/gdd/08-Alpha版本标准.md)「逐行结算排播」行删行(同表「战斗演出链」行已覆盖保留面)、[battle](design/ux/battle.md) 不可整体跳过承诺与[战斗表现](design/gdd/systems/战斗循环/战斗表现.md) 因果可读验收判据改写。 +**缺口**:还差设计讨论——文字列表退役范围(飘字与特效保留面)、日志两处中文字段清理、[battle](design/ux/battle.md) 不可整体跳过承诺与[战斗表现](design/gdd/systems/战斗循环/战斗表现.md) 因果可读验收判据改写。 **改动面**:文档+游戏代码 From b03e4eeee83fb4d0ee7a6e03f577610f2d705fa8 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sat, 7 Nov 2026 07:24:35 +0800 Subject: [PATCH 2/3] =?UTF-8?q?docs(=E5=BE=85=E5=8A=9E=E9=80=80=E5=BD=B9+0?= =?UTF-8?q?8=E5=88=A0=E8=A1=8C):=20=E3=80=8CUI=20=E6=B0=9B=E5=9B=B4?= =?UTF-8?q?=E5=B1=82=E4=B8=8E=E4=B9=9D=E5=AE=AB=E6=A0=BC=E5=88=87=E7=89=87?= =?UTF-8?q?=E8=A7=82=E6=84=9F=E4=BF=AE=E3=80=8D=E6=8C=89=202026-11-07=20?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=A3=81=E3=80=8C=E5=B7=B2=E8=A7=A3=E5=86=B3?= =?UTF-8?q?=E3=80=8D=E7=BB=93=E6=A1=88=E2=80=94=E2=80=94=E5=BE=85=E5=8A=9E?= =?UTF-8?q?=E6=B8=85=E5=8D=95=E6=9D=A1=E7=9B=AE=E6=95=B4=E6=9D=A1=E5=88=A0?= =?UTF-8?q?=E9=99=A4+UI=20=E8=B4=B4=E5=9B=BE=E9=87=8D=E6=9E=84=E6=89=B9?= =?UTF-8?q?=E5=AE=9E=E5=86=B5=E5=86=85=E6=8C=87=E6=B6=89=E5=8F=A5=E6=B8=85?= =?UTF-8?q?=E7=90=86+08=20=E8=A1=A8=E7=8E=B0=E6=B8=85=E5=8D=95=E5=90=8C?= =?UTF-8?q?=E5=90=8D=E8=A1=8C=E6=95=B4=E8=A1=8C=E7=A7=BB=E5=87=BA=E3=80=81?= =?UTF-8?q?=E6=96=87=E9=A6=96=20v1.29=E2=86=92v1.30;=20=E5=87=AD=E6=8D=AE:?= =?UTF-8?q?=20--docs=E3=80=90=E9=AA=8C=E6=94=B6=E9=80=9A=E8=BF=87=E3=80=91?= =?UTF-8?q?exit=3D0=20=E6=97=A0=E6=96=B0=E5=A2=9E=E7=BA=A2(=E5=9B=9E?= =?UTF-8?q?=E6=89=A7=20game/tests/.gates/receipt.json)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- design/gdd/08-Alpha版本标准.md | 3 +-- 待办清单.md | 12 +----------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/design/gdd/08-Alpha版本标准.md b/design/gdd/08-Alpha版本标准.md index ef64060f..3e335e3c 100644 --- a/design/gdd/08-Alpha版本标准.md +++ b/design/gdd/08-Alpha版本标准.md @@ -2,7 +2,7 @@ > **一句话定位**:本文定义这个项目的 **Alpha 版本包含哪些东西**——它是里程碑 M3 的完成标准,也是判断"还差什么"的对照表。 > **本文只列条目,不写内容**:每样东西是什么、规则怎么走,一律归各自的权威文档,本文只给指路链接。想知道某样东西的定义,请点链接,不要在本文里找解释。 -> **状态**:**已定稿(v1.29)**——2026-10-13 用户令定稿,历次升版明细见 git 提交史。Alpha 的内容范围自此冻结:增删条目一律须经用户裁决。 +> **状态**:**已定稿(v1.30)**——2026-10-13 用户令定稿,历次升版明细见 git 提交史。Alpha 的内容范围自此冻结:增删条目一律须经用户裁决。 > **成文**:2026-10-13。 ## 本文怎么用 @@ -156,7 +156,6 @@ Alpha 内以玩法循环本身的内容与表现为主(棋盘、关卡、战 | 全局纹理过滤设为邻近采样 | [待办清单](../../待办清单.md) | 在役(default_texture_filter=0+平滑渐变件三处显式 LINEAR 白名单,翻转面全枚举闭合) | | UI 字体(全局像素字,Fusion Pixel 单套单字重) | [美术圣经](../art/art-bible.md) §7.4 | 在役(现状即终稿——拉丁沿用自带字形不另接专件、不上第二字重;信息层级手段=字号档差+墨色深浅) | | 战斗一屏样张(界面美术的终稿闸) | [美术圣经](../art/art-bible.md) §1.4 | 在役(样张整体过闸——用户实机目检核销,沿革查 git 提交史;目标规格与五项实装定值单点=art-bible 五张规格表。主角+三 Boss 重产依赖照旧;站桩帧动画已改排 Beta,见「六 · Alpha 不含」) | -| UI 氛围层与九宫格切片观感修 | [待办清单](../../待办清单.md) | 部分在役(光柱硬边已修=连续 alpha 渐变;未结半=九宫格切片错位——Alpha 内做最小修复:核对素材尺寸,必要时重出九宫格素材,全套素材重出排 Beta;出口=结算屏与图例屏错位消失,渲染闸+用户目检通过) | | UI 元素细节修(滑轨填充 / 图标垫块 / 留白 / 开发件外泄) | [待办清单](../../待办清单.md) | 在役(四子项中滑轨填充注销,余三件——图标垫块明度差降档/商店+营地布局修/诊断钮迁调试浮窗——全落地) | --- diff --git a/待办清单.md b/待办清单.md index f1e322b7..1ca8b2fd 100644 --- a/待办清单.md +++ b/待办清单.md @@ -75,7 +75,7 @@ #### UI 贴图重构批——元进度件仍是程序化占位(2026-10-13 登记,来源=审计发现) -**实况**:元进度图标目前仍是程序化画出来的占位形态,没有上贴图(原登记见 [美术资产清单](design/art/art-assets-checklist.md))。规格已定——烛光黄 `#F6C667` 配木色 `#8A5A34`(见 [美术圣经](design/art/art-bible.md) §4.4),素材来源允许走"通用图标改色复用"低成本渠道。营地柜台贴图义务已随营地场景图形态终结(见 [camp](design/ux/camp.md));九宫格切片错位归「UI 氛围层与九宫格切片观感修」条。本条余元进度件贴图终稿,排 Beta。 +**实况**:元进度图标目前仍是程序化画出来的占位形态,没有上贴图(原登记见 [美术资产清单](design/art/art-assets-checklist.md))。规格已定——烛光黄 `#F6C667` 配木色 `#8A5A34`(见 [美术圣经](design/art/art-bible.md) §4.4),素材来源允许走"通用图标改色复用"低成本渠道。营地柜台贴图义务已随营地场景图形态终结(见 [camp](design/ux/camp.md))。本条余元进度件贴图终稿,排 Beta。 **缺口**:还差一次「自己画 vs 找 CC0 素材改色」的美术裁决(见 [美术资产清单](design/art/art-assets-checklist.md) §0 的复用渠道闸),裁决后才能定素材工单写卡。 @@ -83,16 +83,6 @@ **状态**:待美术设计(备选) -#### UI 氛围层与九宫格切片观感修——光柱硬边与面板切片错位(2026-10-13 登记,来源=审计发现) - -**实况**:原两处,一处已修一处存续。①光柱硬边**已修**(`ui_kit.gd` 光柱贴片改带内 alpha 0→0.05→0 三角过渡+纵向衰减上亮下暗的连续渐变方案)。②九宫格切片错位**存续**——结算屏与图例屏的面板边缘可见错位小方块,成因是九宫格切片参数与素材尺寸不匹配(仪式石框 258 字节小图按 12 像素切片、石板亮面板 314 字节按 16 像素切片,铺到四百多像素宽面板中段拉出错位),须先核素材尺寸能否撑住新切片值(border_stone/panel_stone 均 48×48),可能要重出素材,归「UI 贴图重构批」后续贴图批次。 - -**缺口**:还差「UI 贴图重构批」里的素材尺寸核对与「是否重出素材」裁决,才能定切片修法。 - -**改动面**:美术素材+游戏代码 - -**状态**:待美术设计 - #### 扩展节点类型——危险/精英节点与特殊地形节点(2026-10-21 登记,来源=会话提及) **实况**:用户定方向:Alpha 版只留现行四类(战斗/奖励/恢复/商店),以下两类留到以后再做——①危险/精英节点(怪物与普通战斗不同、奖励肥);②特殊地形节点(效果修饰:地图战斗资源、敌我伤害、金币比例等)。内容未设计。 From 7618ee44c6e851d4e7701526ac0e71e8b23c0b10 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sat, 7 Nov 2026 07:34:17 +0800 Subject: [PATCH 3/3] =?UTF-8?q?docs(=E5=86=99=E5=8D=A1=E6=AE=B5):=20?= =?UTF-8?q?=E7=BB=93=E7=AE=97=E6=9C=9F=E6=96=87=E5=AD=97=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E9=80=80=E5=BD=B9=E4=B8=8E=E6=97=A5=E5=BF=97=E9=9B=B6=E6=96=87?= =?UTF-8?q?=E6=A1=88=E9=9C=80=E6=B1=82=E5=8D=A1=E7=89=87=EF=BC=882026-11-0?= =?UTF-8?q?7=20=E7=94=A8=E6=88=B7=E4=BB=A4=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 设计前置按用户明示「设完了就写卡」认定会话设计讨论闭合(待裁点清零+用户点头),待办条目状态推进「文档设计已闭合+已写卡」。卡片按 req-card 十四节成文;同步 game/tests/README.md 能力行换代与覆盖域表(§8.3 写卡段当场入表)。卡内如实补正上一轮核查漏项:tools/analyze_playtest.py 四处读 text 判读,须补 reason 结构化字段并改读结构化字段。凭据:流水线闸 PASS(34 条目·总表 55 行·交叉核 1 链·卡片口径 3 张全过);能力审计 --strict 红项 0;文档域闸 --docs【验收通过】无新增红 exit=0。 --- game/tests/README.md | 5 +- ...œ€求卡片-结算期文字列表退役批-2026-11-07.md | 183 ++++++++++++++++++ 待办清单.md | 6 +- 3 files changed, 188 insertions(+), 6 deletions(-) create mode 100644 reports/需求卡片-结算期文字列表退役批-2026-11-07.md diff --git a/game/tests/README.md b/game/tests/README.md index f8e9c51d..a32e04e8 100644 --- a/game/tests/README.md +++ b/game/tests/README.md @@ -132,7 +132,8 @@ tests/ | 能力 | 系统 | 真实入口 | 代表用例(文件:函数) | |---|---|---|---| | 拒绝反馈分面可辨与未知兜底文案 | HUD框架 | `HudPresenter.outcome_text()` | `hud_presenter_test.gd:_test_reject_text_by_reason`;`hud_presenter_test.gd:_test_unknown_reason_fallback`;`hud_presenter_test.gd:_test_accepted_text` | -| 结算明细带逐行呈现与排播节奏 | HUD框架 | `BattleLogView.append_row()`/`RowPacer.pace_delay_for()` | `theme_projection_test.gd:_smoke_battle_log_view`;`player_copy_sweep_test.gd:_sweep_source_names`;`pacing_queue_test.gd:_init` | +| 结算期零逐行文字与 FX 排播链保持 | HUD框架 | `RowPacer._consume_row()`/`BattleStageView.on_step_row_fx()`(真实停手→轮末结算→B 区场景树与 FX 调用面) | `battle_log_zero_text_test.gd:_smoke_settle_zero_rows`;`pacing_queue_test.gd:_assert_fx_chain`;`standee_fx_sweep_test.gd:_init` | +| 日志 step 行零文案与结构化判读等价 | 表现与支撑 | `PlaytestLogger._on_step_row()`→`PlaytestLogger._append()`(真实结算→落盘 JSONL 读回) | `playtest_logger_step_fields_test.gd:_assert_no_text_and_full_payload`;`reward_ineffective_reason_test.gd:_assert_four_reasons` | | 模态覆盖层编排与输入锁 | HUD框架 | `ModalFlow.locks_input()`/`ModalFlow.open_after_playback()` | `modal_flow_test.gd:_init`;`reward_overlay_test.gd:_run` | | 模态句柄分域寻址面 | HUD框架 | 局内/菜单/营地三子容器句柄经注册面合同寻址(`UiRegistry.node()` 逐键取层)+模态编排口开合(`ModalFlow.open()`/`ModalFlow.close()`) | `ui_struct_probe.gd:_modal_registry_contract`(registry 合同序段+分域句柄段) | | 未开格类型微光(8 邻作用集/五组色相/零玩法写入) | HUD框架 | `BoardView.type_glow_probe()`/`UiKit.glow_group_for_cell_type()` | `theme_projection_test.gd:_smoke_type_glow`;`type_glow_test.gd:_test_grouping_closed`;`type_glow_test.gd:_test_frozen_hue_face` | @@ -215,7 +216,7 @@ tests/ | 排雷循环 | 排雷玩法.md | 装板与开局免费展开(封锁格无资源、计入清图);挖/封印合法性与可辨拒绝(拒绝零副作用);封印不可逆与挖开封印格放行(兑付改判四情况) | 已覆盖 | — | | 排雷循环 | 棋盘生成.md | 棋盘按参数行出图、数字恒真;同参数同种子逐位复现、异种子不退化;可推理率与清图可达(合法性先于质量分)、重试有界、降级诚实 | 已覆盖 | — | | 排雷循环 | 行动经济.md | AP 扣费、末点耗尽即收轮与战斗收束清零;停手转存储备与轮内刷新(上限/AP 不重置/刷新图零清图奖励);下轮行动点修正排队与兑现 | 已覆盖 | — | -| 表现与支撑 | HUD框架.md | 拒绝反馈分面可辨与未知兜底文案;结算明细带逐行呈现与排播节奏;模态覆盖层编排与输入锁;未开格类型微光(8 邻作用集/五组色相/零玩法写入);UI 全局主题与按钮五态(含对比度锚);中文字体随包与字形覆盖;地形瓦片套与格面数字可读;战斗叙述与终局文案(数值带入/胜负互异);玩家面文案与危险格格面字形;战斗屏三区几何与棋盘格边长(分辨率两档×四档板型);B 区舞台背景三关变体与连续地面层(按 board_type 选图/地面层高度读布局表/四柱光柱退役);模态句柄分域寻址面 | 已覆盖 | — | +| 表现与支撑 | HUD框架.md | 拒绝反馈分面可辨与未知兜底文案;结算期零逐行文字与 FX 排播链保持;模态覆盖层编排与输入锁;未开格类型微光(8 邻作用集/五组色相/零玩法写入);UI 全局主题与按钮五态(含对比度锚);中文字体随包与字形覆盖;地形瓦片套与格面数字可读;战斗叙述与终局文案(数值带入/胜负互异);玩家面文案与危险格格面字形;战斗屏三区几何与棋盘格边长(分辨率两档×四档板型);B 区舞台背景三关变体与连续地面层(按 board_type 选图/地面层高度读布局表/四柱光柱退役);模态句柄分域寻址面 | 已覆盖 | — | | 表现与支撑 | 存档序列化.md | 存档写盘⇄读回往返保真;三槽位隔离与激活失败回滚;槽位摘要窥视与坏槽三态;启动态无激活不写盘;旧档迁移链与断点续玩零跳号;存档⇄RNG 快照往返保真 | 已覆盖 | — | | 表现与支撑 | 教学引导.md | — | 未覆盖 | 教学形态与首遇时机待设计;见待办清单「教学形态未定」条 | | 表现与支撑 | 数据配置.md | 全表装载、就绪态与表清单目录对账;进度坐标查行:精确命中/向上取整/封顶/警告去重;运行期越域致命与进程非 0 退出;加载期违规表拒绝:跨表悬空/计数器前缀/真视窄域;表结构守卫:域校验/行序键/跨字段互锁/配额锚 | 已覆盖 | — | diff --git a/reports/需求卡片-结算期文字列表退役批-2026-11-07.md b/reports/需求卡片-结算期文字列表退役批-2026-11-07.md new file mode 100644 index 00000000..e3b524a2 --- /dev/null +++ b/reports/需求卡片-结算期文字列表退役批-2026-11-07.md @@ -0,0 +1,183 @@ +# 需求卡片:结算期文字列表退役与日志零文案批 + +> 状态:待用户裁决(写完呈用户,开工令归 /iter 或用户另行发令) +> 验收档:中(依据 test-conventions §8.3:后果玩家可见但不损持久状态,本批不动存档写读、RNG 流、结算公式与数值表结构;用户批卡 U0 时可改判) +> 来源:`待办清单.md`「结算期逐行文字列表退役与日志零文案」条(2026-11-07 登记,来源=会话提及) +> **唯一事实源**=2026-11-07 用户裁定(会话设计讨论闭合、待裁点清零)+ `design/gdd/08-Alpha版本标准.md` v1.29(「逐行结算排播」行已删)+ `待办清单.md` 该条实况。三处 GDD 条款改写属实现批禁写面,列在第 6 节由文档批落文。 + +## 1 目标与完成定义 + +撤掉战斗屏结算期一行行滚动的文字列表;保留伤害飘字、攻击特效与站桩动画;日志侧零中文文案、只存结构化字段,并保证数值分析判读结论与改前逐位一致。 + +完成定义:①结算期 B 区不产任何逐行文字;②FX 排播链与两类 toast 仍在;③新日志 `step` 行零中文字段、原有全字段与全部 payload 仍在;④`tools/analyze_playtest.py` 对同一份历史锚与一份新日志的判读结论与改前一致;⑤每个需求点有从真实入口进入的正向验收断言并跑绿,读数写进该步提交信息。 + +## 2 设计事实源 + +- 用户裁定(2026-11-07 会话,待裁点清零、用户点头):撤掉结算期逐行滚动文字列表;保留伤害飘字与攻击特效;日志零文案只存字段;战斗画面优化另立待办。 +- `design/gdd/08-Alpha版本标准.md` v1.29:「五、表现」表已删「逐行结算排播」行,「战斗演出链(弹道/受击/血条/灰化)在役」行保留。 +- `待办清单.md` 该条实况与状态(写卡时推进为「文档设计已闭合+已写卡」)。 +- 设计闭合凭据说明:req-card 第〇步要求的闭合凭据=用户裁定已落 `08-Alpha版本标准.md` v1.29;`battle.md`/`战斗结算.md`/`战斗表现.md` 三处条款改写不是设计待裁点,是按裁定的文档同步义务,按「实现批禁写 `design/`」纪律列进第 6 节与反哺点清单,由文档批落文。 + +## 3 现状事实(代码级考证) + +| 事实 | 位置 | +|---|---| +| 结算行协议:`_emit_row()` 发 `step_row`,公共字段 type/source_class/origin_cell/round_index/display_name/value/highlight+extra 全平铺 | `game/core/battle_orchestrator.gd:710-735` | +| 玩家侧逐行文字渲染(7 处读 display_name、BBCode 行模板、上轮摘要、聚合计数) | `game/presentation/views/battle_log_view.gd:87-103`、`:146-264` | +| 排播泵:文字入带是 `log_view.append_row/append_bb/finish_settlement_round`;FX 链是 `stage.on_step_row_fx`/`_play_cross_zone_fx`/`_play_settlement_mark`/`refresh_request`/`pump_ended` | `game/presentation/row_pacer.gd:83-101`、`:106-152` | +| 动画定位走 target/target_id,不读行文案 | `game/presentation/views/battle_stage_view.gd:327-344` | +| 两类 toast 仍读 display_name/display:清图奖励、Boss 半血解锁技名 | `game/presentation/main.gd:417-425`;`row_pacer.gd:97-100`;规格 `design/gdd/systems/战斗循环/敌人系统.md:207` | +| 日志逐行全字段落盘;中文字段两处=`text`(:138)与平铺进去的 `display_name`(:140-142) | `game/presentation/playtest_logger.gd:130-143` | +| 开新/续玩均开日志会话并挂接战斗 | `game/presentation/main.gd:247-253`、`:295-302`;`game/presentation/main_adventure_flow.gd:62` | +| 分析工具依赖 `text` 做四类判读:effect_id 反查、群伤奖励判定(两处)、未生效原因分类 | `tools/analyze_playtest.py:83-88`、`:189`、`:434`、`:471-478` | +| 群伤行已有结构化 `target: "all_enemies"`;未生效行散有 `batch_key`/`forfeit`/`deferred`,无统一「原因」字段 | `game/core/damage_controller.gd:515-516`、`:623-624`;`game/core/reward_grant.gd:269-271`、`:362-369`;`game/core/settlement/combat_segment.gd:123-124`;`game/core/settlement/grant_segment.gd:103`、`:321` | +| 玩家可见文案的现役测试/探针面 | `game/tests/README.md:135`;`game/tests/unit/presentation/theme_projection_test.gd:385`;`player_copy_sweep_test.gd:86-108`;`pacing_queue_test.gd:165`;`game/probe/ui_probe.gd:133-135`;`game/probe/ui_click_probe.gd:423`、`:473`、`:616`、`:798-844` | + +## 4 设计契约(🔴 触碰=L3 停机呈报) + +1. 🔴 保留伤害飘字、攻击特效、站桩闪白/弹道/灰化;`row_pacer.gd:89-101` 的 FX 调用链与 `pump_ended`/`refresh_request` 零删改。文字列表退役不等于取消结算演出。 +2. 🔴 核心层 `step_row` 公共字段集不变:`display_name` 保留(清图奖励 toast、Boss 解锁技名 toast、历史日志兼容都读它);本批只改日志消费端与补 `reason` 这类结构化 extra,不动 `_emit_row()` 签名与载荷键集。 +3. 🔴 日志逐行全字段落盘义务不变(kind/type/source/cell/round/value/highlight+全部 payload);只去掉 `text` 与 `display_name` 两份中文文案。 +4. 🔴 数值与随机零改动;玩法数值只经 ConfigDB 单点,随机只经 RngService;Core 零 UI。 +5. 🔴 实现批禁写 `design/` 整个目录、根规则文件与 `game/tests/README.md`(能力清单归写卡段维护);文档义务只进 `reports/` 反哺点清单。 +6. 🔴 按 2026-10-24/2026-10-28 用户裁:禁变异类测试与撤销类取证,禁删断言/放宽阈值换绿;验收主力=从真实入口进入的正向断言,同种子复放对拍只作兜底。 + +## 5 范围边界 + +- 做:撤 B 区逐行文字(含上轮摘要、轮首分隔行、聚合计数行的文字呈现);日志零中文文案;补未生效原因的结构化字段;分析工具改读结构化字段;相关测试/探针改写成退役后的正向断言;能力行换代。 +- 不做:战斗画面优化(另立待办,等用户发令)、美术资产、`design/` 三处条款改写(文档批)、日志采集面扩充(除 `reason` 外零新增)、`step_row` 行协议重构、`08-Alpha版本标准.md`(已落地 v1.29)。 +- 不收件去向:动画密度与素材范围 →「战斗画面优化」待办;三处设计条款 → 反哺点清单;历史锚里的旧 `text` 字段 → 不改历史数据,分析工具保留旧日志兼容分支。 + +## 6 关联文档同步面 + +| 文档 | 关联点(本批实现会改变它的哪条陈述) | 同步义务 | +|---|---|---| +| `design/ux/battle.md:157`/`:230`/`:304` | 结算期明细带逐行滚动;「结算逐行兑现不可整体跳过、只给减动效」 | 实现批禁写 `design/`;逐条列进 `reports/iter-反哺点-<日期>.md`,用户裁决后由文档批落文 | +| `design/gdd/systems/战斗循环/战斗结算.md:73`/`:87` | 明细流水是结算明细屏的数据源;「显示名等玩家可见文案是数据面字段、代码读表拼行」 | 同上 | +| `design/gdd/systems/战斗循环/战斗表现.md:53`/`:99`/`:149` | 结算逐行兑现是信息载体;因果可读验收「能说出这一行来自哪步操作」 | 同上 | +| `design/gdd/08-Alpha版本标准.md` v1.29 | 「逐行结算排播」行已删(合并 `f7d7761e`) | 已落地,本批零动作 | +| `game/tests/README.md:135` | 能力行「结算明细带逐行呈现与排播节奏」 | 实现批禁写;归写卡段维护,换代项写在 T3,本卡登记 | +| `体验验证清单.md:86`/`:206`/`:220`/`:314`/`:315`/`:326`/`:442`/`:519` | 逐行结算、明细带来源/行序/文案可读性、减半标签等目检项 | 实现批禁写根规则文件;列进反哺点清单,由文档批落文;真人目检登记不阻塞 | + +## 7 文件结构图 + +| 路径 | 职责 | 行为/非行为 | 对照表行 | 复用/新增 | +|---|---|---|---|---| +| `game/presentation/views/battle_log_view.gd` | B 区文字列表渲染面退役(保留视图壳供挖掘期摘要位或整体退役,二选一定在 T1) | 行为改动 | R1 | 复用既有件,不新增 | +| `game/presentation/row_pacer.gd` | 移除文字入带调用,保留 FX 排播链 | 行为改动 | R1/R2 | 复用既有件 | +| `game/presentation/main.gd` | 组合根 `log_view` 接线与 `clear()` 调用面同步 | 行为改动 | R1 | 复用既有件 | +| `game/presentation/playtest_logger.gd` | 日志 `step` 行去掉两份中文文案 | 行为改动 | R3 | 复用既有件 | +| `game/core/damage_controller.gd`/`reward_grant.gd`/`settlement/combat_segment.gd`/`settlement/grant_segment.gd` | `reward_ineffective` 行补 `reason` 枚举 extra | 行为改动 | R5 | 复用既有 `_emit_row` 出口 | +| `tools/analyze_playtest.py` | 四处 `text` 判读改读结构化字段,保留历史锚兼容分支 | 行为改动 | R4 | 复用既有解析入口 | +| `game/tests/unit/presentation/*`/`game/probe/*` | 旧断言改写成退役后正向断言 | 行为改动 | R1/R2/R3 | 复用既有套件 | +| `game/tests/README.md` | 能力行换代 | 非行为改动 | — | 复用既有表行 | +| `reports/需求卡片-…`/实现报告/代拍板追认单/反哺点清单/验收审计 | 过程件 | 非行为改动 | — | 复用既有模板 | + +## 8 落位与可复用性预检 + +- **复用面**:本批零新增视图、服务、工具脚本。`grep` 现成实现结果=文字渲染唯一在 `battle_log_view.gd`,排播唯一在 `row_pacer.gd`,日志落盘唯一在 `playtest_logger.gd:130-143`,分析判读唯一在 `tools/analyze_playtest.py`;同名同义标识符无第二处。新增文件只有 `reports/` 过程件与新增测试函数(落在既有套件内)。 +- **唯一面**:`step` 行字段定义只在 `battle_orchestrator.gd:723-735`;`reason` 枚举取值只在第 9 节 T2 定义一次,四个发射点只引用不各自定义;日志行字段组装只在 `playtest_logger.gd:136-143`;分析工具的「旧日志兼容分支」只在 `effect_id_of()` 一处。 +- **分层与交互面**:core 发 `step_row` → 呈现层 `row_pacer`/`playtest_logger` 并列订阅(删文字只动呈现层那条);`row_pacer` → `stage.on_step_row_fx`/`settlement_fx`/`board_zone` 的调用链不变;core 零 UI、数值经 ConfigDB、随机经 RngService 三条红线不因补 `reason` 而绕。 + +## 9 任务卡 + +估时合计 3.5–4.75 个工作日(软盒 5 日);T2 若 `reason` 枚举落点超 4 处,按「先 damage_controller+reward_grant 两处、再 combat/grant 两处」切成 T2a/T2b,不扩 T 卡验收面。 + +### T0 开工核对与改前基线(0.25 日) + +取用:本卡第 3 节全部 file:line。产出:`sim-data/` 下改前判读基线读数一份(不入库)、T1..T4 共用的 `REASON_ENUM` 取值表。 + +- [ ] 逐条复核第 3 节 file:line 与现役代码一致,不一致处回呈写卡段,不改卡硬做。 +- [ ] 跑 `python tools/analyze_playtest.py` 对现行历史锚出一份判读基线,落 `sim-data/` 并在实现报告登记路径。 +- [ ] 跑 `python tools/run_all_gates.sh --docs` 确认写卡段文档域闸绿,回执记入实现报告。 + +### T1 撤玩家侧逐行文字(1–1.5 日) + +取用:T0 复核结果、`battle_log_view.gd`/`row_pacer.gd`/`main.gd` 现役签名。产出:`row_pacer.log_view` 句柄与文字入带调用清零、FX 调用链原样。 + +- [ ] 在 `row_pacer.gd:83-101` 移除 `log_view.append_row(row)`、`log_view.append_bb(...)`、`log_view.finish_settlement_round()` 三处调用,保留 `:89-101` 其余 FX 调用与 `refresh_request.call()`。 +- [ ] 在 `row_pacer.gd` 移除 `log_view: BattleLogView` 句柄声明与组合根注入面,保留 `stage`/`board_zone`/`settlement_fx`/`board_view` 四个句柄。 +- [ ] 在 `main.gd` 移除 `_start_adventure`/`_resume_from_menu` 的 `ui.battle.log_view.clear()` 与 `wire_battle` 相关文字接线,`_on_step_row` 的清图奖励 toast 保留。 +- [ ] 定 `battle_log_view.gd` 去留并落实现:视图壳整体退役或只保留挖掘期摘要位,二选一以「B 区结算期零文字节点」为准,改动写进实现报告。 +- [ ] 从真实入口(停手→结算)跑 `battle_log_zero_text_test.gd:_smoke_settle_zero_rows`,断言结算期 B 区 `RichTextLabel` 行文本为空且无逐行追加,读数写进本步提交信息。 + +### T2 日志零文案与结构化字段补齐(1–1.5 日) + +取用:`step_row` 行协议(公共字段+extra 全平铺)、`REASON_ENUM`。产出:新日志 `step` 行零中文字段、`reward_ineffective` 行带 `reason`。 + +- [ ] 在 `playtest_logger.gd:136-143` 从 `line` 去掉 `"text"`,并在 `:140-142` 平铺循环里跳过 `display_name`,其余字段与 payload 一行不减。 +- [ ] 定义 `REASON_ENUM` 四个取值:`full_layers`/`full_hp`/`no_enemy_alive`/`hero_down`,只在本卡定义一次。 +- [ ] 在 `damage_controller.gd:623-624`/`reward_grant.gd:269-271`、`:362-369`/`combat_segment.gd:123-124`/`grant_segment.gd:103`、`:321` 的 `reward_ineffective` 行 extra 各补一个 `reason` 键,取值按现文案对号入座。 +- [ ] 从真实入口(开新局→真实结算→落盘 JSONL 读回)跑 `playtest_logger_step_fields_test.gd:_assert_no_text_and_full_payload`,断言 `step` 行无 `text`/`display_name`、且 `type`/`source`/`cell`/`round`/`value`/`highlight` 与全部 payload 键集与改前逐位一致。 + +### T3 分析工具、测试与探针正面化(0.75–1 日) + +取用:T0 判读基线、T2 的 `REASON_ENUM`。产出:分析判读结论与改前一致、旧断言全部改写而非删除。 + +- [ ] 在 `tools/analyze_playtest.py:83-88` 的 `effect_id_of()` 保留旧日志 `text` 兼容分支,新日志分支改读 `effect_id`。 +- [ ] 在 `:189`/`:434` 把 `"全体敌人" in r.get("text","")` 改读 `r.get("target") == "all_enemies"`。 +- [ ] 在 `:471-478` 把未生效原因分类由 `text` 子串改读 `s.get("reason")`,四类取值与 `REASON_ENUM` 一一对应。 +- [ ] 把 `theme_projection_test.gd:_smoke_battle_log_view`/`player_copy_sweep_test.gd:_sweep_source_names`/`ui_probe.gd:133-135`/`ui_click_probe.gd:423`、`:473`、`:616`、`:798-844` 的旧文字断言改写为退役后的正向断言(例:结算期零行文本、来源标签从数据表读而非从行文本读),逐条登记进测试削弱申报表。 +- [ ] 同步 `game/tests/README.md:135` 能力行为退役后口径。 +- [ ] 对同一份历史锚与一份新日志各跑一次 `tools/analyze_playtest.py`,判读结论与 T0 基线逐位一致,读数写进本步提交信息。 + +### T4 批末验收与产出物落位(0.5 日) + +取用:T1..T3 各步读数、第 10 节对照表。产出:`reports/` 四份过程件。 + +- [ ] 按本批改动域跑重闸选档全绿,回执记入实现报告。 +- [ ] 跑独立验收审计(入口 `reports/iter-验收审计-<日期>.md`,由未参与实现的会话或子代理执行),未过不合并。 +- [ ] 在轻闸全绿后、合并前写齐 `reports/` 三份:实现报告(各卡状态+实机目检总清单+遗留读数义务)、代拍板追认单、反哺点清单(第 6 节每条都有落点)。 +- [ ] 用户目检项只登记不阻塞,登记完成即本卡义务了结。 + +## 10 验证闸(改动—验收对照表) + +| 需求点 | 改动(文件:行/行为) | 验收测试(名称+落点+尾缀) | 层级 | 真实入口 | 判据绑定面 | 能力行 | +|---|---|---|---|---|---|---| +| R1 结算期零逐行文字(design/ux/battle.md:157) | `battle_log_view.gd:87-103`/`row_pacer.gd:83-101`/`main.gd:417-425` | `battle_log_zero_text_test.gd:_smoke_settle_zero_rows`(新增,落在表现层单元套件) | 单元+探针 | 真实停手→轮末结算→读 B 区场景树与 `RichTextLabel` 行文本 | `step_row` 消费后 `RichTextLabel.append_text` 调用计数=0、parsed_text 空;不绑终屏态 | 新增:结算期零逐行文字与 FX 排播链保持 | +| R2 FX 与 toast 链不断(design/ux/battle.md:297) | `row_pacer.gd:89-101` 保留 | `pacing_queue_test.gd:_assert_fx_chain`(既有套件扩断言)+`standee_fx_sweep_test.gd:_init` | 单元+集成 | `step_row`→`row_pacer`→`stage.on_step_row_fx`/`settlement_fx` | `on_step_row_fx`/`play_damage_number`/`play_projectile` 调用计数与改前逐位一致 | 新增:结算期零逐行文字与 FX 排播链保持 | +| R3 日志零文案、字段不缺(design/gdd/systems/战斗循环/战斗结算.md:73) | `playtest_logger.gd:136-143` | `playtest_logger_step_fields_test.gd:_assert_no_text_and_full_payload`(新增) | 单元+集成 | `start_session`→真实结算→落盘 JSONL 读回 | 落盘 `step` 行键集:`type`/`source`/`cell`/`round`/`value`/`highlight`+全部 payload 与改前一致,且无 `text`/`display_name` | 新增:日志 step 行零文案与结构化判读等价 | +| R4 分析判读等价(design/engineering/test-conventions.md:133) | `tools/analyze_playtest.py:83-88`/`:189`/`:434`/`:471-478` | `analyze_parity_check.py`(新增,落在 `tools/`) | 工具/集成 | 同一份 `sim-data/` 历史锚+一份新日志各跑一次判读 | `eff_counts`/`reward_dmg`/未生效分类计数字典与 T0 基线逐位一致 | 新增:日志 step 行零文案与结构化判读等价 | +| R5 未生效原因结构化(design/gdd/systems/战斗循环/战斗结算.md:80) | 四处 `reward_ineffective` 发射点 extra 补 `reason` | `reward_ineffective_reason_test.gd:_assert_four_reasons`(新增,落在结算域单元套件) | 单元 | 真实结算产生满层/满血/无存活敌人/主角已倒下四类未生效行→`step_row` 载荷 | `step_row` 载荷 `reason` 键取值四类逐一命中,不绑终态结算结果 | 新增:日志 step 行零文案与结构化判读等价 | + +**测试削弱申报**:随文字列表退役需改写的旧断言=`theme_projection_test.gd:_smoke_battle_log_view`、`player_copy_sweep_test.gd:_sweep_source_names`、`ui_probe.gd:133-135`、`ui_click_probe.gd:423`/`:473`/`:616`/`:798-844`、`pacing_queue_test.gd:165` 的文字呈现部分。一律改写为退役后的正向断言,**不删除、不放宽阈值、不缩小扫描面**;实现期出现未申报的删除断言由独立验收审计判红。 + +**独立验收审计**:`reports/iter-验收审计-<日期>.md`,由未参与实现的会话或子代理执行,未过不得合并。 + +## 11 异常分级 + +- L1 自救:单件直跑出红,只重跑该红件最小单元(一次重试)。 +- L2 记录继续:连续三次同红灯,记录进实现报告并继续本卡其余步骤。 +- L3 停机写报告等用户:触碰第 4 节任一 🔴、分析判读结论与改前不一致且定位不到字段来源、独立验收审计未过。 + +## 12 代拍板白名单 + +1. 新增测试函数命名与落点(须落在第 7 节列出的既有套件/工具目录)。 +2. `battle_log_view.gd` 视图壳整体退役 vs 只留挖掘期摘要位,以「结算期 B 区零文字节点」为判据自判,结论写进实现报告。 +3. `reason` 四个枚举键在四个发射点的写法(照现役 `_emit_row` extra 模式,不新增helper)。 + +超出以上三项一律呈报。 + +## 13 待裁点 + +零待裁点。用户裁定已覆盖方向、保留面、日志口径与 08 清单行处置;开工门=U0(用户发令 /iter)。卡片写完呈用户裁决后才可开工。 + +## 14 复核记录 + +复核发现按四类去向逐条登记(自判/补写/待裁/退回上游);本节即复核凭据,不另设报告文件(2026-11-06 用户裁)。 + +| 发现 | 去向 | 处置结果 | +|---|---|---| +| 视图壳整体退役 vs 只留挖掘期摘要位 | 自判 | 以「结算期 B 区零文字节点」为判据自判,写进第 12 节白名单第 2 项 | +| 新增测试函数命名与落点 | 自判 | 写进第 12 节白名单第 1 项,落在第 7 节列出的既有套件 | +| `reason` 枚举键在四个发射点的写法 | 自判 | 写进第 12 节白名单第 3 项,照现役 `_emit_row` extra 模式 | +| 上一轮核查漏项:`tools/analyze_playtest.py` 四处读 `text` | 补写 | 补进 T2/T3/R4,并保留旧日志 `text` 兼容分支 | +| 未生效原因缺统一结构化字段 | 补写 | 补进 T2/R5,定义 `REASON_ENUM` 四个取值 | +| 验收对照表列名与 2026-10-24/10-28 两裁冲突 | 补写 | 第六列改「判据绑定面」,内容全改正向断言与改前改后对照 | +| req-card 第〇步「标题带设计面=标记」与现行 §12.1 模板冲突 | 补写 | 按现行规约,闭合凭据以用户裁定+`08-Alpha版本标准.md` v1.29 为准,第 2 节写明 | + +零待裁点、零退回上游。 + +**自审六查**:①规格覆盖——第 1 节五条完成定义逐条指到 T1..T4 与 R1..R5,无悬空;②步骤扫描——每步一个动作+一个可核查结果,无「TBD/酌情/适当优化」;③类型一致性——`REASON_ENUM` 四个取值在 T2 定义、T3 与 R5 逐字引用;④审查焦点+改动覆盖——最可能坑到玩家的失败模式=FX 链被误删(R2 兜)、分析判读静默失真(R4 兜)、日志丢 payload(R3 兜),文件结构图每个行为改动都有对照表行;⑤篇幅比例——本卡以签名、取值、断言名为主,未抄函数体;⑥落位与复用——第 8 节三问逐条答完,零新增视图/服务/工具,与第 7 节「复用既有」标注一致。 + +**上一轮核查漏项补正详情**:此前报「日志零缺漏」时未查到 `tools/analyze_playtest.py:83-88`/`:189`/`:434`/`:471-478` 对 `text` 的四处判读依赖;本卡已列为 R4 并补 `reason` 字段(R5),不属新增需求,属用户令「缺什么补什么」的同批处理。 diff --git a/待办清单.md b/待办清单.md index f1e322b7..dacc0f25 100644 --- a/待办清单.md +++ b/待办清单.md @@ -55,13 +55,11 @@ #### 结算期逐行文字列表退役与日志零文案(2026-11-07 登记,来源=会话提及) -**实况**:用户裁定撤掉战斗屏结算期逐行滚动的文字列表,保留伤害飘字与攻击特效;日志零文案只存字段。现行日志已逐行全字段落盘(game/presentation/playtest_logger.gd:130-143;开新/续玩均开会话,game/presentation/main.gd:247/:295)——零缺漏、无需补采,与裁定不符处是日志多带中文文案两处(text 与平铺的 display_name)。文字列表消费面=game/presentation/views/battle_log_view.gd:173-260 与 game/presentation/row_pacer.gd:100;动画特效走 target/target_id,不依赖行文案(game/presentation/views/battle_stage_view.gd:328-341)。[战斗结算](design/gdd/systems/战斗循环/战斗结算.md) v1.8 明细流水节规范句仍写「文案入表、代码读表拼行」,与本裁定相反。 - -**缺口**:还差设计讨论——文字列表退役范围(飘字与特效保留面)、日志两处中文字段清理、[battle](design/ux/battle.md) 不可整体跳过承诺与[战斗表现](design/gdd/systems/战斗循环/战斗表现.md) 因果可读验收判据改写。 +**实况**:设计讨论 2026-11-07 会话闭合(用户裁定、待裁点零):撤掉结算期逐行滚动文字列表、保留伤害飘字与攻击特效、日志零文案只存字段。落点 [08-Alpha版本标准](design/gdd/08-Alpha版本标准.md) v1.29(现行不含「逐行结算排播」行)与 [需求卡片](reports/需求卡片-结算期文字列表退役批-2026-11-07.md)。日志逐行全字段落盘(game/presentation/playtest_logger.gd:130-143;开新/续玩均开会话,game/presentation/main.gd:247/:295),采集面零缺漏;多带 text 与平铺 display_name 两处中文文案,tools/analyze_playtest.py:83-88/:189/:434/:471-478 四处读 text 判读,须补 reason 字段并改读结构化字段。文字列表消费面=battle_log_view.gd:173-260/row_pacer.gd:100;动画特效走 target/target_id 不依赖行文案(battle_stage_view.gd:328-341)。[战斗结算](design/gdd/systems/战斗循环/战斗结算.md) v1.8 明细流水节规范句仍与本裁定相反(同步义务列卡片第 6 节)。 **改动面**:文档+游戏代码 -**状态**:待文档设计 +**状态**:文档设计已闭合+已写卡 #### 战斗画面优化——动画演出与美术表现(2026-11-07 登记,来源=会话提及)