From 15352170db3c777aa971c6918daaa40ad38f6889 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Mon, 2 Nov 2026 23:05:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3(=E6=9E=B6=E6=9E=84=E5=AE=A1?= =?UTF-8?q?=E6=9F=A5=E6=95=B4=E6=94=B9=C2=B73.1+3.2=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E8=90=BD=E6=96=87):=20=E4=BA=94=E4=BB=BD=20owner=20=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E4=B8=BA=E7=A1=AC=E7=BC=96=E7=A0=81=E6=95=B0=E5=80=BC?= =?UTF-8?q?=E5=85=A5=E8=A1=A8=E7=AB=8B=E4=BA=8B=E5=AE=9E=E6=BA=90=E2=80=94?= =?UTF-8?q?=E2=80=94=E5=A4=A9=E8=B5=8B=E6=A0=91=20v0.12(=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E3=80=8E=E8=A7=84=E5=88=99=E9=94=AE=E5=8F=82=E6=95=B0=E8=A1=A8?= =?UTF-8?q?=E3=80=8F=E5=85=AD=E9=94=AE=E5=8F=82=E6=95=B0=E5=90=8D=E4=B8=8E?= =?UTF-8?q?=E5=8F=96=E5=80=BC=E5=9F=9F/=E8=AE=A2=E6=AD=A3=E4=B8=89?= =?UTF-8?q?=E5=A4=84=E3=80=8E=E9=99=90=E6=AC=A1=E5=80=BC=E4=BA=8B=E5=AE=9E?= =?UTF-8?q?=E6=BA=90=3Dmeta=5Ftree.tres=E3=80=8F=E4=B8=8E=E3=80=8E?= =?UTF-8?q?=E6=9C=BA=E5=88=B6=E7=A1=AC=E7=BC=96=E7=A0=81=E6=97=A0=E8=A1=A8?= =?UTF-8?q?=E8=A1=8C=E3=80=8F=E5=A4=B1=E5=AE=9E=E5=8F=A5/economy=5Fspend?= =?UTF-8?q?=20=E6=8A=98=E4=BB=B7=E5=8F=82=E6=95=B0=E8=87=AA=20shop=20?= =?UTF-8?q?=E8=A1=A8=E6=94=B6=E5=9B=9E=E8=8A=82=E7=82=B9=E8=A1=8C/?= =?UTF-8?q?=E9=AA=8C=E6=94=B6=E6=A0=87=E5=87=86=E8=A1=A5=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E6=A0=A1=E9=AA=8C)=20=C2=B7=20=E5=85=B3?= =?UTF-8?q?=E5=8D=A1=E8=8A=82=E7=82=B9=E5=9B=BE=E7=94=9F=E6=88=90=20v1.4(?= =?UTF-8?q?=E8=B0=83=E5=8F=82=E8=A1=A8=E8=A1=A5=E4=B8=89=E8=A1=8C:=20?= =?UTF-8?q?=E5=B2=94=E5=8F=A3=E5=8F=96=E4=B8=89=E5=8E=BB=E8=B7=AF=E6=A6=82?= =?UTF-8?q?=E7=8E=87/=E5=90=8C=E6=B7=B1=E5=BA=A6=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=AE=BD=E5=BA=A6=E4=B8=8A=E9=99=90/=E5=A1=AB=E5=85=85?= =?UTF-8?q?=E4=BA=A4=E6=9B=BF=E8=B5=B7=E5=A7=8B;=20=E4=BA=A7=E5=87=BA?= =?UTF-8?q?=E7=BA=A6=E6=9D=9F=E5=AE=BD=E5=BA=A6=E8=A1=8C=E6=94=B9=E6=8C=87?= =?UTF-8?q?=E9=92=88)=20=C2=B7=20=E5=86=92=E9=99=A9=E7=BB=93=E6=9E=84=20v1?= =?UTF-8?q?.4(=E8=B0=83=E5=8F=82=E8=A1=A8=E8=A1=A5=E8=B4=A7=E6=9E=B6?= =?UTF-8?q?=E4=BD=8D=E6=95=B0=E8=A1=8C/GP=20=E5=8F=82=E6=95=B0=E8=A1=8C?= =?UTF-8?q?=E6=A0=87=E6=B3=A8=E8=81=9A=E6=95=A3=E4=B8=A4=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=BD=92=E5=A4=A9=E8=B5=8B=E6=A0=91/=E3=80=8E=E6=AF=8F?= =?UTF-8?q?=E6=AC=A1=E6=8A=BD=203=E3=80=8F=E6=94=B9=E6=8C=87=E9=92=88)=20?= =?UTF-8?q?=C2=B7=20=E5=9C=B0=E5=BD=A2=E5=8F=98=E5=BC=82=20v1.2(=E8=B0=83?= =?UTF-8?q?=E5=8F=82=E8=A1=A8=E6=94=B9=E5=8F=96=E5=80=BC=E5=9F=9F+?= =?UTF-8?q?=E6=8C=87=E9=92=88=E5=BD=A2=E6=80=81,=20=E8=A1=A5=20pack=5Fmin?= =?UTF-8?q?=20=E8=A1=8C;=20=E8=AE=A2=E6=AD=A3=20per=5Flevel=5Fbonus=20?= =?UTF-8?q?=E6=96=87=E6=A1=A3=20+2=20=E2=86=94=20=E8=A1=A8=E5=80=BC=200=20?= =?UTF-8?q?=E6=BC=82=E7=A7=BB;=20=E5=85=AC=E5=BC=8F=E4=B8=8E=E5=BD=A2?= =?UTF-8?q?=E7=8A=B6=E5=8F=A5=E6=94=B9=E6=8C=87=E9=92=88)=20=C2=B7=20?= =?UTF-8?q?=E6=A3=8B=E7=9B=98=E7=94=9F=E6=88=90=20v1.2(=E8=B0=83=E5=8F=82?= =?UTF-8?q?=E8=A1=A8=E8=A1=A5=E5=87=BA=E7=94=9F=E5=8C=BA=E8=BE=B9=E9=95=BF?= =?UTF-8?q?=E8=A1=8C;=20=E4=B8=A4=E6=9D=A1=E5=B8=83=E9=9B=B7=E5=85=AC?= =?UTF-8?q?=E5=BC=8F=E3=80=8E=E2=88=929=E3=80=8F=E6=94=B9=E6=8C=87?= =?UTF-8?q?=E9=92=88;=20r0=5Fmax=5Fcap=20=E5=9F=9F=E4=B8=8B=E9=99=90?= =?UTF-8?q?=E6=94=B9=E6=8C=87=E9=92=88);=20=E6=96=87=E6=A1=A3=E5=9F=9F?= =?UTF-8?q?=E9=97=B8=E5=85=A8=E7=BB=BF(cb92ab10)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- design/gdd/systems/冒险循环/关卡节点图生成.md | 7 +++-- design/gdd/systems/冒险循环/冒险结构.md | 7 +++-- design/gdd/systems/排雷循环/地形变异.md | 17 ++++++----- design/gdd/systems/排雷循环/棋盘生成.md | 9 +++--- design/gdd/systems/跨局循环/天赋树.md | 29 ++++++++++++++----- 5 files changed, 44 insertions(+), 25 deletions(-) diff --git a/design/gdd/systems/冒险循环/关卡节点图生成.md b/design/gdd/systems/冒险循环/关卡节点图生成.md index 3e276f35..bc870691 100644 --- a/design/gdd/systems/冒险循环/关卡节点图生成.md +++ b/design/gdd/systems/冒险循环/关卡节点图生成.md @@ -1,7 +1,7 @@ # 关卡节点图生成 > 一句话:一关的节点图从哪来——生成器按参数长出一张合法图 -> 状态:现行为 v1.3 +> 状态:现行为 v1.4 ## 设计目的 @@ -43,7 +43,7 @@ | 约束 | 内容 | |---|---| | 道路系统 | 图=主路+支路;除岔口节点(两条以上去路的节点)外每个节点恰一条去路;岔口去路 2–3 条 | -| 宽度=分叉生长 | 不摆平行层;同深度节点数由岔口自然长出(1→2→3→4……) | +| 宽度=分叉生长 | 不摆平行层;同深度节点数由岔口自然长出,至宽度上限为止(上限读参数档,见调参表) | | 层高=沿路步数 | 入口到终点的最长路径步数;第一关 ≥6,逐关递增且增幅变大 | | 出口归属锁定 | 多终点时由大岔口把图分成互不连达的分支区域,各区域只通向自己的终点;每个终点前一层节点的去路集合恰含一个终点——选路=提前承诺打谁 | | 战斗节点保底 | 奖励/恢复/商店占位后战斗节点量不被挤没(保底数进调参表) | @@ -111,6 +111,9 @@ | 层深 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 | 多终点让「走哪条=打谁」成立;大岔口自第二关起 | 已锁范围 | diff --git a/design/gdd/systems/冒险循环/冒险结构.md b/design/gdd/systems/冒险循环/冒险结构.md index 7d9cbacd..fd1f048a 100644 --- a/design/gdd/systems/冒险循环/冒险结构.md +++ b/design/gdd/systems/冒险循环/冒险结构.md @@ -1,7 +1,7 @@ # 冒险结构 > 一句话:整局冒险的关卡序列、失败与大奖励 -> 状态:已定稿(自旧体系迁移);现行为 v1.3 +> 状态:已定稿(自旧体系迁移);现行为 v1.4 ## 设计目的 @@ -150,7 +150,7 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜 **统一冒险加算区**:商店购买的属性提升与奖励节点三选一的属性件记**同一笔**——加算区四轴 {攻击, 生命上限, 护甲等级, 行动点},入战参数 = 基础表值 + 加算区累加,经战斗开始入参的覆盖值通道生效(与生命的上参同一条通道)。购买生命上限时:pool 模式(v0.13——货架件=奖励件本体)只加上限不回当前生命(与三选一件同语义);legacy 模式当前生命与上限同步 +Δ(生命的连带写入口)。属性轴累加源 = 商店购买与奖励节点三选一属性件两类;行动点轴累加源 = 奖励节点三选一 AP 件与商店 AP 件两类(每场战斗开始的首轮行动点基线 +1,语义细节归[行动经济](../排雷循环/行动经济.md)跨冒险加成轴节;~~全冒险获取次数上限最紧 provisional 2 次~~——v0.14 次数上限退役,池消耗即上限,pool 模式下商店购买与三选一共用令牌库,见下)。 -掉落掷定消费 gp_drop 封闭随机流(主种子派生、可回放)。**商店货架抽签消费 shop_draw 封闭随机流**(v0.13 扩签——每次抽 3〔进店+每次买后重抽〕恰一 scope,与三选一抽签分签防取数序互扰)。掉落与价格的现行行值读商店表,数值所有权归[难度曲线与Boss](难度曲线与Boss.md)曲线调参批——本批骨架先行,全部数值 provisional。 +掉落掷定消费 gp_drop 封闭随机流(主种子派生、可回放)。**商店货架抽签消费 shop_draw 封闭随机流**(v0.13 扩签——每次抽一批〔进店+每次买后重抽〕恰一 scope,批大小=货架位数读商店表,与三选一抽签分签防取数序互扰)。掉落与价格的现行行值读商店表,数值所有权归[难度曲线与Boss](难度曲线与Boss.md)曲线调参批——本批骨架先行,全部数值 provisional。 **共享池账本(v0.13 P1 共享池单点;v0.14 令牌库换代;迭代 20 案D 四级 104 张——池机制事实源=[奇物](奇物.md)「池结构与抽取」节)**:商店货架与奖励节点三选一是**同一个池**——货架候选 = 池∖{GP 袋, 刷新件}∪{凭证} = {攻击, 生命上限, 护甲, 行动点, 回复, 凭证} 六种(GP 袋计价物不自售切边、刷新件不上货架、秘宝件已随同调批出池;凭证与回复随迭代15② 入架——shop.tres pool_shelf 六行);**库存 = 剩余令牌数**(TP0——「池消耗即上限」,种类次数上限退役,与奖励兑付摘牌同一令牌库承载,全冒险一次性跨关卡不补给):商店买一件,奖励面就少一枚;「无限购买」收敛为**钱尽或池空为止**(池空=硬闸、A 链爬价=软闸),空货架合法态。货架 = **令牌级抽签**(同 kind 去重每 kind 至多一卡,价格公式 tier-blind 维持批②裁定,购买消费在架令牌本体 kind+tier)。禁止两渠道各自私记库存——消费走同一入口写同一令牌库(令牌多重集单点:池与判定归该单点持有,各 kind 的派生计数与断点附随件同在这一点上承载)。**货架独立刷新(v0.15 MC-1 2026-10-04——P-C2+Q2 裁)**:进店免费刷新次数(基础 0,天赋/营地侧增益位预留)用尽后 GP 付费刷新(ceil(20×1.8^已付费刷) provisional——调参表旋钮 shop_refresh_*);重抽=共享池抽签(shop_draw 恰一新 scope),池空=不可刷新合法态;进店/离开双向清零付费刷计数。**三选一同款付费档(v0.16 2026-10-06 用户令——刷新对齐商店)**:三选一免费双源(刷新件与冒险池两笔,机制现行事实源=[秘宝](../跨局循环/秘宝.md)三选一刷新双源节)用尽后 GP 付费刷新——读同 shop_refresh_* 两旋钮(单点调参)、扣同一 GP 冒险账本(同一扣账入口)、重抽同三选一共享池抽签;付费刷计数每停点清零(与进店清零同构);钮常驻选择态、免费与付费两源皆穷=禁用。 @@ -271,7 +271,8 @@ GP(显示名「GP」)是冒险内的一次性属性提升货币:战斗胜 | 关卡完成回血比例 | 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曲线调参批 | +| 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曲线调参批。财富之道「聚」的掉落乘数与「散」的消费折价两参数归[天赋树](../跨局循环/天赋树.md)规则键参数表(长在节点行,商店表不持) | +| 货架位数 | int [1, 6],商店表单行全局 | 见 shop.tres shelf_size(provisional) | 进店与每次购买后重抽时,货架同时陈列的商品件数;池余令牌不足时按余量陈列,空架合法 | 结构冻结(非调参项):序列线性无跳关、终点恒为 Boss(终点可多个、各在路径最深处)、倒下即冒险终、大奖励构成 = 关卡完成部分回血 + 专长三选一(按档配比加权抽取)、一冒险一主种子、收束点先清库后宣布的次序。 diff --git a/design/gdd/systems/排雷循环/地形变异.md b/design/gdd/systems/排雷循环/地形变异.md index f8530f1a..caa9995a 100644 --- a/design/gdd/systems/排雷循环/地形变异.md +++ b/design/gdd/systems/排雷循环/地形变异.md @@ -1,7 +1,7 @@ # 地形变异 > 一句话:格子的非雾变异(荆棘丛/藤蔓缠绕/岩浆/烬覆/落石/矿尘)与 Boss 图整图变异(贫矿脉),挖掘中可遭遇的地貌偏离 -> 状态:已定稿(首批类型随 2026-09-19 定稿批落地,第三关一对随 2026-09-20 第三关内容批落地;首个整图变异随 2026-10-04 全局作用域变异首发批落地);现行为 v1.1 +> 状态:已定稿(首批类型随 2026-09-19 定稿批落地,第三关一对随 2026-09-20 第三关内容批落地;首个整图变异随 2026-10-04 全局作用域变异首发批落地);现行为 v1.2 ## 设计目的 @@ -91,8 +91,8 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照 变异在战斗初始化末段布置:初始展开完成、地图战斗资源格设置之后,由战斗结算的编排段执行。候选池非空时从池内均匀选一类型,按布置参数生长连通片写入格子快照: -- 数量 = round(候选池格数 × percent_of_cells / 100) + (关卡序号 − 1) × per_level_bonus(当前 5% + 每关 +2——百分比的基数是候选池格数而非总格数:初始展开通常占全板过半,按总格数取数会使变异在剩余可挖格中的实际密度远超配置值(2026-09-21 用户拍板基数修正);percent 承载"占可挖格比例",关卡递增由 per_level_bonus 绝对格数承载"越深越险";provisional 归难度曲线与Boss)。 -- 形状 = 全连通生长(8 邻),单片 ≤ pack_max(当前 4:2×2 / 1×4 / 1×3+1 等形;2026-09-19 用户拍板)。 +- 数量 = round(候选池格数 × percent_of_cells / 100) + (关卡序号 − 1) × per_level_bonus(两参数现行值读变异表——百分比的基数是候选池格数而非总格数:初始展开通常占全板过半,按总格数取数会使变异在剩余可挖格中的实际密度远超配置值(2026-09-21 用户拍板基数修正);percent 承载"占可挖格比例",关卡递增由 per_level_bonus 绝对格数承载"越深越险";provisional 归难度曲线与Boss)。 +- 形状 = 全连通生长(8 邻),单片格数落在 [pack_min, pack_max] 内(两端读变异表;2026-09-19 用户拍板形状约束)。 - 候选格域 = 安全格 − 初始展开区,且排除危险格。 - 布置取数走专用随机流(variant_place,一板恰一 scope),换图/轮内刷新图各取号一次,确定性可复放。 - 生成器管线不布置变异(产物恒零变异格)——布置域的"未开"语义由设置顺序保障。 @@ -137,11 +137,12 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照 ## 调参表 -| 参数 | 现行值 | 归属 | +| 参数 | 取值域 | 归属 | |---|---|---| -| 布置数量基数 percent_of_cells | 5(候选池格数百分比,2026-09-21 基数修正) | 难度曲线与Boss(provisional) | -| 关卡递增 per_level_bonus | +2 格/关 | 难度曲线与Boss(provisional) | -| 连通片上限 pack_max | 4 | 定稿值(2026-09-19 用户拍板形状约束) | +| 布置数量基数 percent_of_cells | percent [0, 50](候选池格数百分比,2026-09-21 基数修正);现行值读 `variation.tres` 表头 | 难度曲线与Boss(provisional) | +| 关卡递增 per_level_bonus | int [0, 9] 格/关;现行值读 `variation.tres` 表头 | 难度曲线与Boss(provisional) | +| 连通片下限 pack_min | int [1, pack_max];现行值读 `variation.tres` 表头 | 形状约束:单片至少几格连通成片,与 pack_max 合为成包尺寸域 | +| 连通片上限 pack_max | int [pack_min, 9];现行值读 `variation.tres` 表头 | 定稿值(2026-09-19 用户拍板形状约束) | | 直伤量 effect_value | 荆棘丛 1 / 岩浆 2 / 落石 3 | 难度曲线与Boss(provisional,加法核 [1,9]) | | 资源面偏斜 effect_value | 贫矿脉 30(生存族下调百分比;0=中性 off 锚;总期望微降 3-5% 为 provisional 设计目标——精确方向与幅度归读数批判读只测不判) | 难度曲线与Boss(provisional,域 [0,50]——2026-10-04 首发批投值) | @@ -152,6 +153,6 @@ region 型变异是「格子级」的:布置段往候选格域写格子快照 - 候选池空合法:门控筛空(池空或候选域碎片化不足)时静默零布置,配置加载零错误、零警告。 - 零特判(负验收):排雷玩法的挖格、封印、连锁展开执行路径中不存在任何按变异类型分支的代码;读取方按 effect/trigger/placement 枚举路由。 - 数据生命周期:格子携带的变异是只读数据——战斗初始化末段布置、随图消亡,布置后零运行时写入,无跨图存续;生成器产物恒零变异格。 -- 布置域:变异格全在初始展开区外(伤害型 closed_only 由设置顺序结构保障)且不吃危险格;每图至多一种类型;连通片 ≤ pack_max。 +- 布置域:变异格全在初始展开区外(伤害型 closed_only 由设置顺序结构保障)且不吃危险格;每图至多一种类型;连通片格数落在 [pack_min, pack_max] 内。 - 配套义务闭环(**已作废,2026-10-03 终裁**):原「定稿批须含反制兑现条目否则验收不通过」随反制道具配套义务一并作废;counter_items 恒空为合法态。 - 全局作用域型(2026-10-04 首发批):替换制生效——Boss 图恰一行整图变异+零格子级变异标记;普通图 region 路径逐位不变(同种子布置/摇号快照与批前基线逐项比对);off 态零扰动(effect_value=0 资源摇号与无偏斜逐位相同,白名单三行任何状态逐位不动);L1 Boss 零全局变异;Boss 图全局池空回落 region;全局取用零取号(确定性,不消费布置随机流);资源面偏斜正向池合计恒 77。 diff --git a/design/gdd/systems/排雷循环/棋盘生成.md b/design/gdd/systems/排雷循环/棋盘生成.md index f02af99c..9559015d 100644 --- a/design/gdd/systems/排雷循环/棋盘生成.md +++ b/design/gdd/systems/排雷循环/棋盘生成.md @@ -1,7 +1,7 @@ # 棋盘生成 > 一句话:棋盘怎么生成、怎么保证可推理可清图 -> 状态:已定稿(自旧体系迁移);现行为 v1.1 +> 状态:已定稿(自旧体系迁移);现行为 v1.2 ## 设计目的 @@ -52,7 +52,7 @@ 生成(关卡序号, 节点深度, 种子) → 棋盘 + 生成期指标集 ① 参数解析 ─── 读对应参数行,生成开始时单次读取并快照 ▼ - ② 布雷 ─────── 雷数 N = round(雷密度 × (宽×高 − 9))(先定数;9 = 出生 3×3 恒排除) + ② 布雷 ─────── 雷数 N = round(雷密度 × (宽×高 − 出生格数))(先定数;出生格数 = 出生区边长²,读表,出生区恒排除) │ 在"全格 − 出生 3×3"范围均匀布雷 │ 开局免费展开域外扩一圈,圈内的雷移除(只减不增、不重投、无迭代) ▼ @@ -79,7 +79,7 @@ **结论**:雷数先定数、再落位;零雷板与安全格不足的参数组合在加载期就被拒绝。 ``` -布雷数 N = round(mine_density × (board_width × board_height − 9)) (9 = 出生 3×3 恒排除) +布雷数 N = round(mine_density × (board_width × board_height − 出生格数)) (出生格数 = 出生区边长²,读表;出生区恒排除) 下限校验:N ≥ 1(零雷板加载期拒绝) 计数可行:board_width × board_height − N ≥ min_safe_count(加载期校验) 产物断言:实际安全格数 ≥ min_safe_count;实际雷数 ≤ N(先布后删只减不增) @@ -211,7 +211,8 @@ | max_gen_attempts | int [1, 32] | 域 [1, 32],现行按行取值见 board_gen.tres | 生成-验证重试上限;受成本闸联合约束 | | board_type | String,词表 {dungeon, underdark, deep_underdark} | 现行值见 board_gen.tres(词表 v1.1,2026-09-20 第三关内容批增补) | 图类型标签(玩家侧「地图类型」);域校验 = 词表成员检查 | | shave_ring_radius | int [0, 2] | 现行 1(board_gen.tres 全行) | 先布后删剃雷半径:剃雷域=距出生中心切比雪夫距离 ≤1+r 的格(r=1 → 5×5=25 格;r=0 即只剃出生 3×3 本身=无环剃雷)。**2026-10-05 初始展开收窄批新参数**(调参项非结构冻结) | -| r0_max_cap | int [出生格数 9, 板格数一半](护栏,违例加载期致命) | 现行按板形:10×10=45 / 12×12=43 / 13×13=51 / 14×14=59(board_gen.tres) | 自然 R₀(开局免费展开格数)上限闸=合法性门;超阈整板重掷、耗尽走三分出口。板面 30% 锚(30/43/51/59)经 S1 停机呈报用户裁上调:10×10→45(r=1 自然均值 39>30 结构性倒挂;其余行 30% 锚维持)。**2026-10-05 初始展开收窄批新参数** | +| r0_max_cap | int [出生格数, 板格数一半](护栏,违例加载期致命;出生格数=出生区边长自乘,读出生区行) | 现行按板形:10×10=45 / 12×12=43 / 13×13=51 / 14×14=59(board_gen.tres) | 自然 R₀(开局免费展开格数)上限闸=合法性门;超阈整板重掷、耗尽走三分出口。板面 30% 锚(30/43/51/59)经 S1 停机呈报用户裁上调:10×10→45(r=1 自然均值 39>30 结构性倒挂;其余行 30% 锚维持)。**2026-10-05 初始展开收窄批新参数** | +| 出生区边长 | int [3, 5],奇数(中心对称,side = 2r+1);现行值读 board_gen.tres 表头 | 表头全局单值(非逐行) | 玩家出生区为以出生中心对称的 side×side 方区,区内恒无雷;布雷域基与 r0_max_cap 护栏下限均由它导出(格数 = side²)。**2026-11-02 架构整改批新参数**(原为代码常量,入表后格数零字面量) | 结构冻结(非调参项):键结构与每关深度 0 锚行、四阶段顺序(变异布置段 2026-09-20 已移出管线)、solver_rules、可推理率的合法信息源枚举、及格线域下限 0.85、成本闸常数(结构护栏,登记在案,调整走文档修订)、先布后删语义。 diff --git a/design/gdd/systems/跨局循环/天赋树.md b/design/gdd/systems/跨局循环/天赋树.md index e30dc42b..d83689e6 100644 --- a/design/gdd/systems/跨局循环/天赋树.md +++ b/design/gdd/systems/跨局循环/天赋树.md @@ -1,9 +1,9 @@ # 天赋树 > 一句话:营地本身——跨局成长的结构承载:钥石逐节点点亮一棵树,属性淬炼、工作间解锁、规则抉择与同调挂载全部组织在树上 -> 状态:**已定稿(现行为 v0.11)**——12 节点结构在役(脊柱=生命/命中一线一节点,Fork 三节点双态);「等级阈值前置」为机制位(前置节点等级 ≥ n 才可购;键悬空 / 阈值 <1 / 类型错加载即拒;未达标节点锁标 + 悬停门槛文案),现役 12 行零配置=零行为影响;全部数值行 provisional,归数值批。 +> 状态:**已定稿(现行为 v0.12)**——12 节点结构在役(脊柱=生命/命中一线一节点,Fork 三节点双态);「等级阈值前置」为机制位(前置节点等级 ≥ n 才可购;键悬空 / 阈值 <1 / 类型错加载即拒;未达标节点锁标 + 悬停门槛文案),现役 12 行零配置=零行为影响;全部数值行 provisional,归数值批。 -> **📖 节点状态记录指引(读这份文档先看这里)**:本树全部 12 个节点=下方「核心规则 → 节点总表」,逐节点列名称/脉/类型/前置/效果方向;**全部数值行(价格 / 等级上限 / 每级效果取值 / 限次值)不在本文**,事实源 = 配置文件 `data/tables/meta_tree.tres`(provisional 归数值批)。要查"有哪些节点、怎么连"看本文总表,要查"多少钱、加多少"开配置文件。 +> **📖 节点状态记录指引(读这份文档先看这里)**:本树全部 12 个节点=下方「核心规则 → 节点总表」,逐节点列名称/脉/类型/前置/效果方向;**全部数值行(价格 / 等级上限 / 每级效果取值 / 规则键效果参数)不在本文**,事实源 = 配置文件 `data/tables/meta_tree.tres`(provisional 归数值批)。要查"有哪些节点、怎么连"看本文总表,要查"多少钱、加多少"开配置文件。 ## 设计目的 @@ -29,7 +29,7 @@ | 不负责 | 归谁 | |---|---| -| 节点数值行(价格 / 等级上限 / effects 取值 / 限次值) | [数据配置](../表现与支撑/数据配置.md)——行值读 `meta_tree.tres`,全 provisional 归数值批;本文只定规则与键结构 | +| 节点数值行(价格 / 等级上限 / effects 取值 / 规则键效果参数) | [数据配置](../表现与支撑/数据配置.md)——行值读 `meta_tree.tres`,全 provisional 归数值批;本文只定规则与键结构 | | 钥石 | [元进度](元进度.md)——树是永久强化的承载结构,钥石余额是消费来源;旧柜台框架与退役面亦在对方登记 | | 锻造工坊工作间内的路线升级设计 | [锻造工坊](锻造工坊.md)——武器三路线+护甲三路线的等级、定价、满级特效现行事实源在彼;攻/AC 数值唯一来源在彼(所有权切分) | | 秘宝目录、同调装配与同调位求值 | [秘宝](../跨局循环/秘宝.md)——树只持同调位节点挂载位与秘宝匣钥匙 | @@ -112,7 +112,20 @@ Fork 组是封闭词表三组(2026-10-11 裁:克制专精整组砍除,类 「每关限次」的计数生命周期(2026-10-11 歧义扫描裁甲):限次计数随单次冒险持久、按关重置、新冒险清零、断点续玩保留。 -A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表六键——**已随迭代 21 T3 扩签落地**:posture 双键收每关首轮窗、sense 锋/守双键限次按关重置、economy 聚/散双键接线),效果按激活态取值,不接数值线。两侧的设计判据是「不同强、非强弱」:MC 配对锚验收两侧关卡完成率差 <~3pp(**迭代 21 V19 已验:perfect+max 档三组配对差全部 0.0pp 在带**)。 +A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表六键——**已随迭代 21 T3 扩签落地**:posture 双键收每关首轮窗、sense 锋/守双键限次按关重置、economy 聚/散双键接线),效果按激活态取值,不接数值线。**规则键的效果参数长在节点行的效果键值里**(每键一个参数字典,键集与取值域由 schema 按键声明;六键参数见下方「规则键参数表」),效果引擎只读参数、不持字面量。两侧的设计判据是「不同强、非强弱」:MC 配对锚验收两侧关卡完成率差 <~3pp(**迭代 21 V19 已验:perfect+max 档三组配对差全部 0.0pp 在带**)。 + +**规则键参数表**(参数名与取值域本文 owner;现行值读 `meta_tree.tres` 对应节点行 effects_a / effects_b): + +| 规则键 | 态 | 参数 | 取值域 | 语义 | +|---|---|---|---|---| +| posture_first_strike | 开局姿态 A 先手压制 | ap_bonus | int [1, 4] | 每关首轮行动点加成 | +| posture_bulwark | 开局姿态 B 稳健拓荒 | shield | int [1, 9] | 每关首轮窗内受击时的盾值 | +| sense_sharp | 危险直觉 A 锋 | halve_pct / cap_per_level | percent [1, 99] / int [1, 9] | 踩中危险格伤害按百分比折减 / 每关触发次数上限 | +| sense_guard | 危险直觉 B 守 | ap_refund / cap_per_level | int [1, 4] / int [1, 9] | 标记错误返还的行动点数 / 每关触发次数上限 | +| economy_hoard | 财富之道 A 聚 | mult_pct | percent [101, 300] | 战斗掉落 GP 乘数(仅战斗掉落渠道) | +| economy_spend | 财富之道 B 散 | discount_pct | percent [1, 99] | GP 消费折价系数(全部 GP 消费面;商品购买价适用,刷新类支出不折——定义边界见上表) | + +「每关限次」两键的 cap_per_level 共用同一计数生命周期(随单次冒险持久、按关重置、新冒险清零、断点续玩保留)。 层级纪律(红线):局外树只放全局规则件——effects 禁 archetype 键(schema 加载致命);规则改写型特性(流派件)只走局内随机渠道,永不入树。 @@ -153,7 +166,7 @@ A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表 | 上游 | [锻造工坊](锻造工坊.md) | 武器/护甲路线升级现行事实源在彼——树持钥匙节点(无前置),工作间柜台=钥匙展开面板;攻/AC 数值唯一来源在彼(所有权切分红线) | | 下游 | [冒险结构](../冒险循环/冒险结构.md) | 冒险开始参数面——树生命/命中淬炼 flat(叠加进覆盖值通道)与规则键集的注入通道 | | 下游 | [HUD 框架](../表现与支撑/HUD框架.md) | 营地四柜台并排呈现——树淬炼柜台=树脊柱界面形态(案甲);信号 = 树上购买意图 / 树上分叉切换意图 | -| 下游 | 战斗侧效果引擎 | 规则键消费面——每场战斗开始时重建合成订阅(机制硬编码,无表行) | +| 下游 | 战斗侧效果引擎 | 规则键消费面——每场战斗开始时按激活态效果键及其参数重建合成订阅(参数读节点行,引擎零字面量) | ## P0 最小闭环 @@ -174,14 +187,14 @@ A/B 态只放规则面:节点行持 a/b 双效果键(封闭规则键词表 | 表 / 常量 | 键结构归属 | 数值行 | |---|---|---| -| 节点表 `data/tables/meta_tree.tres`(换代后 12 行:价格 / 等级上限 / requires(点亮前置)/ **requires_level(等级阈值前置——R1 机制位,现役零配置)** / effects 取值(Fork 行持 a/b 双效果键)/ 限次值;row 字段随一线一节点退役) | schema 声明,本文 owner | 全 provisional,归数值批投值 | +| 节点表 `data/tables/meta_tree.tres`(换代后 12 行:价格 / 等级上限 / requires(点亮前置)/ **requires_level(等级阈值前置——R1 机制位,现役零配置)** / effects 取值(Fork 行持 a/b 双效果键,每键值=参数字典,参数名与取值域见「规则键参数表」); row 字段随一线一节点退役) | schema 声明,本文 owner | 全 provisional,归数值批投值 | | 脊柱行门槛 = 4 | 节点表结构声明持有,本文 owner | 规则即门槛(节点第 N 级需全树总等级 ≥ 4×(N−1)) | -| Fork 组词表(三组)/ 规则键词表(换代后六键,扩表随实装批) | 三组 Fork 词表与六键规则词表由节点表结构声明持有(封闭词表) | 词表即规则;规则键效果值由效果引擎合成 | +| Fork 组词表(三组)/ 规则键词表(换代后六键,扩表随实装批) | 三组 Fork 词表与六键规则词表由节点表结构声明持有(封闭词表) | 词表即规则;规则键效果参数读节点行,效果引擎按参数合成 | | 钥石产出、刷新升级行族 | 现行事实源 = [元进度](元进度.md)调参表 | `data/tables/meta.tres` | ## 验收标准 -- 结构封闭:meta_tree.tres 通过 schema 校验零违例——12 节点、脉 / 类型 / 币词表出域即拒、Fork 三组每组恰一节点且持 a/b 双效果键、彩蛋 ≤3、effects 键封闭、零 archetype 键。 +- 结构封闭:meta_tree.tres 通过 schema 校验零违例——12 节点、脉 / 类型 / 币词表出域即拒、Fork 三组每组恰一节点且持 a/b 双效果键、彩蛋 ≤3、effects 键封闭、零 archetype 键;六键效果键值均持参数字典且参数名/取值域合规(见「规则键参数表」),缺参数或越域加载期致命。 - 行门槛可判:全树已购总等级 < 4×(N−1) 时脊柱节点第 N 级不可购;总等级达标当刻该级开放购买。 - 前置可判(点亮前置):requires 任一未点亮则节点不可购,逐一点亮后可购;锻造工坊钥匙无前置——初始即可点亮(free 零币)。**等级阈值前置:配置了该键的节点,指定前置节点等级 < n 时不可购、达标当刻开放(现役零配置,判定面已单独验证)。** - 工作间可判:钥匙节点(锻造工坊 / 秘宝匣)未点亮时对应柜台锁定态、工作间不可进入;点亮后展开;图鉴无门槛常开。