docs(gdd): 关卡节点地图定稿批收编——分支节点图 v1.0(形态重开+四类节点封闭+全节点确认选路)+node_depth 升级节点编号+节点奖励=功能道具正式渠道(零代码;02 状态行/05 移除路径分支/06 三悬案收口+两条新增/registry 七处回填+OQ6 兑现)

This commit is contained in:
DKChan committed 2026-09-17 02:20:40 +08:00
1 parent ba08ba177b
commit d7d2200114
5 files changed
+147 -100

No files matched your search

+2 -1
View File
@@ -40,7 +40,7 @@
| 文件 | 一句话概要 | 状态 | | 文件 | 一句话概要 | 状态 |
|---|---|---| |---|---|---|
| `关卡节点地图.md` | 单关内的节点链与推进 | 范围草案·待设计 | | `关卡节点地图.md` | 单关内的节点图选路与推进 | 已定稿 |
| `冒险结构.md` | 整局冒险的关卡序列、失败与大奖励 | 已定稿·自旧体系迁移 | | `冒险结构.md` | 整局冒险的关卡序列、失败与大奖励 | 已定稿·自旧体系迁移 |
| `难度曲线与Boss.md` | 难度曲线、期望值带与 Boss 设计 | 已定稿·自旧体系迁移 | | `难度曲线与Boss.md` | 难度曲线、期望值带与 Boss 设计 | 已定稿·自旧体系迁移 |
| `元进度.md` | 跨局成长(旧体系未单独成文) | 范围草案·待设计 | | `元进度.md` | 跨局成长(旧体系未单独成文) | 范围草案·待设计 |
@@ -99,3 +99,4 @@
| v0.4 | 2026-09-16 | 格面资源批 UI 欠账收口(2026-09-15 格面资源批删除可选类道具后,本索引与 UX 文档的随批修订):`地图战斗资源.md` 概要行由"奖励产出、道具库存与使用窗口"(格面资源批前旧描述)改为与其 GDD 头部一致的一句话口径"格面资源的产出、极性字典与清图奖励封装";同批收口 battle.md / HUD框架.md 中随可选类道具删除而失义的道具窗口条款(文档本体修订见各文版本历史) | | v0.4 | 2026-09-16 | 格面资源批 UI 欠账收口(2026-09-15 格面资源批删除可选类道具后,本索引与 UX 文档的随批修订):`地图战斗资源.md` 概要行由"奖励产出、道具库存与使用窗口"(格面资源批前旧描述)改为与其 GDD 头部一致的一句话口径"格面资源的产出、极性字典与清图奖励封装";同批收口 battle.md / HUD框架.md 中随可选类道具删除而失义的道具窗口条款(文档本体修订见各文版本历史) |
| v0.5 | 2026-09-16 | 待拍板收编批:新建顶层文档 `06-待拍板清单.md`,把 systems/ 各系统文档「待拍板」章节的条目与三份文档的散落未定项统一收编;各系统文档「待拍板」节改为指路存根,其后新增条目直接登记清单 | | v0.5 | 2026-09-16 | 待拍板收编批:新建顶层文档 `06-待拍板清单.md`,把 systems/ 各系统文档「待拍板」章节的条目与三份文档的散落未定项统一收编;各系统文档「待拍板」节改为指路存根,其后新增条目直接登记清单 |
| v0.6 | 2026-09-16 | 06 清单改版(用户拍板):「待拍板」术语全仓改「待办」,顶层文档更名 `06-待办清单.md`;本表 06 行同步,各系统文档存根节随批由「待拍板」改名「待办」(各文版本历史不另记存根改名) | | v0.6 | 2026-09-16 | 06 清单改版(用户拍板):「待拍板」术语全仓改「待办」,顶层文档更名 `06-待办清单.md`;本表 06 行同步,各系统文档存根节随批由「待拍板」改名「待办」(各文版本历史不另记存根改名) |
| v0.7 | 2026-09-17 | 关卡节点地图定稿批:`关卡节点地图.md` 状态行改**已定稿**(v1.0——分支节点图形态重开〔用户拍板重开 05 清单路径分支后置裁定〕、四类节点封闭枚举、全节点确认选路、遭遇构成编排面三条、节点奖励=功能道具正式渠道;概要行"节点链"改"节点图";配套 05 清单移除路径分支条目、06 清单三悬案收口 + 两条新增、registry level_table 与术语回填) |
-1
View File
@@ -20,7 +20,6 @@
- **遗物 / 构筑协同**:同批裁下。先做协同设计再谈加密度,没有协同的纯堆量只会稀释每件道具的存在感。 - **遗物 / 构筑协同**:同批裁下。先做协同设计再谈加密度,没有协同的纯堆量只会稀释每件道具的存在感。
- **战后回复**:同批裁下。要做得绑定敌方攻击力下调,单独加回复会直接破坏现有数值预期。 - **战后回复**:同批裁下。要做得绑定敌方攻击力下调,单独加回复会直接破坏现有数值预期。
- **元进度(钥石解锁 / 跨局成长)**:排 Alpha。先把单局循环做扎实,跨局成长是之后的事。 - **元进度(钥石解锁 / 跨局成长)**:排 Alpha。先把单局循环做扎实,跨局成长是之后的事。
- **路径分支地图**:已拍板后置,关卡内先用线性节点链。分支选择是 Roguelike 的加分项,但当前体量撑不起有意义的岔路。
- **反雪球机制**:MVP 不做。等 Alpha 拿到真实测试数据,再决定要不要治滚雪球、怎么治。 - **反雪球机制**:MVP 不做。等 Alpha 拿到真实测试数据,再决定要不要治滚雪球、怎么治。
- **正式音频、教学引导、战斗动画演出、设置与本地化**:MVP 内的打磨项,一律排后。先验证核心循环,再谈好听好看。 - **正式音频、教学引导、战斗动画演出、设置与本地化**:MVP 内的打磨项,一律排后。先验证核心循环,再谈好听好看。
- **连刷 / 换图资金跨战斗携带**:现行规则是每场战斗清零,防滚雪球。是否解禁连刷策略,等实测数据说话。 - **连刷 / 换图资金跨战斗携带**:现行规则是每场战斗清零,防滚雪球。是否解禁连刷策略,等实测数据说话。
+19 -3
View File
@@ -200,7 +200,7 @@
**归属**:随[关卡节点地图](systems/冒险循环/关卡节点地图.md)定稿改键一并裁决 **归属**:随[关卡节点地图](systems/冒险循环/关卡节点地图.md)定稿改键一并裁决
**状态**:待办 **状态**:部分收口(2026-09-17)——同层多遭遇问题已由关卡节点地图 v1.0 的**节点编号升级**消解(`node_depth` 语义 = 关卡内唯一节点编号,同层不同节点各查各行,键结构零改动);**不设精英 / Boss 编码位**(Boss = 最大编号节点,精英 P2 内容承载)。剩余面继续待办并改归属:同场多敌种(同一编号行集多行)的行集校验放开 + 混编遭遇伏击上限取值口径——归属**敌人表行集多行批(战斗侧,排技能池实施批落地后)**
#### 敌方攻击区间的正式侧落文 #### 敌方攻击区间的正式侧落文
@@ -316,7 +316,7 @@
**归属**:[关卡节点地图](systems/冒险循环/关卡节点地图.md)定稿批 **归属**:[关卡节点地图](systems/冒险循环/关卡节点地图.md)定稿批
**状态**:待办 **状态**:已解决(2026-09-17)——渠道拍板 = **节点奖励**([关卡节点地图](systems/冒险循环/关卡节点地图.md) v1.0):奖励节点兑付 = 获得一件功能道具并进入持有域;道具内容、持有域归属与使用窗口语义归[魔法道具](systems/排雷循环/魔法道具.md)内容重定批(排垂直切片收尾后);切片期道具内容整批后置,奖励节点零兑付直通为合法空态(本系统结构位衔接维持)
#### 资源预读与推理的边界 #### 资源预读与推理的边界
@@ -362,7 +362,7 @@
**归属**:关卡节点地图定稿批(与键结构改键一并裁决) **归属**:关卡节点地图定稿批(与键结构改键一并裁决)
**状态**:待办 **状态**:已解决(2026-09-17)——[关卡节点地图](systems/冒险循环/关卡节点地图.md) v1.0 定稿:`node_depth` 字段语义升级为关卡内唯一**节点编号**(表键与字段名零改动;单链特例下编号 = 旧战斗深度,切片零漂移),同层多遭遇由不同编号各查各行天然消解;**不设精英 / Boss 编码位**——Boss = 最大编号节点(图唯一终点),精英 P2 以内容方式承载(某编号节点配强敌行集);棋盘生成第三轴登记约定的 OQ6 强制重审同步兑现(键维持二元、Boss = 最大编号行、elite_/boss_ 命名空间预留维持)。同场多敌种(同一编号行集多行)与混编伏击上限取值拆归战斗侧——见敌人系统「同深度第二敌种与精英 / Boss 编码位」状态更新
#### 多敌数量的消费面 #### 多敌数量的消费面
@@ -370,6 +370,22 @@
**归属**:关卡节点地图定稿批 **归属**:关卡节点地图定稿批
**状态**:已解决(2026-09-17)——复验通过,零冲突收口:关卡层零消费数量(不预掷、不传递、不可见),数量区间掷定与消费全在战斗结算开战实例化期(encounter 封闭流);教学位不豁免口径(难度曲线与Boss v0.2 拍板)维持,并转登于[关卡节点地图](systems/冒险循环/关卡节点地图.md) v1.0 验收标准
#### 切片行进代码与定稿的接口漂移
**现状**:切片行进器(LevelRunner)为单关 provisional 实现,与关卡节点地图 v1.0 定稿存在接口漂移,逐条登记:① `start_level` 载荷含种子并自开随机流(`rng.new_adventure`)——定稿:种子注入与随机流域归冒险结构,开始关卡载荷 = 关卡序号 + 当前生命 + 生效上限;② 主角生命在行进器本地持有——定稿:生命账本归冒险结构;③ 恢复兑付为行进器自扣(`_apply_rest`)——定稿:发治疗封顶回报、由冒险结构执行回血封顶;④ 战斗胜利自动推进(`_enter_next_node` 直调)——定稿:全节点确认 + 兑付后确认、零自动推进;⑤ `continue_after_node` 仅对奖励/恢复生效——定稿:泛化为全节点行进确认与选路动作;⑥ 收束点未编排"先调战斗结算关卡收束清库"步——定稿:先清库后宣布为强制次序;⑦ 战斗败北直接终关卡——定稿:每战结果上报冒险结构,倒下的失败结算归冒险结构;⑧ 节点图结构(节点 + 连线)与图合法性校验未实现——单链数组为特例可先行,图版随内容批。
**归属**:切片图版实现批(随第二关内容批 / 关卡节点地图 P1「分支节点图内容与实现批」)
**状态**:待办
#### 图版措辞对齐(分支节点图定稿的跨文档残留)
**现状**:关卡节点地图 v1.0 定稿为分支节点图(2026-09-17 重开 05 清单「路径分支地图后置」裁定),以下现行文档残留旧口径措辞——单链先行期不失义,分支图内容批落地前随各自批次对齐:[冒险结构](systems/冒险循环/冒险结构.md)关卡序列节"路径分支地图已明确后置"一句;[难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md)"关内坡度(节点深度)"与 D0–D4 行值措辞(该文档在飞,随技能池实施批后的文档批);[HUD 框架](systems/表现与支撑/HUD框架.md) A 区"节点链步进"与上游表"节点链"读数;[数据配置](systems/表现与支撑/数据配置.md)与 [battle.md](../ux/battle.md) 的"节点链"字样。
**归属**:各文档下一批修订随批对齐(清单单点登记于此)
**状态**:待办 **状态**:待办
### 冒险结构 ### 冒险结构
@@ -1,73 +1,112 @@
# 关卡节点地图 # 关卡节点地图
> 一句话:单关内的节点链与推进 > 一句话:单关内的节点图选路与推进
> 状态:范围草案(待设计) > 状态:已定稿
> 旧版参考:../../../archive/gdd-2026-09-14/systems-index.md(旧体系未单独成文,散见于归档索引) > 旧版参考:../../../archive/gdd-2026-09-14/systems-index.md(旧体系未单独成文,散见于归档索引)
## 设计目的 ## 设计目的
一关不是一场战斗,而是若干**节点**串成的一条链——节点就是关卡内移动的步进单位,画在本系统的地图上就是一个格。玩家从链首出发,打几场仗、开一次奖励、歇一口气,最后走到关底 Boss。关卡节点地图管的就是这条链上的"走":逐节点推进,该开战的开战、该发奖的发奖、该回血的发恢复请求,Boss 分出胜负后把这一关的结局交回给冒险结构。它是冒险的骨架(序列、大奖励、重开,归[冒险结构](冒险结构.md))与战斗的兑现(结算与敌人,归战斗循环)之间的行进层。 一关不是一场战斗,而是若干**节点**(本文含义:关卡内移动的步进单位,画在图上就是一个格)连成的一张**节点图**。玩家从一个入口出发,在每个路口看着几条路选一条走——这条路上有要打的仗、有开奖励的房间、有能歇脚的篝火——最后所有路线汇到关底 Boss。关卡节点地图管的就是这张图上的"走":怎么选路、走到每种节点上发生什么、Boss 分出胜负后怎么把这一关的结局交回去。
本文是范围草案:旧体系没有为这个系统单独成文,只在归档索引里留下范围与形态候选。本文先收拢范围边界与已知约束,不设计任何新机制。 用循环的层次说:冒险是外层骨架,关卡是**中循环**,战斗是**小循环**。本文管中循环——图怎么编排、怎么走、每类节点到达时触发什么;一场战斗内部发生什么全部归小循环(战斗结算与敌人系统),本文把控制流移交给它之后就不再看里面。它是[冒险结构](冒险结构.md)(序列、大奖励、重开)与战斗循环(结算与敌人)之间的行进层。
## 系统范围 ## 系统范围
边界这样划:链上"有哪些节点"归冒险结构——关卡序列与链模板是它管的关卡表内容;本系统管"在这条链上怎么走、走到每一步发生什么"。战斗内部发生什么归战斗结算与敌人系统,奖励给什么归地图战斗资源。本系统是行进与触发的编排层,自己不生产任何数值。 边界这样划:图上**有哪些节点**(具体摆什么、摆几个)是关卡表的内容,归冒险结构;本文管图**怎么走、走到每步发生什么**,以及一张关卡表行集要满足什么结构规则才算合法的图。战斗内部的一切(敌人怎么配、几只、什么技能池、伏击怎么叠)归战斗循环文档;本文只负责把"第几关、哪个节点"递过去。
负责: 负责:
| 负责 | 说明 | | 负责 | 说明 |
|---|---| |---|---|
| 节点链行进 | 从链首逐节点推进到关底 Boss;现行口径是线性节点链(不走岔路) | | 节点图结构规则 | 什么算一张合法的关卡节点图(唯一编号、唯一入口、唯一终点、不可回头)——结构校验的规则面 |
| 节点兑付触发 | 行进到奖励节点触发节点奖励入库;行进到恢复节点向冒险结构发恢复请求 | | 选路与行进 | 玩家亲手选路前进;兑付后确认、零自动推进(交互形态定稿) |
| 遭遇构成 | 何时开战、战斗节点的坐标与数量怎么定(敌人系统的"不负责"表已登记归本文) | | 节点兑付触发 | 行进到各类型节点时触发对应兑付:战斗移交、奖励入库、恢复请求 |
| 战斗发起组装 | 行进至战斗或 Boss 节点时组装入参,调战斗结算开战 | | 战斗发起组装 | 组装定位信息(关卡序号 + 节点编号),移交战斗结算开战 |
| 关卡收束点 | Boss 战胜利或英雄死亡时定局:先调战斗结算的关卡收束清空库存,再向冒险结构宣布关卡结束 | | 关卡收束点 | Boss 战胜利或英雄死亡时定局:先调战斗结算的关卡收束清空库存,再向冒险结构宣布关卡结束 |
不负责: 不负责:
| 不负责 | 归谁 | | 不负责 | 归谁 |
|---|---| |---|---|
| 关卡序列与链上有哪些节点(链模板、关数) | [冒险结构](冒险结构.md) | | 关卡序列与图上摆哪些节点(行集内容、关数) | [冒险结构](冒险结构.md) |
| 关卡大奖励、跨关血量账本、失败重开 | [冒险结构](冒险结构.md) | | 关卡大奖励、跨战斗生命账本、失败重开 | [冒险结构](冒险结构.md) |
| 节点奖励与格面资源的内容语义 | [地图战斗资源](../战斗循环/地图战斗资源.md) | | 战斗内部的一切:敌人配置、数量、技能池、伏击 | [敌人系统](../战斗循环/敌人系统.md)与[战斗结算](../战斗循环/战斗结算.md) |
| 战斗内的结算编排、胜负判定、伤害合成 | [战斗结算](../战斗循环/战斗结算.md) | | 同场多敌种(同一节点配多种敌人)的表结构与取值口径 | 敌人系统(战斗侧改键批) |
| 敌人表数据、行为环、开战时按坐标生成单位 | [敌人系统](../战斗循环/敌人系统.md) | | 节点奖励的道具内容、持有与使用语义 | [魔法道具](../排雷循环/魔法道具.md)(内容重定批) |
| 敌我数值曲线与遭遇投放节奏 | [难度曲线与Boss](难度曲线与Boss.md) | | 敌我数值曲线与遭遇投放节奏 | [难度曲线与Boss](难度曲线与Boss.md) |
| 节点链行进的画面呈现 | [HUD 框架](../表现与支撑/HUD框架.md) | | 节点图的画面呈现、方块地牢观感 | [HUD 框架](../表现与支撑/HUD框架.md) |
## 在核心循环中的位置 ## 在核心循环中的位置
``` ```
冒险结构 ──开始关卡──▶ 关卡节点地图:节点链逐节点推进(战斗 / 奖励 / 恢复 → 关底 Boss)──关卡结束──▶ 冒险结构 冒险结构 ──开始关卡──▶ 关卡节点地图:节点图选路推进(战斗 / 奖励 / 恢复 → 关底 Boss)──关卡结束──▶ 冒险结构
``` ```
核心循环里"关卡:节点链逐节点推进"这一段就是本系统在跑:它从冒险结构接过一关,把玩家沿链送到关底 Boss,再把结局交回去。链上每场战斗都由本系统发起;战斗内部的事(轮末结算、敌人生成)不归它管。 [核心循环](../../01-核心循环.md)里"关卡:节点链逐节点推进"这一段就是本系统在跑:它从冒险结构接过一关,把玩家沿图送到关底 Boss,再把结局交回去。图上每场战斗都由本系统发起移交;战斗内部的事不归它管。
## 核心规则(已确证的范围边界与已知约束) ## 核心规则
本系统尚未设计,本节只收现行材料能确证的边界与约束;其余问题见文末「待设计问题清单」。 ### 关卡的形状:分支节点图与四类节点
### 关卡内先走线性节点链 一关内部是一张**有方向的节点图**:节点之间用连线(本文含义:节点之间允许前进的通道)连接,玩家沿连线从一个节点走到下一个节点。图有三条结构铁律:连线只朝前进方向(没有回头路,整张图无环);图有一个唯一的入口节点;**关底 Boss 恒为全图唯一的终点**——所有路线最终都汇到它,打赢它这一关就通了。违反任何一条的行集是配置违约,加载期拦截。
一关内部现在就是一条不岔路的链:路径分支地图已拍板后置(见[不做清单](../../05-不做清单.md)),关卡内先用线性节点链——玩家沿链逐节点前进,没有岔路可选。这是本文最重要的范围边界:任何分支、选路机制都不在现行范围内。 图上只有四种节点,封闭枚举,扩类一律走文档修订:
现行链上登记了四种节点类型(类型机制归本文展开,当前只有数据面事实): | 节点类型 | 机制承诺 |
| 节点类型 | 现行事实 |
|---|---| |---|---|
| 战斗 | 携带深度标号(它是链上第几场战斗);开战时与关卡序号一起构成遭遇坐标 | | 战斗 | 携带节点编号;行进至此开战(兑付见下节);胜利后回到选路 |
| Boss | 恒为链末节点;打赢即一关通关 | | Boss | 恒为图终点;行进至此开 Boss 战;胜利即关卡收束点 |
| 奖励 | 不占深度;行进到此处触发节点奖励 | | 奖励 | 行进至此触发节点奖励(兑付见下节);反馈呈现后回到选路 |
| 恢复 | 不占深度;行进到此处发恢复请求 | | 恢复 | 行进至此向冒险结构发治疗封顶回报;反馈呈现后回到选路 |
术语登记已把节点类型分类学与分支机制的展开权交给本文(见 [registry 术语条目](../../../registry/entities.yaml))——展开本身就是本文定稿要做的设计,当前不预支任何结论。 每个节点在关卡内领一个**节点编号**(本文含义:关卡内不重复的序号,用来当战斗的定位地址;数据键沿用切片字段 `node_depth`)。Boss 的编号恒为全图最大——"最深处的房间是关底"这条直感由此保留。单链特例:一张每步只有一条连线的图就是一条链,此时节点编号等于它前面走过的战斗场数。第一关行集就是单链特例,切片代码零改动运行;分支图行集随第二关内容批落地(见 P1)。
### 四件接口与收束点是本文的强制输入 呈现侧口径(2026-09-17 用户拍板):节点图的画面表达走**方块地牢观感**——节点画成地牢房间的方块、连线画成通道——但逻辑拓扑就是本文的节点图,不产生任何额外选路或探索语义;视觉规格归 [HUD 框架](../表现与支撑/HUD框架.md)。
本系统与冒险结构之间已登记四件接口——开始关卡、战斗结果上报、治疗封顶回报、关卡结束。它们是本文定稿时的强制输入,语义权威在[冒险结构](冒险结构.md),本文不复述其内部细节。 ### 行进与选路:兑付后确认,选路就是行进
关卡收束点(一关就此定局的时点:Boss 战胜利即通关,英雄死亡即失败)落在本文。收束点的动作次序是现行登记的编排义务: **结论**:关卡里没有一次自动前进——每一步都是玩家亲手走出来的。
行进的完整循环如下:
```
到达节点 → 节点兑付(开战 / 发奖 / 回血)→ 兑付反馈呈现 → 玩家确认
→ 看当前节点的连线指向的下一批节点(岔路选其一;只有一条路就是"继续")
→ 到达下一节点……直到 Boss 分出胜负
```
两条纪律:
| 纪律 | 内容 |
|---|---|
| 兑付后确认 | 到达节点立即兑付,不设"进入前确认"步;兑付反馈呈现完,玩家确认才继续。战斗节点的确认挂在战斗结算画面上,奖励/恢复节点挂在兑付反馈覆盖层上——复用既有呈现位,零新增界面 |
| 零自动推进 | 确认之后是选路口:岔路口玩家选一条连线,单链路口确认"继续"。选了才走;不选就停在原地 |
开始关卡后的第一次行进确认就是"出发"。Boss 兑付(胜利或英雄死亡)触发关卡收束点,此后不再有选路——关卡已定局,后续流程归冒险结构。
### 节点兑付:把控制流移交给小循环
**人话阶段**:节点兑付就是"走到这个房间里,这个房间的事开始发生"。本文按节点类型触发兑付,然后把属于别家领域的事交还给别家——本文自始至终不生产任何数值。
| 类型 | 兑付动作 |
|---|---|
| 战斗 / Boss | 组装定位信息(关卡序号 + 节点编号),移交[战斗结算](../战斗循环/战斗结算.md)开战;战斗结果(胜负与战后生命)经战斗结果上报回流冒险结构(契约语义归[冒险结构](冒险结构.md),本文不复述) |
| 恢复 | 向冒险结构发治疗封顶回报(载荷 = 该关恢复比例,读本关配置行);按比例回血并封顶的执行归冒险结构 |
| 奖励 | 触发节点奖励兑付:获得一件功能道具并入持有域(见下) |
**遭遇构成的编排面**——本文对"放什么敌人"的全部职责只有三条:
1. 行进到战斗或 Boss 节点,兑付动作就是开战:本文递出定位信息,移交战斗结算。
2. 定位信息只有两样:**关卡序号 + 节点编号**。战斗侧拿编号查表、配敌、掷数量、跑技能池、叠伏击——一切战斗内部初始化归战斗循环文档,图的初始化不为战斗初始化做任何决定。
3. 本文不预掷任何战斗数值、不读敌人数量;教学位节点同样掷骰、没有结构豁免("任何掷骰结果下都稳过"的保证是[难度曲线与Boss](难度曲线与Boss.md)的数值责任)。
第二关的"新内容 = 既有池新技能"([技能池提案](../../../../docs/proposal-skill-pool.md)已定)投放时,改的是战斗侧行里引用的技能池内容——节点图结构原样不动,本文无需为投放留任何新结构位。
**节点奖励 = 功能道具的正式渠道**(2026-09-17 拍板,收编[06-待办清单](../../06-待办清单.md)「功能道具的正式渠道」):奖励节点兑付 = 获得一件功能道具并进入持有域。道具内容、持有域归属与使用窗口语义归[魔法道具](../排雷循环/魔法道具.md)内容重定批——切片期道具内容整批后置,奖励节点**零兑付直通是合法空态**,不是缺陷。
### 关卡收束点:先清库、后宣布
关卡收束点(一关就此定局的时点)有两个触发:Boss 战胜利(通关),或主角在任意一场战斗倒下(失败)。收束点的动作次序固定,不可换:
``` ```
关卡收束点(Boss 战胜利 或 英雄死亡) 关卡收束点(Boss 战胜利 或 英雄死亡)
@@ -75,45 +114,29 @@
② 向冒险结构宣布关卡结束(携带结果) ② 向冒险结构宣布关卡结束(携带结果)
``` ```
战斗发起的组装同样归本文:行进至战斗或 Boss 节点时,由本文组装入参、调用[战斗结算](../战斗循环/战斗结算.md)开战。 本文与冒险结构之间按接口契约四件套(开始关卡 / 战斗结果上报 / 治疗封顶回报 / 关卡结束)全款承接——语义权威在[冒险结构](冒险结构.md)的「与关卡节点地图的边界」一节,本文不复述其载荷细节。本文对战斗域与库存域零直调:清库存只经战斗结算的关卡收束接口,绝不亲手做。
### 遭遇构成归本文定
敌人系统的"不负责"表已登记:何时开战、坐标与数量怎么定,归本文。能确证的事实边界只有两条——开战时把坐标(关卡序号加节点深度)交给[敌人系统](../战斗循环/敌人系统.md),由它按坐标匹配敌种、生成单位;敌我数值与投放节奏的调参所有权归[难度曲线与Boss](难度曲线与Boss.md)。至于哪个节点放哪种遭遇、数量怎么定,是本文将来要设计的主体内容之一(见待设计问题清单)。
### 三个 reward 拆名:名字已定、机制未设计
设计里有三个"奖励"相关的名字,已拍板各归各位(登记见 [registry 术语条目](../../../registry/entities.yaml))。本文只登记名字与归属;节点奖励的机制是本文将来要设计的主体,这里不预支任何方案。
| 名字 | 指什么 | 归属 |
|---|---|---|
| 节点奖励 | 奖励点节点给的奖励 | 本文域(机制待设计) |
| 格面资源 | 雷图上格子关联的资源对象(安全格与雷格同池携带,极性由动作决定) | [地图战斗资源](../战斗循环/地图战斗资源.md) |
| 节点奖励覆盖层 | 节点奖励的呈现候选形态 | 呈现侧候选,未定稿 |
## 依赖与输出 ## 依赖与输出
本系统的上下游与对外承诺逐条列出如下——这份清单同时是删除任何一方时的影响面清单。 这张表就是删除任何一方时的影响面清单。
| 方向 | 系统 / 文档 | 接口要点 | | 方向 | 系统 / 文档 | 接口要点 |
|---|---|---| |---|---|---|
| 上游 / 下游 | [冒险结构](冒险结构.md) | 接口契约四件套(开始关卡 / 战斗结果上报 / 治疗封顶回报 / 关卡结束):向下接开始关卡,向上报战斗结果、恢复请求与关卡结束 | | 上游 / 下游 | [冒险结构](冒险结构.md) | 接口契约四件套(开始关卡 / 战斗结果上报 / 治疗封顶回报 / 关卡结束)+ 收束点次序语义:向下接开始关卡,向上报战斗结果、恢复请求与关卡结束 |
| 上游 | [地图战斗资源](../战斗循环/地图战斗资源.md) | 节点奖励兑付:兑付触发归本文,内容语义归它(库存已随可选类删除下线;未来功能道具的候选渠道之一,见其待办) | | 上游 | [魔法道具](../排雷循环/魔法道具.md) | 节点奖励的道具内容、持有域与使用窗口语义(内容重定批交付;切片期直通空态) |
| 上游 | [敌人系统](../战斗循环/敌人系统.md) | 遭遇坐标的消费方:本文交出坐标,按坐标生成单位归它 | | 上游 | [敌人系统](../战斗循环/敌人系统.md) | 定位信息的消费方:本文递出关卡序号 + 节点编号,按编号生成单位归它 |
| 上游 | [难度曲线与Boss](难度曲线与Boss.md) | 敌我数值曲线与遭遇投放节奏的调参所有权 | | 上游 | [难度曲线与Boss](难度曲线与Boss.md) | 敌我数值曲线与遭遇投放节奏的调参所有权;本文零数值 |
| 下游 | [战斗结算](../战斗循环/战斗结算.md) | 本文是两个调用入口的发起方:战斗发起组装、关卡收束(清库) | | 下游 | [战斗结算](../战斗循环/战斗结算.md) | 两个调用入口的发起方:战斗发起组装(定位信息)、关卡收束(清库) |
| 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 节点链行进与当前节点的画面呈现 | | 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 节点图呈现(方块地牢观感)、当前位置与选路口、兑付反馈覆盖层的数据源 |
## P0 最小闭环 ## P0 最小闭环
本系统的里程碑登记为垂直切片(归档索引对本系统的登记口径);切片已有关内行进的代码雏形,定稿时回填对照(见待设计问题清单)。最小闭环按线性链口径收拢: 1. 从冒险结构接收开始关卡(关卡序号、当前生命、生效上限),加载本关节点图,玩家确认出发,行进自入口节点开始。
2. 每节点兑付完成后玩家选路前进;岔路选一条、单链点继续;零自动推进。
1. 从冒险结构接收开始关卡,取得本关节点链与开局入参,行进从链首开始。 3. 战斗 / Boss 节点:组装关卡序号 + 节点编号,移交战斗结算开战;战斗结束向冒险结构上报战斗结果。
2. 行进至战斗或 Boss 节点:按遭遇构成组装入参,调战斗结算开战。 4. 奖励节点:触发节点奖励兑付(切片期 = 直通合法空态);恢复节点:向冒险结构发治疗封顶回报。
3. 战斗结束:向冒险结构上报战斗结果。 5. Boss 战胜利或任意战斗倒下 = 关卡收束点:先调战斗结算的关卡收束清库,再宣布关卡结束。
4. 奖励节点:触发节点奖励入库;恢复节点:向冒险结构发恢复请求。 6. 第一关行集 = 单链特例(图的最简形态),切片按单链运行零改动;分支图行集与图版实现随第二关内容批(P1)。
5. Boss 战胜利或英雄死亡即关卡收束点:先调战斗结算的关卡收束清库,再宣布关卡结束。
6. 节点之间怎么走(逐节点确认还是自动推进)未定;最小闭环按链序逐节点推进,交互形态随定稿裁决。
## P1 / P2 后置 ## P1 / P2 后置
@@ -121,42 +144,35 @@
| 优先级 | 内容 | 后置原因 | | 优先级 | 内容 | 后置原因 |
|---|---|---| |---|---|---|
| P1 | 遭遇构成细则(哪个节点放哪种遭遇、数量怎么定) | 依赖敌人表键结构的改键裁决(见待办);投放节奏的调参所有权归难度曲线与Boss | | P1 | 分支节点图内容与实现批 | 图结构行集(节点+连线)、切片行进代码的图版实现、跨文档"节点深度/节点链"措辞对齐——随第二关内容批同批落;落地前单链特例运行(合法态) |
| P1 | 节点奖励机制设计 | 名字已拍板、机制未设计;与地图战斗资源的兑付接口对齐后展开;用户已定方向(2026-09-15)——长周期功能道具经其他渠道加入,节点奖励为候选渠道 | | P2 | 精英节点与精英遭遇 | 不设编码位——精英以内容方式承载(某编号节点配强敌行集);与难度曲线、战斗侧批联动设计 |
| P2 | 路径分支地图 | 已拍板后置([不做清单](../../05-不做清单.md)):分支是加分项,当前体量撑不起有意义的岔路 | | P2 | 事件 / 商人类节点候选 | 无事件内容系统承载,商人另撞"抽象货币不做"红线;扩类一律走文档修订 |
| P2 | 精英节点与精英遭遇 | 与分支地图联动设计,随精英与 Boss 编码位改键同批 |
## 调参表 ## 调参表
暂无本系统自有的参数。链上节点构成、恢复比例等已登记参数分属冒险结构的关卡表与难度曲线与Boss 的数值域;本文将来新增的行进参数随设计定稿再登记。 暂无本系统自有的参数——选路与行进无数值可调。图结构合法性(唯一编号、唯一入口、唯一终点、无环)是规则不是参数,由加载校验强制;链上节点构成归冒险结构的关卡表,战斗数值归难度曲线与Boss。
## 验收标准 ## 验收标准
待设计。方向性判据(供未来定稿参考): - 图合法:行集通过加载校验——节点编号关卡内唯一、入口唯一、Boss 为唯一终点、连线无环、所有节点沿连线可达 Boss;违规配置加载期致命。
- 行进自主:从入口到 Boss 的每一次前进都由玩家选路发起;不存在任何自动推进路径;倒下时行进终止。
- 链序完整:从链首到关底 Boss 恰好经过链上每个节点,不跳过、不回头(线性口径)。 - 兑付移交:每场开战调用携带(关卡序号 + 节点编号),与节点图上该节点位置一致;每场战斗结束恰一次战斗结果上报。
- 收束点有序且唯一:关卡清库发生在关卡结束宣布之前;每关恰宣布一次关卡结束。 - 兑付后确认:战斗节点的继续确认挂战斗结算画面,奖励/恢复挂兑付反馈覆盖层;到达与兑付之间无确认步。
- 遭遇可溯源:每场开战使用的坐标(关卡序号 + 节点深度)能对上链上该节点的位置。 - 恢复兑付:治疗封顶回报载荷 = 该关恢复比例(读关卡配置行);满血回复 0 是合法状态(执行语义归冒险结构)。
- 四件接口全款承接:与冒险结构现行登记的开始关卡、战斗结果上报、治疗封顶回报、关卡结束逐件对上,不另起平行通道。 - 奖励兑付:奖励节点兑付恰触发一次;切片期直通空态合法,内容批后 = 功能道具入库。
- 收束有序且唯一:关卡清库发生在关卡结束宣布之前;每关恰宣布一次关卡结束;Boss 胜 = 通关、倒下 = 失败。
- 四件接口全款:与冒险结构登记的开始关卡、战斗结果上报、治疗封顶回报、关卡结束逐件对上,不另起平行通道。
- 单链特例合法:单链行集(每步恰一条连线)是合法图形态;第一关按单链运行,切片零改动。
- 呈现只读:节点图结构、当前位置、可选下一节点对呈现层只读可见(读数契约归 HUD 框架)。
## 待办 ## 待办
本系统待办条目已统一收编至 [06-待办清单](../../06-待办清单.md),本节不再逐条登记。 本系统待办条目已统一收编至 [06-待办清单](../../06-待办清单.md),本节不再逐条登记。
## 待设计问题清单
以下问题在本文定稿时逐一裁决:
1. 节点地图形态:线性链是现行口径;已登记候选"四方格步进式前进"(关卡内地图为格网,每步从相邻四格中选一格推进)未拍板——它与路径分支地图的后置口径如何衔接,随定稿裁决。
2. 节点类型分类学:现行四类(战斗 / 奖励 / 恢复 / Boss)之外是否扩类、每类节点的机制承诺——展开权已登记归本文,全部待设计。
3. 行进交互形态:玩家在线性链上怎么走(逐节点确认还是自动推进)未定。
4. 遭遇构成细则:每个战斗节点放哪种遭遇、坐标与数量的对应规则(投放节奏的数值归难度曲线与Boss)。
5. 节点奖励的机制与呈现:奖励点节点给什么、怎么给;节点奖励覆盖层的呈现候选形态评估。
6. 切片代码雏形对照:切片已有关内行进代码雏形(node_* 接口命名与归档索引登记的轻量契约注记),定稿时回填对照。
## 版本历史 ## 版本历史
| 版本 | 日期 | 说明 | | 版本 | 日期 | 说明 |
|---|---|---| |---|---|---|
| v0.1 | 2026-09-15 | 自归档线索整合为范围草案(旧体系未单独成文) | | v0.1 | 2026-09-15 | 自归档线索整合为范围草案(旧体系未单独成文) |
| v0.2 | 2026-09-15 | 待拍板"多敌数量的消费面"条目同步教学位掷骰口径(随[难度曲线与Boss](难度曲线与Boss.md)同批修订):删除"教学位节点固定不掷" | | v0.2 | 2026-09-15 | 待拍板"多敌数量的消费面"条目同步教学位掷骰口径(随[难度曲线与Boss](难度曲线与Boss.md)同批修订):删除"教学位节点固定不掷" |
| v1.0 | 2026-09-17 | **定稿**(逐问题拍板,全用户裁决):① 形态重开——用户拍板重开[05-不做清单](../../05-不做清单.md)「路径分支地图后置」裁定,定稿为**分支节点图**(分层节点图,杀戮尖塔 / 哥布林弹珠同构;方块地牢美术观感、逻辑为节点图),P0 图定稿 + 单链特例先行;② 节点类型定稿四类封闭枚举不扩类;③ 行进交互定稿全节点确认 + 兑付后确认、零自动推进;④ 遭遇构成收窄为编排面三条(战斗内部初始化全归战斗小循环),寻址定稿节点编号升级(`node_depth` 语义升级为关卡内唯一节点编号,表键与字段名零改动,单链零漂移);⑤ 节点奖励拍板为功能道具的正式渠道(内容归魔法道具内容重定批,切片期直通为合法空态);⑥ 「精英与 Boss 编码位」(同层多遭遇由节点编号消解,不设编码位)与「多敌数量的消费面」(关卡层零消费)两悬案收口,同场多敌种面拆归战斗侧;⑦ 切片行进代码对照的接口漂移清单登记 06 |
+26 -11
View File
@@ -150,7 +150,7 @@ entities:
type: schema_data type: schema_data
owner: design/gdd/systems/排雷循环/棋盘生成.md owner: design/gdd/systems/排雷循环/棋盘生成.md
attributes: attributes:
table: BoardGenTable(数据配置 承载,键 (level_index, node_depth) + depth-0 锚行——首个进度键表;棋盘生成 回填 owner,2026-09-09 定稿回填;第三轴登记约定〔B7 修订〕——Boss 图 = 各 level Dmax 行、elite_/boss_ 字段命名空间预留、关卡节点地图/难度曲线与Boss 定稿强制重审 OQ6,改键退路 = 数据配置 Rule 4 接口漂移通道) table: BoardGenTable(数据配置 承载,键 (level_index, node_depth) + depth-0 锚行——首个进度键表;棋盘生成 回填 owner,2026-09-09 定稿回填;第三轴登记约定〔B7 修订〕——Boss 图 = 各 level Dmax 行、elite_/boss_ 字段命名空间预留、关卡节点地图/难度曲线与Boss 定稿强制重审 OQ6,改键退路 = 数据配置 Rule 4 接口漂移通道;**OQ6 重审兑现〔2026-09-17 关卡节点地图 v1.0〕:键维持二元不动、node_depth 语义 = 关卡内唯一节点编号(单链特例下 = 旧深度)、Boss = 最大编号行〔Dmax 语义平移〕、elite_/boss_ 命名空间预留维持**)
fields: board_width/board_height(int [8,64],knob)/ mine_density(float (0,0.5],knob——雷量参数形态=密度浮点,尺寸解耦;布雷数下限 round(d×(W×H−9)) ≥ 1,R3 修订)/ inferability_target(float **[0.85,1]**,knob——P1 门槛承重参数+绝对锚,战斗结算 修订收窄)/ solver_rules(enum single|single_subset,**冻结 single_subset**——推理定义域非调参)/ min_safe_count(int [1,999],knob——行动经济 EC5 退化板对冲)/ max_gen_attempts(int [1,32],knob)/ board_biome(StringSet **非空**,域校验致命——地形变异;词表 owner 未定稿前只校验非空)+ elite_/boss_ 前缀字段命名空间预留(非 knob,B7——语义归 关卡节点地图/难度曲线与Boss) fields: board_width/board_height(int [8,64],knob)/ mine_density(float (0,0.5],knob——雷量参数形态=密度浮点,尺寸解耦;布雷数下限 round(d×(W×H−9)) ≥ 1,R3 修订)/ inferability_target(float **[0.85,1]**,knob——P1 门槛承重参数+绝对锚,战斗结算 修订收窄)/ solver_rules(enum single|single_subset,**冻结 single_subset**——推理定义域非调参)/ min_safe_count(int [1,999],knob——行动经济 EC5 退化板对冲)/ max_gen_attempts(int [1,32],knob)/ board_biome(StringSet **非空**,域校验致命——地形变异;词表 owner 未定稿前只校验非空)+ elite_/boss_ 前缀字段命名空间预留(非 knob,B7——语义归 关卡节点地图/难度曲线与Boss)
cross_field_validation: min_safe_feasible(F2b——W×H−round(density×(W×H−9))≥min_safe_count,sound 保守〔增益状态 修订补论证:N=round(d×(W×H−9)) 先定数+先布后删只减不增〕,计数可行≠连通可行)+ 布雷数下限(round(d×(W×H−9)) ≥ 1,R3)+ cost_feasible(F2c——max_gen_attempts×W×H ≤ 16384 provisional,正式值归 OQ2 ADR;运行期禁墙钟时间逃生,B8) cross_field_validation: min_safe_feasible(F2b——W×H−round(density×(W×H−9))≥min_safe_count,sound 保守〔增益状态 修订补论证:N=round(d×(W×H−9)) 先定数+先布后删只减不增〕,计数可行≠连通可行)+ 布雷数下限(round(d×(W×H−9)) ≥ 1,R3)+ cost_feasible(F2c——max_gen_attempts×W×H ≤ 16384 provisional,正式值归 OQ2 ADR;运行期禁墙钟时间逃生,B8)
mechanics: 五阶段确定性管线(参数解析→布雷→变异布置→生成-验证循环→产出上报;顺序冻结,先雷后变异布置;**布雷取整与落位钉死,增益状态 修订——N=round(d×(W×H−9)) 先定数,先布后删〔环内雷移除、只减不增、无迭代〕**)· inferability = **免赌开据占比**(F1:初始展开∪连锁∪推导开据三通道;合法信息源穷举{数字约束}——新增信息源=GDD 修订;次序无关不变式;metric_version=1 防实现漂移)· **达标判据 = inferability ≥ target(单一判据,战斗结算 修订)**· clearable 合法性闸(清图可达性与质量度量两闸分离)· 验收算子三分支(达标即出 k*/接受最优+强告警 k**/**零合法→接受最不坏+非法产物标记 k***——用户 2026-09-09 定稿,玩家永不卡死,F4 断言 A′ 批量守红线;EC5 玩家侧体验债已登记 战斗结算/HUD框架 域**)· 重试不重开 scope(attempt 边界=生成函数完整返回——存档序列化 快照切点契约)· 生成期表值单次读取(防热重载撕裂 attempt) mechanics: 五阶段确定性管线(参数解析→布雷→变异布置→生成-验证循环→产出上报;顺序冻结,先雷后变异布置;**布雷取整与落位钉死,增益状态 修订——N=round(d×(W×H−9)) 先定数,先布后删〔环内雷移除、只减不增、无迭代〕**)· inferability = **免赌开据占比**(F1:初始展开∪连锁∪推导开据三通道;合法信息源穷举{数字约束}——新增信息源=GDD 修订;次序无关不变式;metric_version=1 防实现漂移)· **达标判据 = inferability ≥ target(单一判据,战斗结算 修订)**· clearable 合法性闸(清图可达性与质量度量两闸分离)· 验收算子三分支(达标即出 k*/接受最优+强告警 k**/**零合法→接受最不坏+非法产物标记 k***——用户 2026-09-09 定稿,玩家永不卡死,F4 断言 A′ 批量守红线;EC5 玩家侧体验债已登记 战斗结算/HUD框架 域**)· 重试不重开 scope(attempt 边界=生成函数完整返回——存档序列化 快照切点契约)· 生成期表值单次读取(防热重载撕裂 attempt)
@@ -235,11 +235,11 @@ entities:
真视窄域护栏: 替代推理的道具效果(雷位真视)目标域 ≤3×3、全图级仅限恢复推理原料类(显影/预读)——信息层级护栏,防"扫雷退化为路径优化"(魔法道具 Core Rule 3 首次定义,schema 校验强制) 真视窄域护栏: 替代推理的道具效果(雷位真视)目标域 ≤3×3、全图级仅限恢复推理原料类(显影/预读)——信息层级护栏,防"扫雷退化为路径优化"(魔法道具 Core Rule 3 首次定义,schema 校验强制)
渗透率: aux 道具期望件数占奖励池的份额——E[N_aux/板] = |U|×Σw_aux/W_total(魔法道具 F1 首次定义;供给面天然限流,P1 护栏的量化形态) 渗透率: aux 道具期望件数占奖励池的份额——E[N_aux/板] = |U|×Σw_aux/W_total(魔法道具 F1 首次定义;供给面天然限流,P1 护栏的量化形态)
行动: 轮次内挖掘期的原子决策单位——同一事件的三个视角:玩家决策层叫行动、进 排雷玩法 的数据形态叫意图(单意图帧整批提交)、行动经济 计价类别叫动作(action_kind 统一价目);有价行动(挖/插旗/拔旗)1 AP/次、受每轮 AP 预算约束(现行表值 8),移动/停手免费不计 AP(game-concept 术语层级 2026-09-14 收录) 行动: 轮次内挖掘期的原子决策单位——同一事件的三个视角:玩家决策层叫行动、进 排雷玩法 的数据形态叫意图(单意图帧整批提交)、行动经济 计价类别叫动作(action_kind 统一价目);有价行动(挖/插旗/拔旗)1 AP/次、受每轮 AP 预算约束(现行表值 8),移动/停手免费不计 AP(game-concept 术语层级 2026-09-14 收录)
节点: 关卡节点地图上的一个格——关卡内移动的步进单位;层名定稿(2026-09-14 用户裁决:节点 胜 遭遇——成员中立 + 关卡节点地图 注册名/切片 node_* 接口零改动 + 遭遇既有语义 = 战斗不挪用);节点类型分类学与分支机制归 关卡节点地图 GDD 展开 节点: 关卡节点地图上的一个格——关卡内移动的步进单位;层名定稿(2026-09-14 用户裁决:节点 胜 遭遇——成员中立 + 关卡节点地图 注册名/切片 node_* 接口零改动 + 遭遇既有语义 = 战斗不挪用);类型分类学与图形态已展开定稿(2026-09-17 关卡节点地图 v1.0:四类封闭枚举 {battle, reward, rest, boss} + 分支节点图〔连线只朝前进方向、唯一入口、Boss 恒唯一终点、无回头路〕;节点编号 = 关卡内唯一定位地址,数据键 node_depth 沿用)
遭遇: 一次完整战斗事件的同义词——战斗节点触发的那一场仗(既有用法:战斗结算"两场遭遇" / HUD框架"双敌种遭遇""Boss 遭遇变体");不作地图层名(2026-09-14 裁决) 遭遇: 一次完整战斗事件的同义词——战斗节点触发的那一场仗(既有用法:战斗结算"两场遭遇" / HUD框架"双敌种遭遇""Boss 遭遇变体");不作地图层名(2026-09-14 裁决)
节点奖励: 奖励点节点给的奖励(关卡节点地图 域)——与安全格奖励(地图战斗资源,格内开出)区分;节点奖励覆盖层 = 未来 spec design/ux/node-reward.md(battle.md OQ9)——三个"reward"各归各位(2026-09-14 拆名注记) 节点奖励: 奖励点节点给的奖励(关卡节点地图 域)——与安全格奖励(地图战斗资源,格内开出)区分;机制定稿(2026-09-17 关卡节点地图 v1.0:节点奖励 = **功能道具的正式渠道**,兑付 = 获得一件功能道具入持有域;内容/持有/使用语义归 魔法道具 内容重定批,切片期零兑付直通为合法空态);节点奖励覆盖层 = 兑付反馈覆盖层(与行进确认同面,视觉规格归 HUD框架;spec design/ux/node-reward.md 未来件〔battle.md OQ9〕)——三个"reward"各归各位(2026-09-14 拆名注记)
HP 账本: 冒险域主角血量的唯一记录——冒险结构 持有,每战开始交出、战斗结束收回、恢复点与大奖励入账;关卡切换血条不清零(冒险结构 首次定义;跨战斗 HP 持久性归 关卡节点地图/冒险结构 已锁事实的 冒险结构 半边兑现) HP 账本: 冒险域主角血量的唯一记录——冒险结构 持有,每战开始交出、战斗结束收回、恢复点与大奖励入账;关卡切换血条不清零(冒险结构 首次定义;跨战斗 HP 持久性归 关卡节点地图/冒险结构 已锁事实的 冒险结构 半边兑现)
关卡收束点: 一关就此定局的时点——Boss 战胜利(通关)或英雄死亡(失败);关卡节点地图 在收束点先调 战斗结算 关卡清库、再向 冒险结构 宣布关卡结束与结果(冒险结构 首次定义;切片 level_runner 先例转正) 关卡收束点: 一关就此定局的时点——Boss 节点战斗胜利(通关)或英雄死亡(失败);关卡节点地图 在收束点先调 战斗结算 关卡清库、再向 冒险结构 宣布关卡结束与结果(冒险结构 首次定义;切片 level_runner 先例转正;2026-09-17 关卡节点地图 v1.0 图版措辞——Boss 节点 = 图唯一终点)
关卡大奖励: 清完一关、进入下一关前的一次性兑付——上限提升 + 血回满 + 代币记账三件构成,不进背包不占库存域;末关通关不兑付(冒险结构 首次定义;game-concept"冒险内大奖励"的落地形态) 关卡大奖励: 清完一关、进入下一关前的一次性兑付——上限提升 + 血回满 + 代币记账三件构成,不进背包不占库存域;末关通关不兑付(冒险结构 首次定义;game-concept"冒险内大奖励"的落地形态)
referenced_by: [排雷玩法, 敌人系统, 地图战斗资源, 战斗结算, HUD框架, 魔法道具, art-bible, game-concept, 关卡节点地图, 冒险结构] referenced_by: [排雷玩法, 敌人系统, 地图战斗资源, 战斗结算, HUD框架, 魔法道具, art-bible, game-concept, 关卡节点地图, 冒险结构]
@@ -260,7 +260,7 @@ entities:
atk: int [0,999](knob——attack 行为伤害基值;MVP 4 provisional 出处待查;0 = 纯伏击伤敌种合法) atk: int [0,999](knob——attack 行为伤害基值;MVP 4 provisional 出处待查;0 = 纯伏击伤敌种合法)
pool: Array of {skill_id, weight}(**2026-09-16 敌人技能池批——池模板**,定义层;weight ∈ (0,9999] knob、池内 skill_id 不重复;每池恰一行普通攻击 + 增益技 ≤1 + skill_id 悬空致命〔加载校验在 config_db.validate_skill_pool_links 跨表通道〕;实例池〔快照+冷却状态〕在 单位容器 spawn——三敌种建议池 goblin {attack 9, lunge 1} / bugbear {attack 6, charge 2, heavy 2} / ogre_chief {attack 6, heavy 2, harden 2},全部 provisional 归 难度曲线与Boss;EV 锚 静态 1.05/1.00/1.00,含闸长期速率实测 1.106/1.000/1.024〔×5000 拍,随批登记〕)。**历史(2026-09-16 退役)**:heavy_multiplier int [1,16](重击倍率归技能行 damage_mult)与 pattern StringList(行为环环数组)两字段随行为环整体退役——固定出招剧本废除 pool: Array of {skill_id, weight}(**2026-09-16 敌人技能池批——池模板**,定义层;weight ∈ (0,9999] knob、池内 skill_id 不重复;每池恰一行普通攻击 + 增益技 ≤1 + skill_id 悬空致命〔加载校验在 config_db.validate_skill_pool_links 跨表通道〕;实例池〔快照+冷却状态〕在 单位容器 spawn——三敌种建议池 goblin {attack 9, lunge 1} / bugbear {attack 6, charge 2, heavy 2} / ogre_chief {attack 6, heavy 2, harden 2},全部 provisional 归 难度曲线与Boss;EV 锚 静态 1.05/1.00/1.00,含闸长期速率实测 1.106/1.000/1.024〔×5000 拍,随批登记〕)。**历史(2026-09-16 退役)**:heavy_multiplier int [1,16](重击倍率归技能行 damage_mult)与 pattern StringList(行为环环数组)两字段随行为环整体退役——固定出招剧本废除
advantage_per_round_cap: int [0,16](knob;**MVP 默认 4 定稿**〔2026-09-09——反灾难护栏定位,旧默认 8 溢出协议死码已废弃〕;0 = 免疫伏击合法极端;行动经济 F1 条款 3 供给表值来源字段) advantage_per_round_cap: int [0,16](knob;**MVP 默认 4 定稿**〔2026-09-09——反灾难护栏定位,旧默认 8 溢出协议死码已废弃〕;0 = 免疫伏击合法极端;行动经济 F1 条款 3 供给表值来源字段)
rowset_rule: 每行集恰一敌种(行集内 enemy_id 唯一 = 表结构校验,违规加载期致命)——多敌种同深度选择规则归 关卡节点地图/难度曲线与Boss(provisional);精英/Boss 编码位预登记 敌人系统 OQ7(键冻结下同深度第二敌种行触发行集致命——改键走 数据配置 Rule 4 接口漂移,关卡节点地图 定稿时强制核对) rowset_rule: 每行集恰一敌种(行集内 enemy_id 唯一 = 表结构校验,违规加载期致命)——同层多遭遇已由节点编号消解(2026-09-17 关卡节点地图 v1.0:node_depth 语义 = 关卡内唯一节点编号,同层不同节点各查各行、键结构零改动);同场多敌种(同一编号行集多行)行集校验放开 + 混编遭遇伏击上限取值口径归 敌人表行集多行批(战斗侧,排技能池实施批落地后;06-待办清单 敌人系统节同名条目单点登记);精英/Boss 不设编码位——Boss = 最大编号节点(图唯一终点)、精英 P2 内容承载(强敌行集)
mvp_content: **恰 3 敌种(2026-09-14 难度曲线与Boss 修订批转正——DND 更名批用户指令:grub→goblin / ambusher→bugbear / boss_guardian→ogre_chief;旧两敌种登记由本条替代;敌人系统 AC-16③ 物种集断言随批更新为 {goblin, bugbear, ogre_chief})**:goblin(地精,池 {attack 9, lunge 1}——L1 D0 24hp/7atk ×[1,2]、L1 D1 群 13/5 ×[2,3];armor=light)· bugbear(熊地精,池 {attack 6, charge 2, heavy 2}——L1 D2 40/9 ×1、L1 D3 群 18/6 ×[2,3]、L2 D0 锚行 30/7;armor=ward)· ogre_chief(食人魔酋长,池 {attack 6, heavy 2, harden 2}——L1 D4 150/9 ×1;armor=heavy);**2026-09-16 敌人技能池批**:行为环拍序列([attack] 单拍环 / [attack,charge,heavy] 三拍环 / [attack,attack,charge,heavy] 四拍环)与 heavy_multiplier=2 退役,改池模板 + 技能表共享技能行(重击倍率 2 = 技能行 damage_mult);出处 = 切片 enemy.tres(技能池批改型),曲线数值与池权重归 难度曲线与Boss mvp_content: **恰 3 敌种(2026-09-14 难度曲线与Boss 修订批转正——DND 更名批用户指令:grub→goblin / ambusher→bugbear / boss_guardian→ogre_chief;旧两敌种登记由本条替代;敌人系统 AC-16③ 物种集断言随批更新为 {goblin, bugbear, ogre_chief})**:goblin(地精,池 {attack 9, lunge 1}——L1 D0 24hp/7atk ×[1,2]、L1 D1 群 13/5 ×[2,3];armor=light)· bugbear(熊地精,池 {attack 6, charge 2, heavy 2}——L1 D2 40/9 ×1、L1 D3 群 18/6 ×[2,3]、L2 D0 锚行 30/7;armor=ward)· ogre_chief(食人魔酋长,池 {attack 6, heavy 2, harden 2}——L1 D4 150/9 ×1;armor=heavy);**2026-09-16 敌人技能池批**:行为环拍序列([attack] 单拍环 / [attack,charge,heavy] 三拍环 / [attack,attack,charge,heavy] 四拍环)与 heavy_multiplier=2 退役,改池模板 + 技能表共享技能行(重击倍率 2 = 技能行 damage_mult);出处 = 切片 enemy.tres(技能池批改型),曲线数值与池权重归 难度曲线与Boss
load_bearing_rules: 多敌模型(1–3 同敌种单位,增益状态 单敌假设回验不成立——见 status_effect.single_enemy_assumption)· 行为环确定性轮转(零随机;先作用后推进;死亡即不动手——轮到前被杀本拍不打指针冻结;同步轮转定理)· 效果 side-wide(伏击池 = side 共享,增益状态 零接口变更)· 行值快照抗热重载(增益状态 EC9 同款——池模板同在快照范围,实例池冷却全零起步)· **技能池摇号出招(2026-09-16 敌人技能池批改写——原"行为环确定性轮转/同步轮转定理"退役)**:每拍做什么 = 实例池权重摇号〔开轮时点,随机消费在 战斗结算 换算层 behavior_roll 封闭流;本系统语义零随机不变、单位容器收确定值〕;两道闸 = 全技能各自冷却 + 保底 M;死亡即不动手(摇定后兑现前死亡 → 本拍作废不进账);拍结构保留(每结算每存活敌恰行动一次/行序/先作用后推进)· 零随机零 UI 零事件订阅(排雷玩法 事件面不含 敌人系统——事实经 战斗结算 转化) load_bearing_rules: 多敌模型(1–3 同敌种单位,增益状态 单敌假设回验不成立——见 status_effect.single_enemy_assumption)· 行为环确定性轮转(零随机;先作用后推进;死亡即不动手——轮到前被杀本拍不打指针冻结;同步轮转定理)· 效果 side-wide(伏击池 = side 共享,增益状态 零接口变更)· 行值快照抗热重载(增益状态 EC9 同款——池模板同在快照范围,实例池冷却全零起步)· **技能池摇号出招(2026-09-16 敌人技能池批改写——原"行为环确定性轮转/同步轮转定理"退役)**:每拍做什么 = 实例池权重摇号〔开轮时点,随机消费在 战斗结算 换算层 behavior_roll 封闭流;本系统语义零随机不变、单位容器收确定值〕;两道闸 = 全技能各自冷却 + 保底 M;死亡即不动手(摇定后兑现前死亡 → 本拍作废不进账);拍结构保留(每结算每存活敌恰行动一次/行序/先作用后推进)· 零随机零 UI 零事件订阅(排雷玩法 事件面不含 敌人系统——事实经 战斗结算 转化)
settlement_obligations: 六项(敌人系统 GDD 门禁评审缺项即 blocking)——① 行动每结算恰一次(敌单位专属——主角无环)+ 结算内调用序成文 按摇定技能行兑现→apply_damage→commit_action〔2026-09-16 技能池批改型——原 query_attack→apply_damage→advance 随行为环退役〕 ② 雷→伏击恰一次转化 ③ clamp/负值/溢杀与死亡判定时机成文 ④ F1 条款 3 闭合对账(cap 表值 + 量纲 + 棋盘生成 actuals p10 非 target 参数)⑤ 默认目标消费与单体/AOE 分流 ⑥ 伏击 cap 溢出"溢出未生效"明细行协议。**履行回执(2026-09-10)**:六项已全数落位 战斗结算 GDD(Core Rules 5/6/9/10/12 + Formulas F3/F4——落位映射 = 战斗结算 AC 覆盖矩阵) settlement_obligations: 六项(敌人系统 GDD 门禁评审缺项即 blocking)——① 行动每结算恰一次(敌单位专属——主角无环)+ 结算内调用序成文 按摇定技能行兑现→apply_damage→commit_action〔2026-09-16 技能池批改型——原 query_attack→apply_damage→advance 随行为环退役〕 ② 雷→伏击恰一次转化 ③ clamp/负值/溢杀与死亡判定时机成文 ④ F1 条款 3 闭合对账(cap 表值 + 量纲 + 棋盘生成 actuals p10 非 target 参数)⑤ 默认目标消费与单体/AOE 分流 ⑥ 伏击 cap 溢出"溢出未生效"明细行协议。**履行回执(2026-09-10)**:六项已全数落位 战斗结算 GDD(Core Rules 5/6/9/10/12 + Formulas F3/F4——落位映射 = 战斗结算 AC 覆盖矩阵)
@@ -493,7 +493,7 @@ entities:
key: (level_index, node_depth) key: (level_index, node_depth)
fields: 修饰乘数(域预登记 [0.1,10],越域 clamp+warning——非 fail-fast,组合事故非配置事故) fields: 修饰乘数(域预登记 [0.1,10],越域 clamp+warning——非 fail-fast,组合事故非配置事故)
application_point: 敌人系统.spawn 实例化时、行值快照前套乘(敌人系统 Rule 10 兑现——接口漂移建表随 难度曲线与Boss 实现批) application_point: 敌人系统.spawn 实例化时、行值快照前套乘(敌人系统 Rule 10 兑现——接口漂移建表随 难度曲线与Boss 实现批)
first_use_scenario: 精英节点(关卡节点地图 分支地图定稿后联动设计——难度曲线与Boss OQ5);Boss 走 Dmax 直填行不走本表 first_use_scenario: 精英节点(分支地图已定稿〔2026-09-17 关卡节点地图 v1.0〕,精英 P2 内容承载、联动设计随精英内容批——难度曲线与Boss OQ5 关闭);Boss 走最大编号节点直填行不走本表
referenced_by: [敌人系统, 难度曲线与Boss] referenced_by: [敌人系统, 难度曲线与Boss]
- name: difficulty_expectation_table - name: difficulty_expectation_table
@@ -513,22 +513,22 @@ entities:
attributes: attributes:
rule: Boss = 各关最大深度 Dmax 行(棋盘生成 第三轴登记约定的 GDD 侧兑现)+ LevelTable 末节点必须 Boss(schema 校验)+ 专属行为环含 charge 拍 rule: Boss = 各关最大深度 Dmax 行(棋盘生成 第三轴登记约定的 GDD 侧兑现)+ LevelTable 末节点必须 Boss(schema 校验)+ 专属行为环含 charge 拍
boss_hp_anchor: F3 = Σ普通战斗hp期望 × r_boss ∈ [0.5, 1.1](现行带——旧带 [0.35,0.55] 与"切片 0.81 越上界"读数由本条替代,OQ2 采信用户"可上调"裁决后修订)· L1 v3 记录值 150/153.5 ≈ **0.98** 带内 ✓(期望口径含 unit_count 区间骰 Σ=153.5——2026-09-14 难度曲线与Boss 修订批口径统一,旧固定口径 Σ=142 读数替代)· **加难走廊 [1.1, 1.35] 预登记**(Boss 180–207 候选,OQ7 扫描终裁) boss_hp_anchor: F3 = Σ普通战斗hp期望 × r_boss ∈ [0.5, 1.1](现行带——旧带 [0.35,0.55] 与"切片 0.81 越上界"读数由本条替代,OQ2 采信用户"可上调"裁决后修订)· L1 v3 记录值 150/153.5 ≈ **0.98** 带内 ✓(期望口径含 unit_count 区间骰 Σ=153.5——2026-09-14 难度曲线与Boss 修订批口径统一,旧固定口径 Σ=142 读数替代)· **加难走廊 [1.1, 1.35] 预登记**(Boss 180–207 候选,OQ7 扫描终裁)
elite_reserved: elite_/boss_ 前缀命名空间预留(棋盘生成 B7);精英完整语义归 关卡节点地图 定稿联动(OQ5/OQ6 强制重审) elite_reserved: elite_/boss_ 前缀命名空间预留(棋盘生成 B7);OQ5/OQ6 强制重审已兑现(2026-09-17 关卡节点地图 v1.0)——不设编码位,精英完整语义 P2 内容承载(某编号节点配强敌行集),联动设计随精英内容批
referenced_by: [棋盘生成, 敌人系统, 关卡节点地图, 冒险结构] referenced_by: [棋盘生成, 敌人系统, 关卡节点地图, 冒险结构]
- name: level_table - name: level_table
type: schema_data type: schema_data
owner: design/gdd/systems/冒险循环/冒险结构.md owner: design/gdd/systems/冒险循环/冒险结构.md
attributes: attributes:
table: LevelTable(数据配置 承载,键 = level_index 行、行内 nodes 节点链数组——切片建表,冒险结构 定稿转正为行集内容 owner) table: LevelTable(数据配置 承载,键 = level_index 行、行内 nodes 节点图结构〔2026-09-17 关卡节点地图 v1.0 定稿:分支节点图;单链 = 特例〕——切片建表,冒险结构 定稿转正为行集内容 owner)
fields: fields:
level_index: int 行主键(冒险序列序号,从 1 连续递增——线性序列无跳关) level_index: int 行主键(冒险序列序号,从 1 连续递增——线性序列无跳关)
display_name: String(玩家可读层名——L1"第一层 · 苔藓回廊"切片现行;L2 层名未定稿〔provisional,终稿随 L2 内容批〕) display_name: String(玩家可读层名——L1"第一层 · 苔藓回廊"切片现行;L2 层名未定稿〔provisional,终稿随 L2 内容批〕)
rest_heal_pct: int [0,100](knob 默认 30——恢复点回复 max_hp_eff 的百分比,随上限加成同步放大防高上限档恢复失效;数值复验归 难度曲线与Boss) rest_heal_pct: int [0,100](knob 默认 30——恢复点回复 max_hp_eff 的百分比,随上限加成同步放大防高上限档恢复失效;数值复验归 难度曲线与Boss)
nodes: 节点链数组——node_kind ∈ {battle, reward, rest, boss}(切片字段名 type);battle/boss 携带 node_depth;reward/rest 不占深度 nodes: 节点图结构——节点数组 + 连线(node_kind ∈ {battle, reward, rest, boss},切片字段名 type;每节点领关卡内唯一**节点编号**,battle/boss 数据键 node_depth 沿用〔v1.0 语义升级:深度 → 节点编号〕;连线 = 出边节点编号表,只朝前进方向、无回头路);单链特例 = 隐式后继(数组序即链,切片现行形态零漂移)
rowset_rule: Boss 恒末节点(schema 校验);战斗节点深度 = 前序战斗节点计数、Boss = Dmax(棋盘生成 第三轴约定兑现面);MVP 链模板 = battle D0 → battle D1 → reward → battle D2 → battle D3 → rest → boss D4(7 节点 5 战斗深度,L1/L2 同构复用) rowset_rule: 图合法性校验(2026-09-17 关卡节点地图 v1.0)——节点编号关卡内唯一、入口唯一、Boss 恒唯一终点(编号最大,Dmax 语义平移)、连线无环、所有节点沿连线可达 Boss,违规加载期致命;MVP 链模板 = battle D0 → battle D1 → reward → battle D2 → battle D3 → rest → boss D4(7 节点 5 战斗深度,L1/L2 同构复用——单链特例行集,分支行集随第二关内容批)
cross_table_validation: battle/boss 节点 (L,D) 在 board_gen/enemy 两表存在精确行(数据配置 跨表校验⑧复用 + 冒险结构 AC-7 冒烟断言——序列关数 ⊆ 内容覆盖,越界关卡 = 内容生产缺口) cross_table_validation: battle/boss 节点 (L,D) 在 board_gen/enemy 两表存在精确行(数据配置 跨表校验⑧复用 + 冒险结构 AC-7 冒烟断言——序列关数 ⊆ 内容覆盖,越界关卡 = 内容生产缺口)
mvp_content: L1 全行(切片转正——7 节点链、rest_heal_pct=30);L2 行 = N=2 扩展批(同构模板 + 难度曲线与Boss 深度轴行值同批填充——冒险结构 GDD 生效前提,未落地前冒险以单关行集运行 N=1 合法态) mvp_content: L1 全行(切片转正——7 节点链〔单链特例,合法图形态〕、rest_heal_pct=30);L2 行 = N=2 扩展批(同构模板或首张分支图 + 难度曲线与Boss 深度轴行值同批填充——冒险结构 GDD 生效前提,未落地前冒险以单关行集运行 N=1 合法态)
referenced_by: [冒险结构, 关卡节点地图, 难度曲线与Boss, 棋盘生成, 数据配置] referenced_by: [冒险结构, 关卡节点地图, 难度曲线与Boss, 棋盘生成, 数据配置]
- name: adventure_table - name: adventure_table
@@ -690,3 +690,18 @@ entities:
# ac_roll 吃掷点分量措辞改"敌方技能基础伤害分量"(三乘法链:倍率乘在最前);调用序改 摇定兑现→apply_damage→ # ac_roll 吃掷点分量措辞改"敌方技能基础伤害分量"(三乘法链:倍率乘在最前);调用序改 摇定兑现→apply_damage→
# commit_action;行型改型 蓄力行 charge → 施放行 cast; # commit_action;行型改型 蓄力行 charge → 施放行 cast;
# ⑥ terminology:技能池/实例池/技能行/开轮摇号/保底/技能冷却/施放行 七新词条;行为环/同步轮转退役留档、拍 改时间量词。 # ⑥ terminology:技能池/实例池/技能行/开轮摇号/保底/技能冷却/施放行 七新词条;行为环/同步轮转退役留档、拍 改时间量词。
# 2026-09-17 关卡节点地图 定稿批(逐问题拍板全用户裁决,关卡节点地图 v1.0——配套登记 02/05/06-清单;零代码):
# ① 形态重开:用户拍板重开 05-不做清单「路径分支地图后置」——关卡内定稿为**分支节点图**(分层节点图,
# 杀戮尖塔/哥布林弹珠同构;方块地牢美术观感、逻辑为节点图;呈现规格归 HUD框架);P0 图定稿+单链特例先行,
# 分支行集随第二关内容批(P1 分支节点图内容与实现批);
# ② level_table:table 行改节点图结构;nodes 字段 = 节点数组+连线、每节点关卡内唯一节点编号
# (node_depth 数据键沿用、语义升级:深度→节点编号);rowset_rule 改图合法性校验(唯一编号/唯一入口/
# Boss 恒唯一终点〔编号最大,Dmax 平移〕/无环/全可达);MVP 链模板注记单链特例合法;
# ③ 术语「节点」图形态与分类学展开定稿(四类封闭枚举)、「节点奖励」机制定稿(功能道具正式渠道——内容/
# 持有/使用归 魔法道具 内容重定批,切片期直通合法空态;覆盖层 = 兑付反馈覆盖层)、「关卡收束点」图版措辞;
# ④ enemy_table.rowset_rule:同层多遭遇由节点编号消解;不设精英/Boss 编码位(Boss=最大编号节点、精英 P2
# 内容承载);同场多敌种行集多行 + 混编伏击上限取值 → 敌人表行集多行批(战斗侧,排技能池实施批后,
# 06 清单单点登记);board_gen_table 第三轴约定 OQ6 重审兑现注记;difficulty_table OQ5/OQ6 兑现注记;
# ⑤ 06-待办清单:「精英与 Boss 编码位」「多敌数量的消费面」(地图战斗资源节「功能道具的正式渠道」同日)
# 三条已解决留痕;敌人系统「同深度第二敌种与精英 / Boss 编码位」部分收口改归属;新增「切片行进代码与
# 定稿的接口漂移」(八条漂移清单)与「图版措辞对齐」(跨文档残留单点清单)两待办。