跳到主要内容

PRD-069 3v3 精英赛

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

1. 背景与目标​

3v3 精英赛提供小队配合与赛季排名。组队、匹配、积分、赛季结算适合用 Lua 编排,与 1v1 竞技场区分。

目标

  • 3 人组队报名,按队伍积分匹配。
  • 每周固定时段开放,赛季 8 周。
  • 职业组合、阵容克制、击杀/助攻计分。

2. 核心规则​

2.1 报名与匹配​

  • 3 人组队,等级 ≥ 40,职业不限。
  • 每周三/六 20:00–22:00 开放,每队每日 5 场。
  • 按队伍积分匹配,等待超过 60 秒放宽分段。
  • 匹配成功 15 秒确认,缺员判负。

2.2 战斗​

  • 地图为对称竞技场,双方出生点固定。
  • 击杀全部敌人获胜;时间到按剩余人数 > 血量 > 伤害判定。
  • 复活不可用;死亡后进入观战。
  • 允许使用自身技能/药剂,禁用外部 Buff/宠物(可配置)。

2.3 积分与赛季​

  • 胜 +25,负 -15,按对手积分差修正。
  • 赛季结束按积分排名发奖,前 8 名进入总决赛。
  • 赛季软重置:new = 1000 + (old - 1000) × 0.4。

3. 服务端设计​

3.1 Lua 脚本设计​

-- lua/arena/arena_3v3.lua
Arena3v3 = {
team_size = 3,
daily_matches = 5,
win_score = 25,
lose_score = -15,
season_weeks = 8,
}

function OnQueue(ctx, team)
if #team.members ~= Arena3v3.team_size then return ctx:Fail(team, "人数不足") end
if ctx:GetDailyCount(team, "3v3") >= Arena3v3.daily_matches then
return ctx:Fail(team, "今日场次已用完")
end
ctx:EnqueueTeam(team, ctx:GetTeamRating(team))
end

function OnMatchEnd(ctx, match, winner, loser)
ctx:UpdateRating(winner, Arena3v3.win_score)
ctx:UpdateRating(loser, Arena3v3.lose_score)
ctx:AddDailyCount(winner, "3v3", 1)
ctx:AddDailyCount(loser, "3v3", 1)
ctx:GrantMatchReward(winner, loser)
end
  • 匹配/积分/赛季由脚本管理,C++ 提供房间与战斗。
  • 队伍成员变更后积分按新队伍计算,保留个人历史。
  • 赛季结算幂等,按 season_id + team_id。

3.2 协议​

方向协议说明
C→SCS_Arena3v3Queue报名
S→CSC_Arena3v3Match匹配成功
S→CSC_Arena3v3State比分/存活/倒计时
S→CSC_Arena3v3Result胜负/积分

3.3 竞技公平​

  • 公平模式统一等级/属性模板,保留职业/技能。
  • 禁止重复职业超过 2 个(可配置)。
  • 掉线 90 秒判负,队友可继续。
  • 恶意送分/刷分触发风控。

4. 客户端设计​

  • 3v3 大厅:队伍、积分、场次、赛季时间。
  • 匹配中显示队伍阵容/等待时间。
  • 战斗 HUD:双方存活、比分、倒计时。
  • 结算:胜负、积分变化、MVP。
  • 赛季排名/总决赛入口。

5. 配置与 Lua 接口​

配置说明
team_size队伍人数
daily_matches每日场次
win_score / lose_score积分
season_weeks赛季
class_limit职业限制

Lua 接口:EnqueueTeam、GetTeamRating、UpdateRating、GrantMatchReward、GetSeasonRank。

6. 边界与异常​

场景处理
队员掉线90 秒判负,队友继续
匹配确认超时判负/短禁赛
赛季结算在线邮件发奖
重复结算幂等
队伍解散取消匹配

7. 验收标准​

  • 组队/匹配/战斗/积分/赛季结算正确。
  • 公平模板/职业限制/掉线判定生效。
  • 风控识别送分。
  • 客户端比分/存活与服务端一致。
  • 赛季奖励可追溯。