精华内容
下载资源
问答
  • 物理和渲染分开,目的就是确保逻辑的同步性,ab两个客户端pk,手机性能不一样,虽然服务端同时发送,但不能因为a手机配置低,卡了,导致跟不上。虽然做了跳处理,但加速 不一定要让渲染也加速,否则手机性能...

    物理帧和渲染帧分开,目的就是确保 逻辑的 同步性,ab两个客户端 pk,手机性能不一样,虽然服务端同时发送,但不能因为a手机配置低,卡了,导致跟不上。

    虽然 做了跳帧处理,但加速  不一定要让渲染帧也加速,否则 手机 性能更不上,还是卡。所以必须让 逻辑渲染分开。

    逻辑帧 一秒 6--10次,渲染帧 一秒 60.目前安卓是这样,苹果可能是30.

    如果把 人物角色放在 逻辑帧里,那么 动作看起来就不流畅,所以要放到 渲染帧里面,具体如下。

    voidOnSetPK()

    {

    int count =GModel.getInstance.list.Count;//添加 英雄

    for (int i = 0; i < count; i++)

    {

    hero hr=GModel.getInstance.list[i];

    hr.OnAddHero();//添加英雄

    }

    int counts = GModel.getInstance.list.Count;//

    //删除 没有血英雄

    for (int i = 0; i < counts; i++)

    {

    hero hr=GModel.getInstance.list[i];

    hr.OnDestroyHero();//删除英雄

    }

    int countt = GModel.getInstance.list.Count;//

    //处理逻辑英雄

    for (int i = 0; i < countt; i++)

    {

    hero hr=GModel.getInstance.list[i];

    hr.OnFrame();//处理英雄

    }

    创建英雄  删除英雄 英雄逻辑处理,必须是在 逻辑帧里面 统一管理。

    先 查看  当前帧 有没有需要 创建的,其次是血量不够要删除的,最后是 现有的 英雄逻辑处理。

    在英雄对象 里面,要做一个 跟踪。因为逻辑帧不流畅,放到update里面做,不知道下一步位置,那么就要用 跟踪方式。

    voidUpdate()

    {float newPositionX = Mathf.SmoothDamp(transform.position.x, vec.x, refxVelocity, smoothTime);float newPositionY = Mathf.SmoothDamp(transform.position.y, vec.y, refyVelocity, smoothTime);

    transform.position= new Vector3(newPositionX, newPositionY, 11);

    }

    大概如上,这样只要跟的紧,不会让 玩家看出 有没有碰到。

    86cefc8bfc4793f77172b2675cd50d56.gif

    最后效果如图,拖拽后,前面是    白色后面是彩色卡牌,白色卡牌 是逻辑帧,只要碰撞就可,现在显示为了大家看清。

    后面的彩色卡牌是 渲染帧里面执行。可以发现,白色 每次一大步,但看起来卡,彩色每次一小步但流畅。玩家到时 只看到彩色。但发生碰撞或逻辑,

    程序都按白色卡牌来计算,他们 走的 很近,误差忽略不计,也可以通过速度调整,让更快的 移动能跟的 更近。这样,就算手机卡,我可以关闭渲染帧,逻辑跳帧继续执行,然后等跳帧结束,我再打开渲染帧,那时渲染帧 虽然离 逻辑帧 更远,但他只执行 最后 目标,所以 很快就 看起来自然了。

    展开全文
  • 比特同步和帧同步的区别

    千次阅读 2016-09-19 21:10:22
    在数据通信中最基本的同步方式就是“比特同步”(bit ...比特同步的目的是为了将发送端发送的每一个比特都正确地接收下来。这就要在正确的时刻 (通常就是在每一个比特的中间位置)对收到的电平根据事先已约定
        在数据通信中最基本的同步方式就是“比特同步”(bit synchronization)或位同步。比特是数据传输的最小单位。比特同步是指接收端时钟已经调整到和发送端时钟完
    全一样,因此接收端收到比特流后,就能够在每一个比特的中间位置进行判决(如下图所示)。比特同步的目的是为了将发送端发送的每一个比特都正确地接收下来。这就要在正确的时刻
    (通常就是在每一个比特的中间位置)对收到的电平根据事先已约定好的规则进行判决。例如,电平若超过一定数值则为1,否则为0。
        但仅仅有比特同步还不够。因为数据要以帧为单位进行发送。若某一个帧有差错,以后就重传这个出错的帧。因此一个帧应当有明确的界限,也就是说,要有帧定界符。
    接收端在收到比特流后,必须能够正确地找出帧定界符,以便知道哪些比特构成一个帧。接收端找到了帧定界符并确定帧的准确位置,就是完成了“帧同步
    (frame synchronization)。在使用PCM的时分复用通信中(这种通信都采用同步通信方式),如图教材的2-20所示,接收端仅仅能够正确接收比特流是不够的。接收端还必须准
    确地将一个个时分复用帧区分出来。因此用作同步的特殊时隙CH0包含一些特殊的比特组合,使接收端能够将每一个时分复用帧的位置确定出来。这也叫做帧同步。下图给出了这两
    种不同的帧同步的示意图。
    图中上面部分的同步通信方式在电信网中使用得非常广泛,其中的一个重要特点是在发送端连续不断地发送比特流中,即使有的时隙没有被用户使用,这些时隙也要保留在时分复
    用帧中的相应位置上。在同步通信中帧同步的任务就是使接收端能够从收到的连续比特流中确定出每一个时分复用帧的位置。
    图中下面部分的异步通信方式在计算机网络中使用得较多。我们可以注意到,数据帧在接收端出现的时间是不规则的。因此在接收端必须进行帧定界。但帧定界也常称为帧同步。
    因此,当我们看到“帧同步”时,应当弄清这是同步通信中的帧同步,还是异步通信中的帧定界。
    这里我们要强调一下,在异步通信时,接收端即使找到了数据帧的开始处,也还必须将数据帧中的所有比特逐个接收下来。因此,接收端必须和数据帧中的各个比特进行比特同步
    (这就是异步通信中的同步问题)。试想:如果接收端不知道每一个比特要持续多长时间,那怎样能将一个个比特接收下来呢?因此,不管是同步通信还是异步通信,要想接收比
    特块中的每一个比特,就必须和比特块中的比特进行比特同步。然而在异步通信中,比特同步的方法和同步通信时并不完全一样。
    在同步通信中,最精确的同步方法是使全网时钟精确同步。全网的主时钟的长期精度要求达到 ± 1.0 ?? 1011,因此必须采用原子钟(例如,铯原子钟),但这样的同步网络的
    价格很高(如SDH/SONET网络)。实际上,在同步通信中,也可以采用比较经济的方法实现同步。这种方法就是在接收端设法从收到的比特流中将比特同步的时钟信息提取出来
    (发送端在发送比特流时,发送时钟的信息就已经在所发送的比特流之中了)。这种同步方式常称为准同步(plesiochronous)。在教材中的2.3.1节中介绍的曼彻斯特编码就能够
    使接收端很方便地从收到的比特流中将时钟信息提取出来,这样就能够很容易地实现比特同步。在以帧为传送单位的异步通信中,接收端通常也是采用从收到的比特流中提取时钟
    信息的方法来实现比特同步。在以字符为单位的异步通信中,由于每一个字符只有8个比特,因此只要收发双方的时钟频率相差不太大,在开始位的触发下,这8个比特的比特同步

    很容易做到,因此不需要采取其他措施来实现比特同步(但不等于说可以不要比特同步)



    具体的看原文网址:http://www.doc88.com/p-716757205889.html

    展开全文
  • 帧同步扫盲帖

    千次阅读 2017-09-07 21:28:13
    帧同步:目的:实际:理解:各客户端每deltatime周期上传操作指令集(eg:左摇杆xy值,右摇杆xy值,按下哪个按钮,抬起哪个按钮);...介绍了帧同步的思想,基于unity实现了客户端处理服务器发送来关键帧的例子 帧同步

    帧同步:

    目的:

    这里写图片描述

    实际:

    这里写图片描述

    理解:

    各客户端每deltatime周期上传操作指令集(eg:左摇杆xy值,右摇杆xy值,按下哪个按钮,抬起哪个按钮);
    服务端保存这些操作指令集,并在下一帧将其广播给所有客户端;
    客户端收到指令集后分别按帧序执行指令集中的操作。

    资料:

    Unity3D中实现帧同步(Part 1和Part 2)
    介绍了帧同步的思想,基于unity实现了客户端处理服务器发送来关键帧的例子
    帧同步在竞技类网络游戏中的应用
    这里写图片描述
    介绍了帧同步的思想,文中还提到了客户端设计,与锁帧延迟的同步技术

    帧同步同步技术:

    目的:

    消除网络波动性带给玩家的卡顿,忽快忽慢的不良体验
    这里写图片描述

    理解:

    客户端逻辑层缓存0-2个关键帧,保证每一个客户端每个deltatime都有关键帧可以操纵,
    其他角色表现层延迟0-1个deltatime,表现层追逐逻辑层的数据
    本机预先模拟

    资料:

    再谈网游同步技术:http://www.skywind.me/blog/archives/1343
    一篇帧同步的总结帖,期间有帧间同步模式、玩法规避模式、预测插值模式基于当前中国网络环境的分析,总结

    定点数:

    目的:

    消除不同设备上浮点数计算过程中精度丢失导致的蝴蝶效应

    首先如果使用帧同步就意味着所有计算是客户端计算的,服务端只转发操作。
    在这种情况下要保证各个终端的表现相同就必须确保相同输入的情况下有相同输出。不止是移动偏差的问题,如果只是移动偏差,靠拟合也能看不太出来。更严重的是一个伤害打出去如果就是差这一点,死亡跟没死亡的区别出来了,之后就麻烦了。
    浮点数只是其中一个注意点,包括但不限于随机数生成算法以及所有排序算法都得是可靠排序等等。

    资料:

    《王者荣耀》网络使用帧同步,底层计算是FixedPoint Math么?
    通过在知乎问答的形式,知道帧同步定点数的必要性

    可靠协议:

    目的:

    帧同步过程中,每个玩家每一个逻辑帧收到的消息必须有序且连续

    快速重传:发送端发送了1,2,3,4,5几个包,然后收到远端的ACK: 1, 3, 4, 5,当收到ACK3时,KCP知道2被跳过1次,收到ACK4时,知道2被跳过了2次,此时可以认为2号丢失,不用等超时,直接重传2号包,大大改善了丢包时的传输速度。

    资料:KCP、RUDP

    Kcp:http://www.skywind.me/blog/archives/1048
    kcp协议的原作者对kcp的介绍
    Kcp协议详解: http://www.cnblogs.com/yuanyifei1/p/6846310.html
    其他作者对kcp协议更加详细的介绍

    展开全文
  • 物理和渲染分开,目的就是确保逻辑的同步性,ab两个客户端pk,手机性能不一样,虽然服务端同时发送,但不能因为a手机配置低,卡了,导致跟不上。 虽然做了跳处理,但加速 不一定要让渲染也加速,否则手机...

    物理帧和渲染帧分开,目的就是确保 逻辑的 同步性,ab两个客户端 pk,手机性能不一样,虽然服务端同时发送,但不能因为a手机配置低,卡了,导致跟不上。

    虽然 做了跳帧处理,但加速  不一定要让渲染帧也加速,否则 手机 性能更不上,还是卡。所以必须让 逻辑渲染分开。

    逻辑帧 一秒 6--10次,渲染帧 一秒 60.目前安卓是这样,苹果可能是30.

    如果把 人物角色放在 逻辑帧里,那么 动作看起来就不流畅,所以要放到 渲染帧里面,具体如下。

        void OnSetPK()
        {        
            //// 
            ////
            //// 
            int count = GModel.getInstance.list.Count;
            //添加  英雄
            for (int i = 0; i < count; i++)
            {
                hero hr = GModel.getInstance.list[i];
                hr.OnAddHero();//添加英雄 
            }
            //// 
            ////
            //// 
            int counts = GModel.getInstance.list.Count;// 
           //删除 没有血英雄
            for (int i = 0; i < counts; i++)
            {
                hero hr = GModel.getInstance.list[i];
                hr.OnDestroyHero();//删除英雄
            }
            //// 
            ////
            //// 
            int countt = GModel.getInstance.list.Count;// 
            //处理逻辑英雄
            for (int i = 0; i < countt; i++)
            {
                hero hr = GModel.getInstance.list[i];
                hr.OnFrame();//处理英雄
            }

    创建英雄  删除英雄 英雄逻辑处理,必须是在 逻辑帧里面 统一管理。

    先 查看  当前帧 有没有需要 创建的,其次是血量不够要删除的,最后是 现有的 英雄逻辑处理。

     

    在英雄对象 里面,要做一个 跟踪。因为逻辑帧不流畅,放到update里面做,不知道下一步位置,那么就要用 跟踪方式。

        void Update()
        {
            float newPositionX = Mathf.SmoothDamp(transform.position.x, vec.x, ref xVelocity, smoothTime);
            float newPositionY = Mathf.SmoothDamp(transform.position.y, vec.y, ref yVelocity, smoothTime);
            transform.position = new Vector3(newPositionX, newPositionY, 11);
        }

    大概如上,这样只要跟的紧,不会让 玩家看出 有没有碰到。

    最后效果如图,拖拽后,前面是    白色后面是彩色卡牌,白色卡牌 是逻辑帧,只要碰撞就可,现在显示为了大家看清。

    后面的彩色卡牌是 渲染帧里面执行。可以发现,白色 每次一大步,但看起来卡,彩色每次一小步但流畅。玩家到时 只看到彩色。但发生碰撞或逻辑,

    程序都按白色卡牌来计算,他们 走的 很近,误差忽略不计,也可以通过速度调整,让更快的 移动能跟的 更近。这样,就算手机卡,我可以关闭渲染帧,逻辑跳帧继续执行,然后等跳帧结束,我再打开渲染帧,那时渲染帧 虽然离 逻辑帧 更远,但他只执行 最后 目标,所以 很快就 看起来自然了。

    转载于:https://www.cnblogs.com/big-zhou/p/11429316.html

    展开全文
  • 位同步(比特同步)和帧同步的区别是什么?2009-03-09 07:30在数据通信中最基本的同步方式就是“位同步”(bit synchronization)或比特同步。比特是数据传输的最小单位。位同步(比特同步)是指接收端时钟已经调整到...
  • 近年来,使用帧同步(Lockstep)的游戏越来越多,关于帧同步和状态同步的讨论争论也有不少,那么到底该选哪种同步机制呢?...这两种同步机制都是为了达到即时同步不同客户端的状态的目的帧同步需要参与..
  • 欢迎大家阅读系列教程《网络物理仿真》,这个系列教程的目的是将物理仿真的状态通过网络进行广播。 在之前的文章中,我们讨论了物理仿真需要在网络上进行广播的各种属性。在这篇文章中,我们将使用具有确定性的...
  • 前言:从4月份至5月份学习了一下unity 目的:为了能够看懂客户端代码最好能够自己写一份属于自己游戏。 第一次写这类型代码 也是第一次用unity引擎 写游戏 目前完成了 服务器设计 当前坦克大战移动(还存在...
  • ,位同步

    2009-09-27 11:19:00
    位同步 收集于百度知道 位同步的目的是使每个码元得到最佳的解调和判决。位同步可以分为外同步法和自同步法两大类。一般而言,自同步法应用较多。位同步法需要另外专门传输位同步信息。自同步法则是从信号码元中...
  • 以太网中MAC帧的格式为:前导码(7字节):使接收器建立比特同步起始定界符SFD(1字节):指示一帧的开始目的地址DA(6字节):指出要接收该帧的工作站源地址SA(6字节):指示发送该帧的工作站地址。数据字段长度...
  • 【实验目的】 (1)学会解决帧同步和频偏校正问题; (2)理解帧同步和频偏校正原理; (3)实现基于训练序列相关性的帧同步和基于Moose算法频偏校正。
  • 以太网中MAC格式

    2019-10-04 18:21:40
    以太网中MAC帧的格式为:前导码(7字节):使接收器建立比特同步起始定界符SFD(1字节):指示一帧的开始目的地址DA(6字节):指出要接收该帧的工作站源地址SA(6字节):指示发送该帧的工作站地址。数据字段长度...
  • 计算机网络帧的封装

    2013-05-08 18:45:04
    (3) 将A封装成位同步传输模式PPP(注意比特填充)。 (4) 将A封装成MAC广播(源MAC地址采用本机MAC地址,目的MAC地址采用广播地址) 3、实验报告内容: (1) 封装PPP帧的数据结构(注明各字段值及含义...
  • 目的地址DA(6字节):指出要接收该帧的工作站 源地址SA(6字节):指示发送该帧的工作站地址 数据字段长度(2字节):指示其后逻辑链路控制(LLC)数据字节长度 逻辑链路控制LLC:携带用户数量 填充字段PAD...
  • 以太网最小64B=(7字节前导同步吗+1字节开始定界符+)6字节的目的MAC+6字节的源MAC+2字节的类型+46数据+4字节的FCS最大长的定义:在最小长度内没发生冲突后,此就不再会发生冲突...
  • 以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的开始定界符,具体就是:7字节前导同步码 + 1字节开始定界符 + 6字节的目的MAC + ...
  • 以太网格式各字段解释

    千次阅读 2013-06-25 15:40:21
    如上图为以太网的帧格式,以下是对每字段字段、字段长度及作用1、前导码(Preamble) 7B 不算在以太里面,只是用定制开始,起同步作用。2、开始符(SFD) 1B 标识一个帧的开始,代码为:10101011. 3、目的...
  • 以太网

    千次阅读 2015-12-14 00:16:19
    第一个字段是7个字节同步码,作用是使接收端网卡在收时能够迅速调整其时钟 频率与发送端时钟同步(位同步,比特同步)。 第二字段是帧的开始界定符,定义为10101011,它前六位作用和前同步码一样,最后...
  • 4G同步的自我总结

    千次阅读 2018-05-29 20:25:49
    LTE的下行同步同步的目的LTE系统的同步是UE在接收端进行数据处理前首先需要完成的过程,通过同步过程获得的定时同步和频率同步信息,可以确定发射端无线数据头位置、OFDM符号的起始位置、以及载波频偏并完成对...
  • 在数字通信系统中,同步技术是非常重要的,而位同步是...位同步的目的是使每个码元得到最佳的解调和判决。位同步可以分为外同步法和自同步法两大类。一般而言,自同步法应用较多。外同步法需要另外专门传输位同步信息。
  • 在传统以太网中,为什么要有最小长度和最大长度限制? 以太网(IEEE 802.3)格式: 1、前导码:7字节0x55,一串1、0间隔,用于信号同步 2、起始定界符:1字节0xD5(10101011),表示一开始 3、DA(目的MAC...
  • 以太网(IEEE802.3)格式:1、前导码:7字节0x55,一串1、0间隔,用于信号同步2、起始定界符:1字节0xD5(10101011),表示一开始3、DA(目的MAC):6字节4、SA(源MAC):6字节5、类型/长度:2字节,0~1500保留为长度...
  • MAC格式

    2019-09-26 21:12:55
    以太网中MAC帧的格式为:前导码(7字节):使接收器建立比特同步起始定界符SFD(1字节):指示一帧的开始目的地址DA(6字节):指出要接收该帧的工作站源地址SA(6字节):指示发送该帧的工作站地址。数据字段长度...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 313
精华内容 125
关键字:

帧同步的目的