一种游戏数据同步方法、系统及装置与流程

文档序号:26093042发布日期:2021-07-30 18:02阅读:107来源:国知局
一种游戏数据同步方法、系统及装置与流程

本申请实施例涉及游戏技术领域,尤其涉及一种游戏数据同步方法、系统及装置。



背景技术:

随着网络不断的发展,网络游戏也随之快速发展,通过游戏数据信息的同步可以实现游戏的服务端和客户端的游戏状态保持一致。

当前,游戏数据信息的同步主要采取状态同步和帧同步两种方案,状态同步是同步游戏中的各种状态,对于棋牌游戏来说,状态表示当前游戏棋子分布位置信息。帧同步则不同步状态,只同步玩家的操作指令。当游戏客户端与服务端断开连接时,客户端需要进行状态恢复,因为在断线期间有可能游戏状态已经被更新,状态同步方案中进行数据信息的同步方法相对简单,即直接拉取当前最新的游戏状态即可,但是该种方式需要同步非游戏操作指令之外的信息,需要消耗较多的数据流量。帧同步的断线重连处理机制相对复杂,例如客户端在游戏开始的第10秒断线,第15秒重连,就需要服务端把第10秒到第15秒之间5秒内的所有操作消息一次性发给客户端,同时由于只需要对操作指令本身进行转发,该种处理机制对于数据流量的消耗较小。由此可见,针对游戏数据信息而言,采用状态同步或帧同步的方式均存在一定弊端,需要改进。



技术实现要素:

本申请实施例提供一种游戏数据同步方法、系统及装置,在减少无效的数据传输的同时,保持服务端和客户端状态一致,提高玩家游戏体验。

在第一方面,本申请实施例提供了一种游戏数据同步方法,包括:

接收第一客户端发送的游戏操作指令,获取所述游戏操作指令对应的操作标识,校验所述操作标识与存储的最大操作标识是否满足预设条件;

若满足所述预设条件,则将所述操作标识更新为最大操作标识,并将所述游戏操作指令广播至第二客户端,用于所述第二客户端根据所述游戏操作指令进行本地存储的最大操作标识的更新;

若不满足所述预设条件,则向所述第一客户端发送操作错误信息,并向所述第一客户端发送存储的最大操作标识以及游戏状态信息,用于所述第一客户端对本地存储的最大操作标识和游戏状态进行更新。

在第二方面,本申请实施例提供了一种游戏数据同步方法,包括:

获取用户行为数据生成游戏操作指令,基于存储的最大操作标识为所述游戏操作指令分配操作标识;

将所述游戏操作指令发送至服务端,以使服务端校验所述操作标识与存储的最大操作标识是否满足预设条件;

若不满足所述预设条件,则接收所述服务端发送的操作错误信息,本地存储的最大操作标识和游戏状态信息,根据该最大操作标识和游戏状态信息更新存储的最大操作标识和游戏状态;

若满足所述预设条件,则接收所述服务端广播的第二客户端做出的游戏操作指令,并根据该游戏操作指令更新存储的最大操作标识。

在第三方面,本申请实施例提供了一种游戏数据同步系统,包括:服务端、第一客户端和第二客户端,其中:

所述服务端,用于接收第一客户端发送的游戏操作指令,获取所述游戏操作指令对应的操作标识,校验所述操作标识与存储的最大操作标识是否满足预设条件;若满足所述预设条件,则将所述操作标识更新为最大操作标识,并将所述游戏操作指令广播至第二客户端,用于所述第二客户端根据所述游戏操作指令进行本地存储的最大操作标识的更新;若不满足所述预设条件,则向所述第一客户端发送操作错误信息,并向所述第一客户端发送存储的最大操作标识以及游戏状态信息,用于所述第一客户端对本地存储的最大操作标识和游戏状态进行更新;

所述第一客户端,用于获取用户行为数据生成游戏操作指令,基于存储的最大操作标识为所述游戏操作指令分配操作标识;将所述游戏操作指令发送至服务端,以使服务端校验所述操作标识与存储的最大操作标识是否满足预设条件;若不满足所述预设条件,则接收所述服务端发送的操作错误信息,本地存储的最大操作标识和游戏状态信息,根据该最大操作标识和游戏状态信息更新存储的最大操作标识和游戏状态;若满足所述预设条件,则接收所述服务端广播的第二客户端做出的游戏操作指令,并根据该游戏操作指令更新存储的最大操作标识。

在第四方面,本申请实施例提供了一种游戏数据同步装置,包括:

校验模块,被配置为接收第一客户端发送的游戏操作指令,获取所述游戏操作指令对应的操作标识,校验所述操作标识与存储的最大操作标识是否满足预设条件;

广播模块,被配置为若满足所述预设条件,则将所述操作标识更新为最大操作标识,并将所述游戏操作指令广播至第二客户端,用于所述第二客户端根据所述游戏操作指令进行本地存储的最大操作标识的更新;

第一状态同步模块,被配置为若不满足所述预设条件,则向所述第一客户端发送操作错误信息,并向所述第一客户端发送存储的最大操作标识以及游戏状态信息,用于所述第一客户端对本地存储的最大操作标识和游戏状态进行更新。

在第五方面,本申请实施例提供了一种游戏数据同步装置,包括:

分配标识模块,被配置为获取用户行为数据生成游戏操作指令,基于存储的最大操作标识为所述游戏操作指令分配操作标识;

发送操作模块,被配置为将所述游戏操作指令发送至服务端,以使服务端校验所述操作标识与存储的最大操作标识是否满足预设条件;

第二状态同步模块,被配置为若不满足所述预设条件,则接收所述服务端发送的操作错误信息,本地存储的最大操作标识和游戏状态信息,根据该最大操作标识和游戏状态信息更新存储的最大操作标识和游戏状态;

状态更新模块,被配置为若满足所述预设条件,则接收所述服务端广播的第二客户端做出的游戏操作指令,并根据该游戏操作指令更新存储的最大操作标识。

在第六方面,本申请实施例提供了一种电子设备,包括:

存储器以及一个或多个处理器;

所述存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一和第二方面所述的游戏数据同步方法。

在第七方面,本申请实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一和第二方面所述的游戏数据同步方法。

本申请实施例通过接收第一客户端发送的游戏操作指令,获取所述游戏操作指令对应的操作标识,校验所述操作标识与存储的最大操作标识是否满足预设条件;若满足所述预设条件,则将所述操作标识更新为最大操作标识,并将所述游戏操作指令广播至第二客户端,用于所述第二客户端根据所述游戏操作指令进行本地存储的最大操作标识的更新;若不满足所述预设条件,则向所述第一客户端发送操作错误信息,并向所述第一客户端发送存储的最大操作标识以及游戏状态信息,用于所述第一客户端对本地存储的最大操作标识和游戏状态进行更新。采用上述技术手段,服务端只需将最必要的游戏操作指令广播给所有客户端,可以减少无效的数据传输,节省流量的同时也可以提高数据传输速率,提高玩家游戏体验。在客户端丢包时,通过服务端向客户端发送游戏状态信息和存储的最大操作标识,使得客户端与服务端的游戏状态保持一致,避免出现不同玩家视角看到的游戏状态不一致的情况。在服务端丢包时,将所有客户端的游戏状态回滚,以保证所有客户端与服务端游戏状态一致,基于此,服务端的游戏状态存储不要求可靠,可适当降低存储技术复杂度。

附图说明

图1是本申请实施例一提供的一种游戏数据同步方法的流程图;

图2是本申请实施例一中的游戏操作指令校验流程图;

图3是本申请实施例一中的数据错误类型判断流程图;

图4是本申请实施例一提供的另一种游戏数据同步方法的流程图;

图5是本申请实施例一提供的一种基于游戏数据同步系统的游戏数据同步流程图;

图6是本申请实施例一提供的另一种基于游戏数据同步系统的游戏数据同步流程图;

图7是本申请实施例二提供的一种游戏数据同步装置的结构示意图;

图8是本申请实施例二提供的一种游戏数据同步装置的结构示意图;

图9是本申请实施例三提供的一种电子设备的结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

本申请提供的游戏数据同步方法、系统及装置,旨在通过在客户端丢包时,通过服务端向客户端发送游戏状态信息和存储的最大操作标识,使得客户端与服务端的游戏状态保持一致,避免出现不同玩家视角看到的游戏状态不一致的情况。在服务端丢包时,将所有客户端的游戏状态回滚,以保证所有客户端与服务端游戏状态一致。相对于传统的状态同步方法,其在客户端丢包时,需要同步非游戏操作指令之外的信息,需要消耗较多的数据流量。而帧同步方法的断线重连处理机制相对复杂,需要服务端将客户端掉线期间的所有操作消息一次性发送给客户端。且传统的状态同步或帧同步方法都需要服务端具备较高的存储可靠性,避免服务端出现丢包现象。基于此,提供本申请实施例的游戏数据同步方法、系统及装置,以解决传统的状态同步或帧同步方法无法兼顾操作简单和传输效率高的问题。

实施例一:

图1给出了本申请实施例一提供的一种游戏数据同步方法的流程图,本实施例中提供的游戏数据同步方法可以由游戏数据同步设备执行,该游戏数据同步设备可以通过软件和/或硬件的方式实现,该游戏数据同步设备可以是两个或多个物理实体构成,也可以是一个物理实体构成。一般而言,该游戏数据同步设备为服务端。

下述以服务端为执行该游戏数据同步方法的主体为例,进行描述。参照图1,该游戏数据同步方法具体包括:

s110、接收第一客户端发送的游戏操作指令,获取所述游戏操作指令对应的操作标识,校验所述操作标识与存储的最大操作标识是否满足预设条件。

服务端和每个客户端上都会本地存储最大操作标识,通过最大操作标识以表征当前的游戏状态。操作标识用于一局游戏中标识客户端产生的一次游戏操作指令。在一局游戏中,初始化服务端和客户端的最大操作标识,使得两者的最大操作标识一致,也使得两者的游戏状态一致。客户端根据本地存储的最大操作标识为自身产生的游戏操作指令分配操作标识,以便客户端向服务端发送游戏操作指令时,服务端可通过该游戏操作指令的操作标识,确定当前客户端的游戏状态,以校验客户端的游戏状态和自身的游戏状态是否同步。

进一步的,在客户端在开始进入游戏后,根据存储的最大操作标识,为第一次产生的游戏操作指令分配与最大操作标识相关联的操作标识,由于服务端和客户端在初始化时,两者存储的最大操作标识是一致的,服务端可基于存储的最大操作标识,校验存储的最大操作标识与客户端发送的操作标识是否相关联。具体的,参考图2,图2是本申请实施例一中的游戏操作指令校验流程图。如图2所示,游戏操作指令校验流程包括:

s1101、将存储的最大操作标识与所述操作标识进行比较,判断所述操作标识是否大于存储的所述最大操作标识,若否,则确定不满足条件;

s1102、若是,则判断所述操作标识与存储的所述最大操作标识是否连续,若不连续则确定不满足条件,若连续,则确定满足条件。

示例性的,从小到大为游戏操作指令分配操作标识比较容易实现,可设置游戏操作指令的操作标识与存储的最大操作标识是连续递增的。在进入游戏后,客户端基于存储的最大操作标识为游戏操作指令分配操作标识,服务端将客户端发送的操作标识与存储的最大操作标识进行比较,由于该操作标识和客户端存储的最大操作标识是连续递增的,而客户端存储的最大操作标识和服务端存储的最大操作标识在初始化时是一致的,因此服务端存储的最大操作标识与该操作标识是连续递增的。这表明服务端与客户端生成该游戏操作指令前的游戏状态是一致的,且服务端根据该游戏操作指令更新自身游戏状态后,和客户端的游戏状态继续保持一致。如果服务端的最大操作标识和该操作标识并不能满足连续递增的预设条件,则表明服务端与生成该游戏操作指令前的客户端的游戏状态不一致,那服务端基于该游戏操作指令更新自身游戏状态后也不会和客户端当前的游戏状态一致,此时需要服务端和客户端进行游戏状态同步操作。

s120、若满足所述预设条件,则将所述操作标识更新为最大操作标识,并将所述游戏操作指令广播至第二客户端,用于所述第二客户端根据所述游戏操作指令进行本地存储的最大操作标识的更新。

如果服务端存储的最大操作标识和客户端发送的操作标识是符合连续递增的预设条件的,则表示当前服务端的最大操作标识和客户端生成游戏操作指令前的游戏状态是一致的,服务端为了和生成游戏操作指令后的客户端的游戏状态保持一致,需要根据游戏操作指令更新自身的游戏状态,即根据该操作标识更新本地存储的最大操作标识,将该操作标识作为本地存储的最大操作标识。此时,服务端和发送该操作标识的客户端的游戏状态保持一致,但该游戏局中的其余客户端还处于上一阶段的游戏状态中。进一步的,服务端将该游戏操作指令广播至其余客户端,以使其余客户端和服务端的游戏状态保持一致,也使得游戏局中的所有客户端的游戏状态同步,提高玩家游戏体验。可理解的,在服务端广播后,服务端和游戏局中的所有客户端的最大操作标识一致。

可理解的,本实施例中的第一客户端和第二客户端都指代同一游戏局中的客户端,而一个游戏局中的客户端也不局限于两个,当第一客户端在操作时,游戏局中的其余客户端均可看作第二客户端。

s130、若不满足所述预设条件,则向所述第一客户端发送操作错误信息,并向所述第一客户端发送存储的最大操作标识以及游戏状态信息,用于所述第一客户端对本地存储的最大操作标识和游戏状态进行更新。

如果服务端在广播时,其中的一个客户端掉线,则该客户端将无法根据服务端发送的游戏操作指令更新自身的游戏状态,该客户端的游戏状态还保持在上一阶段的游戏状态中,该客户端存储的最大操作标识是小于服务端存储的最大操作标识的。当轮到该客户端发送游戏操作指令,由于该客户端存储的最大操作标识小于服务端存储的最大操作标识,该游戏操作指令的操作标识并不能满足与服务端存储的最大操作标识连续递增的预设条件,因此可判断该客户端的游戏状态与服务端的游戏状态没有保持一致。在客户端和服务端的游戏状态没有保持一致时,服务端向客户端发送本地存储的最大操作标识和游戏状态信息,以使得客户端根据该最大操作标识和游戏状态信息更新自身的游戏状态,从而和服务端的游戏状态保持一致。

进一步的,当客户端在服务端广播时断线,客户端的游戏状态将落后于服务端的游戏状态,此时客户端为游戏操作指令分配的操作标识会小于或等于服务端存储的最大操作标识。而如果服务端的存储条件较差,服务端出现丢包现象,服务端丢失当前阶段的游戏状态,则服务端存储的最大操作标识是上一阶段的最大操作标识,可理解的,服务端丢包后的游戏状态落后于游戏局中所有客户端的游戏状态,服务端存储的最大操作标识会小于客户端存储的最大操作标识。在服务端丢包后,客户端发送给服务端的操作标识会大于服务端存储的最大操作标识,但不会连续。因此服务端可通过根据操作标识以及存储的最大操作标识确定客户端的游戏状态。具体的,参考图3,图3是本申请实施例一中的数据错误类型判断流程图。如图3所示,数据错误类型判断流程包括:

s1301、若所述操作标识大于存储的所述最大操作标识,则确定所述第一客户端的数据错误类型为越界类型;

s1302、若所述操作标识小于或等于存储的所述最大操作标识,则确定所述第一客户端的数据错误类型为冲突类型。

具体的,服务端将客户端发送的操作标识和存储的最大操作标识进行比较,如果操作标识大于存储的最大操作标识且不连续,则表明服务端出现丢包现象,服务端和游戏局中所有客户端的游戏状态均不一致,为了游戏局中所有客户端的游戏状态与服务端的游戏状态同步,由服务端向游戏局中所有客户端发送服务端存储的最大操作标识和游戏状态信息,强制同步客户端和服务端的游戏状态,客户端回滚至与服务端一致的游戏状态。因此,本申请实施例可以通过强同步使游戏局中所有客户端回滚至与服务端丢包后的游戏状态一致,对服务端的游戏状态存储技术可靠性要求不高,可适当降低服务端存储技术复杂度。

进一步的,如果操作标识小于或等于服务端存储的最大操作标识,则表明服务端在广播时,客户端网络出现问题,没有接收到该广播信息,该客户端的游戏状态与服务端的游戏状态不一致。但由于整个游戏局中,只有掉线重连的客户端的游戏状态出现问题,服务端只需要向该客户端发送存储的最大操作指令和游戏状态信息,以使得该客户端将游戏状态更新至与服务端的游戏状态一致。

进一步的,在客户端更新至与服务端一致的游戏状态后,服务端根据存储的最大操作标识,确定发送上一游戏操作指令的客户端,根据预设的游戏操作顺序,确定执行下一游戏操作指令的客户端,并通知该客户端发送游戏操作指令。以此保证客户端生成的操作标识与服务端存储的最大操作标识是满足连续递增的预设条件和预设的游戏操作顺序的,从而保证游戏的正常进行。

本申请实施例针对服务端和客户端可能产生的问题,提供不同的解决方案,且保证客户端和服务端的游戏状态一致,并保证游戏局正常运行,即使在客户端弱网,服务端存储不可靠的情况下,基于本申请实施例的游戏局也能正常运行。

另一方面,为保证游戏局中服务端和客户端按照相同的游戏机制运行,针对上述在服务端上运行的游戏数据同步方法,提出一种运行在客户端上的游戏数据同步方法,与服务端上运行的游戏同步方法相对应。具体的,参照图5,提供本申请实施例的另一种游戏数据同步方法。该游戏数据同步方法由客户端执行,该游戏数据同步方法的流程包括:

s210、获取用户行为数据生成游戏操作指令,基于存储的最大操作标识为所述游戏操作指令分配操作标识。

s220、将所述游戏操作指令发送至服务端,以使服务端校验所述操作标识与存储的最大操作标识是否满足预设条件。

s230、若不满足所述预设条件,则接收所述服务端发送的操作错误信息,本地存储的最大操作标识和游戏状态信息,根据该最大操作标识和游戏状态信息更新存储的最大操作标识和游戏状态。

s240、若满足所述预设条件,则接收所述服务端广播的第二客户端做出的游戏操作指令,并根据该游戏操作指令更新存储的最大操作标识。

具体的,客户端获取用户行为数据,并生成对应的游戏操作指令,为该游戏操作指令分配与存储的最大操作标识连续的操作标识。将游戏操作指令发往服务端,以便服务端校验客户端在生成该游戏操作指令前的游戏状态是否与服务端的游戏状态一致。如果服务端确定客户端在生成该游戏操作指令前的游戏状态与服务端的游戏状态一致,服务端可根据该游戏操作指令的操作标识更新存储的最大操作标识,以使得服务端的游戏状态和客户端生成该游戏操作指令后的游戏状态一致。如果服务端确定客户端在生成该游戏操作指令前的游戏状态与服务端的游戏状态不一致,则服务端确定客户端的游戏状态出现问题,则向客户端发送操作错误信息,存储的最大操作标识和游戏状态信息。客户端根据服务端发送的最大操作标识和游戏状态信息,更新自身的游戏状态。

进一步的,如果服务端判断客户端的数据错误类型为冲突类型,则接收服务端发送的游戏操作指令发送通知,并获取用户行为数据生成游戏操作指令,基于存储的最大操作标识为该游戏操作指令分配的操作标识,将该游戏操作指令发送至服务端。可理解的,当服务端判断该客户端的数据错误类型为冲突类型,则可确定该客户端就是发送下一游戏操作指令的客户端。

另一方面,提供一种游戏数据同步系统,游戏数据同步系统包括服务端、第一客户端和第二客户端,其中:

所述服务端,用于接收第一客户端发送的游戏操作指令,获取所述游戏操作指令对应的操作标识,校验所述操作标识与存储的最大操作标识是否满足预设条件;若满足所述预设条件,则将所述操作标识更新为最大操作标识,并将所述游戏操作指令广播至第二客户端,用于所述第二客户端根据所述游戏操作指令进行本地存储的最大操作标识的更新;若不满足所述预设条件,则向所述第一客户端发送操作错误信息,并向所述第一客户端发送存储的最大操作标识以及游戏状态信息,用于所述第一客户端对本地存储的最大操作标识和游戏状态进行更新。

所述第一客户端,用于获取用户行为数据生成游戏操作指令,基于存储的最大操作标识为所述游戏操作指令分配操作标识;将所述游戏操作指令发送至服务端,以使服务端校验所述操作标识与存储的最大操作标识是否满足预设条件;若不满足所述预设条件,则接收所述服务端发送的操作错误信息,本地存储的最大操作标识和游戏状态信息,根据该最大操作标识和游戏状态信息更新存储的最大操作标识和游戏状态;若满足所述预设条件,则接收所述服务端广播的第二客户端做出的游戏操作指令,并根据该游戏操作指令更新存储的最大操作标识。

可理解的,第一客户端和第二客户端都是基于游戏数据同步系统创建的一个游戏局中的客户端。

具体的,参考图5,图5是本申请实施例一提供的一种基于游戏数据同步系统的游戏数据同步流程图。针对客户端出现的丢包现象,游戏数据同步流程如图5所示。为方便展示游戏局内客户端和服务端的游戏状态,假设游戏局中只有两个客户端和服务端,按照第一客户端和第二客户端轮流操作的顺序,并假设每个游戏操作指令分配两个操作标识。第一客户端和第二客户端进入游戏,初始化最大操作标识(0),第一客户端开始游戏操作,第一客户端在最大操作标识(0)的基础上,为游戏操作指令分配操作标识(1,2)。服务端接收第一客户端发送的游戏操作指令,校验该游戏操作指令的操作标识(1,2)和本地存储的最大操作标识(0)是连续递增的,允许第一客户端继续执行该游戏操作指令,更新存储的最大操作标识(0)为最大操作标识(2),此时第一客户端存储的最大操作标识(0)更新为最大操作标识(2)。将该游戏操作指令广播至第二客户端,以使第二客户端将存储的最大操作标识(0)更新为最大操作标识(2)。按照预设的游戏顺序,服务端通知第二客户端进行游戏操作,第二客户端在最大操作标识(2)的基础上,为游戏操作标识分配操作(3,4)。服务端接收第二客户端发送的游戏操作指令,校验该游戏操作指令的操作标识(3,4)与本地存储的最大操作标识(2)是连续递增的,允许第二客户端继续执行该游戏操作指令,此时第二客户端存储的最大操作标识(2)更新为最大操作标识(4)。将该游戏操作指令广播至第一客户端,但此时第一客户端因为网络等原因,没有接收到服务端发送的广播,第一客户端的本地游戏状态没有更新,其存储的最大操作标识(2)也没有更新。服务端通知第一客户端进行游戏操作,第一客户端基于存储的最大操作标识(2)为游戏操作指令分配操作标识(3,4),服务端校验操作标识(3,4)和存储的最大操作标识(4)发生冲突,则向第一客户端返回操作冲突指令,以使第一客户端从服务端拉取游戏状态信息和最大操作标识(4),第一客户端根据该游戏状态信息和最大操作标识(4)更新自身游戏状态后,第一客户端存储的最大操作标识(2)更新为最大操作标识(4)。第一客户端根据操作冲突指令,重新获取用户行为数据,基于最大操作标识(4)为游戏操作指令分配操作标识(5,6)。服务端校验该游戏操作指令的操作标识(5,6)与存储的最大操作标识(4)连续递增,允许第一客户端继续执行该游戏操作指令,更新存储的最大操作标识(4)为最大操作标识(6),此时第一客户端存储的最大操作标识(4)更新为最大操作标识(6)。将该游戏操作指令广播至第二客户端,以使第二客户端将存储的最大操作标识(4)更新为最大操作标识(6),由此游戏恢复正常。其中,最大操作标识后面括号里的数值为当前最大操作标识的数值,操作标识后面括号里的数值为对应的游戏操作指令的操作标识的数值。

具体的,参考图6,图6是本申请实施例一提供的一种基于游戏数据同步系统的游戏数据同步流程图。针对服务端出现的丢包现象,游戏数据同步流程如图6所示。第一客户端和第二客户端进入游戏,初始化最大操作标识(0),第一客户端开始游戏操作,第一客户端在最大操作标识(0)的基础上,为游戏操作指令分配操作标识(1,2)。服务端接收第一客户端发送的游戏操作指令,校验该游戏操作指令的操作标识(1,2)和本地存储的最大操作标识(0)是连续递增的,允许第一客户端继续执行该游戏操作指令,更新存储的最大操作标识(0)为最大操作标识(2),此时第一客户端存储的最大操作标识(0)更新为最大操作标识(2)。将该游戏操作指令广播至第二客户端,以使第二客户端将存储的最大操作标识(0)更新为最大操作标识(2)。按照预设的游戏顺序,服务端通知第二客户端进行游戏操作,第二客户端在最大操作标识(2)的基础上,为游戏操作标识分配操作(3,4)。服务端接收第二客户端发送的游戏操作指令,校验该游戏操作指令的操作标识(3,4)与本地存储的最大操作标识(2)是连续递增的,允许第二客户端继续执行该游戏操作指令,此时第二客户端存储的最大操作标识(2)更新为最大操作标识(4)。将该游戏操作指令广播至第一客户端,以使第一客户端将存储的最大操作标识(2)更新为最大操作标识(4)。此时服务端存储出现异常,服务端的最大操作标识(4)返回至最大操作标识(2),此时第一客户端向服务端发送操作标识(5,6),服务端校验该操作标识(5,6)与存储的最大操作标识(2)没有连续递增,服务端向第一客户端发送操作越界指令,并向第一客户端和第二客户端发送游戏状态信息和存储的最大操作标识(2),以使得第一客户端和第二客户端游戏状态回滚至与服务端游戏状态一致,此时第一客户端和第二客户端存储的最大操作标识(2)。在第一客户端和第二客户端游戏状态回滚后,服务端通知第二客户端继续执行游戏操作,由此游戏恢复正常。

上述,通过接收第一客户端发送的游戏操作指令,获取所述游戏操作指令对应的操作标识,校验所述操作标识与存储的最大操作标识是否满足预设条件;若满足所述预设条件,则将所述操作标识更新为最大操作标识,并将所述游戏操作指令广播至第二客户端,用于所述第二客户端根据所述游戏操作指令进行本地存储的最大操作标识的更新;若不满足所述预设条件,则向所述第一客户端发送操作错误信息,并向所述第一客户端发送存储的最大操作标识以及游戏状态信息,用于所述第一客户端对本地存储的最大操作标识和游戏状态进行更新。采用上述技术手段,服务端只需将最必要的游戏操作指令广播给所有客户端,可以减少无效的数据传输,节省流量的同时也可以提高数据传输速率,提高玩家游戏体验。在客户端丢包时,通过服务端向客户端发送游戏状态信息和存储的最大操作标识,使得客户端与服务端的游戏状态保持一致,避免出现不同玩家视角看到的游戏状态不一致的情况。在服务端丢包时,将所有客户端的游戏状态回滚,以保证所有客户端与服务端游戏状态一致,基于此,服务端的游戏状态存储不要求可靠,可适当降低存储技术复杂度。

实施例二:

在上述实施例的基础上,图7为本申请实施例二提供的一种游戏数据同步装置的结构示意图。参考图7,本实施例提供的游戏数据同步装置具体包括:校验模块11、广播模块12和第一状态同步模块13。

其中,校验模块21,被配置为接收第一客户端发送的游戏操作指令,获取所述游戏操作指令对应的操作标识,校验所述操作标识与存储的最大操作标识是否满足预设条件;

广播模块22,被配置为若满足所述预设条件,则将所述操作标识更新为最大操作标识,并将所述游戏操作指令广播至第二客户端,用于所述第二客户端根据所述游戏操作指令进行本地存储的最大操作标识的更新;

第一状态同步模块23,被配置为若不满足所述预设条件,则向所述第一客户端发送操作错误信息,并向所述第一客户端发送存储的最大操作标识以及游戏状态信息,用于所述第一客户端对本地存储的最大操作标识和游戏状态进行更新。

在上述实施例的基础上,图8为本申请实施例二提供的另一种游戏数据同步装置的结构示意图。参考图8,本实施例提供的游戏数据同步装置具体包括:分配标识模块21、发送操作模块22、第二状态同步模块23和状态更新模块24。

其中,分配标识模块21,被配置为获取用户行为数据生成游戏操作指令,基于存储的最大操作标识为所述游戏操作指令分配操作标识;

发送操作模块22,被配置为将所述游戏操作指令发送至服务端,以使服务端校验所述操作标识与存储的最大操作标识是否满足预设条件;

第二状态同步模块23,被配置为若不满足所述预设条件,则接收所述服务端发送的操作错误信息,本地存储的最大操作标识和游戏状态信息,根据该最大操作标识和游戏状态信息更新存储的最大操作标识和游戏状态;

状态更新模块24,被配置为若满足所述预设条件,则接收所述服务端广播的第二客户端做出的游戏操作指令,并根据该游戏操作指令更新存储的最大操作标识。

上述,通过接收第一客户端发送的游戏操作指令,获取所述游戏操作指令对应的操作标识,校验所述操作标识与存储的最大操作标识是否满足预设条件;若满足所述预设条件,则将所述操作标识更新为最大操作标识,并将所述游戏操作指令广播至第二客户端,用于所述第二客户端根据所述游戏操作指令进行本地存储的最大操作标识的更新;若不满足所述预设条件,则向所述第一客户端发送操作错误信息,并向所述第一客户端发送存储的最大操作标识以及游戏状态信息,用于所述第一客户端对本地存储的最大操作标识和游戏状态进行更新。采用上述技术手段,服务端只需将最必要的游戏操作指令广播给所有客户端,可以减少无效的数据传输,节省流量的同时也可以提高数据传输速率,提高玩家游戏体验。在客户端丢包时,通过服务端向客户端发送游戏状态信息和存储的最大操作标识,使得客户端与服务端的游戏状态保持一致,避免出现不同玩家视角看到的游戏状态不一致的情况。在服务端丢包时,将所有客户端的游戏状态回滚,以保证所有客户端与服务端游戏状态一致,基于此,服务端的游戏状态存储不要求可靠,可适当降低存储技术复杂度。

本申请实施例二提供的游戏数据同步装置可以用于执行上述实施例一提供的游戏数据同步方法,具备相应的功能和有益效果。

实施例三:

本申请实施例三提供了一种电子设备,参照图9,该电子设备包括:处理器31、存储器32、通信模块33、输入装置34及输出装置35。该电子设备中处理器的数量可以是一个或者多个,该电子设备中的存储器的数量可以是一个或者多个。该电子设备的处理器、存储器、通信模块、输入装置及输出装置可以通过总线或者其他方式连接。

存储器32作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请任意实施例所述的游戏数据同步方法对应的程序指令/模块。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

通信模块33用于进行数据传输。

处理器31通过运行存储在存储器中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的游戏数据同步方法。

输入装置34可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置35可包括显示屏等显示设备。

上述提供的电子设备可用于执行上述实施例一提供的游戏数据同步方法,具备相应的功能和有益效果。

实施例四:

本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行实施例一中的游戏数据同步方法。

存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如cd-rom、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如dram、ddrram、sram、edoram,兰巴斯(rambus)ram等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。

当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的游戏数据同步方法,还可以执行本申请任意实施例所提供的游戏数据同步方法中的相关操作。

上述实施例中提供的游戏数据同步装置、存储介质及电子设备可执行本申请任意实施例所提供的游戏数据同步方法,未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的游戏数据同步方法。

上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。

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