Go游戏服务器开发的一些思考(十四):IO游戏同步(二)
来源:互联网 发布:过山车是谁发明的 知乎 编辑:程序博客网 时间:2024/05/16 18:23
概要
在本系列的11章中,介绍了IO游戏同步。本文介绍下,在此框架下的移动同步
移动同步类型
总结市面上常见的同步方法,可以大致归类为如下几种:
这里主要介绍第4种同步类型: 移动算法在服务端为主,客户端做追随的同步方式
这种同步房间优点在于:
- 逻辑简单
- 自带预测功能,命中率高
- 不错的同步效果
这种同步方法总体来说,“经济适用型”。即通过简单编码即可获得尚可的移动同步效果。
这种同步的缺点,等介绍了其运作原理后,再做总结
同步过程分析
如图,表现了一个300ms的直线移动,从300ms开始,移动状态发生改变(如停止、改变方向、改变速度)。所有的移动过程,都是上述这个过程的叠加、重复
根据十一章中的同步框架,服务器100ms给客户端同步一次位置信息
这里分析下该同步过程:
- 客户端发送第一个移动包到收到的第一条移动信息。会有一个小等于100ms的延迟 (不同步点1)
- 蓝色条为完全同步服务器状态
- 绿色条则是根据当前的速度预测服务器状态(图中只画了2条绿色条。这里假设有N条绿色条来做分析)
- N-1条绿色条是完全同步服务器状态的
- 第N条绿色条会存在不同步情况。不同步的时间为 0-100ms内(不同步点2)
- 红色条2为开始矫正过程。(不同步点3)(根据计算的矫正速度快速逼近正确的目标点)
以上是从时序上分析,下面来看下实际画面效果:
- 移动启动时略有滞后,手感上体验可能是比较“重”
- 停止时略超前被纠正,手感上体验可能是有点刹不住(快速的被矫正,画面可能会有晃动一下)
- 转弯、加速时,由于后续有在继续移动中(被矫正的速度向量平滑过渡了),一般是体验不到不同步的
网络波动情况
这里服务器定时 100ms发送 的框架下,本身自带了一定的抗网络波动的能力。
从十一章中,分析可以得出,100ms的定时发送,一般足以应对 家庭网络、WIFI、4G。
总结
从上分析也可以看出,本移动同步缺点在移动启动和结束时,但是在网络不错的环境下,一般是看不出不同的情况的
如本人试过在上海连接北京机柜的服务器。在wifi状态下,是感知不到有不同步的情况
阅读全文
1 0
- Go游戏服务器开发的一些思考(十四):IO游戏同步(二)
- Go游戏服务器开发的一些思考(十七):IO游戏同步(三)
- Go游戏服务器开发的一些思考(十一):IO游戏同步
- Go游戏服务器开发的一些思考(二十四):命令行库封装技巧
- Go游戏服务器开发的一些思考(十六):IO游戏服务器架构
- Go游戏服务器开发的一些思考(二十一):Go语言的两处脑残设定
- Go游戏服务器开发的一些思考(二十三):Go语言Log库封装技巧
- Go游戏服务器开发的一些思考(二十六):Go Redis ORM库
- Go游戏服务器开发的一些思考(七):Redis
- Go游戏服务器开发的一些思考(二十五):Redis的Docker Swarm部署
- Go游戏服务器开发的一些思考(二):综合考察(上)
- Go游戏服务器开发的一些思考(二十):Docker Swarm部署Etcd示例
- Go游戏服务器开发的一些思考(二十二):Godep包管理介绍
- Go游戏服务器开发的一些思考(九):Docker桥接网络及固定IP (二)
- Go游戏服务器开发的一些思考(十三):behavior3go的一些坑(备忘)
- Go游戏服务器开发的一些思考(十九):服务器架构之服务发现
- Go游戏服务器开发的一些思考(五):goroutine看似美好的陷阱
- Go游戏服务器开发的一些思考(三):综合考察(中)
- 队列的学习
- Java内部类详解
- BOM知识整理
- Qt可拖动窗口的实现
- python 本周,上周,本月,上月,本季,上季,今年, 去年
- Go游戏服务器开发的一些思考(十四):IO游戏同步(二)
- cxf+mybaties+spring
- Mybatis或iBatis的XML文件特殊字符
- 云服务已经成为一种趋势
- Git多人合作操作处理
- Java9新特性之——接口中的私有方法
- Palindrome Number
- Java实现基于SMTP发送邮件的工具类
- 羽化