数据同步方法、装置、电子设备和存储介质与流程

未命名 09-01 阅读:96 评论:0


1.本发明涉及数据同步技术领域,尤其是涉及一种数据同步方法、装置、电子设备和存储介质。


背景技术:

2.在多人同时在线游戏中,需要保证不同游戏终端所显示的游戏状态和操作执行结果一致,因此,需要进行不同游戏终端的数据同步。
3.现有的数据同步技术分为帧同步技术和状态同步技术,帧同步技术中,服务器充当数据转发的角色,将不同终端的操作数据收集起来后转发到各个终端执行游戏逻辑;而状态同步技术中,服务器则充当游戏逻辑的执行角色,并将执行结果分发给各个终端,各个终端自行更新显示状态。其中,帧同步技术由于游戏逻辑均部署在终端,容易被作弊程序篡改,影响游戏的公平性;而状态同步技术虽然能够避免被篡改,却需要传输巨大的数据量,容易造成游戏出现卡顿现象。


技术实现要素:

4.有鉴于此,本发明的目的在于提供一种数据同步方法、装置、电子设备和存储介质,以减少游戏卡顿现象的发生。
5.第一方面,本发明实施例提供了一种数据同步方法,应用于游戏服务端,方法包括:获取至少一个目标游戏客户端的目标帧对应的状态变化操作,所述状态变化操作包括至少一个第一状态变化操作和至少一个第二状态变化操作;对至少一个第一状态变化操作进行状态变化逻辑处理,得到目标帧的第一状态变化数据;将目标帧的第一状态变化数据和所述至少一个第二状态变化操作打包为目标同步消息;将所述目标同步消息发送至每个所述目标游戏客户端。
6.第二方面,本发明实施例提供了另一种数据同步方法,应用于游戏客户端,方法包括:当接收到游戏服务端发送的目标同步消息时,对所述目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态;对所述目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据;对所述游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态。
7.第三方面,本发明实施例提供了一种数据同步装置,应用于游戏服务端,装置包括:操作获取模块,用于获取至少一个目标游戏客户端的目标帧对应的状态变化操作,所述状态变化操作包括至少一个第一状态变化操作和至少一个第二状态变化操作;第一处理模块,用于对至少一个第一状态变化操作进行状态变化逻辑处理,得到目标帧的第一状态变化数据;消息打包模块,用于将目标帧的第一状态变化数据和所述至少一个第二状态变化操作打包为目标同步消息;消息分发模块,用于将所述目标同步消息发送至每个所述目标游戏客户端。
8.第四方面,本发明实施例提供了另一种数据同步装置,应用于游戏客户端,装置包
括:第一更新模块,用于当接收到游戏服务端发送的目标同步消息时,对所述目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态;第三处理模块,用于对所述目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据;第二更新模块,用于对所述游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态。
9.第五方面,本发明实施例提供了一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述数据同步方法。
10.第六方面,本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述数据同步方法。
11.本发明实施例带来了以下有益效果:
12.上述数据同步方法、装置、电子设备和存储介质,应用于游戏服务端时,包括:获取至少一个目标游戏客户端的目标帧对应的状态变化操作,所述状态变化操作包括至少一个第一状态变化操作和至少一个第二状态变化操作;对至少一个第一状态变化操作进行状态变化逻辑处理,得到目标帧的第一状态变化数据;将目标帧的第一状态变化数据和所述至少一个第二状态变化操作打包为目标同步消息;将所述目标同步消息发送至每个所述目标游戏客户端。该方式中,根据同步数据量的大小以及对游戏规则核心资源结算的异常容错率,将状态变化操作分为同步数据量小且异常容错率低的第一状态变化操作,和同步数据量大且异常容错率高的第二状态变化操作,针对第一状态变化操作采用状态同步方式进行数据同步,而针对第二状态变化操作则采用帧同步方式进行数据同步,从而避免直接转发数据量大的第二状态变化数据,而是转发第二状态变化操作到各个游戏客户端自行生成第二状态变化数据,实现游戏服务端与各个游戏客户端的数据同步,减少游戏卡顿现象发生的同时,游戏规则核心资源也不容易出现错误或被篡改。
13.上述数据同步方法、装置、电子设备和存储介质,应用于游戏客户端时,包括:当接收到游戏服务端发送的目标同步消息时,对所述目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态;对所述目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据;对所述游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态。该方式中,在游戏客户端中,当接收到目标同步消息时,由于第一状态变化数据是经过游戏服务端进行状态变化逻辑处理的数据,因此可以直接进行显示状态更新,而第二状态变化操作则先在游戏客户端进行状态变化逻辑处理,得到与游戏服务端相同的第二状态变化数据之后,进行显示状态更新,使得游戏服务端的第二状态变化数据无需通过数据转发到游戏客户端即可保持同步,从而减少需要同步的数据量,进而避免游戏卡顿现象的发生。
14.本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
15.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
16.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为本发明实施例中数据同步方法的一个实施例流程图;
18.图2为本发明实施例中数据同步方法的另一个实施例流程图;
19.图3为本发明实施例中数据同步方法的另一个实施例流程图;
20.图4为本发明实施例提供的一种数据同步装置的一个示意图;
21.图5为本发明实施例提供的一种数据同步装置的另一个示意图;
22.图6为本发明实施例提供的一种电子设备的示意图。
具体实施方式
23.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
24.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
25.可以理解的是,为了保证参与同一局游戏的所有游戏客户端都能看到相同的游戏状态,本发明通过混合帧同步和状态同步的方式进行服务端和每个游戏客户端的数据同步,能够结合帧同步数据量小、状态同步数据不易被篡改的优点,减少游戏卡顿现象的发生。需要说明的是,本发明所适用的游戏框架分为逻辑层和表现层,其中,逻辑层用于处理游戏规则逻辑层面的数据,如在对战游戏中,逻辑层用于记录战场相关的数据、各个游戏角色的属性状态,当角色使用技能时,也是通过逻辑层进行资源结算、效果判定、并最终对受技能影响的角色应用属性变化;而表现层则用于将逻辑层处理得到的数据可视化地呈现在游戏终端,涉及到游戏场景、动作和特效等表现层面的处理,如在对战游戏中,角色使用技能时,表现层用于控制角色模型播放动作、创建相应攻击和子弹特效、并在判定为受击的角色处播放受击动作和特效等。
26.基于上述的游戏框架,逻辑层用于状态变化逻辑处理,表现层用于显示状态更新,逻辑层可以部署在游戏服务端和/或游戏客户端,表现层通常部署在游戏客户端。在帧同步方式中,逻辑层和表现层部署在每个游戏客户端,游戏服务端用于收集所有游戏客户端上传的一帧操作,并广播给所有游戏客户端,游戏规则逻辑层面的处理和可视化的效果计算均在游戏客户端中进行,从而实现各个客户端的状态同步;而在状态同步方式中,逻辑层部
署在游戏服务端,每个游戏客户端仅部署表现层,游戏服务端收集到所有游戏客户端一帧的操作之后,通过逻辑层执行所有游戏客户端一帧的操作,再根据逻辑层执行结果,将这一帧触发的状态变化事件广播给所有游戏客户端,所有游戏客户端接收到广播之后,通过表现层进行可视化的效果呈现,从而实现各个客户端的状态同步。本发明混合帧同步方式和状态同步方式进行服务端和每个游戏客户端的数据同步,能够结合帧同步数据量小、状态同步数据不易被篡改的优点,减少游戏卡顿现象的发生。
27.需要说明的是,虚拟游戏中进行数据处理的最小时间单位称为帧,逻辑层和表现层均是针对一帧的数据量进行处理和呈现,例如,当逻辑层和表现层的帧率(frame rate)均为10帧每秒时,一帧的数据量就是1000/10=100毫秒内的数据量,逻辑层和表现层每100毫秒推进(tick)一次,具体帧率此处不做限定,逻辑层和表现层的帧率可以相同,也可以不同,具体此处不做限定。
28.可以理解的是,游戏服务端可以是一个服务器,也可以是服务器集群、分布式系统等服务器组合,当数据同步方法运行于服务器时,该方法则可以基于云交互系统来实现与执行,其中,云交互系统包括服务器(即游戏服务端)和客户端设备(即游戏客户端)。
29.在一可选的实施方式中,云交互系统下可以运行各种云应用,例如:云游戏。以云游戏为例,云游戏是指以云计算为基础的游戏方式。在云游戏的运行模式下,游戏程序的运行主体和游戏画面呈现主体是分离的,数据同步方法的储存与运行是在云游戏服务器上完成的,客户端设备的作用用于数据的接收、发送以及游戏画面的呈现,举例而言,客户端设备可以是靠近用户侧的具有数据传输功能的显示设备,如,移动终端、电视机、计算机、掌上电脑等;但是进行信息处理的为云端的云游戏服务器。在进行游戏时,玩家操作客户端设备向云游戏服务器发送操作指令,云游戏服务器根据操作指令运行游戏,将游戏画面等数据进行编码压缩,通过网络返回客户端设备,最后,通过客户端设备进行解码并输出游戏画面。
30.在一可选的实施方式中,以游戏为例,本地终端设备存储有游戏程序并用于呈现游戏画面。本地终端设备用于通过图形用户界面与玩家进行交互,即,常规的通过电子设备下载安装游戏程序并运行。该本地终端设备将图形用户界面提供给玩家的方式可以包括多种,例如,可以渲染显示在终端的显示屏上,或者,通过全息投影提供给玩家。举例而言,本地终端设备可以包括显示屏和处理器,该显示屏用于呈现图形用户界面,该图形用户界面包括游戏画面,该处理器用于运行该游戏、生成图形用户界面以及控制图形用户界面在显示屏上的显示。
31.为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中数据同步方法的一个实施例应用于游戏服务端,包括:
32.步骤s10、获取至少一个目标游戏客户端的目标帧对应的状态变化操作,状态变化操作包括至少一个第一状态变化操作和至少一个第二状态变化操作;
33.本实施方式中,目标帧是按照游戏服务端中逻辑层的tick帧率中的任意一帧,如游戏服务端中逻辑层的tick帧率为10帧/秒,那么每秒则包含10个目标帧,每个目标帧的时长为100毫秒,至少一个目标游戏客户端的目标帧对应的状态变化操作即是100毫秒内所有目标游戏客户端的所有状态变化操作,具体此处不做限定。本实施方式中,状态变化操作是指任意能够改变游戏状态的操作/指令,如玩家角色的移动操作、游戏系统事件的发生(如
天气的变化、物体的运动)、非玩家角色的进攻、时间的流逝等,具体此处不做限定。
34.可以理解的是,状态变化操作中包括至少一个第一状态变化操作和至少一个第二状态变化操作,其中第一状态变化操作可以是同步数据量较小的操作数据,第二状态变化操作可以是同步数据量较大的操作数据,在不同的虚拟游戏中,第一状态变化操作和第二状态变化操作可以分别指不同的操作数据,例如,在竞速类游戏中,移动相关的操作数据如果采用状态同步方式进行多客户端同步,同步数据量较大,相对的,非移动相关的操作数据同步数据量较小,因此,在竞速类游戏中,第一状态变化操作可以用于指示非移动相关的操作数据,第二状态变化操作可以用于指示移动相关的操作数据;又如在建筑类游戏中,对建筑物的移动操作数据的同步数据量可能大于非建筑物移动操作数据,因此,第一状态变化操作数据可以用于指示非建筑物移动操作数据,第二状态变化操作可以用于指示建筑物移动操作数据,针对不同类型的虚拟游戏可以灵活设置第一状态变化操作和第二状态变化操作,使得本发明的应用场景更广泛。
35.在一种实施方式中,上述步骤s10包括:按照第一预设帧率,接收至少一个目标游戏客户端一帧时长内上传的状态变化操作,得到所有目标游戏客户端的目标帧对应的状态变化操作。
36.可以理解的是,游戏服务端可以按照自己的帧率进行状态更新(tick),而无需与游戏客户端的状态更新帧率保持一致,通常情况下,游戏服务端的tick帧率低于游戏客户端的tick帧率,这样能够保证游戏逻辑准确运行的前提下,降低服务器的负载,而游戏客户端也可以根据自身设备的配置条件,选择不同的tick帧率,通常可选择的tick帧率包括20帧/秒、30帧/秒和60帧/秒,而服务器的tick帧率通常为10帧/秒,具体此处不做限定。
37.在一种实施方式中,在步骤s10之后,还包括:对至少一个第二状态变化操作进行状态变化逻辑处理,得到目标帧的第二状态变化数据。本实施方式中,针对同步数据量较大的第二状态变化操作,游戏服务端和所有目标游戏客户端均部署有针对第二状态变化操作的逻辑处理模块,该逻辑处理模块在游戏服务端中属于逻辑层中的一部分,在各个目标游戏客户端可以是独立于表现层的逻辑处理模块,也可以是属于表现层中的一部分,具体此处不做限定。针对第二状态变化操作,采用帧同步的方式实现各个游戏客户端的同步,也就是直接将第二状态变化操作转发到各个游戏客户端,由各个游戏客户端中第二状态变化操作的逻辑处理模块对至少一个第二状态变化操作进行状态变化逻辑处理,同样的,游戏服务端也通过第二状态变化操作的逻辑处理模块对至少一个第二状态变化操作进行状态变化逻辑处理,得到目标帧的第二状态变化数据,这样,同步数据量较大的第二状态变化数据无需通过游戏服务端转发至各个游戏客户端,游戏服务端和各个游戏客户端中的第二状态变化数据也能够保持同步状态,使得同步数据量减少,游戏卡顿现象也减少发生。
38.步骤s20、对至少一个第一状态变化操作进行状态变化逻辑处理,得到目标帧的第一状态变化数据;
39.可以理解的是,在虚拟游戏中,针对不同的状态变化操作,都可以进行状态变化的游戏逻辑处理,从而得到游戏逻辑的状态变化数据,例如,针对技能释放的第一状态变化操作,在游戏规则的逻辑层面,需要计算技能释放后的状态变化,如技能释放对象的技能资源数量减少、技能作用对象的血量/生命值减少等,得到新的游戏状态数据,也就是目标帧的第一状态变化数据。
40.在一种实施方式中,游戏服务端部署有目标游戏的逻辑层,用于对至少一个第一状态变化操作进行状态变化逻辑处理,得到目标帧的第一状态变化数据。其中,第一状态变化数据通过状态同步方式与所有目标游戏客户端进行同步,也就是通过游戏服务端中部署的逻辑层执行目标帧的所有第一状态变化操作,得到第一状态变化数据,游戏服务端再将目标帧的第一状态变化数据广播给所有游戏客户端,所有游戏客户端接收到广播之后,通过游戏客户端中部署的表现层进行第一状态变化数据的可视化效果显示,从而实现各个游戏客户端的状态同步。
41.步骤s30、将目标帧的第一状态变化数据和至少一个第二状态变化操作打包为目标同步消息;
42.本实施方式中,通过同步消息的方式将目标帧的第一状态变化数据和至少一个第二状态变化操作打包,用于发送至各个目标游戏客户端进行同步,例如,假设第一状态变化数据为技能资源的减扣数据,第二状态变化操作为移动相关指令,那么,则将技能资源的减扣数据和移动相关指令打包为目标同步消息,下发到参加同一局游戏的所有目标游戏客户端,从而实现所有目标游戏客户端的状态同步。
43.在一种实施方式中,针对不同帧的第一状态变化数据和第二状态变化操作,可以逐帧打包并推入目标同步消息队列中,目标同步消息队列中包含每帧的第一状态变化数据和至少一个第二状态变化操作,每个目标游戏客户端通过逐帧读取目标同步消息队列中的同步消息,进行游戏状态同步。
44.在一种实施方式中,上述步骤s40包括:对目标帧对应的至少一个第二状态变化操作进行指令生成,得到至少一个第二状态变化指令;将至少一个第二状态变化指令依次存入预设指令序列,得到目标指令序列;将第一状态变化数据和目标指令序列打包为目标同步消息。本实施方式中,每个第二状态变化操作会被转化为可以直接在逻辑层和表现层中执行的指令,并依次存入预设指令序列中,得到有时序性的目标指令序列,最后将目标指令序列和第一状态变化数据一起打包为同步消息,得到目标同步消息,以使得游戏客户端接收到目标同步消息后直接进行解包即可得到可执行且有时序性的第二状态变化指令,直接执行即可。
45.在一种实施方式中,第一状态变化操作用于指示非移动相关的状态变化操作,第二状态变化操作用于指示移动相关的状态变化操作。可以理解的是,移动相关的状态变化操作通常具有高同步数据量的特点,并且移动相关的状态变化操作通常还具有较高的异常容错率,即使出现错误或被游戏客户端篡改的情况,对游戏规则核心的影响也较小,容易被纠正,因此,本实施方式将移动相关的状态变化操作确定为第二状态变化操作,采用帧同步的方式进行数据同步,能够保证游戏规则核心数据安全的同时,降低同步数据量。
46.步骤s40、将目标同步消息发送至每个目标游戏客户端。
47.本实施方式中,游戏服务端将目标帧的目标同步消息发送到每个目标游戏客户端,每个目标游戏客户端接收到目标同步消息之后进行第一状态变化数据和第二状态变化数据的同步。在一种实施方式中,游戏服务端将目标同步消息发送至每个目标游戏客户端的同时,还向每个目标游戏客户端发送一条同步指令,触发每个目标游戏客户端进行第一状态变化数据和第二状态变化数据的同步。
48.上述实施方式提供的数据同步方法,根据同步数据量的大小以及对游戏规则核心
资源结算的异常容错率,将状态变化操作分为同步数据量小且异常容错率低的第一状态变化操作,和同步数据量大且异常容错率高的第二状态变化操作,针对第一状态变化操作采用状态同步方式进行数据同步,而针对第二状态变化操作则采用帧同步方式进行数据同步,从而避免直接转发数据量大的第二状态变化数据,而是转发第二状态变化操作到各个游戏客户端自行生成第二状态变化数据,实现游戏服务端与各个游戏客户端的数据同步,减少游戏卡顿现象发生的同时,游戏规则核心资源也不容易出现错误或被篡改。
49.请参阅图2,本发明实施例中数据同步方法的另一个实施例,应用于游戏客户端,包括:
50.步骤s201、当接收到游戏服务端发送的目标同步消息时,对目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态;
51.本实施方式中,当游戏客户端接收到游戏服务端发送的目标同步消息时,触发游戏客户端的游戏同步,首先是目标同步消息中的第一状态变化数据,由于第一状态变化数据是可以直接用于显示的数据,是游戏客户端中表现层所需的数据,因此,在一种实施方式中,当游戏客户端接收到游戏服务端发送的目标同步消息时,通过表现层对目标同步消息中的第一状态变化数据进行显示状态更新,得到游戏客户端中的第一显示状态。例如,假设第一状态变化数据是技能资源的减扣数据,那么,游戏客户端的第一显示状态则是技能资源减扣之后的显示状态,玩家可以看到技能资源减扣后技能资源的数量、技能释放的播放效果等,具体此处不做限定。
52.在一种实施方式中,游戏客户端中部署有表现层,用于当接收到游戏服务端发送的目标同步消息时,对目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态。
53.在一种实施方式中,上述步骤s201包括:当接收到游戏服务端发送的目标同步消息时,对目标同步消息进行解包,得到游戏服务端发送的第一状态变化数据;通过游戏服务端发送的第一状态变化数据对游戏客户端的第一显示状态进行更新,得到第一显示状态。本实施方式中,游戏客户端接收到游戏服务端发送的目标同步消息之后,通过解包目标同步消息,即可得到游戏服务端发送的第一状态变化数据,用于游戏客户端进行第一显示状态的更新,得到第一显示状态。具体的,游戏客户端可以通过表现层对游戏服务端发送的第一状态变化数据进行游戏客户端的第一显示状态更新,得到第一显示状态。
54.步骤s202、对目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据;
55.本实施方式中,由于第二状态变化操作是未经过游戏服务端进行状态变化逻辑处理的数据,是游戏服务端从所有参与同一局游戏的游戏客户端中收集到的操作数据,不能直接用于显示状态更新,而是要先经过逻辑层的状态变化逻辑处理后,得到游戏客户端的第二状态变化数据,才能用于后续的显示状态更新。可以理解的是,游戏客户端的第二状态变化数据与游戏服务端的第二状态变化数据是相同的,使得游戏客户端与游戏服务端的第二状态变化数据无需通过数据转发即可保持同步,从而减少需要同步的数据量,进而避免游戏卡顿现象的发生。
56.在一种实施方式中,游戏客户端部署有第二状态变化操作的逻辑处理模块,属于游戏服务端中逻辑层的一部分,将其从逻辑层中抽离出来,单独部署在游戏客户端,能够用
于对目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据,使得游戏服务端的第二状态变化数据无需通过数据转发到游戏客户端即可保持同步,从而减少需要同步的数据量,进而避免游戏卡顿现象的发生。
57.在一种实施方式中,上述步骤s202包括:从目标同步消息中的目标指令序列中依次读取每个第二状态变化指令,并对读取的每个第二状态变化指令依次进行状态变化逻辑运算,得到游戏客户端的第二状态变化数据。本实施方式中,在进行第二状态变化操作的状态变化逻辑处理时,首先从目标同步消息中的目标指令序列一次读取有时序性的每个第二状态变化指令,再通过游戏客户端中不是的第二状态变化操作的逻辑处理模块或逻辑层,执行每个第二状态变化指令,从而得到游戏客户端中与游戏服务端相同/同步的第二状态变化数据,使得游戏服务端的第二状态变化数据无需通过数据转发到游戏客户端即可保持同步,从而减少需要同步的数据量,进而避免游戏卡顿现象的发生。
58.步骤s203、对游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态。
59.本实施方式中,得到游戏客户端的第二状态变化数据之后,即可在游戏客户端中进行显示状态的更新,得到第二显示状态。在一种实施方式中,游戏客户端部署有表现层,通过表现层对游戏客户端的第二状态变化数据进行显示状态更新,即可得到第二显示状态。例如,假设第二状态变化数据为移动相关的数据,如玩家对象向前移动的指令,那么,经过表现层对游戏客户端的第二状态变化数据进行显示状态更新之后,游戏客户端中该玩家对象表现为向前移动的动画,并实现显示位置的改变,具体此处不做限定。
60.在一种实施方式中,上述步骤s203之后,还包括:按照第二预设帧率进行逐帧显示状态更新,得到每帧显示状态。可以理解的是,游戏客户端和游戏服务端可以按照各自的tick帧率进行tick,因此,游戏服务端发送目标同步消息的频率与游戏客户端进行显示状态更新的频率可能不同,例如,假设游戏服务端的tick帧率为10帧/秒,游戏客户端的tick帧率为30帧/秒,那么,游戏服务端每100毫秒才向游戏客户端发送目标同步消息,而游戏客户端每33毫秒就需要刷新一次状态,期间未接收到游戏服务端发送目标同步消息的帧,游戏客户端可以通过插值补帧的方式进行状态更新,因此,本实施方式中,针对未接收到游戏服务端发送的目标同步消息的中间帧,按照游戏客户端自身的第二预设帧率进行逐帧的显示状态更新,得到每个中间帧的显示状态,其中,中间帧的显示状态为两个游戏服务端的目标帧之间的插值,使得游戏客户端能够保持高刷新率的同时,降低服务器的负载,减少游戏卡顿现象的发生。
61.在一种实施方式中,第一显示状态用于指示非移动相关的显示状态,第二显示状态用于指示移动相关的显示状态。与游戏服务端对应的是,第一显示状态是指第一状态改变操作指示的显示状态,如果第一状态改变操作是用于指示非移动相关的状态变化操作,则第一显示状态也是用于指示非移动相关的显示状态,同样的,第二显示状态是指第二状态改变操作指示的显示状态,如果第二状态改变操作是用于指示移动相关的状态变化操作,则第二显示状态也是用于指示移动相关的显示状态,从而通过混合帧同步方式和状态同步方式的数据同步保证核心游戏数据安全的同时,减少游戏卡顿现象的发生。
62.在一种实施方式中,游戏客户端的更新帧率大于游戏服务端的更新帧率。可以理解的是,游戏服务端的tick帧率(即更新帧率)可以小于游戏客户端的tick帧率,游戏服务
端的更新帧率是指游戏服务端执行本发明实施例步骤s10-s50的帧率,也就是逻辑层一次tick的帧率,游戏客户端的更新帧率是指游戏客户端进行显示状态更新的帧率,包括第一显示状态、第二显示状态、以及未接收到游戏服务端发送的目标同步消息的中间帧的显示状态,也就是表现层一次tick的帧率,具体此处不做限定。
63.上述实施方式提供的数据同步方法,在游戏客户端中,当接收到目标同步消息时,由于第一状态变化数据是经过游戏服务端进行状态变化逻辑处理的数据,因此可以直接进行显示状态更新,而第二状态变化操作则先在游戏客户端进行状态变化逻辑处理,得到与游戏服务端相同的第二状态变化数据之后,进行显示状态更新,使得游戏服务端的第二状态变化数据无需通过数据转发到游戏客户端即可保持同步,从而减少需要同步的数据量,进而避免游戏卡顿现象的发生。
64.请参阅图3,本发明实施例中数据同步方法的另一个实施例应用于游戏服务端和游戏客户端,包括:
65.步骤301、游戏服务端获取至少一个目标游戏客户端的目标帧对应的状态变化操作,状态变化操作包括至少一个第一状态变化操作和至少一个第二状态变化操作;
66.步骤302、游戏服务端对至少一个第一状态变化操作进行状态变化逻辑处理,得到目标帧的第一状态变化数据;
67.步骤303、游戏服务端将目标帧的第一状态变化数据和至少一个第二状态变化操作打包为目标同步消息;
68.步骤304、游戏服务端将目标同步消息发送至每个目标游戏客户端;
69.步骤305、当游戏客户端接收到游戏服务端发送的目标同步消息时,对目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态;
70.步骤306、游戏客户端对目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据;
71.步骤307、游戏客户端对游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态。
72.本发明实施例的步骤301-步骤308中,游戏服务端中部署有第一逻辑层和第二逻辑层,游戏服务端采集一个所有目标游戏客户端的目标帧对应的状态变化操作之后,通过第一逻辑层对其中的至少一个第一状态变化操作进行逻辑层的状态变化的游戏逻辑处理,得到目标帧的第一状态变化数据,在通过第二逻辑层对其中的至少一个第二状态变化操作进行逻辑层的状态变化的游戏逻辑处理,得到目标帧的第二状态变化数据。而为了避免同步数据量较大的第二状态变化数据直接转发到各个游戏客户端所容易造成的游戏卡顿问题,游戏服务端打包的是同步数据量较小的第一状态变化数据和原始的至少一个第二状态变化操作,并将打包好的目标同步消息分发至各个目标游戏客户端,而游戏客户端为了与游戏服务端保持数据同步,游戏客户端中部署有第二逻辑层和表现层,每个目标游戏客户端接收到游戏服务端发送的目标同步消息之后,第一状态变化数据可以直接通过表现层进行显示状态更新,而第二状态变化操作则通过游戏客户端中与游戏服务端相同的第二逻辑层进行状态变化逻辑处理,得到与游戏服务端相同的游戏客户端的第二状态变化数据,并进行显示状态更新,使得同步数据量较大的第二状态变化数据无需通过游戏服务端转发至各个游戏客户端,游戏服务端和各个游戏客户端中的第二状态变化数据也能够保持同步状
态,从而减少同步数据量,游戏卡顿现象也能减少发生。
73.对应于上述方法实施例,参见图4所示的一种数据同步装置的示意图,所述装置应用于游戏服务端,所述装置包括:操作获取模块40,用于获取至少一个目标游戏客户端的目标帧对应的状态变化操作,所述状态变化操作包括至少一个第一状态变化操作和至少一个第二状态变化操作;第一处理模块42,用于对至少一个第一状态变化操作进行状态变化逻辑处理,得到目标帧的第一状态变化数据;消息打包模块44,用于将目标帧的第一状态变化数据和所述至少一个第二状态变化操作打包为目标同步消息;消息分发模块46,用于将所述目标同步消息发送至每个所述目标游戏客户端。
74.上述数据同步装置,根据同步数据量的大小以及对游戏规则核心资源结算的异常容错率,将状态变化操作分为同步数据量小且异常容错率低的第一状态变化操作,和同步数据量大且异常容错率高的第二状态变化操作,针对第一状态变化操作采用状态同步方式进行数据同步,而针对第二状态变化操作则采用帧同步方式进行数据同步,从而避免直接转发数据量大的第二状态变化数据,而是转发第二状态变化操作到各个游戏客户端自行生成第二状态变化数据,实现游戏服务端与各个游戏客户端的数据同步,减少游戏卡顿现象发生的同时,游戏规则核心资源也不容易出现错误或被篡改。
75.可选的,上述装置还包括:第二处理模块,用于对至少一个第二状态变化操作进行状态变化逻辑处理,得到目标帧的第二状态变化数据。
76.可选的,上述操作获取模块40具体用于:按照第一预设帧率,接收至少一个目标游戏客户端一帧时长内上传的状态变化操作,得到所有目标游戏客户端的目标帧对应的状态变化操作。
77.可选的,上述消息打包模块44具体用于:对所述目标帧中所述至少一个第二状态变化操作进行指令生成,得到至少一个第二状态变化指令;将所述至少一个第二状态变化指令依次存入预设指令序列,得到目标指令序列;将所述第一状态变化数据和目标指令序列打包为目标同步消息。
78.可选的,所述第一状态变化操作用于指示非移动相关的状态变化操作,所述第二状态变化操作用于指示移动相关的状态变化操作。
79.对应于上述方法实施例,参见图5所示的一种数据同步装置的示意图,所述装置应用于游戏客户端,所述装置包括:第一更新模块50,用于当接收到游戏服务端发送的目标同步消息时,对所述目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态;第三处理模块52,用于对所述目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据;第二更新模块54,用于对所述游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态。
80.上述数据同步装置,在游戏客户端中,当接收到目标同步消息时,由于第一状态变化数据是经过游戏服务端进行状态变化逻辑处理的数据,因此可以直接进行显示状态更新,而第二状态变化操作则先在游戏客户端进行状态变化逻辑处理,得到与游戏服务端相同的第二状态变化数据之后,进行显示状态更新,使得游戏服务端的第二状态变化数据无需通过数据转发到游戏客户端即可保持同步,从而减少需要同步的数据量,进而避免游戏卡顿现象的发生。
81.可选的,上述第三处理模块52具体用于:从所述目标同步消息中的目标指令序列
中依次读取每个第二状态变化指令,并对读取的每个第二状态变化指令依次进行状态变化逻辑运算,得到游戏客户端的第二状态变化数据。
82.可选的,所述装置还包括:第三更新模块,用于按照第二预设帧率进行逐帧显示状态更新,得到每帧显示状态。
83.可选的,上述第一更新模块50具体用于:当接收到游戏服务端发送的目标同步消息时,对所述目标同步消息进行解包,得到所述游戏服务端发送的第一状态变化数据;通过所述游戏服务端发送的第一状态变化数据对所述游戏客户端的第一显示状态进行更新,得到第一显示状态。
84.可选的,所述第一显示状态用于指示非移动相关的显示状态,所述第二显示状态用于指示移动相关的显示状态。
85.可选的,游戏客户端的更新帧率大于游戏服务端的更新帧率。
86.本实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的机器可执行指令,处理器执行机器可执行指令以实现上述数据同步方法。该电子设备可以是服务器,也可以是终端设备。
87.参见图6所示,该电子设备包括处理器600和存储器601,该存储器601存储有能够被处理器600执行的机器可执行指令,该处理器600执行机器可执行指令以实现上述数据同步方法。
88.进一步地,图6所示的电子设备还包括总线602和通信接口603,处理器600、通信接口603和存储器601通过总线602连接。
89.其中,存储器601可能包含高速随机存取存储器(ram,random access memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口603(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线602可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
90.处理器600可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器600中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器600可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processor,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器601,处理器600读取存储器601中的信息,结合其硬件完成前述实施例的方法的步骤,例如:
91.应用于游戏服务端,方法包括:获取至少一个目标游戏客户端的目标帧对应的状
态变化操作,状态变化操作包括至少一个第一状态变化操作和至少一个第二状态变化操作;对至少一个第一状态变化操作进行状态变化逻辑处理,得到目标帧的第一状态变化数据;将目标帧的第一状态变化数据和至少一个第二状态变化操作打包为目标同步消息;将目标同步消息发送至每个目标游戏客户端。
92.该方式中,根据同步数据量的大小以及对游戏规则核心资源结算的异常容错率,将状态变化操作分为同步数据量小且异常容错率低的第一状态变化操作,和同步数据量大且异常容错率高的第二状态变化操作,针对第一状态变化操作采用状态同步方式进行数据同步,而针对第二状态变化操作则采用帧同步方式进行数据同步,从而避免直接转发数据量大的第二状态变化数据,而是转发第二状态变化操作到各个游戏客户端自行生成第二状态变化数据,实现游戏服务端与各个游戏客户端的数据同步,减少游戏卡顿现象发生的同时,游戏规则核心资源也不容易出现错误或被篡改。
93.可选的,上述方法还包括:对至少一个第二状态变化操作进行状态变化逻辑处理,得到目标帧的第二状态变化数据。
94.可选的,获取至少一个目标游戏客户端的目标帧对应的状态变化操作,包括:按照第一预设帧率,接收至少一个目标游戏客户端一帧时长内上传的状态变化操作,得到所有目标游戏客户端的目标帧对应的状态变化操作。
95.可选的,将目标帧的第一状态变化数据和至少一个第二状态变化操作打包为目标同步消息,包括:对目标帧对应的至少一个第二状态变化操作进行指令生成,得到至少一个第二状态变化指令;将至少一个第二状态变化指令依次存入预设指令序列,得到目标指令序列;将第一状态变化数据和目标指令序列打包为目标同步消息。
96.可选的,第一状态变化操作用于指示非移动相关的状态变化操作,第二状态变化操作用于指示移动相关的状态变化操作。
97.可选的,应用于游戏客户端,方法还包括:当接收到游戏服务端发送的目标同步消息时,对目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态;对目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据;对游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态。
98.该方式中,在游戏客户端中,当接收到目标同步消息时,由于第一状态变化数据是经过游戏服务端进行状态变化逻辑处理的数据,因此可以直接进行显示状态更新,而第二状态变化操作则先在游戏客户端进行状态变化逻辑处理,得到与游戏服务端相同的第二状态变化数据之后,进行显示状态更新,使得游戏服务端的第二状态变化数据无需通过数据转发到游戏客户端即可保持同步,从而减少需要同步的数据量,进而避免游戏卡顿现象的发生。
99.可选的,对目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据,包括:从目标同步消息中的目标指令序列中依次读取每个第二状态变化指令,并对读取的每个第二状态变化指令依次进行状态变化逻辑运算,得到游戏客户端的第二状态变化数据。
100.可选的,在对游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态之后,方法还包括:按照第二预设帧率进行逐帧显示状态更新,得到每帧显示状态。
101.可选的,当接收到游戏服务端发送的目标同步消息时,对目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态,包括:当接收到游戏服务端发送的目标同步消息时,对目标同步消息进行解包,得到游戏服务端发送的第一状态变化数据;通过游戏服务端发送的第一状态变化数据对游戏客户端的第一显示状态进行更新,得到第一显示状态。
102.可选的,第一显示状态用于指示非移动相关的显示状态,第二显示状态用于指示移动相关的显示状态。
103.可选的,游戏客户端的更新帧率大于游戏服务端的更新帧率。
104.本实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述数据同步方法,例如:
105.应用于游戏服务端,方法包括:获取至少一个目标游戏客户端的目标帧对应的状态变化操作,状态变化操作包括至少一个第一状态变化操作和至少一个第二状态变化操作;对至少一个第一状态变化操作进行状态变化逻辑处理,得到目标帧的第一状态变化数据;将目标帧的第一状态变化数据和至少一个第二状态变化操作打包为目标同步消息;将目标同步消息发送至每个目标游戏客户端。
106.该方式中,根据同步数据量的大小以及对游戏规则核心资源结算的异常容错率,将状态变化操作分为同步数据量小且异常容错率低的第一状态变化操作,和同步数据量大且异常容错率高的第二状态变化操作,针对第一状态变化操作采用状态同步方式进行数据同步,而针对第二状态变化操作则采用帧同步方式进行数据同步,从而避免直接转发数据量大的第二状态变化数据,而是转发第二状态变化操作到各个游戏客户端自行生成第二状态变化数据,实现游戏服务端与各个游戏客户端的数据同步,减少游戏卡顿现象发生的同时,游戏规则核心资源也不容易出现错误或被篡改。
107.可选的,上述方法还包括:对至少一个第二状态变化操作进行状态变化逻辑处理,得到目标帧的第二状态变化数据。
108.可选的,获取至少一个目标游戏客户端的目标帧对应的状态变化操作,包括:按照第一预设帧率,接收至少一个目标游戏客户端一帧时长内上传的状态变化操作,得到所有目标游戏客户端的目标帧对应的状态变化操作。
109.可选的,将目标帧的第一状态变化数据和至少一个第二状态变化操作打包为目标同步消息,包括:对目标帧对应的至少一个第二状态变化操作进行指令生成,得到至少一个第二状态变化指令;将至少一个第二状态变化指令依次存入预设指令序列,得到目标指令序列;将第一状态变化数据和目标指令序列打包为目标同步消息。
110.可选的,第一状态变化操作用于指示非移动相关的状态变化操作,第二状态变化操作用于指示移动相关的状态变化操作。
111.可选的,应用于游戏客户端,方法还包括:当接收到游戏服务端发送的目标同步消息时,对目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态;对目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据;对游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态。
112.该方式中,在游戏客户端中,当接收到目标同步消息时,由于第一状态变化数据是经过游戏服务端进行状态变化逻辑处理的数据,因此可以直接进行显示状态更新,而第二状态变化操作则先在游戏客户端进行状态变化逻辑处理,得到与游戏服务端相同的第二状态变化数据之后,进行显示状态更新,使得游戏服务端的第二状态变化数据无需通过数据转发到游戏客户端即可保持同步,从而减少需要同步的数据量,进而避免游戏卡顿现象的发生。
113.可选的,对目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据,包括:从目标同步消息中的目标指令序列中依次读取每个第二状态变化指令,并对读取的每个第二状态变化指令依次进行状态变化逻辑运算,得到游戏客户端的第二状态变化数据。
114.可选的,在对游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态之后,方法还包括:按照第二预设帧率进行逐帧显示状态更新,得到每帧显示状态。
115.可选的,当接收到游戏服务端发送的目标同步消息时,对目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态,包括:当接收到游戏服务端发送的目标同步消息时,对目标同步消息进行解包,得到游戏服务端发送的第一状态变化数据;通过游戏服务端发送的第一状态变化数据对游戏客户端的第一显示状态进行更新,得到第一显示状态。
116.可选的,第一显示状态用于指示非移动相关的显示状态,第二显示状态用于指示移动相关的显示状态。
117.可选的,游戏客户端的更新帧率大于游戏服务端的更新帧率。
118.本发明实施例所提供的数据同步方法、装置、电子设备及存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
119.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
120.另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
121.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
122.在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了
便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
123.最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

技术特征:
1.一种数据同步方法,其特征在于,应用于游戏服务端,所述方法包括:获取至少一个目标游戏客户端的目标帧对应的状态变化操作,所述状态变化操作包括至少一个第一状态变化操作和至少一个第二状态变化操作;对至少一个第一状态变化操作进行状态变化逻辑处理,得到目标帧的第一状态变化数据;将目标帧的第一状态变化数据和所述至少一个第二状态变化操作打包为目标同步消息;将所述目标同步消息发送至每个所述目标游戏客户端。2.根据权利要求1所述的方法,其特征在于,在所述获取至少一个目标游戏客户端的目标帧对应的状态变化操作之后,所述方法还包括:对至少一个第二状态变化操作进行状态变化逻辑处理,得到目标帧的第二状态变化数据。3.根据权利要求1所述的方法,其特征在于,所述获取至少一个目标游戏客户端的目标帧对应的状态变化操作,包括:按照第一预设帧率,接收至少一个目标游戏客户端一帧时长内上传的状态变化操作,得到所有目标游戏客户端的目标帧对应的状态变化操作。4.根据权利要求1所述的方法,其特征在于,所述将目标帧的第一状态变化数据和所述至少一个第二状态变化操作打包为目标同步消息,包括:对所述目标帧对应的至少一个第二状态变化操作进行指令生成,得到至少一个第二状态变化指令;将所述至少一个第二状态变化指令依次存入预设指令序列,得到目标指令序列;将所述第一状态变化数据和所述目标指令序列打包为目标同步消息。5.根据权利要求1所述的方法,其特征在于,所述第一状态变化操作用于指示非移动相关的状态变化操作,所述第二状态变化操作用于指示移动相关的状态变化操作。6.一种数据同步方法,其特征在于,应用于游戏客户端,所述方法包括:当接收到游戏服务端发送的目标同步消息时,对所述目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态;对所述目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据;对所述游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态。7.根据权利要求6所述的方法,其特征在于,所述对所述目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据,包括:从所述目标同步消息中的目标指令序列中依次读取每个第二状态变化指令,并对读取的每个第二状态变化指令依次进行状态变化逻辑运算,得到游戏客户端的第二状态变化数据。8.根据权利要求6所述的方法,其特征在于,在所述对所述游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态之后,所述方法还包括:按照第二预设帧率进行逐帧显示状态更新,得到每帧显示状态。9.根据权利要求6所述的方法,其特征在于,所述当接收到游戏服务端发送的目标同步
消息时,对所述目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态,包括:当接收到游戏服务端发送的目标同步消息时,对所述目标同步消息进行解包,得到所述游戏服务端发送的第一状态变化数据;通过所述游戏服务端发送的第一状态变化数据对所述游戏客户端的第一显示状态进行更新,得到第一显示状态。10.根据权利要求6所述的方法,其特征在于,所述第一显示状态用于指示非移动相关的显示状态,所述第二显示状态用于指示移动相关的显示状态。11.根据权利要求6所述的方法,其特征在于,游戏客户端的更新帧率大于游戏服务端的更新帧率。12.一种数据同步装置,其特征在于,应用于游戏服务端,所述装置包括:操作获取模块,用于获取至少一个目标游戏客户端的目标帧对应的状态变化操作,所述状态变化操作包括至少一个第一状态变化操作和至少一个第二状态变化操作;第一处理模块,用于对至少一个第一状态变化操作进行状态变化逻辑处理,得到目标帧的第一状态变化数据;消息打包模块,用于将目标帧的第一状态变化数据和所述至少一个第二状态变化操作打包为目标同步消息;消息分发模块,用于将所述目标同步消息发送至每个所述目标游戏客户端。13.一种数据同步装置,其特征在于,应用于游戏客户端,所述装置包括:第一更新模块,用于当接收到游戏服务端发送的目标同步消息时,对所述目标同步消息中的第一状态变化数据进行显示状态更新,得到第一显示状态;第三处理模块,用于对所述目标同步消息中的至少一个第二状态变化操作进行状态变化逻辑处理,得到游戏客户端的第二状态变化数据;第二更新模块,用于对所述游戏客户端的第二状态变化数据进行显示状态更新,得到第二显示状态。14.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1-11任一项所述的数据同步方法。15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现权利要求1-11任一项所述的数据同步方法。

技术总结
本发明提供了一种数据同步方法、装置、电子设备和存储介质;其中,该方法根据同步数据量的大小以及对游戏规则核心资源结算的异常容错率,将状态变化操作分为同步数据量小且异常容错率低的第一状态变化操作,和同步数据量大且异常容错率高的第二状态变化操作,针对第一状态变化操作采用状态同步方式进行数据同步,而针对第二状态变化操作则采用帧同步方式进行数据同步,从而避免直接转发数据量大的第二状态变化数据,而是转发第二状态变化操作到各个游戏客户端自行生成第二状态变化数据,实现游戏服务端与各个游戏客户端的数据同步,减少游戏卡顿现象发生的同时,游戏规则核心资源也不容易出现错误或被篡改。也不容易出现错误或被篡改。也不容易出现错误或被篡改。


技术研发人员:龙铮 刘强
受保护的技术使用者:网易(杭州)网络有限公司
技术研发日:2023.05.11
技术公布日:2023/8/24
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐