精华内容
下载资源
问答
  • 帧同步原理

    千次阅读 2019-01-21 00:40:44
    常见游戏同步方案1、状态同步2、帧同步二、帧同步技术基础概念1.基础概念1.MOBA类游戏基本服务器架构2.通信方式 一.常见游戏同步方案 同步问题的本质是一致性的问题,在同一局多人游戏的过程中,玩家A看到玩家B的...

    一.常见游戏同步方案

    同步问题的本质是一致性的问题,在同一局多人游戏的过程中,玩家A看到玩家B的状态,应该跟玩家B自身看到自己的状态相一致。延迟是造成不一致的本质原因,假设理想情况下双方的网络时延都为0,那两者应该是同步的,但是在现实情况中,往往是不可能的,本文讨论的同步机制,就是为了解决一致性问题而产生的,对于不同的游戏类型,不同的团队技术积累,可以根据自身情况采取不同的同步机制技术方案。

    1、状态同步


    状态同步主要是指客户端发送游戏动作到服务器,服务器收到后对游戏行为结果进行计算,
    然后通过广播下发游戏各种状态到客户端,客户端受到状态信息后进行UI层展示或处理。
    这种方式类似于核心逻辑计算都在服务器端进行,客户端主要负责上传操作动作等请求数据,
    一般回合制游戏主要采用这种方式

    CA SERVER CB 发送攻击B 计算操作结果等数 发送被A攻击打击动作 更新B新的血量为100 更新B新的血量为100 CA SERVER CB 状态同步基础模型

    2、帧同步


    客户端发送游戏动作到服务器,服务器广播转发所有客户端的动作(或者客户端直接通过P2P技术发送),客户端根据收到的所有游戏动作来做游戏运算和显示。这种做法等于客户端之间互相远程控制其他客户端上的游戏软件。早期的IPX网络游戏,如红色警戒、帝国时代、星际争霸,甚至大量的支持网络连线双打的游戏机模拟器,都是这种方式

    CSA Relay Server CSB 逻辑帧N开始 发送操作A1 发送操作B1 逻辑帧N结束 对逻辑帧N打包为P 发送P到CSA 发送P到CSB 根据P的信息进行 逻辑计算UI展示 根据P的信息进行 逻辑计算UI展示 推进时间轴 CSA Relay Server CSB 帧同步基础模型

    二、帧同步技术基础概念


    1.基础概念

    同的输入+相同的时机 = 相同的显示
    意思是如果我们的游戏,接受了来自网络的多个客户端的操作,如果这些操作在各个客户端是一样的,那么多个客户端的显示也就一样了,这就带来了“同步”的效果。所以在这种情况下,各个客户端的运算要绝对一致,不能依赖诸如本地时间、本地随机数等等“输入”,而要一切以网络来的操作数据为主

    简图

    1.MOBA类游戏基本服务器架构

    一般的方式是玩家先登陆大厅服务器,认证成功后选择游戏组队功能会通过Match Server进行进行玩家匹配,匹配成功后单独建立一个游戏房间服务器进行对战。

    在这里插入图片描述

    2.通信方式

    通信方式主要有http 和socket两种方式,但http底层也是采用socket实现,区别是http每次通信完毕都会断开链接,这种对于频繁交互的应用效率较低,所以对于网游客户端一般http主要用于非高频低实时类通信,如登陆请求,局外物品购买,签到等,所以游戏实时性要求较高的高频交互部分都是采用socket方式通信。

    socket通信又分为两种 TCP - UDP具体采用那种socket类型需要结合具体游戏类型来定,以下为两种协议的对比。

    对比项TCPUDP
    连接有连接无连接
    可靠性可靠、有序不可靠,无序
    数据包自动拆包手动拆包
    流量流量控制手动
    速度
    控制简单复杂

    通过上图可以发现,对于socket 我们想做的事情tcp都帮我们处理了,我们需要做的就是建立连接,然后调用API函数收发数据既可,如果采用UDP的话需要我们自己处理这些东西。简单的说就是自己对UDP进行处理模拟TCP,看到这里大家可能以为一定会采用TCP来进行通信,事实是基于游戏场景不同使用的通信协议也可能会不一样,例如王者荣耀是采用UDP来进行通信,腾讯的多数长连接手游也主要是采用UDP.

    展开全文
  • 帧同步 状态同步

    千次阅读 2019-01-12 22:28:10
    不过这个还是无法解决帧同步的问题,因为严格的帧同步,是要等到所有玩家都输入之后,再去通知广播client更新,如果A服务器一直没有输入同步过来,大家是要等着的,那么如何解决这个问题? 采用“定时不等待”的...

    转载:https://my.oschina.net/u/1859679/blog/1137723

    农药自从上线以来,依靠着强大的产品力以及腾讯的运营能力,在游戏市场上表现可谓是风生水起,根据第三方的调研数据显示,《王者荣耀》渗透率达到22.3%,用户规模达到2.01亿人,每日的日活跃用户(DAU)均值为5412.8万人。 如此可观的数据,令人十分钦佩。

    当然了,作为技术人,更愿意从技术上了解去一些王者荣耀的实现原理和架构方式,从中找到新的知识领域,扩展自己的知识边界,丰富自己的专业技能。借助这个游戏,这一篇我们来聊一聊王者荣耀的技术实现以及同步方式,更多的从MOBA(多人在线战术竞争游戏)方向来解析推理王者的实现方案,如若有分析的不尽的方向,欢迎一起探讨改进。以下是主要讲解的几个重点:

    1. 服务器架构
    2. 通信方式
    3. 同步方案
    4. 技能同步
    5. 断线重连

     

    一、服务器架构

    不难发现,王者荣耀的服务器采用房间模式,每个玩家登陆以后,然后进入大厅,进行匹配游戏。匹配完成之后,把一起对战的玩家放到一个房间内进行对战。

    房间类玩法和MMORPG有很大的不同,在于其在线广播单元的不确定性和广播数量很小,而且需要匹配一台房间服务器让少数人进入一个服务器。

    这一类游戏最重要的是其“游戏大厅”的承载量,每个“游戏房间”受逻辑所限,需要维持和广播的玩家数据是有限的,但是“游戏大厅”需要维持相当高的在线用户数,所以一般来说,这种游戏还是需要做“分服”的。而“游戏大厅”里面最有挑战性的任务,就是“自动匹配”玩家进入一个“游戏房间”,这需要对所有在线玩家做搜索和过滤,以及为了更好的体验,会对玩家进行分地区进行匹配,以方便获得更快速的同步。

    一般的方式是玩家先登录“大厅服务器”,然后选择组队游戏的功能,服务器会通知参与的所有游戏客户端,新开一条连接到房间服务器上,这样所有参与的用户就能在房间服务器里进行游戏交互了。

     

    二、通信方式

    说到通信方式,一般会有http和socket 两种方式,但http底层也是采用socket,只是每次通信完成以后都会断开,这种方式对于需要频繁交互的双方来说,显得效率太低了,所以一般实时要求高的游戏都是采用socket方式来通信。

    可是sokect通信,又分为两种:TCP vs UDP,具体是采用那种socket类型,需要具体来看游戏游戏类型。以下是两种类型的优劣:

    从上面的对比中,我们可以会发现,关于socket,我们想做的事情,tcp都帮我们做了,我们只需要建立链接,然后像读写文件一样读写就可以了。而udp需要我们自己设计一切。看到这一切,你可能第一感觉就是采用tcp而非udp,那么真实情况是如此么?基于游戏的业务以及场景不同,我可以明确的告诉你,王者荣耀是采用udp的,包括腾讯多数长链接手游都是采用udp,这是为何?

    1、tcp保证数据可靠性是有代价的

    tcp能够保证数据包的可靠性和有序,这一切都帮你封装好了。TCP发送一个数据包,等待一段时间,直到检测到数据包丢失了,如果没有接收到它的ACK,接下来就重新发送丢失的数据包到目标计算机。重复的数据包将被丢弃在接收端,乱序的数据包将被重新排序。以此来保证数据包的可靠性和有序性。

    但为了保证可靠和有序,就要保证TCP无论什么情况,只要数据包出错,就必须等待数据包的重发。这是什么意思呐,就是说,即使最新的数据已经到达,但还是不能访问这些数据包,新到的数据会被放在一个队列中,需要等待丢失的包重新发过来之后,所有数据没有丢失才可以访问。

    如此,如果遇到网络环境太差或者不稳定,比如说国内的移动网络,或者是遭遇到了网络阻塞,出现一个数据包丢失,所有事情都需要停下来等待这个数据包重发。客户端会出现等待接收数据,玩家操作会出现卡顿以及响应不及时的现象。

    2、udp的可靠性—DIY手动组装

    从上面我们可以知道udp主要在可靠性上主要是不能保证数据包的顺序,比如第100个收到的数据包并不一定是第100个发出的数据包,同时也无法保证不丢包,期间有一个包丢失,udp本是也不会去校检。如果这两个问题解决了,udp的大部分可靠性问题也就解决了。

    具体的方案我们这一篇就不在细说,大体上是如此来解决:

    1、为每个数据包增加序列号,每发一次包,增加本地序号。

    2、每个数据包增加一段位域,用来容纳多个确认符。确认字符多少个,跟进应用的发包速率来觉得,速率越高,确认字符的数量也相应越多。

    3、每次收到包,把收到的包上序列号变为确认字符,发送包的时候带上这些确认字符。

    4、如果从确认字符里面发现某个数据包有丢失,把它留给应用程序来编写一个包含丢失数据的新的数据包,必要的话,这个包还会用一个新的序列号发送。

    5、针对多次收到同一包的时候可以放弃它

    三、同步方案

    游戏中常见的同步方案,有状态同步和帧同步,一般大型的MMOARPG都是采用的是状态同步,比如魔兽世界,状态同步采用C/S架构,所有的状态由服务器来控制,安全性比较高,但是流量比较大。帧同步采用的是囚徒模式,所有c端强制采用一个逻辑帧率,从而保证输出一致,其特点是流量小,安全性比较差。

    王者荣耀采用的就是帧同步,那么具体帧同步是什么,如何实现的,我们从两个地方来分解:

    1、帧率

    什么是帧率,可能没有做过client同学并不是很清楚这个术语,我们从一个小李子来讲解一下。我记得小时候有一种小人书,快速翻看就可以看到漫画上的人物会动起来。如下面这种:

    超过1M上传不删了,我也无奈

     

    由于人类眼睛的特殊生理结构,如果所看画面之帧率高于每秒约10-12帧的时候,就会认为是连贯的, 此现象称之为视觉暂留。这也就是为什么电影胶片是一格一格拍摄出来,然后快速播放的,就像上图快速翻小人书一样。

    游戏中的所有动画也是采用这种方式来渲染,只不过帧率是有GPU来控制,你所看到的画面都是有都是有GPU一帧帧渲染的,比如30帧/s,你所看到的画面就比较流畅了。而帧率越高你所看到的越流畅。

    2、Lockstep—帧同步

    帧同步可以说是通过帧率延伸过来的,你可以把一个游戏看成一个巨大的状态机,所有的参与者都采用同一个逻辑帧率来不断的向前推进。

     

    我们看如下2个图:

     

    图中是A、B、C三个玩家的时间轴,这个时间轴不是电脑上的本地时间,而是A、B、C联机时定义的一个时间轴。虚线分隔出来时间片称为turn,可以理解成一帧。箭头表示该玩家将自己的操作指令广播给其他玩家。

    我们把一盘游戏看成一个大型的状态机,因为大家玩的是同一款的游戏,因此F是相同的,初始状态S0也是相同的。在第一个turn结束时,所有玩家都接收到了完全一样的输入I,注意这里的I不是一个值,而是包含了当前游戏中所有玩家的操作指令集合。t1时刻所有玩家的电脑自行计算结果。由于F、S0和I是固定的,所以每个玩家电脑上计算出的下一个状态S1一定是相同的。

    所以通过上面我们可以知道:

     

    1、我们把游戏的前进分为一帧帧,这里的帧和游戏的渲染帧率并不是一个,只是借鉴了帧的概念,自定义的帧,我们称为turn。游戏的过程就是每一个turn不断向前推进,每一个玩家的turn推进速度一致。

     

    2、每一帧只有当服务器集齐了所有玩家的操作指令,也就是输入确定了之后,才可以进行计算,进入下一个turn,否则就要等待最慢的玩家。之后再广播给所有的玩家。如此才能保证帧一致。

     

    3、Lockstep的游戏是严格按照turn向前推进的,如果有人延迟比较高,其他玩家必须等待该玩家跟上之后再继续计算,不存在某个玩家领先或落后其他玩家若干个turn的情况。使用Lockstep同步机制的游戏中,每个玩家的延迟都等于延迟最高的那个人。

     

    4、由于大家的turn一致,以及输入固定,所以每一步所有客户端的计算结果都一致的。

    我们来看看具体的执行流程:

     

    上图中我们可以明显看到,这种囚徒模式的帧同步,在第二帧的时候,因为玩家1有延迟,而导致第二帧的同步时间发生延迟,从而导致所有玩家都在等待,出现卡顿现象。

    四、乐观锁&断线重连

    囚徒模式的帧同步,有一个致命的缺陷就是,若联网的玩家有一个网速慢了,势必会影响其他玩家的体验,因为服务器要等待所有输入达到之后再同步到所有的c端。另外如果中途有人掉线了,游戏就会无法继续或者掉线玩家无法重连,因为在严格的帧同步的情况下,中途加入游戏是从技术上来讲是非常困难的。因为你重新进来之后,你的初始状态和大家不一致,而且你的状态信息都是丢失状态的,比如,你的等级,随机种子,角色的属性信息等。 比如玩过早期的冰封王座都知道,一旦掉线基本这局就废了,需要重开,至于为何没有卡顿的现象,因为那时都是解决方案都是采用局域网的方式,所以基本是没有延迟问题的。

    后期为了解决这个问题,如今包括王者荣耀,服务器会保存玩家当场游戏的游戏指令以及状态信息,在玩家断线重连的时候,能够恢复到断线前的状态。不过这个还是无法解决帧同步的问题,因为严格的帧同步,是要等到所有玩家都输入之后,再去通知广播client更新,如果A服务器一直没有输入同步过来,大家是要等着的,那么如何解决这个问题?

    采用“定时不等待”的乐观方式在每次Interval时钟发生时固定将操作广播给所有用户,不依赖具体每个玩家是否有操作更新。如此帧率的时钟在由服务器控制,当客户端有操作的时候及时的发送服务器,然后服务端每秒钟20-50次向所有客户端发送更新消息。如下图:

    上图中,我们看到服务器不会再等到搜集完所有用户输入再进行下一帧,而是按照固定频率来同步玩家的输入信息到每一个c端,如果有玩家网络延迟,服务器的帧步进是不会等待的,比如上图中,在第二帧的时候,玩家A的网速慢,那么他这个时候,会被网速快的玩家给秒了(其他游戏也差不多)。但是网速慢的玩家不会卡到快的玩家,只会感觉自己操作延迟而已。

    五、技能同步

    游戏中有很多是和概率相关的,比如说技能的伤害有一定概率的暴击伤害或者折光被击等。按照帧同步的话,基于相同的输入,每个玩家的client都是独立计算伤害的,那么如何保证所有电脑的暴击伤害一致那。这个时候就需要用到伪随机了。

    大部分编程语言内置库里的随机数都是利用线性同余发生器产生的,如果不指定随机种子(Random Seed),默认以当前系统时间戳作为随机种子。一旦指定了随机种子,那么产生的随机数序列就是确定的。就是说两台电脑采用相同的随机种子,第N次随机的结果是一致的。

    所以在游戏开始前,服务器为每个玩家分配一个随机种子,然后同步给client,如此每个client在计算每个角色的技能时候,就能保证伤害是一致的。这也是多数帧同步游戏采用的方案,包括王者荣耀。

    展开全文
  • 主要通过对帧同步的检出进行研究,设计了一种基于DSP Builder的帧同步检出模型,具体以常用的帧同步码组——巴克码为例,详细介绍了该模型的设计实现方法,通过软硬件测试验证,该检出模型切实可行。
  • 状态同步与帧同步

    千次阅读 2019-04-30 01:37:09
    腾讯一下出了两款MOBA游戏,全民超神,王者荣耀,...自从去年了解到即时游戏帧同步这门技术,我就一直关注使用这个技术的游戏,一直没有发现,虽然我们自己的游戏也是采用的帧同步,毕竟还没有上线,现在线上有帧同...

    转自:http://www.gameres.com/489361.html

    腾讯一下出了两款MOBA游戏,全民超神,王者荣耀,玩了一下,效果不错,就分析了一下它底层的一些技术,发现一个是采用的状态同步,TCP协议,另一个是采用的帧同步,UDP协议。自从去年了解到即时游戏帧同步这门技术,我就一直关注使用这个技术的游戏,一直没有发现,虽然我们自己的游戏也是采用的帧同步,毕竟还没有上线,现在线上有帧同步的游戏,效果还挺好,有点小激动。所以就写了这篇文章,分享出来大家一块研究。

    先说一些题外话,感慨一下,没兴趣的直接略过。

    做了这么多年游戏了,深深知道一个游戏的成功需要多方面的因素,不仅需要人和,有的时候也需要天时地利,但作为一个游戏开发者而言能决定就是人和,而这也是游戏能成功的基础,有一帮人能够全身心的投入去开发一款游戏,不断的打磨甚至调整方向,面对问题能够及时反馈,不断迭代,就像做一个互联网产品一样,在这个过程中团队里的所有人都能够互相信任,不厌其烦的对产品进行改动,每一次的信任来源不是为大家打鸡血画饼,而是实实在在的数据分析以及努力总结原因后的理性决策。如果以上能够坚持的话,先不说创新,最起码游戏可以做到某一品类的极致,我想在任何的市场环境下,只要这个品类还没死,总有你的一席之地,在我看来很多游戏死了,很多原因是做的还不到位,向当年抄COC的游戏很多,最后缺没有一款成功的,而截至到目前COC的利润还在不断上升,如果国内抄袭者真能做到COC的一样的体验,我想一定会有成功的。

    那又有人要说了,怎样才能做的比别人还好呢,这个问题确实比较复杂,我感觉首先一定要有合适的人,什么是合适的人呢,从3个方面考察:责任心积极性、学习能力、能力,我把能力放在最后是因为如果前面两个条件满足的情况下,这个人一定会变得有能力,然后就是需要有个高的要求,目标就是精品,这个不是光说说就行了,从策划设计,程序实现,美术都要向着最高的标准要求,要比市面上的都要优秀,绝对不会为了各种其他因素(时间点,实现复杂)有任何妥协。最后是需要有点耐心,合理安排计划时间,高效率完成,其实这点事最难的,团队里的人很多,游戏制作有的时候经常需要反复,经常就是初期很有激情,中期不断磨灭,到了后期(尤其是项目遇到困难时候)就比较松懈了,如果是没有耐心的人估计在一起继续工作都是问题了,还怎么谈之前的事情。团队是需要打磨的,如果你有一支这样的团队,那真的要好好的珍惜。

    好了,这是我对于游戏开发的一些感慨,还是回归正题吧,对于一个游戏来讲,战斗就是灵魂,如果战斗做不到极致,其他方面做的再好也是徒劳,这几年,也参与了很多游戏的开发,其中有很多游戏是从决策到死掉全程参与,深有感慨。从端游到页游 从页游再到手游 每一个新市场机会出现的时候,都是从闭着眼睛就能赚钱到大部分赚不到钱过度,对游戏的开发技术都要求也是越来越高,只不过每个市场到成熟的时间都被大大缩短了。对于战斗来讲很多都是策划脑补的跟实际做出来的完全不是一回事,很多原因都是战斗方案选型就是错误的。

    从程序角度来讲,我把战斗从两个维度分类:

    1、从操作方式上分为回合操作、即时操作。

    2、从交互方式上分为 离线战斗 联网战斗,这个地方需要说明一下,有些游戏虽然也能进攻别人,例如COC 但是因为战斗的时候,另外一个人是不可以操作的,类似于这样的战斗也可以称为离线战斗。

    基本上所有的战斗都是以上两种方式在某种程度的组合而已,例如梦幻西游可以认为是联网战斗、回合操作类型。

    最近比较火的全民超神,王者荣耀,属于 (联网战斗|离线战斗)即时操作类型。

    最新网易出的功夫熊猫 属于 (联网战斗|离线战斗)即时操作类型,相对于dota类的全民超神、王者荣耀,他对延迟要求的更高了。

    如果在立项初期,项目计划时候不确定游戏的操作类型,以及网络要求,做得后期要想调整的话,改动是致命的,假设按照之前时空猎人的方式实现的纯离线战斗及时游戏,最多也只能做做离线PVP,如果想增加联网PVP的功能的话,对于程序来讲几乎需要重写战斗。

    随着移动游戏市场越来越成熟,对于战斗的要求也在提高,原来做一款ARPG,只有单机玩法就足够了,不需要开发实时PVP,但是现在市面上的ARPG不仅可以联网PVP,甚至可以联网组队PVE了,所以我感觉如果现在再去做游戏的话,只是一个单机玩法,或者是离线PVP玩法已经远远不能满足现代玩家的口味了。

    我认为现在战斗系统需要满足一下几点。
    1、一定要有离线PVE玩法,或者离线PVP玩法,可以在让玩家在网络不好的时候消遣,节省流量。(全民超神、王者荣耀在5V5匹配时候都有一定几率匹配到离线战斗,这个时候是不耗流量的,其他人全是AI控制的)
    2、一定要有在线PVP,在线PVE,能够让玩家在网络比较好的时候,实时竞技。增加可玩性。
    3、战斗中,尽最大程度节省玩家的流量,例如全民超神这款游戏,一场30分钟的战斗基本上要消耗掉20M的流量,而且此类游戏大部分是玩的联网战斗,基本上在非wifi情况下没法玩。
    4、需要有战斗回放机制,可以让策划设计离线玩法的时候更自由,例如COC,战斗回放基本变成了它游戏的一部分。
    5、防作弊,如果有离线玩法的话,一定有机制对离线玩法的结果进行验证,要不然等你游戏真火了,你就知道错了。
    6、实现难度相对较低。

    对于联网游戏来讲,同步的方式主要分为两种,状态同步、帧同步。

    1、状态同步:顾名思义,是指的将其他玩家的状态行为同步的方式,一帮情况下AI逻辑,技能逻辑,战斗计算都由服务器运算,只是将运算的结果同步给客户端,客户端只需要接受服务器传过来的状态变化,然后更新自己本地的动作状态、Buff状态,位置等就可以了,但是为了给玩家好的体验,减少同步的数据量,客户端也会做很多的本地运算,减少服务器同步的频率以及数据量。

    2、 帧同步:RTS游戏常采用的一种同步技术 ,上一种状态同步方式数据量会随着需要同步的单位数量增长,对于RTS游戏来讲动不动就是几百个的单位可以被操作,如果这些都需要同步的话,数据量是不能被接受的,所以帧同步不同步状态,只同步操作,每个客户端接受到操作以后,通过运算可以达到一致的状态(通过随机种子保证所有客户端随机序列一致),这样的情况下就算单位再多,他的同步量也不会随之增加。

    下面我们从以上的5个方面对各自实现方式进行描述:
     


    总结一下:

    1、对于回合制战斗来讲,其实选用哪种方式实现不是特别重要了,因为本身实现难度不是很高,采用状态同步也能实现离线战斗验证。所以采用帧同步的必要性不是很大。
    2、对于单位比较多的RTS游戏一定是帧同步,对于COC来讲,他虽然是离线游戏,但是他在一样输入的情况下是能得到一样结果的,所以也可以认为他是用帧同步方式实现的战斗系统。
    3、对于对操作要求比较高的,例如MOBA类游戏有碰撞(玩家、怪物可以互相卡位)、物理逻辑,纯物理类即时可玩休闲游戏,帧同步实现起来比较顺畅,(有开源的Dphysics 2D物理系统可用 它是Determisti的)。
    4、对于战斗时大地图MMORPG的,一个地图内会有成千上百的玩家,不是小房间性质的游戏,只能使用状态同步,只同步自己视野的状态。    
    5、帧同步有个缺点,不能避免玩家采用作弊工具开图。

    参考资料:
    lockstep 帧同步
    RTS游戏
    determistic 的unity 物理引擎           
    lockstep framework
    乱斗西游技术分享

    相关阅读:再谈网游同步技术:实时动作游戏同步方式和传输协议选择

    展开全文
  • 帧同步和状态同步(二)案例分析

    千次阅读 2017-11-01 09:29:52
    转自:http://www.gameres.com/489361.html腾讯...自从去年了解到即时游戏帧同步这门技术,我就一直关注使用这个技术的游戏,一直没有发现,虽然我们自己的游戏也是采用的帧同步,毕竟还没有上线,现在线上有帧同步

    转自:http://www.gameres.com/489361.html

    腾讯一下出了两款MOBA游戏,全民超神,王者荣耀,玩了一下,效果不错,就分析了一下它底层的一些技术,发现一个是采用的状态同步,TCP协议,另一个是采用的帧同步,UDP协议。自从去年了解到即时游戏帧同步这门技术,我就一直关注使用这个技术的游戏,一直没有发现,虽然我们自己的游戏也是采用的帧同步,毕竟还没有上线,现在线上有帧同步的游戏,效果还挺好,有点小激动。所以就写了这篇文章,分享出来大家一块研究。

      先说一些题外话,感慨一下,没兴趣的直接略过。

      做了这么多年游戏了,深深知道一个游戏的成功需要多方面的因素,不仅需要人和,有的时候也需要天时地利,但作为一个游戏开发者而言能决定就是人和,而这也是游戏能成功的基础,有一帮人能够全身心的投入去开发一款游戏,不断的打磨甚至调整方向,面对问题能够及时反馈,不断迭代,就像做一个互联网产品一样,在这个过程中团队里的所有人都能够互相信任,不厌其烦的对产品进行改动,每一次的信任来源不是为大家打鸡血画饼,而是实实在在的数据分析以及努力总结原因后的理性决策。如果以上能够坚持的话,先不说创新,最起码游

    展开全文
  • 帧同步坦克大战移动系统

    千次阅读 2019-12-03 23:44:48
    但是,需要注意,只有房主才可以调用开始帧同步方法。因此,需要加一层判断。 然后,房间内的其他玩家需要监听开始帧同步的广播,接收到开始帧同步的消息之后,进入游戏场景。 game_scene:游戏主场景。(终于到...
  • 游戏后台状态同步与帧同步

    千次阅读 2017-11-11 23:19:12
    最近开始学习一下游戏后台的一些知识,一直很好奇多个玩家之间的数据是如何同步的,查了一下,目前使用的比较多的是状态同步和帧同步。状态同步同步的是游戏中的各种状态。一般的流程是客户端上传操作到服务器,...
  • 状态同步和帧同步

    2018-05-24 16:31:21
    帧同步:发送操作给服务端。服务端中转所有数据 通过随机因子保证每次得出结果一样 http://www.gameres.com/489361.html GameRes游资网授权发布 腾讯一下出了两款MOBA游戏,全民超神,王者荣耀,玩了一下,效果...
  • 串口通信同步方法(识别一数据的起始结束)  2012-07-08 23:12:10| 分类: 我的自学实践|举报|字号 订阅   引 言  串口通信是日前单片机和DSP等嵌入式系统...
  • 移动游戏 状态同步 帧同步

    千次阅读 2017-06-07 10:47:21
    腾讯一下出了两款MOBA游戏,全民超神,王者荣耀,玩了一下,...自从去年了解到即时游戏帧同步这门技术,我就一直关注使用这个技术的游戏,一直没有发现,虽然我们自己的游戏也是采用的帧同步,毕竟还没有上线,现
  • 同步的概念 同步技术是数字通信系统中非常重要的技术。一般来说数字通信系统要实现多种同步功能才能实现正确的数据通信任务。其技术目标是实现不同地域收发双方的同步通信互联,实现一致的信息数据交换,因此,通信...
  • 游戏里的帧同步机制

    千次阅读 2018-07-28 10:33:09
    在多人对战的游戏中,游戏的每一方客户端需要保持每一个时刻大家的数据是一致的,常见的同步方式分为帧同步和状态同步,帧同步服务器不需要知道游戏逻辑,只是将客户端的操作进行转发,然后客户端自己计算逻辑,状态...
  • 一般游戏网络同步分为帧同步和状态同步。对于这两种同步我看到网上很多人有不同的理解。       1、如果按字面意思理解,帧同步设置了一个同步帧,把逻辑层和表现层完全分离。可是状态...
  • 网络游戏,最重要的部分应该就是数据同步了。一个游戏的数据同步质量,直接影响这个网游的操作体验。...拿时下比较火爆的几个网游为例,数据同步方式大致分为以下几种: 操作同步。 信息同步。 3。 3 ...
  • 基于UDP的帧同步网络方案(基础)

    千次阅读 2019-10-20 01:19:32
    帧同步会高频次的上报和下发逻辑帧,所以网络方案非常重要,TCP协议的优势在于有序、可靠、有连接,但是由于较为保守的超时重传方案、过大的包头,会给帧同步带来比较高的延迟和较大的数据流量,而UDP是较为精简的...
  • 联网技术中的帧同步了解一下

    千次阅读 2018-04-19 20:42:40
    众所周知 ,解决网络延迟问题,目前主要有帧同步和状态同步(又称为CS同步)两种网络同步解决方案。   1、状态同步:每个客户端发送各自操作到服务器,服务器统一计算后将状态结果同步给各个客户端,客户端根据...
  • 帧同步(LockStep)该如何反外挂

    千次阅读 2018-03-09 14:24:07
    目前参与了了一款动作射击的MOBA类游戏的开发,同步方案上选择了帧同步技术(LockStep而非snapshots以下同)。那么就有很多人担心起来,客户端会跑全部逻辑帧同步该如何反外挂,和状态同步有什么区别呢?首先我们来...
  • 例如串口通信过程中的帧同步问题本文针对该问题给出了逐次比较、基于FIFO队列和基于状态机的3种帧同步方法通过测试、分析和比较得出,基于有限状态机的方法是嵌入式系统串口通信中很有效的帧同步方法,同时也是一种...
  • 帧同步--竞技类网络游戏设计方案

    千次阅读 2017-05-23 18:41:26
     帧同步,根据wiki百科的定义是,一种对同步源进行像素级同步显示的处理技术,对于网络上的多个接入者,一个信号将会通过主机同步发送给其他人,并同步显示在各个终端上。同步信号可以是每帧的像素数据,也可以是...
  • 一般 Android 系统相机的最高帧率在 30 FPS 左右,当帧率低于 20...我们在做相机预览和视频流处理时,对每帧图像处理时间过长(超过 30 ms)就很容易造成画面卡顿,这个场景就需要用到错帧同步方法去提升画面的流畅度。
  • 上节讲到了匹配系统,匹配完成之后,我们就需要开始进行帧同步了。但是,需要注意,只有房主才可以调用开始帧同步方法。因此,需要加一层判断。然后,房间内的其他玩家需要监听开始帧同步的广播,接...
  • 帧同步消息、对象池、逻辑/视图层对象、事件消息! 1. 帧同步消息 帧同步消息由Msg目录下的几个文件进行管理,所有Input进行的操作皆是SendMsg来开始。 2. 对象池 对象池管理比较复杂, 但是对于整个程序而言...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,643
精华内容 17,057
关键字:

帧同步方法分为