PRD-068 1v1 擂台切磋
文档编号:PRD-068
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
脚本挂载:lua/arena/duel.lua
1. 背景与目标
擂台切磋提供低门槛的即时 1v1 对抗与连胜追求。匹配、连胜、让分、观战适合用 Lua 编排,与排位赛区分。
目标
- 玩家可在擂台 NPC 处发起/接受切磋,不消耗装备耐久。
- 连胜记录、擂台榜、每日奖励。
- 支持等级/战力让分,避免一边倒。
2. 核心规则
2.1 切磋规则
- 双方等级 ≥ 20,非战斗/非副本状态。
- 切磋不死亡、不掉装备、不消耗耐久,血量最低保留 1。
- 限时 5 分钟,时间到按剩余血量百分比判定。
- 允许使用技能/药剂,禁止外部 Buff/宠物(可配置)。
2.2 匹配与让分
- 可自由挑战或快速匹配同分段对手。
- 战力差 > 20% 时,低战力方获得伤害/减伤让分。
- 让分系数由脚本配置,最高 15%。
- 连胜 3 场后匹配更高分段对手。
2.3 连胜与榜单
- 胜利 +1 连胜,失败清零;连胜 5/10/20 场有额外奖励。
- 每日前 10 场有奖励,后续只有荣誉。
- 擂台榜按连胜/胜率排序,每周重置。
3. 服务端设计
3.1 Lua 脚本设计
-- lua/arena/duel.lua
Duel = {
min_level = 20,
duration = 300,
handicap_threshold = 0.2,
handicap_max = 0.15,
streak_rewards = { 5, 10, 20 },
}
function OnDuelStart(ctx, role, target)
if ctx:InCombat(role) or ctx:InDungeon(role) then return ctx:Fail(role, "当前状态不可切磋") end
if math.abs(ctx:GetLevel(role) - ctx:GetLevel(target)) > 10 then
return ctx:Fail(role, "等级差过大")
end
local arena = ctx:CreateDuelScene(role, target)
ctx:ApplyHandicap(arena, Duel.handicap_threshold, Duel.handicap_max)
ctx:SetTimer("duel_end_" .. arena.id, Duel.duration, function() ctx:JudgeByHp(arena) end)
end
function OnDuelEnd(ctx, arena, winner, loser)
ctx:AddStreak(winner, 1)
ctx:ResetStreak(loser)
ctx:GrantStreakReward(winner, Duel.streak_rewards)
ctx:RestoreState(winner, loser)
ctx:UpdateDuelRank(winner, loser)
end
- 切磋场景独立,结束恢复双方位置/状态/HP。
- 让分/连胜/奖励由脚本计算。
- 结果幂等,按
duel_id唯一。
3.2 协议
| 方向 | 协议 | 说明 |
|---|---|---|
| C→S | CS_DuelRequest | 发起切磋 |
| C→S | CS_DuelReply | 接受/拒绝 |
| S→C | SC_DuelState | 倒计时/血量/让分 |
| S→C | SC_DuelResult | 胜负/连胜 |
3.3 竞技公平
- 切磋不影响排位积分/PK 值。
- 同一对手连续切磋 3 次后奖励递减。
- 让分只影响伤害/减伤,不改属性面板。
4. 客户端设计
- 擂台 NPC/入口、快速匹配、挑战列表。
- 切磋确认:对手信息、战力、让分。
- 战斗 HUD:双方血量、倒计时、连胜。
- 结算:胜负、连胜、奖励、再战。
- 擂台榜与观战入口。
5. 配置与 Lua 接口
| 配置 | 说明 |
|---|---|
duration | 时限 |
handicap_threshold | 让分阈值 |
handicap_max | 最大让分 |
streak_rewards | 连胜奖励 |
Lua 接口:CreateDuelScene、ApplyHandicap、JudgeByHp、AddStreak、ResetStreak、GrantStreakReward。
6. 边界与异常
| 场景 | 处理 |
|---|---|
| 一方掉线 | 30 秒未回判负 |
| 双方同时死亡 | 按剩余血量/伤害判定 |
| 战斗中使用外部 Buff | 清除/判负 |
| 重复请求 | 幂等 |
| 场景创建失败 | 退还消耗,提示 |
7. 验收标准
- 发起/接受/战斗/判定/结算正确。
- 切磋不死亡/不掉耐久/恢复状态正确。
- 让分/连胜/奖励/榜单正确。
- 掉线/同时死亡/异常处理正确。
- 客户端血量/倒计时一致。