一种同步虚拟角色的位置的方法及装置与流程

文档序号:16678746发布日期:2019-01-19 00:11阅读:262来源:国知局
一种同步虚拟角色的位置的方法及装置与流程

本发明涉及计算机技术领域,尤其涉及一种同步虚拟角色的位置的方法及装置。



背景技术:

随着社会的不断进步,得益于手机行业及网络通信的快速发展,手机游戏和网络游戏也得到了飞速的发展。手机游戏和网络游戏给人们带来了很多娱乐性。

一般虚拟角色的移动会通过位置值进行同步,然后再通过插值算法得到一个相对平滑的移动,但是在位移变化太大的情况下,这种方法会放大网络延迟、网络卡顿对角色位置同步的影响。此外,插值算法很难做到平滑的效果,会出现闪显、突然变快、抖动等情况,并且不能保证二者之间是等时等距的,易造成速度不均,这样玩家就会感觉到同步的角色忽快忽慢,玩家体验就会非常差。



技术实现要素:

本申请提供了一种同步虚拟角色的位置的方法及装置,以实现对虚拟角色的位置的同步。

第一方面,提供一种同步虚拟角色的位置的方法,包括:获取虚拟角色的第一加速度;根据所述第一加速度,得到所述虚拟角色的第一位移;根据所述第一位移和所述虚拟角色的第一帧的第一位置,确定所述虚拟角色的第二帧的第二位置。

在另一种实现方式中,所述方法还包括:获取所述虚拟角色的第三位置,所述第三位置为服务器设定的所述虚拟角色的所述第一帧的位置;根据所述第三位置和所述第一位置,得到位置误差;若所述位置误差的绝对值大于或等于预设值,则在得到所述第二位置之前,对所述虚拟角色进行位置修正。

在一种可能的实现方式中,所述根据所述第一加速度,得到所述虚拟角色的第一位移,包括:对所述第一加速度进行积分,得到所述虚拟角色的第一速度;对所述第一速度进行积分,得到所述第一位移。

在另一种可能的实现方式中,所述若所述位置误差的绝对值大于或等于所述预设值,则在得到所述第二位置之前,对所述虚拟角色进行位置修正,包括:根据预设的追赶时间和所述位置误差,得到第二加速度;根据所述第一加速度和所述第二加速度,得到第三加速度;根据所述第三加速度,得到所述虚拟角色的第二位移;根据所述第二位移和所述虚拟角色的第一帧的第一位置,确定所述虚拟角色的第二帧的第二位置。

在另一种可能的实现方式中,所述根据所述第一加速度和所述第二加速度,得到第三加速度,包括:获取所述第一帧与第二帧之间的时间差;根据所述第二加速度和所述追赶常数的比值,得到第四加速度,其中,所述追赶常数为所述追赶时间与所述时间差的比值;对所述第一加速度和第四加速度进行求和,得到第三加速度。

第二方面,提供了一种同步虚拟角色的位置的装置,包括:第一获取单元,用于获取虚拟角色的第一加速度;第一计算单元,用于根据所述第一加速度,得到所述虚拟角色的第一位移;确定单元,用于根据所述第一位移和所述虚拟角色的第一帧的第一位置,确定所述虚拟角色的第二帧的第二位置。

另一种实现方式中,所述装置还包括:第二获取单元,用于获取所述虚拟角色的第三位置,所述第三位置为服务器设定的所述虚拟角色的所述第一帧的位置;第二计算单元,用于根据所述第三位置和所述第一位置,得到位置误差;修正单元,若所述位置误差的绝对值大于或等于预设值,则在得到所述第二位置之前,用于对所述虚拟角色进行位置修正。

在一种可能的实现方式中,所述第一计算单元包括:第一计算子单元,用于对所述第一加速度进行积分,得到所述虚拟角色的第一速度;第二计算子单元,用于对所述第一速度进行积分,得到所述第一位移。

在另一种可能的实现方式中,所述修正单元包括:第三计算子单元,用于根据预设的追赶时间和所述位置误差,得到第二加速度;第四计算子单元,用于对所述第一加速度和所述第二加速度进行求和,得到第三加速度;第五计算子单元,用于根据所述第三加速度,得到所述虚拟角色的第二位移;确定子单元,用于根据所述第二位移和所述虚拟角色的第一帧的第一位置,确定所述虚拟角色的第二帧的第二位置。

在另一种可能的实现方式中,所述第四计算子单元还用于:获取所述第一帧与第二帧之间的时间差;以及根据所述第二加速度和所述追赶常数的比值,得到第四加速度,其中,所述追赶常数为所述追赶时间与所述时间差的比值;以及对所述第一加速度和第四加速度进行求和,得到第三加速度。

第三方面,提供了一种同步虚拟角色的位置的装置,包括:包括处理器、存储器;所述处理器被配置为支持所述装置执行上述第一方面及其任一种可能的实现方式的方法中相应的功能。存储器用于与处理器耦合,其保存所述装置必要的程序(指令)和数据。可选的,所述装置还可以包括输入/输出接口,用于支持所述装置与其他装置之间的通信。

第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面及其任一种可能的实现方式的方法。

第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面及其任一种可能的实现方式的方法。

本申请通过对虚拟角色的加速度值进行采样,并基于加速度值计算得到虚拟角色下一帧的位移,再结合虚拟角色的当前位置,完成虚拟角色位置的同步。在位移变化较大的情况下,能减小网络延迟、网络卡顿对角色位置同步带来的影响,可避免出现闪显、突然变快、抖动的情况出现。

同时通过设置位置修正阈值,自动检测并触发位置修正程序。而通过对加速度进行补偿实现位置修正,可有效的避免在修正过程中出现速度不均、虚拟角色忽快忽慢的问题,同时能有效的控制虚拟角色的位置的误差,提高同步虚拟角色位置的精确度,给玩家带来更好的体验。

附图说明

为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。

图1为本申请实施例提供的一种同步虚拟角色的位置的方法的流程示意图;

图2为本申请实施例提供的另一种同步虚拟角色的位置的方法的流程示意图;

图3为本申请实施例提供的一种同步虚拟角色的位置的装置的结构示意图;

图4为本申请实施例提供的一种同步虚拟角色的位置的装置的硬件结构示意图。

具体实施方式

下面结合本发明实施例中的附图对本发明实施例进行描述。

请参阅图1,图1是本申请实施例提供的一种同步虚拟角色的位置的方法的流程示意图。

s101、获取虚拟角色的第一加速度。

本申请通过对虚拟角色第一帧的加速度进行采样,因此,需要得到从第一帧至第二帧之间,虚拟角色移动的加速度值,即第一加速度a1。由于服务器对虚拟角色的加速度是以帧为单位进行采样的,因此,第一帧至第二帧之间的加速度值无法直接获得,而是通过第一帧及第一帧之前的历史加速度数据预测得到的。设虚拟角色在第一帧时所处的位置为a点,第二帧时所处的位置为b点,则虚拟角色从a点移动至b点的加速度为第一加速度a1。

s102、根据第一加速度,得到虚拟角色的第一位移。

如s101所述,本申请对虚拟角色的加速度是以帧为单位进行采样的,因此,采样周期是固定的。加速度是一个虚拟角色的速度的变化速率,也就是说,加速度是速度的导数,因此,通过对加速度进行积分即可得到速度。令采样周期为t,则从第一帧到第二帧虚拟角色的速度的增量v1可由下式求得:

其中,t1为第一帧对应的时刻,t2为第二帧对应的时刻。

同理,速度是一个虚拟角色的位移的变化速率,也就是说,速度是位移的导数,因此,通过对速度进行积分即可得到位移。在相同的采样周期t内,从第一帧到第二帧虚拟角色的位移增量s1可由下式求得:

其中,t1为第一帧对应的时刻,t2为第二帧对应的时刻,s1即为第一位移。

s103、根据第一位移和虚拟角色的第一帧的第一位置,确定虚拟角色的第二帧的第二位置。

首先获取虚拟角色在第一帧时所处的a点的位置,即第一位置,需要理解的是,此处a点的位置可以为a点在游戏地图中的坐标。再在a点的位置上加上第一位移,即为虚拟角色的第二帧的第二位置。具体地,通过将a点坐标按确定大小和方向移动(即为第一位移),最终得到b点的坐标,即为虚拟角色在第二帧时所处的位置。

本申请通过对虚拟角色的加速度值进行采样,并基于加速度值计算得到虚拟角色下一帧的位移,再结合虚拟角色的当前位置,完成虚拟角色位置的同步。同时通过设置位置修正阈值,有效的控制虚拟角色的位置的误差,提高同步虚拟角色位置的精确度,给玩家带来更好的体验。

请参阅图2,图2是本申请实施例提供的一种同步虚拟角色的位置的方法的流程示意图。

s201、对第一加速度进行积分,得到虚拟角色的第一速度。

s202、对第一速度进行积分,得到第一位移。

需要指出的是,s201与s202中的积分的时间下限均为第一帧对应的时刻,积分的时间上限均为第二帧对应的时刻。

s203、获取虚拟角色的第三位置,第三位置为服务器设定的虚拟角色的第一帧的位置。

本申请中的虚拟角色的位置以服务器端给出的位置为准,但由于网络延时、网络卡顿等原因,服务器在将虚拟角色的位置信息传输给终端时,易产生终端中虚拟角色与服务器中的虚拟角色的位置不同步的现象。因此,在通过前面所述步骤完成终端中虚拟角色的位置同步的同时,服务器也将以帧为单位给出虚拟角色的位置。而获取的服务器给出的虚拟角色的第一帧的位置,即第三位置。后续操作并以第三位置为标准,对虚拟角色的位置进行修正。

s204、根据第三位置和第一位置,得到位置误差。

用第三位置减去第一位置,即可得到虚拟角色第一帧的第一位置相对于服务器给出的第一位置的第三位置的误差。

s205、若位置误差的绝对值大于或等于预设值,则在得到第二位置之前,对虚拟角色进行位置修正。

本申请是通过虚拟角色的加速度计算得到虚拟角色的位移,再结合虚拟角色的第一位置,预测得到虚拟角色的第二位置。由于用于计算的加速度是基于采样得到的虚拟角色的历史加速度值预测得到的,且根据加速度值计算得到的第二位置会有误差,因此,在虚拟角色的位置将会有累计误差。当累计误差达到一定大小时,虚拟角色会出现闪现的问题,这也将大大影响玩家的体验。因此,需要对虚拟角色的位置误差进行限定,并将位置误差消除。

由于终端中的虚拟角色的位置相较于服务器端的虚拟角色的位置可能靠前也可能靠后,因此,虚拟角色的位置误差可能为正,也可能为负。首先,给位置误差的绝对值设定一个阈值,若虚拟角色第一帧的位置误差的绝对值大于或等于预设值δs,则触发位置修正程序。

这样,可将虚拟角色的位置误差保持在一个可接受的范围,即不会影响玩家的体验。

s206、根据预设的追赶时间和位置误差,得到第二加速度。

修正过程的时间长度是预先设置好的,具体为根据测试过程中,虚拟角色的位置修正的实际效果选取合适的时长t3,其中,t3为任意正数。则可根据下式求得位置修正所需的加速度补偿值δa:

即为第二加速度。

s207、根据第一加速度和第二加速度,得到第三加速度。

与前面通过虚拟角色的加速度预测得到虚拟角色的位移一样,对虚拟角色的位置进行修正也是通过对加速度进行补偿实现的。由于采样的最小时间单位为帧,且追赶时间是固定的,因此,为保证追赶效果的平滑性,可根据追赶时间与每一帧的时长的倍数关系n,将需要补偿的加速度均分成n份,并在接下来的n帧中进行补偿。

首先,获取所述第一帧与第二帧之间的时间差t4,再根据追赶时间t3可得追赶时间与每一帧的时长的倍数关系n:

需要理解的是,最终选取的追赶时间t3需要保证其能被t4整除。即为追赶常数。再用第二加速度δa除以追赶常数n,即可得到第四加速度:

需要理解的是,由于终端中的虚拟角色的位置相较于服务器端的虚拟角色的位置可能靠前也可能靠后,虚拟角色的位置误差可能为正,也可能为负。因此,第四加速度a2的值可能为正也可能为负。第四加速度为虚拟角色位置纠正过程中的加速度补偿量,因此,若虚拟角色的位置相对于服务器端的虚拟角色的位置靠前,则第四加速度a2为负,若虚拟角色的位置相对于服务器端的虚拟角色的位置靠后,则第四加速度a2为正。

当虚拟角色的位置误差达到预设值,触发位置修正程序后,将在此后的n帧中进行加速度补偿。具体地,在此后的n帧中进行如下操作:用第一加速度和第四加速度相加,得到第三加速度。需要理解的是,本申请中的第一加速度均指根据当前帧及当前帧之前的历史加速度预测得到的下一帧的加速度,也就是说,每一帧的对应的第一加速度均不一样。

通过前期的测试,设定合适的追赶时间,可使后续的修正过程显得不突兀。在保证虚拟角色在肉眼观察下自然无跳变的前提下,可最大限度的加大追赶时间,提高修正精度。

s208、根据第三加速度,得到虚拟角色的第二位移。

同s202一样,对第三加速度进行积分,即可得到第二位移。

s209、根据第二位移和虚拟角色的第一帧的第一位置,确定虚拟角色的第二帧的第二位置。

首先获取虚拟角色在第一帧时的位置,即第一位置。再在第一位置的基础上加上第二位移,即为虚拟角色的第二帧的第二位置。这样即完成第一帧的加速度补偿,在完成n帧的加速度补偿后,即完成虚拟角色的位置修正。

通过对加速度进行补偿,可使虚拟角色在位置修正的过程过渡的更平滑、自然。最大可能的避免虚拟角色的位置出现跳变。

本申请通过对虚拟角色的加速度值进行采样,并基于加速度值计算得到虚拟角色下一帧的位移,再结合虚拟角色的当前位置,完成虚拟角色位置的同步。在位移变化较大的情况下,能减小网络延迟、网络卡顿对角色位置同步带来的影响,可避免出现闪显、突然变快、抖动的情况出现。

同时通过自动检测虚拟角色的位置误差是否达到预先设置的修正阈值,并决定是否触发位置修正程序。而通过对加速度进行补偿实现位置修正,可有效的避免在修正过程中出现速度不均、虚拟角色忽快忽慢的问题,同时能有效的控制虚拟角色的位置的误差,提高同步虚拟角色位置的精确度,给玩家带来更好的体验。

请参阅图3,图3为本申请实施例提供的一种同步虚拟角色的位置的装置的结构示意图,该装置1000包括:第一获取单元11、第一计算单元12、确定单元13、第二获取单元14、第二计算单元15及修正单元16。其中:

第一获取单元11,用于获取虚拟角色的第一加速度;

第一计算单元12,用于根据所述第一加速度,得到所述虚拟角色的第一位移;

确定单元13,用于根据所述第一位移和所述虚拟角色的第一帧的第一位置,确定所述虚拟角色的第二帧的第二位置。

进一步地,所述第一计算单元12包括:第一计算子单元121,用于对所述第一加速度进行积分,得到所述虚拟角色的第一速度;第二计算子单元122,用于对所述第一速度进行积分,得到所述第一位移。

进一步地,所述装置1000还包括:

第二获取单元14,用于获取所述虚拟角色的第三位置,所述第三位置为服务器设定的所述虚拟角色的所述第一帧的位置;

第二计算单元15,用于根据所述第三位置和所述第一位置,得到位置误差;

修正单元16,若所述位置误差的绝对值大于或等于预设值,则在得到所述第二位置之前,用于对所述虚拟角色进行位置修正。

进一步地,所述修正单元16包括:

第三计算子单元161,用于根据预设的追赶时间和所述位置误差,得到第二加速度;第四计算子单元162,用于对所述第一加速度和所述第二加速度进行求和,得到第三加速度;第五计算子单元163,用于根据所述第三加速度,得到所述虚拟角色的第二位移;确定子单元164,用于根据所述第二位移和所述虚拟角色的第一帧的第一位置,确定所述虚拟角色的第二帧的第二位置。

进一步地,所述第四计算子单元162还用于:获取所述第一帧与第二帧之间的时间差;以及根据所述第二加速度和所述追赶常数的比值,得到第四加速度,其中,所述追赶常数为所述追赶时间与所述时间差的比值;以及对所述第一加速度和第四加速度进行求和,得到第三加速度。

图4为本申请实施例提供的一种同步虚拟角色的位置的硬件结构示意图。该同步装置包括处理器21,还可以包括输入装置22、输出装置23和存储器24。该输入装置22、输出装置23、存储器24和处理器21之间通过总线相互连接。

存储器包括但不限于是随机存储记忆体(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、或便携式只读存储器(compactdiscread-onlymemory,cd-rom),该存储器用于相关指令及数据。

输入装置用于输入数据和/或信号,以及输出装置用于输出数据和/或信号。输出装置和输入装置可以是独立的器件,也可以是一个整体的器件。

处理器可以包括是一个或多个处理器,例如包括一个或多个中央处理器(centralprocessingunit,cpu),在处理器是一个cpu的情况下,该cpu可以是单核cpu,也可以是多核cpu。

存储器用于存储网络设备的程序代码和数据。

处理器用于调用该存储器中的程序代码和数据,执行如下步骤:

在一个实现方式中,所述处理器用于执行如下步骤:获取虚拟角色的第一加速度;根据所述第一加速度,得到所述虚拟角色的第一位移;根据所述第一位移和所述虚拟角色的第一帧的第一位置,确定所述虚拟角色的第二帧的第二位置。

在另一个实现方式中,所述处理器用于执行如下步骤:对所述第一加速度进行积分,得到所述虚拟角色的第一速度;对所述第一速度进行积分,得到所述第一位移。

在另一个实现方式中,所述处理器用于执行如下步骤:获取所述虚拟角色的第三位置,所述第三位置为服务器设定的所述虚拟角色的所述第一帧的位置;根据所述第三位置和所述第一位置,得到位置误差;若所述位置误差的绝对值大于或等于预设值,则在得到所述第二位置之前,对所述虚拟角色进行位置修正。

在另一个实现方式中,所述处理器用于执行如下步骤:根据预设的追赶时间和所述位置误差,得到第二加速度;对所述第一加速度和所述第二加速度进行求和,得到第三加速度;根据所述第三加速度,得到所述虚拟角色的第二位移;根据所述第二位移和所述虚拟角色的第一帧的第一位置,确定所述虚拟角色的第二帧的第二位置。

在另一种实现方式中,所述处理器用于执行如下步骤:获取所述第一帧与第二帧之间的时间差;用所述第二加速度除以所述追赶常数,得到第四加速度,其中,所述追赶常数为所述追赶时间与所述时间差的比值;对所述第一加速度和第四加速度进行求和,得到第三加速度。

可以理解的是,图4仅仅示出了一种同步虚拟角色的位置的装置的简化设计。在实际应用中,同步虚拟角色的位置的装置还可以分别包含必要的其他元件,包含但不限于任意数量的输入/输出装置、处理器、控制器、存储器等,而所有可以实现本申请实施例的同步虚拟角色的位置的装置都在本申请的保护范围之内。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所显示或讨论的相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者通过该计算机可读存储介质进行传输。该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是只读存储器(read-onlymemory,rom),或随机存储存储器(randomaccessmemory,ram),或磁性介质,例如,软盘、硬盘、磁带、磁碟、或光介质,例如,数字通用光盘(digitalversatiledisc,dvd)、或者半导体介质,例如,固态硬盘(solidstatedisk,ssd)等。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1