掉率倍率、经验倍率、活动开关、商店价格——这些运营高频调整的参数散落在各脚本里,每次调整都要找代码。配置中心把全部可调参数收敛到一个配置源,脚本统一读取,运营后台改配置即全服生效。适用于:数值参数、功能开关、公告文案、活动时间表。
local Config = { data = {}, version = 0 }
function Config.reload()
local text = readFile("cfg/center.json") -- 或从 Redis/接口拉取
if not text then return false, "配置文件缺失" end
local ok, parsed = pcall(jsonDecode, text)
if not ok then return false, "配置格式错误" end
if parsed.version <= Config.version then return true end -- 版本未变,跳过
Config.data = parsed
Config.version = parsed.version
EventBus.emit("CONFIG_RELOADED", parsed)
return true
end
function Config.get(path, default)
local node = Config.data
for seg in (path .. "."):gmatch("([^%.]*)%.") do
node = node and node[seg]
if not node then break end
end
return node ~= nil and node or default
end
-- 业务读取示例
local rate = Config.get("game.exp_rate", 1)
点分路径读取(game.exp_rate)让配置结构可以任意嵌套,default 参数兜底缺失配置。
配置变更的生效路径两条:定时轮询(每 60 秒检查版本号)与后台主动推送(通知各进程立即 reload)。配置变更事件通过事件总线广播,依赖该配置的模块在监听里刷新内部状态(缓存重置、开关重读)。关键配置(涉及资产的)变更写审计日志:旧值、新值、操作人、时间。
配置带版本号单调递增,历史版本快照保留最近 10 份,出问题一键回滚到指定版本。配置内容走 review(与代码同等级),高危配置项(爆率、掉落)标注双人复核标记。配置中心落地后,运营调整从"找程序改代码热更"变成"后台改配置 30 秒生效"——这是把程序从重复劳动中解放出来的第一批自动化。
配置的灰度与回滚:高危配置项(爆率、掉落倍率)支持按服务器分组生效,先在单服验证再全服推送。回滚操作读取历史版本快照一键还原,回滚动作本身也进审计日志。配置变更的生效延迟需要公示:轮询模式下最长延迟等于轮询间隔,对时效敏感的开关改用主动推送通道。两套通道并存时以推送为准、轮询兜底,保证最终一致。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 脚本的规范靠人盯盯不过来:命名风格漂移、全局变量乱用、缩进混着来——风格检查器把这些规则的执行自动化。提…
实战应用:用在哪里 拍卖行的出价是一场与时间的博弈:出价的按钮、倒计时的紧迫、截拍瞬间的悬念——拍卖界面的要点是出价的流程、…
实战应用:用在哪里 强化连败七次是什么体验?幸运值机制给失败的玩家一个隐性的承诺:每次失败累加幸运值,幸运值越高下一次的成功…
实战应用:用在哪里 审计日志的价值在于不可抵赖:被改过的日志比没有日志更危险——纠纷的追溯、内部的追责都建立在「日志没被动过…
实战应用:用在哪里 活动结束给 3 万玩家发奖励:一次性群发让邮件表瞬间多 3 万行、投递的队列堵塞正常的通信。批量邮件的分…
实战应用:用在哪里 面对面的交易是传奇最经典的交互:两人面对面、各自放入物品与金币、双方确认后成交。交易的协议要点是会话的建…