Files
gplan-2/design/gdd/systems/战斗循环/地图战斗资源.md
T
DKChan 909a9709b4 收尾(迭代53批后收尾)+CI追绿修复: 反哺点落文(用户四点裁决在案)——反哺点3 GDD退役名清退(术语表v1.27/地图战斗资源v1.6掷格件两路投影换机制名订阅加权、00-游戏概念删旧六行专名、奇物与03-内容规模退役记录句保留且后者删过时尾句)+反哺点4规范句落战斗结算v1.8(明细文案=数据面字段读表拼行,用户裁入表)+反哺点7 golden台账补lmap冻结日+反哺点8能力行名实回表_and_columns+反哺点9 test-conventions探针直读受控例外注记; 未决迁账面(反哺点4新立结算明细文案入表条目待文档设计/反哺点5闸机超时守卫缺陷与反哺点6 mac两Shot基线登记待执行); 体验验证清单52节两目检项+实现报告并入审计结论(通过·D1/D2/D3去向在案); 吸收即死退役五件(反哺点清单/实现报告/验收审计/两需求卡片,退役对账承接面核过); roadmap迭代53行已完成+当前位换代(迭代1–53); CI追红修复: forge_table_test效果类型闭集32→31(卡②摘spike断言随动)+level_map_info_fog_test布局缓存换代断言第三判据等强换键(位置差前提随画布同帧收敛失义——缓存失效重算本身正常,换键=重算字典键数恰为新图节点数,同一性判据不动)+capability_audit真实入口锚面补probe_funcs(探针共用面func定义,与代表用例D规则同口径不属放宽)+level_map_shot_probe.gd.uid边车补入库+待办清单QA条目补仓库内证据句(修流水线闸run86起红)。验证: 两修复套件窄测绿(forge 42 checks/fog 21 checks全绿)+流水线闸PASS+能力审计红项0+--docs全绿(合回前复跑凭据见本笔后续回执)
2026-11-06 01:12:55 +08:00

25 KiB
Raw Blame History

地图战斗资源

一句话:格面资源的产出、极性字典与清图奖励封装 状态:已定稿;现行为 v1.6

设计目的

地图战斗资源是战斗域的资源层:每张雷图上每个格子携带什么资源、资源怎么摇定、正向与负向各兑付成什么效果、清图时整张板发什么,由它统一裁决。核心抽象是格面资源——关联到格子上的资源对象:装板时摇定类型身份,安全格与危险格一视同仁、同一类型池;资源本身不分好坏,被当成奖励还是惩罚,由玩家对这一格做的动作在结算期决定——开安全格、标中雷是正向,开危险格、标错安全格是负向(极性矩阵的定义归本文,路由执行归战斗结算)。开局初始展开白送的那批格是封锁格——恒无资源,不再有任何加成(定义见排雷玩法)。

它守住三件事:每个非封锁格都有资源可兑(结构保证,不靠逐次掷运气);类型身份在装板期一次摇定、全程只读(在"数字恒真"的推理之外,类型是第二层规划素材);每个兑付都能在结算明细里指回挖开的哪一格。缺了这一层,挖格没有收益语言,"扫雷攒因、战斗结果"的兑现就断在最后一环。

类型层身份:本层是规划素材层——未开格类型经微光对玩家可见(只读类型、不读危险格与安全格;呈现归HUD框架「未开格类型微光」节),「读敌拍板、抢类型」为正式设计意图。类型先读不拆推理:它回答「这格兑什么」,不回答「这格是不是雷」。

系统范围

边界这样划:本系统管"资源是什么、身份怎么摇定、正向负向各兑付什么、清图对象怎么配";发奖与兑付的编排归战斗结算,增益本体归增益状态,画成什么样归HUD 框架。本系统零界面、除摇号外零随机:同一串操作驱动两个实例,结果逐位相同。

负责:

负责 说明
格面资源类型封闭枚举 九型(attack / defense / heal / blast / weaken / pierce / magic / action / gp);表里出现清单外的类型,数据加载直接拒绝
装板期身份预分配 每张图装上时一次摇定全部非封锁格的资源类型身份与清图奖励对象身份;只读、无重摇
极性矩阵与九型字典 「动作 × 格型 → 正负号」的定义,以及每型正向 / 负向各兑付成什么效果
清图奖励对象 整图作用域的独立奖励封装,可配置可替换,按图类型差异化
未来功能道具的预留结构位 长周期、更强力的功能性道具 = 秘宝(局外同调件——渠道已随秘宝域落定);本系统只留结构位不预写

不负责:

不负责 归谁
结算段序与逐行兑付编排、极性路由执行 战斗结算
增益的叠层、衰减与时限 增益状态
敌人数据、目标顺位与血量查询 敌人系统
棋盘侧的资源资格事实 排雷玩法(经战斗结算转化,两系统无直接接口)
节点奖励与关卡大奖励 关卡节点地图与冒险结构
数值投值与曲线 难度曲线与Boss
表结构定义与加载机制 数据配置(本系统只回填内容)
一切界面与呈现 HUD 框架

在核心循环中的位置

装板 ──(一次摇号定全图资源身份 + 清图对象)──▶ 挖掘期(身份恒定可读,只揭晓不兑付)──▶ 轮末授予段(极性路由逐格兑付;伤害形态单据暂存)──▶ 战斗段(段末地图伤害账统一落地——案C 2026-10-06 用户裁)

本系统横跨挖掘期与轮末结算的头部:装板时全图资源身份一次摇定;挖掘期只揭晓身份,轮末授予段(结算里逐格兑付的段落)按极性矩阵把当轮的因兑现——正向当场生效,负向也当场生效(负向恒即时,无库存语义)。段序编排归战斗结算。

核心规则

格面资源:每个非封锁格都带一个,摇号纪律不变

每张雷图装上时——玩家挖第一下之前——本系统对这张图做且只做一次摇号:给图上全部非封锁格逐一摇出资源类型,同一次摇出清图奖励对象的身份(见清图一节),写进这张图的资源映射表。安全格与危险格一视同仁:同一类型池、同一权重分布,不存在"只给谁分配"的分支。封锁格(初始展开白送格)恒无资源——摇号清单里根本没有它们。

随机只发生在这一次摇号里:之后挖到哪格只是揭晓早已定好的身份,兑付不再掷任何骰子。部分行的威力是区间值,具体数值也在这次摇号里一并摇定,之后恒定不变。未开格的危险格与安全格在界面上不显示——这是不做清单的裁定;类型身份则经微光只读可见(2026-10-07 类型层身份裁决,见设计目的「类型层身份」段与 05 清单收窄)。结构上身份已定、随时可查,预读类道具桥接的边界登记于待办。

摇号纪律 含义
恰一次 新图装好后、开挖前摇一次;已摇过的图再调摇号直接拒绝
专属随机流 摇号消费一条名为 reward_roll 的专属随机数流;同种子同操作序列必然摇出同一张身份表,可逐位回放
只读无重摇 映射就绪后只读;"重摇一下"的接口不存在,要加就是修订本文档
危险格与安全格同池 安全格与危险格从同一类型池摇定(类型频次 = 该型正向行的权重);分布按格型差异化若未来需要,走本文修订
装板 ──▶ 一次摇号(全部非封锁格的类型批 + 清图对象批尾)──▶ 只读映射(同图跨轮不变)
换图或战斗结束 ──▶ 映射随之失效:未兑付的身份一并丢弃,不发奖、不进结算

举证:本节为流程与状态规则,无计算。

候选集合:安全格与危险格的资源池

格面资源在每非封锁格上摇定身份时不区分格型——候选集合 = 格面资源池中全部正极性、权重大于零的类型行,不分格型一律参与摇号;负向兑付归战斗结算按极性路由。安全格与危险格候选集相同,权重分布相同,类型频次合计 = reward.tres cell 池正向行 weight 之和(现行值读表):

格型 候选集合(cell 池正向行,weight>0) 类型频次合计
安全格 attack_up(attack)· ac_up(defense)· spark_aoe(blast)· heal_minor(heal)· weaken(weaken)· pierce_strike(pierce)· magic_bolt(magic)· ap_up(action)· gp_gain(gp) 见 data/tables/reward.tres
危险格 同上(危险格与安全格同池——九行正向行全集,权重分布相同) 见 data/tables/reward.tres

清图槽(clear_default 池,clear_blast)独立于格面资源——作用域为整张板,不挂任何一格。

候选集合具体行值(power / power_min / power_max / stacks / effect_id)随行更新——以 data/tables/reward.tres 为现行值源;GDD 表格只锁行集与权重分布语义。负向 9 行(enrage / off_guard / heal_backlash / enemy_alert / ap_drain / sapped / pierce_snare / magic_recoil / gp_loss)weight=0 不参与摇号,按(类型, 极性)查表取用,不在候选集合内。

举证:本节为候选集合枚举,无计算。

四档概率结构与保底

摇号池按概率分四档组织(档的归属是结构、档内权重数值归调参批;现行权重为基准锚):

档 成员 概率位 保底上限 型级保底登记
T1 攻击类 attack / blast / pierce / magic 最高 0 无
T2 增益类·GP 小袋 defense / weaken / 小 GP 袋(gp) 中 0 无
T3 回复(可保底档) heal(将来可扩) 低 1 heal = 每板 ≥1
T4 惊喜类(永不保底档) action / 大宝箱(大额 GP,枚举新增归实装批)/ 未来稀有型 出现概率极低 0 永不登记
  • 档由两个参数定义:概率位 + 保底上限。「永不保底」不单立规则——T4 的保底上限 = 0 即其统一表达;T1/T2 上限同为 0。
  • 保底数量挂在型上、不挂在档上:每个型各自登记「每板至少出几个」。档内登记保底的型数 ≤ 档上限 → 全部兑现;> 上限 → 每板从登记型中随机选定「上限」个兑现,其余型该板按普通概率出现、不保底。
  • 补签纪律:执行序 = 装板摇号(含订阅加权投影)→ 按上限定本期保底型集合 → 校验补签 → 板上全程只读。补签只改类型身份:危险格与安全格不动(补签格可为雷可为安全格,危险格与安全格同池不破)、不消费权重(补签不是一次取号)、清图判定不动、不泄露元信息(补签格与摇号格不可区分)。粒度 = 板,换板重新校验。
  • GP 数值锚:以战斗结束 GP 奖励为锚——小 GP 袋 ≈ 其 1/10、大宝箱 ≈ 其 1 倍(具体数值归调参批)。
  • 大宝箱为枚举新增(九型→十型走本文修订流程,不随手加行);微光归通用增益组(五色相不变,组内不细分正好容下)。
  • 对外稀有度映射(现行事实源=核心循环「档位与获取规则」节):T1=普通 / T2=优秀 / T3=稀有 / T4=传说;任何概率提升禁止改变本档保底承诺(保底=承诺非概率)。

极性矩阵:动作与格型决定符号

资源对象只带类型,不带正负。正负号在结算期由「玩家动作 × 格型」决定——这张矩阵是全部奖励与惩罚的统一路由:

玩家动作 安全格 危险格
开格 +类型:该格资源的正向兑付(奖励) −类型:该格资源的负向兑付(惩罚)
封印且留到轮末判定 −类型:标错,该格资源的负向兑付(惩罚) +类型:标中,该格资源的正向兑付(奖励)
封印格直接挖开 零兑付(四情况④:零惩罚零奖励——标空不判、正向作废) −类型照常(四情况②:只受挖雷一层惩罚——标中不发)

矩阵的定义归本文;把矩阵跑起来的路由(结算队列、判定基线、逐行兑付)归战斗结算的授予段。blast 型负向 = 警觉。矩阵只描述现行规则;被本矩阵取代的旧体系与历次结构变更(撤旗退役、伏击换装等)只进 git 提交史,不在正文复述。

举证:本节为枚举与路由定义,无计算。

九型字典:每型一行正向一行负向

兑付形态差异化方向(方向已裁、内容与落码归后续批次):兑付形态同质化(pierce/magic 同构等)确认为改进对象——各伤害型兑付形态将拉开、各有所司(如单点/面伤/弹射或减益向),九型枚举不动;具体形态设计归用户。

格面资源的一切兑付从九个类型里出,每个类型恰好一行正向、一行负向——正向是玩家操作正确时拿到的东西,负向是操作失误或踩雷时吃到的东西:

类型 正向(奖励) 负向(惩罚)
attack 增伤 attack_up(主角输出池)——幅度/上限/权重见 reward.tres enrage(敌方输出池)——幅度/上限见 status_effects.tres enrage 行
defense 护甲 ac_up 盾牌加护(AC 掷点阈值轴,不入池)——幅度/上限/权重见 reward.tres off_guard 失衡(AC 掷点阈值轴负向,不入池)——幅度/上限见 status_effects.tres off_guard 行
heal 回血 heal_minor(满血零兑付照旧)——威力/权重见 reward.tres heal_backlash 直伤:战斗结算直接扣血,不经增益状态——威力见 reward.tres
blast 群伤 spark_aoe 全体存活敌各吃一笔——威力/权重见 reward.tres enemy_alert 警觉:敌方全体护甲等级 +1/层(status_effects.tres alert 行)——见 reward.tres
weaken 削弱 weaken(敌方输出池;同名重复授予只加时长)——幅度见 status_effects.tres weaken 行 sapped(主角输出池)——幅度见 status_effects.tres sapped 行
action 行动点 ap_up:下轮行动点 +1——见 reward.tres ap_drain 迟滞:下轮行动点 −1——见 reward.tres
gp 财货 gp_gain GP 袋:战斗内 GP 缓冲 +power,战斗完成随 GP 掉落统一入钱包账本(兑付编排归战斗结算、账本归冒险结构)——威力/权重见 reward.tres gp_loss 破财:战斗内 GP 缓冲 −power,weight=0 纯字典不参与摇号——见 reward.tres
pierce 穿刺 pierce_strike 穿刺弹:单目标克制直伤(attack_type=pierce 查克制矩阵,必中全额不掷点;目标 = 固定顺位最前存活敌)——威力/权重见 reward.tres pierce_snare 穿刺陷阱:主角直伤,不经增益状态——威力见 reward.tres
magic 魔法 magic_bolt 魔法矢:单目标克制直伤(attack_type=magic,同上)——威力/权重见 reward.tres magic_recoil 魔法反噬:主角直伤,不经增益状态——威力见 reward.tres

设计意图:读敌拍板的路线规划——敌方要放大招时抢盾牌加护、怪重叠时抢削弱,惩罚侧则镜像同一批类型。类型清单是封闭的:加新类型等于修订本文档,不是调参数(格面 GP 经用户拍板入池,定位"低概率惊喜获取"、量与战斗掉落相当,兑付进战斗内缓冲而非当场生效)。

凡"该兑付但没生效"——增益挂满层、满血捡到 heal 正向、场上无敌可打——一律在结算明细里明写一行"奖励未生效",不给折算补偿,也不静默消失。把兑付改成跳过轮末结算直接生效,同样在禁止之列。

举证:本节为类型枚举与兑付语义,无计算。

负向恒即时:惩罚没有库存语义

负向兑付的账户动作全部在授予段受理,不入库、不出窗口——惩罚不设库存、不留存量;其中伤害形态(群伤/直伤类负向行)的扣血落地殿后到战斗段末(2026-10-06 用户裁,单据暂存,见战斗结算);主角在敌方还手中倒下则地图伤害账整体不兑(逐单留「未生效」行)。正向里的 percent 类(增益行)进增益状态的状态池;heal 正向当场结算;gp 正负两向(GP 袋 / 破财)当场执行——记入战斗内 GP 缓冲,战斗完成随 GP 掉落与钱包结算(账本归冒险结构),同样无库存语义。叠层饱和由战斗结算既有池 clamp 承载;blast 负向(警觉)与 action 负向(迟滞)直授无上限。

举证:本节为兑付语义,无计算。

清图奖励对象:整图封装,可配置可替换

清图奖励不属于任何一格的格面资源——它是作用域为整张板的独立奖励对象:把一张图的雷全部清完(全部安全格开完)时结算发的那一份。装板摇号时与格子资源同批判尾摇定身份;清图批兑付恰好一次;完美封印(零误标且至少一次封印标中)追加第二份同身份兑付。清图奖励只在清图批兑付:弃图刷新不触发清图事件,换来的新图不发清图奖励;刷新专长的固定 GP 收益走战斗内缓冲入账,不属清图奖励封装。

它是可配置可替换的封装:数据面上是清图池里的一行(现行默认槽 clear_default),换行即换内容,机制零改动。按图类型差异化已留结构位——clear_<图类型> 命名空间预留,不同地图类型可以配不同的清图奖励;词表现行 = {dungeon, underdark, deep_underdark}(玩家侧「地图类型」),差异化内容启用随内容批。

清图奖励规则 含义
恒非空 清图池加载时校验至少一行有实际价值,违例加载致命
批尾摇定 身份在装板摇号批的尾部摇出,与格子资源同流同批
可配置可替换 内容 = 池行值;允许即时类(当场兑付,不入库)
图类型差异化是预留插槽 现行只有默认槽;结构位已留,启用走棋盘生成词表落定

举证:本节为封装与流程规则,无计算。

依赖与输出

本系统被两侧夹住:事实与数值从上游来,调用与呈现往下游去。下表就是删除任何一方时的影响面清单。

方向 系统 接口要点
上游 数据配置 奖励表的 schema 承载与加载校验通道;本系统是回填责任方
上游 排雷玩法 间接:挖格是否携带格面资源的事实经战斗结算转化而来,两系统无直接接口
上游 棋盘生成 图类型标签作清图差异化插槽的上下文(静态恒定)
上游 增益状态 增益行的效果引用指向其状态表(悬空加载致命);施加动作经战斗结算调用
下游 战斗结算 唯一调用方:摇号、身份查询、受理、清图对象、当量供给投影、映射退役全由其编排
下游 敌人系统 群伤与直伤的目标取其存活集与固定顺位
下游 行动经济 其经济契约的对账以本系统的资源行值为原材料;换算与闭合验收归战斗结算
下游 冒险结构 关卡结构是清图对象生命周期的容器
下游 难度曲线与Boss 权重、档位、威力与池内容的调参所有权(全部 provisional)
下游 HUD 框架 呈现义务归其:已开格资源身份常读、类型图标预读的呈现深度、结算明细行、清图奖励行强调
下游 教学引导 "读敌拍板、抢类型"教学口径的来源
下游 秘宝 相邻:秘宝件的装配与使用归其管;预读类道具读取本系统的身份查询面(现行零投放,接口面保留)

负空间:本系统不订阅事件、不画界面、除摇号外不用任何随机数;何时调接口、按什么顺序调,全归战斗结算。库存、道具使用窗口、可选类供给已整体下线,不再属于本系统。

P0 最小闭环

  1. 战斗结算装上新图后、玩家开挖前调用一次摇号:全部非封锁格的资源类型与清图对象身份摇定,映射进入只读。
  2. 玩家挖掘:挖开的格子当场揭晓类型身份;已开格的身份随时可读。
  3. 轮末授予段按极性矩阵逐格兑付:正向 percent 挂状态、heal 正向当场结算,非伤害负向当场兑付;伤害形态正负单据暂存,战斗段末统一落地。
  4. 清图轮兑付清图奖励对象,恒非空;完美封印追加第二份。
  5. 战斗结束:整图映射退役。换图按新板重摇。

P1 / P2 后置

后置不等于删除:以下条目保留在案,复活任何一条都走本文修订流程。

优先级 内容 后置原因
P1 功能道具渠道(已由秘宝体系承接——局外同调件:营地解锁 + 同调位装配) 数值型伤害/治疗道具已删除(2026-09-15 用户定);本系统只留结构位不变
P1 清图池按图类型差异化 默认槽之外的结构位已留;词表现行三值({dungeon, underdark, deep_underdark}),差异化行随内容批配置
P1 未开格资源类型的呈现深度 基础档已定——微光只读类型不读危险格与安全格(2026-10-07 案甲,实施归呈现批、待办清单在案);更深档与推理的界线另议
P1 增攻(attack)型行值与权重终调 内容决策,归难度曲线与Boss
P2 音频挂钩(拾取音 / 负向兑付音 / 清图奖励音) 归音频,Alpha
P2 内容名录扩展(新资源行) 机制与内容分离;现行行集收窄,扩展随内容批

调参表

表的承载归数据配置,内容由本系统回填,数值全部 provisional 归难度曲线与Boss;现行行值以 data/tables/reward.tres 为准。

默认内容行(奖励表;威力的区间行在摇号时一次摇定,区间中点即原定值——期望不漂移):

行 类型 极性 取值域 / 字段语义 现行值 所在池
attack_up attack 正向 weight [0,999] · power 不消费(percent 行 effect_id → 状态效果表 attack_up 引用) 见 data/tables/reward.tres 格面池
ac_up defense 正向 weight [0,999] · power 不消费(percent 行 effect_id → 状态效果表 ac_up 引用) 同上 同上
spark_aoe blast 正向 power [0,999]·power_min/power_max 可选区间·weight [0,999](flat 行 effect_id 恒空) 同上 同上
heal_minor heal 正向 power [0,999]·power_min/power_max 可选区间·weight [0,999](flat 行 effect_id 恒空) 同上 同上
weaken weaken 正向 weight [0,999] · power 不消费(percent 行 effect_id → 状态效果表 weaken 引用) 同上 同上
enrage attack 负向 weight=0 不参与摇号·power 不消费(percent 行 effect_id → 状态效果表 enrage 引用) 同上 同上
off_guard defense 负向 weight=0 不参与摇号·power 不消费(percent 行 effect_id → 状态效果表 off_guard 引用) 同上 同上
heal_backlash heal 负向 weight=0 不参与摇号·power [0,999](flat 行 effect_id 恒空) 同上 同上
enemy_alert blast 负向 weight=0 不参与摇号·effect_id=alert(敌方护甲等级 +1——effect 引用行,unit=ac) 同上 同上
ap_up action 正向 weight [0,999] 参与摇号 同上 同上
ap_drain action 负向 weight=0 不参与摇号 同上 同上
gp_gain gp 正向 weight [0,999] 参与摇号 · power [0,999]·power_min/power_max 可选区间(flat 行 effect_id 恒空) 同上 同上
gp_loss gp 负向 weight=0 不参与摇号 · power [0,999](flat 行 effect_id 恒空) 同上 同上
sapped weaken 负向 weight=0 不参与摇号·power 不消费(percent 行 effect_id → 状态效果表 sapped 引用) 同上 同上
clear_blast blast 正向 clear_default 池·power [0,999]·power_min/power_max 可选区间·weight [0,999] 同上 清图槽

摇号只消费正向格面池的权重(类型频次由此涌现——具体权重读 reward.tres);负向行是纯兑付字典,按(类型,极性)查表取用,不消费权重。权重分布按四档概率结构组织(档成员与保底规则见「四档概率结构与保底」节;现行权重为基准锚,数值调整归调参批)。clear_blast 对全体存活敌各吃一笔当场兑付的 flat 伤害。奖励配置表已下线——注入概率、按板保底等参数全部失义(「按板保底」指已删除的可选类道具注入保底,与四档结构的型级保底无关)。

结构冻结(改动走本文修订流程,不走调参):九型封闭枚举、危险格与安全格同池、极性矩阵、装板期预分配且无重摇、负向恒即时无库存、清图恒非空、除摇号外零随机(四档保底补签属装板期校验环节,消费摇号环节随机流,非重摇——补签后身份全程只读)。

验收标准

  • 每格必有货:装板摇号后,每个非封锁格恰有一个资源类型、清图槽恰有一个对象身份;封锁格恒无资源;同图跨轮查询结果逐字相同。
  • 危险格与安全格同池:安全格与危险格从同一类型池、同一权重分布摇定;任何"按格型差异化分配"的分支不存在。
  • 恰一次与确定性:摇号对每张新图恰发生一次,重复调用被拒绝且映射不变;同一条随机流轨迹驱动两套实例,映射与兑付回执逐位相同。
  • 四档保底:装板完成后,保底上限 >0 的档其登记型按登记数补齐(现行 = heal 每板 ≥1);补签格与摇号格在数据与呈现上不可区分;保底上限 0 的档格数可为 0。
  • 类型封闭与字典完整:表里出现九型之外的类型、或任一型缺正向/负向行,加载拒绝。
  • 未生效可见:满层增益、满血正向治疗、无存活敌的群伤,各自在结算明细记"奖励未生效"行,零折算、零补偿。
  • 加载护栏:池空、清图池无正当量、增益引用悬空——任一命中即加载时返回错误并中止;默认内容加载通过。
  • 表实一致:数据表字段与奖励表字段定义逐字段一致。

待办

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