腾讯云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)
}
})
数据同步特性
- 实时性:支持毫秒级的数据变更推送
- 查询条件支持:支持
where、orderBy、limit等查询条件 - 变更类型识别:能够区分
add、update、remove等不同操作类型 - 权限控制:集合的读权限设置同样适用于实时推送
云存储与云函数
- 云存储:提供文件的存储管理,天然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架构,大幅降低游戏开发门槛和运营成本。