比奇省的公共传送阵常年排队,扩容不是多开几个圈就完事:目标线路分级、排队优先级分层、维护冷却错峰,扩容方案让传送阵从瓶颈变成可运营的资源。
热门线路增加并行传送圈,按使用率自动扩容,冷门线路合并回收。actor是字符串,转对象后按线路分流。
local LINES = { { to = "mengzhong", lanes = 2 }, { to = "woma", lanes = 1 } }
local usage = { mengzhong = 0, woma = 0 }
local function pickLane(line)
usage[line] = usage[line] + 1
for _, l in ipairs(LINES) do
if l.to == line then
return math.max(1, math.min(l.lanes, math.ceil(usage[line] / 50)))
end
end
return 1
end
每条传送圈每秒放行一人,超员排队并提示等待位次,队伍按到达顺序排列。actor是字符串,转对象后进入队列。
local lanes = {}
local function enqueue(actor, line)
local player = class(actor)
lanes[line] = lanes[line] or {}
table.insert(lanes[line], player:GetName())
sendmsg(actor, 0, "排队中,前方" .. #lanes[line] - 1 .. "人")
end
扩容触发、排队节拍、冷门合并三条规则验证;传送成功率的分线路统计核对。上线后看各线路的排队均值,排队超过二十人的线路优先扩容,数据驱动的扩容比拍脑袋公平。
usage计数跨天不清零会让扩容判定持续偏高,按小时重置计数再统计。lanes队列的头部移除用游标代替物理删除,长队搬移是隐藏的卡顿源。排队中玩家下线要从队列摘除,幽灵位次让后面的人永远等不到。传送圈扩容的视觉呈现要同步,多圈并存的排布在地图编辑器里预留位置,运行时才找空地会摆放失败。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
学员常见误区 Lua函数可返回多个值,学员用固定变量数接收时如果变量少于返回值,多余返回值被静默丢弃;如果变量多于返回值,多…
设计初衷 行会建筑的死穴是一次全解锁:会员没有逐步建设的过程感。梯度设计让每栋建筑都有前置条件和资源门槛。 数值模型 建筑分…
设计初衷 婚姻系统的属性加成是社交玩法的经济锚点:加成太弱没人结婚,太强则"为了属性被迫结婚"扭曲了社交本质。婚姻边界的设计…
设计初衷 宝箱类玩法的信任危机都源于同一句话:"概率是不是骗人的。"期望公示把概率从事后争议变成事前契约:奖池概率表全量公示…
设计初衷 流拍物(拍卖未成交的退回物品)堆积在卖家背包里成为死资产:低价值物流拍后无人问津,高价值物流拍后卖家不愿降价重拍。…
业务场景 沙巴克战功榜每周结算,玩家提交战功前不知道"再打多少能进前 10、前 10 的奖励是什么"。名次预览:输入自己的战…