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→S | CS_Arena3v3Queue | 报名 |
| S→C | SC_Arena3v3Match | 匹配成功 |
| S→C | SC_Arena3v3State | 比分/存活/倒计时 |
| S→C | SC_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. 验收标准
- 组队/匹配/战斗/积分/赛季结算正确。
- 公平模板/职业限制/掉线判定生效。
- 风控识别送分。
- 客户端比分/存活与服务端一致。
- 赛季奖励可追溯。