战令与赛季轨
Category
system / 玩法系统(赛季运营件)。节点定位:战令把「一个赛季内的活跃」变成「可展示、可付费、可结算的双轨进度」——赛季窗口、经验等级、双轨奖励、赛季切换四件事。进度事件源与任务系统同管道,赛季重置与体力与次数门控同窗口口径,领取与付费走结算凭证。
Definition
战令(Battle Pass/Season Pass)是赛季限定的进度奖励轨:玩家在赛季窗口内靠行为攒经验、逐级解锁奖励,奖励分免费轨与付费轨两列。它与签到的差别:签到按日打卡、奖励固定;战令按行为累计、奖励逐级。它与成就的差别:成就永久只增;战令赛季清零重来。付费轨是一次性 IAP 解锁的「额外一列奖励」,不是抽卡、不参与概率。
Problem
战令的坑按出现顺序:
- 进度事件双计:同一个「完成一局」事件,任务、成就、战令各自订阅,一处幂等没做对就出现进度虚高或三处不一致。
- 赛季切换清零争议:进度、未领奖励、付费状态三样东西在切换时刻怎么处理没有预案,切换日全是客诉。
- 买等级与进度并发:玩家一边刷经验一边买等级,两路写同一进度,并发下少加或多加。
- 付费轨发放失误:解锁付费轨后补发整列历史奖励,漏发、重发都出过事故。
- 赛季末冲刺负载:截止前最后几小时集中完成赛季任务,事件洪峰冲垮进度管道。
Algorithm
结构:赛季定义 + 玩家进度
text
pass_def: # 赛季静态配置,运营维护
season: s2026q4
start: 2026-10-01
end: 2026-12-31
exp_per_level: 1000 # 线性:每级固定经验
levels: 60
free_rewards: { 1: [item:a], 2: [currency:g100], ... }
prem_rewards: { 1: [skin:x], 5: [item:b], ... }
pass_progress: # 每玩家每赛季一条
player: u1001
season: s2026q4
exp: 4300
level: 4
premium: false
claimed: {free: [1,2], prem: []}- 等级曲线用线性(每级固定经验):战令的奖励预期要可心算,曲线复杂会让「还差多少到下一级」失去感知锚点
claimed按轨道分开记,领取幂等键(player, season, track, level)- 买等级 = 直接加经验(
exp += n * exp_per_level),与打怪攒的经验走同一条入口,等级是经验的纯函数——并发问题退化为单入口幂等
进度:订阅统一事件源,与任务成就同管道
- 战令不造新事件:订阅与任务、成就同一份
{player, type, key, n, tags}事件流,各系统各自独立计数——双计的解法不是共享计数器,而是每个系统自己的幂等各自做对 - 赛季任务(「本周完成 10 局排位」)是任务的窗口重置形态,不是战令内部再造一套任务
- 事件洪峰:赛季末冲刺靠入口侧限流与批量结算,进度聚合可以延迟(最终一致),不逐事件实时刷等级
领取:两轨两列,凭证入账
| 轨道 | 解锁条件 | 领取形态 |
|---|---|---|
| 免费轨 | 无 | 达级即领或手动领 |
| 付费轨 | 一次性 IAP 解锁 premium | 达级后领,逐级凭证 |
- 解锁付费轨不自动补发历史已过等级的付费奖励——口径做成「解锁后可补领」(玩家自己领,逐级幂等),避免服务端批量补发的漏发重发事故
- IAP 回调幂等按订单号(与交易、支付与经济系统同口径),解锁写
premium标记后再谈领取 - 领取走结算凭证:
(player, season, track, level)去重,重复领取直接跳过
赛季切换:快照、补发、清零
text
赛季结束时(或玩家首次进入新赛季时惰性执行):
1. 快照旧赛季进度(等级、已领、未领)
2. 未领奖励 → 生成限时邮件(过期回收,见运营发奖节点)
3. 新赛季 pass_progress 新建,exp=0, level=0
4. premium 不继承(行业通行);续购激励用折扣券,不用状态继承- 切换的触发用惰性(玩家首次上线时结算)而非定时全量扫:与签到、体力门控同一哲学
- 未领奖励补发的时效要明显短于一个赛季,避免「上赛季的邮件」堆积到下赛季
- 排行榜与赛季结算奖励的联动口径见排行榜:赛季榜随赛季重置,战令经验榜(若有)同样
Used By
- Fortnite(商业大逃杀,Epic Games 公开资料):赛季制 Battle Pass 的成型形态——赛季窗口、逐级解锁、付费轨、赛季专属外观限时回收,是本页结构层的直接参照。
- 炉石传说(商业卡牌,暴雪公开资料):2020 年奖励路线改版把付费轨弱化、免费轨拉长,是「免费轨为主」变体的参照。
- 原神(商业手游):纪行(付费轨 + 等级购买上限 + 任务驱动经验)是「付费轨 + 任务经验源」的手游变体参照。
- 王者荣耀 / 和平精英(商业手游腾讯):赛季制战令与赛季段位结算联动,是「战令与赛季结算奖励并行」的参照。
- 通用开源服务端(Nakama、TrinityCore 等):无内置战令件;Nakama 的 tournaments/leagues 提供赛季化竞赛原语,战令的业务口径属自建——本页为口径归纳。
可参考分析:Fortnite 赛季结构=可参考(赛季窗口/双轨/限时回收直接落本页结构层);炉石免费轨变体=可借鉴(免费轨拉长的差异化,落点 design 树商业化设计);原神纪行=可参考(等级购买与任务经验源落买等级与进度一节);王者赛季联动=可借鉴(与赛季榜联动,落点排行榜页);Nakama 竞赛原语=可借鉴(赛季化承载,落点 server 树 services,本页不展开)。
Related
关系链:赛季结构 → 进度事件 → 双轨领取 → 赛季切换。逐段回答「为什么需要下一个」:
- 赛季结构定了才谈攒经验——窗口与等级表是进度的容器。
- 容器有了才接事件——战令不造事件源,订阅统一事件流,各系统幂等各自做对。
- 进度准了才敢发两列——免费/付费两轨的领取凭证按
(player, season, track, level)幂等。 - 领取闭环了才谈切换——快照、补发、清零三步走惰性结算,切换日才不出事故。
上游:任务系统(赛季任务与事件源)、结算(领取与 IAP 凭证)、交易、支付与经济系统(付费解锁订单口径);下游:排行榜(赛季榜联动)、掉落与概率设计(战令奖励的数值侧)、体力与次数门控(赛季窗口与服务器日)。
Reference
- 本页为机制归纳;各商业案例的战令规则(等级数、经验曲线、价格)以各自官方公开信息为准,本页只引结构口径。
- 术语对照:Battle Pass(战令)、Season(赛季)、Track(轨道)、Premium(付费轨)、Tier/Level(等级)、Season Reset(赛季重置)。