大数据必须分片

04/0732 浏览开发心得
心得分享:三连环 Bug 复盘
BUG-1: WebSocket 消息超限(根因)项内容现象客户端永远卡在加载画面,收不到初始状态
根因cjson.encode(fullState) 产出 90KB JSON,超过 WebSocket 单消息 65535 字节硬限制,SendRemoteEvent 静默失败(无 Lua 异常,仅引擎 ERROR 日志)危险性随着游戏数据膨胀(科技、建筑、军队、弹药库),这个上限迟早会被触碰修复StateSync.lua 自动检测 JSON 长度,>60KB 时按 60KB 切片通过 StateChunk 事件逐片发送;客户端缓存分片、收齐后拼接教训任何 SendRemoteEvent 都要考虑消息体大小,引擎不会帮你报错
BUG-2: 客户端启动黑屏(体验缺陷)项内容现象客户端启动后纯黑屏数秒根因App.Init() 初始化了 UI 系统但没有渲染任何内容,App.Build() 要等 StateUpdate 到达才执行修复新增 App.ShowLoading(),在 App.Init() 后立即调用,显示"正在连接服务器…"占位画面教训多人游戏客户端必须有加载占位 UI,不能依赖服务端响应速度
BUG-3: 布局属性污染(连锁 Bug)项内容现象修复黑屏后,正式 UI 全部居中错位根因ShowLoading() 创建 uiRoot_ 时设置了 justifyContent="center" / alignItems="center",Rebuild() 复用同一个 uiRoot_ 时只更新了 backgroundColor,布局属性残留修复Rebuild() 中 SetStyle 显式重置 flexDirection/justifyContent/alignItems/gap教训复用 UI 根节点时,必须重置所有布局属性,不能只改颜色就以为干净了
4