精华内容
下载资源
问答
  • 同步整流技术在低压大电流开关模块电源领域得到了广泛的应用。文章从同步整流器件、主要电路结构以及 工作方式等三个不同的角度,对同步整流技术进行了分析和比较,以便能够更好的理解和应用同步整流技术。文章最后 给...
  • 电源 同步整流
  • 跳频方式可提高网络的抗干扰能力,自组织网络技术则可提高网络的灵活性和抗毁性,因此,故这种军事网络具有在移动中通信的特点,而且建网时间短、抗毁性强,然而,它在组网中的同步技术的重要性却日益突出。...
  • 通过分析TPSN同步协议和星型网络结构的特征,针对无线传感器网络低功耗的特点及其对时钟同步算法精度的要求,提出了一种广播式TPSN同步协议和节点本地时钟自校正相结合的方法。
  • 应用ATM和DWDM技术同步光纤网络通信,熊伟,朱有产,分析传统同步光纤网络(SONET)通信特点。采用异步转移模式(ATM)和传输技术密集波分复用(DWDM)对基础通信网络进行标准化改造。将时分
  • 通过精简的IEEE1588协议发送的follow-up报文,来降低ZigBee网络的开销,同时改变了同步信息的发起者,由主节点换成从节点,从而适应了ZigBee网络节点即时加入和即时离开的特点。通过实际试验测定,该算法适合于无线...
  • XCM524系列产品是把内装驱动晶体管的600mA同步整流降压DC/DC转换器,与由具有超高速/大电流多功能的VR和VD组合成的VDR,而形成的1PKG化多功能IC。  由于采用了超小型表面实装封装(USP-12B01)实现了节省空间的目的。 ...
  •  DC/DC转换器内置了一个P-沟道驱动三极管和一个同步整流N-沟道开关三极管。外部使用一个电感, 一个二极管和两个电容,XC9509能够输出600mA电流,效率超过90%。XC9509能使用小型的陶瓷电容。  有三种开关频率的型号...
  • 复位电路是每个数字逻辑电路的重要组成部分之一。复位方式大致分为二类: 同步复位和异步复位
  • 网络同步

    千次阅读 2017-01-13 12:47:27
    同步在竞技类网络游戏中的应用 帧同步在网上可以搜的资料比较少,关于游戏的更是没有,不过,实现的原理也比较... 帧同步,根据wiki百科的定义是,一种对同步源进行像素级同步显示的处理技术,对于网络上

    帧同步在竞技类网络游戏中的应用

    帧同步在网上可以搜的资料比较少,关于游戏的更是没有,不过,实现的原理也比较简单,最近几天就写了份关于帧同步的文档,当作给同事扫扫盲,顺便也在这里发发,可以给其他人参考参考

        --竞技类网络游戏设计方案

     

    一、        前言

     帧同步,根据wiki百科的定义是,一种对同步源进行像素级同步显示的处理技术,对于网络上的多个接入者,一个信号将会通过主机同步发送给其他人,并同步显示在各个终端上。同步信号可以是每帧的像素数据,也可以是影响数据变化的关键事件信息。

    帧同步在网络游戏中的应用,设计上有异于传统的mmorpg游戏,因为可以承载更大量的后台计算,实现类单机的效果,所以可应用在类似射击类、飞机类中实现弹幕计算或者格斗类的高精度打击体验

    本文将主要介绍下帧同步与传统mmorpg设计框架的异同点以及相关的几个设计方案,最后,深入展开对其中一种实现方案的分析,而相关的反外挂和断线重连机制等技术难点暂不在本文讨论。

    二、        帧同步在游戏中的应用

    网络游戏中,游戏服务的架构大致可以分为2种模式,分别是cs模式和p2p模式

    cs模式框架如图1(c为客户, GSS为游戏状态服务器)

             


                                       图1

    图1,游戏状态服务器(GSS)单独部署,负责对网络上各个接入者提供服务,当GSS状态发生变化时,将状态同步发送给各个接收者。

    p2p模式框架如图2(c为客户,GSS为游戏状态服务器):

             



                                       图2

    图2中,游戏状态服务器存在于各个客户主机上,游戏状态的改变直接来自于各个客户端的输入。

    以上2个服务框架中,cs模式,由于GSS服务器只有一个,游戏状态能保证绝对一致,但GSS可能同时服务上万个玩家,由于机器性能以及网络带宽等硬件资源限制,服务器对大部分情况都无法进行非常严格的检查和处理;p2p模式相对于cs模式,同时连接的玩家有限,所以可以进行比较精细的运算,可实现类似射击类、飞机类的弹幕计算或者格斗类的高精度打击体验,但是,由于端到端的通讯方式,随着同时接入用户的增加,通讯量呈指数级增长,所以,其对同时接入的数量上会限制得比较严格,适合少量同屏的竞技类等游戏。

    p2p模式中,由于存在多份的GSS,如何保证各个GSS一致也需要特殊考虑,       帧同步算法在游戏中的应用,主要就是为了解决p2p模式下的GSS一致性问题。实现原理是将游戏处理细化为帧,对于每帧,在同样的运行环境中,保证同样的输入的情况下,将得到同样的输出结果。

                              

                                                         图3

    图3中,初始状态都为1,序列帧第二帧时,输入加1操作,则状态变为2,第三帧时无输入,状态不变,第四帧时,输入加1操作,状态变为3.对于同个运行环境的各个客户端来说,相同的输入状况下,将得到相关的输出结果,如图4效果。

                      


                                                                           图4

    通常,为了用户的输入能及时的响应以及游戏状态的过度能够平滑,会将GSS设置为20到30帧以上。并且,由于客户端机器性能或者设置的差异,GSS的状态无法与游戏渲染帧实现一一对应,所以,GSS与表现层必须做到完全的分离,否则将因为某些细小的误差被放大最终导致游戏出现完全不同的结果。

                               


                                              图5

    图5,非确定的渲染层的输出,完全由GSS来驱动,GSS保证帧数的稳定,即使出现网络延迟,也必须在确保收到该帧的所有输入后才执行该帧的处理。

    实现方案上,大致可以分出3种,分别是无主机结构、有主机结构、服务器主机结构

    u  无主机结构

    图2的拓扑结构中,所有GSS功能对等,该方案需要进行特殊的对帧处理,确保所有客户端都已经同步并且收到所有的输入。但是,由于网络上的各个客户端完全对等,一旦某个用户网络状况出现延迟或者中断等异常,将影响其他用户的操作体验,所以该方案简单公平但体验容易受限

     

    u  有主机结构

                                        


                                                        图6

    图6,在各个客户端中随机选择一个的GSS作为主机,同时负责对帧控制及输入输出管理,其他GSS仅跟GSS主机通讯,GSS之间互相不通讯。该方案的好处是,游戏的体验只受主机与本机的网络与本机器状况的影响,其他GSS出现的任何故障都不会影响其他人,当GSS主机完全失去联系时,其他GSS也可以重新仲裁得出新的GSS主机来,但该结构主机在客户端,容易给外挂有可乘之机,对输入对帧等能进行特殊处理,最终导致游戏丧失公平性。此方案能保证玩家体验,但安全性较低

    u  服务器主机结构

    服务器主机结构,是将图6的结构中的GSS主机的的对帧控制及输入输出管理功能放在服务器上,降低GSS客户端的客观影响,保证了大部分玩家的体验,且其中有玩家作弊,也能马上检测到,保证游戏的公平性,但结构上已脱离p2p设计,通讯流量随用户增加,负额指数级增长。该方案安全性高,保证玩家体验,但对服务负载有一定的要求。

    u  其他

    融合有/无主机与服务器主机的结构。服务器主机结构的特点在于控制权在服务端,在有状态的网络游戏中,可以有效防止游戏数据修改、游戏加速等外挂,在服务端硬件资源方面,可以增加有/无主机结构减轻负担,大部分功能用有/无主机结构处理,关键操作由服务器主机结构处理等,让GSS主机与服务器主机协同服务

     

    三、        服务器主机结构设计

    服务器主机结构的特点如上所述,这里再深入展开对该结构的分析与设计。

             服务器设计

             


                                                                 图7

    服务器主要是起到控制作用,进行客户端的对帧控制和输入输出管理。如图7,服务器每帧都发驱动帧驱动客户端执行帧处理,当客户端有输入被服务器接收到,则服务器当前帧内将输入同步输出给各个客户端.

    网络上由于客户端的状况多种多样,客户端帧数可能跟不上服务器,如图8所示,如果客户端出现掉帧情况,则在收到驱动帧后需要加速执行,以追上其他客户端的速度,避免掉帧的用户一直在对过去的事件进行响应。

    游戏应该优先保证正常用户的体验,所以当有玩家出现卡帧情况的时候,不应选择暂停其他玩家,而是让他慢慢的追赶上来,设计上,服务器即可以采用客户端的正常速度,按帧驱动客户端,但当网络都出现突发状况的时候,如图9,通讯异常时,2个客户端都对帧数2缺失,如果服务器照常运行,到恢复网络状况时,会出现情况是,每个客户端都卡了几帧之后,加速拉了几帧。所以,针对这种情况,增加客户端的对帧操作,即客户端执行第1帧时,跟服务器说可以播放第二帧了,然后服务器开始驱动第二帧动作,考虑网络延迟情况,可以提前对帧第n帧的,效果如图9,左边客户端第二个对帧操作使服务器开始推动第二帧进行,而右边客户端的第二个对帧动作其实不起任何作用

                              


                                                                           图8

                              


                                                                          图9

     

    伪代码

     代码不贴了

    客户端设计

                              


                                                                 图10

    客户端设计由两部分组成,分别是GSS模块和渲染模块。

    GSS模块包含物品系统、角色系统、AI系统、场景系统还有其他相关系统等,同时,输入输出和帧数控制也一起集成在GSS模块中。GSS中各系统功能分别是:

             物品系统:       游戏物品以及物品的效果

             角色系统:       角色包括玩家角色、npc及apc等

             ai系统:          驱动apc行动的控制模块

             场景系统:     场景物件、地图、寻路等

             其他系统:      其他类似技能、状态等系统

             输入输出模块:       监听玩家输入,将玩家输入上报服务器,同时监听服务器输入,绑定当前帧输出

             帧数控制模块:      监听服务器驱动帧,驱动执行每帧处理

    GSS模块中各个系统的执行,由帧数驱动,不引入其他时间线。有如物品持续时间、状态持续时间等都以帧数作为唯一的时间轴。帧与帧之间的播放频率,则由服务器统一控制,但由于网络抖动等影响,帧的频率并不是太稳定,为避免播放抖动,帧数控制器需要进行一定的平滑处理。

                      


                                                         图11

    客户端的渲染层,由GSS模块驱动,为减少模块间的耦合,GSS模块使用事件通知机制驱动渲染层表现。具体细分事件类型如图12(具体项目具体事件拆解)

                      

    由于渲染层与GSS只做到事务级的同步,而GSS与渲染层的播放速率有可能不同,则为保证较好的表现效果,GSS的逻辑帧需要与渲染层的渲染帧做固定比率的绑定,譬如图13的1:2,当GSS逻辑帧数不变的情况下,渲染帧掉帧时,能经过换算得到当前逻辑帧对应的渲染帧数,出现GSS帧数暂停时,则逻辑帧也跟着一起暂停

                      


                                                                 图13

    逻辑帧与渲染帧绑定算法(伪代码)

             代码不贴了

    其中  OnUpdate由引擎在每帧调用,GetNewestFrame获得逻辑帧通知过来的最新帧,这样,保证了逻辑帧中关键帧进行伤害计算时,渲染帧不会脱帧严重。

     

     

    四、        反外挂与断线重连

             稍等后续文章



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

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

      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、帧同步有个缺点,不能避免玩家采用作弊工具开图。
    展开全文
  • 同步特点,好处,弊端

    千次阅读 2020-10-05 19:10:45
    同步特点: 前提: 多个线程 解决问题的时候注意: 多个线程使用同一把锁 同步的好处; 同步的出现解决了多线程的安全问题 同步的弊端 当线程相当多的时候,因为每个线程都会去判断同步上的锁 无形中会降低...
    同步的特点:
              前提:
                     多个线程
               解决问题的时候注意:
                      多个线程使用同一把锁
    同步的好处;
                同步的出现解决了多线程的安全问题
    同步的弊端
               当线程相当多的时候,因为每个线程都会去判断同步上的锁
               无形中会降低程序的运行效率       
    
    展开全文
  • 将P2P技术引入了网络数据库领域,可以很好地实现网络数据库系统的高效率、大容量及...本文在明确P2P网络特点的基础上,重点研究了P2P数据库同步系统,涉及到系统体系结构、数据库信息同步的策略及数据节点状态表的维护等。
  • 游戏网络同步——MMO位置同步

    千次阅读 2014-08-22 11:55:16
    国内的公网通信,非跨的情况下,一般在120ms左右。本地的网络会好一些。 2. 要努力防止外挂,如果是以client的通知为主,也要做抽查,或者全部都校验。 3. 应用DR技术,在没有收到位置更新包的同时,client视野中...

    前提
    1.client和server之间或多或少存在网络延迟,需要提前做好对时,并在网络环境发生变化时校正时差。国内的公网通信,非跨网的情况下,一般在120ms左右。本地的网络会好一些。
    2. 要努力防止外挂,如果是以client的通知为主,也要做抽查,或者全部都校验。
    3. 应用DR技术,在没有收到位置更新包的同时,client视野中的其他client按照游戏规则运动。
    4. 控制位置同步的频率,减少网络流量。

    以client为主的处理流程:
    server只做简单校验,不做逻辑运算,优点是比较平滑,但是尽管有校验,还是不可避免会有安全性的问题:
    1. client登录之后,与server做对时计算时差。
    2. 位置数据包内容有:当前位置、速度、方向、时间戳。
    3.client发送位置数据包给server。发包的触发条件有两个:超过了DR的阈值和定时tick触发,如果没有到定时时间但是超过了阈值,也应该发送。
    4.server收到位置数据后,首先根据游戏规则校验是否合法,不合法则拉回合法的位置。然后根据时差,预测client当前的状态,并把这个计算得到位置数据广播给相关的client(包括client自己)。
    5. client收到位置数据包后,根据时差,计算得到经过了延迟,现在实际的位置信息。
    6.client收到的位置数据是属于其它玩家的:需要将当前模拟的玩家的位置修正到最新的位置,为了避免瞬移现象,一个简单的方法是预测一段时间之后(比如一秒后)的状态,用一条直线运动去修正。即,设想一秒后这个玩家在哪里,然后反推回现在应该用什么速度运动可以在一秒后到达那个地方。在对方玩家网络环境不好的情况下,采用这种算法会使得这个玩家在游戏画面上的速度突然加快一下,不过比瞬移会好很多。
    7.client收到的信息是属于自己的,即server认可的自己的状态(并广播给别人了)。如果有误差,则是由于server的预测补偿和网络延迟的误差造成的。如果误差超过了设定的阈值,就直接跳转过去,否则不处理。

    以server为准的处理流程:
    以server的计算和模拟为主,client只在变化速度或者方向的时候,通知server,特点是安全性高,逻辑简单,但是server的cpu消耗大:
    与以client为主的处理流程不一样的是第3步:server的计算也由两个触发条件,一是server定时做的server_move这种操作,来模拟计算并更新所有client的位置信息;二是收到client的速度或者方向改变的通知包。在满足这两个条件之一的情况下,server就应该计算得到client当前的位置信息,并广播通知到相关的玩家。

    写在后面:
    没有做过mmo,所以对这块的同步机制还处于摸索的阶段。看了网上不少文章,为了游戏的体验感,似乎更倾向于采用客户端为主的位置同步。具体的情况还需要通过阅读代码和写测试用例来确定。

    参考文章:
    http://blog.codingnow.com/2012/03/dev_note_12.html
    http://blog.csdn.net/stanjiang2010/article/details/5660292
    http://cjmxp007.blog.163.com/blog/static/3547383720098149046971/
    http://www.cppblog.com/keigoliye/archive/2009/09/10/95830.html
    http://www.joynb.net/blog/archives/108#more-108

    展开全文
  • 在明确光纤时频同步技术原理与技术特点的基础上,分别介绍了光纤时间同步、频率同步、网络化同步等主要技术的现状,指出地基时频网络建设的重难点。对制约光纤时频同步技术实用化的问题进行了分析,认为商用网络中的远...
  • 针对脉冲式接口数控系统的特点,提出一种基于DSP+FPGA硬件架构的外挂式同步控制卡,确定脉冲接口双轴同步控制的总体方案,给出双轴同步控制装置的硬软件设计及实现,并建立脉冲接口双轴驱动同步控制实验平台,进行了...
  • 网络游戏网络同步方案的选择

    万次阅读 多人点赞 2016-11-17 21:07:51
    甚至许多流行的端游也被开发者移植到手机上来,如今手游的类型多种多样,从单机到rpg,slg策略游戏,卡牌游戏弱交互游戏,以及rts,mmorpg,moba等重型多人在线游戏,其网络同步方案各有各的特点,到底如何选择游戏...

         随着电子竞技的快速发展和移动互联网的迅速崛起,手游的市场份额月来越高,不但各种原创的手游被开发者开发出来,甚至许多流行的端游也被开发者移植到手机上来,如今手游的类型多种多样,从单机到rpg,slg策略游戏,卡牌游戏弱交互游戏,以及rts,mmorpg,moba等重型多人在线游戏,其网络同步方案各有各的特点,到底如何选择游戏的同步方案呢?我们先来介绍一下常见的同步方案。

    一.p2p模式

        从字面上看面对面的模式,在同一场游戏中的所有玩家,需要和所有其他的所有玩家保持一个网络连接(如图),在游戏过程中一个玩家的操作需要转发给所有其他的玩家,然后其他玩家收到来自另一个玩家的消息后,根据预先规定好的规则来模拟游戏过程,从而来保证游戏的同步进行。这种模式的好处很明显,降低了主机的网络压力和延迟,并且可以在一个局域网内进行游戏,降低的了来自网络延时,但是由于所有的数据演算都在客户端因此容易作弊,除此之外随着玩家数量的增多,玩家需要保持的网络连接也会增多。

       在这种模式的 基础上有人做了一个折中的方案,一场游戏,由一个玩家创建房间,创建房间的玩家作为主机(即服务器),然后所有其他的玩家都和创建房间者相连,这种方案虽然降低了大部分玩家作弊的可能性,但是大大增加了主机的作弊可能性,并且正常游戏的体验完全由主机的网络质量决定,如果主机的网络延时很高就会走向一个极端(除了主机意外的所有玩家都会很卡),这种情况对于玩家来说明显是不公平的。

    这种模式就好像一个玩家通过主机来控制其他玩家来保证游戏的同步进行,换句话说这种模式下控制权在玩家自己手里,也正是这个原因,作弊的可能性大大增加。

    二 client-server模式

    在这种模式下,有两种同步模式,状态同步和帧同步。

        1.状态同步

        这种模式的运作过程和上面的方式有一个明显的区别,这种模式下是通过server来控制其他玩家,所有的控制权在server手中,server具有决策权,这种模式可以防止大部分的作弊行为,但是另外一个问题有产生了,这种模式下严重依赖server的稳定系性以及网络质量,如果server的网络质量不好所有的玩家都会很卡,甚至如果servr挂了,整个服的玩家都完蛋了。除此之外,server要负责所有玩家的数据处理和演算以及把一个玩家的操作数据转发给所有其他相关的玩家。因此这种模式给server带来了很大压力。

        当然这种模式只适合一些若交互的游戏,比如rpg,卡牌,slg类型的游戏,这些游戏共有的特点就是和服务器交互的频率不高,服务器手机所有玩家的操作信息,进行演算之后把演算结果转发给其他玩家,其他玩家做相应的模拟和显示。但是向moba,mmorpg,rts等大型的多人在线游戏中由于交互的频率极高,这种方案会造成明显的卡顿。

          2. 帧同步

        接着说,一般moba,rts等大型多人在线游戏,客户端每秒需要和服务器同步20-50次不等消息(wow,lol,守望先锋等),服务器集中处理来自客户端的上行消息,基本上每秒在20次左右,基本上会比客户端少一些,毕竟服务器需要负责所有玩家的操作。如果按着上面的模式来同步玩家的操作,试想一下,玩家一个操作从客户端到服务器来回的时间,再服务器演算的时间,也就是说在一个玩家进行一个操作上行到服务器之后在这段时间里什么都干不了,如果网络不好这段时间会明显变长。在这种情况下玩家就会有明显的卡顿,因此状态同步是不适合拿来做这种重型游戏的。

        什么是帧同步,顾名思义就是同步操作要以每帧来计算,不用想就知道同步的频率很高,举个例子在你打英雄联盟或者dota时,你点击鼠标的频率时多少,以及打团战时你释放技能的频率,服务器要以比你手速更快的频率来把你的这些操作同步给其他玩家,来保证所有玩家看到的游戏场景时一致的。

        为此,有一部分开发者为了降低服务器的延时,服务器只负责转发客户端上行的操作指令,并不做仲裁,把某个客户端上行的操作指令转发给其他相关的玩家后,让玩家自己根据这些指令来模拟游戏过程,这种模式有点像上面的第二种,只是转发的操作不是由某个玩家来做而是由服务器来进行。但是这种模式虽然降低来来自服务器器的延时,但是如果网络不好,还是会有延迟,并且容易作弊的缺点又一次出现(不过好像很多以前的老游戏都是这种模式)。有人为了解决这个问题就另外起一个服务器来专门做客户端指令的检测,以此检测客户端的作弊行为,但是我感觉这种亡羊补牢的模式并不是很好。

    帧同步,这种模式下服务器每帧同步操作过程中,对所有来自客户端的操作信息进行演算和处理,结束后下发到所有玩家。唯一需要改变的客户端的行为,客户端在上行了自己的操作后,不必等到服务器仲裁结果的返回,也就是说客户端在上行消息之后,立即根据当前自己所掌握的游戏数据,模拟出一个游戏进行状态,不需要等到服务器的返回消息。但是操作的结果由服务器来决定。举个例子,玩家a在某时刻向玩家b开枪,玩家把此操作上行服务器器后立即进行弹道的模拟演算,根据当前掌握的b的位置信息和移动速度以及方向等详细信息来模拟操作的游戏过程,正常情况下客户端的演算结果和服务器的演算结果应该是不会有差别的,但是网络的延时存在,如果在快要打到b的时候,b躲开了,并且b上行了躲开的操作,但是由于网络的延时,你并没有收到来自服务器器b躲开的广播,因此你自己播放了打中的特效,并且自己也播了掉血的特效,但是这只是暂时的,因为你上行的操作,服务器也进行了演算,服务器判断b躲开了,所以等到下一帧的同步时,b的血又回来了。这种情况很长见,我们在打游戏的过程中经常会有自己从一个地方突然回到一个地方的情景,这中情况就是服务器判断你在某个时刻被眩晕了或者是被障碍物挡道了,但是你没有收到这些消息,自己的演算和服务器不一样,服务器把你强行拉回的结果。

         现在很多游戏都采用这种模式,守望先锋,还有手游皇室战争(又一次我在玩皇室战争我自己看到我把对面的塔打掉了,结果屏幕闪了一下,对面的塔忽然对了1000多点血,这就是对面的一些防御操作,由于网络的延时我没有及时收到,我自己演算了所有的游戏操作,但这些操作都是错误的,被服务器强行同步回来了。),还有守望先锋,这里给大家一个帖子,是守望先锋的程序员讲了他们是怎么做游戏同步的(建议电脑观看,里面有视频,手机看不了点击打开链接)。lol,dota这类游戏是怎么做网络同步的,我没有找到可靠的证据来证明它们的同步方案,但从理论上来说,他们比守望先锋的同步要求更为苛刻(它们有小兵,野怪,各种buff,这些数据是守望先锋没有的),所以我猜测它们既有可能也是这种模式,或者说是一台服务器转发指令,另外一台负责演算监测客户端的演算的正确性。

         当然这种模式下也会有延迟存在,因为一个指令发出到服务器,服务器广播给其他玩家这些需要一下最基本的网络传输时间,也就是说,一个玩家所看到的其他的玩家游戏状态其实是个过去是,只有自己的状态的最新的,比如你朝某个方向打b,其实此刻他已经不在那个位置了,你打的知识一个影子(照这样分析,我们是不是应该朝玩家移动靠前的位置一点打是不是更有可能打中),为了解决这个问题,服务器一般采用一种叫做柔和差值算法,就是服务器取样某一段时间的网络延时,把这段时间计算在内,也就是说你打了b,服务器会把b的时间倒回去一点来判断你是否打中。这样就保证了游戏的公平性,减小了由于网络延迟带来的误差。

        说了这么多,其实这些方案实现起来时非常困难的,没有一定的技术积累是很难去实现的,现在大多的游戏都是一些若交互的游戏,基本上是把数据库存进去,再拉出来,再加上一些游戏逻辑。一个有些经验的工程师都能完成,但是上面说的是需要我们去自习研究和斟酌的,否则就会出现每个同一场游戏的每个玩家看到不同的场景,即不同步的画面。

    展开全文
  • 网络互联和互联网,网络安全,网络操作系统,接入网技术,网络管理,标准化和信息化,计算机专业英语等,主要从考试大纲要求、考点辅导、典型例题分析和专项习题训练几个方面对该部分内容加以系统的阐释。...
  • 前言:网络同步属于游戏开发中比较重要且复杂的一部分,但是由于网上的资料内容参差不齐,很多人直接拿别人的结论写文章,导致很多人对这一块的很多概念和理解都是错误的。本文参考了大量的相关论文和...
  • 结合现有的跳频同步技术,本文重点研究了基于TOD的同步字头的同步方法,该方法具有同步建立时间短,随机性和隐酸性好的性能特点,能够有效的应用于短波跳频通信系统,并提出一种基于 TOPSIS法的同步频率捕获确认方案...
  • 基于光纤传输的时间同步技术具有高精度、高稳定度和低损耗等优点,已成为高精度时间同步的主要方法,具有较强的应用需求和发展前景。双向比对技术中,光纤时间同步方法应用广泛,国内外相关机构在此领域不断提出新方法、...
  • 同步--竞技类网络游戏设计方案

    千次阅读 2017-05-23 18:41:26
     帧同步,根据wiki百科的定义是,一种对同步源进行像素级同步显示的处理技术,对于网络上的多个接入者,一个信号将会通过主机同步发送给其他人,并同步显示在各个终端上。同步信号可以是每帧的像素数据,也可以是...
  • 以太网作为一种成本低廉、吞吐能力强、适应性好、网络管理能力日益提高...基于LAN的新型LXI(LAN eXtensions for Instrumentation)仪器总线正是利用了以太网的这些特点,构成了一种适应自动测试系统的仪器模块组建标准。
  • 开关电源同步整流技术

    千次阅读 2019-04-22 10:20:43
    开关电源同步整流技术 引言 开关电源的损耗主要有3部分:功率开关管损耗、高频变压器损耗和输出端整流二极管损耗。在低电压输入、大电流输出的情况下,整流二极管的导通压降较高,输出整流管的损耗较为突出,减低...
  • 本书按照人事部、信息产业部最新颁布的全国计算机技术与软件专业资格(水平)考试大纲和指定教材编写...本书具有考点分析透彻、例题典型、习题丰富等特点,非常适合考生在备考时使用,也可作为高等院校或培训班的教材。
  • 摘 要:本文针对台达机电关注的纺织、印染、造纸等重点行业中经典的同步控制、恒张力控制技术问题,结合台达机电产品自身的特点和优势设计了成熟、完善的同步控制和恒张力控制的方案,为长期困扰客户的核心技术难点...
  • 再谈网游同步技术

    千次阅读 2016-06-07 17:28:38
    实时动作游戏在近年来得到迅猛的发展。而游戏同步问题,成为大家继续解决的核心问题之一。早在 2004年,国内游戏开发还处于慢节奏 RPG满天飞的情况下,我就开始实时动作游戏研究,分别在 2005-...玩法规避模式:《
  • 为了研究适合国内机车的无线同步控制系统,对无线同步控制技术特点进行分析,并建立了重载组合列车纵向动力学数学模型和仿真模型。从纵向动力角度,验证采用无线同步控制技术的组合列车与传统编组列车相比的优越性,通过...
  • 提出一种基于共轭反射的高功率激光装置靶点时间同步测试方法。首先在靶点两侧放置一对相互平行、相对靶点距离...该测试方法具有操作简单、测试效率高等特点, 已成功应用于高功率激光装置多路激光时间同步的精密诊断。
  • 针对3GPP制定的LTE-A/5G业务中的高精度定位需求,突破现有全球卫星导航系统(GNSS)接收机百纳秒定时精度,研究基于GNSS的5G基站纳秒级高精度时间同步技术。分析GNSS误差邻域相似性特点,结合5G基站时间同步需求特点...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 191,751
精华内容 76,700
关键字:

同步网的技术特点