一种游戏实体位置平滑同步方法、系统及设备与流程

文档序号:28598078发布日期:2022-01-22 10:46阅读:188来源:国知局
一种游戏实体位置平滑同步方法、系统及设备与流程

1.本公开涉及游戏开发技术领域,具体涉及一种游戏实体位置平滑同步方法、系统及设备。


背景技术:

2.网络游戏一般指多名用户通过计算机互联网进行交互娱乐的电子游戏,也称为在线游戏,包括多人在线类游戏等,如大型多人在线角色扮演游戏(massive multiplayeronline role-playinggame,mmorpg)及多人在线战术竞技游戏(multiplayer onlinebattlearena,moba)等。当用户进行网络游戏时,由于需要保障该网络游戏的各个用户间的数据交互,因此,实现各个用户的用户端间的状态数据(主要是位置坐标)同步就极为重要。
3.目前网络游戏的状态数据同步方法主要有以下两种:
4.1、客户端a根据用户的输入指令得到目标(如游戏中的角色、人物)移动位置的坐标、旋转角度等数据,这些数据称为状态数据,客户端a将状态数据发送到服务端(即网络游戏的服务器),服务端对状态数据进行校验后转发到其他在线的客户端,客户端接收状态数据后,根据状态数据所指示的目标id、实体世界坐标和旋转角度,使对应的目标移动至状态数据所指示的位置,在此过程中,同时通过画面渲染使目标的移动在游戏画面中呈现。
5.2、客户端a将用户输入的操作指令发送到服务端,服务端经过校验和运算,得到该操作指令对应的状态数据,然后将该状态数据广播到其他在线的客户端,客户端接收到状态数据后,控制对应的目标进行移动并在游戏画面中呈现。
6.上述状态数据同步方法,客户端在接收到服务端广播的状态数据后,对状态数据进行读取并在游戏画面中呈现,受限于服务端和客户端同步频率的限制,客户端对于目标的移动过程往往难以表现出平滑效果,在网络延迟较高时容易出现卡顿不连续的现象。更直接的方法是根据接收的状态数据在客户端上直接设置目标的位置坐标和旋转角度,但这样目标会在游戏画面中表现为“瞬移”,给用户带来不好的游戏体验。


技术实现要素:

7.为了解决上述现有技术存在的问题,本公开目的在于提供一种游戏实体位置平滑同步方法、系统及设备。本公开能优化客户端中目标移动画面的表现,使目标移动过程表现平滑,有利于提升用户的游戏体验。
8.本公开所述的一种游戏实体位置平滑同步方法,包括以下步骤:
9.s01、服务端向客户端发送用于指示目标移动位置的状态数据d;
10.s02、所述客户端在接收所述状态数据d后,将所述状态数据d缓存到缓存队列l中;
11.s03、所述客户端按序逐个读取所述缓存队列l中的状态数据d,根据所述缓存队列l的长度l设置周期t,所述客户端读取所述缓存队列l中的第一项状态数据d1,使与所述第一项状态数据d1相对应的目标在所述周期t内移动至第一项状态数据d1所指示的位置并在
游戏画面中呈现,然后读取下一项状态数据d2。
12.优选地,所述步骤s03中,所述客户端按序逐个读取所述缓存队列l中的状态数据d包括:
13.检测所述缓存队列l中是否存在状态数据d,如是则读取所述缓存队列l中的第一项状态数据d1,否则重复本步骤。
14.优选地,所述步骤s03中,根据所述缓存队列l的长度l设置周期t包括:
15.取t=1/v;
16.其中,t表示参考值,v表示所述服务端的广播频率;
17.当所述缓存队列l中无状态数据d存在时,周期t取无限长;
18.当所述缓存队列l中有状态数据d存在时,周期t与状态数据d的数据长度l通过反比函数或分段函数关联,使所述周期t随数据长度l的增大而减小;
19.所述反比函数中,周期t与数据长度l按如下方式计算:
20.(k、b均为常数且k》0,b》0)
21.所述分段函数中,周期t与数据长度l按如下方式计算:
22.对数据长度l取n个数值依次递增的长度阈值,记为a1,a2...an,根据所述长度阈值,设置n+1个长度阈值区间,依次记为(0,a1],(a1,a2]...(a
n-1
,an],(an,+∞),对应于每个长度阈值区间,取n+1个数值依次递减的比例系数,记为b1,b2...b
n+1
,其中所述b1,b2...b
n+1
均大于0;
23.当数据长度l∈(0,a1]时,周期t=b1*t,
24.当数据长度l∈(a1,a2]时,周期t=b2*t,
25.......
26.当数据长度l∈(an,+∞)时,周期t=b
n+1
*t。
27.优选地,所述常数b的取值范围为[0.5t,t),且k+b的取值满足k+b∈(t,1.2t]。
[0028]
优选地,所述比例系数b1,b2...b
n+1
的取值范围为[0.5,1.2]。
[0029]
优选地,所述步骤s03中,使与所述第一状态数据d1相对应的目标在所述周期t内移动至第一项状态数据d1所指示的位置包括:
[0030]
将所述周期t分割为m个渲染帧,将目标的移动路径分割为m个分路径,使目标在每个渲染帧内移动一个分路径的行程,最终在m个渲染帧后将目标移动至第一项状态数据d1所指示的位置。
[0031]
优选地,所述状态数据包括目标id、实体世界坐标和旋转角度。
[0032]
本公开还提供了一种游戏实体位置平滑同步系统,包括:
[0033]
服务端,所述服务端用于根据操作指令向客户端发送用于指示目标移动位置的状态数据d;
[0034]
客户端,所述客户端用于在接收所述状态数据d后,将所述状态数据d缓存到缓存队列l中;所述客户端按序逐个读取所述缓存队列l中的状态数据d,根据所述缓存队列l的长度l设置周期t,所述客户端读取所述缓存队列l中的第一项状态数据d1,使与所述第一项状态数据d1相对应的目标在所述周期t内移动至第一项状态数据d1所指示的位置,然后读取下一项状态数据d2。
[0035]
本公开还提供了一种计算机设备,包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载时执行如上所述的游戏实体位置平滑同步方法。
[0036]
本公开所述的一种游戏实体位置平滑同步方法、系统及设备,其优点在于:
[0037]
1、本公开的游戏实体位置平滑同步方法,在接收到服务端广播的状态数据d后将状态数据d缓存到缓存队列l中,根据缓存队列l的长度l设置周期t,客户端逐个读取缓存队列l中的状态数据d,使与状态数据d相对应的目标在周期t内移动至状态数据所指示的位置,并在游戏画面中呈现,即在周期t内完成状态数据d所指示的移动过程。通过采用在客户端先缓存再读取进行表现的方法,可有效减小网络延迟、同步频率等因素对目标移动过程表现的影响,能优化客户端中目标移动画面的表现,使目标移动过程表现平滑,有利于提升用户的游戏体验。
[0038]
2、目标移动过程的时间,即周期t根据缓存队列的长度l进行设置,可根据缓存队列的长度l实时对周期t进行调整,即根据缓存队列的长度l对客户端读取状态数据d的速率进行调节,可进一步优化客户端中目标移动画面的表现,提升用户的游戏体验。
附图说明
[0039]
图1是本公开所述一种游戏实体位置平滑同步方法的步骤流程图;
[0040]
图2是本公开所述一种游戏实体位置平滑同步方法的判断流程图;
[0041]
图3是本公开所述一种游戏实体位置平滑同步系统的结构框图。
[0042]
附图标记说明:1-服务端,2-客户端。
具体实施方式
[0043]
如图1、图2所示,本公开所述的一种游戏实体位置平滑同步方法,包括以下步骤:
[0044]
s01、服务端向客户端发送用于指示目标移动位置的状态数据d,具体的,对于多人在线网络游戏而言,其中某一个客户端,记为客户端a根据用户的操作指令向服务端发送某目标移动位置的状态数据d,服务端在接收到该状态数据d后进行校验,校验通过后服务端将该状态数据d广播到所有在线的客户端,该状态数据d用于指示对应目标的移动位置;
[0045]
s02、客户端在接收到状态数据d后,将状态数据d缓存到缓存队列l中,在实际的网络游戏运行过程中,目标,如游戏中的角色、人物等由用户操作控制的对象,通常处于高频率移动的状态,因而步骤s01中,服务端向客户端发送的状态数据d通常包含多项状态数据,用以指示目标时刻变化的移动位置。因而本步骤中,缓存队列l中的状态数据通常不止一项,各项状态数据根据接收时间点的前后,按序缓存在缓存队列l中。
[0046]
s03、客户端按序逐个读取缓存队列l中的状态数据d,即按照各项状态数据缓存顺序的先后,逐个读取各项状态数据。根据缓存队列l的长度l设置周期t,客户端读取缓存队列l中的第一项状态数据d1,即当前缓存队列l中最先缓存的状态数据,使与第一项状态数据d1相对应的目标在周期t移动至第一项状态数据d1所指示的位置并在游戏画面中呈现,该过程为第一项状态数据d1在客户端上的呈现过程,客户端在读取第一项状态数据d1后,在游戏文件中找到与第一项状态数据d1所对应的目标,如对应的人物,然后根据第一项状态数据d1所指示的实体世界坐标和旋转角度,即目标所要移动到的实体位置坐标及目标的旋转
角度,将目标按照第一状态数据d1的指示移动至对应的实体位置坐标并旋转对应的角度,在此过程中,目标的移动过程对应的在游戏画面上进行呈现,当目标结束移动过程时,目标在游戏画面上移动至指示位置,整个过程在周期t内匀速完成,以使目标的移动过程在游戏画面中表现平滑。
[0047]
本公开的游戏实体位置平滑同步方法,在接收到服务端广播的状态数据d后将状态数据d缓存到缓存队列l中,根据缓存队列l的长度l设置周期t,客户端逐个读取缓存队列l中的状态数据d,使与状态数据d相对应的目标在周期t内移动至状态数据所指示的位置,并在游戏画面中呈现,即在周期t内完成状态数据d所指示的移动过程。通过采用在客户端先缓存再读取进行表现的方法,可有效减小网络延迟、同步频率等因素对目标移动过程表现的影响,能优化客户端中目标移动画面的表现,使目标移动过程表现平滑,有利于提升用户的游戏体验。
[0048]
目标移动过程的时间,即周期t根据缓存队列的长度l进行设置,可根据缓存队列的长度l实时对周期t进行调整,即根据缓存队列的长度l对客户端读取状态数据d的速率进行调节,可进一步优化客户端中目标移动画面的表现,提升用户的游戏体验。
[0049]
进一步的,本实施例中,如图2所示的,步骤s03中,客户端按序逐个读取缓存队列l中的状态数据d包括:
[0050]
当客户端启动,用户进行游戏过程中,客户端实时检测缓存队列l中是否存在状态数据d,如是则读取缓存队列l中的第一项状态数据d1并执行,即将该状态数据在客户端上执行呈现的过程,否则重复本步骤,即该步骤实际为循环检测缓存队列l状态的过程,以在缓存队列l中有状态数据缓存时第一时间将状态数据读取出来并呈现。
[0051]
进一步的,本实施例中,步骤s03中,根据缓存队列l的长度l设置周期t包括:
[0052]
取t=1/v;
[0053]
其中,t表示参考值,即标准周期,v表示所述服务端的广播频率;
[0054]
当所述缓存队列l中无状态数据d存在时,周期t取无限长;
[0055]
当所述缓存队列l中有状态数据d存在时,周期t与状态数据d的数据长度l通过反比函数或分段函数关联,使所述周期t随数据长度l的增大而减小;
[0056]
所述反比函数中,周期t与数据长度l按如下方式计算:
[0057]
(k、b均为常数且k》0,b》0)
[0058]
所述常数b的取值范围为[0.5t,t),且k+b的取值满足k+b∈(t,1.2t]。
[0059]
所述分段函数中,周期t与数据长度l按如下方式计算:
[0060]
对数据长度l取n个数值依次递增的长度阈值,记为a1,a2...an,根据所述长度阈值,设置n+1个长度阈值区间,依次记为(0,a1],(a1,a2]...(a
n-1
,an],(an,+∞),对应于每个长度阈值区间,取n+1个数值依次递减的比例系数,记为b1,b2...b
n+1
,其中所述b1,b2...b
n+1
均大于0;更具体的,比例系数b1,b2...b
n+1
的取值范围为[0.5,1.2];
[0061]
当数据长度l∈(0,a1]时,周期t=b1*t,
[0062]
当数据长度l∈(a1,a2]时,周期t=b2*t,
[0063]
......
[0064]
当数据长度l∈(an,+∞)时,周期t=b
n+1
*t。
[0065]
示例性的,长度阈值的数量为3个,依次记为a1,a2,a3,,其中,a1,a2,a3,依次等于3、5、10,设置4个长度阈值区间,依次记为(0,3]、(3,5]、(5,10]、(10,+∞),对应于4个长度阈值区间,取4个数值依次递减的比例系数b1,b2,b3,b4,其中,b1,b2,b3,b4依次等于1.2、1、0.7、0.5;
[0066]
则有,当数据长度l∈(0,3]时,周期t=1.2*t;
[0067]
当数据长度l∈(3,5]时,周期t=1*t;
[0068]
当数据长度l∈(5,10]时,周期t=0.7*t;
[0069]
当数据长度l∈(10,+∞)时,周期t=0.5*t。
[0070]
通过上述步骤,可根据缓存队列l的数据长度l对周期t的大小进行调整,进而对客户端读取状态数据的速率进行调整,以使目标移动过程在游戏画面中表现平滑,有利于提升用户体验。
[0071]
进一步的,本实施例中,步骤s03中,使与第一状态数据d1相对应的目标在所述周期t内移动至第一项状态数据d1所指示的位置包括:
[0072]
将所述周期t分割为n个渲染帧,将目标的移动路径分割为m个分路径,使目标在每个渲染帧内移动一个分路径的行程,最终在m个渲染帧后将目标移动至第一项状态数据d1所指示的位置。通过将整个移动路径分割为m个分路径,然后使目标逐帧移动的方式,可使目标移动过程中游戏画面的渲染顺畅,表现平滑。
[0073]
进一步的,本实施例中,所述状态数据包括目标id、实体世界坐标和旋转角度。
[0074]
本公开还提供了一种游戏实体位置平滑同步系统,包括:
[0075]
服务端,所述服务端用于根据操作指令向客户端发送用于指示目标移动位置的状态数据d;
[0076]
客户端,所述客户端用于在接收所述状态数据d后,将所述状态数据d缓存到缓存队列l中;所述客户端按序逐个读取所述缓存队列l中的状态数据d,根据所述缓存队列l的长度l设置周期t,所述客户端读取所述缓存队列l中的第一项状态数据d1,使与所述第一项状态数据d1相对应的目标在所述周期t内移动至第一项状态数据d1所指示的位置,然后读取下一项状态数据d2。
[0077]
本公开实施例所述的游戏实体位置平滑同步系统与上述的游戏实体位置平滑同步方法基于相同的发明构思,可参照上文的游戏实体位置平滑同步方法的描述进行理解,在此不再赘述。
[0078]
本公开实施例所述的游戏实体位置平滑同步系统,能优化客户端中目标移动画面的表现,使目标移动过程表现平滑,有利于提升用户的游戏体验。
[0079]
本公开实施例还提供了一种计算机设备,包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载时执行如上所述的游戏实体位置平滑同步方法,存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储
器的访问。
[0080]
本公开实施例所提供的方法实施例可以在计算机终端、服务器或者类似的运算装置中执行,即上述计算机设备可以包括计算机终端、服务器或者类似的运算装置。该计算机设备的内部结构可包括但不限于:处理器、网络接口及存储器。其中,计算机设备内的处理器、网络接口及存储器可通过总线或其他方式连接。
[0081]
其中,处理器(或称cpu(centralprocessingunit,中央处理器))是计算机设备的计算核心以及控制核心。网络接口可选的可以包括标准的有线接口、无线接口(如wi-fi、移动通信接口等)。存储器(memory)是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的存储器可以是高速ram存储设备,也可以是非不稳定的存储设备(non-volatile memory),例如至少一个磁盘存储设备;可选的还可以是至少一个位于远离前述处理器的存储装置。存储器提供存储空间,该存储空间存储了电子设备的操作系统,可包括但不限于:windows系统(一种操作系统),linux(一种操作系统),android(安卓,一种移动操作系统)系统、ios(一种移动操作系统)系统等等,本公开对此并不作限定;并且,在该存储空间中还存放了适于被处理器加载并执行的一条或一条以上的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。在本说明书实施例中,处理器加载并执行存储器中存放的一条或一条以上指令,以实现上述方法实施例所述的游戏实体位置平滑同步方法。
[0082]
在本公开的描述中,需要理解的是,方位词如“前、后、上、下、左、右”、“横向、竖向、水平”和“顶、底”等所指示的方位或位置关系通常是基于附图所示的方位或位置关系,仅是为了便于描述本公开和简化描述,在未作相反说明的情况下,这些方位词并不指示和暗示所指的装置或元件必须具有特定的方位或者以特定的方位构造和操作,因此不能理解为对本公开保护范围的限制。
[0083]
对于本领域的技术人员来说,可根据以上描述的技术方案以及构思,做出其它各种相应的改变以及形变,而所有的这些改变以及形变都应该属于本公开权利要求的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1