Files
gplan-2/design/gdd/ux/level-map.md
T
DKChan 6376356539 docs(通关口径统一): 「通关」全库退役——主体明确短语族替代歧义单义词:单关=关卡完成、整局=冒险成功、终结统称=冒险落幕(2026-10-26 用户裁)
改写范围:design/gdd 18+ 文件约 130 行非豁免正文+「冒险终结→冒险落幕」13 行+根件(体验验证清单/待办清单正文/AGENTS)。三类豁免不动:带日期历史行、待办条目标题(冻结登记元数据)、「」UI 引语(生涯页「通关局数」等玩家字样另按对外命名纪律单独裁)。术语表:「通关」「通过第 N 关」两行退役,新立关卡完成/冒险成功/冒险落幕三行,三选一行随改;退役词对照收通关/冒险终结。闸词表:doc_term_audit 收两词+通关的引语语境豁免,此后正文误用即机检拦截。特判三处:棋盘生成「可通关」=棋盘第三义改「可清图」;地形变异「双关同型」改「两关同型」;00-游戏概念 minesweeper 双关系 pun 义保留。计数器键名(adventure_cleared/level_clear_counts)与测量数据键零触碰。「通关口径混用」条目(2026-10-18 登记)完成即删。--docs 域闸全绿(退役词疑似现行 0)
2026-10-26 06:05:20 +08:00

240 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# UX Spec: 关卡画面(选路枢纽,Level Map)
> **Status**: 定稿版——三项设计提案已拍板完成(2026-09-27:底栏状态展示 / 图上点击选路·候选按钮退役 / 放弃二次确认);**形态已升格独立屏(2026-09-28 用户裁决:独立存在为最终形态)**;**视觉终稿已冻结(2026-09-28 关卡画面样张 v1 机检 11/11 全绿,闸形 A——冻结值见 Layout/组件清单与样张机检报告,迭代 4)**
> **Author**: user + ZCode(关卡画面 UX 批)
> **Last Updated**: 2026-10-25(迭代 35 生成图换代:呈现面随动登记)
> **Platform Target**: PC (Steam)——Keyboard/Mouse 主,全部操作纯鼠标可完成(同 [battle.md](battle.md))
> **Template**: UX Spec
> **覆盖范围**: 独立屏形态(关卡停点全景)· 入口停点 · 岔路停点 · 单链停点 · 放弃冒险入口
> **不覆盖**: 节点覆盖层(NodeOverlay——奖励/恢复兑付反馈,spec:[node-reward.md](node-reward.md))、商店覆盖层(spec:[shop.md](shop.md))、关卡结算屏([level-clear.md](level-clear.md))、战斗屏([battle.md](battle.md))
> **机制权威**: [关卡节点地图](../systems/冒险循环/关卡节点地图.md)(选路、兑付、停点语义);图的来源 = [关卡节点图生成](../systems/冒险循环/关卡节点图生成.md)(参数化长图——只换图的来源与形态,不换本屏的呈现语义;多终点时各终点均带 Boss 标记,标记语义不变、数量随图;图形态随参数变化,布局自适应,形态不进呈现代码);**系统契约**: [HUD框架](../systems/表现与支撑/HUD框架.md)(订阅纪律、模态层级、可访问性基线)
> **生成图随动登记(2026-10-25)**:入口停点候选数=入口个数(1 或多,多入口并列呈现,首跳即选从哪个入口进场);节点数字=图内句柄 id(非节点深度、非数组序);生成图深度域 L3 上探至 0–13,超出画布冻结公式约 10 层的屏预算——等比缩放与滚动视口两案均未设计,归呈现批(见待办清单「超预算图策略升级路径」条),本 spec 冻结值暂不变。
---
## Purpose & Player Need
关卡画面是中循环(关卡内)的枢纽屏。停点前移批(2026-09-23)之后,关卡开始即呈现这张图,此后每次兑付确认都回到它再选路——玩家在这里看图、选路、出发,直到关底 Boss 分出胜负。
一句话目的:**让「我在图上哪、下一步能去哪、去了会发生什么」一眼可读,选路即出发。**
- 节点图本体承载 P4(地牢下探隐喻):方块地牢观感的整层纵览,本层的形状与去路尽收眼底
- 候选选路口承载 P1(推理的掌控感):下一步的去向明示(节点类型字面),零自动推进——每一步都是玩家亲手走出来的
- 底部状态栏承载规划原料:生命、属性与本关已选加成常读,支撑「低血先疗、缺攻先补」一类选路判断(2026-09-27 拍板:底栏 = 状态展示)
若此屏缺失或难用:中循环失去锚点(玩家不知道自己走到第几环);零自动推进沦为「被迫逐步确认」的负担而非掌控感。
## Player Context on Arrival
- **到达时机**:关卡开始即出图(停点前移——入口不自动进入,第一次选路就是「出发」);或每次兑付确认后返回(战后回图、奖励/恢复反馈确认后回图、商店覆盖层离开后回图)
- **到达前刚在做**:上一场战斗的结算画面,或奖励/恢复/商店覆盖层的确认动作
- **情绪状态**:谋定后动——[art-bible](../../art/art-bible.md) §2.7 下探过渡的「纵深的期待」(能量 4/10);画面应安静可读,不给选路决策添噪
- **到达方式**:游戏推进送入(屏级切换——独立屏激活期战斗屏整体隐藏)
## Navigation Position
```
存档/营地 ──开始冒险──▶ 冒险结构(关卡序列)──▶ 【关卡画面(选路枢纽,本 spec)】
├─ 选战斗/Boss 节点 → 战斗屏(battle.md)
├─ 选奖励/恢复节点 → 节点覆盖层(NodeOverlay,本屏域内弹出)
├─ 选商店节点 → 商店覆盖层(本屏域内弹出)
└─ Boss 胜利 → 关卡结算(level-clear.md)→ 下一关开始 → 回本屏
放弃冒险(任意选路停点)→ 冒险落幕 → 返回存档/营地
```
- 上游屏:关卡结算确认(下一关开始)或冒险开始
- 下游屏:战斗屏 / 节点覆盖层 / 商店覆盖层(三者兑付确认后**一律回本屏**再选路——战后回图)
- **本屏为独立屏**:激活期**独占呈现**——战斗屏宿主整体隐藏(非暗幕半透、零透出);选路提交即离开本屏进入所选节点的兑付流程(战斗/Boss 节点切回战斗屏;奖励/恢复/商店节点本屏保持激活,兑付覆盖层在本屏域内叠加弹出,确认后回本屏)
## Layout Specification
### Information Hierarchy
本屏必须传达的全部信息,按注视优先级分六层:
1. **节点图本体**(第一注视点):节点方块(五类型字面:战/赏/疗/王/商)、通道连线、当前位置、可选去路;类型可见性=邻近 N 层内显示类型,范围外只见结构(机制见[关卡节点地图](../systems/冒险循环/关卡节点地图.md))
2. **候选选路口**:亮金候选通道 + 候选节点亮金描边——「下一步能去哪」的图上双冗余(2026-09-27 拍板:候选按钮退役,图上点击为唯一提交通道)
3. **常驻语境**(顶栏):关卡名(第 N 层·名称)、GP 常驻总量(2026-09-26 二轮拍板去向:GP = 关卡画面常驻总量,[battle.md](battle.md) OQ14 口径经 2026-09-27 GP 归属拍板对齐批维持)
4. **状态展示**(底栏,2026-09-27 拍板):生命(当前/上限)、属性(攻击 / 护甲 AC 有效值)、本关已选加成(统一冒险加算区增量)——选路规划原料常读
5. **边缘动作**:放弃冒险入口(破坏性,危险红族,异位呈现)
6. **进度语境**:已过/当前/未来三态节点直接读图呈现——节点态即节点链进度呈现载体,**不另设进度条组件**(关卡节点地图 呈现侧口径 2026-09-17 用户拍板)
### Layout Zones
按 1280×800 基座(2026-09-12 定)。本屏为独立屏独占呈现:屏底(深底 `BG_ROOT` + 石纹底噪〔迭代 2 框材组冻结件,缺位纯色回退〕)铺满,内容居中三段。
| 区 | 位置与尺寸 | 内容 |
|---|---|---|
| **顶栏语境** | 居中横排,图区上方,高约 32px | 左:关卡名(`level_row.display_name`,如「第二层 · 幽暗地域」);右:GP 常驻徽章(GP 图标+数字,直角细线数据框——GP 值域超点阵适用档,走 pattern 5 的 When-NOT-to-Use 路线);HP 归底部状态栏(2026-09-27 拍板完成) |
| **节点图区** | 居中 | 整幅节点图自绘:节点方块 + 通道折线 + 节点态着色 + Boss 紫赤描边。画布随图自适应(**冻结公式**:宽 = 70+层深×122+44.5、高 = 52+槽位×58+25+24,下限 620×256——routebug 83c11a1 根修件);通道折线**冻结 2/3/4px**(未点亮石灰 STONE/候选亮金 GOLD_LIT/悬停加粗);节点方块 52×36 内**节点图标 20px 烘焙 1:1**(♻ kenney 五键:战=弓/赏=桂冠/疗=篝火/王=王冠/商=钱袋,WARM 单色、当前金底转深墨——双色墨制)+ 编号(图内句柄 id)10px 右上角 |
| **底部状态栏** | 图区下方横排,高约 48px | 左-中:状态数据框组(直角细线,pattern 5 族)——生命(当前/上限 + 迷你血条)、属性(攻击 / 护甲 AC,有效值 + 加成角标)、本关加成(攻+X · 上限+Y · AC+Z,零加成隐藏);右端:放弃冒险按钮(危险红族文字,与状态数据框保持间距——破坏性确认异位,pattern 7) |
### Component Inventory
| 组件 | 类型 | 内容 | 交互 | 现有实现锚 |
|---|---|---|---|---|
| 关卡名标签 | 文本 | `level_row.display_name`(关卡表行读数) | 只读 | 新建(现行标题位升级) |
| GP 常驻徽章 | 直角细线数据框 | GP 图标 + 数字(`runner.gp`,冒险钱包读数;刷新经 `wallet_changed` 信号投影〔gain/buy/clear 三事件〕或写路径回执后重查) | 只读 | 新建(GP 去向拍板落地面) |
| 节点图画布 | 自绘 Control | 节点图标(五键 20px 烘焙,双色墨制)+ 编号(图内句柄 id)、通道折线、节点态着色、Boss 紫赤描边+深墨环(BOSS_PURPLE——2026-09-26 封印紫批语义:紫赤本色) | 悬停预承诺 / 点击提交选路(唯一通道) | ✅ level_map_screen.gd `_draw_graph`(视觉终稿已落码——迭代 4 T2/T3) |
| 状态数据框组 | 直角细线数据框 ×3 | 生命(当前/上限 + 迷你血条)、属性(攻击 / 护甲 AC 有效值 + 加成角标)、本关加成(加算区增量列表,零加成隐藏) | 只读 | 新建(2026-09-27 拍板:底栏状态展示) |
| 放弃冒险按钮 | 按钮(危险红族) | 「放弃冒险(同失败结算——已获大奖励保留)」;二次确认态已拍板(见布局决策 3) | 点击(首击转确认态、二击提交) | ✅ level_map_screen.gd(可见性归组合根,仅冒险模式开) |
| 标题行 | 文本 | 停点语境提示(见布局决策 1 三停点标题) | 只读 | ✅ level_map_screen.gd `_title`(措辞已按布局决策 1 改稿) |
**布局决策 1 —— 停点标题措辞修正(清偿状态记录 143 遗留)**:现行入口停点标题沿用「继续前进(战斗房)」,与「尚未走出第一步」的语境矛盾。三停点标题定稿:
| 停点 | 候选数 | 标题 |
|---|---|---|
| 入口停点 | 入口个数(1 或多) | 「出发——选择首个节点」 |
| 单链停点 | 1 | 「继续前进」 |
| 岔路停点 | ≥2 | 「选择下一节点」 |
**布局决策 2 —— 图上直接点击选路(2026-09-27 拍板)**:候选节点的亮金描边本身是可点目标,悬停预承诺(pattern 4)后点击即提交——**候选按钮整列退役,图上点击为唯一提交通道**。实装注记:route_overlay.gd 现行候选按钮列与 `press_candidate` 探针入口随实装批拆除改造(图上命中换整图公式族命中),ui_click_probe 选路段同步改写。
**布局决策 3 —— 放弃冒险二次确认(2026-09-27 拍板)**:放弃 = 整局冒险落幕,不可逆(pattern 7 破坏性确认)。首击转入确认态(按钮文案变「再点一次确认放弃——不可逆」,危险红边框脉冲约 3 秒,超时回落),二击才提交。代价语义(已获大奖励保留、同失败结算)常驻按钮文案。
**布局决策 4 —— 底部状态栏(2026-09-27 拍板,原提案为顶栏 HP 读数)**:底栏作为状态展示——生命、属性、本关已选加成三项常读;顶栏保持关卡名 + GP 两件。单一展示面注记:与 [battle.md](battle.md) C 区「奇物列表(预留)」为不同屏的不同展示面——两屏循环口径各自独立(选路规划消费 vs 战斗内决策消费),不构成同屏重复。
### ASCII Wireframe
```
1280 × 800 ────────────────────────────────────────────────────────────────────
│ (独立屏底——战斗屏整体隐藏,零透出) │
│ 第二层 · 幽暗地域 [◈ 128](GP 常驻徽章) │
│ │
│ [战0]──┐ │
│ ├──[战3]──┬──[赏6]──┐ │
│ [战1]──┤ │ ├──[王8] ←悬停候选=亮金加粗+指针 │
│ [战2]──┴──[疗4]──┴──[战7]──┘ (战=已过·暗金 疗=当前·金 │
│ 亮金描边=候选 王=紫赤描边·Boss) │
│ │
│ HP ▓▓▓░ 14/20 │ 攻击 6 ⁺2 │ 护甲 AC 12 ⁺1 │ 本关加成: 攻⁺2·上限⁺5·AC⁺1 放弃冒险 │
└──────────────────────────────────────────────────────────────────────────────┘
```
> 图为岔路停点示意(第二关行集):已过节点暗金(GOLD_DONE #68562C)、当前节点金、候选节点亮金描边、Boss 紫赤描边+外缘深墨细环(灰度冗余通道)。终稿 = 节点图标组(♻ kenney 五键已接线,样张 v1 冻结)+ 通道折线 2/3/4px(已落码,迭代 4)。
---
## States & Variants
| State / Variant | Trigger | What Changes |
|---|---|---|
| **入口停点(默认首态)** | 关卡开始(停点前移) | 标题「出发——选择首个节点」;唯一候选 = 入口节点;图上全部节点为未来态 |
| **单链停点** | 兑付确认后、恰 1 个下一跳 | 标题「继续前进」;单候选节点图上点击提交(候选按钮已退役——图上点击为唯一通道) |
| **岔路停点** | 兑付确认后、≥2 个下一跳 | 标题「选择下一节点」;候选节点图上点击提交(候选按钮已退役——图上点击为唯一通道);亮金通道与候选描边逐一分叉可辨 |
| **悬停预承诺** | 悬停候选节点 | 该节点亮金描边加粗 + 所属通道增亮 + 光标切指针态;移出即回落(仅预承诺,点击才提交) |
| **放弃确认态** | 首击放弃按钮 | 文案转确认语 + 危险红边框脉冲约 3 秒;超时或移出回落;二击提交 `abandon_requested` |
| **换层进入** | 上一关结算确认 → 新关开始 | 本屏以新关卡数据淡入;屏底世界侧随层进换挡(**换层色板渐变挂点**——§2.7 切片档:只动色相/饱和、明度带归一,level_index→tint 表候选值 = art-bible §6.3 三关方向,终值归色板样张批;M-2 迭代 4 落挂点) |
| **减动效** | 设置开关(设置面——迭代 8 卡④已转正,TunePanel 已退役) | 淡入、描边脉冲等全部 tween 时长减半或跳终态(UiKit.motion 单点包装,同 battle.md 通道) |
**无拒绝子态**:候选提交恒合法(候选集即合法集),本屏无资源面/棋盘面拒绝路径;战斗中放弃由组合根可见性封死(按钮只在选路停点可见——接口契约:战斗中放弃一律拒绝)。
---
## Interaction Map
| 组件 | 动作 | 输入 | 即时反馈 | 结果(经组合根) |
|---|---|---|---|---|
| 候选节点(图上,唯一通道) | 提交选路 | 左键 | 悬停预承诺(描边加粗 + 通道增亮 + 指针)→ 点击本屏关闭 | `route_chosen(node_id)` → `LevelRunner.pick_next_node`——到达即兑付,无进入前确认步 |
| 放弃冒险按钮 | 终结整局冒险 | 左键(二击提交——首击转确认态,2026-09-27 布局决策 3) | 危险红族反馈 | `abandon_requested` → 组合根走冒险落幕(同失败结算——已获大奖励保留) |
**零自动推进纪律**(关卡节点地图 定稿):本屏是唯一的行进发起口——不选就停在图上;没有任何定时、默认或顺延的自动前进路径。兑付后确认挂各兑付面(战斗总结结算〔settlement-summary.md〕/ 节点覆盖层 / 商店覆盖层离开动作),本屏不重复确认步。
---
## Data Requirements
| Data | Source System | Read / Write | Notes |
|---|---|---|---|
| 节点图结构 / 当前节点 / 已到序列 / 候选集 | LevelRunner 只读成文出口:`nodes()` / `current_node_id()` / `visited_ids()` / `next_candidate_ids()` / `node_id_of()` / `node_out_ids()` | Read | 呈现只读(关卡节点地图 验收「呈现只读」条);节点态四色直接读图 |
| GP 常驻总量 | `runner.gp`(冒险钱包) | Read | 刷新经 `wallet_changed` 信号投影(gain/buy/clear 三事件)或写路径回执后重查;冒险收束清零后本屏不可达(收束即离屏) |
| 关卡名 | `level_row.display_name`(关卡表行) | Read | 字段名实现期核对(level.tres 行键 `display_name` 在案) |
| 生命读数 | `runner.hero_hp` / `runner.effective_max_hp()`(跨战斗生命携带) | Read | 已拍板(2026-09-27):底栏状态栏承载 |
| 属性与本关加成 | `runner.effective_atk() / effective_ac() / effective_max_hp()` 与 `bonus` 统一冒险加算区(锻造/大奖励/商店购买/节点奖励同账) | Read | 已拍板:底栏承载;无推送信号——组合根打开本屏 / 兑付确认回执后重查(命令式刷新纪律,同行动经济) |
| 选路提交 | LevelRunner | **Write** | 唯一写路径 = `route_chosen` → 组合根 → `pick_next_node`;本屏零其他写面 |
| 放弃请求 | 组合根 | **Write** | `abandon_requested` → 冒险落幕流程(归冒险结构) |
**架构注记**:与 battle.md 同族——UI 不拥有任何游戏状态,全部读经核心只读面,全部写经组合根;呈现层直接订阅的推进信号属 HUD框架 已锁两线之一(战斗结算明细流水 + 关卡节点地图推进信号)。
---
## Transitions & Animations
| 时刻 | 过渡 | 依据 |
|---|---|---|
| 打开(进图 / 兑付确认后回图) | 独立屏淡入(约 200ms,同装板淡入档;alpha 淡入非明度变化——§2) | 屏级切换;战斗屏整体隐藏 |
| 选路提交 | 本屏关闭,直达所选节点兑付流程 | 到达即兑付(关卡节点地图) |
| 放弃确认态(OQ3,拍板落定) | 危险红边框脉冲约 3 秒(单段呼吸,非频闪) | pattern 7;闪烁基线(≤3 次/秒)内 |
| 减动效 | 上述全部时长减半或跳终态 | HUD框架 可访问性基线 |
---
## Accessibility
无障碍基线权威 = [HUD框架](../systems/表现与支撑/HUD框架.md)「可访问性基线」节,本屏无新增豁免。呈现侧内建承诺:
- **节点态形状冗余**(全局语义红线「无任何信息仅靠色相承载」的合规项):已过 = 暗金无描边、当前 = 金填充 + 唯一焦点方块、候选 = 亮金粗描边、未来 = 暗底无描边;Boss = 紫赤描边 + 外缘 1px 深墨环(**灰度冗余通道**——紫赤灰度对石纹噪底不可辨,样张 v1 L2 机检逼守)+ 图标冗余。四态在灰度截图下可分类(AC,样张 L2 断言承载)
- **对比**:节点图标对方块底(双色墨制:暗底态暖白/当前金底深墨,各态 ≥4.5:1)、顶栏数字对底 ≥4.5:1(样张 L3 断言承载);色值取 art-bible §4.1 冻结色板(已过暗金 = GOLD_DONE #68562C 冻结新值)
- **字号下限**:节点字形 ≥14px、标题 ≥16px、按钮/徽章 ≥14px(1280×800 基座,像素字体整数倍缩放)
- **破坏性异位**:放弃按钮与候选按钮分区放置(位置通道,art-bible §4.5 #7);确认态不依赖色相单独承载(文案 + 脉冲双通道)
- **纯鼠标**:全部操作纯鼠标可完成;MVP 不做键盘焦点序(同 battle.md 留痕)
---
## Localization Considerations
- **中文像素字体随包**(硬前置,同 battle.md)
- **按钮文案 4 汉字上限**:「放弃冒险」「确认放弃」;候选按钮为模板插值(「节点 N · 战斗房」),宽度按最长节点类型名(4 字)+ 编号预留,固定槽高 + clip 兜底
- **关卡名**:`display_name` 最长 token「第三层 · 灰矮人矿城」(9 字符)——顶栏标签预留 40% 膨胀宽度
- **数字格式**:全部整数;GP 徽章图标+数字不依赖文本承载语义
---
## Acceptance Criteria
**布局与可读**
- [ ] 关卡开始即出图(停点前移语义),入口节点不自动进入;每次兑付确认后回到本屏
- [ ] 1280×800 与 16:9 全屏下顶栏/图区/动作栏无遮挡、无重叠、无内容裁切;节点图完整可见(含 Boss)
- [ ] 节点四态(已过/当前/候选/未来)+ Boss 描边在灰度截图下可分类;色值对 art-bible §4.1 色板在案
- [ ] 顶栏关卡名与 GP 常驻徽章可见、读数与 `runner` 现值一致(GP 经 gain/buy/clear 事件刷新)
**交互与流程**
- [ ] 三停点标题按布局决策 1 呈现(入口停点不再出现「继续前进(战斗房)」措辞——状态记录 143 遗留清偿)
- [ ] 候选提交经组合根唯一写路径(`route_chosen` → `pick_next_node`),到达即兑付;零自动推进(无任何不选而行的路径)
- [ ] 图上点击为唯一选路提交通道(候选按钮退役,2026-09-27 拍板);悬停预承诺反馈可见;ui_click_probe 选路段随实装批改造后全绿
- [ ] 底部状态栏三组读数可见且与 runner 现值一致(生命当前/上限、攻击/AC 有效值、本关加成增量——零加成隐藏);兑付确认返回后读数刷新
- [ ] 放弃按钮仅冒险模式可见(调试两层不可达);单击不提交、确认态超时回落、二击才终结(已拍板)
- [ ] 放弃后走冒险落幕(同失败结算),已获大奖励保留语义可见
**模态与测试**
- [ ] **独立性断言**:本屏激活期战斗屏宿主整体隐藏(`visible=false` 级互斥,零透出);选路提交至战斗节点后战斗屏恢复;兑付覆盖层(节点/商店)关闭后本屏恢复——场景级断言
- [ ] 场景级 headless 测试:真实实例化本屏 + 驱动选路全程 + 断言零脚本错误(ui_probe 家族扩展)
- [ ] 中文渲染无豆腐块;像素字体整数倍缩放;全部操作纯鼠标可完成
---
## Open Questions
**已完成(2026-09-27 用户拍板,正文随拍板改写)**:① 底栏 = 状态展示(生命 + 属性 + 本关已选加成——原提案仅顶栏 HP 读数,用户扩为底栏状态栏);② 图上直接点击选路,候选按钮退役;③ 放弃冒险二次确认。
**已完成(2026-09-28 样张 v1 机检全绿,闸形 A——正文随冻结改写)**:④ **视觉终稿**——节点图标形制/通道质感/画布公式/底栏数据框样式/屏底以关卡画面样张 v1 机检 11/11 全绿冻结落码(M-2 迭代 4;冻结值登记见机检报告 git 提交 9a79927,气质终审 = M-2 出口闸真人目检)
---
## 上游义务对照表
| 义务源 | 义务 | 本 spec 承载落点 |
|---|---|---|
| [关卡节点地图](../systems/冒险循环/关卡节点地图.md) | 呈现侧口径:方块地牢观感、节点态四色、不另设进度条 | Information Hierarchy 第 5 层 + 图区组件行 |
| 关卡节点地图 | 零自动推进、兑付后确认、选路只读 | Interaction Map + Data Requirements + AC |
| 关卡节点地图 | 呈现只读(节点图/当前位置/可选下一跳对呈现层只读可见) | Data Requirements 只读出口清单 |
| [HUD框架](../systems/表现与支撑/HUD框架.md) | 模态 overlay 层级纪律、订阅纪律(推进信号两线之一) | Navigation Position + Data Requirements 架构注记 |
| HUD框架 | 可访问性基线全量(对比/色弱/字号/闪烁/减动效/纯鼠标/中文字体) | Accessibility |
| [battle.md](battle.md) OQ14 二轮拍板 | GP = 关卡画面常驻总量 | 顶栏 GP 常驻徽章 |
| [art-bible](../../art/art-bible.md) | 方块地牢观感(§3.2 圆角方形世界侧)、色板冻结(§4.1)、半拟物(§7.1)、明度分层(§2,v3.0——状态不走明度、空间光照可走) | 图区组件 + Accessibility 对比条 |
---