【面试必读(编程基础)】网络游戏同步方式(帧同步和状态同步)

原创 2017年06月23日 21:10:23

在做网络游戏的时候首先要做的是选择一种同步方式来使用,网上的文章都是说帧同步与状态同步的选择,但是又经常讲的模糊不清,我大概整理了一下,并且有一种我们现在项目用的网络同步方式


状态同步

状态同步就有好几个说法,说是同步状态,同步操作等,又找不到一遍文章能清楚的讲一遍什么是状态同步。

所以大概总结一下就是,状态同步是通过每个客户端发送自己的操作给服务器,这时客户端不进行任何动作,服务器统一计算后并把结果同步个每一个客户端。

这里要点就是,同步操作,服务器结算结果。

这里推荐两篇文章

http://www.cnblogs.com/sevenyuan/p/5283265.html

https://www.zhihu.com/question/36258781

这里讲了这两种同步方式的区别,但是依然没有很清楚。状态同步也找不到更好的文章,如果你有的话也请在评论区分享一下一起学习。


帧同步

帧同步是在关键帧的时候同步操作给服务器,服务器转发操作给每个客户端。客户端之间要接受到关键帧才可以进行操作。

帧同步里面有一个关键技术就锁帧,也就是如果没有收到广播的关键帧不能进行下一步操作。大家静止不动。

而现在的游戏会有一个聪明一点的方法叫做乐观帧锁定

乐观帧锁定通过定时发送关键帧的方法,不锁定任何客户端,服务器一定时间间隔就发包给每个客户端,包里可能是空包也有可能是你自己活着别人的操作。而客户端就通过定时或者每当操作就发包的形式告诉服务器自己的操作。

但不论是什么形式的帧同步都是客户端收到其他玩家的操作后自己模拟行为。所以这个就需要大家如果是随机的时候要保证一致,也就是有一样的随机种子,而且在每个客户端中无法保证一定一致,也就是这个原因帧同步一般会用着竞技类游戏,游戏都是一盘一盘的来,每盘开始就给大家统一的第一帧和随机种子,保证这个游戏在每个客户端中基本一致

其实在网速好的时候这些都不是问题,基本上不同客户端上的表现基本一致。

而当网速不一致时,当你选用乐观帧同步的话就可以保障网速好的不会被网速差的玩家卡住


帧同步有好多好文章,这里也推荐两篇

http://mp.weixin.qq.com/s?__biz=MzA5ODExMTkwMA==&mid=2650255562&idx=1&sn=a457e6dbf7bdd99d1e75dbf7e500dd44&scene=0#wechat_redirect?ref=myread

http://www.skywind.me/blog/archives/131

这两篇是已经讲的非常清楚,非常好的两篇文章


所以能看到,其实在手游时代,状态同步基本是不可取的,服务器压力太大,对网络要求太高。

而帧同步的话也会选择乐观帧同步,保证在网速好坏不同的情况下还能一起玩,并且网速好的玩家不会受干扰。


自己游戏的同步方式

我们是一个mmoarpg手游,也就是动作类网游。

由于我们的游戏类型,其实不需要真的非常同步,并且可能有很多个玩家同屏,首先抛弃状态同步

接着我们也不是竞技类游戏,所以基本上也不需要帧同步。

所以我们同步也就是客户端发送请求给服务器,服务器验证一下,如果出入太大强行拉回,不然也不返回给自己客户端,只同步位置给其他客户端。

技能上就是客户端请求使用技能,在技能中的打击帧告诉服务器这个人我能不能伤害,服务器判断并同步给大家这个伤害。

所以基本上算不上什么同步方式。


但是如果我们之后需要做更为严肃的pvp玩法,则需要帧同步来进行操作。这个可能会在后面补充


这里面还有很多可以一起讨论的地方,也希望大家评论一下一起讨论


还有一篇王者荣耀的同步技术文章

http://mp.weixin.qq.com/s/agXeHpN2vkgl5jKsLvi2Ug

版权声明:本文为博主原创文章,未经博主允许不得转载。

帧同步游戏的设计

从单机游戏到网络游戏 单机游戏,这里指即时的动作类游戏,玩家输入操作,通过终端运算而进行的游戏。加入了多人网络以后,玩家的输入不仅仅只是在本地的终端上运算,还会通过网络同步,使多人可以在同一个虚拟环...
  • ad88282284
  • ad88282284
  • 2016年10月19日 22:20
  • 5265

帧同步和状态同步

实时游戏发展迅猛,同步技术也逐渐成为解决方案的核心之一。 本文简单讨论了帧同步和状态同步。...
  • David_Dai_1108
  • David_Dai_1108
  • 2017年06月18日 20:03
  • 6379

状态同步与帧同步

http://www.cnblogs.com/sevenyuan/p/5283265.html 状态同步与帧同步 转自:http://www.gameres.com/489361.html ...
  • caoshulin1989
  • caoshulin1989
  • 2017年01月24日 14:37
  • 5121

手游帧同步的研究

网络游戏的同步可以做的很简单,也可以做的很复杂。简单来说就是通过Http或者Socket来跟服务器同步数据。而如果往复杂了说,可以有p2p、帧同步、航位预测等等高级课题可以研究。         因...
  • langresser
  • langresser
  • 2015年07月04日 17:18
  • 11032

帧同步和状态同步(二)案例分析

转自:http://www.gameres.com/489361.html腾讯一下出了两款MOBA游戏,全民超神,王者荣耀,玩了一下,效果不错,就分析了一下它底层的一些技术,发现一个是采用的状态同步,...
  • pbymw8iwm
  • pbymw8iwm
  • 2017年11月01日 09:29
  • 1183

状态同步和桢同步的区别

对于联网游戏来讲,同步的方式主要分为两种,状态同步、帧同步。 状态同步: 顾名思义,是指的将其他玩家的状态行为同步的方式,一帮情况下AI逻辑,技能逻辑,战斗计算都由服务器运算,只是将运算的结果同步给客...
  • qiaoquan3
  • qiaoquan3
  • 2017年07月21日 11:40
  • 1547

动作手游实时PVP帧同步方案(客户端)

转自:http://gad.qq.com/article/detail/7171195
  • u010377179
  • u010377179
  • 2016年10月26日 08:52
  • 3822

游戏中帧同步的实现

简介帧同步是一种前后端数据同步的方式,一般应用于对实时性要求很高的网络游戏,常见于dota类和RTS类游戏,如端游中的dota,dota2,梦三国等;手游中的王者荣耀,自由之战等。过程帧同步的过程可以...
  • xufeng0991
  • xufeng0991
  • 2016年05月10日 15:45
  • 10473

帧锁定同步算法

帧锁定同步算法算法概念 该算法普遍要求网速RTT要在100ms以内,一般人数不超过8人,在这样的情况下,可以像单机游戏一样编写网络游戏。所有客户端任意时刻逻辑都是统一的,缺点是一个人卡机,所有人等待。...
  • skywind
  • skywind
  • 2011年02月11日 17:53
  • 9557

网络游戏网络同步方案的选择

随着电子竞技的快速发展和移动互联网的迅速崛起,手游的市场份额月来越高,不但各种原创的手游被开发者开发出来,甚至许多流行的端游也被开发者移植到手机上来,如今手游的类型多种多样,从单机到rpg,slg策略...
  • D_Guco
  • D_Guco
  • 2016年11月17日 21:07
  • 3955
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【面试必读(编程基础)】网络游戏同步方式(帧同步和状态同步)
举报原因:
原因补充:

(最多只允许输入30个字)