数据同步是指使用某种方式让同在一局游戏中的多个客户端保持游戏进程同步。
当你在游戏过程中 断开网络连接,如果游戏人物反复重复断网之前的动作,那毫无疑问就是帧同步。
如果断网后,人物执行完当前动作就只是在执行默认动作,那这个一定是状态同步。
如果断网重连时,需要动作预读的,就是帧同步。
单机游戏,全都是状态同步。
当然还有更明显的区分方法:
传统冒险类网络游戏,几乎都是状态同步。游戏整体逻辑处理由服务器群组成。
竞技类网络游戏,几乎都是帧同步。因为竞技类游戏需要更高速的数据同步。
比较流行的数据同步方式主要分为以下三种:状态同步、帧同步、混合同步
状态同步的流程是,由主机或服务器进行游戏逻辑运算。所有的客户端发送【操作指令】数据到主机或服务端,由主机或服务器处理过逻辑运算后,将场景中相应的物体状态数据,下发到每个客户端,完成同步。
其实在单机游戏中,就已经遍布状态同步的功能实现。单机游戏中的存档功能,就是一种状态的快照保存。
【图】
【优点】
【缺点】
4. 开发复杂度较大。由于需要匹配对象的所有参数,所以数据规范化十分重要。
5. 由于每个对象都有大量的自有参数,所以传输数据量也非常庞大,相应的也会影响网络流畅度。
6. 涉及到动作动画等操作,需要修改为量化操作。开发比较复杂。
7. 游戏的核心逻辑计算都在服务器运行,所以服务端压力比较大
帧同步的流程是,客户端发送操作指令到服务器,服务器负责验证操作和帧序列,然后将在指定帧内发生的用户操作指令发送给所有的客户端,战斗逻辑运算在每个客户端执行。
【图】
【优点】
这两种方式组合起来就能实现更强大的同步系统
正常同步时使用帧同步,当掉线、存档、回滚、或重播、速播的时候,使用状态同步。
本文地址:https://blog.csdn.net/lengyoumo/article/details/107014205
如对本文有疑问, 点击进行留言回复!!
两种方法 更改jupyter notebook的打开路径/默认工作路径
RobotFramework接口自动化-全局变量解决保持登录问题
mysql中如何实现 row_number分组求topN的功能
SQLSERVER中RANK OVER(PARTITION BY)的用法
网友评论