23 KiB
行动经济
一句话:每轮行动点怎么花、停手与刷新的代价 状态:已定稿;现行为 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调参批。
封印标中的兑付约束
封印标中了危险格,收益在当轮结算兑付(标中 = 危险格被控制、里面怪物被削弱)。兑付受五条硬约束,核心思想是"认雷不认封印":
| 约束 | 含义 |
|---|---|
| 一次性 | 每颗雷在一场战斗内至多兑付一次,资格随首次兑付消费 |
| 当轮结算 | 封印印记只是当轮兑付的载体,不囤积到以后 |
| 资格认危险格实例 | 挖开重封同一格(封印印记随挖掘消失),不恢复已消费的资格——堵死"重复计费重封刷收益"的农场(注:移除动作已退役) |
| 不逐轮重复 | 同一颗雷的收益不会每轮反复发 |
| 换图重置 | 新图的雷是新实例,资格自然重来 |
收益直兑与五条经济契约
扫雷侧的全部收益都以战斗效果直接兑现:挖开安全格给主角加增益、封印标中给怪物加减益、惊动危险格给敌方上增益、清图发奖励。不存在中间货币、不存在折算乘数——折算公式根本不存在。
行动点对下游立了五条经济契约,保证"推理的收益大于盲赌的代价"这条底线在数值上闭合:
- 单一当量:所有收益来源用同一张效果对照表归一换算,不允许分源改率。
- 封印标中锚:封印标中的减益档位必须严格高于最低档安全格增益——否则没人愿意封印。
- 挖掘风险不等式(详细推导见下方推导节):聚合健康式 + 封印溢价条件二 + β 比值带判读,三层口径并行立(2026-10-04 用户裁 P2)。
- 清图奖励大于零,并预留按图类型差异化分支的结构位。
- 清图支配性:推到底清图的期望收益,不低于"确定格挖完就弃图刷新"的期望收益——否则清图玩法会被刷新策略淘汰。
结论:五条契约由战斗结算作为唯一对账责任方闭合验收;概率侧由棋盘生成的可推理率参数锚定;条款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:1 入库),或储备够门槛时刷新换图(每轮次数上限读
data/tables/action_economy.tres)。 - 结束路径在行动点事务内仲裁,只裁一个赢家。
- 轮末两字段消息发给战斗结算,后者把收益逐行兑现进结算明细。
- 战斗结束信号到达:储备池清零,行动点休眠,等下一场战斗的开轮通知。
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,行动点进入休眠。
- 跨字段校验:任一动作成本配置超过每轮预算时,加载期致命中止。
- 零随机:同一动作序列驱动两个独立行动点实例,轮次结束记录与储备轨迹逐项相同。
- 表实一致:配置表字段与行动经济表字段定义逐字段一致。
待办
本系统待办条目已统一收编至 待办清单,本节不再逐条登记。