游戏数据的处理方法及装置、游戏服务器、游戏系统与流程

文档序号:15851454发布日期:2018-11-07 10:02阅读:375来源:国知局

本发明涉及通信领域,具体而言,涉及一种游戏数据的处理方法及装置、游戏服务器、游戏系统。

背景技术

相关技术中,在网络游戏领域服务端和客户端之间存在的大量的数据交互,玩家的每一次操作都很可能导致数据的更新,更新的数据需要在客户端显示界面,游戏服务器内存和游戏数据库之间保持一致。

为了保证这些数据的一致性,需要程序员在于每一个导致数据变化的逻辑时都需要考虑清楚,一个数据的变化会导致多少个系统的变化,并且通知相关的系统,从而保证多个系统之间数据的一致性,这样极大增加了系统的耦合度,增加了开发的难度。

同时,相关技术中,同一个系统的相关数据往往会在一个数据包里面发送,导致更新一个属性常常需要在客户端和服务器之间传递大量没有被修改其他数据。另外,很多玩家的游戏重要数据需要保存到数据库,当然实时保存是最好的,但是出于性能的考虑往往不能实时保存数据到数据库,只能在给定时间保存一次,这导致服务器因为各种异常(断电,硬件异常,软件异常)宕机时,很可能就会有很多重要数据回档,严重影响到玩家的游戏体验,也极大增加了游戏维护的难度和工作量。

针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。



技术实现要素:

本发明实施例提供了一种游戏数据的处理方法及装置、游戏服务器、游戏系统。

根据本发明的一个实施例,提供了一种游戏数据的处理方法,包括:在网络侧检测到待更新的游戏数据;将所述游戏数据存储到网络侧的预设存储区域;按照预定周期将所述游戏数据从所述预设存储区域发送至游戏客户端。

根据本发明的另一个实施例,提供了一种游戏数据的处理装置,包括:检测模块,用于在网络侧检测到待更新的游戏数据;存储模块,用于将所述游戏数据存储到网络侧的预设存储区域;发送模块,用于按照预定周期将所述游戏数据从所述预设存储区域发送至游戏客户端。

根据本发明的又一个实施例,提供了一种游戏服务器,包括:处理模块,用于在所述游戏服务器的功能模块检测到待更新的游戏数据,将所述游戏数据存储到数据模块,按照预定周期将所述游戏数据从所述数据模块发送至游戏客户端;所述数据模块,与所述处理模块连接,用于存储所述游戏数据;所述功能模块,与所述处理模块和所述游戏客户端连接,用于生成所述游戏数据。

根据本发明的又一个实施例,提供了一种游戏系统,包括:游戏服务器,游戏客户端,所述游戏服务器包括:处理模块,用于在所述游戏服务器的功能模块检测到待更新的游戏数据,将所述游戏数据存储到数据模块,按照预定周期将所述游戏数据从所述数据模块发送至游戏客户端;所述数据模块,与所述处理模块连接,用于存储所述游戏数据;所述功能模块,与所述处理模块和所述游戏客户端连接,用于生成所述游戏数据;所述游戏客户端,用于监听所述游戏数据,在所述游戏数据符合预定条件时,接收所述游戏数据。

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

通过本发明,在检测到待更新的游戏数据,不直接发送至游戏客户端,而是存储到网络侧的预设存储区域,然后从统一预设存储区域周期性发送至游戏客户端,在网络侧架构上实现了功能与数据解耦,避免了功能模块的游戏数据直接与游戏客户端交互,解决了相关技术中与游戏客户端交互游戏数据时过于复杂的技术问题,降低了游戏逻辑开发的复杂度。

附图说明

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

图1是根据本发明实施例的游戏数据的处理方法的流程图;

图2是根据本发明实施例的游戏数据的处理装置的结构框图;

图3是根据本发明实施例的游戏服务器的结构框图;

图4是本发明实施例的游戏系统的结构示意图;

图5是本实施例的客户端功能模块注册数据监听模型示意图;

图6是本发明实施例的登录过程数据同步时序图;

图7是本发明实施例的客户端主动更新的时序图;

图8是本发明实施例的展示增量数据生成时序图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

本申请实施例应用的网络架构包括:游戏客户端、游戏服务器,在游戏过程中,游戏客户端通过网络接入到游戏服务器。

在本实施例中提供了一种运行于上述网络架构的游戏数据的处理方法,图1是根据本发明实施例的游戏数据的处理方法的流程图,如图1所示,该流程包括如下步骤:

步骤s102,在网络侧检测到待更新的游戏数据;

步骤s104,将游戏数据存储到网络侧的预设存储区域;

步骤s106,按照预定周期将游戏数据从预设存储区域发送至游戏客户端。

通过上述步骤,在检测到待更新的游戏数据,不直接发送至游戏客户端,而是存储到网络侧的预设存储区域,然后从统一预设存储区域周期性发送至游戏客户端,在网络侧架构上实现了功能与数据解耦,避免了功能模块的游戏数据直接与游戏客户端交互,解决了相关技术中与游戏客户端交互游戏数据时过于复杂的技术问题,降低了游戏逻辑开发的复杂度。

可选地,上述步骤的执行主体可以为网络侧设备,如服务器等,但不限于此。

游戏客户端在游戏进行中,服务器对应系统处理完逻辑后如果发现有数据修改,会立刻通知数据模块(预设存储区域)更新对应数据,但不会马上通知客户端,而是数据模块在一定时间内(比如100ms)才把这段时间内有变化的数据统一发送给客户端。客户端数据模块在收到服务器的数据更新后,通知该数据对应的客户端系统更新显示。客户端各个系统可以监听自己需要关心的数据,各个系统自己处理自己的数据监听事件,这样保证客户端各个系统只需要考虑自己关心的数据,而不需要考虑不同系统之间的数据耦合性,大大降低逻辑开发的复杂度。

可选地,在网络侧检测到待更新的游戏数据之前,还包括:将游戏客户端登陆到网络侧;根据请求向游戏客户端发送初始数据,其中,初始数据用于在游戏客户端运行游戏。在客户端登录上服务器后,首先需要请求一份服务器数据为客户端数据模块的本地初始数据。

可选地,按照预定周期将游戏数据从预设存储区域发送至游戏客户端包括:按照预定周期将游戏数据的增量数据通过键值方式从预设存储区域发送至游戏客户端。除了客户端登录时第一次请求数据(初始数据),随后的游戏过程中服务器发送给客户端的数据只传输增量数据,使用key-value(键值)方式发送,以减少数据的冗余传输。

可选地,将游戏数据存储到网络侧的预设存储区域包括:获取游戏数据的数据类型;根据数据类型实时或者定时将游戏数据存储到网络侧的预设存储区域。服务器使用了统一的数据模块(预设存储区域),这样可以对于不同数据使用不同的存储模式,最重要的数据实时存储,其他数据根据配置的优先级(对于玩家和系统的重要程度)和系统运行情况(cpu,io等服务器系统资源占有情况)按照合适的时间存储,最大程度减少因为服务器宕机而造成的数据丢失的回档问题。

可选地,游戏数据包括:数据内容,使用数据内容的游戏客户端标识,优先级信息。客户端也可以通过注册接口向服务器注册自己需要使用的数据,在被注册的数据被更新后,数据模块会通知使用该数据的系统和客户端,实现游戏数据的定向发送,节省资源。

在本实施例中还提供了一种游戏数据的处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图2是根据本发明实施例的游戏数据的处理装置的结构框图,如图2所示,该装置包括:

检测模块20,用于在网络侧检测到待更新的游戏数据;

存储模块22,用于将游戏数据存储到网络侧的预设存储区域;

发送模块24,用于按照预定周期将游戏数据从预设存储区域发送至游戏客户端。

可选的,发送模块包括:发送单元,用于按照预定周期将游戏数据的增量数据通过键值方式从预设存储区域发送至游戏客户端。

可选的,存储模块包括:获取单元,用于获取游戏数据的数据类型;存储单元,用于根据数据类型实时或者定时将游戏数据存储到网络侧的预设存储区域。

在一个应用实例中,本实施例的装置应用在游戏服务器上,图3是根据本发明实施例的游戏服务器的结构框图,如图3所示,包括:处理模块30,用于在游戏服务器的功能模块检测到待更新的游戏数据,将游戏数据存储到数据模块,按照预定周期将游戏数据从数据模块发送至游戏客户端;数据模块32,与处理模块连接,用于存储游戏数据;功能模块34,与处理模块和游戏客户端连接,用于生成游戏数据。

本实施例还提供一种游戏系统,包括:游戏服务器,游戏客户端,游戏服务器包括:处理模块,用于在游戏服务器的功能模块检测到待更新的游戏数据,将游戏数据存储到数据模块,按照预定周期将游戏数据从数据模块发送至游戏客户端;数据模块,与处理模块连接,用于存储游戏数据;功能模块,与处理模块和游戏客户端连接,用于生成游戏数据;游戏客户端,用于监听游戏数据,在游戏数据符合预定条件时,接收游戏数据。预定条件可以是游戏数据时本客户端需要的,如已经注册过的,或者是请求的,或者是与客户端(游戏账号)相关的。

图4是本发明实施例的游戏系统的结构示意图,作为本实施例游戏系统的一个示例,包括:

服务器数据存储模块,服务器数据处理模块,服务器功能模块,客户端数据处理模块,客户端功能模块。

服务器数据存储模块负责数据的存储,具体实现上可使用文件或者数据库存储。

服务器数据处理模块,负责各类数据的处理。首先需要定义统一的数据结构,比如玩家属性的具体数据,包括每个属性的id,类型,值,是否需要发送给客户端,是否需要保存到数据库,数据优先级。然后它提供的功能包括:各个功能模块数据使用接口;按照定义的数据重要性和当前服务器的负载把数据持久化到服务器数据存储模块;以及按照定义的规则把更新的数据发送给客户端。

服务器功能模块,负责数据的定义,使用和解释;它从客户端接收处理命令,从服务器数据处理模块查询到当前的数据,并且在对客户端的命令进行处理的同时通过数据处理模块更新数据。

客户端数据处理模块,负责接受服务器的数据并保存在本地内存,同时把本次更新的数据通知到客户端功能模块供其使用。

客户端功能模块,负责处理玩家的输入,在向服务器发送处理请求后,等待客户端数据处理模块数据更新通知后使用数据。

在本实施例的客户端的登录过程数据同步中,客户端启动后,发起网络连接前,完成本地资源加载和功能准备。每个客户端功能模块向客户端数据处理模块注册监听使用数据。客户端的数据模块初始化为空,客户端数据处理模块开始监听客户端的数据模块数据变化。图5是本实施例的客户端功能模块注册数据监听模型示意图。

同个数据的数据id可以被多个客户端功能模块监听,数据结构表示如下:

eventobserver={

数据id1:{模块名1i:功能接口1i,模块名1j:功能接口1j,...},

数据id2:{模块名2i:功能接口2i,模块名2j:功能接口2j,...},

......

数据idn:{模块名ni:功能接口ni,模块名nj:功能接口nj,...},

}

注册接口

registerobserver(数据id,功能名,功能接口);

通知接口

notifyobserver(数据id,数据集合);

数据集合是功能接口参数

登录由客户端功能模块发起,在数据同步前,先完成账号验证。服务器登陆功能模块对客户端账号完成验证后,通知服务器数据处理模块,从持久化数据(数据库或文件)中加载玩家数据到内存中,内存中数据即服务器数据模块。服务器数据处理模块提供接口供服务器功能模块访问或操作服务器数据模块。

服务器数据模块需进行初始化,以key-value方式存放数据,value除了记录业务数据,还包括是否同步到客户端标识和数据优先级(后续用到),下面所示:

数据id:{数据优先级,是否同步,数据内容1,数据内容2,...}

准备完数据后,服务器数据处理模块通知客户端数据处理模块服务器数据已准备好,客户端可请求同步。为什么不直接将客户端依赖的所有服务器数据直接推送给客户端呢?因客户端设备差异性,客户端本地初始化进度是不可控的,所以,由客户端本地初始化完成后并已收服务器准备完消息,再由客户端数据处理模块一次性请求同步客户端所依赖服务器的所有数据较好。

客户端本地初始化完毕,客户端数据处理模块向服务器请求数据同步,第一次增量数据同步了包含客户端依赖的所有服务器数据(key-value中,所有是否同步为“开”),即客户端数据模块。客户端数据处理模块检查每个注册监听数据对应的客户端功能模块,将客户端功能模块所监听的数据一次性通知客户端功能模块,客户端功能模块使用数据更新显示。图6是本发明实施例的登录过程数据同步时序图,其中,db(database)为数据库。

在游戏过程中数据更新中,游戏过程中的数据更新是增量数据更新,消除冗余消息,减少网络带宽,更少的客户端监听功能模块被触发,客户端功能模块更快使用数据,减少客户端无效更新显示。以下分析数据更新方式、数据产生过程。客户端数据模块按数据是否来源于服务器同步产生分为两种,更新的方式存在差异,包括:不依赖服务器的数据更新和依赖服务器的数据更新,客户端主动更新,客户端被动更新。下面进行说明:

不依赖服务器的数据是客户端本地数据,例如,配置文件、账户缓存数据等,常以加密文件方式保存。这些数据生存周期同客户端或高于客户端,即使客户端被删除,配置文件有时不被删除,便于下次客户端安装,保留用户在同一设备上的行为。为了快速访问,客户端启动后,配置文件加载到内存。客户端功能模块在运行的过程中,通过客户端数据处理模块操作或访问本地数据,同步更新内存和配置文件。相比依赖服务器的数据,客户端本地数据更新并不频繁,依赖用户数据行为和客户端自身。例如,更换账户登录、设置分辨率、调节声音大小、客户端语言,例如:

在客户端,所有来自服务器的数据存放在设备内存,称客户端数据模块。这些数据生命周期同客户端进程。客户端功能模块通过调用客户端数据处理模块提供的接口,使用客户端数据模块。客户端数据模块对客户端功能模块是只读的,客户端数据模块的更新只通过服务器增量更新。客户端数据模块与服务器数据模块中的上个周期数据保持一致。由发起方是否是客户端功能模块而将客户端数据更新分为客户端主动更新和客户端被动更新。

主动更新由客户端功能模块主动发起请求,图7是本发明实施例的客户端主动更新的时序图,例如,玩家在进行游戏的过程中使用物品、修改昵称、设置称号等行为。以设置称号为例来说明客户端称号功能模块发起的主动更新。玩家在称号界面进行设置操作,客户端称号功能模块发起更新称号请求,服务器称号功能模块处理请求,调用服务器数据处理模块操作玩家当前称号数据,立即或下一个数据同步周期(用户体验可接受范围),上个同步周期到现在所有增量数据,一次同步给客户端数据处理模块,客户端数据处理模块将称号数据发送给监听者客户端称号功能模块,玩家界面称号完成更新显示。

被动更新由服务器功能模块发起导致,例如,服务器无时不在的定时器触发功能的更新,还以称号为例,当玩家称号设置了有效期限,那么,服务器称号功能模块可能定时检查称号的有效性。若称号已过期,服务器称号功能模块调用服务器数据处理模块设置当前称号数据过期,当到达下一个增量数据同步周期,过期的称号数据被同步给客户端数据处理模块,客户端数据处理模块将过期称号数据通知给客户端称号功能模块,玩家界面称号被取消。

在本实施例的增量数据生成时,玩家登陆后,服务器数据处理模块为每个玩家分配一块内存,称增量记录,用来保存同步周期间增量更新的数据id。服务器功能模块调用服务器数据处理模块接口操纵数据时,若发生数据变化且是客户端所需要的数据,那么,其数据id被放到增量记录中。客户端第一次数据同步时,增量记录中包含客户端依赖的所有服务器数据的id。每个同步周期开始时,增量记录被清空,周期内所有依赖服务器数据更新的数据id存放到增量记录,待同步周期结束时,从服务器数据模块中提取所有增量记录中数据id对应的value,以key-value方式同步到客户端,然后又进入下一个同步周期,增量记录又被清空。图8是本发明实施例的展示增量数据生成时序图。以下展示增量记录数据结构和操作接口:

在本实施例的游戏过程中数据保存时,服务器数据存储模块对服务器数据模块的保存策略,按时间划分为定时数据存储、实时数据存储。定时数据存储是按固定周期存储,将固定周期内变化的数据一次存储;实时数据存储是指在数据发生变化时,进行一次数据存储,保证数据立即保存,在服务器性能允许时所选策略。定时数据存储减少了数据i/o次数,减轻数据库负担,提升了服务器性能,但周期内发生异常而宕机,数据时不可恢复的;而实时数据存储保证数据更新后立即持久化,防止宕机或其他异常带来的数据丢失,但加重数据库负担,消耗服务器性能,而一般情况下宕机或其他异常的情况发生概率较低。在数据的完整性和性能可靠性之间如何做到最优,保证重要数据立即保存,其他数据定时保存。下面根据数据优先级设计一种保存策略。

根据持久化数据的重要程度,为每个数据id分配优先级,从1到10,数字越大优先级越高。通常消耗类数据的优先级较高,区间5-10;通常展示类数据优先级较低,区间1-5,而涉及付费类的数据优先级最高,设置为10。数据优先级越高,立即保存的必要性要高。最高优先级的数据被服务器数据处理模块更新后,需要调用服务器数据存储模块立即保存。服务器在运行过程中动态计算可使用的数据优先级,计算方法如下:

可使用的数据优先级=cpu计算因素+内存计算因素+i/o计算因素cpu负载变高,内存占用变大,i/o消耗变高都会影响可使用的数据优先级变高,实时数据存储量减少,反之增加。

所有大于可使用的数据优先级的数据发生变化,执行实时数据存储,而小于可使用的数据优先级的数据,执行定时数据存储。

下面逻辑过程用于描述游戏过程中数据保存:

//定时保存增量记录(deltarecord)定义为数据id集合

deltarecord={数据id1,数据id2,...}

//数据id发生更新

dataupdate(数据id)

从服务器数据模块中获取数据id的value

获取服务器当前可使用的数据优先级pri

如果value记录有限价大于等于pri

调用服务器数据存储模块立即保存数据

如果value记录有限价小于pri

将数据id记录到deltarecord

//数据定时存储接口

datasavetick()

record={}//用于记录存储数据字典

遍历deltarecord中所有数据id

从服务器数据模块中获得value,以字典记录到record

调用服务器数据存储模块立即保存record

重置deltarecord

设置下一个保存周期回调接口

通过本实施例的方案,在架构上功能与数据解耦,有助于程序的维护,所有功能共享一份数据,通过数据处理接口访问;通过监听模式处理功能模块、数据处理模块和数据模块关系,高效且低耦合;通过增量数据更新,有效减少网络带宽,较少冗余消息处理,提升客户端性能;使用数据优先级数据存储策略,依据服务器系统性能,实时存储优先级较高数据,定时存储优先级较低数据。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:

s1,在网络侧检测到待更新的游戏数据;

s2,将所述游戏数据存储到网络侧的预设存储区域;

s3,按照预定周期将所述游戏数据从所述预设存储区域发送至游戏客户端。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

s1,在网络侧检测到待更新的游戏数据;

s2,将所述游戏数据存储到网络侧的预设存储区域;

s3,按照预定周期将所述游戏数据从所述预设存储区域发送至游戏客户端。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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