一种游戏数据处理的方法和装置
文献发布时间:2023-06-19 11:06:50
技术领域
本发明涉及数据处理技术领域,特别是涉及一种游戏数据处理的方法和装置。
背景技术
多人在线游戏服务端在运行时通常会搭建一个游戏世界,游戏世界可以由成千上万个Entity(实体)对象构成,每个Entity有着各自的功能与属性,彼此联系。当游戏玩家登入游戏时,服务端也会创建一个Entity代表玩家,玩家可以通过这个Entity与游戏世界里的其他Entity进行交互,从而实现游戏玩法。
当游戏世界出现了异常行为或者出现了“Bug”,程序员需要对整个游戏世界进行调试,以便于了解游戏世界运行状态。这个了解的过程可能会影响Bug的修复时间,进而影响上线游戏的服务质量或在研游戏的开发效率。
目前,可以通过在游戏代码里的关键部分输出行为日志,当出现异常时,翻阅打印日志来了解游戏世界的运行状态,但是,打印日志会存在以下问题:
(一)程序员在代码编写时,需要判断某段逻辑是否会成为日后调试的关注重点,从而决定是否在该逻辑里打印日志,以及决定日志的细致程度。然而这一点在开发期是很难做到的,从而可能会面对日志打印太少或者没打日志的困境。
(二)游戏服务端在运行过程中会不断打印大量的日志,但是,在实际查证问题时候需要的日志数量占总打印日志量的比例是非常少的,浪费了很多日志。而打印日志需要消耗服务器主机的磁盘IO(Input/Output,输入/输出)以及磁盘空间,日志上报也需要消耗主机的网络流量。从而打印大量的日志会造成游戏服务器浪费磁盘IO,磁盘空间和网络流量等资源。
发明内容
鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种游戏数据处理的方法和装置,包括:
一种游戏数据处理的方法,所述方法包括:
响应于数据获取请求,建立目标游戏实体的实体代理对象;
通过所述实体代理对象,采集所述目标游戏实体对应的游戏数据。
可选地,在所述响应于数据获取请求,建立目标游戏实体的实体代理对象之前,还包括:
将预置的多个游戏实体配置为一个或多个实体类别;
所述响应于数据获取请求,建立目标游戏实体的实体代理对象,包括:
响应于数据获取请求,确定目标实体类别;
建立针对所述目标实体类别所包含的目标游戏实体的实体代理对象。
可选地,还包括:
分别建立所述一个或多个实体类别的类别代理对象;
通过所述类别代理对象,采集所述一个或多个实体类别对应的游戏数据。
可选地,所述通过所述类别代理对象,采集所述一个或多个实体类别对应的游戏数据,包括:
将所述类别代理对象添加至预置的代理对象池;
调用所述代理对象池,采集所述一个或多个实体类别对应的游戏数据;
还包括:
响应于第一触发事件,将所述类别代理对象从所述代理对象池移除。
可选地,所述通过所述实体代理对象,采集所述目标游戏实体对应的游戏数据,包括:
将所述实体代理对象添加至预置的代理对象池;
调用所述代理对象池,采集所述目标游戏实体对应的游戏数据;
还包括:
响应于第二触发事件,将所述实体代理对象从所述代理对象池移除。
可选地,还包括:
按照所述一个或多个实体类别,对采集的游戏数据进行存储。
可选地,所述数据获取请求包括所述目标游戏实体的标识或所述目标实体类别的标识,还包括:
待采集的属性信息、采集方式信息。
一种游戏数据处理的装置,所述装置包括:
实体代理对象建立模块,用于响应于数据获取请求,建立目标游戏实体的实体代理对象;
游戏数据采集模块,用于通过所述实体代理对象,采集所述目标游戏实体对应的游戏数据。
一种服务器,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的游戏数据处理的方法。
一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的游戏数据处理的方法。
本发明实施例具有以下优点:
通过本发明实施例,可以响应于数据获取请求,建立目标游戏实体的实体代理对象,并通过所述实体代理对象,采集所述目标游戏实体对应的游戏数据,从而实现了,按照用户的数据获取请求采集游戏实体对应的游戏数据,无需打印日志,解决了日志打印过少或者没有打日志的困境,同时,仅在用户请求时采集游戏数据,可以避免打印大量日志,不会造成游戏服务器浪费磁盘IO,磁盘空间和网络流量等资源。
附图说明
为了更清楚地说明本发明的技术方案,下面将对本发明的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种游戏数据处理的方法的步骤流程图;
图2a是本发明一实施例提供的另一种游戏数据处理的方法的步骤流程图;
图2b是本发明一实施例提供一种服务器结构示意图;
图2c是本发明一实施例提供一种生成代理对象的流程示意图;
图2d是本发明一实施例提供一种采集数据的流程示意图;
图3是本发明一实施例提供的一种游戏数据处理的装置的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1,示出了本发明一实施例提供的一种游戏数据处理的方法的步骤流程图,具体可以包括如下步骤:
步骤101,响应于数据获取请求,建立目标游戏实体的实体代理对象;
在本发明一实施例中,所述数据获取请求包括所述目标游戏实体的标识或所述目标实体类别的标识,还包括:
待采集的属性信息、采集方式信息。
在游戏世界中可以存在多个游戏实体,针对每个游戏实体可以配置不同的功能和属性,通过游戏实体之间的交互可以形成了游戏的玩法。当游戏世界出现异常时,可以通过游戏实体的指标快速了解整个游戏世界,并针对异常进行恢复。
在调试或正式运营过程中,需要通过了解游戏实体的相关游戏数据来了解该游戏世界的情况,从而用户可以根据需要调试的关键节点,在前端输入对应指令,生成指令相关的数据获取请求,并将数据获取请求发送至游戏服务器。
游戏服务器可以在接收到数据获取请求之后,响应于该数据获取请求,确定数据获取请求中关联的目标游戏实体,从而可以建立目标游戏实体的实体代理对象。
其中,数据获取请求可以包括目标游戏实体的标识,从而可以通过目标游戏实体的标识确定数据获取请求所关联的目标游戏实体;或者,数据获取请求可以包括目标实体类别的标识,从而可以通过目标实体类别的标识确定数据获取请求所关联的目标实体类别。
数据获取请求还可以包括待采集的属性信息以及采集方式信息。
待采集的属性信息可以包括目标游戏实体的类型、游戏位置等属性信息。
通过用户发送的数据获取请求,可以按照用户需求获取数据,不需要在编写代码时就确定关键点,避免了日志打印过少或者没打的困境。
步骤102,通过所述实体代理对象,采集所述目标游戏实体对应的游戏数据。
在确定实体代理对象后,可以通过实体代理对象,采集目标游戏实体对应的游戏数据,并根据这些游戏数据确定了解游戏世界的具体情况,分析游戏世界的异常,以便及时处理异常,恢复游戏世界的正常运行。
在本发明实施例中,可以响应于数据获取请求,建立目标游戏实体的实体代理对象,并通过所述实体代理对象,采集所述目标游戏实体对应的游戏数据,从而实现了,按照用户的数据获取请求采集游戏实体对应的游戏数据,无需打印日志,解决了日志打印过少或者没有打日志的困境,同时,仅在用户请求时采集游戏数据,可以避免打印大量日志,不会造成游戏服务器浪费磁盘IO,磁盘空间和网络流量等资源。
参照图2a,示出了本发明一实施例提供的另一种游戏数据处理的方法的步骤流程图,具体可以包括如下步骤:
步骤201,将预置的多个游戏实体配置为一个或多个实体类别;
在实际应用中,游戏世界中可以存在大量的游戏实体,游戏服务器可以对游戏世界中的多个游戏实体进行分类,即将预置的多个游戏实体配置成一个或多个实体类别。
在一示例中,可以按照游戏实体所属的场景地图或者其他自定义规则对游戏实体进行分类。
步骤202,响应于数据获取请求,确定目标实体类别;
在配置好每个游戏实体的实体类别后,当用户对某一类别的实体感兴趣时,可以在针对该实体类别发送数据获取请求,服务器在接收到数据获取请求时,可以从数据获取请求中,确定用户感兴趣的实体类别。
在一示例中,可以将该实体类别添加到感兴趣实体类别列表中,所述类别列表中还可以包括感兴趣实体类别的时间信息,该时间信息可以是最近一次针对该感兴趣实体类别发送请求的时间信息,进而可以根据时间信息维护列表。
感兴趣列表最初为空列表,当用户针对某一实体类别发送数据获取请求时,可以将该实体类别填加至感兴趣类别列表中,并在感兴趣列表中记录本次请求的时间信息,可以针对感兴趣列表设置列表中数据的有效时间,当用户在有效时间内再次针对该实体类别发送请求时,可以更新请求时间。当超过有效时间,用户未对该实体类别再次发送请求,则将该实体类别的相关数据从感兴趣实体类别列表中删除。
步骤203,建立针对所述目标实体类别所包含的目标游戏实体的实体代理对象。
在确定目标实体类别之后,可以针对目标实体类别中所包含的目标游戏实体,建立目标游戏实体的实体代理对象。
步骤204,通过所述实体代理对象,采集所述目标游戏实体对应的游戏数据。
在本发明一实施例中,所述通过所述实体代理对象,采集所述目标游戏实体对应的游戏数据,包括:
将所述实体代理对象添加至预置的代理对象池;调用所述代理对象池,采集所述目标游戏实体对应的游戏数据;
在实际应用中,在创建实体代理对象后,可以将实体代理对象添加至预置的代理对象池中,当用户需要采集数据时,可以遍历代理对象池,针对遍历到的实体代理对象,可以针对实体代理对象对应的目标游戏实体进行游戏数据采集,从而可以采集到目标游戏实体对应的游戏数据。
在一示例中,代理对象池不仅可以增加用户感兴趣的实体代理对象,还可以对代理对象池中的代理对象进行删除,以维护代理对象池,减轻服务器采集数据的压力,可以通过如下方式对代理对象池进行维护:
响应于第二触发事件,将所述实体代理对象从所述代理对象池移除。
在实际应用中,服务器可以响应第二触发事件,对一定时间内用户未请求的游戏实体对应的实体代理对象进行清理,将其从代理对象池中移除。
在一示例中,所述第二触发事件可以是定时器触发的事件。
在本发明一实施例中,还包括:
S01,分别建立所述一个或多个实体类别的类别代理对象;
在实际应用中,代理对象可以包括实体代理对象和类别代理对象,实体代理对象可以用于对游戏实体采集游戏数据,类别代理对象可以用于对实体类别采集游戏数据,实体类别的游戏数据为该类别下的游戏实体的共同特征,属于比较概要的游戏数据。
当服务器未收到用户的数据获取请求时,可以建立一个或多个实体类别的类别代理对象。
当服务器对游戏实体生成代理对象后,也可以针对游戏实体的实体类别生成类别代理对象。
S02,通过所述类别代理对象,采集所述一个或多个实体类别对应的游戏数据。
在获取类别代理对象后,可以采集一个或多个实体类别对应的游戏数据。
当用户不发送数据获取请求时,可以仅采集实体类别对应的游戏数据,呈现给用户,以便用户进行选择。
通过在用户不发送请求时,对每个类别的Entity做一个简单的概要信息采集,得到的游戏数据简短且概括性强,可以有效地降低在无人关注状态下服务器的开销,节省了服务器资源。
在本发明一实施例中,所述通过所述类别代理对象,采集所述一个或多个实体类别对应的游戏数据,包括:
将所述类别代理对象添加至预置的代理对象池;调用所述代理对象池,采集所述一个或多个实体类别对应的游戏数据;
在实际应用中,在创建类别代理对象后,可以将类别代理对象添加至预置的代理对象池中,当用户需要采集数据时,可以遍历代理对象池,针对遍历到的类别代理对象,可以对类别代理对象对应的实体类别进行游戏数据采集,从而可以采集到一个或多个实体类别对应的游戏数据。
在实际应用中,在创建实体代理对象后,可以将实体代理对象添加至预置的代理对象池中,当用户需要采集数据时,可以遍历代理对象池,针对遍历到的实体代理对象,可以针对实体代理对象对应的目标游戏实体进行游戏数据采集,从而可以采集到目标游戏实体对应的游戏数据。
在一示例中,代理对象池不仅可以增加用户感兴趣的类别代理对象,还可以对代理对象池中的类别代理对象进行删除,以维护代理对象池,减轻服务器采集数据的压力,可以通过如下方式对代理对象池进行维护:还包括:
响应于第一触发事件,将所述类别代理对象从所述代理对象池移除。
在实际应用中,服务器可以响应第一触发事件,对一定时间内用户未请求的实体类别对应的类别代理对象进行清理,将其从代理对象池中移除。
在一示例中,所述第一触发事件可以是定时器触发的事件。
在本发明一实施例中,所述方法还包括:
按照所述一个或多个实体类别,对采集的游戏数据进行存储。
在实际应用中,可以按照一个或多个实体类别,对采集的游戏数据进行存储,可以采用内存型非关系数据库(如Redis数据库)存储采集结果,通过对每个实体类别的Entity单独在数据库中建立key(键),利用Redis数据库的高可用特性,可以让多个服务器进程在这个key中写入采集到的数据,同时,由于采用的是内存型数据,运行效率较高,能够保证这个数据汇总的高效以及准确,而不需要采用运算复杂繁琐的ELK,Kibana等日志处理工具。
在本发明实施例中,可以将预置的多个游戏实体配置为一个或多个实体类别,响应于数据获取请求,确定目标实体类别,建立针对所述目标实体类别所包含的目标游戏实体的实体代理对象,并通过所述实体代理对象,采集所述目标游戏实体对应的游戏数据,从而实现了,按照用户的数据获取请求采集游戏实体对应的游戏数据,无需打印日志,解决了日志打印过少或者没有打日志的困境,同时,仅在用户请求时采集游戏数据,可以避免打印大量日志,不会造成游戏服务器浪费磁盘IO,磁盘空间和网络流量等资源。
以下结合图2b-2d对本发明进行示例性说明:
如图2b所示,在服务器中可以包括以下模块:
请求接收器:用于接收用户发送的数据获取请求,数据获取请求中可以包括用户当前关心的Entity类别。
Entity代理系统:用于建立代理对象,并管理代理对象。Entity代理系统包括类别列表和代理对象池,类别列表中可以存储有用户感兴趣的游戏实体类别,并可以对该实体类别进行维护;代理对象池用于存储实体代理对象和类别代理对象。
定时器:用于触发生成代理对象以及触发对代理对象进行采集。
Entity采集系统:在被触发时,遍历代理对象池中的代理对象,根据代理对象采集相应的游戏数据,并存入Redis数据库中。
Redis数据库:用于存储Entity采集系统采集的游戏数据。
基于上述模块,按需采集游戏数据的步骤如下:
(1)用户发送数据获取请求至数据接收器;
(2)根据数据获取请求建立用户感兴趣的类别列表,当被定时器触发时,可以激活用户感兴趣的实体类别,从而可以对该实体类别下的所有游戏实体的实体代理对象,并将生成的实体代理对象存储在代理对象池中。
定时器触发生成代理对象的过程如图2c所示,可分为以下步骤:
S101,定时器触发列表维护。
遍历列表中所有类别,更新列表中每个类别最近一次被用户请求的时间,剔除超过一定时间未被用户请求的类别。
S102,对列表进行维护,并对所有实体类别进行遍历,判断该实体类别是否在列表中,当判定该实体类别在列表中,执行S103;当判定该实体类别不在列表中,执行S104。
S103,遍历该实体类别的所有实体,生成实体代理对象,并对其进行维护。当实体遍历结束后,执行S104。
S104,生成实体类别的类别代理对象,并存储在代理对象池中。
(3)定时器触发Entity采集系统调用代理对象池中的代理对象采集游戏数据,并将采集的游戏数据按照实体类别写入数据库。
定时器触发采集游戏数据的过程如图2d所示,可分为以下步骤:
S201,在定时器触发后,遍历代理对象池中所有代理对象;
S202,判断代理对象是否为类别代理对象,当判定代理对象为类别代理对象时,则采集该实体类别的概要数据,当判定代理对象不是类别代理对象而是实体代理对象时,可以采集实体代理对象对应实体的游戏数据;
S203,将采集的游戏数据按照类别写入数据库,判断对象遍历是否完成,当对象遍历完成时,结束本次采集,当对象遍历未完成时,继续执行时S202。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图3,示出了本发明一实施例提供的一种游戏数据处理的装置的结构示意图,具体可以包括如下模块:
实体代理对象建立模块301,用于响应于数据获取请求,建立目标游戏实体的实体代理对象;
第一游戏数据采集模块302,用于通过所述实体代理对象,采集所述目标游戏实体对应的游戏数据。
在本发明一实施例中,所述装置还包括:
实体类别配置模块,用于将预置的多个游戏实体配置为一个或多个实体类别;
其中,所述实体代理对象建立模块301可以包括:
目标实体类别确定子模块,用于响应于数据获取请求,确定目标实体类别;
实体代理对象建立子模块,用于建立针对所述目标实体类别所包含的目标游戏实体的实体代理对象。
在本发明一实施例中,所述装置还可以包括:
类别代理对象建立模块,用于分别建立所述一个或多个实体类别的类别代理对象;
第二游戏数据采集模块,用于通过所述类别代理对象,采集所述一个或多个实体类别对应的游戏数据。
在本发明一实施例中,所述类别代理对象建立模块可以包括:
第一添加子模块,用于将所述类别代理对象添加至预置的代理对象池;
第一游戏数据采集子模块,用于调用所述代理对象池,采集所述一个或多个实体类别对应的游戏数据;
其中,所述类别代理对象建立模块还包括:
第一移除子模块,用于响应于第一触发事件,将所述类别代理对象从所述代理对象池移除。
在本发明一实施例中,所述实体代理对象建立模块301可以包括:
第二添加子模块,用于将所述实体代理对象添加至预置的代理对象池;
第二游戏数据采集子模块,用于调用所述代理对象池,采集所述目标游戏实体对应的游戏数据;
其中,所述实体代理对象建立模块301可以还包括:
第二移除子模块,用于响应于第二触发事件,将所述实体代理对象从所述代理对象池移除。
在本发明一实施例中,所述装置还包括:
游戏数据存储模块,用于按照所述一个或多个实体类别,对采集的游戏数据进行存储。
在本发明一实施例中,所述数据获取请求包括所述目标游戏实体的标识或所述目标实体类别的标识,还包括:
待采集的属性信息、采集方式信息。
在本发明实施例中,可以响应于数据获取请求,建立目标游戏实体的实体代理对象,并通过所述实体代理对象,采集所述目标游戏实体对应的游戏数据,从而实现了,按照用户的数据获取请求采集游戏实体对应的游戏数据,无需打印日志,解决了日志打印过少或者没有打日志的困境,同时,仅在用户请求时采集游戏数据,可以避免打印大量日志,不会造成游戏服务器浪费磁盘IO,磁盘空间和网络流量等资源。
本发明一实施例还提供了一种服务器,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上游戏数据处理的方法。
本发明一实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上游戏数据处理的方法。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对所提供的一种游戏数据处理的方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
- 游戏数据处理方法、游戏数据处理装置、介质、电子设备
- 游戏系统、游戏执行方法及游戏装置的数据处理方法