前后端 Lua 脚本之间需要双向通信:后端把结算结果推给前端刷新界面,前端把界面操作回传给后端处理。996 引擎的 Lua 网络消息通道(SendLuaNetMsg 配合消息号 99999)就是这条专用通道,本篇给出通道的使用约定,避免各写各的格式。
-- 后端:发送一条带内容的消息(内容直接作为字符串传输)
SendLuaNetMsg 99999 0 0 0 击杀达成|奖励:金币x100
-- 前端:在网络消息回调里按消息号识别
function OnLuaNetMsg(id, data)
if id == 99999 then
showTip(data) -- data 即后端发送的字符串
end
end
消息号 99999 是前后端约定的业务通道,其他消息号留给引擎。多字段内容用分隔符拼串(竖线或井号),前端按分隔符拆分。
前端把界面操作(按钮点击的参数)通过同一通道回传,后端在消息处理入口按约定的命令字段分发。约定格式示例:cmd=claim|questId=12,后端解析 cmd 字段后路由到对应处理函数。回传的任何参数都按不可信数据处理(校验原则篇),解析后立即做类型与范围校验。
消息号独占:99999 通道只跑业务消息,调试与心跳走别的通道,避免格式混乱。内容精简:通道传输的是"结果与参数",不是大段文本(大文本走配置表,消息里只传 id)。格式入文档:每种消息的字段顺序、分隔符、示例写进协议文档,前后端各留一份——通道约定文档化的成本一次性,收益是此后所有联调都有据可查。nn## 通道的联调方法nn联调期在前后端各加一个通道日志:发送端打印消息号与内容,接收端打印收到的原文。两端日志对照,格式问题、字段缺失、乱码三类问题当场定位。联调通过后日志降级为仅记录错误,避免常态刷屏。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
设计初衷 离线挂机收益不设折损时出现荒诞对比:挂机一周的收益超过手玩三天,勤奋上线变成劣势行为,日常玩法的参与率被自己的离线…
设计初衷 连续登录奖励的断签规则是留存系统的双刃剑:零容忍时,一次出差就清零 29 天连击,玩家的愤怒远超奖励本身的价值;无…
设计初衷 面板战力 50000 的玩家在竞技场打不过 38000 的对手——面板公式与实战表现的偏差超过两成时,玩家的信任崩…
底层原理 全量深拷贝保证整个隔离,但代价随数据规模线性放大:一张 500 键、三层嵌套的配置表,全深拷贝 2.1ms——热路…
底层原理 直接删除(表置 nil、清变量)是不可逆操作:删错一个玩家的邮件配置,找回只能靠备份。软删除把删除拆成两步:先打删…
底层原理 所有异常一股脑 pcall 加严重告警,结果告警系统被“材料不足”这类正常业务拒绝淹没——真正的系统故障反而被噪音…