Files
gplan-2/design/gdd/systems/排雷循环/行动经济.md
T

23 KiB
Raw Blame History

行动经济

一句话:每轮行动点怎么花、停手与刷新的代价 状态:已定稿;现行为 v1.5

设计目的

每场战斗里,玩家真正在花的钱只有一种:行动点(AP)。行动经济管的就是行动点这一笔系统资源——每轮发给你固定的行动点,挖格、封印按统一价目计费(价目见 game/data/tables/action_economy.tres),花完这一轮就结束了。没有这一笔,"挖这一格值不值"就没有统一的价格语言。

它还要给"我不想赌了"一个体面的出口:主动停手能把剩余行动点 1:1 存进储备池,攒够了可以当场换掉整张雷图。推理本身不收钱——连锁展开免费——花钱的只是"兑现"这个动作。

系统范围

边界这样划:行动经济只管"多少钱、怎么扣、什么时候算一轮结束"。棋盘上这个动作合不合法、执行后格子变成什么样,归排雷玩法;扣完钱之后收益怎么兑现成战斗效果,归战斗结算。行动经济自身是纯系统资源管理:零随机、零画面、零教学内容。

负责:

负责 说明
行动点(当前池) 全项目唯一扣减入口:余量检查、扣费、结束判定在同一个原子事务里完成,不允许双重折算
统一价目 挖 / 封印同一价目(表值见 action_economy.tres;移除动作已退役);移动与连锁展开免费(冻结项,不参与调参)
轮次结束仲裁 清图、停手、耗尽三种结束方式同时成立时,按固定优先级只裁出一个赢家
储备行动点池 停手转入、刷新支出、战斗结束清零(详见核心规则)
对下游的经济契约 五条契约约束收益兑现侧,由战斗结算负责对账验收

不负责:

不负责 归谁
棋盘规则与动作执行 排雷玩法
轮次编排与结算兑现 战斗结算
奖励内容与档位 地图战斗资源
数值表本体与读取机制 数据配置(本系统只回填自己的表)
界面呈现 HUD 框架
教学口径的呈现 教学引导

在核心循环中的位置

扫雷阶段:玩家每个动作 ──(扣费)──▶ 行动经济 ──(轮末输出:怎么结束的 + 换不换图)──▶ 战斗结算 ──▶ 冒险推进

行动经济站在"扫雷"这一段。它的上游是玩家在棋盘上的每个动作,下游是轮末结算:它不决定你能做什么,只决定每件事花多少、这一轮什么时候算完。

核心规则

每轮预算与价目

行动点分两笔(框架见核心循环「生命周期轴」节):AP 上限是冒险级角色属性——冒险开局定基值(表值 ap_per_round),冒险中可由秘宝或属性提升抬高(兑现细则见「跨冒险行动点加成轴」节);当前 AP 是回合级的池——每轮开始灌满到上限、回合内花用、归零触发轮次结束。行动点当前池只管后者;上限的基值与抬高不归它裁决。

每轮开始时,行动点被硬重置为表值(见 action_economy.tres)——上一轮没用完的不累积、不结转。储备行动点(RAP,停手攒下来的池子)正好相反:开轮时原样保留,一分不动。

花钱的动作只有三种,价格一样:

动作 花费 说明
挖开格 标准价(见 action_economy.tres) 只能挖小人 8 向相邻的格子;若触发连锁展开(flood fill 式整片翻开),连锁翻开的部分免费,且计入清图进度
封印 标准价(见 action_economy.tres) 同样限相邻格。封印印记只是棋盘上的标记,不是背包里的实物,想用多少有多少——它的稀缺性完全由"要花一次标准价行动点"承载。封印印记是一次性承诺:落子就没有移除动作,纠错 = 直接挖开该格

不花钱的有两件事:移动小人(点已翻开的格子走过去,仅限已探明区域)和连锁展开。这两项免费是冻结设计,服务"边缘探索不心疼"的氛围,不是经济杠杆。

本作明确不做经典扫雷的 chord(双击数字格一键翻开周围)。每一格的兑现都必须花行动点,一键开一片会让行动点预算失去意义。

轮次结束:三种出口与仲裁

一轮在以下任一时刻结束:行动点扣到 0 的瞬间、玩家主动停手、全部安全格开完(含连锁翻开的格)。扣到 0 的那一刻轮次立即结束——不存在"0 点还能再操作一下"的窗口。

如果几种结束方式在同一瞬间同时成立(典型例子:最后 1 点行动点挖开了最后一个安全格),按固定优先级只裁一个赢家,与事件到达顺序无关:

结束方式 优先级 胜出后发生什么
清图 最高 剩余行动点清零(不进储备池),发清图奖励,下一轮换一张新图
停手 居中 剩余行动点 1:1 存入储备池,下一轮继续同一张图
耗尽 最低 剩余行动点恒为 0(实现层断言兜底),下一轮继续同一张图

清图优先于耗尽是有意的:否则"耗尽优先"的实现会把清图的高光时刻结算成最差结局,训练玩家永远留着最后一格不敢挖。

轮次结束时,行动点只向下游输出一条两字段的消息——这一轮怎么结束的、下一轮要不要换图的建议。权威的换图指令由战斗结算之后回发;建议仅是编排参考。消息里不夹带任何折算数值,因为收益兑现全部是具体的战斗效果,不存在抽象点数。

停手与储备行动点

停手是玩家在挖掘期任意时刻的主动决定:立即结束本轮,剩余行动点按 1:1 原值存入储备池——基线没有乘数、没有加成。图没开完,下一轮接着在同一张图上挖。停手不是收入来源,而是纯粹的风险管理工具:它买到的是"退出权",不是战斗收益。停手意图经排雷玩法的批次提交入口进入账本(保证单一结算序),由账本仲裁后自行外发轮次结束消息。转存率参数化:转存率实现为停手收轮时的转存率参数——缺省 100=1:1;秘宝「储备罐」注入 125=1.25:1(整数除法向下取整——每 4 点剩余 AP 多转 1 点 RAP,零头顺延向下)。转存率归秘宝操作包络参数,本账本的仲裁与发射结构不变。

储备池的生命周期以一场战斗为界:战斗内跨轮次、跨雷图一直累积;战斗结束立刻清零。清零必须在界面上可见,防止玩家觉得"攒的钱凭空没了"。MVP 阶段储备池没有上限。

挖掘期刷新:花储备换新图

储备池唯一的支出是刷新雷图。玩家在挖掘期经界面入口发起,储备值不低于刷新门槛(rap_refresh_cost,见 action_economy.tres)时扣费,当场换一张新图继续挖。注意刷新不终结这一轮:行动点不重置、本轮剩余行动点保留;但换来的新图不发清图奖励(它又不是清图),旧图上的封印印记随旧图一起失效(封印花的钱不退)。

每轮最多刷新次数=表值 refresh_cap_per_round(现行 2)(轮内计数,开轮重置),没有冷却,每次独立检查门槛并扣费。已用次数与剩余次数为只读观测量(切片实现在战斗编排器侧计数,HUD 刷新按钮「剩 N 次」文案即其消费方)——客户端可现读,不经可变状态外泄。禁止"攒满就自动刷"——刷新永远是玩家的决定。

停手与刷新合起来构成这本账的基线节拍:满行动点一轮停手,正好攒够一次刷新。行动点修正队列会扰动该节拍的实际兑现(+1 轮可多挖一格),不变式本身不动;对账归曲线调参批。

换图系专长对储备与刷新的改写(已实装,落表 feats.tres)

换图系两件基座分别改写 RAP 的来源与刷新价格。它们只给持有专长的玩家增加规则,不改变无专长时的基线账本。

专长 规则 不变边界
矿脉储能 每次付费挖格被受理后,额外获得表值 RAP;安全格与危险格同口径 连锁展开只随首格的一次付费动作结算,不逐格追加;封印、移动、刷新不产 RAP
省力周转 弃图刷新的 RAP 成本为基线的 50% 只改价格;AP、轮次、每轮刷新上限与换图流程不变

两件基座可以同时持有并叠加:付费挖格照常产 RAP,刷新同时按半价扣费。两条规则作用在不同账户入口,不互相覆盖,也不设互斥。折后价向下取整,受理门槛判断与实际扣费使用同一个折后值,只改价格不改拒绝判据——刷新仍须储备达到折后门槛才受理;储备不足或超过每轮次数上限时拒绝,状态不变。RAP 仍在战斗结束清零,刷新本身不返 RAP。

无矿脉储能时,挖格不新增 RAP;无省力周转时,刷新成本仍读全局基值。后续输出、生存与资源专长如何使用成功刷新这个事实,归战斗结算。

下轮行动点修正

action 型格面资源:正向行 ap_up = 下轮行动点 +1,负向行 ap_drain(迟滞)= 下轮行动点 −1。修正不在授予当轮生效:结算期经行动经济的行动点修正队列登记(同轮多笔按净值累加),下一轮开始时(开轮通知)一次性兑现——兑现值 = 基线 ap_per_round + 排队净值,下限 0,兑现后队列清零;排队净值不跨轮保留。明细在结算流水记效果行(effect_id=ap_delta)。

跨轮携带量口径随之改写:RAP 仍是唯一显式携带的系统资源(停手转存、玩家可见可花),行动点修正队列是第二携带量——一次性、自动清零、不可主动消费。

跨冒险行动点加成轴

统一冒险加算区(归冒险结构)的第四轴「行动点」:三选一 AP 件兑付后,加算区行动点轴累加(值读冒险表 bonus_ap_flat,全冒险获取至多 bonus_cap_ap 次)。加成经战斗开始入参的覆盖值通道传入战斗域(与生命/攻防上参同族),行动点侧兑现口径:

开轮(第 1 轮)行动点 = max(0, ap_per_round + 加成轴值 + 当轮排队净值)
后续轮次行动点 = max(0, ap_per_round + 当轮排队净值)   (加成轴不跨轮重复兑现)

加成轴是战斗开始的一次性基线抬升,不是逐轮增税;修正队列(上节)与加成轴在开轮时相加兑现,互不挤占。「每战 +1 AP」的强度评估与关卡完成率带重扫义务归难度曲线与Boss调参批。

封印标中的兑付约束

封印标中了危险格,收益在当轮结算兑付(标中 = 危险格被控制、里面怪物被削弱)。兑付受五条硬约束,核心思想是"认雷不认封印":

约束 含义
一次性 每颗雷在一场战斗内至多兑付一次,资格随首次兑付消费
当轮结算 封印印记只是当轮兑付的载体,不囤积到以后
资格认危险格实例 挖开重封同一格(封印印记随挖掘消失),不恢复已消费的资格——堵死"重复计费重封刷收益"的农场(注:移除动作已退役)
不逐轮重复 同一颗雷的收益不会每轮反复发
换图重置 新图的雷是新实例,资格自然重来

收益直兑与五条经济契约

扫雷侧的全部收益都以战斗效果直接兑现:挖开安全格给主角加增益、封印标中给怪物加减益、惊动危险格给敌方上增益、清图发奖励。不存在中间货币、不存在折算乘数——折算公式根本不存在。

行动点对下游立了五条经济契约,保证"推理的收益大于盲赌的代价"这条底线在数值上闭合:

  1. 单一当量:所有收益来源用同一张效果对照表归一换算,不允许分源改率。
  2. 封印标中锚:封印标中的减益档位必须严格高于最低档安全格增益——否则没人愿意封印。
  3. 挖掘风险不等式(详细推导见下方推导节):聚合健康式 + 封印溢价条件二 + β 比值带判读,三层口径并行立(2026-10-04 用户裁 P2)。
  4. 清图奖励大于零,并预留按图类型差异化分支的结构位。
  5. 清图支配性:推到底清图的期望收益,不低于"确定格挖完就弃图刷新"的期望收益——否则清图玩法会被刷新策略淘汰。

结论:五条契约由战斗结算作为唯一对账责任方闭合验收;概率侧由棋盘生成的可推理率参数锚定;条款3 数值层由 β 比值带 [1.2, 2.5] 判读看护(清图支配性审计为常设重跑项),封印边际结构层由条件二封印溢价接替(机制载体 settlement.flag_hit_premium)。

推导:

条款 3(三层口径并行立,2026-10-04 用户裁 P2;
        现行判式口径=本文条款③)

  条款 2(封印标中锚,既有不动):封印标中的减益档位必须严格高于最低档安全格增益。

  条款 3(聚合健康式)——盲挖净期望非负:
      (1−ρ̂)·E_dig(u) − ρ̂·V_mine(u) ≥ 0     对全部参考板形 × u ∈ {1,2,3}
    下限 0 = 盲挖不为负;上限不设(2026-10-04 grill Q3 裁)——
    收益端通胀防护由 β 比值带的 β_hi 独家承载(同一约束单一承载)。

  封印边际引理(同池结构定理):危险格与安全格同池 + 极性矩阵同字典 ⇒ 封印标中兑付分布 ≡ 安全格
    兑付分布,EV_flag − EV_blind = (q + ρ̂ − 1)·(E_dig + V_mine),符号只由 q + ρ̂ − 1
    决定 ⇒ 「封印优于盲挖 ⇔ q > 1−ρ̂」,与全部当量表值无关(风险端定价动不了这一支);
    封印标中对「挖已知安全格」的边际恒 ≤ 0(= −(1−q)(E_dig+V_mine))——L2 结构破线层,
    由条件二接替。

  条件二(封印溢价式)——L2 结构破线的正当化条款:
      E[标中兑付当量] ≥ (1+δ)·E_dig(u)
    δ = 封印溢价系数,现行 0.25(provisional,2026-10-04 用户裁 P3);实施形态 =
    (a) 兑付溢价——标中兑付按同型正向 ×(1+δ)(改战斗结算兑付公式一处,机制载体
    settlement.tres flag_hit_premium = 125,percent 域);(b) 专属池重摇不启
    (危险格与安全格同池结构冻结不动,留给异池后备案一并裁)。

  β 比值带(数值层看护,2026-10-04 用户裁 P4):
      β(u) = V_mine(u) ÷ E_dig(u) ∈ [1.2, 2.5]
    β_lo = 风险端定价下限(封印的避险价值为真);β_hi < (1−ρ̂)÷ρ̂ 蕴含条款3 恒成立。
    现行读数 β = 1.71 / 1.37 / 1.17(u=1/2/3,名义 ρ)——u=1/2 带内,u=3(1.17)
    微破下限,不强制回滚。直伤雷行值/ρ 每次提案逐档检算落带。

  η 读数(行为面,非判式——2026-10-04 用户裁 P1 乙降格读数):
      η = flag_hit ÷ flag_placed(分母 = 全部封印数,2026-10-04 grill Q5 裁),
    标空率 = flag_miss ÷ flag_placed 次读数分列。字段随结算摘要五字段承载
    (flag_placed/flag_hit/flag_miss/标中兑付合计/标空惩罚合计——结算流水聚合)。

条款 5(清图支配性,不动):
  清图奖励当量  ≥  弃图节省的期望雷险当量 + 轮数差 × 敌方结算强度当量
变量 含义 锚定来源
E_dig(u) 单安全格期望收益当量(77 权重池加权,随敌方单位数 u 缩放 side-wide 项) 战斗结算的效果对照表 + 清图支配性审计读数
V_mine(u) 单雷期望惩罚当量(九型负向字典同池加权) 同上
ρ̂ 雷率:名义 0.25 与实测幸存雷率(10×10 ≈ 0.129 / 12×12 ≈ 0.157)双口径并报,主表用名义(保守) board_gen.tres + 棋盘统计读数
q 玩家对目标格为雷的置信 玩家侧行为量(可推理格 q ∈ {0,1})
β 带 V_mine/E_dig 判读带 [1.2, 2.5] 本文条款③重立条
δ 封印溢价系数 0.25 provisional settlement.tres flag_hit_premium = 125

配置纪律

全部数值(每轮几点、每个动作花多少、刷新门槛、每轮刷新上限)都存配置表、经统一读取口读入,代码里零玩法数值字面量。本系统零随机、无随机数流。改数值 = 改表回填,不动代码;表不变,行为逐位相同。

依赖与输出

方向 系统 接口要点
上游 数据配置 配置表 schema 与类型化读取;本系统是该表的回填责任方
上游 排雷玩法 挖/插的调用方:只判棋盘合法性,扣费必须过行动经济
下游 战斗结算 轮末两字段消息的接收方;回发换图指令与战斗结束信号;五条经济契约的对账责任方
下游 地图战斗资源 清图奖励内容与图类型差异化插槽的归口
下游 HUD 框架 行动点与储备池常显;刷新入口;清零反馈;动作被拒原因的双源呈现(棋盘非法 vs 资源不足)
下游 教学引导 价目与"储备池战斗结束清零"的教学口径来源

行动点对外是一组封闭的布尔入口(开轮 / 挖 / 封印 / 停手 / 刷新 / 结算完成通知 / 战斗结束通知):受理返回真、拒绝返回假且状态不变。相位非法的拒绝附带调试诊断,但不致命中止——进程致命只留给数据配置通道。

P0 最小闭环

  1. 战斗结算发开轮通知:行动点硬重置为表值,储备池不动,进入可操作状态。
  2. 玩家挖 / 封印,每个动作过行动经济按价扣费;连锁展开免费且计入清图进度。
  3. 玩家可随时停手(剩余行动点 1:1 入库),或储备够门槛时刷新换图(每轮次数上限读 data/tables/action_economy.tres)。
  4. 结束路径在行动点事务内仲裁,只裁一个赢家。
  5. 轮末两字段消息发给战斗结算,后者把收益逐行兑现进结算明细。
  6. 战斗结束信号到达:储备池清零,行动点休眠,等下一场战斗的开轮通知。

P1 / P2 后置

优先级 内容 后置原因
P1 储备池跨战斗携带开关 现行每场战斗清零(防滚雪球);是否解禁连刷策略,等实测数据说话
P1 清图奖励按图类型差异化 结构位已预留,内容归地图战斗资源的表设计
P2 地形成本修饰(不同格子不同价) MVP 价目均匀是有意简化;钩子已预留,待地形变异首批类型定稿。注记:地形变异首批已定稿且 Boss 图整图型(贫矿脉)已落地——资源面偏斜走摇号权重投影、零行动点计费接触,本钩子(按格 AP 差价)留位不启用,启用条件仍=未来出现真正按格差异化成本的地形型(随类型扩展重议)
P2 行动点耗尽的教学提示 规则已定"0 点即收轮";若新手困惑,加提示不改规则,归教学引导

调参表

配置表为单行全局表;已锁数值以 data/tables/action_economy.tres 为准。

参数 域 现行值(统一见 game/data/tables/action_economy.tres) 说明
ap_per_round int [1, 32] 表值 每轮行动点;兼作停手转存的规模旋钮
dig_ap_cost int [1, 8] 表值 挖单格成本(下限 1:为 0 则预算系统失效)
flag_place_ap_cost int [0, 8] 表值 封印成本
rap_refresh_cost int [1, 64] 表值 刷新门槛;默认等于每轮预算,构成"满预算停手 = 恰好一刷"的基线节拍
move_ap_cost int 表值(冻结 0) 移动免费——冻结,非调参项
chain_ap_cost int 表值(冻结 0) 连锁免费——冻结,非调参项
refresh_cap_per_round int 表值(provisional,结构位预留) 每轮刷新上限,开轮重置计数
(跨表)矿脉储能产 RAP int [1, 64] 表值(已入 feats.tres,provisional 归调参批) 每次受理的付费挖格兑付一次;连锁不逐格追加
(跨表)省力周转成本率 percent 表值 50%(已入 feats.tres) 只改持有者的刷新价格;双基座叠加时不覆盖矿脉储能
(跨表)跨冒险行动点加成 int [0,10] / int [0,99],冒险表 adventure_table bonus_ap_flat / bonus_cap_ap(provisional) 三选一 AP 件兑现值与全冒险次数上限;加成轴语义见「跨冒险行动点加成轴」节

字段名注记:表字段与本文行名统一为 refresh_cap_per_round,刷新入口命名与表字段口径对齐(切片临时名零残留)。

跨字段校验:任一动作成本禁止超过每轮预算,违反即加载期致命(fail-fast)。各域上界(8 / 64)是 MVP 量级护栏而非推导界,随调参需要修订。

验收标准

  • 开轮硬重置:新一轮开始,行动点回到表值;储备池保持上轮结束时的值不变。
  • 连锁免费:一次挖掘触发连锁翻开任意多格,扣费恒为首格标准价的一笔,且连锁格计入清图判定。
  • 耗尽即收轮:行动点扣到 0 的瞬间轮次结束,此后一切动作请求被拒绝且状态不变。
  • 仲裁唯一:最后 1 点行动点挖开最后一个安全格时,判清图(剩余清零 + 换图 + 清图奖励),不判耗尽;输出恰一条。
  • 停手 1:1:剩余 3 点停手,储备池加 3,下轮同图继续。
  • 刷新规则:储备不足时刷新被拒绝且状态不变;同一轮第 3 次刷新被拒绝;刷新不重置行动点、不发清图奖励、旧图上的封印印记失效。
  • 矿脉储能:持有专长时,每次受理的付费挖格额外产一次 RAP,安全格与危险格同口径,连锁展开不逐格追加;无专长时挖格不新增 RAP。
  • 省力周转与双基座:持有省力周转时按基线的 50% 扣费;与矿脉储能同时持有则两条规则都生效,刷新仍受储备门槛与每轮次数上限约束。
  • 储备清零:战斗结束信号到达后储备池归 0,行动点进入休眠。
  • 跨字段校验:任一动作成本配置超过每轮预算时,加载期致命中止。
  • 零随机:同一动作序列驱动两个独立行动点实例,轮次结束记录与储备轨迹逐项相同。
  • 表实一致:配置表字段与行动经济表字段定义逐字段一致。

待办

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