外观
余烬试炼场(烬塔 v2) · 技术实现
「玩家设定 →」内容量最大的玩法实现页:入场 / DPS 结算 / 决策事件 / 试炼装备 / 共鸣 / 烬塔 / 奖励额度 / 赛季调度全覆盖。
1. 代码位置
| 层 | 类 | 职责 |
|---|---|---|
| Controller | controller/EmberTrialController(/api/trial/v2) | overview / sessions.enter / damage.settle / decisions.select / complete / entries.purchase / period-equipment / collection(v2.0 升级 collection/upgrade)/ resonance / rankings / tower.replays |
| Controller | controller/TrialController(/api/trial) | 旧版试炼场遗留接口(enter/status/kill/skill/forge…,与 v2 并存,入口以 v2 为准) |
| config | service/TrialBalanceConfig | @ConfigurationProperties("emberfall.trial.v2") 全量平衡配置 + @PostConstruct validate() 启动校验 |
| Service | service/EmberTrialHubService、service/EmberTrialSessionService、service/EmberTrialDamageService、service/EmberTrialDecisionService、service/EmberTrialRankingService | 会话枢纽、入场、DPS 结算、决策事件、排行 |
| Service | service/EmberTrialSettlementScheduler、service/EmberTrialWeeklyRewardScheduler | 硬结算调度、周奖励调度 |
| Service | service/TrialEntryService、service/TrialCombatService、service/TrialDpsCalculator、service/TrialForgeService、service/TrialEquipmentResonanceService、service/TrialRewardLimitService、service/TrialResonanceWeeklyQuotaService、service/TrialManagedModeService、service/TrialReconnectService、service/TrialReplayService、service/TrialTimedEquipmentStore、service/TrialPeriodEquipmentService、service/TrialWeeklyCleanupScheduler | 入场/战斗/铸装/共鸣/奖励限额/托管/重连/回放/限时装备/清理 |
| domain/trial | EmberTrialRun、TrialSession、TrialDaily、TrialEntryRules(旧)、TrialEquipment、TrialEquipmentResonance、TrialWeeklyEquipment、TrialPeriodEquipment、TrialCard、TrialSkill、TrialModifier、TrialMonster、TrialAutoStrategy、TrialDecisionEvent、TrialAchievement、TrialProgress、TrialReplayData、EmberTowerProgress、EmberTowerSeasonProgress | v2 全部领域模型 |
| repository | repository/EmberTrialRunRepository、TrialSessionRepository、TrialEntryRepository、TrialProgressRepository、TrialEquipmentResonanceRepository、TrialResonanceWeeklyRepository、EmberTowerProgressRepository、EmberTowerReplayRepository、TrialActionLogRepository、TrialDecisionEventRepository、TrialDpsSegmentRepository、TrialReplayRepository、TrialRequestLogRepository、TrialCleanupRepository、TrialWeeklyRankingRewardRepository 等 | 持久化层 |
2. 数据表
| 迁移 | 表 | 关键列 |
|---|---|---|
| V78 | player_trial_session | player_id、session_id、mode、status、started_at、target_end_at、hard_end_at |
| V78 | player_trial_daily | player_id、trial_date、entries_used、entries_purchased |
| V78 | player_trial_progress | player_id、mode、best_floor、best_score |
| V78 | player_trial_charge | 入场券消耗记录 |
| V79 | player_trial_card_def / player_trial_action_log / player_trial_replay | 卡牌定义 / 行为日志 / 回放 |
| V82 | player_trial_entry_daily | 每日入场额度(v2 入场) |
| V87 | player_ember_trial_run、player_ember_trial_dps_segment、player_ember_trial_decision_event、player_ember_trial_request_log | v2 跑局核心 + DPS 分段 + 决策事件 + 请求日志 |
| V88 | player_trial_run_equipment、player_trial_weekly_equipment、player_trial_collection、player_trial_retention_daily、player_trial_period_equipment | 局内装备 / 周装备 / 图鉴 / 留存 / 限时装备 |
| V89 | player_trial_resonance、player_trial_entry_daily、player_trial_auto_strategy、player_ember_tower_progress、player_ember_tower_season_progress | 共鸣 / 入场 / 托管 / 烬塔进度 / 赛季进度 |
| V90 | player_ember_tower_replay、player_ember_trial_run_event | 烬塔回放 / 跑局事件 |
| V91 | player_trial_resonance_weekly | 共鸣结晶周额度(软上限 800)——V99 起废弃 |
| V92 | player_trial_weekly_ranking_reward | 周排行奖励发放记录 |
| V99 | player_trial_resonance_daily | 共鸣结晶日额度(工作日 100、周末 ×2=200,替代周表) |
| V100 | player_trial_monthly_unlock | 图鉴套装加成解锁记录(首次激活 MONTH 月度装备,v1.8) |
| V114 | player_trial_codex_fragments、player_trial_codex_star | 图鉴碎片共享池(v1.9)/ 各 Tier 套装星级(v1.9)——v2.0 由 V115 下线/更名 |
| V115 | player_trial_codex_level | 图鉴套装等级(v2.0:删除碎片表、player_trial_codex_star 更名 player_trial_codex_level,旧星级 ×10 平移:满星 10 ≈ 满级 100) |
| V119 | player_trial_codex_level(清空) | v2.1 图鉴重做:清空全部旧等级数据(表结构不变),新效果链从头升级体验 |
3. 配置与常量
全部平衡数值在 application.yml 的 emberfall.trial.v2.*(TrialBalanceConfig 绑定,禁止写死在 Java 常量),启动校验规则:
hard-duration >= target-duration(5 分钟 = 5 分钟;target-duration 仅作内部计算,不作为 UI 目标时长)resonance.upgrade-costs长度 ==max-level(30)、全部为正、累计 == 9725- 概率类(
dps.crit-rate-cap、initial.mythic-stone-drop-rate、cycle.welfare-ticket-base-rate、cycle.resonance-crystal-drop-rate、cycle.mythic-stone-drop-rate、tower.reduction-cap等)∈ [0,1];倍率类非负(含tower.reduction-per-floor) initial.kill-time-*:基准秒为正且 min ≤ max;cycle.monster-drop-multipliers全为非负有限值;cycle.welfare-ticket数量满足 0 < min ≤ max;tower.estimate-window-ratio∈ (0,1]equipment四个 T1-T4 数组各 4 项;validity-weights合计 == 1.0(DAY 0.88 / WEEK 0.105 / MONTH 0.015)tower.hp-growth-segments非空且 growth 为正;reward-limit各项日上限与点券加成非负
关键分组(生效值见配置中心页):
| 组 | 要点 |
|---|---|
entry | 入场:基础 3 + 月卡 1 + VIP5 1 + VIP8 1(原 VIP10 档)+ 终身 1 + 冠名 1;买 1 次/2000 元宝;烬塔入场 1000 元宝(买 2 次);日硬上限 8 |
retention | 留存:基础 1 + 月卡 1 + VIP 2 + 终身 2 + 冠名 2 |
dps | 基础攻击 1000、攻速安全帽 4.0、暴击帽 0.75、暴伤帽 3.0、最终 DPS 安全帽 50,000,000(v2.1 由 500 万上调:容纳图鉴 T1 额外伤害/T2 暴击/T3 全伤/T4 翻倍,支持冲击更高烬塔层数;仍低于理论峰值 ≈1.3 亿);共鸣 R(L)=1+0.139×L^0.7 |
equipment | 武器伤害 [1.0,1.1,1.2,1.35]、护腕攻速 [0.25,0.50,0.75,1.00]、戒指暴击 [0.02,0.04,0.06,0.10]、勋章全伤 [0.05,0.08,0.12,0.18] + 词缀 5 类 |
collection | 两套加成并行:① 集齐套装基础加成(v1.8 恢复,set-base-bonus-rate = [0.05,0.10,0.15,0.20],集齐某 Tier 4 部位自动生效、多套累加全齐 +50%、独立最终乘区、不随升级级数变化);② 图鉴升级 v2.1 重做:升级链 T1→T2→T3→T4(前置满级才可升下一项,level-max-level 100);T1 正常额外伤害(level-extra-damage-increment 0.02)、T2 暴击(level-crit-damage-increment 0.04 / level-crit-rate-increment 0.009)、T3 全伤(level-all-damage-increment 0.02)、T4 翻倍(level-doubler-increment 0.01,Lv100 = T1~T3 效果 ×2);升级费用 level-upgrade-base/linear/quadratic = 3/1.5/0.03(cost(L)=3+1.5L+0.03L²,四舍五入;单 Tier 满级累计 ≈17,576 结晶、全 4 Tier ≈70,302,≈18 个月循环场产出;消耗共鸣结晶 9208)。T1/T3/集齐套装基础加成为独立最终乘区,不进入抉择伤害乘区;T2 叠加在暴击通道(装备/抉择部分仍受 dps.crit-*-cap 约束)。激活 MONTH 月度装备后解锁(v1.8 保留);v2.1 起升级链等级数据清零(V119),升级链旧 level 语义废弃——集齐套装基础加成仍随集齐自动生效 |
initial | 怪物 HP [30000,55000,85000,120000]、权重 55/30/12/3%、装备基础掉率 0.08、神话石掉率 0.0、五彩结算率 0.0(已取消掉落;保留按击杀耗时浮动配置 0.3~3.0 待恢复) |
cycle | 9208 仅循环场产出且仅试炼内部消耗(装备共鸣 + 图鉴升级,v2.0)、掉率 0.05;日软上限 100(周末六/日 ×2=200)、超限 ×0.20、不跨日结转;福利点券 4001 基础率 0.5 单次 2-10 + 特权加成(月卡/终生/VIP5/VIP8 各 +1、冠名 +2);神话石掉率 0.05;掉落倍率 STANDARD 1 / 巨兽 2 / 虚影 1 / 宝箱守护者 3;怪物类型 v1.11 起等概率随机刷新(四类各 25%,无候选列表、无付费加权),宝箱守护者生命倍率 ×3.0 → ×1.5(initial.monster-hp-multiplier);托管局按 cycle.managed-monster-hp-cap 裁剪单怪有效生命以保证击杀数下限,并同步把掉落倍率归一为 1(手动局不裁剪、保留原始血量张力与 ×2/×3 掉落上行空间);selection_policy 与 next_monster_type 已随本次改动删除(迁移 V145) |
tower | HP 基础 60000,分段增长 1.08/1.06/1.045/1.03;50 层起减伤 0.25%/层、上限 60%;里程碑 [50,100,200];每层按段 100~3000 灵金 / 10~300 黄金 / 20~400 元宝(从 1 层起);五彩 100 层以下不掉、101+ 起每层 1/2 颗(受日池约束),里程碑 20万/30万/50万 × 三币种 + 200/300/500 五彩(不占日池);预估窗口系数 0.75(入场按当前 DPS 预估可达层数);v1.10 每层限时 floor-time-seconds(默认 10 秒):EmberTowerService.spawnNextMonster 设 hardEndAt = min(spawn + 10s, 会话硬终点快照 sessionHardEndAt),超时未击杀经既有 hardEnd 链路止步结算(onComplete 写 endReason=FLOOR_TIMEOUT),onKill 在 BUFF 抉择回合恢复会话终点,estimateFloor 按每层 10s 预算判断;旧整局 5 分钟约定仅作抉择滞留兜底 |
resonance | 30 级封顶,cost(L)=10+2L+L²,累计 9725 |
reward-limit | 神话石 周池容器 400/周 + 日顶 100/日双裁剪(展示口径 350 + 转结,容器与 50 容错余量不外露;额度池 ID 沿用 9301,与初始副本/循环场/经典试炼共享)、五彩周池 400/周(固定,不随氪金放大)、福利点券 1000 + 氪金加成累加(月卡 +1000 / 终生 +2000 / VIP5 +1000 / 原 VIP10 档 +3000(现并入 VIP8)/ 冠名 +3000);三币种与打金共享 |
season | 烬塔月赛季(每月 1 日 0 点 cron)、周重置 MONDAY、checkpoint 10/回溯 1 |
scheduler | 硬结算延迟 5s、清理 cron 0 20 3 * * * |
4. 数据流简述
POST /api/trial/v2/sessions/enter 由 TrialEntryService 按 entry.* 配置扣入场额度(player_trial_entry_daily)并创建 player_ember_trial_run。战斗期客户端按帧上报,POST /sessions/{id}/damage/settle 由 EmberTrialDamageService 按 dps.* 帽与共鸣公式结算 DPS 并写 player_ember_trial_dps_segment;每回合触发决策事件(怪物/祝福/卡牌三选一,decisions.select 写 player_ember_trial_decision_event)。结束/超时由 EmberTrialSettlementScheduler 硬结算,产出按 reward-limit 额度(神话石/五彩固定、福利点券含氪金加成)与 TrialRewardLimitService 限额发放(灵金/黄金/元宝/神石/福利点券/共鸣结晶 9208),局内装备经 TrialForgeService 铸装进入 player_trial_run_equipment,周装备/图鉴/留存/限时装备各自落表。烬塔模式经 EmberTowerService 推进层数(player_ember_tower_progress),月赛季与周排行由两个 Scheduler 结算并写 player_trial_weekly_ranking_reward。
v2.1 图鉴套装升级:POST /collection/upgrade(tier/expectedLevel/requestId)经 EmberTrialHubService 玩家锁 + requestId 幂等(日志类型 CODEX_LEVEL_UPGRADE)转 TrialCollectionBonusService.upgradeLevel 单事务完成「解锁→集齐→前置 Tier 满级→未满级→expectedLevel→共鸣结晶充足」校验、扣 9208 共鸣结晶(GameRepository.changeItemQuantity)与乐观锁升级(level = expectedLevel 条件更新,无独立 version 列);bonuses()(CodexBonuses:extraDamage/critRate/critDamage/allDamage/doubler/setBonus)在会话入场时快照进 runStateJson(codexExtraDamageBonus/codexCritRateBonus/codexCritDamageBonus/codexAllDamageBonus/codexBaseSetBonus),TrialDpsSimulator 将 T2 叠加在暴击通道、T1/T3/集齐套装基础加成(codexBaseSetBonus,v1.8 恢复)以三个独立最终乘区作用在最终 DPS,错误码 5522-5527(等级冲突/结晶不足/未集齐/未解锁/已满级/前置未满级)。升级链老等级数据由 V119 清空(升级链旧等级语义废弃);集齐套装基础加成(set-base-bonus-rate)不受影响、仍随集齐自动生效(v1.9 碎片转化此前已下线)。
5. 已知差异
(TrialEntryRules 旧规则与 yml v2 并存,以 yml 为准)(神话石:面板加成改双曲渐近 + 额度改「周池硬顶 + 日顶软顶」;经典试炼 TrialService 已纳入统一周池,4006 耗尽不再连带停发神话石)6. 相关代码
- 配置中心(
emberfall.trial.v2.*全量键) - 主世界奖励(
GoldDungeonRules:三币种共享打金池) - 打金权益(
PrivilegeTier:权益倍率同源) - 排行(
EmberTrialRankingService、player_trial_weekly_ranking_reward) - 旧版试炼(
TrialController:遗留接口)