Files
gplan-2/design/gdd/systems/冒险循环/冒险结构.md
T
DKChan 7aee5eb71a docs(流程文档迁出GDD批): 待办清单与体验验证清单移到仓库根并去掉编号前缀
两文件是流水线流程件而非游戏描述件,此前住在 design/gdd/ 造成三处不适配:
gdd_lint 必须为它们逐条关掉体裁规则、格式权威却写在 doc-conventions §12、
与同族的 roadmap(在仓库根)分居两处。迁到根后按 roadmap.md 的无编号风格改名。

- 迁出:design/gdd/06-待办清单.md → 待办清单.md;07-体验验证清单.md → 体验验证清单.md
- 指向改写 53 个文件:GDD 各系统文档指路存根、四份规约、02 根索引、README/roadmap/AGENTS
- 两份清单自身 74 处出站链接按新基址重指(../art → design/art、systems → design/gdd/systems)
- gdd_lint:待办/体验验证两文件的 R1/R3/R5/R7 豁免行随迁删除(已脱离扫描面),后门表清零
- pipeline_gate 默认路径、log_analysis/render_gate 称谓、repo_structure_audit 根文件白名单同步
- 保护面补写:两份清单列入实现批禁写清单(AGENTS 两类批条 / process-conventions §12 / 架构文档域表),
  条目状态只由流水线各段推进
- 范围外未动(用户令「全不碰」):reports/ 与 design/research/ 的 22 处历史指向、game/ 两处注释
2026-10-21 00:09:40 +08:00

38 KiB
Raw Blame History

冒险结构

一句话:整局冒险的关卡序列、失败与大奖励 状态:已定稿(自旧体系迁移)

设计目的

冒险结构管的是"一整局"这个层级:这局要依次下探哪几层、通关一层发什么、倒下之后怎么重来。单场战斗打得再好,也需要这层骨架才能变成"越走越深"的进度感;死亡也需要一个明确的边界——死在哪里、失去什么、留下什么。

它还立起本系统的核心张力:主角一条血走完整场冒险,恢复只来自两个显式口,血条跨关只降不自动回。所以越往后,玩家越在意"这局已经走到第几层"。

系统范围

边界这样划:冒险结构只管序列与结构层——冒险从哪开始、有几关、通关发什么、失败怎么算、随机种子怎么接。单关内部怎么走节点归关卡节点地图;一场战斗怎么结算归战斗结算;数值曲线归难度曲线与Boss。

负责:

负责 说明
冒险生命周期 待机 / 进行中 / 结算中三态,与完成、失败、放弃三种结局的判定和产出
关卡序列 关卡表(逐关一行的配置表)行集内容的责任方;推进规则:线性、无跳关
生命 跨战斗生命持久性的冒险侧系统资源:每战交出、战后收回、两个恢复口
GP 战斗掉落货币的局内系统资源(显示名「GP」):战斗完成统一入账、商店购买出账、冒险收束清零;统一冒险加算区(商店购买与大奖励同账)
关卡大奖励 非末关通关的两层兑付:专长三选一(选择型,按档配比加权抽取——迭代 20 换代)+ 部分回血(固定型);钥石退役出大奖励,改 Boss/精英击杀战斗掉落
失败重开与放弃 倒下即冒险终;重开等于全新一轮;放弃与失败同型结算
主种子接线 一场冒险一个主种子,冒险内一切随机数派生自它

不负责:

不负责 归谁
单关内节点行进与兑付触发 关卡节点地图
商店房节点的开闭交互与商品陈列 关卡节点地图
轮末结算编排与关卡清库接口 战斗结算
节点奖励件的分类与凭证定义、池结构与抽取机制(案D——共享池库存仍归本文) 奇物
通关率带、敌我数值与 Boss 设计 难度曲线与Boss
钥石与跨局成长 元进度
冒险总结结算(呈现摘要五件事;呈现 spec:design/gdd/ux/settlement-summary.md——旧称「摘要结算画面」随 spec 命名完成退役)与关卡推进指示 HUD框架

在核心循环中的位置

战斗结算(一场战斗的胜负判定)──(战斗结果上报)──▶ 冒险结构(大奖励 / 推进 / 失败重开)──(开始关卡)──▶ 关卡节点地图(单关节点链行进)

核心循环里"一场冒险:关卡串起来的下探"讲的就是本系统的故事线:冒险结构站在"关卡之上、战斗之下"的那一段,向上承接每一场战斗的结果,向下把"下一关开始"的指令交给关卡节点地图。至于存档变厚(钥石攒进存档),发生在冒险之外,归元进度。

核心规则

冒险的一生:开始、推进与三种结局

"冒险"在本文是一个计量单位:玩家从开始新冒险到出局结算的一段完整游玩,由三关串成(关数读关卡表),全程只有一条命。冒险任何时刻恰处三种状态之一:待机(还没开始,或上一局已结算完毕)、进行中(某一关正在推进)、结算中(一关刚宣布结束,正在算通关兑付与结局)。

待机 ──(开始新冒险:注入主种子、生命回满、进第 1 关)──▶ 进行中
进行中 ──(非末关通关)──▶ 部分回血 + 专长三选一停点 ──(玩家点选兑付)──▶ 进下一关(仍在进行中)
进行中 ──(末关通关 / 任意战斗倒下 / 玩家放弃)──▶ 结算中 ──(产出冒险摘要)──▶ 待机

三种结局怎么判、在摘要上留什么标记:

结局 判定时机 摘要标记
冒险完成 最后一关的关底 Boss 被击杀 已打穿
冒险失败 任意一场战斗主角倒下 未打穿
冒险放弃 玩家主动放弃(仅非战斗期受理) 未打穿

每次结算产出一份冒险摘要(本文含义:结算时打出的一份小账单),记五件事:打穿没有、通关几关、止步第几关、钥石入账合计、本局主种子。它是重开后"这局我到第几层"的对照坐标,也是元进度(钥石入账位)与存档序列化(快照域标识与复盘)的输入。

结算受理后只算一次:同一关的结束宣布重复到达时,重复宣布被拒绝并留诊断,系统资源与摘要零变化。

关卡序列:一局打几关、怎么算通关

一场冒险由关卡串成。关卡(本文含义:地牢一层的完整推进——一条节点链加一个关底 Boss)的序列读关卡表:逐关一行的配置表,本文是它行集内容的责任方,表本体与读取机制归数据配置。

MVP 的序列是三关线性:地精洞窟→幽暗地域→灰矮人矿城(2026-09-21 生效)。通关一关(该关关底 Boss 被击杀)自动进下一关;冒险通关 = 最后一关的关底 Boss 被击杀。没有跳关、没有回头路;关卡行进走关卡节点地图的分支节点图(切片第一关为单链特例)。

三关序列均已生效(2026-09-21 冒险结构实现批起;L2 行值随分支节点图批、L3 随第三关内容批落地,见难度曲线与Boss)。

加关纪律:加一关等于一个内容批——节点链行、敌我数值、新元素必须同批落,禁止只加序列不加内容。行集里每个战斗与关底节点都必须在敌人、棋盘生成的数值表里有精确行,冒烟期校验;越界关卡按内容生产缺口拦截。运行期对越界的开始关卡请求与缺失的关卡行一律返回错误并停机——那是配置违约,不是玩家能碰到的状态,不做兜底吞掉。

序列的难度排布消费难度曲线与Boss的逐关通关率带。整局难度由长度叠加:

结论:整局通关率 ≈ 各关通关率的连乘——冒险长度就是难度的总闸。

整局通关率 = 第 1 关通关率 × 第 2 关通关率 × … × 第 N 关通关率

各关通关率目标带的取值归难度曲线与Boss,本文不复制其数值。

生命:一条血走完整场冒险

主角在一场冒险里只有一条血。战斗里扣的、恢复点回的、通关部分回血回的,记的是同一笔;战后剩多少血,就带多少进下一场。关卡切换不做任何生命结算——换的是地图,不是血条。

生命只有四个收支口:

收支口 方向 规则
冒险开始 入 生命置满(基础上限读英雄表)
每场战斗开始 出 生命当前值作为主角生命入参交给这一战
每场战斗结束 入 收回战后生命终值并回写(胜负皆报;倒下记 0,冒险终)
恢复点与通关部分回血 入 全冒险仅有的两个恢复口

战斗开始的生命交接走主角战斗入参覆盖值通道(每战以显式入参传入生命与上限、不改全局表——契约见战斗结算)。恢复口之一是恢复点节点(关卡节点链上回血的一类节点;节点类型分类学归关卡节点地图,本文只写它兑付时生命怎么变):按比例回血并封顶上限,满血时回复 0,是合法状态。另一个恢复口是通关部分回血(见「关卡大奖励」节)。

结论:生命三处写入口一律封顶在 [0, 生效上限];血条跨关只降不自动回。

战后回写:  生命 = 战斗上报的生命终值(倒下记 0,冒险终)
恢复点:    生命 = min( 生命 + floor( 生效上限 × 恢复比例 ÷ 100 ), 生效上限 )
通关回血:  生命 = min( 生命 + floor( 生效上限 × 回血比例 ÷ 100 ), 生效上限 )
战斗入参:  每战交给战斗的上参 = 当前生命、生效上限
变量 含义 行值出处
生效上限 基础上限 + 统一冒险加算区累加(三选一属性件 + 商店购买,见 GP 节) 基础上限读英雄表
恢复比例 恢复点回复生效上限的百分比,逐关配置 读关卡表 rest_heal_pct(provisional)
回血比例 通关部分回血回复生效上限的百分比,全局 读冒险表 clear_heal_pct(provisional)

示例轨迹(纯符号示例、不代具体数值;现行行值读英雄表、关卡表与冒险表):

时刻 生命读数
冒险开始 满血 H₀ / 上限 H₀
逐场战后 递减序列 H₁ > H₂ > …(示例不代数)
恢复点 min(H₂ + floor(H₀ × 恢复比例 ÷ 100), H₀)
关底 Boss 胜后,通关回血 min(H₃ + floor(上限 × 回血比例 ÷ 100), 上限)(满血回 0 合法)
三选一选上限提升件 上限 H₀+Δ 记加算区(对后续每战生效);生命不变
下一关开局 生命当前值 / 生效上限按原值入战(不再自动回满)

冒险内没有其他跨关遗留物:增益随战斗结束清空(归战斗结算)、道具库存随关卡结束清空(由关卡节点地图在收束点编排)、储备行动点随战斗结束清零(归行动经济)。冒险层真正跨关留下的,只有这条命与冒险摘要。

GP:战斗掉落的局内钱包与统一冒险加算区

GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜利掉落、商店房消费、冒险结束清零。它与钥石的记录完全分离——钥石跨局持久、入存档;GP 局内有效、不入存档、不入冒险摘要五件事清单。GP 语义归本文,商店房的开闭交互归关卡节点地图。

独立资源口径(框架见核心循环「生命周期轴」节):GP 与钥石是两条平行独立资源,不立统一上位概念——GP=冒险级独立资源账(本节),钥石=存档级账(归元进度)。各层对 GP 的兑付都是一次性转换入账:转换源(奇物 GP 袋、格面 gp 型等)结算即消尽,只有钱包长存——这是「类A→类C」的转换关系,不是「奖励横跨多层」。

钱包只有三个收支口:

收支口 方向 规则
战斗完成 入 每完成一场战斗统一到账一次:金额 = 掉落掷定 + 关级掉落加值 + 本战战斗内缓冲,随战斗结束信号携带的 gp_dropped 一笔入账
商店购买 出 商店房购买按现行价扣减钱包,余额不足拒绝。价格公式(v0.13 换代——pool 模式现行):ceil(基价 × b^(关序−1) × A^(本次进店已购次数)),A=店内递增/b=跨关递增表因子(provisional 1.8/1.1),ceil 向上单一取整(玩家不利向,杜绝「差 1 GP 反复钓」套利角);legacy 固定三件模式(shop=off 对照承载)沿用旧式 = 基价 + 关级价格加成 + 步长 × 已购档数
冒险收束 清零 完成 / 失败 / 放弃三种结局都清零;重开后钱包从零开始

战斗内缓冲隔离:战斗进行中从格面兑付拿到的 GP(GP 袋正向、破财负向——字典归地图战斗资源)不直接进钱包,而是记入战斗域的中间态缓冲;战斗完成时缓冲随掉落掷定与关级加值一并折进 gp_dropped 统一到账。钱包只在战斗边界变动,战斗域自身零钱包状态——这条隔离让战斗结算保持"折算归我、GP 归冒险结构"的既有边界。

统一冒险加算区:商店购买的属性提升与奖励节点三选一的属性件记同一笔——加算区四轴 {攻击, 生命上限, 护甲等级, 行动点},入战参数 = 基础表值 + 加算区累加,经战斗开始入参的覆盖值通道生效(与生命的上参同一条通道)。购买生命上限时:pool 模式(v0.13——货架件=奖励件本体)只加上限不回当前生命(与三选一件同语义);legacy 模式当前生命与上限同步 +Δ(生命的连带写入口)。属性轴累加源 = 商店购买与奖励节点三选一属性件两类;行动点轴累加源 = 奖励节点三选一 AP 件与商店 AP 件两类(每场战斗开始的首轮行动点基线 +1,语义细节归行动经济跨冒险加成轴节;全冒险获取次数上限最紧 provisional 2 次——v0.14 次数上限退役,池消耗即上限,pool 模式下商店购买与三选一共用令牌库,见下)。

掉落掷定消费 gp_drop 封闭随机流(主种子派生、可回放)。商店货架抽签消费 shop_draw 封闭随机流(v0.13 扩签——每次抽 3〔进店+每次买后重抽〕恰一 scope,与 reward_pick 分签防取数序互扰)。掉落与价格的现行行值读商店表,数值所有权归难度曲线与Boss曲线调参批——本批骨架先行,全部数值 provisional。

共享池账本(v0.13 P1 共享池单点;v0.14 令牌库换代;迭代 20 案D 四级 104 张——池机制事实源=奇物「池结构与抽取」节):商店货架与奖励节点三选一是同一个池——货架候选 = 池∖{GP 袋, 刷新件}∪{凭证} = {攻击, 生命上限, 护甲, 行动点, 回复, 凭证} 六种(GP 袋计价物不自售切边、刷新件不上货架、秘宝件已随同调批出池;凭证与回复随迭代15② 入架——shop.tres pool_shelf 六行);库存 = 剩余令牌数(TP0——「池消耗即上限」,种类次数上限退役,与奖励兑付摘牌同一令牌库承载,全冒险一次性跨关卡不补给):商店买一件,奖励面就少一枚;「无限购买」收敛为钱尽或池空为止(池空=硬闸、A 链爬价=软闸),空货架合法态。货架 = 令牌级抽签(同 kind 去重每 kind 至多一卡,价格公式 tier-blind 维持批②裁定,购买消费在架令牌本体 kind+tier)。禁止两渠道各自私记库存——消费走同一入口写同一令牌库(实现=AdventureRunner.bonus_deck 单点,冒险结构 owner;kind 维度派生计数 bonus_taken 承载断点附随件与读数)。货架独立刷新(v0.15 MC-1 2026-10-04——P-C2+Q2 裁):进店免费刷新次数(基础 0,天赋/营地侧增益位预留)用尽后 GP 付费刷新(ceil(20×1.8^已付费刷) provisional——调参表旋钮 shop_refresh*);重抽=同 pool_draw 共享池抽签(shop_draw 恰一新 scope),池空=不可刷新合法态;进店/离开双向清零付费刷计数。三选一同款付费档(v0.16 2026-10-06 用户令——刷新对齐商店):三选一免费双源(刷新件 X/冒险池 Y,机制现行事实源=秘宝三选一刷新双源节)用尽后 GP 付费刷新——读同 shop_refresh* 两旋钮(单点调参)、扣同一 GP 冒险账本(LevelRunner.spend_gp 单口)、重抽同 reward_pick 共享池抽签;付费刷计数每停点清零(与进店清零同构);钮常驻选择态、免费与付费两源皆穷=禁用。

关卡大奖励:通关回血 + 专长三选一(钥石退役出大奖励)

关卡大奖励(本文含义:非末关通关时的固定+选择兑付)自 2026-09-30 用户拍板重构——原「固定发三件」(上限提升/血回满/钥石入账)退役,改两层兑付;钥石挪为 Boss/精英击杀的战斗掉落。2026-10-11 迭代 20 换代(用户裁 Q1):选择层由提升三选一换代为专长三选一——通关渠道是专长的独占渠道兼唯一直接渠道,候选按档配比加权抽取(机制事实源=奇物渠道轴交叉表与「池结构与抽取」节)。 兑付时点固定:关卡节点地图先调战斗结算的关卡收束接口清空关卡域库存,再向本文宣布关卡结束——大奖励在这之后、下一关开始之前兑付,顺序不可换。非末关每关各兑付一次(现行三关下至多两次,末关不兑付)。

三层奖励框架:

层 触发时刻 类型 内容
专长三选一 关卡通关(非末关) 玩家选择型 候选=专长按档配比加权抽取 3 件呈现(迭代 20 换代),玩家点选 1 件兑付,未选候选不落袋、本次选择不可反悔
钥石掉落 Boss / 精英怪击杀 战斗掉落型 Boss 掉 2–3 个钥石(首杀/复杀两档读表)、精英怪掉 1 个(精英怪未实装,设定登记预留)
部分回血 关卡通关(非末关) 固定兑付型 回复生效上限 × 回血比例(provisional 20%,参考恢复节点量级),封顶上限、不回满;满血回 0 合法

兑付次序:部分回血先行(按当刻生命与上限结算),随后呈现三选一选择停点——零自动推进,必须玩家点选才兑付,重复兑付被拒(结算受理只算一次语义同族)。选择停点可中断:断点附随件扩「奖励选择态 + 件获取次数计数」,续玩已选件不静默丢失;候选逐位一致系停点快照承载的实现现状、非验收义务(不一致不影响玩法——2026-10-01 用户裁决,见「冒险断点」节)。

奖励节点三选一池(结构层——池机制事实源=奇物「池结构与抽取」节,2026-10-11 迭代 20 案D 换代):池 = 四级令牌库 70/25/9/0=104 张(案D——普通打底/优秀·稀有做翼/传说惊喜位空集;曝光槽 = 三选一 2 格全池 + 1 格优秀档以上子池,令牌 = 出现次数上限、概率与已拿上限解耦;构成数字与抽取细节全读奇物与 adventure.tres,provisional 归难度曲线与Boss曲线调参批,本节零复制)。池为冒险级单例(迭代 10 追加批):关卡内奖励节点的三选一与商店货架共享同一令牌库(同库同摘牌),库存 = 剩余令牌数;消费 reward_pick 封闭随机流(主种子派生、数据配置口径),同种子同操作序列同三选项可复放;MC 策略 316-f:autoplay 1 级优先度=最稀有(rarest>rare>common)、2 级=最左。断点附随件承载池余库逐枚还原;兑付语义归关卡节点地图。

秘宝件受同调位约束(2026-10-09 注:道具件已随迭代 11 第①批 T7 出池——三选一/奖励节点/战斗内渠道现行零道具件投放,下述渠道约束与替换交互无现役触发面,保留作渠道恢复时的契约口径;同调位读数现行事实源=attunement_growth.tres 谓词表实时求值):道具持有上限 = 同调位数。读数源 = 同调位里程碑谓词表 attunement_growth.tres 实时求值(0 起步、硬上限 3、增长 = 通关次数 + Boss 击杀数——同调实施批 2026-10-03 落地,过渡读数源 transitional_sync_slots 已顺带退役;原提案八拍板 git 57da58c 已退役)。获取渠道约束形态(迭代 10 过渡承载):三选一道具件超位触发替换交互(现有件与新件 N+1 选 N——丢任一原有件腾位收新,或放弃新件不获取;终态恒 ≤ 同调位);奖励节点与战斗内渠道超位不授予(候选拒绝 + 掉落沉没,逐行归因留痕)——停点渠道全覆盖的替换交互随同调实施批统一完成(原待办清单条目已随完成移除)。

最后一关通关不发三选一与部分回血:没有下一战可受益——只做冒险完成结算,末关 Boss 钥石照常入账。设计意图:清库之后才兑付、末关不兑付,都是从「奖励只朝下一战生效」这一条推出来的。

钥石掉落(退役出大奖励):钥石渠道自本批起 = Boss 击杀掉落 + 精英怪击杀掉落(精英怪未实装,掉 1 个预留)——「每通关一关固定入账 keystone_per_level」退役。Boss 掉落逐杀实时入账:行值读 meta.tres boss_keystone(首杀 3 / 复杀 2,provisional——2026-09-30 拍板贴近「2–3 个」示例量级,保持首杀 ≥ 复杀结构);末关 Boss 击杀照常入账(钥石为战斗掉落,不受「末关不兑付」约束)。钥石为跨局持久资源,消费归元进度(2026-09-17 拍板同一资源语义维持);产出细则与量级配比归元进度设计批。属性件/AP 件值锚与上调约束(换算率估算见调参日志,上调须重扫第二关通关率带)归难度曲线与Boss。

失败重开与主种子:倒下即终,重开即全新一轮

失败没有中间态:任意一场战斗主角倒下,冒险当场结束——没有关卡重试、没有检查点、没有复活,血条归零即终。这是 Roguelike 的既定语义,已锁。

重开 = 全新一轮冒险:注入新主种子、从第一关、满血、空手——不是"重打刚才那一关"。上一局清零的是生命、库存与种子;唯一保留面是冒险摘要,它给每次死亡一个可对照的坐标("这局到第二层"),重开因此是新局面而不是复读。

主动放弃按与失败同型结算:已兑付的三选一件与回血不追回、已到手的保留,摘要标记未打穿。放弃请求只在非战斗期受理,战斗进行中一律拒绝(战斗域单事务执行期间)。放弃的界面入口挂在关卡节点地图的选路覆盖层上——选路停点天然是非战斗期,按钮只在冒险模式开放(选路覆盖层只在冒险模式出现);战斗进行中没有选路停点,入口因此天然不可达,拒绝分支仅作防御兜底。

主种子(本文含义:冒险开始时注入的一个随机种子,本局全部随机性都派生自它)在冒险开始时注入恰一次。冒险内的雷图生成、奖励抽取、遭遇掷骰与 GP 掉落掷定(消费 gp_drop 封闭流)全部派生自它,冒险内不重置、不逐关播种——早期切片"每关开局各自播种"是没有冒险层时的历史简化,已改写为全冒险单一种子。冒险的可复现域 = 主种子 + 全局取数计数器(统一随机流口径——2026-09-27 七流并一,语义权威归数据配置),供复盘与快照(见存档序列化)。重开抽到的种子与上一局相同是允许的(随机源范围小,撞种子不算错误),但生成新种子禁止复用玩法里的随机数。

冒险断点:中断可续玩的停点快照(迭代 8 卡①③)

冒险进行中随时关游戏走人(中断),下次启动可从最近停点继续——承载 = 存档 breakpoint 域(格式归存档序列化,内容口径归本文)。

  • 停点粒度:快照只挂选路停点(入口呈现/战斗胜利后/兑付确认后的选路态)——这是唯一可恢复停点形态。战斗进行中不写快照:中断恢复后当场战斗从头打,棋盘中局不入档。
  • 七字段拍板面:关卡序号 / 节点位 / 生命 / 本关加成区 / GP 钱包 / 商店已购档 / 已抽模板。附随件(续玩正确性必需,顺带登记):主种子 + 取数计数器(rng 快照契约回填——续玩从断点号位精确续接原随机时间线,已抽模板零重抽)、钥石累计(Boss 掉落逐杀入账的中途值,终局摘要不失真)、已到节点序(关卡画面图条重建)、秘宝库存(奖励节点已选件防静默丢失)、奖励选择态(三选一停点中断:已选件 / 同调位替换在途——续玩已选不丢失;候选一致性=快照现状非强求 feature,2026-10-01 用户裁决)、件获取次数计数(kind 维度派生账本——断点附随件与读数承载)、令牌池余库(bonus_deck 逐枚还原——TP0 扩列,池消耗即上限的续玩正确性承载;旧版断点缺键=满库重建防御口径,单版本周期)、商店货架态(当前货架三件 + 本次进店已购次数——P2 甲扩列随迭代 11 第②批;离开店=空架合法态,货架续玩由确定性重放承载:重进店同种子同货架逐位)、Y 刷新池余量(attune_refresh_y——冒险周期池消耗余量随断点:续玩优先读断点、不自参数面整额重注入,堵「用完 Y 退菜单再续玩满血复活」可利用漏洞;旧断点缺键回退参数面=旧档行为零变化。2026-10-13 缺陷修批)。
  • 中断与退出两口径分离(2026-09-29 用户裁决):中断(关游戏)= 留断点可续;退出冒险(放弃流程)= 失败同型结算 + 清除断点——退出后「继续上局」不再出现。
  • 续玩:自断点重建到最近停点(逐字段回填 + 随机流回填),停点处玩家重新选路。三结局(通关/失败/放弃)一律清断点——断点只活在一个进行中的冒险上。
  • 与测量面的关系:断点面只在注入存档承载的正式冒险路径生效;模拟/冒烟不注入 = 整面静默,MC 逐项比对零扰动。

与关卡节点地图的边界:收束点与接口四件套

这条边界是承重的,两边文档都要按它写:冒险结构管序列与结构层——关卡序列、生命、关卡大奖励、失败重开、主种子;单关内的节点行进与兑付触发归关卡节点地图。本文对战斗域与库存域零直调:清库存这件事,本文从不亲手做。

两边的交汇点叫收束点:一关的关底 Boss 被击杀,或主角在任意战斗倒下的那一刻。收束点的次序固定,先清库、后宣布:

关卡收束点(关底 Boss 被击杀,或主角倒下)
  ├─ 第一步:关卡节点地图调[战斗结算](../战斗循环/战斗结算.md)的关卡收束接口——清空关卡域库存,返回清空前计数
  └─ 第二步:关卡节点地图向冒险结构宣布关卡结束(通关 / 倒下)
       ├─ 通关且非末关 → 部分回血 + 专长三选一停点 →(玩家点选兑付)开始下一关
       ├─ 通关且是末关 → 冒险完成结算
       └─ 倒下 → 冒险失败结算

本文只接结果、不发指令进战斗:不调用任何战斗域接口,也不碰库存。通关宣布到达时,默认库存已清;出现结构性异常(例如宣布通关但生命不为正)按防御断言拦截。

接口契约四件套——开始关卡 / 战斗结果上报 / 治疗封顶回报 / 关卡结束——是关卡节点地图文档的强制输入,本文按现行口径如实登记:

接口 方向 时点 载荷
开始关卡 本文 → 关卡节点地图 冒险开始 / 每次关卡推进 关卡序号、当前生命、生效上限
战斗结果上报 关卡节点地图 → 本文 每场战斗结束后(胜负皆报) 战后生命终值(倒下记 0)
治疗封顶回报 关卡节点地图 → 本文 恢复点节点兑付时 恢复比例(读该关配置行);本文按比例回血并封顶
关卡结束 关卡节点地图 → 本文 关卡收束点(已先清库) 结果(通关 / 倒下)、生命终值、节点位置

至于一场战斗在哪个节点开打、打谁,组装编排归关卡节点地图;它组装战斗开始调用时,主角生命与上限取自本文下放的值,攻防属性 = 基础表值 + 统一冒险加算区累加(覆盖值通道)。

依赖与输出

这张表就是删除任何一方时的影响面清单。

方向 系统 接口要点
上游 难度曲线与Boss 逐关通关率带是序列难度排布的输入;三关序列均已生效(地精洞窟→幽暗地域→灰矮人矿城),无未落前置;大奖励与恢复点数值的联动复验归它
上游 数据配置 关卡表与冒险表(单行全局)的承载与统一读取,本文是两表的内容与回填责任方;主种子的注入入口(随机服务)
上游 战斗结算 主角战斗入参覆盖值通道(本文供生命与上限);关卡收束接口由关卡节点地图收束点调用,本文零直调;战后生命终值与本战 GP 掉落(gp_dropped)经上报读回
下游 关卡节点地图 接口契约四件套 + 收束点语义,本文是定义源,也是其文档的强制输入
下游 元进度 冒险摘要承载钥石入账合计(元进度是消费方);冒险开始参数面预留(未来跨局加成在此注入,MVP 空参数)
下游 存档序列化 快照契约域单位 = 冒险(主种子 + 随机流计数器);摘要含主种子供复盘;断点域 breakpoint 内容 owner = 本文(迭代 8 卡①——七字段+附随件,见「冒险断点」节)
下游 HUD框架 冒险总结结算、关卡推进指示、放弃入口(非战斗期)的数据源 = 冒险摘要与状态投影;商店覆盖层与 GP 余额常驻读数的钱包数据源

P0 最小闭环

  1. 待机中开始新冒险:注入新主种子(恰一次)、生命置满、序列位置 = 第 1 关。
  2. 开始关卡:把关卡序号、当前生命、生效上限下放关卡节点地图,后者加载节点图并停在入口选路停点(关卡画面),行进自玩家首次选路开始。
  3. 每场战斗结束:战斗结果上报到达,生命回写终值;上报为 0(倒下)直接走失败结算。
  4. 恢复点节点:治疗封顶回报到达,按比例回血并封顶。
  5. 关底 Boss 被击杀 = 收束点:关卡节点地图先调战斗结算清库,再向本文宣布关卡结束(通关)。
  6. 非末关通关:部分回血兑付 + 呈现专长三选一停点(玩家点选兑付恰一件),随后开始下一关;末关通关:只做冒险完成结算(Boss 钥石照常逐杀入账)。
  7. 冒险结算(完成 / 失败 / 放弃)产出冒险摘要,回到待机;重开即全新一轮,回到第 1 步。

P1 / P2 后置

优先级 内容 后置原因
P2 冒险开始参数面消费 预留给未来跨局加成注入(MVP 空参数,结构同覆盖值通道);归元进度
P2 冒险长度扩展(多于三关) 现行三关对比愿景单局 20–40 分钟;扩关 = 内容批,节奏按真人单关时长数据定

调参表

全部数值存配置表、经统一读取口读入,代码里零数值字面量;表本体与读取机制归数据配置。已锁字段以 data/schemas/level_table.gd/adventure_table.gd 声明与对应 .tres 行值为准。

参数 域 现行值 说明
关卡行集(关数与节点链模板) 关卡表逐关行 三关现行(逐关 templates 池 3 关 × 5,模板 0 = 回滚档——见关卡节点图生成) 加关 = 内容批(链行 + 敌我数值 + 新元素同批);L1 回滚档模板 = 两战 → 奖励 → 两战 → 恢复 → 关底 Boss(7 节点,战斗深度 5)
恢复比例 int [0,100],逐关行 见 level.tres rest_heal_pct(provisional) 恢复点回复生效上限的百分比;随上限加成同步放大;100 = 恢复点变全满泉,0 = 死节点
上限提升 int [0,999],冒险表逐件列 adventure_table bonus_attack_flat / bonus_max_hp_flat / bonus_armor_flat(provisional) 三选一属性件各自兑付值;值锚与上调约束归难度曲线与Boss
三选一件值(其余) int [0,999],冒险表 kind×tier 列族 adventure_table curio_value_*(GP 袋 / AP 件 / 恢复 / 刷新,provisional) 令牌件值读表;道具件授予件数随秘宝件出池退役
三选一权重(v0.14 退役——令牌池档位配额即分布、无独立权重 knob) — — E-S 加权洗牌不放回抽样权重随 TP0 令牌池换代退役
件次数上限 int [0,99],冒险表逐件键(v0.14 退役——池消耗即上限) adventure_table token_* 配额列族(TP0 令牌池——kind×tier 配额) 达上限件先剔出牌库永不再现 → 池耗即枯竭
通关回血比例 int [0,100],冒险表单行全局 adventure_table clear_heal_pct(provisional 20) 通关部分回血回复生效上限的百分比;封顶上限不回满
同调位过渡键(已退役——迭代 11 第①批 T7,过渡键随表退役) — 同调位读数源 = attunement_growth.tres 谓词表实时求值(slot_cap 3) 切换义务已随 2026-10-03 同调实施批清偿
Boss 钥石掉落 int [0,999],meta 表逐关行 meta.tres boss_keystone 首杀 3 / 复杀 2(provisional) 逐杀实时入账;精英怪掉 1 预留;消费方归元进度
GP 经济参数 商店表逐行 见 shop.tres gp_drops / level_gp_bonus / pool_shelf / price_a / price_b(provisional,以 shop.tres 为准;legacy products / price_level_bonus 随对照模式保留) 掉落均值与区间(普通/精英/Boss)、关级掉落加值、货架基价、A/b 价格因子;公式语义归本文,数值所有权归难度曲线与Boss曲线调参批

结构冻结(非调参项):序列线性无跳关、关底 Boss 恒为末节点、倒下即冒险终、大奖励构成 = 通关部分回血 + 专长三选一(按档配比加权抽取——2026-10-11 迭代 20 换代;钥石退役出大奖励,改 Boss/精英击杀掉落——2026-09-30 拍板重构)、一冒险一主种子、收束点先清库后宣布的次序。

参数联动:恢复比例与通关回血比例越厚通关越有余量(对冲杠杆语义归难度曲线与Boss);三选一属性件/AP 件抬高后续战斗强度,件值/权重/上限改值须按难度曲线与Boss的口径重扫通关率带(回血比例自「血回满」改 20% 系难度上压方向,带判定顺带呈报)。

验收标准

  • 开始新冒险:主种子注入恰一次,生命账本置满,从第 1 关起步,关卡行集加载零诊断。
  • 通关推进:非末关宣布通关后,部分回血恰兑付一次(封顶上限、满血回 0 合法)且三选一恰呈现一次;点选后恰兑付选中一件、未选项零生效;随后开始下一关。
  • 末关通关:只做完成结算——不发三选一与回血、无下一关;摘要标记已打穿;钥石 = 逐杀 Boss 掉落合计(末关 Boss 击杀照常入账)。
  • 任意战斗倒下:冒险失败结算;摘要记通关数与止步关卡;状态封闭。
  • 重开:全状态重置(生命、序列位置、库存域空、摘要新生成)并注入新主种子。
  • 生命一致性:每战开始的上参 = 生命当前值与生效上限;战后生命 = 上报终值;三处写入口均封顶在 [0, 生效上限]。
  • 恢复点:回复 = floor(生效上限 × 恢复比例 ÷ 100) 后封顶;满血腿回复 0 合法。
  • 大奖励覆盖:三选一兑付后首战的入参 = 基础表值 + 加算区累加含选中件(覆盖值通道);AP 件兑付后每场战斗开始首轮行动点基线 +1。
  • 抽签封闭:三选一掷 3 消费 reward_pick 封闭流,同种子同操作序列同三选项;单次零重复;令牌耗尽快即枯竭、不再出现在候选(池消耗即上限)。
  • 同调位约束:道具终态持有恒 ≤ 同调位(谓词表实时求值);超位时停点渠道触发替换交互(丢旧收新 / 放弃新件两路),战斗内渠道沉没不入;奖励节点渠道同受约束。(现行零道具件投放——约束保留作契约,见「秘宝件受同调位约束」节注。)
  • 钥石逐杀:Boss 击杀后钥石累计增量 = boss_keystone 行值(首杀/复杀两档);大奖励面钥石入账零残留。
  • 收束次序:通关宣布到达时库存已被关卡节点地图先行清空;重复的关卡结束宣布被拒绝,状态与摘要零变化。
  • 覆盖义务:冒烟断言——行集内每个战斗与关底节点(关、深)在敌人与棋盘生成的数值表中有精确行;序列关数 = 行集关数。
  • 生效前提未兑现(第二关行缺行):以单关冒险运行(合法态),越界关断言显式跳过而非失败。
  • 放弃:战斗中的放弃请求被拒绝;非战斗期放弃按失败同型结算,已获大奖励不追回;放弃入口仅在选路停点呈现且只在冒险模式开放。
  • 种子域:冒险内零随机流自开,一切随机派生自主种子(含 GP 掉落掷定的 gp_drop 封闭流);同种子同操作序列两局逐位可复现。
  • GP 账本封闭:钱包只有三个收支口——战斗完成入账恰一次(掉落掷定 + 关级加值 + 战斗内缓冲合计)、商店购买出账、冒险收束清零;战斗内缓冲与钱包隔离,战斗进行中钱包零变动。
  • GP 不留痕:GP 不入 meta 永久进度域、不入冒险摘要;重开后钱包从零开始(唯一豁免 = 断点域瞬态快照,见「冒险断点」节)。
  • 加算区同笔:商店购买与三选一属性件读同一套统一冒险加算区(四轴);pool 模式购买生命上限只加上限不回当前生命(与三选一件同语义;legacy 对照模式当前生命与上限同步 +Δ);入战参数 = 基础表值 + 加算区累加(覆盖值通道)。

待办

本系统待办条目已统一收编至 待办清单,本节不再逐条登记。