TCB和MGOBE在Cocos Creator中如何实现数据持久化和同步

腾讯云TCB(云开发)和MGOBE(小游戏联机对战引擎)在Cocos Creator游戏开发中提供了不同的数据持久化和同步机制,各有其适用场景和优势。

TCB(云开发)数据持久化机制

云数据库实时推送

TCB的云数据库支持实时数据推送能力,开发者可以通过watch方法监听数据库变更。当数据库更新导致查询结果发生变化时,客户端会收到更新事件,包含变更内容和更新后的查询结果快照。 实现方式:

const db = wx.cloud.database()
const watcher = db.collection('todos')
  .where({ team: 'our dev team' })
  .watch({
    onChange: function(snapshot) {
      console.log('数据变更事件', snapshot.docChanges)
      console.log('更新后的查询结果', snapshot.docs)
    },
    onError: function(err) {
      console.error('监听错误', err)
    }
  })

数据同步特性

  • 实时性:支持毫秒级的数据变更推送
  • 查询条件支持:支持whereorderBylimit等查询条件
  • 变更类型识别:能够区分addupdateremove等不同操作类型
  • 权限控制:集合的读权限设置同样适用于实时推送

云存储与云函数

  • 云存储:提供文件的存储管理,天然CDN加速,支持任意数量和形式的非结构化数据存储
  • 云函数:代码云端管理,无需管理服务器,自动扩缩容,安全高效

MGOBE数据同步机制

帧同步与状态同步

MGOBE支持两种主要的同步方式: 1. 帧同步

  • 各客户端实时上传操作指令集
  • 服务端保存操作指令集并在下一帧广播给所有客户端
  • 客户端收到指令集后按帧序执行操作
  • 适用于对实时性要求很高的网络游戏

2. 状态同步

  • 客户端上传操作到服务端
  • 服务端计算游戏行为结果,包括技能逻辑和战斗计算
  • 服务端以广播方式下发游戏状态
  • 客户端收到状态后更新本地动作状态、Buff状态、位置等

实时服务器交互

MGOBE提供实时服务器框架,开发者可以在实时服务器中编写自定义服务逻辑:

// 客户端发送消息到实时服务器
MGOBE.sendToGameSvr(data, callback)

// 接收实时服务器广播
MGOBE.onRecvFromGameSvr = function(event) {
  // 处理服务器下发的游戏状态
}

房间状态管理

MGOBE通过房间管理实现玩家状态同步:

  • 玩家进入房间后,房间状态变更会同步给所有客户端
  • 支持玩家进房、退房、掉线等事件的实时广播
  • 提供房间属性修改、玩家状态变更等管理接口

技术架构对比

特性TCB(云开发)MGOBE(联机对战引擎)
同步方式数据库实时推送帧同步/状态同步
实时性毫秒级毫秒级,支持低延迟
适用场景轻量级游戏、单机游戏多人实时对战游戏
开发复杂度低,Serverless架构中等,需要处理同步逻辑
成本模式按量付费按量计费+套餐付费

最佳实践

TCB适用场景

  • 聊天/即时通信:小游戏内聊天、大厅广播、区服广播
  • 多人小游戏:使用状态同步的回合制游戏
  • 协作工具:在线协作文档、团队任务管理
  • 实时应用状态同步:信息流、实时通知等

MGOBE适用场景

  • 实时对战游戏:MOBA、FPS、休闲对战等
  • 回合制游戏:棋牌、策略类游戏
  • 多人交互游戏:需要实时通信的多人游戏

组合使用

在实际项目中,可以组合使用TCB和MGOBE

  • 使用TCB进行数据持久化和用户信息管理
  • 使用MGOBE处理实时对战逻辑和状态同步
  • 通过云函数实现两者之间的数据交互

这种架构能够实现轻后端、免运维、代码自动部署的Serverless架构,大幅降低游戏开发门槛和运营成本。