跳到主要内容

PRD-072 跨服公会联赛

文档编号:PRD-072
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
脚本挂载:lua/arena/guild_league.lua

1. 背景与目标​

跨服公会联赛提供服务器间的顶级团队竞争。报名、分组、赛程、积分、淘汰、结算适合用 Lua 编排。

目标

  • 以公会为单位跨服参赛,分组循环 + 淘汰赛。
  • 赛程、地图、积分、晋级规则可配置。
  • 赛季冠军全服展示与专属奖励。

2. 核心规则​

2.1 报名​

  • 公会等级 ≥ 3,会长/副会长报名,提交 20 人名单。
  • 每个公会每个赛季只能报名一次,名单锁定后不可换人(可配置 2 人替补)。
  • 报名消耗公会资金,按服务器名额筛选(战力/活跃)。

2.2 赛程​

报名 → 小组循环(BO1)→ 16 强(BO3)→ 8 强 → 4 强 → 决赛(BO5)
  • 每周六 20:00 比赛,单场 20 分钟。
  • 小组赛积分:胜 3、平 1、负 0;同分按胜负关系/击杀数。
  • 淘汰赛平局按剩余人数 > 总伤害 > 公会战力判定。

2.3 战场​

  • 20v20 战场,目标为摧毁对方水晶/占领 3 个据点。
  • 每人 3 次复活,复活 CD 30 秒。
  • 允许使用自身装备/技能,禁用外部 Buff/宠物(可配置)。

3. 服务端设计​

3.1 Lua 脚本设计​

-- lua/arena/guild_league.lua
League = {
min_guild_level = 3,
roster_size = 20,
group_size = 4,
bo = { group=1, r16=3, r8=3, semi=3, final=5 },
}

function OnLeagueRegister(ctx, guild, roster)
if ctx:GetGuildLevel(guild) < League.min_guild_level then
return ctx:Fail(guild, "公会等级不足")
end
if #roster ~= League.roster_size then return ctx:Fail(guild, "名单人数不足") end
if not ctx:ConsumeGuildFunds(guild, ctx:RegisterCost()) then
return ctx:Fail(guild, "公会资金不足")
end
ctx:CreateLeagueEntry(guild, roster)
end

function OnMatchEnd(ctx, match, winner, loser)
ctx:AddGroupScore(winner, 3)
ctx:AddGroupScore(loser, 0)
ctx:RecordMatch(match, winner, loser)
if ctx:IsGroupStage(match) then ctx:ScheduleNext(match) end
end
  • 报名/分组/赛程/积分/晋级由脚本管理,C++ 提供跨服战场与战斗。
  • 名单锁定、替补、掉线判定由脚本校验。
  • 结算幂等,按 season_id + guild_id + stage。

3.2 协议​

方向协议说明
C→SCS_LeagueRegister报名
S→CSC_LeagueInfo赛程/分组/积分
S→CSC_LeagueMatch比赛开始/战场
S→CSC_LeagueResult胜负/晋级

3.3 跨服与公平​

  • 跨服战场由 MiniServer 调度,公会映射到统一 ID。
  • 公平模板统一等级/属性,保留职业/技能。
  • 掉线 2 分钟判负,公会可继续少人作战。
  • 代打/异常登录触发风控,取消资格。

4. 客户端设计​

  • 联赛大厅:报名、赛程、分组、积分、晋级图。
  • 名单管理:20 人 + 2 替补,锁定提示。
  • 比赛 HUD:水晶/据点、复活次数、倒计时。
  • 观战/竞猜(可选,需合规)。
  • 冠军展示、专属称号/坐骑。

5. 配置与 Lua 接口​

配置说明
roster_size名单人数
group_size小组规模
bo各阶段赛制
match_time比赛时间
rewards排名奖励

Lua 接口:CreateLeagueEntry、AddGroupScore、ScheduleNext、RecordMatch、IsGroupStage、GetLeagueRank。

6. 边界与异常​

场景处理
报名人数不足拒绝
名单锁定后换人禁止/替补上场
比赛双方都掉线按存活/伤害判定
服务器重启重连恢复/本场重赛
重复结算幂等
代打/异常取消资格并追回奖励

7. 验收标准​

  • 报名/名单/分组/赛程/积分/晋级/结算正确。
  • 跨服战场调度与映射正确。
  • 掉线/重赛/代打处理正确。
  • 奖励/冠军展示正确。
  • 客户端赛程/积分与服务端一致。