掌桥专利:专业的专利平台
掌桥专利
首页

一种数据的同步验证方法、系统、计算设备及存储介质

文献发布时间:2023-06-19 09:26:02


一种数据的同步验证方法、系统、计算设备及存储介质

技术领域

本申请涉及计算机技术领域,尤其涉及一种数据的同步验证方法、系统、计算设备及存储介质。

背景技术

伴随着互联网络的快速发展,用户可以通过互联网被提供很多服务,如,线上即时通信、线上游戏、线上购物等。而服务的提供需要通过服务端以及用户的终端进行交互来实现。

在一些交互方式中,需要服务端通过同步方式,将需要同步的数据发送至对应的终端。其中,状态同步方式会使得终端和服务端的数据有一定的差异,从而造成终端相对于服务端而言,具有较强的延迟性。对于一些对同步体验要求高的服务进行敏感数据精准校验时会有一定的误差,会大幅影响用户的体验。

发明内容

本申请的多个方面提供一种数据的同步验证方法、系统、计算设备及存储介质,用以能够针对同步体验要求高的服务,进行敏感数据较为精准的校验。

本申请实施例提供一种数据的同步验证方法,应用于服务端,在预定时间内,终端安装的客户端的运行帧速率在预置范围内大于服务端的运行帧速率,所述方法包括:接收第一帧数据包,所述帧数据包携带有第一操作指令以及第一帧包标识,执行第一操作指令,获取第一操作结果;存储所述第一操作结果与第一帧包标识的对应关系至对应存储队列;通过帧消息包发送所述第一操作结果至对应的多个终端,且所述帧消息包携带有与所述第一帧包标识相对应的第二帧包标识,以使所述终端在接收到所述帧消息包后,通过第二帧数据包返回第二操作指令以及在该所述第二操作指令前的操作结果对应的帧包标识,以对所述第二操作指令进行验证。

本申请实施例还提供一种数据的同步验证方法,应用于终端,在预定时间内,终端的运行帧速率在预置范围内大于服务端的运行帧速率,所述方法包括:接收帧消息包,所述帧消息包携带有操作结果以及与所述操作结果对应的帧包标识;展示所述操作结果,并接收针对所述操作结果的操作指令;通过帧数据包返回所述操作指令以及与所述操作结果对应的帧包标识,以对操作指令进行验证。

本申请实施例还提供一种数据的同步系统,包括:服务端以及终端,在预定时间内,终端的运行帧速率在预置范围内大于服务端的运行帧速率:所述服务端,接收第一帧数据包,所述帧数据包携带有第一操作指令以及第一帧包标识,执行第一操作指令,获取第一操作结果;存储所述操作结果与第一帧包标识的对应关系至对应存储队列;通过帧消息包发送所述操作结果至对应的多个终端,且所述帧消息包携带有与所述第一帧包标识相对应的第二帧包标识;所述终端,在接收到所述帧消息包后,展示所述操作结果,并接收针对所述操作结果的第二操作指令;通过第二帧数据包返回所述第二操作指令以及与所述操作结果对应的帧包标识,以对所述第二操作指令进行验证。

本申请实施例还提供一种计算设备,存储器、处理器以及通信组件;所述存储器,用于存储计算机程序;所述通信组件,用于接收第一帧数据包,所述帧数据包携带有第一操作指令以及第一帧包标识;所述处理器,用于执行所述计算机程序,以用于:执行第一操作指令,获取第一操作结果;存储所述第一操作结果与第一帧包标识的对应关系至对应存储队列;所述通信组件,用于通过帧消息包发送所述第一操作结果至对应的多个终端,且所述帧消息包携带有与所述第一帧包标识相对应的第二帧包标识,以使所述终端在接收到所述帧消息包后,通过第二帧数据包返回第二操作指令以及与所述第二操作指令的操作结果对应的帧包标识,以对所述第二操作指令进行验证,在预定时间内,终端安装的客户端的运行帧速率在预置范围内大于服务端的运行帧速率。

本申请实施例还提供一种计算设备,存储器、处理器以及通信组件;所述存储器,用于存储计算机程序;所述通信组件,用于接收帧消息包,所述帧消息包携带有操作结果以及与所述操作结果对应的帧包标识;所述处理器,用于执行所述计算机程序,以用于:展示所述操作结果,并接收针对所述操作结果的操作指令;所述通信组件,用于通过帧数据包返回所述操作指令以及与所述操作结果对应的帧包标识,以对操作指令进行验证,在预定时间内,终端的运行帧速率在预置范围内大于服务端的运行帧速率。

本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被一个或多个处理器执行时,致使所述一个或多个处理器实现上述方法中的步骤。

在本申请实施例中,在预定时间内,终端安装的客户端的运行帧速率在预置范围内大于服务端的运行帧速率,服务端接收第一帧数据包,帧数据包携带有第一操作指令以及第一帧包标识,执行第一操作指令,获取第一操作结果;存储第一操作结果与第一帧包标识的对应关系至对应存储队列;通过帧消息包发送第一操作结果至对应的多个终端,且帧消息包携带有与第一帧包标识相对应的第二帧包标识。从而使得终端在接收到帧消息包后,通过第二帧数据包返回第二操作指令以及在该第二操作指令前的操作结果对应的帧包标识,以对第二操作指令进行验证。以使当帧包标识是第二帧包标识,则可以确定该第二操指令是针对第一操作结果的,那么就该验证就通过。从而可以针对状态同步,较为精准地校验操作结果,提高用户体验感。避免由于针对不同操作结果而造成验证失败的问题。

同时,由于状态同步的同步效率较高,可以支持多用户参与互动的服务,如多用户参与的游戏服务。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为本申请一示例性实施例的数据的同步验证方法的流程示意图;

图2为本申请一示例性实施例的数据验证的流程示意图;

图3为本申请一示例性实施例的帧标识转换的流程示意图;

图4为本申请又一示例性实施例的数据的同步验证方法的流程示意图;

图5为本申请又一示例性实施例提供的数据的同步验证装置的结构示意图;

图6为本申请又一示例性实施例提供的数据的同步验证装置的结构示意图;

图7为本申请一示例性实施例提供的计算设备的结构示意图;

图8为本申请一示例性实施例提供的计算设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

基于前文所述可知,对于一些对同步体验要求高的服务,进行敏感数据精准校验时,状态同步会有一定的误差,造成用户的体验较差。

例如,在多人网络游戏服务中,通常使用终端中安装的客户端预表现的方式,也就是当前游戏用户(也可以称为游戏玩家)自身客户端的表现数据会先于服务端,如服务器,中的玩家数据。而服务器再将该游戏玩家的操作结果同步到其他游戏玩家的客户端中。那么,其他游戏玩家就可以从自身的客户端看到操作结果,就会晚于服务器中的玩家数据。也就造成了每个玩家角色在整个游戏流程中存在3个状态:自身游戏玩家的客户端预表现的状态、服务器当前玩家的状态以及其他游戏玩家的客户端看到的状态。这3个状态因为存在网络延迟和各端处理延迟的原因造成不可能完全数据一致。在这个前提下,如果进行数据同步要求较高的操作,如,其他游戏玩家对当前游戏玩家在某个地点进行攻击,由于当前游戏玩家是预表现的方式,即有可能当前游戏玩家已经离开该地点,而其他游戏玩家还不知道,依旧对某个地点的当前游戏玩家进行攻击,那么就有可能造成操作失败,如攻击失败,因为该当前游戏玩家已经离开了该地点。则就造成了服务器验证不通过的问题。

此外,同步方式中的帧同步方式的逻辑是没有服务端参与的,服务端只是做单纯的转发数据,无法做到对数据结果的校验和仲裁。且网络断线重连后,需要同步网络断线期间所有的操作,导致耗时长。同时还需要同步所有参与的终端的操作,不适合大型多人进行参与互动的服务,如网络游戏。

由此,本申请实施例提供一种数据的同步验证方法,可针对同步体验要求高的服务,进行敏感数据较为精准的校验。

以下结合附图,详细说明本申请各实施例提供的技术方案。

图1为本申请一示例性实施例的一种数据的同步验证方法的流程示意图。本申请实施例提供的该方法100可以由服务端执行,如,服务器等。在预定时间内,终端安装的客户端的运行帧速率在预置范围内大于服务端的运行帧速率,该方法100包括以下步骤:

101:接收第一帧数据包,帧数据包携带有第一操作指令以及第一帧包标识,执行第一操作指令,获取第一操作结果。

102:存储第一操作结果与第一帧包标识的对应关系至对应存储队列。

103:通过帧消息包发送第一操作结果至对应的多个终端,且帧消息包携带有与第一帧包标识相对应的第二帧包标识,以使终端在接收到帧消息包后,通过第二帧数据包返回第二操作指令以及在该第二操作指令前的操作结果对应的帧包标识,以对第二操作指令进行验证。

需要说明的是,终端中的客户端与服务端的运行帧率不同,可以是客户端的运行帧率大于服务端的运行帧率。

以下针对上述步骤进行详细阐述:

101:接收第一帧数据包,帧数据包携带有第一操作指令以及第一帧包标识,执行第一操作指令,获取第一操作结果。

其中,帧是指运行帧,也可以称为运行数据帧,是服务器和终端上安装的客户端的逻辑帧。基于该逻辑帧来运行数据。如服务器和客户端可以1秒运行30数据帧,每个数据帧都有自己的时间点,在对应的时间点到达后,服务器或者客户端则运行对应的数据帧,该数据帧可以对应着一些待运行的数据,如一些操作指令等。该操作指令可以是指用户在客户端上执行的操作,如移动游戏角色等。而执行结果则是针对该指令得到结果,如移动游戏角色至位置A。

对于终端而言,其上安装有客户端,如APP(application,应用)。客户端由于也会具有数据帧,且需要与服务器进行数据交互。为了与服务器数据同步,则需要通过数据帧,来联结客户端和服务器的数据同步。在客户端进行了操作后,需要向服务器发送该操作数据,如操作指令等。客户端可以通过帧数据包来发送该操作数据,且该帧数据包可以携带有自身数据包的帧包标识(也可以称为帧标识),如帧包编号(也可以称为帧编号)。以与服务器进行数据同步联结。

例如,根据前文所述,如图2所示,游戏用户A通过自己手机安装的游戏APP(即客户端A),与游戏服务器(即服务器)连接,进入到游戏场景中。该游戏是大型多人游戏,多人同时在同一游戏场景中,进行游戏互动。游戏用户A在进入到游戏场景后,可以进行游戏操作,该游戏用户A操作自己的游戏角色A。游戏用户A通过游戏APP移动其对应游戏角色A至位置。游戏APP通过手机响应该操作指令,得到操作结果,如执行步骤201:将游戏角色(即游戏角色A)移动到坐标(0,1)。同时,在执行该操作指令的情况下,且该当前数据帧对应的时间段内,仅有该一个操作指令,则游戏APP将该操作指令通过帧数据包进行发送,至游戏服务器,且该帧数据包携带有其自身的帧包编号,如01。即执行步骤202:发送帧数据包至服务器。

游戏服务器接收到该帧数据包后,可以先将该帧数据包缓存至预置缓存区域中,如存储队列中。以等待对应的时间点到来时,即对应帧到来时,执行或运行该帧数据包。当对应的时间点到来时,游戏服务器从该存储队列中获取到该帧数据包。应理解,每当对应的时间点到来时,游戏服务器都会从存储队列中依次取出对应的帧数据包,来运行或者执行,从而修改游戏中的对应的数据,如游戏角色的数据。游戏服务器解析该帧数据包,并获取到该操作指令,并得到操作结果,如步骤203:游戏角色移动到坐标(0,1)。

需要说明的是,缓存区可以是一个定长的缓存队列,保存了近一段时间(如10分钟)的多个帧数据包。

对于每个数据帧而言,若该数据帧中有多个操作指令,则可以发送该多个操作指令,且客户端可以同时发送该操作指令,且响应该操作指令,得到操作结果,来提高数据的同步效果。

102:存储第一操作结果与第一帧包标识的对应关系至对应存储队列。

例如,根据前文所述,同时,游戏服务器缓存该帧包编号以及该执行结果的对应关系,如执行步骤204:缓存帧包标识01(即帧包编号01)对应的游戏角色移动到坐标(0,1)。可以缓存到另一个缓存队列中,即存储队列。

需要说明的是,除了存储队列外,还可以是数组等其它存储形式,此处不作过多限定,但凡属于可存储该对应关系的存储形式,均可以属于本申请实施例的保护范畴。

103:通过帧消息包发送第一操作结果至对应的多个终端,且帧消息包携带有与第一帧包标识相对应的第二帧包标识,以使终端在接收到帧消息包后,通过第二帧数据包返回第二操作指令以及在该第二操作指令前的操作结果对应的帧包标识,以对第二操作指令进行验证。

其中,第二帧包标识是与第一帧包标识对应的标识,如编号。该标识可以与第一帧包标识相同,也可以不同,但是存在着对应关系。该第二帧包标识与该操作指令对应,那么也可以与该操作指令对应的执行结果对应。该第二帧包标识是由服务器确定的,可以是服务器当前的帧标识作为该第二帧包标识。

例如,根据前文所述,游戏服务器缓存完后,可以将该操作指令,如将游戏角色(即游戏角色A)移动到坐标(0,1),通过帧消息包发送至其它游戏客户端(即其它客户端B),该其它游戏客户端的数量可以为多个。即向每个其它游戏客户端都发送该帧消息包,且该帧消息包也携带有与该操作指令对应的帧包编号,如10。如执行步骤205:发送帧消息包。还需要说明的是,该帧消息包携带的帧包标识也可以用于表示该帧消息包自身的标识。以使其它终端安装的游戏APP接收到该帧消息包,并执行该帧消息包并返回操作结果对应的其它操作指令以及该操作结果对应的帧包标识,以进行验证。其中,其它终端的具体执行步骤如下。

如,其它游戏APP接收到该帧消息包后,解析该帧消息包,拿到该操作结果,如游戏角色(即游戏角色A)移动到坐标(0,1)后做插值表现,并展示在其它游戏APP(即其它客户端)所属的手机上,以使其他游戏用户看到该操作结果。其它游戏APP记录下该操作结果的帧包编号10。该帧包遍号也可以是游戏用户A的游戏角色A的对应帧包编号,或者成为帧标号。

如图2所示,其他游戏用户B在看到该操作结果后,如游戏角色A移动到坐标(0,1),可以执行操作指令,如攻击坐标(0,1)的游戏角色。在数据帧对应的时间段内,其它游戏APP(即其它客户端B)通过手机响应该操作指令,即该数据帧内仅有该一个操作指令。执行步骤208:攻击坐标(0,1)的游戏角色。同时,其它游戏APP通过帧数据包将该操作指令发送至游戏服务器,即执行步骤211:发送帧数据包。且该帧数据包除了携带有操作指令外,还有上述帧包编号10,即接收到的操作结果:游戏角色(即游戏角色A)移动到坐标(0,1)对应的帧包编号10。同时,该帧数据包还可以携带有自身的帧包编号,如002,以表示自身帧包的标识。

此外,在游戏服务器接收到该帧数据包前,还可以继续接收游戏用户A的游戏APP发送来的帧数据包。如,游戏用户A持续移动游戏角色A至坐标(0,2)。其游戏APP(即客户端A)响应该操作指令,执行步骤206:游戏角色(即游戏角色A)移动到坐标(0,2),同时执行步骤207:发送帧数据包。该发送过程与前文阐述的相似,此处就不再赘述。游戏服务器(即服务器)接收到帧数据包后,根据前文所述缓存至缓存队列中,以等待执行。在执行的时候,游戏服务器解析该帧数据包,执行操作指令,获取到操作结果,如服务器执行步骤209:游戏角色(即游戏角色A)移动到坐标(0,2)。然后,执行步骤210:缓存帧包标识02对应的游戏角色移动到坐标(0,2)。其中具体的执行手段前文已经阐述过了,此处就不再赘述。

需要注意的是,此时,该游戏用户A的游戏角色A已经不在坐标(0,1)。已经移动到了坐标(0,2),但是其它游戏用户还不知道,还在针对游戏角色A在坐标(0,1)处进行操作,如攻击在坐标(0,1)该游戏角色A。

服务器在接收到其它终端返回的帧数据包后,为了较为准确地确定该帧数据包的操作,需要对该帧数据包进行较为精准地验证,以提高用户的体验感。

具体的,该方法100还包括:接收至少一个终端返回的第二帧数据包,并获取第二帧数据包中在该第二操作指令前的操作结果对应的帧包标识;基于帧包标识,对第二帧数据包携带的第二操作指令进行操作验证;当验证通过后,发送第二操作结果至对应的终端。

其中,基于帧包标识,对第二帧数据包携带的第二操作指令进行验证,包括:若帧包标识是第二帧包标识,则根据第二帧包标识与第一帧包标识的对应关系以及第一帧包标识与第一操作结果的对应关系,确定第二操作指令是针对第一操作结果的操作指令,则验证通过。

例如,根据前文所述,由于游戏服务器在接收到其它游戏APP发送来的帧数据包后,根据前文所述的方式进行处理,此处就不再赘述。仅说明:游戏服务器解析该帧数据包,获取到其中的帧包标识01,即帧包编号,即游戏服务器执行步骤212:获取帧数据包中的帧包标识01。在获取与该标识对应的操作结果,即上述游戏角色A移动到坐标(0,1),即执行步骤213:获取帧包标识01对应的游戏角色移动到坐标(0,1),以进行验证。游戏服务器由于获取到该帧数据包中的操作指令是针对游戏角色移动到坐标(0,1)这个操作结果的。那么就可以确定验证通过。如果,获取到的操作结果是游戏角色移动到坐标(0,2)的话,则游戏服务器接收到的由其它游戏APP发送的该帧数据包中的操作指令与该获取到操作结果不匹配,那么验证无法通过。或者是,游戏角色A没有出现在过坐标(0,1)上过,那么也无法验证通过。在验证通过后,通过游戏服务器就可以执行该帧数据包中的操作指令,如攻击坐标(0,1)的游戏角色A,确定第二操作结果。

具体的,当验证通过后,发送第二操作结果至对应的终端,包括:根据第一操作结果,执行第二操作指令,确定第二操作指令对第一操作结果产生的第二操作结果;将第二操作结果发送至对应的终端。

例如,根据前文所述,游戏服务器执行上述操作指令,攻击游戏角色A移动到坐标(0,1),由于是攻击的该坐标上的游戏角色,那么就会攻击成成功。应理解,其它游戏用户在攻击坐标(0,1)的游戏角色A攻击的不准,那么,这个操作指令就不是向着坐标(0,1)的游戏角色A的,是向着,如错误的位置,如坐标(0,3)的点攻击的。但是实际上游戏角色A是在其它游戏用户的手机展示在坐标(0,1)上的。这个时候,即使验证是可以通过的,但是攻击是失败的。或者也可以验证就是无法通过的,因为该操作指令是针对坐标(0,3)的点。

当服务器验证通过接收到的帧数据包后,则可以继续重复执行前文阐述的步骤。可以继续发送后续的操作结果,如攻击游戏角色A成功,游戏角色A失血3个点数。则可以再将这些操作结果返回至其它游戏APP。返回方式也是如前文所述,此处就不再赘述。

或者,如果其它游戏APP也发送了其它帧数据包,或者前述游戏服务器接收到的帧数据包中还有其它操作指令,如其它游戏用户,如游戏用户B的游戏角色B移动到坐标(2,3)。也可以继续通过帧数据包将该操作结果发送至其它游戏APP。

具体的,第二帧数据包还携带有表示其自身帧数据包的第三帧包标识;其中,当验证通过后,该方法100还包括:存储第二操作结果与第三帧包标识的对应关系;其中,发送第二操作结果至对应的终端,包括:通过帧消息包发送第二操作结果至对应的多个终端,且该帧消息包携带有与所述第三帧包标识对应的帧包标识。

由于前文已经详细阐述过此处了,就不再赘述了。仅说明:游戏服务器继续发送帧数据包。由于前文所述的游戏服务器接收到其它游戏APP的帧数据包对游戏角色A进行攻击,该帧数据包除了具有帧包编号01外,还可以具有其自身的帧包编号002,那么游戏服务器可以基于该编号,继续确定对应的其它帧包编号,以在后续发生帧消息包时,进行携带,也可以作为后续的帧消息包的编号。以此周而复始。

通过本申请实施例可以解决服务器校验数据无法同步的问题,但是因为每个客户端网络连接到服务器可以是不同的时机,所以帧标识,或者帧包标识不会完全一一对应。故为了保证验证的效果,要确保客户端帧包标识与服务器帧标识的相对应。

具体的,该方法100还包括:接收至少一个终端发送的帧启动消息包,并确定帧启动消息包的帧包起始标识;确定服务端当前的帧标识,并创建帧包起始标识与帧标识的对应关系;根据帧包起始标识与帧标识的对应关系,确定待接收终端的帧包标识。即由第一帧包标识确定第二帧包标识。

由于服务器以及客户端的帧包标识,或者帧标识都是按照顺序进行标识的,所以基于该顺序,来确定客户端与服务器之间的标识对应关系,如在初始时,客户端与服务器相差3个帧标识,或者帧包标识,那么以后该客户端在发送帧包标识,则服务器可以基于该3个帧标识来转换接收到的帧包标识,为服务器的帧标识。

更具体的,根据对应关系,以及发送终端的帧包标识,确定服务端对应的帧标识;根据对应关系,以及服务端对应的帧标识,确定待接收终端的帧包标识。

如,根据对应关系,以及发送第一帧包标识的终端,确定第一帧包标识相对于服务端相差的第一帧标识;基于第一帧包标识以及第一帧标识得到第二帧标识;根据对应关系,以及发送第二帧包标识所至的终端,确定第二帧标识相对于所至的终端相差的第三帧标识;基于第三帧标识得到第二帧包标识。

其中,第二帧标识是指服务端的帧标识。

例如,根据前文所述,如图3所示,游戏用户A启动手机的游戏APP,即客户端A,手机响应用户的启动指令,启动该游戏APP,与游戏服务器,即服务器,进行网络连接。由于是刚开始与游戏服务器连接,则该游戏APP确定当前的帧包标识为0,即帧包编号为0。则手机启动游戏APP,游戏APP开始启动,即执行步骤301:启动客户端确定当前的帧包起始标识0。执行步骤302:发送帧启动消息包。游戏服务器接收到该消息包后,确定自身的当前的帧标识,如执行步骤303:记录服务器的当前的帧标识100。游戏服务器继续前文所述的接收其它游戏APP发送的帧数据包,执行步骤304:运行帧数据。应理解,游戏服务器在运行帧数据时,即运行帧数据包时,游戏服务器的帧标识是随着变化的。如当前游戏服务器接收到帧启动消息包的帧标识是100。但是随着时间的变化,游戏服务器的帧标识也随着变化。

同时,游戏服务器还可以继续接收其它游戏APP的帧启动消息包,具体的方式前文所述,此处就不在赘述。针对其它游戏APP,如图3所示,游戏服务器,即服务器,执行步骤306:接收帧启动消息包。然后执行步骤307:记录服务器的当前的帧标识101。后续游戏服务器则可以接收已经发送过帧启动消息包的客户端发送的帧数据包了。具体的帧数据包的接收和处理过程与前文所述相似,此处就不再赘述。如游戏APP的客户端A执行步骤308:游戏角色移动到坐标(0,1),同时执行步骤309:发送帧数据包,其中携带有操作指令,如移动操作指令。游戏服务器接收到该帧数据包后,在进行处理前,或者在进行缓存前先对帧标识,或者帧包标识进行转换,该帧数据包的帧包标识可以为10。游戏服务器执行步骤310:将帧数据包的帧包标识10转换为服务器的帧标识110,即初始100+10=110,即第二帧标识。应理解,由于帧包起始标识0,相差标识10,即10-0=10,即第一帧标识。然后,在根据前文所述的方式,进行和帧消息包的发送。游戏服务器执行步骤311:执行帧标识110对应的游戏角色移动到坐标(0,1)。在发送帧消息包前,游戏服务器还要基于发送至的其它游戏APP,来转换帧包标识,或者帧标识。基于前文可知,当其他游戏APP,即其它客户端B其起始帧包标识对应的游戏服务器的帧标识110。那么该帧消息包中与操作结果:游戏角色移动到坐标(0,1)对应的帧包标识为9或者帧标识,这里可以对应为上述第二帧包标识,即110-101=9。应理解,由于帧包起始标识0,所以9-0=9,9也是第三帧标识,则游戏服务器执行步骤312将帧标识110转换为其它客户端的帧包标识9。应理解,对于不同的其它客户端而言,对应的帧包标识可以是不一样的,这里仅为了举例,选择了一种方式进行说明,对于实际场景中,应该可以是多种的。之后,游戏服务器执行步骤313:基于帧包标识9,发送帧消息包。此处就不再赘述。

通常智能终端上的客户端会通过改变帧率的方式,更加领先服务器,即在预定时间内,终端安装的客户端的运行帧速率在预置范围内大于服务端的运行帧速率,使得服务器会在缓存中缓存1-2个客户端帧数据包进行等待处理。从而可以在网络波动的情况下优化客户端的表现,使其更加平滑。但是缓存的帧数据包不宜过多,会造成服务器数据过于延迟于客户端。由此,在过于延迟的情况下,需要调整客户端的帧率,以更好地优化客户端的表现。

具体的,该方法100还包括:获取当前缓存的帧数据包的缓存数量,并将缓存数量发送至对应的终端,以使终端根据该缓存数量以及预置时间内的目标数量,确定是否改变自身的运行帧速率。

根据前文可知,在预定时间内,终端安装的客户端的运行帧速率大于服务端的运行帧速率,以保证客户端在网络波动的情况下优化客户端的表现,使其更加平滑。为了更加优化,维持该平滑表现还可以对帧速率进行调整。

例如,根据前文所述,服务器确定出针对每个网络连接的终端的客户端的帧数据包的缓存数量,并发送给对应的客户端。客户端接收到后,确定出近一段时间,如10秒内,的网络延迟波动状态的帧数据包缓存的目标数量。确定方式可以为:记录近一段时间的延迟,比如10秒内每一秒的ping(Packet Internet Groper,因特网包探索器)值。然后计算ping值的标准差,根据标准差的大小计算出对应帧数据包缓存的目标数量。如果目标数量比当前服务器缓存数量多,则客户端进行追帧操作。如客户端以更快的帧率运行一段时间,如10s。如果目标数量比当前服务器缓存数量少,则客户端进行减帧操作,客户端以更小的帧率运行一段时间,如10s。最终达到客户端的目标数量与缓存数量一致。或,

具体的,该方法100还包括:获取当前缓存的帧数据包的缓存数量;确定终端在预置时间内帧数据包的目标数量;根据该缓存数量以及目标数量,确定是否改变终端自身的运行帧速率;若是,则向终端发送改变运行帧速率的消息。

其中,通过服务器来确定是否改变终端自身的运行帧速率。

确定终端在预置时间内帧数据包的目标数量可以包括:接收终端发送的该目标数量。而终端确定该目标数量的方式前文已经阐述过了,此处就不再赘述。

服务器确定了该目标数量后,可以根据前文所述的方式来确定终端自身是否进行运行帧速率的改变。此处就不再赘述。

其中,服务器确定是否改变终端自身的运行帧速率,包括:若缓存数量大于目标数量,确定减小终端自身的运行帧速率;其中,若是,则向终端发送改变运行帧速率的消息,包括:发送减小运行帧速率的消息至终端。

由于前文已经阐述过了,此处就不再赘述。仅说明:在服务器根据前文方式确定出终端自身需要减小运行帧速率后,则发送表示减少运行帧速率的消息给终端。终端接收到给消息后,则减小自身的运行帧速率。如终端中的客户端以更小的帧率运行一段时间,如10s。最终达到客户端的目标数量与缓存数量一致。由于服务器来确定终端(即终端中的客户端)是否需要改变运行帧速率。则服务器可以定时进行确定,直至达到客户端的目标数量与缓存数量一致。

另,服务器确定是否改变终端自身的运行帧速率,包括:若缓存数量小于目标数量,确定增大终端自身的运行帧速率;其中,若是,则向终端发送改变运行帧速率的消息,包括:发送增大运行帧速率的消息至终端。

此处的实现方式与前文阐述的方式相似,就不再赘述。

基于上述相似的发明构思,图4为本申请一示例性实施例的一种数据的同步验证方法的流程示意图。本申请实施例提供的该方法400可以由终端执行,如,手机中的客户端等。在预定时间内,终端的运行帧速率在预置范围内大于服务端的运行帧速率,该方法400包括以下步骤:

401:接收帧消息包,帧消息包携带有操作结果以及与操作结果对应的帧包标识。

402:展示操作结果,并接收针对操作结果的操作指令。

403:通过帧数据包返回操作指令以及与操作结果对应的帧包标识,以对操作指令进行验证。

由于步骤401-403前文已经阐述过了,此处就不再赘述。仅说明,本步骤402的操作结果是上述第一操作结果。操作指令是指第二操作指令。步骤401中的帧包标识可以是该帧消息包自身的标识,也可以是操作结果对应的帧标识。

此外,该方法400还包括:接收服务端的当前缓存的帧数据包的缓存数量;确定预置时间内帧数据包的目标数量;根据该缓存数量以及目标数量,确定是否改变自身的运行帧速率。

具体的,根据该缓存数量以及目标数量,确定是否改变自身的运行帧速率,包括:若缓存数量大于目标数量,确定减小自身的运行帧速率。

此外,该方法400还包括:若缓存数量小于目标数量,确定增大自身的运行帧速率。

由于前文已经阐述过了,此处就不再赘述。

另,本方法400未能详细描述的内容,还可以参照上述方法100中的各个步骤。

基于上述相似的发明构思,本申请另一示例性实施例提供的一种数据的同步系统的示意图。本申请实施例提供的该系统可以包括:服务端,如服务器,以及终端,如终端的客户端。在预定时间内,终端的运行帧速率在预置范围内大于服务端的运行帧速率。

服务端,接收第一帧数据包,帧数据包携带有第一操作指令以及第一帧包标识,执行第一操作指令,获取第一操作结果;存储操作结果与第一帧包标识的对应关系至对应存储队列;通过帧消息包发送操作结果至对应的多个终端,且帧消息包携带有与第一帧包标识相对应的第二帧包标识。

终端,在接收到帧消息包后,展示操作结果,并接收针对操作结果的第二操作指令;通过第二帧数据包返回第二操作指令以及与操作结果对应的帧包标识,以对第二操作指令进行验证。

服务器,确定当前缓存的帧数据包的缓存数量。

终端,接收服务端的当前缓存的帧数据包的缓存数量;确定预置时间内帧数据包的目标数量;根据该缓存数量以及所述目标数量,确定是否改变自身的运行帧速率。

终端,若缓存数量大于所述目标数量,确定减小自身的运行帧速率。

终端,若缓存数量小于所述目标数量,确定增大自身的运行帧速率。

由于前文已经详细阐述过该系统的具体实施方式,此处就不再赘述。

另,本系统未能详细描述的内容,还可以参照上述方法100中的各个步骤。

图5为本申请一示例性实施例提供的一种数据的同步验证装置的结构框架示意图。该装置500可以应用于服务设备,如服务器。在预定时间内,终端安装的客户端的运行帧速率在预置范围内大于服务端的运行帧速率。该装置500包括接收模块501、存储模块502以及发送模块503;以下针对各个模块的功能进行详细的阐述:

接收模块501,用于接收第一帧数据包,帧数据包携带有第一操作指令以及第一帧包标识,执行第一操作指令,获取第一操作结果。

存储模块502,用于存储第一操作结果与第一帧包标识的对应关系至对应存储队列。

发送模块503,用于通过帧消息包发送第一操作结果至对应的多个终端,且帧消息包携带有与第一帧包标识相对应的第二帧包标识,以使终端在接收到帧消息包后,通过第二帧数据包返回第二操作指令以及在该第二操作指令前的操作结果对应的帧包标识,以对第二操作指令进行验证。

此外,接收模块501,用于接收至少一个终端返回的第二帧数据包,并获取第二帧数据包中在该第二操作指令前的操作结果对应的帧包标识;该装置500还包括:验证模块,用于基于所述帧包标识,对所述第二帧数据包携带的第二操作指令进行操作验证;发送模块503,用于当验证通过后,发送第二操作结果至对应的终端。

此外,验证模块,用于包括:若帧包标识是第二帧包标识,则根据第二帧包标识与第一帧包标识的对应关系以及第一帧包标识与第一操作结果的对应关系,确定第二操作指令是针对第一操作结果的操作指令,则验证通过。

此外,发送模块503,包括:第一确定单元,用于根据第一操作结果,执行第二操作指令,确定第二操作指令对第一操作结果产生的第二操作结果;发送单元,用于将第二操作结果发送至对应的终端。

其中,第二帧数据包还携带有表示其自身帧数据包的第三帧包标识;其中,当验证通过后,存储模块502,还用于存储第二操作结果与第三帧包标识的对应关系;发送单元,还用于通过帧消息包发送第二操作结果至对应的多个终端,且该帧消息包携带有与第三帧包标识对应的帧包标识。

此外,接收模块501,还用于接收至少一个终端发送的帧启动消息包,并确定帧启动消息包的帧包起始标识;该装置500还包括确定模块,用于确定服务端当前的帧标识,并创建帧包起始标识与帧标识的对应关系;根据帧包起始标识与帧标识的对应关系,确定待接收终端的帧包标识。

具体的,确定模块,包括:第二确定单元,用于根据对应关系,以及发送终端的帧包标识,确定服务端对应的帧标识;根据对应关系,以及服务端对应的帧标识,确定待接收终端的帧包标识。

此外,该装置500还包括:获取模块,用于获取当前缓存的帧数据包的缓存数量,并将缓存数量发送至对应的终端,以使终端根据该缓存数量以及预置时间内的目标数量,确定是否改变自身的运行帧速率。或,

获取模块,还用于获取当前缓存的帧数据包的缓存数量;确定模块,还用于确定终端在预置时间内帧数据包的目标数量;根据该缓存数量以及目标数量,确定是否改变终端自身的运行帧速率;若是,则发送模块503,由于向终端发送改变运行帧速率的消息。

具体的,确定模块,用于若缓存数量大于目标数量,确定减小终端自身的运行帧速率;其中,发送模块503,用于发送减小运行帧速率的消息至终端。

具体的,确定模块,用于若缓存数量小于目标数量,确定增大终端自身的运行帧速率;其中,发送模块503,用于发送增大运行帧速率的消息至终端。

图6为本申请一示例性实施例提供的一种数据的同步验证装置的结构框架示意图。该装置600可以应用于终端设备,如终端设备中的客户端。在预定时间内,终端的运行帧速率在预置范围内大于服务端的运行帧速率。该装置600包括接收模块601、展示模块602以及返回模块603;以下针对各个模块的功能进行详细的阐述:

接收模块601,用于接收帧消息包,帧消息包携带有操作结果以及与操作结果对应的帧包标识。

展示模块602,用于展示操作结果,并接收针对操作结果的操作指令。

返回模块603,用于通过帧数据包返回操作指令以及与操作结果对应的帧包标识,以对操作指令进行验证。

此外,接收模块601,还用于接收服务端的当前缓存的帧数据包的缓存数量;该装置600还包括:确定模块,用于确定预置时间内帧数据包的目标数量;根据该缓存数量以及目标数量,确定是否改变自身的运行帧速率。

此外,确定模块,用于若缓存数量大于目标数量,确定减小自身的运行帧速率。

此外,确定模块,用于若缓存数量小于目标数量,确定增大自身的运行帧速率。

另,本装置600未能详细描述的内容,还可以参照上述装置500中的各个步骤。

以上描述了图5所示的装置500的内部功能和结构,在一个可能的设计中,图5所示的装置500的结构可实现为计算设备,如,服务器。在预定时间内,终端安装的客户端的运行帧速率在预置范围内大于服务端的运行帧速率。如图7所示,该设备700用于在第一设备与第二设备之间进行数据传输,设备700可以包括:存储器701、处理器702以及通信组件703;

存储器701,用于存储计算机程序。

处理器702,用于执行计算机程序,以用于:

通信组件703,用于接收第一帧数据包,帧数据包携带有第一操作指令以及第一帧包标识。

处理器702,用于执行所述计算机程序,以用于:执行第一操作指令,获取第一操作结果;存储第一操作结果与第一帧包标识的对应关系至对应存储队列。

通信组件703,用于通过帧消息包发送第一操作结果至对应的多个终端,且帧消息包携带有与第一帧包标识相对应的第二帧包标识,以使终端在接收到帧消息包后,通过第二帧数据包返回第二操作指令以及与第二操作指令的操作结果对应的帧包标识,以对第二操作指令进行验证。

此外,通信组件703,还用于:接收至少一个终端返回的第二帧数据包。处理器702,还用于获取第二帧数据包中在该第二操作指令前的操作结果对应的帧包标识;基于帧包标识,对第二帧数据包携带的第二操作指令进行操作验证;当验证通过后,通信组件703,还用于:发送第二操作结果至对应的终端。

具体的,处理器702,具体用于:若帧包标识是第二帧包标识,则根据第二帧包标识与第一帧包标识的对应关系以及第一帧包标识与第一操作结果的对应关系,确定第二操作指令是针对第一操作结果的操作指令,则验证通过。

具体的,处理器702,具体用于:根据第一操作结果,执行第二操作指令,确定第二操作指令对第一操作结果产生的第二操作结果;通信组件603,用于:将第二操作结果发送至对应的终端。

其中,第二帧数据包还携带有表示其自身帧数据包的第三帧包标识;其中,当验证通过后,处理器702,还用于:存储第二操作结果与第三帧包标识的对应关系;通信组件703,具体用于:通过帧消息包发送第二操作结果至对应的多个终端,且该帧消息包携带有与第三帧包标识对应的帧包标识。

此外,通信组件703,还用于:接收至少一个终端发送的帧启动消息包,此外,处理器702,具体用于:确定帧启动消息包的帧包起始标识;确定服务端当前的帧标识,并创建帧包起始标识与帧标识的对应关系;根据帧包起始标识与帧标识的对应关系,确定待接收终端的帧包标识。

具体的,处理器702,具体用于:根据对应关系,以及发送终端的帧包标识,确定服务端对应的帧标识;根据对应关系,以及服务端对应的帧标识,确定待接收终端的帧包标识。

此外,处理器702,还用于:获取当前缓存的帧数据包的缓存数量,并将缓存数量发送至对应的终端,以使终端根据该缓存数量以及预置时间内的目标数量,确定是否改变自身的运行帧速率。或,

此外,处理器702,还用于:获取当前缓存的帧数据包的缓存数量;确定终端在预置时间内帧数据包的目标数量;根据该缓存数量以及目标数量,确定是否改变终端自身的运行帧速率;若是,则向终端发送改变运行帧速率的消息。

具体的,处理器702,具体用于:若缓存数量大于目标数量,确定减小终端自身的运行帧速率;发送减小运行帧速率的消息至终端。

具体的,处理器702,具体用于:若缓存数量小于目标数量,确定增大终端自身的运行帧速率;发送增大运行帧速率的消息至终端。

另外,本发明实施例提供了一种计算机存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现图1方法实施例中一种数据的同步验证方法的步骤。

以上描述了图6所示的装置600的内部功能和结构,在一个可能的设计中,图6所示的装置600的结构可实现为计算设备,如,终端。在预定时间内,终端的运行帧速率在预置范围内大于服务端的运行帧速率。如图8所示,该设备800用于在第一设备与第二设备之间进行数据传输,设备800可以包括:存储器801、处理器802以及通信组件803;

存储器801,用于存储计算机程序。

通信组件803,用于接收帧消息包,帧消息包携带有操作结果以及与所述操作结果对应的帧包标识。

处理器802,用于执行所述计算机程序,以用于:展示操作结果,并接收针对操作结果的操作指令。

通信组件803,用于通过帧数据包返回操作指令以及与操作结果对应的帧包标识,以对操作指令进行验证。

此外,通信组件803,还用于:接收服务端的当前缓存的帧数据包的缓存数量;处理器802,还用于:确定预置时间内帧数据包的目标数量;根据该缓存数量以及目标数量,确定是否改变自身的运行帧速率。

此外,处理器802,还用于:若缓存数量大于目标数量,确定减小自身的运行帧速率。

此外,处理器802,还用于:若缓存数量小于目标数量,确定增大自身的运行帧速率。

另,本设备800未能详细描述的内容,还可以参照上述设备700中的各个步骤。

另外,本发明实施例提供了一种计算机存储介质,计算机程序被一个或多个处理器执行时,致使一个或多个处理器实现图4方法实施例中一种数据的同步验证方法的步骤。

另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如201、202、203等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程多媒体数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程多媒体数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程多媒体数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程多媒体数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

技术分类

06120112161898