【华为联机对战服务】客户端退出重连或中途进入游戏,新玩家如何补帧?
2023-09-11 14:20:22 时间
问题背景
使用帧同步实现多人联机游戏,补帧是一个绕不开的话题。常规的弱网补帧,SDK已经可以实现自动补帧,游戏可以不用关心。对于客户端长时间关闭后重新进入房间或者游戏中途有玩家加入的场景,新加入玩家联机对战SDK默认是从游戏第一帧数据补帧,而联机对战服务器不会缓存所有的补帧数据通常是缓存5分钟历史帧数据,这时候单纯依赖SDK自动补帧就会补帧失败了。如何解决这个问题呢,这里提供一种思路。
解决方案
游戏中指定房主或者房间内某个玩家,定时保存当前游戏需要同步的数据状态(比如每分钟刷新一次,刷新周期至少要小于五分钟),并记录当前帧id,然后将该数据通过一定手段同步给房间内其他玩家(比如通过修改房间属性,将其保存在房间属性中),当新玩家加入房间后可以从room实例中获取到房间属性,然后将其中记录的上一次房间状态数据进行解析,获取状态数据和帧id数据。
这时候只要以房间状态数据为基础,辅之以从帧id+1往后开始补帧就可以实现房间数据的同步了。
如何指定从某个id开始补帧呢?两种场景:
-
已启用SDK自动补帧场景,调用SDK提供的重置补帧起始id接口。
-
已关闭SDK自动补帧场景,调用SDK提供的手动补帧接口。
搞定!
官方资料:华为联机对战服务
相关文章
- POJ3322滚箱子游戏(不错)
- Html5游戏开发开始前的一些数学基础
- Unity制作游戏中的场景
- 《Android游戏开发详解》一2.7 构建一个简单的计数程序
- 《游戏大师Chris Crawford谈互动叙事》一9.1 文字冒险游戏
- 《Python和Pygame游戏开发指南》——1.7 安装Pygame
- 《游戏编程模式》一第7章 状态模式
- 《Python和Pygame游戏开发指南》——2.7 像素坐标
- 《游戏编程模式》一7.11 现在知道它们有多有用了吧
- 《Android游戏开发详解》一2.6 构建一个简单的计算器程序
- 国外创业者分享之一个iOS游戏赚了多少钱?普通 iOS 应用的收入能否养活自己
- 开发一个Canvas小游戏 实现一个游戏“引擎”
- 手把手讲解超详细python入门游戏项目‘打外星飞船’(三)
- 小学生python游戏编程arcade----是否全屏显示
- 【bzoj4881】[Lydsy2017年5月月赛]线段游戏 树状数组+STL-set