From e680f42b094358ce9ff15f25a868305566c5bf19 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Thu, 5 Nov 2026 06:01:57 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E8=AE=A1(=E6=A1=88=E2=91=A1=E5=8D=B7?= =?UTF-8?q?=E8=BD=B4=E8=A7=86=E5=8F=A3=C2=B7=E6=96=87=E6=A1=A3=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E6=AE=B5=E9=97=AD=E5=90=88):=20level-map.md=20v2.0?= =?UTF-8?q?=E2=80=94=E2=80=94=E5=B8=83=E5=B1=80=E5=86=B3=E7=AD=96=205=20?= =?UTF-8?q?=E5=8D=B7=E8=BD=B4=E8=A7=86=E5=8F=A3=E8=8C=83=E5=BC=8F=E8=90=BD?= =?UTF-8?q?=E6=96=87(=E5=9B=9B=E5=8F=A3=E5=AD=90:=20=E8=B7=9F=E9=9A=8F+?= =?UTF-8?q?=E6=8B=96=E6=8B=BD+=E6=BB=9A=E8=BD=AE/=E5=B9=B3=E6=BB=91?= =?UTF-8?q?=E6=BB=9A=E5=8A=A8=20provisional=200.3s=20=E5=87=8F=E5=8A=A8?= =?UTF-8?q?=E6=95=88=E7=9E=AC=E5=88=87/=E5=BD=93=E5=89=8D=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E5=B1=85=E4=B8=AD=E9=94=9A=20x=3D640=C2=B12/=E4=B8=8D?= =?UTF-8?q?=E5=81=9A=E7=BC=A9=E6=94=BE=E7=BC=A9=E7=95=A5=E5=9B=BE)+?= =?UTF-8?q?=E8=A7=86=E5=8F=A3=E6=95=88=E6=9E=9C=E5=9B=BE=E5=86=85=E5=B5=8C?= =?UTF-8?q?(2026-11-05=20=E7=94=A8=E6=88=B7=E4=BA=BA=E5=AE=A1=E9=80=9A?= =?UTF-8?q?=E8=BF=87)+=E5=83=8F=E7=B4=A0=E7=BA=A7=E8=A7=86=E8=A7=89?= =?UTF-8?q?=E5=88=A4=E6=8D=AE=E5=9B=9B=E6=9D=A1+=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=9B=BE=E9=9A=8F=E5=8A=A8=E7=99=BB=E8=AE=B0=E6=8D=A2=E4=BB=A3?= =?UTF-8?q?(0=E2=80=9313=20=E6=B7=B1=E5=BA=A6=E4=B8=8D=E5=8F=97=E5=B1=8F?= =?UTF-8?q?=E9=A2=84=E7=AE=97=E7=BA=A6=E6=9D=9F,=E5=8E=9F=E6=8C=82?= =?UTF-8?q?=E8=B4=A6=E9=97=AD=E5=90=88)+States/Interaction/Transitions/AC?= =?UTF-8?q?=20=E5=85=AD=E5=A4=84=E9=9A=8F=E5=8A=A8(=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=9B=BE=E5=AE=8C=E6=95=B4=E5=8F=AF=E8=BE=BE=E5=8F=A3=E5=BE=84?= =?UTF-8?q?=E6=8D=A2=E4=BB=A3);=20=E5=85=B3=E5=8D=A1=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=9B=BE=E7=94=9F=E6=88=90.md=20v1.5=E2=80=94=E2=80=94?= =?UTF-8?q?=E8=B0=83=E5=8F=82=E8=A1=A8=E6=94=B9=E5=8F=82=E6=95=B0=E5=A5=91?= =?UTF-8?q?=E7=BA=A6=E8=8A=82(=E6=A6=82=E5=BF=B5=E9=9D=A2=2011=20=E8=A1=8C?= =?UTF-8?q?+=E5=8F=96=E5=80=BC=E5=9F=9F=E6=8C=87=E8=B7=AF=20data/schemas)+?= =?UTF-8?q?=E5=9B=BE=E5=8C=85=E7=BB=9C=E8=A1=8C=E9=80=80=E5=BD=B9(?= =?UTF-8?q?=E5=9B=BE=E8=A7=84=E6=A8=A1=E6=97=A0=E5=91=88=E7=8E=B0=E4=BE=A7?= =?UTF-8?q?=E4=B8=8A=E9=99=90=E5=8F=A5=E8=90=BD=E6=A0=B8=E5=BF=83=E8=A7=84?= =?UTF-8?q?=E5=88=99)+=E6=94=AF=E8=B7=AF=E4=BA=92=E5=BC=82=E8=A1=8C?= =?UTF-8?q?=E5=8E=BB=E5=8F=96=E5=80=BC=E5=9F=9F=E6=8E=AA=E8=BE=9E;=20?= =?UTF-8?q?=E5=BE=85=E5=8A=9E=E6=B8=85=E5=8D=95=E3=80=8C=E8=B6=85=E9=A2=84?= =?UTF-8?q?=E7=AE=97=E5=9B=BE=E3=80=8D=E6=9D=A1=E7=9B=AE=E6=8E=A8=E8=BF=9B?= =?UTF-8?q?(=E7=BC=BA=E5=8F=A3=E5=88=A0,=E7=8A=B6=E6=80=81=3D=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E8=AE=BE=E8=AE=A1=E5=B7=B2=E9=97=AD=E5=90=88+?= =?UTF-8?q?=E5=BE=85=E5=86=99=E5=8D=A1,=E5=87=AD=E6=8D=AE=3Dlevel-map=20v2?= =?UTF-8?q?.0+=E7=94=9F=E6=88=90=20v1.5);=20=E6=9C=AC=E6=AD=A5=E5=87=AD?= =?UTF-8?q?=E6=8D=AE:=20=E6=B5=81=E6=B0=B4=E7=BA=BF=E9=97=B8=20PASS(25=20?= =?UTF-8?q?=E6=9D=A1=E7=9B=AE=C2=B7=E4=BA=A4=E5=8F=89=E6=A0=B8=E9=9B=B6?= =?UTF-8?q?=E7=BA=A2)+=E6=96=87=E6=A1=A3=E5=9F=9F=E9=97=B8=E5=85=A8?= =?UTF-8?q?=E7=BB=BF=20all=5Fgreen=20=E5=9F=BA=E7=BA=BF=2066b2ed20=20?= =?UTF-8?q?=E6=97=A0=E6=96=B0=E5=A2=9E=E7=BA=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- design/gdd/systems/冒险循环/关卡节点图生成.md | 44 ++++---- design/gdd/ux/level-map.md | 101 +++++++++++++++--- 待办清单.md | 9 +- 3 files changed, 109 insertions(+), 45 deletions(-) diff --git a/design/gdd/systems/冒险循环/关卡节点图生成.md b/design/gdd/systems/冒险循环/关卡节点图生成.md index 00f0eae1..15ef939b 100644 --- a/design/gdd/systems/冒险循环/关卡节点图生成.md +++ b/design/gdd/systems/冒险循环/关卡节点图生成.md @@ -1,7 +1,7 @@ # 关卡节点图生成 > 一句话:一关的节点图从哪来——生成器按参数长出一张合法图 -> 状态:现行为 v1.4 +> 状态:现行为 v1.5 ## 设计目的 @@ -43,10 +43,10 @@ | 约束 | 内容 | |---|---| | 道路系统 | 图=主路+支路;除岔口节点(两条以上去路的节点)外每个节点恰一条去路;岔口去路 2–3 条 | -| 宽度=分叉生长 | 不摆平行层;同深度节点数由岔口自然长出,至宽度上限为止(上限读参数档,见调参表) | +| 宽度=分叉生长 | 不摆平行层;同深度节点数由岔口自然长出,至宽度上限为止(上限读参数档,见参数契约) | | 层高=沿路步数 | 入口到终点的最长路径步数;第一关 ≥6,逐关递增且增幅变大 | | 出口归属锁定 | 多终点时由大岔口把图分成互不连达的分支区域,各区域只通向自己的终点;每个终点前一层节点的去路集合恰含一个终点——选路=提前承诺打谁 | -| 战斗节点保底 | 奖励/恢复/商店占位后战斗节点量不被挤没(保底数进调参表) | +| 战斗节点保底 | 奖励/恢复/商店占位后战斗节点量不被挤没(保底数进参数档,见参数契约) | | 多终点深度互异 | 多终点(多 Boss 节点)必须落在互异的节点深度;同一节点深度出现两个终点即判产出无效——共深会让「走哪条路打谁」落空 | 节点深度的算法:自入口沿路走到该节点的最长路径步数;多入口时取距任一入口的最长路径。不用最短路径——合流节点或多入口图上取最短,会让某些出边指向深度不增甚至更浅的节点,破坏「连线只朝前进方向」的无环判据。 @@ -74,6 +74,8 @@ 每关一套参数档(L1/L2/L3),生成器只吃参数档、不认关卡号。生长曲线:层高、宽度、节点总数、路径长度逐关递增且增幅变大;决策点密度逐关递增;第一关即含岔口——第一关也要有选择。单链是分支密度取下限的合法退化形态,不作为三关参数档的取值。 +图规模无呈现侧上限:关卡画面为卷轴视口呈现,画布随图生长、屏为窗口(呈现规格归 [level-map](../../ux/level-map.md));规模由参数档与生长曲线约束,参数档给不出合法图即致命中止。 + ### 节点类型配比:类型分布怎么掷、内容归谁 配比是生成旋钮:战斗/奖励/恢复/商店各占多少由参数档定,生成器掷出分布落在图上成为节点类型;配比只管非终点节点,终点恒为 Boss、不进配比。节点类型在可见范围内对玩家公开(可见性规则归关卡节点地图)——看得见的类型才谈得上提前规划。 @@ -85,7 +87,7 @@ | 商店位 | 每个终点前一位恰一家商店——每名玩家一局必经恰一家店 | | 岔路取舍·下一跳 | 一个岔口分出的各条去路,下一节点类型互不相同——下一跳必在可见范围,是决策的可见锚(实现侧已兑现:候选集强制豁免类型可见性) | | 岔路取舍·支路构成 | 一个岔口分出的各条支路,整条支路的节点类型构成互不相同——每条支路至少有一个别的支路没有的类型(例:一路有恢复节点、一路有奖励节点) | -| 支路互异上限=出口数 3 | 商店与 Boss 每条支路必有,可供支路互斥的类型只剩战斗/奖励/恢复三类——一条链上的岔口最多切出 3 条互异支路,故出口个数取值域为 1–3(见生成参数旋钮表) | +| 支路互异上限=出口数 3 | 商店与 Boss 每条支路必有,可供支路互斥的类型只剩战斗/奖励/恢复三类——一条链上的岔口最多切出 3 条互异支路,故出口个数至多 3(见生成参数旋钮表) | 内容归各 owner:战斗节点打谁=敌人系统按深度带配池;奖励/恢复/商店的兑付语义=关卡节点地图与各 owner 文档。 @@ -100,27 +102,25 @@ | 协作 | 敌人系统 | 战斗节点遭遇按深度带配池,遭遇坐标=关卡序号+深度带;多终点各配 Boss 行 | | 协作 | 难度曲线与Boss | 图规模(节点数/战斗量)进它的投放节奏账;深度带配池的难度坡归它,本文零数值 | | 上游 | 数据配置 | 参数档数据的承载与统一读取,数值事实源=data/tables | -| 协作 | level-map | 呈现只读:图形态随参数变化,画布自适应;多终点各带 Boss 标记 | +| 协作 | level-map | 呈现只读:图形态随参数变化,画布随图生长(卷轴视口呈现,规格归 level-map);多终点各带 Boss 标记 | -## 调参表 +## 参数契约 -数值事实源=data/tables;本表只留取值域与设计意图。 +本表只留概念面——本系统有哪些参数、各自管什么;取值域与字段契约的单点=数据 schema 层(`game/data/schemas/` 的关卡节点图参数结构,域校验执法),现行值=`game/data/tables/level_gen_params.tres`,provisional 标注随 schema 注释。本文不存取值域。 -| 参数 | 取值域 | 设计意图 | 状态 | -|---|---|---|---| -| 层深 L1 | ≥6(步) | 第一关不再是零选择短链——够长才有岔口与取舍 | 已锁下限 | -| 层深 L2/L3 | >前一关且增幅变大 | 后期关显著更长,推进感随冒险加深 | provisional | -| 岔口去路数 | 2–3 | 每次取舍在 2–3 条里选:少了没选择,多了不过脑 | 已锁 | -| 岔口取三去路概率 | percent [0, 100] | 允许三去路的岔口中,实际长出第三条去路的比例——控制宽图出现频率 | provisional | -| 同深度节点宽度上限 | int [2, 6] | 同一深度最多并排几个节点;岔口生长到此即止,不再加宽 | provisional | -| 填充交替起始 | percent [0, 100] | 恢复/奖励节点交替填充时,先放恢复节点的概率(50 为对称) | provisional | -| 分支密度 | 待定值 | 一局遇到多少次取舍(目标量级=一局十几次,待设计验证) | provisional | -| 入口个数 | 1 起 | 多入口给「从哪进场」的第一层选择 | provisional | -| 出口个数 | L1 恒 1;L2/L3 1–3 | 多终点让「走哪条=打谁」成立;大岔口自第二关起 | 已锁范围 | -| 配比 | 四类占比合计 1,战斗保底优先 | 攻击性/兑付/恢复的节奏配比 | provisional | -| 战斗节点保底数 | ≥ 调参值 | 成长位不挤没战斗——战斗是本作核心量 | provisional | -| 商店数 | =出口数 | 每局决战前恰一次补给,成长保底是结构事实 | 已锁 | -| 图包络 | ≤ 屏预算(1280×800 下约 10 层×8 槽) | 超预算只许限参数档,禁改画布冻结公式 | 已锁 | +| 参数 | 设计意图(概念面) | +|---|---| +| 层深 | 图有多高(沿路步数);第一关不再是零选择短链,后期关显著更长,推进感随冒险加深 | +| 岔口去路数 | 每次取舍在少量去路里选:少了没选择,多了不过脑 | +| 岔口取三去路概率 | 允许三去路的岔口中,实际长出第三条去路的比例——控制宽图出现频率 | +| 同深度节点宽度上限 | 同一深度最多并排几个节点;岔口生长到此即止,不再加宽 | +| 填充交替起始 | 恢复/奖励节点交替填充时,先放恢复节点的比例 | +| 分支密度 | 一局遇到多少次取舍(目标量级待设计验证) | +| 入口个数 | 多入口给「从哪进场」的第一层选择 | +| 出口个数 | 多终点让「走哪条=打谁」成立;大岔口自第二关起 | +| 配比 | 攻击性/兑付/恢复的节奏配比,战斗保底优先 | +| 战斗节点保底数 | 成长位不挤没战斗——战斗是本作核心量 | +| 商店数 | 每局决战前恰一次补给,成长保底是结构事实 | ## 验收标准 diff --git a/design/gdd/ux/level-map.md b/design/gdd/ux/level-map.md index d0e89b0d..04dcfd14 100644 --- a/design/gdd/ux/level-map.md +++ b/design/gdd/ux/level-map.md @@ -1,14 +1,14 @@ # UX Spec: 关卡画面(选路枢纽,Level Map) -> **Status**: 定稿版(现行——三项设计提案已拍板:底栏状态展示 / 图上点击选路·候选按钮退役 / 放弃二次确认;形态为独立屏;视觉终稿已冻结) +> **Status**: 定稿版 v2.0(现行——四项设计拍板:底栏状态展示 / 图上点击选路·候选按钮退役 / 放弃二次确认 / 卷轴视口范式〔2026-11-05 用户拍板〕;形态为独立屏;视觉终稿已冻结——视口行为见布局决策 5) > **Author**: user + ZCode -> **Last Updated**: 2026-10-29 +> **Last Updated**: 2026-11-05 > **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)(订阅纪律、模态层级、可访问性基线) -> **生成图随动登记**:入口停点候选数=入口个数(1 或多,多入口并列呈现,首跳即选从哪个入口进场);节点数字=图内句柄 id(非节点深度、非数组序);生成图深度域 L3 上探至 0–13,超出画布冻结公式约 10 层的屏预算——等比缩放与滚动视口两案均未设计(见待办清单「超预算图策略升级路径」条),本 spec 冻结值暂不变。 +> **生成图随动登记**:入口停点候选数=入口个数(1 或多,多入口并列呈现,首跳即选从哪个入口进场);节点数字=图内句柄 id(非节点深度、非数组序);生成图深度域 L3 上探至 0–13——卷轴视口范式(布局决策 5)下画布随图生长、屏为窗口,深度不再受屏预算约束(2026-11-05 用户裁:滚动视口案落地、等比缩放案否决;原「超预算」挂账闭合)。 --- @@ -18,7 +18,7 @@ 一句话目的:**让「我在图上哪、下一步能去哪、去了会发生什么」一眼可读,选路即出发。** -- 节点图本体承载 P4(地牢下探隐喻):方块地牢观感的整层纵览,本层的形状与去路尽收眼底 +- 节点图本体承载 P4(地牢下探隐喻):方块地牢观感的整层纵览——当前节点与去路一眼在目,深处支路经卷轴视口拖拽/滚轮可达(布局决策 5) - 候选选路口承载 P1(推理的掌控感):下一步的去向明示(节点类型字面),零自动推进——每一步都是玩家亲手走出来的 - 底部状态栏承载规划原料:生命、属性与本关已选加成常读,支撑「低血先疗、缺攻先补」一类选路判断(2026-09-27 拍板:底栏 = 状态展示) @@ -61,12 +61,12 @@ ### Layout Zones -按 1280×800 基座(2026-09-12 定)。本屏为独立屏独占呈现:屏底(深底背景色 + 石纹底噪〔框材组冻结件,缺位纯色回退〕)铺满,内容居中三段。 +按 1280×800 基座(2026-09-12 定)。本屏为独立屏独占呈现:屏底(深底背景色 + 石纹底噪〔框材组冻结件,缺位纯色回退〕)铺满,内容三段;节点图区为卷轴视口(布局决策 5)——画布可超屏,屏为窗口。 | 区 | 位置与尺寸 | 内容 | |---|---|---| | **顶栏语境** | 居中横排,图区上方,高约 32px | 左:关卡名(关卡表 `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——路线缺陷根修后定值);通道折线**冻结 2/3/4px**(未点亮石灰 STONE/候选亮金 GOLD_LIT/悬停加粗);节点方块 52×36 内**节点图标 20px 烘焙 1:1**(♻ kenney 五键:战=弓/赏=桂冠/疗=篝火/王=王冠/商=钱袋,WARM 单色、当前金底转深墨——双色墨制)+ 编号(图内句柄 id)10px 右上角 | +| **节点图区** | 居中 | 卷轴视口承载整幅节点图自绘:节点方块 + 通道折线 + 节点态着色 + Boss 紫赤描边。画布随图自适应(**冻结公式不变**:宽 = 70+层深×122+44.5、高 = 52+槽位×58+25+24,下限 620×256),**可超屏**——屏为窗口,视口行为见布局决策 5;通道折线**冻结 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 @@ -75,7 +75,7 @@ |---|---|---|---|---| | 关卡名标签 | 文本 | 关卡表 `display_name` 行值(关卡表行读数) | 只读 | 新建(现行标题位升级) | | GP 常驻徽章 | 直角细线数据框 | GP 图标 + 数字(冒险钱包读数;刷新经钱包变动信号投影〔gain/buy/clear 三事件〕或写路径回执后重查) | 只读 | 新建(GP 去向拍板承载面) | -| 节点图画布 | 自绘 Control | 节点图标(五键 20px 烘焙,双色墨制)+ 编号(图内句柄 id)、通道折线、节点态着色、Boss 紫赤描边+深墨环(BOSS_PURPLE——紫赤本色) | 悬停预承诺 / 点击提交选路(唯一通道) | ✅ 已实装(视觉终稿已落码) | +| 节点图画布 | 自绘 Control(卷轴视口承载) | 节点图标(五键 20px 烘焙,双色墨制)+ 编号(图内句柄 id)、通道折线、节点态着色、Boss 紫赤描边+深墨环(BOSS_PURPLE——紫赤本色) | 悬停预承诺 / 点击提交选路(唯一通道)/ 拖拽·滚轮平移视口(布局决策 5) | ✅ 已实装(视觉终稿已落码;视口行为随卷轴范式批落地) | | 状态数据框组 | 直角细线数据框 ×3 | 生命(当前/上限 + 迷你血条)、属性(攻击 / 护甲 AC 有效值 + 加成角标)、本关加成(加算区增量列表,零加成隐藏) | 只读 | 新建(2026-09-27 拍板:底栏状态展示) | | 放弃冒险按钮 | 按钮(危险红族) | 「放弃冒险(同失败结算——已获大奖励保留)」;二次确认态已拍板(见布局决策 3) | 点击(首击转确认态、二击提交) | ✅ 已实装(可见性归组合根,仅冒险模式开) | | 标题行 | 文本 | 停点语境提示(见布局决策 1 三停点标题) | 只读 | ✅ 已实装(措辞已按布局决策 1 改稿) | @@ -94,24 +94,82 @@ **布局决策 4 —— 底部状态栏(2026-09-27 拍板)**:底栏作为状态展示——生命、属性、本关已选加成三项常读;顶栏保持关卡名 + GP 两件。单一展示面注记:与 [battle.md](battle.md) C 区「奇物列表(预留)」为不同屏的不同展示面——两屏循环口径各自独立(选路规划消费 vs 战斗内决策消费),不构成同屏重复。 +**布局决策 5 —— 卷轴视口范式(2026-11-05 用户拍板)**:生成图实测深度域 L3 0–13 超出画布屏预算(原挂账「超预算图策略升级路径」),用户裁滚动视口案落地、等比缩放案否决(像素纪律——非整数缩放碰 20px 图标 1:1 与折线 2/3/4px 冻结值)。行为四条: + +| 行为 | 规格 | +|---|---| +| 视口锚点 | 当前节点居中(屏中线 x=640±2);入口停点尚无当前节点,锚定入口节点组居中 | +| 视口跟随 | 停点切换与兑付确认回图时,视口平滑滚动至新当前节点(时长 provisional 0.3s,单段缓动);减动效开=跳终态(瞬切),同 UiKit.motion 通道 | +| 手动平移 | 拖拽画布+滚轮横滚;平移范围 clamp 在画布包络内(不出露屏底空档);拖拽与图上点击以拖动距离阈值区分(阈值 provisional,实现期定值),拖拽不触发选路提交 | +| 指引 | 不做缩放、不做缩略图(等比缩放案已否决);视口边缘 70px 渐隐带+图区底部居中平移提示 chip(240×30、圆角 6、深底石灰描边、文案 14px——色值随 art-bible 冻结色板,provisional)作「视口外还有内容」的暗示;其余暗示形态(如到达边缘回弹)后置,试玩反馈再定 | + +视口为纯呈现态:平移位置零核心写、不进存档(重进本屏按锚点规则重新定位)。 + +**视口效果图**(2026-11-05 用户人审通过,内嵌备查;节点类型字与色值为占位示意,终稿以在库 kenney 五键图标与 art-bible §4.1 冻结色板为准): + + + 卷轴视口效果图——第三关岔路停点 + 当前节点居中锚定,画布 1700px 超出 1280px 屏,两侧渐隐与平移提示 chip;深度 0 与 12–13(含 Boss)拖拽滚轮可达。 + + + + + + + 第三层 · 灰矮人矿城 + ◈ 128 + 选择下一节点 + + + + + + + 战 + 战 + 疗 + 战 + 商 + 战 + 赏 + 战 + 战 + 疗 + 战 + 商 + 战 + + + + ◄ 拖拽画布 / 滚轮平移 ► + + + 生命 14/20 + 攻击 6 ⁺2 + AC 12 ⁺1 + 本关加成: 攻⁺2 · 上限⁺5 · AC⁺1 + 放弃冒险 + + +像素级视觉判据(效果图随附,写卡与实现基线对照用):①视口锚点=当前节点方块中心居屏中线 x=640±2;②画布超窗不缩放——屏缘裁切、图标 20px 1:1 与折线 2/3/4px 原值呈现,屏缘两侧各 70px 渐隐带;③平移提示 chip 图区底部居中 240×30(圆角 6、文案 14px);④拖拽/滚轮后深度 0 首列与深度 13 末列(含 Boss 紫赤描边)均可达屏内。 + ### ASCII Wireframe ``` 1280 × 800 ──────────────────────────────────────────────────────────────────── │ (独立屏底——战斗屏整体隐藏,零透出) │ -│ 第二层 · 幽暗地域 [◈ 128](GP 常驻徽章) │ -│ │ -│ [战0]──┐ │ -│ ├──[战3]──┬──[赏6]──┐ │ -│ [战1]──┤ │ ├──[王8] ←悬停候选=亮金加粗+指针 │ -│ [战2]──┴──[疗4]──┴──[战7]──┘ (战=已过·暗金 疗=当前·金 │ -│ 亮金描边=候选 王=紫赤描边·Boss) │ +│ 第三层 · 灰矮人矿城 [◈ 128](GP 常驻徽章) │ +│ 选择下一节点 │ +│ ◄渐隐│ …[战0]─[战3]─[疗6]─●[战9]─◇[赏10]─[疗13]─[战16]─[商19]…│渐隐► │ +│ │ 画布 1700px 超屏(卷轴视口):当前节点●居中锚定; │ +│ │ 深度 0 与 12–13(含 Boss 紫)视口外,拖拽/滚轮可达 ◇=候选亮金描边 │ │ +│ [◄ 拖拽画布 / 滚轮平移 ►] │ │ │ │ HP ▓▓▓░ 14/20 │ 攻击 6 ⁺2 │ 护甲 AC 12 ⁺1 │ 本关加成: 攻⁺2·上限⁺5·AC⁺1 放弃冒险 │ └──────────────────────────────────────────────────────────────────────────────┘ ``` -> 图为岔路停点示意(第二关行集):已过节点暗金(GOLD_DONE #68562C)、当前节点金、候选节点亮金描边、Boss 紫赤描边+外缘深墨细环(灰度冗余通道)。终稿 = 节点图标组(♻ kenney 五键已接线,样张 v1 冻结)+ 通道折线 2/3/4px(已落码)。 +> 图为岔路停点示意(第三关行集,卷轴视口):已过节点暗金(GOLD_DONE #68562C)、当前节点金(居中锚定)、候选节点亮金描边、Boss 紫赤描边+外缘深墨细环(灰度冗余通道,在视口外深处);屏缘 70px 渐隐带 + 平移提示 chip。终稿 = 节点图标组(♻ kenney 五键已接线,样张 v1 冻结)+ 通道折线 2/3/4px(已落码)。像素级效果参见布局决策 5 内嵌效果图。 --- @@ -123,9 +181,11 @@ | **单链停点** | 兑付确认后、恰 1 个下一跳 | 标题「继续前进」;单候选节点图上点击提交(候选按钮已退役——图上点击为唯一通道) | | **岔路停点** | 兑付确认后、≥2 个下一跳 | 标题「选择下一节点」;候选节点图上点击提交(候选按钮已退役——图上点击为唯一通道);亮金通道与候选描边逐一分叉可辨 | | **悬停预承诺** | 悬停候选节点 | 该节点亮金描边加粗 + 所属通道增亮 + 光标切指针态;移出即回落(仅预承诺,点击才提交) | +| **视口跟随** | 停点切换或兑付确认回图(当前节点变化) | 视口平滑滚动至新当前节点居中(provisional 0.3s;减动效跳终态)——布局决策 5 | +| **手动平移** | 拖拽画布或滚轮横滚 | 视口随动、clamp 画布包络;拖拽不触发选路(拖动距离阈值区分,provisional);平移位置零核心写、不进存档 | | **放弃确认态** | 首击放弃按钮 | 文案转确认语 + 危险红边框脉冲约 3 秒;超时或移出回落;二击提交放弃请求 | | **换层进入** | 上一关结算确认 → 新关开始 | 本屏以新关卡数据淡入;屏底世界侧随层进换挡(**换层色板渐变挂点**——§2.7 切片档:只动色相/饱和、明度带归一,level_index→tint 表候选值 = art-bible §6.3 三关方向,终值随色板样张校准) | -| **减动效** | 设置开关(设置面承载;TunePanel 已退役) | 淡入、描边脉冲等全部 tween 时长减半或跳终态(UiKit.motion 单点包装,同 battle.md 通道) | +| **减动效** | 设置开关(设置面承载;TunePanel 已退役) | 淡入、描边脉冲等全部 tween 时长减半或跳终态;视口跟随平滑滚动跳终态(瞬切)(UiKit.motion 单点包装,同 battle.md 通道) | **无拒绝子态**:候选提交恒合法(候选集即合法集),本屏无资源面/棋盘面拒绝路径;战斗中放弃由组合根可见性封死(按钮只在选路停点可见——接口契约:战斗中放弃一律拒绝)。 @@ -136,6 +196,7 @@ | 组件 | 动作 | 输入 | 即时反馈 | 结果(经组合根) | |---|---|---|---|---| | 候选节点(图上,唯一通道) | 提交选路 | 左键 | 悬停预承诺(描边加粗 + 通道增亮 + 指针)→ 点击本屏关闭 | 选路提交 → 关卡推进方受理——到达即兑付,无进入前确认步 | +| 节点图画布(视口) | 平移视口 | 左键拖拽 / 滚轮横滚 | 视口随动、clamp 画布边界;拖拽超阈值不触发选路 | 纯呈现态——零核心写、不进存档 | | 放弃冒险按钮 | 终结整局冒险 | 左键(二击提交——首击转确认态,2026-09-27 布局决策 3) | 危险红族反馈 | 放弃请求 → 组合根走冒险落幕(同失败结算——已获大奖励保留) | **零自动推进纪律**(关卡节点地图 定稿):本屏是唯一的行进发起口——不选就停在图上;没有任何定时、默认或顺延的自动前进路径。兑付后确认挂各兑付面(战斗总结结算〔settlement-summary.md〕/ 节点覆盖层 / 商店覆盖层离开动作),本屏不重复确认步。 @@ -163,6 +224,7 @@ | 时刻 | 过渡 | 依据 | |---|---|---| | 打开(进图 / 兑付确认后回图) | 独立屏淡入(约 200ms,同装板淡入档;alpha 淡入非明度变化——§2) | 屏级切换;战斗屏整体隐藏 | +| 视口跟随(停点切换/回图) | 平滑滚动至新当前节点居中(provisional 300ms 单段缓动;减动效跳终态) | 布局决策 5 | | 选路提交 | 本屏关闭,直达所选节点兑付流程 | 到达即兑付(关卡节点地图) | | 放弃确认态(拍板落定) | 危险红边框脉冲约 3 秒(单段呼吸,非频闪) | pattern 7;闪烁基线(≤3 次/秒)内 | | 减动效 | 上述全部时长减半或跳终态 | HUD框架 可访问性基线 | @@ -195,7 +257,7 @@ **布局与可读** - [ ] 关卡开始即出图(停点前移语义),入口节点不自动进入;每次兑付确认后回到本屏 -- [ ] 1280×800 与 16:9 全屏下顶栏/图区/动作栏无遮挡、无重叠、无内容裁切;节点图完整可见(含 Boss) +- [ ] 1280×800 与 16:9 全屏下顶栏/图区/动作栏无遮挡、无重叠;节点图经卷轴视口完整可达(拖拽/滚轮后首列与末列含 Boss 均可入屏)——画布不超屏的浅图仍整幅居中无裁切 - [ ] 节点四态(已过/当前/候选/未来)+ Boss 描边在灰度截图下可分类;色值对 art-bible §4.1 色板在案 - [ ] 顶栏关卡名与 GP 常驻徽章可见、读数与关卡推进方现值一致(GP 经 gain/buy/clear 事件刷新) @@ -204,6 +266,9 @@ - [ ] 三停点标题按布局决策 1 呈现,入口停点不出现「继续前进(战斗房)」措辞 - [ ] 候选提交经组合根唯一写路径(选路提交 → 关卡推进方受理),到达即兑付;零自动推进(无任何不选而行的路径) - [ ] 图上点击为唯一选路提交通道(候选按钮退役,2026-09-27 拍板);悬停预承诺反馈可见 +- [ ] 视口跟随:停点切换与兑付回图后当前节点居中(屏中线 x=640±2);平滑滚动呈现,减动效开时瞬切 +- [ ] 手动平移:拖拽与滚轮均移动视口且 clamp 画布边界;拖拽不触发选路提交;平移位置零核心写(不进存档) +- [ ] 视口指引:屏缘 70px 渐隐带与平移提示 chip 呈现(像素级判据①–④见布局决策 5 效果图) - [ ] 底部状态栏三组读数可见且与关卡推进方现值一致(生命当前/上限、攻击/AC 有效值、本关加成增量——零加成隐藏);兑付确认返回后读数刷新 - [ ] 放弃按钮仅冒险模式可见(调试两层不可达);单击不提交、确认态超时回落、二击才终结(已拍板) - [ ] 放弃后走冒险落幕(同失败结算),已获大奖励保留语义可见 @@ -222,6 +287,8 @@ **已完成(2026-09-28)**:④ **视觉终稿**——节点图标形制/通道质感/画布公式/底栏数据框样式/屏底以关卡画面样张 v1 冻结落码。 +**已完成(2026-11-05 用户拍板)**:⑤ **卷轴视口范式**——跟随+拖拽+滚轮、平滑滚动(减动效瞬切)、当前节点居中锚;「图包络 ≤ 屏预算」约束随卷轴范式退役(画布随图生长,规模归参数档——关卡节点图生成 v1.5 参数契约节);等比缩放案否决(像素纪律)。效果图人审通过并内嵌布局决策 5。 + --- ## 上游义务对照表 diff --git a/待办清单.md b/待办清单.md index 2a9030ec..7da31879 100644 --- a/待办清单.md +++ b/待办清单.md @@ -22,15 +22,12 @@ #### 超预算图策略升级路径——等比缩放与滚动视口两案待裁(2026-10-24 登记,来源=批次移交) -**实况**:图源按「参数限图」交付,图包络约 10 层×8 槽即当前冻结画布的屏预算上限。若后续定值批需要更大的完整可见图,两条升级路径都要动冻结件,均未设计:①等比缩放——动「节点图标 20px 烘焙 1:1」与「通道折线冻结 2/3/4px」两条冻结值;②滚动视口——新增视口交互范式。生成图实测深度域 L3 达 0–13,已超出该上限(level-map 已登记随动缺口,未裁方案前禁改画布冻结件)。 -- 相关文档 design/gdd/systems/冒险循环/关卡节点图生成.md v1.3(调参表「图包络」行) -- 相关文档 design/gdd/ux/level-map.md(画布冻结公式) - -**缺口**:两案需用户裁决后再走设计讨论;未裁前禁改画布冻结件。 +**实况**:2026-11-05 用户裁滚动视口案落地(等比缩放案否决——像素纪律):关卡画面卷轴视口,跟随+拖拽+滚轮、平滑滚动(减动效瞬切)、当前节点居中锚;「图包络 ≤ 屏预算」约束退役,画布随图生长、规模归参数档。设计闭合凭据:design/gdd/ux/level-map.md v2.0(布局决策 5+视口效果图内嵌,2026-11-05 人审通过);design/gdd/systems/冒险循环/关卡节点图生成.md v1.5(参数契约节+图规模无呈现侧上限句)。 +- 相关文档:关卡节点图参数取值域已归数据 schema 层;schema 头注「域并单点=调参表」指针反转随实现批顺带(卡片随动项)。 **改动面**:文档 -**状态**:待文档设计 +**状态**:文档设计已闭合+待写卡 #### UI 贴图重构批——元进度件仍是程序化占位(2026-10-13 登记,来源=审计发现)