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→S | CS_LeagueRegister | 报名 |
| S→C | SC_LeagueInfo | 赛程/分组/积分 |
| S→C | SC_LeagueMatch | 比赛开始/战场 |
| S→C | SC_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. 验收标准
- 报名/名单/分组/赛程/积分/晋级/结算正确。
- 跨服战场调度与映射正确。
- 掉线/重赛/代打处理正确。
- 奖励/冠军展示正确。
- 客户端赛程/积分与服务端一致。