merge: 第三关内容批落籍——灰矮人矿城行集+GP定稿提案(台账 115)
This commit is contained in:
commit
ba6b5e6046
17 files changed
+635
-25
No files matched your search
@@ -1,17 +1,18 @@
|
||||
# 内容规模
|
||||
|
||||
一句话定位:**两关、两档棋盘、一套格面资源池、一套状态表**——刚好撑起一次完整的"扫雷决策 → 战斗兑现"循环,除此之外一律不做。
|
||||
一句话定位:**三关、按关配置的棋盘、一套格面资源池、一套状态表**——刚好撑起一次完整的"扫雷决策 → 战斗兑现"循环,除此之外一律不做。
|
||||
|
||||
> **体例说明(2026-09-17 数值纪律收口批)**:本文件只写内容规模的结构框架——几个维度、各分几档、扩展走什么流程。具体种数、行数与幅度数值一律不在此抄录,事实源为准:数据表读 `prototypes/dungeon-sweeper-vertical-slice/data/tables/*.tres`,实体登记读 `design/registry/entities.yaml`;现行行数与面值以表和 registry 为准。
|
||||
|
||||
## 关卡
|
||||
|
||||
**两关已落地**,共用一条分支节点链模板(2026-09-17 分支节点图批:第二层幽暗地域随分支节点图落地,序列推进的收尾待办见[待办清单](06-待办清单.md)):
|
||||
**三关已落地**,共用一条分支节点链模板(第二层幽暗地域随分支节点图批落地,第三层灰矮人矿城随第三关内容批落地;正式序列推进的收尾待办见[待办清单](06-待办清单.md)):
|
||||
|
||||
| 层 | 层名 | 结构 | 状态 |
|
||||
|---|---|---|---|
|
||||
| 第一层 | 地精洞窟 | 分支节点图(战斗 / 随机道具 / 恢复点 / Boss 等节点型) | 已落地 |
|
||||
| 第二层 | 幽暗地域 | 同一分支节点图模板复用,第二关深度轴行值填充 | 已落地(正式序列推进待收尾) |
|
||||
| 第三层 | 灰矮人矿城 | 同一分支节点图模板复用,第三关深度轴行值填充 | 已落地(测试直入口;正式序列推进待收尾) |
|
||||
|
||||
现行节点行集与行值读 `data/tables/level.tres`(registry 为准)。再扩关卡走扩展批流程:先填深度轴行值、再接正式序列推进,不新造节点链结构。
|
||||
|
||||
@@ -23,9 +24,9 @@ MVP 不加新敌种,也不做同深度多敌种混搭;敌种扩容走数据
|
||||
|
||||
## 棋盘
|
||||
|
||||
**两档尺寸**(档位概念是设计决策:小板 / 大板,Boss 战的台阶靠换大板制造),具体尺寸面值与雷密度读 `data/tables/board_gen.tres`(registry 为准)。密度全程一档,不做密度爬坡;可推理率目标全程恒定,目标值归[排雷玩法](systems/排雷循环/排雷玩法.md)口径。
|
||||
**尺寸按关配置**(板形随关卡行投值,不再固定两档;Boss 战的台阶靠换更大的板制造):现行第一关 10×10 / 12×12 两档、第二关全关 12×12、第三关 13×13(Boss 14×14)。具体尺寸面值与雷密度读 `data/tables/board_gen.tres`(registry 为准)。密度全程一档,不做密度爬坡;可推理率目标全程恒定,目标值归[排雷玩法](systems/排雷循环/排雷玩法.md)口径。
|
||||
|
||||
地形变异首批四类型已落地(2026-09-20 首批类型定稿批):荆棘丛/藤蔓缠绕(第一关)+ 岩浆/烬覆(第二关),行值见 `data/tables/variation.tres`。
|
||||
地形变异现行六类型、两轴 × 三关已落地:荆棘丛/藤蔓缠绕(第一关)+ 岩浆/烬覆(第二关)+ 落石/矿尘(第三关),行值见 `data/tables/variation.tres`。
|
||||
|
||||
## 战斗道具(格面资源)
|
||||
|
||||
@@ -49,7 +50,7 @@ MVP 不加新状态;扩容走 status_effects.tres 加行 + registry 登记。
|
||||
|
||||
垂直切片阶段明确砍掉或推迟的内容,写在这里防止回潮:
|
||||
|
||||
- 更多关卡(N>2)——第二层落地后,第三关起走扩展批流程
|
||||
- 更多关卡(N>3)——第三关已按扩展批流程落地(行集 + 测试直入口);正式序列推进仍待 Alpha
|
||||
- 精英节点与词缀系统——只预留了字段位,不定义语义
|
||||
- 地形变异扩展内容——首批四类型已落地,反制道具与全局作用域排 Alpha(2026-09-20 用户拍板)
|
||||
- 道具/增益之间的组合协同(遗物式联动)
|
||||
@@ -69,3 +70,4 @@ MVP 不加新状态;扩容走 status_effects.tres 加行 + registry 登记。
|
||||
| v0.3 | 2026-09-17 | 数值纪律收口批:全文改指路化体例——种数/行数/幅度不再抄配置,事实源改 data/tables/*.tres 与 registry;同步三批次失同步(两关落地/可选类删除/数值压缩) |
|
||||
| v0.4 | 2026-09-20 | 层名改名批:第一层「苔藓回廊」→「裂颚洞窟」(用户拍板——苔藓意象与地精巢穴不契合;新名致敬 DND 5e《凡戴尔的失落矿坑》地精部族「裂颚」Cragmaw,洞窟纵深连通幽暗地域)。关卡表 display_name / registry / 00-游戏概念 / 切片首页按钮 / README 随批同步 |
|
||||
| v0.5 | 2026-09-20 | 层名二改批:「裂颚洞窟」→「地精洞窟」(用户拍板——不绑定 DND 专名部族、规避 IP 指涉,直取地精巢穴意象;v0.4 出典随之作废仅留档)。全仓 8 处消费面随批同步 |
|
||||
| v0.6 | 2026-09-20 | **第三关内容批(灰矮人矿城——与切片代码 / registry / 难度曲线与Boss / 棋盘生成 / 地形变异 同批)**:层名表加第三层(测试直入口已落地、正式序列推进待收尾——正式三关序列推进仍登记 Alpha 验收条件);棋盘尺寸条款由两档改按关配置(第三关 13×13 / Boss 14×14 随批铺行);棋盘节地形变异句随批补第三关一对(落石/矿尘);暂不做「更多关卡」行更新为已按扩展批流程落地。行值读 `data/tables/level.tres` / `board_gen.tres` / `variation.tres`(registry 为准) |
|
||||
@@ -244,7 +244,7 @@
|
||||
|
||||
**归属**:[关卡节点地图](systems/冒险循环/关卡节点地图.md)修订批(商店房节点与图版结构,主责);GP 格面枚举归[地图战斗资源](systems/战斗循环/地图战斗资源.md);战斗掉落兑付归[战斗结算](systems/战斗循环/战斗结算.md)与[冒险结构](systems/冒险循环/冒险结构.md)共裁;成长节奏与验收带联动归[难度曲线与Boss](systems/冒险循环/难度曲线与Boss.md);GP 与钥石分工知会[元进度](systems/冒险循环/元进度.md)。
|
||||
|
||||
**状态**:待办(2026-09-18 用户提案登记,未评估;2026-09-19 用户拍板:讨论与立项评估排期改至 **Alpha 阶段**,垂直切片期不讨论——与雷安差异化、冒险前配比两提案的合并立项评估同窗口)
|
||||
**状态**:待办(2026-09-20 用户拍板:**立项提前**——原 Alpha 排期作废,与第三关内容批捆绑推进,作为 L3 基线红档的成长侧前置;定稿提案已交付 [proposal-gp-shop-room-2026-09-20.md](../research/proposal-gp-shop-room-2026-09-20.md)(六开放问题逐条推荐 + 数值锚 + 实施拆批),六问推荐待用户逐条拍板后进实施批)
|
||||
|
||||
### 难度曲线与Boss
|
||||
|
||||
|
||||
@@ -118,6 +118,8 @@ MVP 行值并不逐式现算,而是按此式量级直填经切片验证过的
|
||||
|
||||
更高加成档(攻击翻倍、三倍)的通关率带随档位放宽(翻倍档第一关 ≥95%),其机制承载是生存链区间的平移而不是另拍一套数字(平移换算见调参联动一节)。此外另有一条期望承伤占比带(普通场承伤不超过生命上限两成、Boss 场不超过五成,provisional),复验义务随最近的减伤调整批执行。
|
||||
|
||||
第三关口径(第三关内容批):L3 全部行值 provisional-pending-growth,上述各带对 L3 暂不适用——零成长基线下的红档属预期(主角成长侧前置 = L3-A 玩家成长批,GP + 商店房),现行冒烟的首遇绿档断言按「成长代理档 atk+200 / hp+100」口径执行;正式通关率带与首遇绿档口径随 L3-A 玩家成长批落地换装,归曲线调参批统一收带。
|
||||
|
||||
### Boss 设计:食人魔酋长与关底血量锚
|
||||
|
||||
首发关底 Boss 是食人魔酋长,摆在每关最深深度行上。Boss 约定有三条:位置 = 最深深度直填行,不走修饰表;定位 = 本关最大的单场消耗;技能池 = 专属池承载——独占技能 + 权重轮廓(现行:独占增益技"硬化"——敌方防御池词汇载体;2026-09-16 敌人技能池批改写,旧"专属四拍环且含蓄力拍"约定随行为环退役,增益 ≤1 纪律下旧蓄力拍不进 Boss 池;池语义见[敌人系统](../战斗循环/敌人系统.md))。
|
||||
@@ -215,6 +217,8 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板
|
||||
|
||||
第二关图版注记(分支节点图批):兄弟精 = bugbear 复用(幽暗地域部族设定——display_name 与第一关"熊地精"错开;池差异化改造 = 蓄力拍退役换突刺,复用共享技能行);巨蜘蛛 = 新敌种(群行倾向、首遇位固定数量不加骰——首遇教学位纪律);蛛化卓尔精灵 = Boss 专属池(独占技毒爆 + 权重轮廓,血量为 r_boss 口径 provisional 锚——定位本关最大单场消耗);护甲面:轻甲(蜘蛛)与魔法护甲(兄弟精)同关错开克制面,Boss 重甲。「兄弟精」称呼经用户 2026-09-17 确认 = 熊地精 bugbear;Boss 定名蛛化卓尔精灵(用户同日拍板)。节点编号 2 = 奖励点(直通空态)、3 = 恢复点(rest_heal_pct 行字段兑付)——不开战斗、无敌人/棋盘行。
|
||||
|
||||
第三关图版注记(第三关内容批):行集 = 与第二关同模板的九节点图(六战 + Boss + 奖励 + 恢复,节点编号 2/3 同为奖励点/恢复点——不开战斗、无敌人/棋盘行)。敌种生态:灰矮人 = duergar 新敌种(单体重甲中坚——第二关单体生态位的关间台阶);钩爪恐魔 = hook_horror 新敌种(群行,复用撕咬共享技能行);灰矮人石君王 = duergar_king Boss 专属池(独占妨害技大地脉动 earth_pulse = 乏力 sapped 首发——第二妨害词汇,池载荷口径同蛛网束缚)。两敌种首遇位(节点 0 / 节点 1)固定数量不加骰——首遇教学位纪律同第二关注记。克制面重轻错开:重甲灰矮人是重甲首次登台,轻甲钩爪恐魔保穿刺/普通分量有用武之地,Boss 重甲收束"轻甲 → 魔法护甲 → 重甲"教学梯度(第三档在 L3 补完)。Boss 血量 75 = Σ普通战生命期望 91 × r_boss≈0.82(provisional 锚,域 [0.5, 1.1]——Boss 锚在案口径,逐数闭合随调参批在调参日志留档)。棋盘 13×13 / Boss 14×14、密度 0.25 维持、地形变异第三关对落石(直伤 3 点)+ 矿尘(数字遮蔽)随批铺行;armor_class 恒 0(正式投值仍归「敌方护甲等级正式行值」在案条目全表同批)。行值读 `enemy.tres` / `board_gen.tres` / `skills.tres` / `variation.tres`,全部 provisional-pending-growth(L3 口径见「期望值带」节)。
|
||||
|
||||
群伤负向 = 警觉(敌方护甲等级 +1——2026-09-20 八型批伏击退役换装);一轮踩雷数由行动点预算天然封顶(原 advantage_per_round_cap 行值同日先行删除)。攻击浮动开战时掷定一次、整战持久;数量区间同流掷定,教学位与首遇位都不豁免——没有区间上界的行自然取定值,那不是豁免,是区间宽度为零。
|
||||
|
||||
技能池投值(池权重/冷却/保底的所有权本文,机制归[敌人系统](../战斗循环/敌人系统.md);行值读 `skills.tres` 与 `enemy.tres` 的 pool,全部 provisional):
|
||||
@@ -282,3 +286,4 @@ Boss 战的棋盘用本关最大板形(板形行值读棋盘参数表),板
|
||||
| v0.14 | 2026-09-20 | **伏击单轮上限删除批同步(零行值改动——上限行值整体退役)**:关键投值节单轮伏击授予上限改述不设上限;原 advantage_per_round_cap 对账供给面随批作废 |
|
||||
| v0.15 | 2026-09-20 | **格面资源八型批同步(零行值改动——与敌人系统 / 战斗结算 / 地图战斗资源 / 行动经济 / registry / 切片代码同批)**:① 受伤峰值构成去"伏击附加"项(伏击随八型批退役);② 关键投值节伏击上限措辞改述为群伤负向 = 警觉(敌方护甲等级 +1),原 advantage_per_round_cap 对账供给面维持同日先行作废;③ 警觉与行动点修正两新词的当量对账义务归本系统调参批(随 06 清单「调参批数值点评登记」条执行) |
|
||||
| v0.16 | 2026-09-20 | **基线通关率带分带批 + MC 重投基线(用户拍板方案 A;台账 105〔登记时撞并行会话 103 号,顺延让号〕)**:① 基线通关率带由单一 [10%, 25%] 改为分带——第 1 关 [35%, 55%] / 第 2 关 [25%, 45%]:旧带锚定随机点击画像,普通画像换装基础定式后失锚;推导链 = 真人体验换算(模拟 47%/34% 对应真人新手约六成/五成)+ 与完美档带 [35,65] 错开一档保留元进度爬升空间;② MC 重投基线(N=300/画像/关 · unique · seed0=7000):完美档 55.7%/39.7% 落 [35,65]、普通档 46.7%/34.3% 落新带——双画像双关全落带,加难紧迫性解除;③ 残留越带唯一项 = L2 完美 Boss 承伤 51.6%(微越 1.6 点,归调参批);④ 报告 production/qa/mc-reinvest-baseline-2026-09-20.md;工具 level_monte_carlo.gd 增 baseline 参数 + F5 脚注随带同步 |
|
||||
| v0.17 | 2026-09-20 | **第三关内容批(灰矮人矿城——与切片代码 / registry / 03-内容规模 / 棋盘生成 / 地形变异 同批,存量行值零改动)**:调参表新增第三关图版注记——敌种生态(灰矮人 duergar 单体重甲中坚 + 钩爪恐魔 hook_horror 群行复用撕咬 + Boss 灰矮人石君王 duergar_king 专属池独占妨害技大地脉动 = 乏力 sapped 第二妨害词汇首发)、首遇位节点 0/1 固定数量不加骰、克制面重轻错开(重甲首次登台,教学梯度轻→魔→重在 L3 补完)、Boss 血量锚 75 = Σ91 × r_boss≈0.82、棋盘 13×13 / Boss 14×14 密度 0.25 维持、地形落石 3 点 + 矿尘、armor_class 恒 0(正式投值仍归在案条目全表同批);期望值带节补 L3 口径——行值 provisional-pending-growth,零成长基线红档属预期、冒烟首遇绿档按成长代理档(atk+200 / hp+100)口径,正式通关率带与首遇绿档口径随 L3-A 玩家成长批(GP + 商店房)换装,归曲线调参批统一收带 |
|
||||
@@ -1,14 +1,14 @@
|
||||
# 地形变异
|
||||
|
||||
> 一句话:格子的非雾变异(荆棘丛/藤蔓缠绕/岩浆/烬覆),挖掘中可遭遇的地貌偏离
|
||||
> 状态:已定稿(首批类型随 2026-09-19 定稿批落地)
|
||||
> 一句话:格子的非雾变异(荆棘丛/藤蔓缠绕/岩浆/烬覆/落石/矿尘),挖掘中可遭遇的地貌偏离
|
||||
> 状态:已定稿(首批类型随 2026-09-19 定稿批落地,第三关一对随 2026-09-20 第三关内容批落地)
|
||||
> 旧版参考:../../../archive/gdd-2026-09-14/a4-terrain-variation.md
|
||||
|
||||
## 设计目的
|
||||
|
||||
地形变异是一个定义层的框架:它允许给棋盘上的格子挂上"变异"标记,让某片格子在基础扫雷规则之外多一层玩家在挖掘中可遭遇的偏离。没有这个框架,关卡之间的差异只能靠雷的数量单调缩放,"每关解锁新元素"的推进感和越深越险的地貌变化都无处安放。
|
||||
|
||||
变异带来的行为改变发生在数据侧:格子只是多携带一条数据,读取到它的系统按数据行动,规则本体一个分支都不加。首批变异类型已按两关地形背景定稿(第一关平原/密林基线:荆棘丛 + 藤蔓缠绕;第二关幽暗地域:岩浆 + 烬覆),机制全部经由「效果 / 触发 / 布置约束」三枚举声明——新增类型 = 清单加行 + 必要时扩充枚举词表,不改读取方。
|
||||
变异带来的行为改变发生在数据侧:格子只是多携带一条数据,读取到它的系统按数据行动,规则本体一个分支都不加。首批变异类型已按两关地形背景定稿(第一关平原/密林基线:荆棘丛 + 藤蔓缠绕;第二关幽暗地域:岩浆 + 烬覆),第三关内容批随灰矮人矿城追加第三对(落石 + 矿尘——幽暗地域最深层),机制全部经由「效果 / 触发 / 布置约束」三枚举声明——新增类型 = 清单加行 + 必要时扩充枚举词表,不改读取方。
|
||||
|
||||
## 系统范围
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
变异的生命周期是随图生灭:变异是棋盘格的只读属性,在战斗初始化末段布置、随棋盘实例存在;清图换图或战斗结束时随图消亡。布置之后生效期没有任何运行时写入,也没有跨图存续——新图重新布置。
|
||||
|
||||
清单现行登记四个类型,两轴 × 两关:
|
||||
清单现行登记六个类型,两轴 × 三关:
|
||||
|
||||
| 类型名 | 效果 | 触发 | 布置约束 | 解锁 | 地形 | 伤害量 |
|
||||
|---|---|---|---|---|---|---|
|
||||
@@ -59,6 +59,8 @@
|
||||
| 藤蔓缠绕 | 数字遮蔽(hide_number) | 打开且显示数字时(on_number_shown) | 任意格(any) | 第 1 关 | dungeon | — |
|
||||
| 岩浆 | 直伤(flat_damage) | 被打开即触发(on_open) | 只落未开格(closed_only) | 第 2 关 | underdark | 2 |
|
||||
| 烬覆 | 数字遮蔽(hide_number) | 打开且显示数字时(on_number_shown) | 任意格(any) | 第 2 关 | underdark | — |
|
||||
| 落石 | 直伤(flat_damage) | 被打开即触发(on_open) | 只落未开格(closed_only) | 第 3 关 | deep_underdark | 3 |
|
||||
| 矿尘 | 数字遮蔽(hide_number) | 打开且显示数字时(on_number_shown) | 任意格(any) | 第 3 关 | deep_underdark | — |
|
||||
|
||||
机制口径(2026-09-19 定稿批):
|
||||
|
||||
@@ -125,7 +127,7 @@
|
||||
| 布置数量基数 percent_of_cells | 5(总格数百分比) | 难度曲线与Boss(provisional) |
|
||||
| 关卡递增 per_level_bonus | +2 格/关 | 难度曲线与Boss(provisional) |
|
||||
| 连通片上限 pack_max | 4 | 定稿值(2026-09-19 用户拍板形状约束) |
|
||||
| 直伤量 effect_value | 荆棘丛 1 / 岩浆 2 | 难度曲线与Boss(provisional,加法核 [1,9]) |
|
||||
| 直伤量 effect_value | 荆棘丛 1 / 岩浆 2 / 落石 3 | 难度曲线与Boss(provisional,加法核 [1,9]) |
|
||||
|
||||
变异表的结构历史(字段定义、条目归属)见 [registry 的 variation_table 条目](../../../registry/entities.yaml)。字段集现行口径:标识 / 玩家可见名 / 解锁关号 / 作用域 / 效果 / 效果量 / 触发 / 布置约束 / 地形(board_types)/ 反制道具绑定(counter_items,Alpha 回填)。
|
||||
|
||||
@@ -144,3 +146,4 @@
|
||||
| v0.1 | 2026-09-15 | 自归档 GDD 压缩改写 |
|
||||
| v0.2 | 2026-09-15 | 雾格残留清理:删除上一版设计遗留的「待拍板」失义条目十条;变异框架本体不变 |
|
||||
| v0.3 | 2026-09-20 | 首批类型定稿批:四类型两轴×两关(荆棘丛/藤蔓缠绕/岩浆/烬覆)落地;机制枚举化(effect/trigger/placement 三枚举 + 跨字段互锁);布置段改排战斗初始化第 4 步(2026-09-19 用户拍板棋盘设置顺序);biome 系命名退役对齐 board_type 词表;反制兑现与全局作用域改排 Alpha;岩浆/冰冻旧占位名退役(冰冻退役、岩浆落位第二关) |
|
||||
| v0.4 | 2026-09-20 | **第三关内容批(与切片代码 / registry / 03-内容规模 / 棋盘生成 / 难度曲线与Boss 同批)**:类型清单加第三关两行——落石(伤害型 flat_damage 3)+ 矿尘(信息型 hide_number 数字遮蔽),凑齐两轴 × 三关(unlock_level 3、地形 deep_underdark);布量走既有公式(第三关自动 9%,零新配置);反制道具兑现维持改排 Alpha(counter_items 字段位同批预留);调参表直伤量行随批补落石 3。行值全 provisional 归 难度曲线与Boss |
|
||||
@@ -146,7 +146,7 @@
|
||||
|
||||
### 图类型标签与第三轴预留:主题恒定、Boss 板有座位
|
||||
|
||||
每张图带一个图类型标签(board_type 字段;图类型即图的主题、题材,玩家侧显示名「地图类型」)。同关卡的所有图,主题静态恒定——不存在逐图重掷主题的接口,"不会上钓鱼的当"是结构保证而非文案。词表 v1.0 已定稿(2026-09-19 用户拍板):**dungeon(地牢基线)/ underdark(幽暗地域)**,现行值见 board_gen.tres(L1 = dungeon,L2 = underdark);域校验 = 词表成员检查(board_gen_table.gd 词表常量),扩词随内容批走修订。这组标签是表现侧换色板与[地图战斗资源](../战斗循环/地图战斗资源.md)图类型差异化插槽的数据源。本节为数据约定,无计算。
|
||||
每张图带一个图类型标签(board_type 字段;图类型即图的主题、题材,玩家侧显示名「地图类型」)。同关卡的所有图,主题静态恒定——不存在逐图重掷主题的接口,"不会上钓鱼的当"是结构保证而非文案。词表现行 v1.1(2026-09-20 第三关内容批增补;v1.0 两词 2026-09-19 定稿):**dungeon(地牢基线)/ underdark(幽暗地域)/ deep_underdark(灰矮人矿道方向)**,现行值见 board_gen.tres(L1 = dungeon,L2 = underdark,L3 = deep_underdark);域校验 = 词表成员检查(board_gen_table.gd 词表常量),扩词随内容批走修订。这组标签是表现侧换色板与[地图战斗资源](../战斗循环/地图战斗资源.md)图类型差异化插槽的数据源。本节为数据约定,无计算。
|
||||
|
||||
参数表的键是关卡序号 × 节点深度,难度沿这两条轴雕刻;精英与 Boss 修饰是预留的第三条轴。本系统不定任何修饰数值,只锁定落点约定——这也是[关卡节点地图](../冒险循环/关卡节点地图.md)与[难度曲线与Boss](../冒险循环/难度曲线与Boss.md)两份文档的输入:
|
||||
|
||||
@@ -209,7 +209,7 @@
|
||||
| solver_rules | enum {single, single_subset} | single_subset(冻结,非调参) | 推理规则域 |
|
||||
| min_safe_count | int [1, 999] | 现行值见 board_gen.tres | 最小安全格数下限 |
|
||||
| max_gen_attempts | int [1, 32] | 域 [1, 32],现行按行取值见 board_gen.tres | 生成-验证重试上限;受成本闸联合约束 |
|
||||
| board_type | String,词表 {dungeon, underdark} | 现行值见 board_gen.tres(词表 v1.0,2026-09-19 定稿) | 图类型标签(玩家侧「地图类型」);域校验 = 词表成员检查 |
|
||||
| board_type | String,词表 {dungeon, underdark, deep_underdark} | 现行值见 board_gen.tres(词表 v1.1,2026-09-20 第三关内容批增补) | 图类型标签(玩家侧「地图类型」);域校验 = 词表成员检查 |
|
||||
|
||||
结构冻结(非调参项):键结构与每关深度 0 锚行、五阶段顺序、solver_rules、可推理率的合法信息源枚举、及格线域下限 0.85、成本闸常数(结构护栏,登记于 registry board_gen_table 条目,调整走文档修订)、先布后删语义。
|
||||
|
||||
@@ -236,3 +236,4 @@
|
||||
| v0.1 | 2026-09-15 | 自归档 GDD 压缩改写 |
|
||||
| v0.3 | 2026-09-17 | 数值纪律收口批:正文与调参表 knob 现行值改指路存根(事实源 data/tables/*.tres 与 registry),3 处失同步修正(雷密度、可推理率及格线、生成尝试上限——文档面旧 provisional 值与 board_gen.tres 现值不一致,改指路);成本闸 16384 改标注「结构护栏常数,登记于 registry board_gen_table 条目」,其余引用处指路;调参表「现行值」列整列指路化 |
|
||||
| v0.2 | 2026-09-15 | 雾格残留清理:删除「待拍板」五项旧版失义条目(雾参数两字段与雾域跨字段校验、双判据与 inferability_core、雾相关生成约束、雾致清图预算增量两指标、黄金图向量的 core 整数对);验收标准「表实一致」条去掉指向该节的清理登记。参数表、五阶段管线与三分支出图等现行规则不变 |
|
||||
| v0.4 | 2026-09-20 | **第三关内容批(与切片代码 / registry / 03-内容规模 / 难度曲线与Boss / 地形变异 同批,参数行值零改动)**:图类型词表 v1.0 → v1.1,增补第三值 deep_underdark(灰矮人矿道方向);正文词表句与调参表 board_type 行随批同步(L3 = deep_underdark)。[地图战斗资源](../战斗循环/地图战斗资源.md)的图类型差异化插槽句不随批动——clear_deep_underdark 启用仍为预留 |
|
||||
@@ -94,7 +94,7 @@ entities:
|
||||
attributes:
|
||||
table: VariationTable(数据配置 承载,键 = variant_id;地形变异 回填 owner,2026-09-08 定稿回填;2026-09-20 首批类型定稿批字段集枚举化重写)
|
||||
fields: variant_id(String 主键唯一)/ display_name / unlock_level(int [1,999],knob)/ scope(enum region|global,global 预留 难度曲线与Boss)/ effect(enum none|flat_damage|hide_number,词表可扩充)/ effect_value(int [1,9],仅 flat_damage 消费,加法核小整数 knob)/ trigger(enum on_open|on_number_shown,词表可扩充)/ placement(enum closed_only|any,词表可扩充)/ board_types(StringList,∅=通配,knob——2026-09-20 用户裁定由 biome_tag 更名对齐 board_type 词表)/ counter_item_ids(StringList,魔法道具 预留,非 knob——首批四行恒空,Alpha 反制批回填)/ 表头布置参数 percent_of_cells=5 · per_level_bonus=2 · pack_max=4(knob,难度曲线与Boss)
|
||||
mvp_content: 四行两轴×两关(2026-09-20 首批类型定稿批)——thorn 荆棘丛(flat_damage/on_open/closed_only/dungeon/1)· vine 藤蔓缠绕(hide_number/on_number_shown/any/dungeon)· magma 岩浆(flat_damage/on_open/closed_only/underdark/2,登记名沿用)· ash 烬覆(hide_number/on_number_shown/any/underdark);行值 provisional 归 难度曲线与Boss;冰冻占位名退役
|
||||
mvp_content: 六行两轴×三关(2026-09-20 首批类型定稿批四行 + **第三关内容批两行**)——thorn 荆棘丛(flat_damage/on_open/closed_only/dungeon/1)· vine 藤蔓缠绕(hide_number/on_number_shown/any/dungeon)· magma 岩浆(flat_damage/on_open/closed_only/underdark/2,登记名沿用)· ash 烬覆(hide_number/on_number_shown/any/underdark)· rockfall 落石(flat_damage/on_open/closed_only/deep_underdark/3——伤害型关间递进 1→2→3)· mine_dust 矿尘(hide_number/on_number_shown/any/deep_underdark/3,信息型);counter_items 恒空(反制归 Alpha 反制批);布量走既有公式(5%+per_level_bonus×2=9%);行值 provisional 归 难度曲线与Boss;冰冻占位名退役
|
||||
zero_special_casing: 连锁/数字计数/清图/旗/价目/结算零特判——既有系统行为不感知变异状态(排雷玩法 执行逻辑无变异分支;地形变异 Rule 3 的推论);读取方按 effect/trigger/placement 枚举路由(战斗结算 兑付段 / 呈现层 遮蔽回调),不按类型名分支
|
||||
rule4_exemption: 定义表非进度成长表,键 = variant_id,进度语义承载于 unlock_level 列(数据配置 Rule 4 豁免,schema 注释承载)
|
||||
cross_field_validation: flat_damage ⇒ trigger=on_open ∧ placement=closed_only ∧ effect_value∈[1,9];hide_number ⇒ trigger=on_number_shown——VariationTable schema validate() 跨字段类别,违规加载期致命(2026-09-20 首批类型定稿批重立;旧 hide_numbers⇒safe_nonzero 闸随字段集退役)
|
||||
@@ -155,13 +155,13 @@ entities:
|
||||
owner: design/gdd/systems/排雷循环/棋盘生成.md
|
||||
attributes:
|
||||
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_type(String,词表 {dungeon, underdark} 域校验致命——2026-09-19 词表 v1.0 定稿;玩家侧显示名「地图类型」)+ 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_type(String,词表 {dungeon, underdark, deep_underdark} 域校验致命——2026-09-19 词表 v1.0 定稿、**2026-09-20 第三关内容批扩词 v1.1 +deep_underdark〔灰矮人矿道方向〕**;玩家侧显示名「地图类型」)+ 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)
|
||||
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)
|
||||
metrics: 生成期指标集四项 = 实际 inferability(metric_version)/实际雷数与实际 |S|(增益状态——先布后删漂移观测,|M|≤N)/attempts_used/降级标记(shortfall+非法产物)
|
||||
batch_assertions: F4 调参期(N=256/行默认,σ(L,D)=10^9+2^20·L+2^12·D——R4 修订防碰撞,版本库清单)——断言 A 可推理率**严格零**/A″ target ≥ 0.85 绝对下限(战斗结算)/A′ 非法产物零容忍/**B 达成区数=count 板占比 ≥ 0.95(B6 修订收紧——降级率上限)**/E 难度方向 advisory(R2,monotone_in_depth 标记字段);报告 C 按行 p10/p50/p90
|
||||
inferability_vs_p_safe: "inferability 是盘面级免赌占比(生成侧);P(安全) 是单格认知概率(决策侧、经济口径)——免赌集内 P(安全)≡1,风险收缩到残余集(占比 ≤1−inferability);inferability 是 P(安全) 的生成端结构性上界代理之占比形式,非同义词。战斗结算 条款 3 对账输入 = **actuals 分布 p10(F4 报告 C)而非 target 参数**"。**战斗结算 消费回执(2026-09-10)**:条款③闭合消费本条口径——P(安全) 代理式 = 残余盲猜端上界 P(雷) = |M|÷(|M|+(1−ι)×|S|)(ι = actuals p10,未交付前行 target 代乐观代理);对账重跑义务 = 棋盘生成 报告 C 交付后强制(战斗结算 AC-39)"
|
||||
mvp_reference_rows: L1·D0 与 L2·D0 两参考行——**全部 provisional,仅 schema 自洽性证明,曲线数值归 难度曲线与Boss 调参所有权**;参考行现行值不列于本 registry,读 data/tables/board_gen.tres(2026-09-18 指路化收口——原 d0.10/t0.95/att16、d0.12/t0.92/att16 读数随切片 SLICE-TUNED 改值作废)
|
||||
mvp_reference_rows: L1·D0 与 L2·D0 两参考行——**全部 provisional,仅 schema 自洽性证明,曲线数值归 难度曲线与Boss 调参所有权**;参考行现行值不列于本 registry,读 data/tables/board_gen.tres(2026-09-18 指路化收口——原 d0.10/t0.95/att16、d0.12/t0.92/att16 读数随切片 SLICE-TUNED 改值作废)。**2026-09-20 第三关内容批**:L3 战斗/Boss 节点 (3, 0/1/4/5/6/7/8) 七行精确铺满——板面 13×13 / Boss 14×14(「Boss 板 = 本关最大板形」纪律)、min_safe_count 70/82(~0.42 格占比外推)、max_gen_attempts 32/32、board_type=deep_underdark;行值全 provisional 归 难度曲线与Boss
|
||||
minesweeper_dual_containment: 双包含回验登记 排雷玩法 GDD——① 排雷玩法 实际展开域 ⊆ 棋盘生成 排除域(既有)② 棋盘生成 求解器初始态 ⊆ 排雷玩法 实际初始展开域(F1 注记④度量保真对偶)
|
||||
golden_vectors: 推理器黄金图回归向量协议(五类手工核验小板,整数对比对禁浮点容差,逐格信息源推导记录入版本库;换 solver_rules/信息源/metric_version = GDD 修订 + 向量重制)——数据配置 R2 先例同源
|
||||
referenced_by: [排雷玩法, 战斗结算, 地图战斗资源, 难度曲线与Boss, 存档序列化]
|
||||
@@ -264,7 +264,7 @@ entities:
|
||||
atk: int [0,999](knob——attack 行为伤害基值;MVP 4 provisional 出处待查;0 合法不拒——2026-09-20 八型批去"纯伏击伤敌种"旧注)
|
||||
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——三敌种建议池构成与权重不列于本 registry,读 data/tables/enemy.tres(provisional 归 难度曲线与Boss;EV 锚与含闸长期速率实测读数随验收批另测登记〔2026-09-18 指路化收口〕))。**历史(2026-09-16 退役)**:heavy_multiplier int [1,16](重击倍率归技能行 damage_mult)与 pattern StringList(行为环环数组)两字段随行为环整体退役——固定出招剧本废除
|
||||
rowset_rule: 每行集恰一敌种(行集内 enemy_id 唯一 = 表结构校验,违规加载期致命)——同层多遭遇已由节点编号消解(2026-09-17 关卡节点地图 v1.0:node_depth 语义 = 关卡内唯一节点编号,同层不同节点各查各行、键结构零改动);同场多敌种(同一编号行集多行)行集校验放开归 敌人表行集多行批(混编伏击上限取值口径随 2026-09-20 上限删除消解)(战斗侧,排技能池实施批落地后;06-待办清单 敌人系统节同名条目单点登记);精英/Boss 不设编码位——Boss = 最大编号节点(图唯一终点)、精英 P2 内容承载(强敌行集)
|
||||
mvp_content: **五敌种(2026-09-14 难度曲线与Boss 修订批转正 goblin / bugbear / ogre_chief 三敌种〔DND 更名批用户指令:grub→goblin / ambusher→bugbear / boss_guardian→ogre_chief〕;2026-09-17 分支节点图批新增 giant_spider / drider,本条 2026-09-18 补收编;敌人系统 物种集断言随批更新为 {goblin, bugbear, ogre_chief, giant_spider, drider})**:goblin(地精,armor=light)/ bugbear(熊地精,armor=ward)/ ogre_chief(食人魔酋长,armor=heavy)/ giant_spider(巨蜘蛛)/ drider(蛛化卓尔精灵,Boss = 最大编号节点图唯一终点)。技能池构成与权重、armor_type 行映射**不列于本 registry**——读 data/tables/enemy.tres。**2026-09-17 数值压缩批·文档同步——hp/atk 等数值列改指路存根**:L1/L2 节点编号行集(D0–D8)共 12 行的 hp · atk · atk_min · atk_max · unit_count · unit_count_max · advantage_per_round_cap · armor_class 等现行值**不列于本 registry**——读 `data/tables/enemy.tres`(数值压缩批注释登记:`L1 D0 24/7 → 8/2`、`L1 D1 13/5 → 4/2`、`L1 D2 40/9 → 13/3`、`L1 D3 18/6 → 6/2`、`L1 D4 150/9 → 50/3` Boss、`L2 D0 30/7 → 10/2`、`L2 D1 15/5 → 5/2`、`L2 D4 14/5 → 5/2`、`L2 D5 38/8 → 13/3`、`L2 D6 12/4 → 4/1`、`L2 D7 13/5 → 4/2`、`L2 D8 175/8 → 58/3` drider);armor_type / armor_class / unit_count 区间 / 技能池权重 / advantage_per_round_cap 不压缩(相对轴与概率轴)。**2026-09-16 敌人技能池批**:行为环拍序列([attack] 单拍环 / [attack,charge,heavy] 三拍环 / [attack,attack,charge,heavy] 四拍环)与 heavy_multiplier=2 退役,改池模板 + 技能表共享技能行(重击倍率 2 = 技能行 damage_mult);出处 = 切片 enemy.tres(技能池批改型),曲线数值与池权重归 难度曲线与Boss
|
||||
mvp_content: **八敌种(2026-09-14 难度曲线与Boss 修订批转正 goblin / bugbear / ogre_chief 三敌种〔DND 更名批用户指令:grub→goblin / ambusher→bugbear / boss_guardian→ogre_chief〕;2026-09-17 分支节点图批新增 giant_spider / drider,本条 2026-09-18 补收编;2026-09-20 第三关内容批新增 duergar / hook_horror / duergar_king,本条随批补收编;敌人系统 物种集断言随批更新为 {goblin, bugbear, ogre_chief, giant_spider, drider, duergar, hook_horror, duergar_king})**:goblin(地精,armor=light)/ bugbear(熊地精,armor=ward)/ ogre_chief(食人魔酋长,armor=heavy)/ giant_spider(巨蜘蛛)/ drider(蛛化卓尔精灵,Boss = 最大编号节点图唯一终点)/ duergar(灰矮人,单体重甲中坚——重甲首次登台,armor=heavy)/ hook_horror(钩爪恐魔,群行捕食者,armor=light)/ duergar_king(灰矮人石君王,L3 Boss,重甲收束「轻甲→魔法甲→重甲」教学梯度)。技能池构成与权重、armor_type 行映射**不列于本 registry**——读 data/tables/enemy.tres(L3 行值语义:duergar 关间台阶 ≈L2 单体 ×1.5 落 [1.3,1.6] 域、hook_horror 复用 bite 共享技能行、两敌种首遇位〔节点 0/1〕固定数量不加骰、Boss 血 75 = Σ普通战生命期望 91 × r_boss≈0.82 provisional 锚;行值全 provisional 归 难度曲线与Boss)。**2026-09-17 数值压缩批·文档同步——hp/atk 等数值列改指路存根**:L1/L2 节点编号行集(D0–D8)共 12 行的 hp · atk · atk_min · atk_max · unit_count · unit_count_max · advantage_per_round_cap · armor_class 等现行值**不列于本 registry**——读 `data/tables/enemy.tres`(数值压缩批注释登记:`L1 D0 24/7 → 8/2`、`L1 D1 13/5 → 4/2`、`L1 D2 40/9 → 13/3`、`L1 D3 18/6 → 6/2`、`L1 D4 150/9 → 50/3` Boss、`L2 D0 30/7 → 10/2`、`L2 D1 15/5 → 5/2`、`L2 D4 14/5 → 5/2`、`L2 D5 38/8 → 13/3`、`L2 D6 12/4 → 4/1`、`L2 D7 13/5 → 4/2`、`L2 D8 175/8 → 58/3` drider);armor_type / armor_class / unit_count 区间 / 技能池权重 / advantage_per_round_cap 不压缩(相对轴与概率轴)。**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 共享、增益状态 零接口变更——伏击池随 2026-09-20 八型批退役,side-wide 承载改由增益状态 alert 行承接)· 行值快照抗热重载(增益状态 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 覆盖矩阵)。**2026-09-20 修订**:④⑥ 随伏击单轮上限删除(用户拍板)退役——对账面去 cap 表值、溢出行协议作废;八型批再修订(2026-09-20 格面资源八型批):② 雷→伏击恰一次转化改 雷→警觉恰一次转化
|
||||
hud_obligations: 四项(视觉推测型呈现,缺项即 blocking)——① enemy_id→图像线索映射清单成文(预告时序=下一拍预告、挖掘期全程可见;含强度档位/环长直觉编码说明;形状+色相双通道)② 映射全局恒定(enemy_id 键——跨 run 禁重掷)③ 顺位与存活可读 ④ 敌方 side 池呈现口径
|
||||
@@ -301,7 +301,7 @@ entities:
|
||||
buff_ref / buff_duration: 仅增益/妨害技(效果引用 → StatusEffectTable 活行 + 持续回合;悬空引用加载致命;**落点由状态行 target_side 路由**——buff 必须 enemy 侧 / debuff 必须 hero 侧〔施放类 side 守卫 2026-09-19,装载序以 loaded 表显式入参〕;现行 charge→empower / harden→fortify / web_snare→off_guard〔妨害首发,用户拍板〕,buff_duration=2 = 1 个有效增益拍〔先兑付后衰减含施放当轮〕;施放时长由技能行覆盖状态行时长——战斗结算 apply_effect duration_override)
|
||||
pity_threshold: int [1,99] 全局单旋钮(现行值读 data/tables/skills.tres——保底 M:连续 M 拍执行普攻 → 下拍必出特殊技〔特殊技内按权重、不受冷却限制〕;地精类单特殊技低权重池受保底支配)
|
||||
pool_discipline: 每池恰一行普攻 · 每池增益 ≤1 · **每池妨害 ≤1(2026-09-19 新效应词汇批新增)**(config_db.validate_skill_pool_links 加载拒绝——pool_composition / cast_side 两族)
|
||||
mvp_content: 八行 = attack 普通攻击(basic)· lunge 突刺(damage)· charge 蓄力(buff→empower)· heavy 重击(damage)· harden 硬化(buff→fortify,Boss 池独占——增益 ≤1 纪律下旧蓄力拍不进 Boss 池)· bite 撕咬(damage)· venom_burst 毒爆(damage,**2026-09-19 +rider_mult 0.75 必中毒分量**)· web_snare 蛛网束缚(debuff→off_guard,妨害首发——卓尔池独占、实装面收窄仅 L2 Boss)——倍率 / 冷却 / 持续等现行值**不列于本 registry**,读 data/tables/skills.tres(bite / venom_burst 2026-09-17 分支节点图批新增,本条 2026-09-18 补收编;venom rider / web_snare 2026-09-19 新效应词汇批新增)
|
||||
mvp_content: 九行 = attack 普通攻击(basic)· lunge 突刺(damage)· charge 蓄力(buff→empower)· heavy 重击(damage)· harden 硬化(buff→fortify,Boss 池独占——增益 ≤1 纪律下旧蓄力拍不进 Boss 池)· bite 撕咬(damage)· venom_burst 毒爆(damage,**2026-09-19 +rider_mult 0.75 必中毒分量**)· web_snare 蛛网束缚(debuff→off_guard,妨害首发——卓尔池独占、实装面收窄仅 L2 Boss)· earth_pulse 大地脉动(debuff→sapped,第二妨害词汇首发——duergar_king 灰矮人石君王池独占,独占性 = 唯一引用 enemy_id: duergar_king,字段口径同 web_snare〔duration 2 = 1 个有效结算〕)——倍率 / 冷却 / 持续等现行值**不列于本 registry**,读 data/tables/skills.tres(bite / venom_burst 2026-09-17 分支节点图批新增,本条 2026-09-18 补收编;venom rider / web_snare 2026-09-19 新效应词汇批新增;earth_pulse 2026-09-20 第三关内容批新增,provisional 归 难度曲线与Boss)
|
||||
referenced_by: [敌人系统, 战斗结算, 难度曲线与Boss, 数据配置]
|
||||
|
||||
- name: reward_table
|
||||
@@ -535,7 +535,7 @@ entities:
|
||||
nodes: 节点图结构——节点数组 + 连线(node_kind ∈ {battle, reward, rest, boss},切片字段名 type;每节点领关卡内唯一**节点编号**,battle/boss 数据键 node_depth 沿用〔v1.0 语义升级:深度 → 节点编号〕;连线 = 出边节点编号表,只朝前进方向、无回头路);单链特例 = 隐式后继(数组序即链,切片现行形态零漂移)
|
||||
rowset_rule: 图合法性校验(2026-09-17 关卡节点地图 v1.0)——节点编号关卡内唯一、入口唯一、Boss 恒唯一终点(编号最大,Dmax 语义平移)、连线无环、所有节点沿连线可达 Boss,违规加载期致命;实现批(2026-09-17 分支节点图批):校验落 LevelTable.validate(单链形态经同一套算法——编号解析单链 = 数组下标 / 图 = node_depth),L1 单链与 L2 图双行集加载全绿断言
|
||||
cross_table_validation: battle/boss 节点 (L,D) 在 board_gen/enemy 两表存在精确行(数据配置 跨表校验⑧复用 + 冒险结构 AC-7 冒烟断言——序列关数 ⊆ 内容覆盖,越界关卡 = 内容生产缺口)
|
||||
mvp_content: L1 全行(切片转正——7 节点链〔单链特例,合法图形态〕、rest_heal_pct=30);L2 全行已落地(2026-09-17 分支节点图批——首张分支图:9 节点〔入口 0 → 中间三层 2/3/2 → Boss 8〕、真实岔路 4 处、奖励点+恢复点各 1、战斗节点 6 + Boss;行值 provisional 归 难度曲线与Boss v0.7;首页直入口试玩 ≠ 两关序列生效,正式序列推进仍登记待办)
|
||||
mvp_content: L1 全行(切片转正——7 节点链〔单链特例,合法图形态〕、rest_heal_pct=30);L2 全行已落地(2026-09-17 分支节点图批——首张分支图:9 节点〔入口 0 → 中间三层 2/3/2 → Boss 8〕、真实岔路 4 处、奖励点+恢复点各 1、战斗节点 6 + Boss;行值 provisional 归 难度曲线与Boss v0.7;首页直入口试玩 ≠ 两关序列生效,正式序列推进仍登记待办);**L3 全行已落地(2026-09-20 第三关内容批——「第三层 · 灰矮人矿城」:九节点图复用 L2 同模板〔6 战 + Boss + 奖励 + 恢复、真实岔路 4 处〕,行值全 provisional 归 难度曲线与Boss;测试直入口 ≠ 序列生效——正式三关序列推进仍登记 Alpha 验收条件)**
|
||||
referenced_by: [冒险结构, 关卡节点地图, 难度曲线与Boss, 棋盘生成, 数据配置]
|
||||
|
||||
- name: adventure_table
|
||||
|
||||
@@ -0,0 +1,196 @@
|
||||
# 提案:冒险内成长批定稿(临时资源 GP + 商店房节点)
|
||||
|
||||
> 日期:2026-09-20
|
||||
> 性质:定稿提案(只读提案,未拍板、未动任何表与代码、未提交 git;逐拍板点经用户裁决后才进实施批,本文不实施)
|
||||
> 依据:06-待办清单「冒险循环内成长提案(临时资源 GP + 商店房节点)」条目(2026-09-18 登记,含六开放问题原文);2026-09-20 用户拍板立项提前、与第三关内容批捆绑;地图战斗资源 v0.14 八型字典与雷安同池冻结面;关卡节点地图 v1.0 四类节点封闭枚举;战斗结算轮次生命周期与呈现只读面(表尾 v0.22 已被充能退役批占用,本批文档版本顺延);元进度三柜台与覆盖值通道;01-核心循环数值语言条款;第三关内容批预案(proposal-level3-content-2026-09-20.md)的敌值锚
|
||||
> 行值纪律:本文只给**候选锚点与取值域**供拍板;正式行值一律随批落表(shop 新表 / level 表 / 冒险表),数值所有权归 难度曲线与Boss,不在此双写。
|
||||
|
||||
## 0. 一句话结论
|
||||
|
||||
建议按「战斗掉落单渠道 + 商店房节点 + 三属性整数档商品」的最小修订面落地冒险内成长:**格面资源池零结构改动**(雷安同池与八型封闭冻结零触碰)、GP 走战斗胜利掉落(普通战 2 / Boss 5,固定值)、关卡节点图四类扩五类加商店房(每关恰 1、中段必经位、L2 行集首落地)、商品与永久强化属性锻造同族 flat 整数档(攻 +1 首价 4 / 血上限 +3 首价 2 / 护甲等级 +1 首价 4,重复购买每档 +2 递增)。按此锚,"通关 L1+L2 + 两次大奖励 + 途中商店购买"后的入关第三关参数 ≈ 攻 5–6 / 血 28–34 / 护甲等级 10–11,对齐**成长代理档**(攻 6 / 血 34,即冒烟满配通关路径的属性覆盖档 `atk+200%/hp+100%` 的量级),第三关零成长红档由此解除。
|
||||
|
||||
## 1. 提案背景与立项口径
|
||||
|
||||
- **动机**(06 条目原文归述):冒险循环内主角属性开局定死——攻击恒表值 2、奖励房只发功能道具(切片期直通空态)、恢复房只回血;而怪物数值随节点编号台阶抬升。第三关内容批(灰矮人 15 血重甲 / Boss 约 75 血量级)落地后,零成长基线按生存链区间模型判读必成红档(配置事故档,涉事行值禁止入表)。
|
||||
- **立项**:2026-09-18 用户提案登记(原排 Alpha 与雷安差异化、冒险前配比两提案同窗口评估);2026-09-20 用户拍板立项提前、与第三关捆绑。第三关内容批预案 §5 已把「GP + 商店房」列为玩家成长三路(GP 商店房 / 大奖励数值联动 / 永久强化)中唯一覆盖"关卡内+关卡间"中途成长的方案,建议提前。
|
||||
- **拆批形态**(拍板点 1):第三关捆绑批拆两个子批——**L3-A 玩家成长批**(本文全部内容:GP 经济 + 商店房 + GDD 修订 + 分层验收)、**L3-B 第三关内容批**(敌种 / 板面 / 地形 / 行值,见第三关内容批预案)。推荐 L3-A 先行或同窗口:商店成长先落地,第三关行值才有判读基准;L3-A 不含任何敌值改动,两子批互斥文件集不重叠。
|
||||
- **边界**:本批不做大奖励数值联动(在案义务,归 难度曲线与Boss 大奖励联动批,本文只登记联动面)、不做永久强化数值铺量(依赖真人批 k 系数)、不动格面资源八型结构(见 §2.1)。
|
||||
|
||||
## 2. 六开放问题逐条裁决建议
|
||||
|
||||
编号与 06 条目原文一致(①–⑥)。每条按:现状 / 推荐方案 / 备选方案 / 理由 / 连带修订面。
|
||||
|
||||
### 2.1 问题①:GP 格面与八型池的结构关系
|
||||
|
||||
- **现状**:格面资源八型封闭枚举(attack / defense / heal / blast / weaken / pierce / magic / action),每型正负两行齐全由 schema 字典完整性校验强制(CELL_TYPE_KEYS 十六格,缺行加载致命);安全格与雷格从同一类型池、同一权重分布摇定(雷安同池,结构冻结项);格面池正向八行权重合计 73,加清图槽 clear_blast 1 = 74(地图战斗资源 v0.14 口径)。用户提案原文的第二获取途径 = 格面枚举 +1(某些安全格或雷格的奖励身份 = 金币 GP)。
|
||||
- **推荐方案:格面池零修订,GP 不进九型**。GP 获取只走战斗掉落(问题②)一渠道;用户提案的"格面 GP"途径退役为备选(见下)。清图槽 GP 附加(clear_<图类型> 差异化插槽里加 GP 值行)作为可选的后续加厚项,随清图池按图类型差异化内容批(已登记 P1)启用,不进本批。
|
||||
- **备选方案:九型扩类**(用户提案原途径)——新增 coin/gp 型,正负两行齐全(负向行 weight=0 纯字典,语义候选:挖雷格 GP 面按 heal 型先例兑直伤罚款,或并入挖雷惩罚不加行——后者破"每型恰一行负向"字典完整性,需 schema 连带改)。进池则类型频次合计 73→新值,正向权重需全池再平衡。
|
||||
- **理由**:① 结构面——加型虽是合法修订(五→七→八有三次先例,加新类型等于修订文档不是调参数),但牵动 schema 词表、字典完整性、棋盘徽标呈现、极性矩阵语义九宫审查与权重全池再平衡,修订面是本提案其余部分之和;② 验收面——战斗掉落固定值使 GP 供给逐局可预测,MC 分层读数与调参门槛低;格面 GP 引入第二个供给方差源,供给量级标定周期翻倍;③ 语义面——格面 GP 的极性语义难自洽(开雷格 = 扣钱?罚款直伤与"资源不分好坏、极性由动作决定"的字典语义打架);④ 红线面——见 §4.1,格面 GP 会让"抽象货币不做"红线的守护对象(扫雷收益直接兑成战斗效果)首次出现夹层,而战斗掉落 GP 不碰这条线。
|
||||
- **连带修订面**:推荐方案 = 格面资源 / reward.tres / reward_table.gd 零改动;备选方案 = 地图战斗资源 v0.15 九型批 + schema 词表 + registry + 棋盘徽标 + 行动经济对账重跑 + 与雷安差异化 Alpha 批合并立项(见 §4.3)。
|
||||
|
||||
### 2.2 问题②:战斗掉落的量级与记账
|
||||
|
||||
- **现状**:战斗结束分支发 `battle_finished` 信号(载荷 = 胜负结果与主角余量生命,销毁前捕获——呈现只读面登记的契约,字段增删走战斗结算文档修订);战斗域无任何跨战斗资源状态(战斗结束清空原则);冒险层跨关遗留物只有生命账与冒险摘要(冒险结构负空间清单)。
|
||||
- **推荐方案**:
|
||||
- **量级锚(固定值,零掷骰)**:普通战斗胜利 +2 GP,Boss 战胜利 +5 GP。供给账:L1(4 普通战 + Boss)= 13 GP;L2(6 普通战 + Boss)= 17 GP;通关两关入第三关时累计可供消费 ≤ 30 GP;L3 图内(6 普通战 + Boss)= 17 GP 供 L3 途中小店。备选量级:按节点深度递增(1 + 节点深度)或区间掷定——都引入供给方差,验收分层与调参成本高,不推荐先行。
|
||||
- **记账挂点**:战斗结算在战斗结束分支的 `battle_finished` 载荷扩一个 `gp_dropped` 字段(按本战击杀节点身份算好的定值)——战斗域零 GP 状态、零入账执行,只出事实;**入账与账本归冒险结构**:新增 GP 冒险账本(与生命账本并行的第二本局内账),收口三条——战斗胜利入账(读载荷)、商店购买出账、冒险结束清零。GP 不入存档、不入冒险摘要。行进器(LevelRunner)的商店房兑付消费这本账。
|
||||
- **备选方案**:战斗结算内部即时空洞兑付(战斗域持 GP 至战斗末一次上抛)——与"战斗结束清理敌人与状态"的清空语义耦合,且把经济记账塞进结算编排,违反战斗结算"折算归我、账本归冒险结构"的现有边界切法;不推荐。
|
||||
- **理由**:06 条目归属行已写"战斗掉落兑付归战斗结算与冒险结构共裁"——本方案把共裁落成"战斗结算出事实、冒险结构记账"的单向依赖,双方文档各改一处;账本口子最少(三条收口),与生命账本四收支口的写法同族。
|
||||
- **连带修订面**:战斗结算(呈现只读面表 battle_finished 载荷行 + 版本顺延 v0.23)、冒险结构(GP 账本节)、行进器代码、试玩日志(playtest_logger 加 GP 收支列供验收取数)。
|
||||
|
||||
### 2.3 问题③:商店房进图版结构
|
||||
|
||||
- **现状**:关卡节点地图 v1.0 四类节点封闭枚举(战斗 / Boss / 奖励 / 恢复),"扩类一律走文档修订";图合法性校验六检(编号唯一 / 入口唯一 / Boss 恒唯一终点 / 前进方向无环 / 连线可达 / 双向可达)落地在 `LevelTable.validate`;P2 后置表登记"商人类节点候选——商人另撞『抽象货币不做』红线;扩类一律走文档修订"。切片行进器已支持网状图选路(choices_presented / pick_next_node)。
|
||||
- **推荐方案**:
|
||||
- **扩类**:四类→五类,+`shop` 商店房(本文即该次修订的提案文本;本节拍板后由实施批落 v1.1)。
|
||||
- **编排规则锚**:每关**恰 1 个**商店房;位置约束 = 不在入口层(节点 0)、非 Boss 层(Boss 恒终点不变)、置于中段深度(商品买到位后有足够多的战斗消费它);**必经位**(图拓扑收束使所有入口→Boss 路径穿过商店房)——零新增图合法性检查,六检原样覆盖。
|
||||
- **首落地行集**:L2 网状图加 1 商店房节点(中段层插位,连线 rewiring 保六检全绿——具体连线归实施批);L1 行集零改动(教学期最小修订面,L1 掉落的 13 GP 攒进 L2 首店,首店供给感更足);L3 图版由 L3-B 内容批按"含商店房 1 座"设计。
|
||||
- **确认选路交互**:复用"兑付后确认、零自动推进"纪律——行进至商店房即打开商店覆盖层(三商品卡 + 刷新按钮 + 离开按钮),购买即时生效,离开后走兑付确认回选路口;确认挂商店覆盖层,与奖励/恢复节点挂兑付反馈覆盖层同构,零新增交互范式。
|
||||
- **兑付移交语义**:购买兑付写**覆盖值通道**(与关卡大奖励同通道:大奖励已走战斗开始入参覆盖生命与上限,商店累加同一通道的 flat 加算区——基础表值 + 大奖励累加 + 商店累加 = 入战参数);生命账本收支口见拍板点 7。
|
||||
- **备选方案**:商店房为可绕过支路(至少存在一条不含商店的入口→Boss 路径)——构筑选择感更强,但需要图合法性**第 7 检**(商店外完整路径存在性),且跳过商店的玩家在第三关可能跌红档,验收分层多一层"进店与否";不推荐先行,留作 Alpha 构筑面候选。
|
||||
- **理由**:必经位让成长保底成为图结构事实而非玩家自觉,红档风险收敛在数值侧(可调)而非行为侧(难测);且六检零改动是本提案"最小修订面"原则在节点图上的落点。
|
||||
- **连带修订面**:关卡节点地图 v1.1(枚举表 + 节点兑付表 + 验收标准)、level_table.gd(type 词表 +shop)、level.tres(L2 行集)、图合法性校验零改动(推荐方案下)。
|
||||
|
||||
### 2.4 问题④:商店内容与定价
|
||||
|
||||
- **现状**:数值语言注记(06 条目)已锁定档位词汇走 **flat 整数**、与永久强化三属性同族——该项免议(2026-09-18 数值语言拍板批)。永久强化属性锻造三档 = 生命上限 / 基础攻击 / 护甲等级,定价几何递增原则已拍板(元进度)。
|
||||
- **推荐方案**:
|
||||
- **商品池 = 三属性同族档**(与属性锻造同族、共用覆盖值通道语义,验收换算可比):
|
||||
|
||||
| 商品 | 档位(flat 整数) | 首价锚 | 重复购买价 |
|
||||
|---|---|---|---|
|
||||
| 攻击锻升 | 基础攻击 +1 | 4 GP | 每档 +2(4→6→8) |
|
||||
| 生命锻升 | 生命上限 +3 | 2 GP | 每档 +2(2→4→6) |
|
||||
| 护甲锻升 | 护甲等级 +1 | 4 GP | 每档 +2(4→6→8) |
|
||||
|
||||
重复购买递增是元进度"几何递增"原则的局内整数简化(逐档 +2,防一次性堆满单一属性、给堆叠自然衰减);跨店与同店同表递增(按冒险内累计购买档数计)。
|
||||
- **三选一 + 刷新**:到店时从三属性档按权重摇三件陈列(不重复);刷新 2 GP/次,单店至多 2 次——刷新花的是购买力,自平衡,不需要额外限购逻辑。摇号消费**新封闭随机流 `shop_roll`**(主种子派生、可回放)——冒险结构"冒险内一切随机派生自主种子"契约的又一消费点,随机流清单随批登记(战斗域既有六处封闭流之外的第一处冒险域流)。
|
||||
- **定价一致性核对**:全冒险 30 GP 预算 vs 全表购买欲望(攻三档 18 + 血两档 6 + 护甲一档 4 = 28 GP + 刷新余量)≈ 打平略余——玩家必须取舍,但不会出现"钱多到无所买"或"全买得起"两个失速态。
|
||||
- **备选方案**:① 一口价线性(无递增)——实现最简,但攻击档无衰减会吞噬全部预算(攻 +1 在本作伤害模型里是全维度收益:击杀区间、战斗轮数、承伤暴露全改善),支配策略风险高;② 加第四类商品(功能道具 / 治疗)——**不推荐**:功能道具渠道归奖励节点(关卡节点地图 v1.0 拍板"两渠道不混"),治疗归恢复房,本批不扩。
|
||||
- **理由**:三属性同族让"商店买到的变强"与"营地永久强化"共享同一套玩家心智与验收换算;递增定价把"无限堆攻"的唯一解打散成路线选择(攻流 / 血流 / 甲流),这正是用户提案"随机三选一 + 刷新保持随机性"想要的不确定性。
|
||||
- **连带修订面**:新建 shop 表(`shop.tres` + `shop_table.gd` schema——商品行 / 首价 / 递增步长 / 刷新费 / 限次)、registry shop_table 条目、商店覆盖层界面、`shop_roll` 随机流登记。
|
||||
|
||||
### 2.5 问题⑤:双币分工与呈现
|
||||
|
||||
- **现状**:钥石 = 跨局持久(入存档永不丢失,渠道 = 大奖励入账 + Boss 掉落,营地三柜台消费,HUD 常驻余额——元进度定稿口径);局内清零的先例 = 增益随战斗结束清空、道具库存随关卡结束清空、储备行动点随战斗结束清零。
|
||||
- **推荐方案**:**GP 与钥石记账完全分离**——GP 局内有效、冒险结束(完成 / 失败 / 放弃)清零、不入存档、不入冒险摘要五件事清单;钥石照旧。呈现两件:① GP 余额常驻(顶栏 / 英雄卡邻接位,与钥石余额呈现位并存但视觉区分——GP 是金币意象、钥石是晶体意象,图标归 HUD 批);② 商店界面 = 商店覆盖层(2.3 的交互形态)。归属:呈现实现归 HUD 框架批(本批只提需求与数据源——GP 账本读数、商店商品快照),与元进度"解锁界面双入口框架"的营地入口互不侵界(商店在冒险内,营地在冒险外)。
|
||||
- **备选方案**:GP 计入冒险摘要(记入账合计 / 购买次数)——复盘价值有一点,但破坏"摘要五件事"封闭清单(加字段走冒险结构修订),且 GP 参照系只在局内、跨局对比无意义;不推荐。
|
||||
- **理由**:双币分工的本质是生命周期切分(钥石跨局 / GP 局内),呈现与记账都从这条推出来;"局内清零不入存档"让存档序列化零改动(GP 不进快照契约域)。
|
||||
- **连带修订面**:冒险结构(GP 账本清零语义)、元进度(GP 与钥石分工注记一行——知会性质,v1.2)、HUD 框架(需求登记)、行进器清零编排。
|
||||
|
||||
### 2.6 问题⑥:成长与验收纪律
|
||||
|
||||
- **现状**:基线通关率带 L1 [35,55]% / L2 [25,45]%(2026-09-20 分带批,重投基线读数 47%/34% 双落带);完美档带 [35,65]%;换算率表首版三行(生命上限 / 基础攻击 / 护甲等级——护甲行强条目:验收读数必须按解锁后参数重测)登记的是**永久强化**的带平移接入口;MC 工具(`level_monte_carlo.gd`)已有 baseline 参数与双画像轴。
|
||||
- **推荐方案**:商店属性提升按**换算率表强条目纪律同类**登记为通关率带的新玩家侧杠杆——① 验收读数一律按"商店存在与否"分层:MC 增 shop 开关(shop=off 现行基线格 / shop=on + 确定性购买画像〔贪心攻击优先:先买攻至三档、再买血、再买甲〕,确定性保证同种子可复现);② 分层带不混判——shop=off 继续用现行带,shop=on 的带平移量归曲线调参批(与「大奖励数值随难度曲线联动」「L2 Boss 承伤微越带」两在案条目同窗口);③ GP 供给量级(2/5 固定值)与商品定价(§2.4)一并作为曲线调参批的杠杆位登记——供给价差比(GP 供给 × 商品档位 = 入关参数)是继血量锚走廊、变异 effect_value 之后第三族玩家侧杠杆,禁独立调参(动供给必复算分层带)。
|
||||
- **备选方案**:只测 shop=on 单格(省一半 MC 预算)——但现行基线读数的连续性就断了(47%/34% 的带判读链断在中间),且"无店态红档风险"(商店批若数值不达标,等于没做)无从暴露;不推荐。
|
||||
- **理由**:分层是六问⑥原文的明确要求;确定性购买画像让 MC 读数可复现、可归因(真人画像偏差后续按真人修正系数批同法标定)。
|
||||
- **连带修订面**:难度曲线与Boss(商店杠杆登记 + 分层读数纪律,v0.17)、`level_monte_carlo.gd`(shop 参数 + 购买画像)、MC 分层读数报告(production/qa/)、换算率登记位(商店行归曲线调参批投值)。
|
||||
|
||||
## 3. 数值锚汇总:入关第三关参数账
|
||||
|
||||
**成长代理档**(本提案的量级对照物)= 冒烟满配通关路径的属性覆盖档 `atk+200%/hp+100%`,即 攻 2→6 / 血 17→34——`smoke_all.gd` 关卡满配断言与 MC 加成档读数的同源口径。商店成长的目标 = 玩家真实路径(大奖励 + 商店)能逼近这个量级,使第三关行值批可以按此量级投值。
|
||||
|
||||
| 轴 | 开局 | 大奖励 ×2(候选锚 +4 上限/次,归大奖励联动批复算) | 商店购买(30 GP 预算内的候选购物单) | 入第三关候选参数 | 成长代理档 |
|
||||
|---|---|---|---|---|---|
|
||||
| 攻击 | 2 | —(现行大奖励无攻击件;攻击轴全靠商店) | 攻 +1 ×3 = 18 GP | **5–6**(L3 途中小店可再 +1) | 6 |
|
||||
| 生命上限 | 17 | +8(两次累加)→ 25 | 血 +3 ×2 = 6 GP | **28–31**(L3 小店可至 34) | 34 |
|
||||
| 护甲等级 | 10 | — | 护甲 +1 ×1 = 4 GP | **11** | —(代理档未含 AC 轴) |
|
||||
| 合计花费 | | | 28 GP / 30 GP 预算 | | |
|
||||
|
||||
量级自洽核对(对着第三关锚,生存链区间模型粗判):攻 5 对灰矮人重甲(普通被克 −1)落地 4 点/击,15 血单体 4 击可清、Boss 约 75 血约 19 击(暴击与掷点带宽另计)——对比零成长基线(攻 2 对重甲落地 1 点/击,Boss 需 75 击)是从"全关红档"回到"首遇位绿档、中段与 Boss 黄档不红"的形态带可判读区间;血 28–31 对 L3 敌攻 3 的承伤暴露约 9–10 个致命轮余量,形态带有落带空间。精确三档判定归 L3-B 行值批按生存链区间模型逐战复算(首遇位绿档断言随批),本表只证量级方向。
|
||||
|
||||
## 4. 与既有红线 / 提案的关系
|
||||
|
||||
### 4.1 「抽象货币不做」红线(05-不做清单)
|
||||
|
||||
红线原文:"扫雷收益全部直接兑成战斗效果,中间隔一层货币会稀释『排雷的因 = 战斗的果』这条因果可见的底线。"判定:**推荐方案不拦**——① 红线守护的是**扫雷收益(格面兑付)的直接性**:八型格面照旧直接兑成战斗效果,零夹层;GP 挂在"战斗胜利"这个战斗域的**果**上(因果链 = 排雷→战斗胜负→GP→买属性,GP 是战斗的果的又一种果实,不是扫雷与战斗之间的折算层);② GP 不是抽象单位——有定名(显示名候选"金币")、HUD 常驻余额、明码定价、局内清零的完整生命周期,玩家随时能回答"GP 哪来的、能买什么、为什么没了",因果可见性底线不破;③ 备选九型格面 GP 则确实把货币夹层插进了格面兑付链(开格→GP→属性三段),需要不做清单 owner 显式修订论证——这是 §2.1 推荐弃九型的第四个理由。P2 后置表"商人类节点另撞红线"的旧注记随本节裁决更新:商店房卖的是属性提升(战斗效果),不是抽象货币兑换,红线判读以本节口径为准。
|
||||
|
||||
### 4.2 雷安同池冻结——破不破
|
||||
|
||||
**推荐方案零触碰**:雷安同池 = "安全格与雷格从同一类型池、同一权重分布摇定";本批格面池(行集、权重、摇号纪律)一字不动,冻结项八项(八型封闭枚举、雷安同池、极性矩阵、装板期预分配且无重摇、负向恒即时无库存、清图恒非空、除摇号外零随机)全部原样。**备选九型方案的精确判读**:进池**不破"雷安同池"本身**(安全格与雷格仍同池摇定,新增的只是池内容),但破**"八型封闭枚举"冻结项**(八→九,走 owner 修订流程——用户已明示冻结约束执行侧不约束 owner,允许下破冻结即合法修订,有五→七→八三次先例),且类型频次合计 73→新值触发行动经济对账与关级通关恒等式复算义务。若用户拍板备选,按此流程走,并与 §4.3 两提案合并立项。
|
||||
|
||||
### 4.3 与「雷安差异化」「冒险前配比」两个 Alpha 提案的合并评估面
|
||||
|
||||
| 面 | 推荐方案(格面零修订) | 备选方案(九型扩类) |
|
||||
|---|---|---|
|
||||
| 与雷安差异化(Alpha 批,破同池) | 无共享修订批——两提案的修订面不相交(一个动格面池、一个零动格面池),只在"验收读数分层"方法论上互引 | **共用格面池修订批**:九型 + 雷安差异化都动类型分布语义与权重表,合并为一次"格面池结构修订批"(一次修订流程、一次对账窗口、一张新权重表),06 条目预登记的合并评估口兑现 |
|
||||
| 与冒险前配比(Alpha 提案,覆盖八型正向权重) | 无交集——配比覆盖域 = 八型正向行,GP 经济不进格面池 | 新增裁决项:第九型进不进玩家配比预算(推荐不进——配比是策略轴、GP 是经济轴,混池会让支配策略分析翻倍),该裁决随合并批一并过 |
|
||||
| 验收联动 | 三方各自分层读数,互不为前置 | 三方合并后必须同批重测基线(一次 MC 全量重投) |
|
||||
|
||||
结论:推荐方案让 GP 批与两个 Alpha 提案**解耦**(GP 批按垂直切片节奏先行,两 Alpha 提案维持其"验收重测与真人试玩先跑"的前置不变);备选方案则把三件事焊成一批,排期回到 Alpha。这是拍板点 2 的实质。
|
||||
|
||||
## 5. 波次 2 实施拆批清单(L3-A 玩家成长批)
|
||||
|
||||
四个互斥文件集(A 表 / B 代码 / C 文档 / D 验证)可四子代理并行;集内文件互斥、集间依赖只允许 D 依赖 B(B 落地后 D 跑验证)。标注〔条件〕的行仅在对应拍板点选备选时执行。
|
||||
|
||||
### A 集:表与 schema(互斥文件集 A)
|
||||
|
||||
| 文件 | 动作 | 内容 |
|
||||
|---|---|---|
|
||||
| `prototypes/dungeon-sweeper-vertical-slice/data/tables/shop.tres` | 新建 | 商品三行(属性键 / 档位 flat 值 / 首价 / 递增步长 / 刷新费 / 单店刷新限次);行值 provisional 归难度曲线 |
|
||||
| `prototypes/dungeon-sweeper-vertical-slice/data/schemas/shop_table.gd` | 新建 | schema + 校验(商品属性键 ∈ {atk, max_hp, armor_class};价格域 [1,999];刷新限次域) |
|
||||
| `prototypes/dungeon-sweeper-vertical-slice/data/tables/level.tres` | 修改 | L2 行集 +1 商店房节点(中段插位、连线 rewiring、六检全绿);L1 零改动 |
|
||||
| `prototypes/dungeon-sweeper-vertical-slice/data/schemas/level_table.gd` | 修改 | type 词表 {battle, boss, reward, rest} +shop |
|
||||
| `prototypes/dungeon-sweeper-vertical-slice/data/tables/reward.tres`、`data/schemas/reward_table.gd` | 〔条件〕零改动(推荐)/ 九型扩两行 + 词表(备选) | 推荐方案下本批不碰格面池 |
|
||||
|
||||
### B 集:切片代码(互斥文件集 B)
|
||||
|
||||
| 文件 | 动作 | 内容 |
|
||||
|---|---|---|
|
||||
| `core/battle_orchestrator.gd` | 修改 | 战斗结束分支:battle_finished 载荷 +gp_dropped(按节点身份查表定值) |
|
||||
| `core/level_runner.gd` | 修改 | GP 冒险账本(入账 / 出账 / 冒险末清零);商店房节点兑付(开商店覆盖层、购买写覆盖值、离开回选路确认);`set_hero_override` 邻接位扩 flat 加算区(基础表值 + 大奖励累加 + 商店累加);购血 = 上限与当前生命同步 +Δ |
|
||||
| `core/config_db.gd` | 修改 | shop 表加载与校验挂接;level 表 type 扩词校验 |
|
||||
| `core/rng_service.gd` | 修改 | 新封闭随机流 `shop_roll`(主种子派生、独立 scope、可回放) |
|
||||
| `presentation/views/shop_overlay_view.gd` | 新建 | 商店覆盖层(三商品卡 / 价格与递增显示 / 刷新按钮 / 离开按钮 / GP 余额) |
|
||||
| `presentation/hud_presenter.gd`、`presentation/views/hero_info_panel_view.gd` | 修改 | GP 余额常驻位 |
|
||||
| `presentation/ui_assembler.gd`、`presentation/main.gd` | 修改 | 商店覆盖层挂接与 modal 栈接线 |
|
||||
| `presentation/playtest_logger.gd` | 修改 | GP 收支 / 购买记录日志列(验收取数面) |
|
||||
|
||||
### C 集:GDD 文档与 registry(互斥文件集 C)
|
||||
|
||||
| 文件 | 动作 | 版本 | 内容 |
|
||||
|---|---|---|---|
|
||||
| `design/gdd/systems/冒险循环/关卡节点地图.md` | 修改 | v1.1 | 四类→五类封闭枚举(商店房行 + 兑付动作);编排规则(每关恰 1 / 必经 / 深度约束);确认选路交互;验收标准 + 商店房条目;P2 商人类节点注记按 §4.1 更新 |
|
||||
| `design/gdd/systems/冒险循环/冒险结构.md` | 修改 | v0.5 | GP 冒险账本节(三收口:战斗入账 / 商店出账 / 冒险末清零);生命账本第五收支口(购血同步 +Δ);覆盖值通道扩商店累加区;`shop_roll` 随机流登记 |
|
||||
| `design/gdd/systems/战斗循环/战斗结算.md` | 修改 | v0.23(v0.22 已被充能退役批占用,表尾顺延) | battle_finished 载荷 +gp_dropped(呈现只读面表);战斗域零 GP 状态注记 |
|
||||
| `design/gdd/systems/战斗循环/地图战斗资源.md` | 〔条件〕 | 推荐=零修订;备选=v0.15 九型批 | 备选才动(词表 / 字典 / 权重 / 候选集合 / 冻结清单) |
|
||||
| `design/gdd/systems/冒险循环/难度曲线与Boss.md` | 修改 | v0.17 | 商店杠杆登记(GP 供给 × 定价 = 第三族玩家侧杠杆,禁独立调参);分层读数纪律;带平移归调参批(与「大奖励数值联动」条目同窗) |
|
||||
| `design/gdd/systems/冒险循环/元进度.md` | 修改 | v1.2 | GP 与钥石分工注记(生命周期切分一行,知会性质) |
|
||||
| `design/registry/entities.yaml` | 修改 | — | shop_table 新条目;battle_finished 载荷 / level_table 词表 / 随机流清单随批注记 |
|
||||
| `design/gdd/01-核心循环.md` | 修改 | — | 冒险循环图补商店房节点(一处措辞,零规则改动) |
|
||||
| `design/gdd/06-待办清单.md` | 修改 | — | GP 提案条目收口(拍板通过 → 移除,去向与依据登记台账与 active.md);第三关捆绑拆批登记 |
|
||||
|
||||
### D 集:验证(互斥文件集 D,依赖 B 集落地)
|
||||
|
||||
| 文件 | 动作 | 内容 |
|
||||
|---|---|---|
|
||||
| `prototypes/dungeon-sweeper-vertical-slice/smoke/smoke_all.gd` | 修改 | 新断言组:GP 入账恰一次/战(普通 2 / Boss 5);购买扣费与覆盖值生效(买攻后攻击合计读数);购血上限与当前生命同步;刷新限次被拒;GP 冒险末清零;L2 图六检全绿含商店房 |
|
||||
| `smoke/level_autoplay.gd` | 修改 | 商店房遍历(进店-购买-离开路径的自动玩家支持 + 贪心购买画像) |
|
||||
| `smoke/level_monte_carlo.gd` | 修改 | shop 开关参数(off/on 双格)+ 确定性购买画像;分层读数列(通关率按 shop 态分列) |
|
||||
| `production/qa/mc-shop-baseline-2026-09-XX.md` | 新建 | 分层基线报告(N、画像、双格对照,对齐 mc-reinvest-baseline 口径) |
|
||||
| `smoke/reward_expectation.gd` | 〔条件〕 | 备选九型时加格面 GP 供给期望列 |
|
||||
|
||||
## 6. 验收纪律(收束)
|
||||
|
||||
1. **读数分层**:一切通关率、承伤、余量读数按"商店存在与否"双格判读;shop=off 续用现行带(L1 [35,55] / L2 [25,45] / 完美档 [35,65]),shop=on 带平移归曲线调参批,两态不得混读。
|
||||
2. **带联动归口**:商店杠杆的带平移量、GP 供给量级微调、商品定价曲线修正,全部归难度曲线与Boss调参批(与「基线通关率越带」「L2 Boss 承伤微越带」「大奖励数值联动」三在案条目同窗口),本批只登记杠杆位不投正式值。
|
||||
3. **换算率强条目纪律同类**:商店属性提升对新带的影响在换算登记位有行可查(归调参批投值),验收读数不得用 shop=off 读数外推 shop=on 判读。
|
||||
4. **冒烟门**:A/B/C 集全部落地后 smoke_all 全绿 + 双探针 PASS(商店覆盖层 UI 探针 / 分层 MC 探针)才进 MC 分层基线;MC 读数须 ≥50 distinct seeds(难度曲线 v0.13 成文的方法论规则)。
|
||||
5. **红线复查**:拍板点全部通过后,本提案 §4.1–4.3 的三条关系判定由各 owner 文档修订批复核一次(不做清单注记更新 / 冻结清单零改动确认 / 两 Alpha 提案条目的合并评估注记)。
|
||||
|
||||
## 7. 拍板点(≤10,一次过)
|
||||
|
||||
| # | 问题 | 推荐 | 备选 |
|
||||
|---|---|---|---|
|
||||
| 1 | 立项形态与拆批 | 与第三关捆绑,拆 L3-A 玩家成长批(本文)+ L3-B 内容批,L3-A 先行 | 单批合并实施 |
|
||||
| 2 | 问题①:GP 格面渠道 | 格面池零修订,GP 走战斗掉落单渠道(清图槽 GP 附加后置随清图差异化批) | 九型扩类(破八型封闭冻结,走 owner 修订,与雷安差异化 / 配比两 Alpha 提案合并立项) |
|
||||
| 3 | 问题②:掉落量级 | 普通战 2 GP / Boss 5 GP,固定值零掷骰 | 按节点深度递增(1+深度)或区间掷定 |
|
||||
| 4 | 问题②:记账挂点 | battle_finished 载荷 +gp_dropped(战斗结算 v0.23)+ GP 冒险账本归冒险结构 | 战斗域内兑付 / GP 入冒险摘要 |
|
||||
| 5 | 问题③:商店房编排 | 每关恰 1、中段**必经位**、L2 行集首落地(L1 零改动)、图合法性六检零改动 | 可绕过支路(需加第 7 检"商店外完整路径") |
|
||||
| 6 | 问题④:商品与定价 | 三属性 flat 同族档:攻+1 首价 4 / 血上限+3 首价 2 / 护甲+1 首价 4,重复购买每档 +2;三选一 + 刷新 2 GP 限 2 次 | 一口价线性;或加功能道具商品(不推荐——两渠道不混) |
|
||||
| 7 | 购血语义(生命账本连带) | 上限与当前生命同步 +Δ(账本第五收支口) | 仅加上限不回血 |
|
||||
| 8 | 问题⑤:双币与呈现 | GP 局内清零、不入存档不入摘要;余额常驻 + 商店覆盖层;新封闭随机流 shop_roll | GP 计入冒险摘要 / 商店房内局部显示余额 |
|
||||
| 9 | 数值锚:入第三关参数 | 攻 5–6 / 血 28–34 / 护甲等级 11(大奖励候选 +4 上限/次随大奖励联动批复算;对照成长代理档 攻 6/血 34) | 保守档 攻 4 / 血 25(第三关带域须同步放宽,归曲线批) |
|
||||
| 10 | 问题⑥:验收分层 | MC 增 shop 开关双格读数 + 确定性贪心购买画像;带平移归曲线调参批;换算率强条目纪律同类登记 | 只测 shop=on 单格(基线读数连续性断裂,不推荐) |
|
||||
|
||||
拍板通过后执行顺序建议:A 集(表)→ B 集(代码)∥ C 集(文档与 registry)→ D 集(冒烟 + 探针 + MC 分层基线)→ 06 条目收口 → L3-B 第三关内容批(行值按 §3 量级投值,带域归曲线调参批统一收口)。
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
## 当前状态快照(收口批先更新本节,再追加台账;≤10 行)
|
||||
|
||||
- **更新于**:2026-09-20(**第三关内容批 + GP 定稿提案批**,worktree l3-content-20260920,台账 115〔113/114 号让给并行在飞会话两批,顺延让号〕):L3-B 落地——第三层「灰矮人矿城」行集(enemy 七行 duergar/hook_horror/duergar_king + board 13×13/Boss 14×14 词表值 deep_underdark + 九节点图 + 落石/矿尘 + 大地脉动=sapped 首发)+ 关卡 3 测试直入口 + 冒烟 375 项全绿 + registry 五条目 + GDD 五文档(03 v0.6/曲线 v0.17/棋盘生成 v0.4/地形变异 v0.4/06 GP 条目立项提前);板形验算 13/14×14 推理率 0.94–0.96 全达标零降档;MC 读数:零成长基线普通 16%/完美 20%(N=300,死亡 75–80% 集 Boss——预案「必红」预判被棋盘武器库部分证伪,成长批必要性不变)+ 成长代理档 40%/80%;**GP+商店房定稿提案已交付**(proposal-gp-shop-room-2026-09-20.md,10 拍板点:格面池零修订/商店房必经位/三属性 flat 档 攻+1=4 血+3=2 甲+1=4),待用户逐条拍板后进波次 2 实施批
|
||||
- **更新于**:2026-09-20(**第一层定名「地精洞窟」二改批**,worktree rename-l1-goblin-20260920,台账 111):用户拍板「不用这么 DND,就叫地精洞窟」——终名不绑定 DND 专名部族、规避 IP 指涉;「裂颚」出典作废仅留档,8 处消费面与提案层名行/沿革注记随批同步(03-内容规模 补 v0.5);纯字面变更零行值零机制改动,冒烟 355 项 0 失败
|
||||
- **更新于**:2026-09-20(**第一层改名「裂颚洞窟」批**,独立 worktree 分支 rename-l1-20260920,台账 110〔登记时撞并行会话 109 号,顺延让号〕):用户拍板「苔藓回廊与地精不契合」作为过期词语全仓退役——新名致敬 DND 5e《凡戴尔的失落矿坑》地精部族「裂颚」(Cragmaw)洞窟巢穴,洞窟纵深连通幽暗地域、与第三关预案「灰矮人矿城」构成三层纵深叙事线;八处面同步(level.tres display_name+表尾批注 / ui_assembler 首页按钮 / 切片 README×2 / 00-游戏概念 / 03-内容规模 v0.4 / registry level_table / 第三关提案层名行+蕈林理由重写+两处旧读数顺手校正);纯字面变更零行值零机制改动,冒烟 355 项 0 失败
|
||||
- **更新于**:2026-09-20(**地图战斗资源正文历史叙述迁出批**,worktree doc-polish-20260920,台账 109):变更记录归版本历史的纪律成文(正文零历史叙述),极性矩阵节两处旧体系对照句迁出;doc_term_audit 疑似 3→2
|
||||
@@ -286,3 +287,4 @@
|
||||
109. **地图战斗资源正文历史叙述迁出批(2026-09-20,本会话——用户对 doc_term_audit 剩余 3 疑似逐条裁决:①battle ambusher 留档表可接受〔废案存档不影响使用〕、②极性矩阵正文的历史对照句应迁出——变更记录应如 ADR 记于版本历史而非系统描述正文、③06 雾格失义随待办完成自然消解;worktree doc-polish-20260920,合并 3abc2a1,纯文档 1 文件 2 行)**:①极性矩阵节「取代旧体系的四套固定兑付」历史对照句删除(信息已在版本历史 v0.4 全量留档);②节尾「退化特例/撤旗退役变更叙述」删除,改一句纪律成文:**矩阵只描述现行规则,被取代的旧体系与历次结构变更一律记版本历史,不在正文复述**;③验证=gdd_lint 与 master 基线 diff 只减不增(-1 条 R3)、doc_term_audit 疑似现行 3→2(余 2 处=用户判定留档:battle ambusher 留档表、06 雾格失义陈述)。**纪律首例**——本批确立「正文零历史叙述」文档纪律,后续各系统文档的历史对照句按同口径迁移(未排期,遇批顺带)
|
||||
110. **第一层改名「裂颚洞窟」批(2026-09-20,本会话——用户拍板「苔藓回廊跟地精不太契合……直接把苔藓回廊作为过期词语删除替换掉」,新名授权本会话选定;worktree rename-l1-20260920)**:全仓「苔藓回廊」现行用字清零(8 处消费面全替换,仅 5 处退役审计注记有意保留——版本历史/registry 注记/表尾批注/提案沿革,符合文档纪律)——①切片 `level.tres` display_name →「第一层 · 裂颚洞窟」+表尾改名批注;②切片首页按钮 `ui_assembler.gd`;③切片 README 试玩指引×2;④`00-游戏概念` 首关层名行;⑤`03-内容规模` 层名表+版本历史 v0.4;⑥registry `level_table` display_name 行。**命名出典**:新名致敬 DND 5e《凡戴尔的失落矿坑》(Lost Mine of Phandelver)地精部族「裂颚」(Cragmaw)洞窟巢穴——地精盘踞的浅层洞窟、通道向下延伸天然连通幽暗地域,且 LMOP 反主即卓尔「黑蜘蛛」,与 L2 蛛化卓尔 Boss 同谱;三层纵深叙事线贯通:裂颚洞窟(地精部族)→ 幽暗地域(蛛群·卓尔裔)→ 灰矮人矿城(第三关预案方向,未拍板)。第三关提案随批同步:层名行 + 蕈林备选理由重写(原理由绑「苔藓」已失义)+ 层名沿革注记 + 两处旧读数顺手校正(L2 完美 Boss 承伤改 51.6% 重投基线口径〔原 55.8% 系台账 96 地形批读数、已被台账 105 重投翻页〕;通关率带改分带后 L1 [35,55]/L2 [25,45])。仅字面变更:display_name 无代码/探针消费方(grep 证实),节点结构/行值/机制零改动。**验证**:冒烟 355 项 0 失败(tools/run_smoke.py 三闸全过;全新 worktree 首跑撞 class_name 缓存坑,对切片目录 `--editor --quit` 刷缓存后过——十二坑清单第 1 条再验证);全仓 grep 苔藓仅剩审计注记。
|
||||
111. **第一层定名「地精洞窟」二改批(2026-09-20,本会话——用户拍板「不用这么 DND,就叫地精洞窟就行了,不用明确说明是某个部族,毕竟我们没有 DND 的相应版权」;worktree rename-l1-goblin-20260920,纯字面零机制)**:台账 110 的「裂颚洞窟」(DND 5e《凡戴尔的失落矿坑》Cragmaw 致敬名)全仓退役改定「地精洞窟」——理由 = 终名不绑定 DND 专名部族、规避 IP 指涉。8 处消费面同步(level.tres display_name+表尾二改批注 / ui_assembler 首页按钮 / 切片 README×2 / 00-游戏概念 / 03-内容规模 层名表+版本历史 v0.5〔v0.4 出典作废留档〕 / registry level_table / 第三关提案层名行+沿革注记改写);「裂颚」字样仅存于版本历史/批注/沿革等审计记录(有意保留)。洞窟纵深连通幽暗地域的三层纵深叙事线取向不变(地精洞窟→幽暗地域→灰矮人矿城)。**验证**:冒烟 355 项 0 失败三闸全过(worktree 建起即对切片目录预刷类名缓存——十二坑清单第 9 条路径坑的规避姿势);grep 裂颚非审计命中 0。
|
||||
115. **第三关内容批 + GP 定稿提案批(2026-09-20,本会话——用户对 proposal-level3-content-2026-09-20.md 五拍板点全按推荐通过(灰矮人矿城/GP+商店房提前捆绑/乏力首发/板面+地形杠杆/测试直入口),plan 模式三子代理并行执行;worktree l3-content-20260920)**:**L3-B 第三关内容批**——①数据表:enemy.tres 七行(duergar 灰矮人重甲 15 血/灰矮人重装手 16/小队 8、hook_horror 钩爪恐魔轻甲 5–6 血群行〔复用 bite 共享行〕、Boss duergar_king 灰矮人石君王 75 血重甲=Σ91×r_boss≈0.82 锚;两敌种首遇位节点 0/1 固定数量不加骰;armor_class 恒 0 归在案投值条目);board_gen.tres 七行(战斗 13×13/Boss 14×14、d0.25、t0.88、词表第三值 deep_underdark);level.tres 第三关九节点图(与 L2 同模板);variation.tres 落石(flat_damage 3,1→2→3 递进)+矿尘(hide_number);skills.tres earth_pulse 大地脉动(妨害型=sapped 乏力第二词汇首发,字段口径同 web_snare);②代码:board_gen_table.gd 词表 v1.1+1、关卡 3 测试直入口(ui_assembler lv3btn+main 接线)、smoke_all.gd L3 断言段(图结构/跨表 7 坐标/定点/物种集八敌种/首遇绿档成长代理档口径 atk+200·hp+100 十二种子);③registry 五条目(enemy/board_gen_table/skill/variation_table/level_table);④GDD 五文档:03 v0.6(三关已落地/棋盘按关配置口径)/难度曲线与Boss v0.17(第三关图版注记+L3 provisional-pending-growth 口径)/棋盘生成 v0.4(词表 v1.1)/地形变异 v0.4(六类型两轴×三关)/06(GP 条目立项提前);**验证**——冒烟 375 项 0 失败三闸全过+三 UI 探针 PASS;板形验算 13×13 推理率 0.950–0.959/14×14 0.941 全达标零降档(降档梯子未触发);Boss max_gen_attempts 36→32(越 schema 域 [1,32],自决取域上限并批注登记);**MC 读数(unique)**——零成长基线 N=300:普通 16%/完美 20%,死亡 75–80% 集中 Boss(8.boss 败北 188/194 次);成长代理档 N=30:普通 40%/完美 80%;**预案「零成长必红档」预判被部分证伪**(棋盘武器库的克制输出〔魔法矢+1 克重甲/爆裂/攻击增益〕是预案生存链估算未计入的供给面),但成长批必要性判读不变(零成长读数低于 L1/L2 分带下缘、Boss 死亡占比过高、带域需成长后才可判读)——L3 行值维持 provisional-pending-growth,正式带归曲线调参批与 L3-A 同窗。**GP+商店房定稿提案交付**(design/research/proposal-gp-shop-room-2026-09-20.md,196 行 10 拍板点):格面池零修订(GP 走战斗掉落单渠道 普通 2/Boss 5 固定值)、节点图四类→五类加商店房(每关恰 1 中段必经位 L2 行集首落地)、三属性 flat 同族档(攻+1 首价 4/血上限+3 首价 2/护甲+1 首价 4,重复购买每档+2,三选一+刷新 2 GP 限 2 次,shop_roll 新随机流)、入关第三关参数账 攻 5–6/血 28–34/AC11 对照成长代理档、「抽象货币不做」红线判读不拦(GP=战斗之果非扫雷夹层)、验收 shop=off/on 双格分层——**十拍板点待用户逐条表态后进波次 2 实施批(A 表/B 代码/C 文档/D 验证四互斥文件集拆批清单已附)**。
|
||||
@@ -10,7 +10,7 @@ extends Resource
|
||||
const SOLVER_RULES := ["single", "single_subset"]
|
||||
const COST_BUDGET := 16384 # F2c provisional 量级护栏(禁墙钟逃生)
|
||||
const TARGET_ABS_FLOOR := 0.85 # 战斗结算 修订——target 域下限(P1 绝对锚)
|
||||
const BOARD_TYPE_VOCABULARY := ["dungeon", "underdark"] # 图类型词表 v1.0(玩家侧显示名「地图类型」)
|
||||
const BOARD_TYPE_VOCABULARY := ["dungeon", "underdark", "deep_underdark"] # 图类型词表 v1.1(2026-09-20 L3 内容批 +deep_underdark 灰矮人矿道;玩家侧显示名「地图类型」)
|
||||
|
||||
|
||||
func validate() -> Array:
|
||||
|
||||
@@ -136,6 +136,83 @@ rows = [{
|
||||
"min_safe_count": 60,
|
||||
"max_gen_attempts": 24,
|
||||
"board_type": "underdark"
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 0,
|
||||
"board_width": 13,
|
||||
"board_height": 13,
|
||||
"mine_density": 0.25,
|
||||
"inferability_target": 0.88,
|
||||
"solver_rules": "single_subset",
|
||||
"min_safe_count": 70,
|
||||
"max_gen_attempts": 32,
|
||||
"board_type": "deep_underdark"
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 1,
|
||||
"board_width": 13,
|
||||
"board_height": 13,
|
||||
"mine_density": 0.25,
|
||||
"inferability_target": 0.88,
|
||||
"solver_rules": "single_subset",
|
||||
"min_safe_count": 70,
|
||||
"max_gen_attempts": 32,
|
||||
"board_type": "deep_underdark"
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 4,
|
||||
"board_width": 13,
|
||||
"board_height": 13,
|
||||
"mine_density": 0.25,
|
||||
"inferability_target": 0.88,
|
||||
"solver_rules": "single_subset",
|
||||
"min_safe_count": 70,
|
||||
"max_gen_attempts": 32,
|
||||
"board_type": "deep_underdark"
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 5,
|
||||
"board_width": 13,
|
||||
"board_height": 13,
|
||||
"mine_density": 0.25,
|
||||
"inferability_target": 0.88,
|
||||
"solver_rules": "single_subset",
|
||||
"min_safe_count": 70,
|
||||
"max_gen_attempts": 32,
|
||||
"board_type": "deep_underdark"
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 6,
|
||||
"board_width": 13,
|
||||
"board_height": 13,
|
||||
"mine_density": 0.25,
|
||||
"inferability_target": 0.88,
|
||||
"solver_rules": "single_subset",
|
||||
"min_safe_count": 70,
|
||||
"max_gen_attempts": 32,
|
||||
"board_type": "deep_underdark"
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 7,
|
||||
"board_width": 13,
|
||||
"board_height": 13,
|
||||
"mine_density": 0.25,
|
||||
"inferability_target": 0.88,
|
||||
"solver_rules": "single_subset",
|
||||
"min_safe_count": 70,
|
||||
"max_gen_attempts": 32,
|
||||
"board_type": "deep_underdark"
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 8,
|
||||
"board_width": 14,
|
||||
"board_height": 14,
|
||||
"mine_density": 0.25,
|
||||
"inferability_target": 0.88,
|
||||
"solver_rules": "single_subset",
|
||||
"min_safe_count": 82,
|
||||
"max_gen_attempts": 32,
|
||||
"board_type": "deep_underdark"
|
||||
}]
|
||||
|
||||
; 切片调参登记(SLICE-TUNED provisional,调参所有权仍归 C3):
|
||||
@@ -152,3 +229,10 @@ rows = [{
|
||||
; 奖励点 (2,2)/恢复点 (2,3) 不开战斗、无板行(跨表校验只查 battle/boss 节点)。
|
||||
; 板面参数与 L1 高档同值(12×12 d0.25 t0.88)——密度/推理率轴差异化留给 难度曲线与Boss 调参批;
|
||||
; board_type 词表 v1.0(2026-09-19 用户拍板):L1=dungeon 地牢基线 / L2=underdark 幽暗地域(玩家侧显示名「地图类型」);域校验在 board_gen_table.gd 词表常量。
|
||||
;
|
||||
; 第三关内容批(2026-09-20):板面 13×13 / Boss 14×14 兑现「Boss 板 = 本关最大板形」纪律;
|
||||
; 密度维持 0.25(0.28 破推理率门槛有失败先例——切片调参登记 best≈0.81 降级告警,加难主杠杆 = 板面 + 地形);
|
||||
; 词表第三值 deep_underdark(灰矮人矿道方向——v1.1 2026-09-20 L3 内容批,显示名归呈现侧);
|
||||
; min_safe_count 按既有 ~0.42 格占比外推(13×13 → 70 / 14×14 → 82)。
|
||||
; 降档登记:Boss max_gen_attempts 批内拟值 36 越 schema 域 [1,32](config_fatal 修行值纪律——不许放宽 schema),
|
||||
; 按域上限取 32(批内降档梯子「Boss 回 13×13 时 attempts 32」同款值)。行值全 provisional 归 难度曲线与Boss。
|
||||
@@ -271,6 +271,163 @@ rows = [{
|
||||
}],
|
||||
"armor_type": "ward",
|
||||
"armor_class": 0
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 0,
|
||||
"enemy_id": "duergar",
|
||||
"display_name": "灰矮人",
|
||||
"unit_count": 1,
|
||||
"hp": 15,
|
||||
"atk": 3,
|
||||
"atk_min": 2,
|
||||
"atk_max": 4,
|
||||
"pool": [{
|
||||
"skill_id": "attack",
|
||||
"weight": 6
|
||||
}, {
|
||||
"skill_id": "charge",
|
||||
"weight": 2
|
||||
}, {
|
||||
"skill_id": "heavy",
|
||||
"weight": 2
|
||||
}],
|
||||
"armor_type": "heavy",
|
||||
"armor_class": 0
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 1,
|
||||
"enemy_id": "hook_horror",
|
||||
"display_name": "钩爪恐魔",
|
||||
"unit_count": 2,
|
||||
"hp": 5,
|
||||
"atk": 2,
|
||||
"atk_min": 1,
|
||||
"atk_max": 3,
|
||||
"pool": [{
|
||||
"skill_id": "attack",
|
||||
"weight": 6
|
||||
}, {
|
||||
"skill_id": "bite",
|
||||
"weight": 2
|
||||
}, {
|
||||
"skill_id": "charge",
|
||||
"weight": 1
|
||||
}],
|
||||
"armor_type": "light",
|
||||
"armor_class": 0
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 4,
|
||||
"enemy_id": "hook_horror",
|
||||
"display_name": "钩爪恐魔",
|
||||
"unit_count": 2,
|
||||
"unit_count_max": 3,
|
||||
"hp": 5,
|
||||
"atk": 2,
|
||||
"atk_min": 1,
|
||||
"atk_max": 3,
|
||||
"pool": [{
|
||||
"skill_id": "attack",
|
||||
"weight": 6
|
||||
}, {
|
||||
"skill_id": "bite",
|
||||
"weight": 2
|
||||
}, {
|
||||
"skill_id": "charge",
|
||||
"weight": 1
|
||||
}],
|
||||
"armor_type": "light",
|
||||
"armor_class": 0
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 5,
|
||||
"enemy_id": "duergar",
|
||||
"display_name": "灰矮人重装手",
|
||||
"unit_count": 1,
|
||||
"hp": 16,
|
||||
"atk": 3,
|
||||
"atk_min": 2,
|
||||
"atk_max": 4,
|
||||
"pool": [{
|
||||
"skill_id": "attack",
|
||||
"weight": 5
|
||||
}, {
|
||||
"skill_id": "lunge",
|
||||
"weight": 2
|
||||
}, {
|
||||
"skill_id": "heavy",
|
||||
"weight": 2
|
||||
}],
|
||||
"armor_type": "heavy",
|
||||
"armor_class": 0
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 6,
|
||||
"enemy_id": "hook_horror",
|
||||
"display_name": "钩爪恐魔巢群",
|
||||
"unit_count": 2,
|
||||
"unit_count_max": 3,
|
||||
"hp": 6,
|
||||
"atk": 2,
|
||||
"atk_min": 1,
|
||||
"atk_max": 3,
|
||||
"pool": [{
|
||||
"skill_id": "attack",
|
||||
"weight": 6
|
||||
}, {
|
||||
"skill_id": "bite",
|
||||
"weight": 2
|
||||
}, {
|
||||
"skill_id": "charge",
|
||||
"weight": 1
|
||||
}],
|
||||
"armor_type": "light",
|
||||
"armor_class": 0
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 7,
|
||||
"enemy_id": "duergar",
|
||||
"display_name": "灰矮人小队",
|
||||
"unit_count": 2,
|
||||
"unit_count_max": 3,
|
||||
"hp": 8,
|
||||
"atk": 3,
|
||||
"atk_min": 2,
|
||||
"atk_max": 4,
|
||||
"pool": [{
|
||||
"skill_id": "attack",
|
||||
"weight": 6
|
||||
}, {
|
||||
"skill_id": "charge",
|
||||
"weight": 2
|
||||
}, {
|
||||
"skill_id": "heavy",
|
||||
"weight": 2
|
||||
}],
|
||||
"armor_type": "heavy",
|
||||
"armor_class": 0
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"node_depth": 8,
|
||||
"enemy_id": "duergar_king",
|
||||
"display_name": "灰矮人石君王",
|
||||
"unit_count": 1,
|
||||
"hp": 75,
|
||||
"atk": 3,
|
||||
"atk_min": 2,
|
||||
"atk_max": 4,
|
||||
"pool": [{
|
||||
"skill_id": "attack",
|
||||
"weight": 6
|
||||
}, {
|
||||
"skill_id": "heavy",
|
||||
"weight": 2
|
||||
}, {
|
||||
"skill_id": "earth_pulse",
|
||||
"weight": 2
|
||||
}],
|
||||
"armor_type": "heavy",
|
||||
"armor_class": 0
|
||||
}]
|
||||
|
||||
; 切片调参登记 v3(2026-09-12 试玩批次 1 触发——F7 流程;C3 GDD F5 对照):
|
||||
@@ -341,3 +498,12 @@ rows = [{
|
||||
; 现行读数效果:L1/L2 小怪全 light → 穿刺类(开格充能/穿刺弹)被克 −1(穿刺弹 2→1、充能 3 点→2)、普通/魔法中性;
|
||||
; L2 仅 Boss 战非中性(魔法甲)——基础攻击与穿刺弹克制 +1、魔法矢被克 −1(原威力 + delta 自行核算后落笔)。
|
||||
; 原重配批注「魔法矢克 Boss ×150、穿刺弹被克 ×50」与当批矩阵正反互倒(系笔误),随本批订正为上行读数。
|
||||
;
|
||||
; 第三关内容批(2026-09-20):新敌种 duergar 灰矮人(单体重甲中坚——关间台阶 ≈L2 单体 ×1.5,落 [1.3,1.6] 域)
|
||||
; 与 hook_horror 钩爪恐魔(群行捕食者,复用 bite 共享技能行——lunge 已有兄弟精复用先例);两敌种首遇位
|
||||
; (节点 0 / 节点 1)固定数量不加骰——新敌种首遇教学位纪律同 L1 D2 / L2 节点 4;克制面重轻错开
|
||||
; (重甲灰矮人 = 重甲首次登台,轻甲钩爪恐魔保穿刺/普通分量有用武之地),Boss duergar_king 灰矮人石君王
|
||||
; 重甲收束「轻甲→魔法甲→重甲」教学梯度;Boss 血量 75 = Σ普通战生命期望 91 × r_boss≈0.82
|
||||
; (provisional 锚,域 [0.5,1.1]);Boss 专属池独占技 earth_pulse(第二妨害词汇 sapped 首发);
|
||||
; armor_class 恒 0(正式投值仍归「敌方护甲等级正式行值」在案条目全表同批)。行值全 provisional
|
||||
; 归 难度曲线与Boss。
|
||||
@@ -68,6 +68,46 @@ rows = [{
|
||||
"node_depth": 8,
|
||||
"type": "boss"
|
||||
}]
|
||||
}, {
|
||||
"level_index": 3,
|
||||
"display_name": "第三层 · 灰矮人矿城",
|
||||
"rest_heal_pct": 30,
|
||||
"nodes": [{
|
||||
"node_depth": 0,
|
||||
"type": "battle",
|
||||
"next": [1, 2]
|
||||
}, {
|
||||
"node_depth": 1,
|
||||
"type": "battle",
|
||||
"next": [3, 4]
|
||||
}, {
|
||||
"node_depth": 2,
|
||||
"type": "reward",
|
||||
"next": [4, 5]
|
||||
}, {
|
||||
"node_depth": 3,
|
||||
"type": "rest",
|
||||
"next": [6]
|
||||
}, {
|
||||
"node_depth": 4,
|
||||
"type": "battle",
|
||||
"next": [6, 7]
|
||||
}, {
|
||||
"node_depth": 5,
|
||||
"type": "battle",
|
||||
"next": [7]
|
||||
}, {
|
||||
"node_depth": 6,
|
||||
"type": "battle",
|
||||
"next": [8]
|
||||
}, {
|
||||
"node_depth": 7,
|
||||
"type": "battle",
|
||||
"next": [8]
|
||||
}, {
|
||||
"node_depth": 8,
|
||||
"type": "boss"
|
||||
}]
|
||||
}]
|
||||
|
||||
; 切片登记(provisional——C1/C3 未设计,结构位与数值均为 SLICE-TUNED):
|
||||
@@ -95,3 +135,8 @@ rows = [{
|
||||
; 层名二改批(2026-09-20 用户拍板):「裂颚洞窟」→「地精洞窟」——不绑定 DND 专名部族
|
||||
; (规避 IP 指涉),直取地精巢穴意象;洞窟纵深连通幽暗地域的取向不变。
|
||||
; 仅 display_name 字面变更,节点结构 / 行值零改动。
|
||||
;
|
||||
; 第三关内容批(2026-09-20 用户拍板走 proposal-level3-content-2026-09-20.md 推荐):
|
||||
; L3 行集复用 L2 九节点图模板(6 战 + Boss + 奖励 + 恢复,真实岔路 4 处);灰矮人矿城主题
|
||||
; (DND 幽暗地域最深层方向)。仅行集落地,正式三关序列推进仍登记 Alpha 验收条件
|
||||
; (测试直入口 ≠ 序列生效)。行值全 provisional 归 难度曲线与Boss。
|
||||
@@ -56,6 +56,13 @@ rows = [{
|
||||
"buff_ref": "off_guard",
|
||||
"buff_duration": 2,
|
||||
"cooldown_beats": 4
|
||||
}, {
|
||||
"skill_id": "earth_pulse",
|
||||
"display_name": "大地脉动",
|
||||
"type": "debuff",
|
||||
"buff_ref": "sapped",
|
||||
"buff_duration": 2,
|
||||
"cooldown_beats": 4
|
||||
}]
|
||||
|
||||
; 敌人技能池批(2026-09-16 用户拍板——设计权威 docs/proposal-skill-pool.md v1.0,全值 provisional 投值归 难度曲线与Boss):
|
||||
@@ -86,3 +93,8 @@ rows = [{
|
||||
; 伏击),字段复用 buff_ref/buff_duration;duration 2 = 1 个有效结算(empower/fortify 先兑付后衰减含
|
||||
; 施放当轮口径);冷却 4;首发载荷 = 失衡(用户拍板),乏力 sapped 为第二词汇暂不实装;
|
||||
; 池纪律 +:每池妨害 ≤1(ConfigDB 跨表校验);实装面 = 仅卓尔池,其余敌种不动。
|
||||
;
|
||||
; 第三关内容批(2026-09-20):大地脉动 earth_pulse = 灰矮人石君王 duergar_king 专属池独占妨害技
|
||||
; (0 伤害施放行,对主角施加 sapped 乏力——第二妨害词汇首发,状态行 status_effects.tres 既有);
|
||||
; 字段口径同 web_snare(duration 2 = 1 个有效结算);每池妨害 ≤1 纪律由跨表校验覆盖。
|
||||
; provisional 归 难度曲线与Boss。
|
||||
@@ -51,6 +51,28 @@ rows = [{
|
||||
"placement": "any",
|
||||
"board_types": ["underdark"],
|
||||
"counter_items": []
|
||||
}, {
|
||||
"variant_id": "rockfall",
|
||||
"display_name": "落石",
|
||||
"unlock_level": 3,
|
||||
"scope": "region",
|
||||
"effect": "flat_damage",
|
||||
"effect_value": 3,
|
||||
"trigger": "on_open",
|
||||
"placement": "closed_only",
|
||||
"board_types": ["deep_underdark"],
|
||||
"counter_items": []
|
||||
}, {
|
||||
"variant_id": "mine_dust",
|
||||
"display_name": "矿尘",
|
||||
"unlock_level": 3,
|
||||
"scope": "region",
|
||||
"effect": "hide_number",
|
||||
"effect_value": 0,
|
||||
"trigger": "on_number_shown",
|
||||
"placement": "any",
|
||||
"board_types": ["deep_underdark"],
|
||||
"counter_items": []
|
||||
}]
|
||||
|
||||
; 地形变异 首批类型定稿批(2026-09-19 用户拍板)——四行两轴×两关:
|
||||
@@ -61,3 +83,8 @@ rows = [{
|
||||
; counter_items 恒空:反制道具配套义务随框架契约保留,兑现归 Alpha 反制批(2026-09-19 用户拍板
|
||||
; 反制道具改排 Alpha——切片期变异暂无反制手段,纯税状态已知悉接受)。
|
||||
; 全部行值 provisional 归 难度曲线与Boss 调参批(effect_value/布置参数均为加法核小整数轴)。
|
||||
;
|
||||
; 第三关内容批(2026-09-20):伤害型关间递进 1(荆棘)→ 2(岩浆)→ 3(落石)+ 信息型矿尘;
|
||||
; counter_items 恒空(反制归 Alpha 反制批);布量走既有公式
|
||||
; (5% + per_level_bonus × 2 = 9%——percent_of_cells 表头字段驱动,不加新配置)。
|
||||
; 行值全 provisional 归 难度曲线与Boss。
|
||||
@@ -138,6 +138,7 @@ func _build_ui() -> void:
|
||||
_seed_edit = start.seed_edit
|
||||
start.lvbtn.pressed.connect(_start_full_level.bind(1))
|
||||
start.lv2btn.pressed.connect(_start_full_level.bind(2))
|
||||
start.lv3btn.pressed.connect(_start_full_level.bind(3))
|
||||
start.tunebtn.pressed.connect(_show_tune_panel)
|
||||
start.dbgbtn.pressed.connect(_start_debug_levels)
|
||||
|
||||
|
||||
@@ -111,6 +111,8 @@ static func build_start_overlay(host: Control, db = null) -> Dictionary:
|
||||
box.add_child(lvbtn)
|
||||
var lv2btn := UiKit.button("▶ 第二关 · 幽暗地域(分支节点图试玩——岔路口选下一跳)")
|
||||
box.add_child(lv2btn)
|
||||
var lv3btn := UiKit.button("▶ 第三关 · 灰矮人矿城(测试直入口——基线红档属预期,配合调整板加成试玩)")
|
||||
box.add_child(lv3btn)
|
||||
var tunebtn := UiKit.button("测试用 · 角色数值调整板(模拟天赋树属性提升)")
|
||||
box.add_child(tunebtn)
|
||||
var dbgbtn := UiKit.button("调试 · 连续关卡两层(HP 关内延续)")
|
||||
@@ -124,7 +126,7 @@ static func build_start_overlay(host: Control, db = null) -> Dictionary:
|
||||
box.add_child(help)
|
||||
|
||||
return {"overlay": overlay, "box": box, "seed_edit": seed_edit,
|
||||
"lvbtn": lvbtn, "lv2btn": lv2btn, "tunebtn": tunebtn, "dbgbtn": dbgbtn}
|
||||
"lvbtn": lvbtn, "lv2btn": lv2btn, "lv3btn": lv3btn, "tunebtn": tunebtn, "dbgbtn": dbgbtn}
|
||||
|
||||
|
||||
# 调试两层模式的层间过渡覆盖层(历史入口专用)。返回 {overlay, label, next_btn}——接线归组合根
|
||||
|
||||
@@ -521,8 +521,8 @@ func _mk_stream(stream_name: String, scope: int) -> RandomNumberGenerator:
|
||||
|
||||
func _smoke_variation_framework() -> void:
|
||||
print("--- 地形变异 框架面(首批四类型 + 候选池门控 + 跨字段互锁)---")
|
||||
check(_db.variation.rows.size() == 4, "变异清单 4 行(荆棘丛/藤蔓缠绕/岩浆/烬覆——首批类型定稿批)")
|
||||
check(_db.variation.validate().is_empty(), "变异表校验零错误(4 行全过域与跨字段互锁)")
|
||||
check(_db.variation.rows.size() == 6, "变异清单 6 行(荆棘丛/藤蔓缠绕/岩浆/烬覆 + 落石/矿尘——首批类型定稿批 + 第三关内容批)")
|
||||
check(_db.variation.validate().is_empty(), "变异表校验零错误(6 行全过域与跨字段互锁)")
|
||||
var pool1_ids: Array = []
|
||||
for r in _db.variant_pool(1, "dungeon"):
|
||||
pool1_ids.append(String(r.variant_id))
|
||||
@@ -1809,7 +1809,7 @@ func _smoke_skill_pool() -> void:
|
||||
|
||||
# ① 数据面:技能表行集 + 普攻锁死 + 建议池行值 + 空池不可能(结构断言)
|
||||
func _smoke_skill_pool_data() -> void:
|
||||
check(_db.skill.rows.size() == 8, "技能表八行(普攻/突刺/蓄力/重击/硬化 + 撕咬/毒爆/蛛网束缚——分支节点图批 + 新效应词汇批)")
|
||||
check(_db.skill.rows.size() == 9, "技能表九行(普攻/突刺/蓄力/重击/硬化 + 撕咬/毒爆/蛛网束缚 + 大地脉动——分支节点图批 + 新效应词汇批 + 第三关内容批)")
|
||||
var basic: Dictionary = _db.skill.row_by_id("attack")
|
||||
check(not basic.is_empty() and String(basic.type) == "basic" and int(basic.cooldown_beats) == 0
|
||||
and (not basic.has("damage_mult") or is_equal_approx(float(basic.damage_mult), 1.0)),
|
||||
@@ -1861,6 +1861,13 @@ func _smoke_skill_pool_data() -> void:
|
||||
"2_6": {"attack": 6, "bite": 2, "charge": 1},
|
||||
"2_7": {"attack": 6, "bite": 2, "charge": 1},
|
||||
"2_8": {"attack": 6, "heavy": 2, "venom_burst": 2, "web_snare": 2},
|
||||
"3_0": {"attack": 6, "charge": 2, "heavy": 2},
|
||||
"3_1": {"attack": 6, "bite": 2, "charge": 1},
|
||||
"3_4": {"attack": 6, "bite": 2, "charge": 1},
|
||||
"3_5": {"attack": 5, "lunge": 2, "heavy": 2},
|
||||
"3_6": {"attack": 6, "bite": 2, "charge": 1},
|
||||
"3_7": {"attack": 6, "charge": 2, "heavy": 2},
|
||||
"3_8": {"attack": 6, "heavy": 2, "earth_pulse": 2},
|
||||
}
|
||||
var pools_ok := true
|
||||
for row in _db.enemy.rows:
|
||||
@@ -1873,7 +1880,7 @@ func _smoke_skill_pool_data() -> void:
|
||||
got[String(entry.skill_id)] = int(entry.weight)
|
||||
if got != expect_pools[rk]:
|
||||
pools_ok = false
|
||||
check(pools_ok, "十二行池模板 = 建议池行值(L1 地精 9/1 · 熊地精 6/2/2 · 酋长 6/2/2;L2 兄弟精 6/1/2 · 蜘蛛 6/2/1 · 重击手 5/2/2 · 蛛化卓尔精灵 6/2/2/2——全部 provisional)")
|
||||
check(pools_ok, "十九行池模板 = 建议池行值(L1 地精 9/1 · 熊地精 6/2/2 · 酋长 6/2/2;L2 兄弟精 6/1/2 · 蜘蛛 6/2/1 · 重击手 5/2/2 · 蛛化卓尔精灵 6/2/2/2;L3 灰矮人 6/2/2 · 钩爪恐魔 6/2/1 · 重装手 5/2/2 · 石君王 6/2/2〔earth_pulse〕——全部 provisional)")
|
||||
var basic_count_ok := true
|
||||
for row in _db.enemy.rows:
|
||||
var n := 0
|
||||
@@ -2339,6 +2346,63 @@ func _smoke_level_graph() -> void:
|
||||
var l2_boss: Dictionary = _db.enemy.resolve_rowset(2, 8)
|
||||
check(String(l2_boss.get("enemy_id", "")) == "drider" and String(l2_boss.get("armor_type", "")) == "ward",
|
||||
"蛛化卓尔精灵 Boss 行集 (2,8) = drider(魔法甲——护甲类型重配批 2026-09-18:关卡 2 唯一非轻甲)")
|
||||
# ---- 第三关内容批(2026-09-20)L3 灰矮人矿城断言段 ----
|
||||
# ⑧ L3 行集结构(复用 L2 九节点图模板——6 战 + Boss + 奖励 + 恢复,真实岔路 4 处)
|
||||
var l3 := {}
|
||||
for row in _db.level.rows:
|
||||
if int(row.level_index) == 3:
|
||||
l3 = row
|
||||
check(not l3.is_empty() and l3.nodes.size() == 9, "L3 节点数 = 9(入口 1 + 中间三层 2/3/2 + Boss——L2 同模板)")
|
||||
var tcount3 := {"battle": 0, "reward": 0, "rest": 0, "boss": 0}
|
||||
var branch3 := 0
|
||||
for node in l3.nodes:
|
||||
tcount3[String(node.get("type", ""))] = int(tcount3[String(node.get("type", ""))]) + 1
|
||||
if node.get("next", []).size() >= 2:
|
||||
branch3 += 1
|
||||
check(int(tcount3.battle) == 6 and int(tcount3.boss) == 1, "L3 普通战斗节点 = 6 + Boss 恒一(编号最大恒终点)")
|
||||
check(int(tcount3.reward) == 1 and int(tcount3.rest) == 1, "L3 恢复节点 1(rest_heal_pct 行字段)+ 奖励节点 1(直通空态)")
|
||||
check(branch3 == 4, "L3 真实岔路 = %d 处(0→[1,2] · 1→[3,4] · 2→[4,5] · 4→[6,7])" % branch3)
|
||||
# ⑨ 跨表行完整:L3 每战斗/Boss 节点 (3, 编号) 在 board_gen 与 enemy 精确行(⑦ 的 bg_keys/en_keys 复用)
|
||||
var cross_ok3 := true
|
||||
for node in l3.nodes:
|
||||
var t3 := String(node.get("type", ""))
|
||||
if t3 != "battle" and t3 != "boss":
|
||||
continue
|
||||
var key3 := "3_%d" % int(node.node_depth)
|
||||
if not bg_keys.has(key3) or not en_keys.has(key3):
|
||||
cross_ok3 = false
|
||||
check(cross_ok3, "跨表行完整:L3 全部战斗/Boss 节点在 board_gen + enemy 精确行(7 节点)")
|
||||
# ⑩ 定点:L3 首遇行集与 Boss 行集(克制面重轻错开——重甲灰矮人首次登台)
|
||||
var l3_lead: Dictionary = _db.enemy.resolve_rowset(3, 0)
|
||||
check(String(l3_lead.get("enemy_id", "")) == "duergar" and String(l3_lead.get("armor_type", "")) == "heavy",
|
||||
"灰矮人首遇行集 (3,0) = duergar(重甲首次登台——固定 1 只,首遇教学位不加骰)")
|
||||
var l3_king: Dictionary = _db.enemy.resolve_rowset(3, 8)
|
||||
check(String(l3_king.get("enemy_id", "")) == "duergar_king" and String(l3_king.get("armor_type", "")) == "heavy",
|
||||
"灰矮人石君王 Boss 行集 (3,8) = duergar_king(重甲收束「轻甲→魔法甲→重甲」教学梯度)")
|
||||
# ⑪ L3 成长代理档首遇绿档:模拟 GP 商店成长后的入关参数(atk_pct=200 / hp_pct=100)· 完美档多种子首遇战稳过
|
||||
# (零加成基线红档属预期——断言口径 = 成长代理档,非基线;跑法同 ⑥)
|
||||
var green3_ok := true
|
||||
var green3_min_hp := 99999
|
||||
for i in range(12):
|
||||
var g3_runner = load("res://core/level_runner.gd").new(_db, _fresh_rng(9100 + i))
|
||||
g3_runner.set_hero_override(200, 100)
|
||||
g3_runner.start_level(3, 9100 + i)
|
||||
var g3_st = {"result": "", "rounds": 0, "refreshes": 0, "mine_hits": 0, "hero_dmg": 0, "policy": "perfect"}
|
||||
var g3_first = g3_runner.current_battle()
|
||||
var g3_box := {}
|
||||
g3_first.battle_finished.connect(func(p):
|
||||
g3_box["result"] = String(p.get("result", ""))
|
||||
g3_box["hero_hp"] = int(p.get("hero_hp", 0)))
|
||||
var g3_guard := 6
|
||||
while g3_runner.current_battle() == g3_first and not g3_box.has("result") and g3_guard > 0:
|
||||
g3_guard -= 1
|
||||
autoplay._autoplay_battle(g3_runner, g3_first, g3_st, null)
|
||||
if String(g3_box.get("result", "")) != "victory" or int(g3_st.mine_hits) > 0:
|
||||
green3_ok = false
|
||||
elif int(g3_box.get("hero_hp", 0)) > 0:
|
||||
green3_min_hp = mini(green3_min_hp, int(g3_box.hero_hp))
|
||||
check(green3_ok, "L3 首遇位绿档:成长代理档口径(atk_pct=200/hp_pct=100)完美档 12 种子首遇战(节点 0 灰矮人)全胜且零踩雷")
|
||||
check(green3_min_hp > 0, "L3 首遇战胜后 HP 下探读数 %d(>0——绿档记录)" % green3_min_hp)
|
||||
|
||||
|
||||
# 冒烟隔离用全新 RngService(同 master 种子——回放确定性纪律)
|
||||
|
||||
Reference in new issue
Block a user