两个服合并,重名玩家、同名行会、榜单位次全要处理,预案不充分就是合服夜大事故。迁移预案分三步:重名改名协商、行会合并映射、榜单重排,全程停服窗口内完成并有回退点。
合并脚本先扫两服名字交集,冲突玩家按登录时间保留先到者,后者获改名卡补偿。
local function detectDupNames(namesA, namesB)
local seen, dup = {}, {}
for _, n in ipairs(namesA) do seen[n] = true end
for _, n in ipairs(namesB) do
if seen[n] then
dup[#dup + 1] = n
end
end
return dup
end
同名行会后缀加服标识区分,两服榜单按分数归并重排,奖励按新名次补发。
local function mergeRanks(rankA, rankB)
local merged = {}
for _, rec in ipairs(rankA) do merged[#merged + 1] = rec end
for _, rec in ipairs(rankB) do merged[#merged + 1] = rec end
table.sort(merged, function(x, y) return x.score > y.score end)
for i = 1, math.min(50, #merged) do
sendmail(merged[i].name, 0, "合服榜单奖励", "合并后名次:" .. i, "金币|" .. (51 - i) * 2000)
end
end
预演环境跑完整合并流程,重名数、行会数、榜单条数三项对账吻合才允许上生产。合服后一周盯改名卡使用率与工单量,工单集中在名字归属说明协商流程要补公告。
改名的自动后缀方案玩家不接受,改名卡加协商期体验好得多,强改名字的投诉是合服事故重灾区。sendmail在合服瞬间对不在线玩家投递靠名字,改名后的旧名要建映射表,否则奖励发丢。榜单奖励金额按新名次线性递减,第五十一名刚好拿不到,边界玩家情绪大,名次并列时同额处理。合服窗口选在维护日常时段,全量对账脚本要在窗口内跑完,跑不完就顺延,硬开服等于带着隐患上线。\
\
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 悬赏捕杀把玩家之间的恩怨变成可托付的系统行为:仇家难以亲自复仇时,花费金条发布悬赏,全服玩家接单击杀目标…
实战应用:用在哪里 策划改表是日常动作,漏填字段、引用了不存在的编号、数值越界这三类问题占了配表故障的绝大多数。等玩家报错再…
实战应用:用在哪里 行会擂台给中小行会提供了固定的对抗出口:挑战方击败守擂方后接管擂台,连胜次数决定每日结算奖励档位。接口层…
实战应用:用在哪里 世界首领战里玩家最关心的是伤害前十名:榜单要求随时插入、随时能按序取出,每来一条伤害记录都重新排序一次太…
实战应用:用在哪里 百人同屏的攻城战里,把每条移动、施法消息广播给全地图是最常见的性能失误。九宫格视野的做法是把地图切成等大…
实战应用:用在哪里 留言板、行会招募语、邮件标题这类字段会被玩家自由填写,并写入角色变量或转发给持久层。拼接式的写法一旦遇到…