不同玩家“发送”流言内容即时存入云端
5 小时前综合
我试着在分享链接测试留言板流言,重进分享链接测试发现流言没了,有没有办法保存其他玩家的流言,点击“发送”流言内容可以即时存入云端?核心规则:游戏体验不会改变 —— 不需要匹配、不需要房间
嗒:
当前问题:留言数据存在内存中,gameSaveMap_() 尝试写入 clientCloud,但 clientCloud 是按用户隔离的——每个玩家只能看到自己的数据,其他玩家的留言互不可见。要实现跨玩家共享留言,需要启用多人模式:现状需要改为multiplayer.enabled = falsemultiplayer.enabled = true + persistent_world无服务端脚本新增服务端脚本管理共享留言clientCloud(按用户隔离)serverCloud.list(所有玩家共享)游戏体验不会改变 —— 不需要匹配、不需要房间,只是在后台启动一个常驻服务器来存储共享数据(类似 Roblox 模式)。实现步骤:
- 开启 persistent_world 多人模式
- 新增服务端脚本,用 serverCloud.list 存储留言
- 客户端通过 RemoteEvent 发送/接收留言
- 修改现有的"壁上题辞"弹窗,接入云端数据
计划文件已写入。方案要点:
- 架构: background_match 静默连接,游戏立即加载,服务器后台就绪后同步留言
- 存储: serverCloud.list 用 uid=0 作公共数据池,按 key="brick_{id}" 分组,每条 list item 记录一次交互(题壁/评论/表情/回复)
- Server 聚合: 将原始 list items 折叠为完整的 brick 留言结构,发送给客户端
- Client 模块: 提供 PostInscription/PostComment/PostReaction 等 API,main.lua 的留言 UI 直接调用;离线时缓存到队列,ServerReady 后 flush
- 乐观更新: 操作时同步更新本地数据,UI 即时反馈,不等服务器响应
- 可靠性: 失败与空数据区分、加载失败锁写、离线队列去重
修改 1: 在文件头部添加 WallClient require,以及 Start() 中添加服务端分流。
修改 2: 修改 Start() 函数,添加服务端分流和客户端 WallClient 初始化。
修改 3: 修改 showBrickWriteModal 中的"落笔"逻辑,对接 WallClient.PostInscription。
修改 4: 修改 showBrickViewModal 中的 saveAndDirty 函数和各交互按钮,对接 WallClient API。先修改点赞按钮。
以下是本次实现的完整总结:
壁上题辞云端持久化 — 实现完成架构采用 background_match 模式 — 游戏立即加载,服务器在后台静默连接,体验与单机完全一致。新增文件文件职责scripts/network/Shared.lua7 个 RemoteEvent 事件名定义 + 注册函数scripts/network/Server.lua服务端:serverCloud.list CRUD、聚合、全量同步、增量广播scripts/network/Client.lua客户端:API 封装、离线队列、乐观更新、断线重连刷队列main.lua 修改点(8 处)
- Start() 分流 — IsServerMode() → Server.Start(),IsNetworkMode() → Client.Init()
- 题壁按钮 — PostInscription()
- 表情计数条 — PostReaction()
- 评论点赞 — PostCommentLike()
- 评论踩 — PostCommentDislike()
- 回复发送 — PostReply()
- 点赞按钮 — PostLike()
- 评论发送 — PostComment()
- setupGameUI — SetOnSync + SetOnBrickUpdate 回调,将云端数据合并到本地地图砖块


