diff --git a/design/gdd/01-核心循环.md b/design/gdd/01-核心循环.md index 3d5095ca..3ea54f7c 100644 --- a/design/gdd/01-核心循环.md +++ b/design/gdd/01-核心循环.md @@ -2,7 +2,7 @@ 一句话:下洞 → 扫雷攒筹码 → 自动战斗兑现 → 变强再下洞;死了,从头再来。 -## 一场战斗:扫雷的因,战斗的果 +## 一场战斗的流程 每场战斗都在一张雷图上打。战斗本身不用手操——你能做的全部决策,都在它的"准备期"里: diff --git a/design/gdd/07-体验验证清单.md b/design/gdd/07-体验验证清单.md index 9a95d011..3836796e 100644 --- a/design/gdd/07-体验验证清单.md +++ b/design/gdd/07-体验验证清单.md @@ -300,7 +300,7 @@ | # | 目检项 | 判据 | |---|---|---| -| 1 | 启动即见主菜单 | F5 启动后第一屏是主菜单(标题「Dungeon Sweeper」+副标题「扫雷的因」+开始/继续上局/营地/生涯/设置/退出六钮),**不再**是战斗界面/棋盘背景 | +| 1 | 启动即见主菜单 | F5 启动后第一屏是主菜单(标题「Dungeon Sweeper」+开始/继续上局/营地/生涯/设置/退出六钮),**不再**是战斗界面/棋盘背景 | | 2 | 菜单按钮可点 | 六钮逐个点:鼠标悬停有反馈、点击有响应(继续上局在无断点时不显示——有断点时显示且文案带关卡号) | | 3 | 菜单与战斗互不遮挡 | 开新冒险后菜单让位、战斗界面完整可见;回菜单后战斗内容不再透出(模态互斥观感与改前一致) | | 4 | 各覆盖层开合层级正确 | 图鉴/关卡地图/奇物/终局/商店/营地/设置/状态/生涯/确认框/调试浮窗逐个开合——浮层都在内容之上,调试浮窗浮于菜单之上且不吃下层点击 | diff --git a/design/gdd/systems/表现与支撑/HUD框架.md b/design/gdd/systems/表现与支撑/HUD框架.md index 885b9858..158c795d 100644 --- a/design/gdd/systems/表现与支撑/HUD框架.md +++ b/design/gdd/systems/表现与支撑/HUD框架.md @@ -51,7 +51,7 @@ HUD框架站在玩家与全部玩法系统之间:挖掘期它是输入的翻 ### 战斗屏三区双舞台:挖掘与结算同屏不切场景 -战斗屏是 MVP 唯一的玩法屏,采用"双舞台"布局——战斗画面与扫雷图两块区域同屏常驻、互不顶替:挖掘期敌人在上方待机可见,轮末结算在原地逐行展开,全程不切换场景。"扫雷的因"与"战斗的果"因此永远摆在一起,因果不需要玩家凭记忆拼接。 +战斗屏是 MVP 唯一的玩法屏,采用"双舞台"布局——战斗画面与扫雷图两块区域同屏常驻、互不顶替:挖掘期敌人在上方待机可见,轮末结算在原地逐行展开,全程不切换场景,因果不需要玩家凭记忆拼接。 三区各管一块: diff --git a/design/gdd/systems/表现与支撑/教学引导.md b/design/gdd/systems/表现与支撑/教学引导.md index 565772f7..e64db54c 100644 --- a/design/gdd/systems/表现与支撑/教学引导.md +++ b/design/gdd/systems/表现与支撑/教学引导.md @@ -80,7 +80,7 @@ HUD 框架定稿时已为教学留好两个承载位,本系统的内容将来 ## P0 最小闭环 -教学引导整体后置,MVP 不要求最小闭环。Alpha 期的最小集合候选:三动作教学 + 行动点价目 + "扫雷的因 = 战斗的果"归因提示 + chord 首遇提示。 +教学引导整体后置,MVP 不要求最小闭环。Alpha 期的最小集合候选:三动作教学 + 行动点价目 + chord 首遇提示。 ## P1 / P2 后置 diff --git a/game/presentation/ui_assembler.gd b/game/presentation/ui_assembler.gd index 5a4b5bdf..418a9f29 100644 --- a/game/presentation/ui_assembler.gd +++ b/game/presentation/ui_assembler.gd @@ -124,8 +124,6 @@ static func build_start_overlay(host: Control, db = null) -> Dictionary: var title := UiKit.label("Dungeon Sweeper",UiKit.FS_H1, true, UiKit.INK_ON_DEEP) box.add_child(title) - var sub := UiKit.label("扫雷的因 · 逐行兑现的果",UiKit.FS_BODY, false, UiKit.WARM_SOFT) - box.add_child(sub) box.add_child(HSeparator.new()) # 组帽·冒险(M2 分组) diff --git a/game/smoke/shot_probe.gd b/game/smoke/shot_probe.gd index eed87371..e107ea80 100644 --- a/game/smoke/shot_probe.gd +++ b/game/smoke/shot_probe.gd @@ -44,8 +44,8 @@ func _ready() -> void: # apply 隔离档出厂默认=窗口化 1280x800,恢复本探针设计前提。探针侧环境修正,零运行时改动) main.settings_store.apply() await get_tree().process_frame - # ① 菜单(启动态)——meta 锚经 S1 裁后换代(2026-10-08 用户裁:副标题锚改认现行文案; - # 帮助文腿整个退役——载体玩法速览牌 2026-10-06 用户令退役,checker 对应断言段同撤) + # ① 菜单(启动态)——帮助文腿整个退役(载体玩法速览牌 2026-10-06 用户令退役,checker 对应断言段同撤); + # 副标题件 2026-10-16 用户令整个删除(无意义标语),菜单文字锚只剩标题 # 自检一(迭代 28 T4):boot 态顶层可见全屏层=start_overlay(内容层树遍历——屏壳是容器不当候选: # camp 壳 boot 态 vis=true 但成员恒隐,裸树遍历自顶向下会先命中透明壳) var top: Node = null @@ -66,10 +66,10 @@ func _ready() -> void: if top != main._start_overlay: _problems.append("boot 态顶层可见层≠start_overlay(实测 %s——菜单被埋)〔装配生命批 V4〕" % (top.name if top != null else "null")) - # 自检二(迭代 28 T4):菜单标题/副标题 label 必须 is_visible_in_tree 且 rect 落屏内 + # 自检二(迭代 28 T4):菜单标题 label 必须 is_visible_in_tree 且 rect 落屏内 #(对比度只判反差不判「字在」——本条+checker 墨色占比共同补内容判据) var vp := get_viewport().get_visible_rect() - for pair in [["menu_title", "Dungeon Sweeper"], ["menu_sub", "扫雷的因"]]: + for pair in [["menu_title", "Dungeon Sweeper"]]: var lbl: Label = ProbeUiUtil.find_label(main._start_overlay, String(pair[1])) if lbl == null: _problems.append("菜单文字缺失: %s(find_label 零命中)〔装配生命批 V4〕" % String(pair[1])) diff --git a/game/tests/golden/menu_boot.png b/game/tests/golden/menu_boot.png index 90b95cd9..7dc6d9de 100644 Binary files a/game/tests/golden/menu_boot.png and b/game/tests/golden/menu_boot.png differ diff --git a/tools/shot_checker.py b/tools/shot_checker.py index f50577e9..a3abd825 100644 --- a/tools/shot_checker.py +++ b/tools/shot_checker.py @@ -160,11 +160,11 @@ def main() -> int: failures.append("明度三档带: meta 几何缺失") if "shot_menu.png" in imgs: m = imgs["shot_menu.png"] - check_text_box(m, box_of(meta, "menu_sub"), "菜单·副标题", failures) check_text_presence(m, box_of(meta, "menu_title"), "菜单·标题", failures) - check_text_presence(m, box_of(meta, "menu_sub"), "菜单·副标题", failures) # 菜单·帮助文断言腿退役(迭代 19 卡① S1 裁 2026-10-08——载体玩法速览牌 2026-10-06 用户令 # 退役「界面禁玩法文字墙」,锚/取样键/断言段三处同撤,不重锚) + # 菜单·副标题断言腿退役(2026-10-16 用户令——副标题件整个删除〔无意义标语〕, + # meta 键/断言两腿同撤,不重锚) print("[shot_checker] 焦点预算〔首焦唯一〕= 目检项(T15 段闸人闸清单判定——语义面不机检)") if failures: print("[shot_checker] FAIL——")