不同玩家“发送”流言内容即时存入云端

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