外观
余烬试炼场(烬塔 v2) · 技术实现
「玩家设定 →」内容量最大的玩法实现页:入场 / DPS 结算 / 决策事件 / 试炼装备 / 共鸣 / 烬塔 / 奖励额度 / 赛季调度全覆盖。
1. 代码位置
| 层 | 类 | 职责 |
|---|---|---|
| Controller | controller/EmberTrialController(/api/trial/v2) | overview / sessions.enter / damage.settle / decisions.select / complete / entries.purchase / period-equipment / collection / 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) |
| V92 | player_trial_weekly_ranking_reward | 周排行奖励发放记录 |
3. 配置与常量
全部平衡数值在 application.yml 的 emberfall.trial.v2.*(TrialBalanceConfig 绑定,禁止写死在 Java 常量),启动校验规则:
hard-duration > target-duration(10 分钟 > 5 分钟)resonance.upgrade-costs长度 ==max-level(30)、全部为正、累计 == 9725- 概率类(
dps.crit-rate-cap、initial.mythic-stone-drop-rate、cycle.welfare-ticket-base-rate、tower.reduction-cap等)∈ [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.entitlement-multiplier全为正
关键分组(生效值见配置中心页):
| 组 | 要点 |
|---|---|
entry | 入场:基础 3 + 月卡 1 + VIP5 1 + VIP10 1 + 终身 1 + 冠名 1;买 2 次/2000 点券;烬塔入场 1000 点券;日硬上限 8 |
retention | 留存:基础 1 + 月卡 1 + VIP 2 + 终身 2 + 冠名 2 |
dps | 基础攻击 1000、攻速安全帽 4.0、暴击帽 0.75、暴伤帽 3.0、最终 DPS 安全帽 5,000,000;共鸣 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 类 |
initial | 怪物 HP [30000,55000,85000,120000]、权重 55/30/12/3%、装备基础掉率 0.08、神话石掉率 0.01、五彩结算率 0.05 |
cycle | 9208 仅循环场产出且仅共鸣消耗、掉率 0.5;周软上限 800、超限 ×0.20、结转 1 周;福利点券 4001 基础率 0.15 |
tower | HP 基础 60000,分段增长 1.08/1.06/1.045/1.03;50 层起减伤 0.25%/层、上限 60%;里程碑 [50,100,200];每层 50 灵金/10 黄金/100 元宝/1 五彩神石 |
resonance | 30 级封顶,cost(L)=10+2L+L²,累计 9725 |
reward-limit | 权益倍率 FREE 1.0 / MONTHLY 1.5 / VIP 2.0 / NAMING 3.0;神话石日限 100、五彩 50、福利点券 1000;三币种与打金共享 |
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。
5. 已知差异
(TrialEntryRules 旧规则与 yml v2 并存,以 yml 为准)6. 相关代码
- 配置中心(
emberfall.trial.v2.*全量键) - 主世界奖励(
GoldDungeonRules:三币种共享打金池) - 打金权益(
PrivilegeTier:权益倍率同源) - 排行(
EmberTrialRankingService、player_trial_weekly_ranking_reward) - 旧版试炼(
TrialController:遗留接口)