CN112402955B - 游戏日志记录方法及系统 - Google Patents

游戏日志记录方法及系统 Download PDF

Info

Publication number
CN112402955B
CN112402955B CN202010374018.3A CN202010374018A CN112402955B CN 112402955 B CN112402955 B CN 112402955B CN 202010374018 A CN202010374018 A CN 202010374018A CN 112402955 B CN112402955 B CN 112402955B
Authority
CN
China
Prior art keywords
log
log information
game
data
members
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010374018.3A
Other languages
English (en)
Other versions
CN112402955A (zh
Inventor
蔡壮
李昊峰
韩正飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202010374018.3A priority Critical patent/CN112402955B/zh
Publication of CN112402955A publication Critical patent/CN112402955A/zh
Application granted granted Critical
Publication of CN112402955B publication Critical patent/CN112402955B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • A63F13/49Saving the game status; Pausing or ending the game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/70Game security or game management aspects
    • A63F13/79Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories

Abstract

本申请公开了一种游戏日志记录方法,该方法包括:按预设的多个层级创建容器,所述层级包括日志集合、日志成员和日志组员,所述日志成员还包括增区间和减区间;在当前用户操作游戏过程中,向所述容器中实时保存日志信息;按照不同的统计需求从所述容器中提取所述日志信息并进行组合,从而汇总为对应的日志数据;将所述日志数据一次性写入日志文件中。本申请还公开了一种游戏日志记录系统、电子装置和计算机可读存储介质。由此,能够在降低全局变量中存放的数据量的同时,将日志数据一次性写入日志文件中,减少服务器的I/O操作。

Description

游戏日志记录方法及系统
技术领域
本申请涉及数据处理技术领域,尤其涉及一种游戏日志记录方法、系统、电子装置及计算机可读存储介质。
背景技术
在游戏开发过程中,经常会遇到数据分析平台还未完善,却要对测试玩家的日志进行记录分析的情形,当前游戏框架对该情形的主流的处理方式大致有以下两种:
(1)直接埋点记录:在每个记录触发点分别写出按需的数据块,逐条将日志数据写入文件中。
(2)统一存放记录:在每个记录触发点将日志数据按需统一存放在全局变量中,在进程结束时,一次性将日志数据写入文件中。
但是,上述两种处理方式存在很多缺陷。例如,直接埋点记录的方式中按需统计数据条数多,逐条写入日志写入会增加服务器的I/O(Input/Output,输入/输出)操作,加大服务器的性能损耗。而统一存放记录的方式为按需统计,记录的数据量大,将大量的数据存放在全局变量中的,变量占用空间大,增加了服务器的内存消耗。
需要说明的是,上述内容并不用于限制申请保护范围。
发明内容
本申请的主要目的在于提出一种游戏日志记录方法、系统、电子装置及计算机可读存储介质,旨在解决如何在降低内存消耗的同时,将数据一次性写入日志中的问题。
为实现上述目的,本申请实施例提供了一种游戏日志记录方法,所述方法包括:
按预设的多个层级创建容器;
在当前用户操作游戏过程中,向所述容器中实时保存日志信息;
按照不同的统计需求从所述容器中提取所述日志信息并进行组合,从而汇总为对应的日志数据;及
将所述日志数据一次性写入日志文件中。
可选地,所述预设的多个层级包括日志集合、日志成员和日志组员,其中,所述用户操作游戏过程中产生的每一条所述日志信息为所述日志组员;同一类型的一个或多个所述日志组员组合为所述日志成员;所有所述日志成员组合为所述日志集合,一个所述日志集合对应一个所述容器。
可选地,在所述容器中,每个所述日志成员还包括增区间和减区间,所述增区间用于保存获得的物品对应的日志信息,所述减区间用于保存消耗的物品对应的日志信息。
可选地,所述在当前用户操作游戏过程中,向所述容器中实时保存日志信息包括:
将所述日志信息作为一个所述日志组员,根据所述日志信息中的类型从所述日志集合中找到对应的所述日志成员,并根据所述日志信息中的物品为消耗或获得,将所述日志组员写入所述日志成员的增区间或减区间。
可选地,所述按照不同的统计需求从所述容器中提取所述日志信息并进行组合,从而汇总为对应的日志数据包括:
按照不同的统计需求对所述日志集合进行拆解和组合,提取所述统计需求对应的一个或多个所述日志组员的所述日志信息,然后进行数据格式化,最后汇总生成所述日志数据。
可选地,所述统计需求包括计算消耗、计算获得、计算一种类型物品的变更,所述按照不同的统计需求从所述容器中对所述日志信息进行组合,从而汇总为对应的日志数据还包括:
当计算消耗时,将所述日志集合中所有所述日志成员的减区间中的所述日志组员对应的所述日志信息进行汇总;
当计算获得时,将所述日志集合中所有所述日志成员的增区间中的所述日志组员对应的所述日志信息进行汇总;
当计算一种类型物品的变更时,将所述日志集合中所述类型物品对应的所述日志成员中的所有所述日志组员对应的所述日志信息进行汇总。
可选地,所述容器采用全局变量实现,且保存的所有所述日志信息采用统一的数据结构。
此外,为实现上述目的,本申请实施例还提出一种游戏日志记录系统,所述系统包括:
创建模块,用于按预设的多个层级创建容器;
保存模块,用于在当前用户操作游戏过程中,向所述容器中实时保存日志信息;
汇总模块,用于按照不同的统计需求从所述容器中提取所述日志信息并进行组合,从而汇总为对应的日志数据;
记录模块,用于将所述日志数据一次性写入日志文件中。
为实现上述目的,本申请实施例还提出一种电子装置,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的游戏日志记录程序,所述游戏日志记录程序被所述处理器执行时实现如上述的游戏日志记录方法。
为实现上述目的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有游戏日志记录程序,所述游戏日志记录程序被处理器执行时实现如上述的游戏日志记录方法。
本申请实施例提出的游戏日志记录方法、系统、电子装置及计算机可读存储介质,能够保证在所述容器(全局变量)中不会保存重复的日志信息,即不会产生冗余数据,减少了占用空间,降低了服务器的内存消耗。同时,采用一次性将所述日志数据批量写入日志文件中的方式,可以减少服务器的I/O操作,降低服务器的性能损耗。
附图说明
图1为实现本申请各个实施例的一种应用环境架构图;
图2为本申请第一实施例提出的一种游戏日志记录方法的流程图;
图3为本申请中所采用的容器的一种形式的结构示意图;
图4A-4D为本申请一种特定的具体实施例对应的所述容器中保存的数据的示意图;
图5为本申请第二实施例提出的一种电子装置的硬件架构示意图;
图6为本申请第三实施例提出的一种游戏日志记录系统的模块示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
请参阅图1,图1为实现本申请各个实施例的一种应用环境架构图。本申请可应用于包括,但不仅限于客户端2、服务器4、网络6的应用环境中。
其中,所述客户端2用于向用户(玩家)显示游戏界面并接收用户对该游戏的操作,并将该操作生成的日志信息发送至服务器4。所述客户端2可以为PC(Personal Computer,个人电脑)、手机、平板电脑、便携计算机、可穿戴设备等终端设备。
所述服务器4用于对所述客户端2中的该游戏提供数据和技术支持,还用于接收所述日志信息,并生成日志数据,写入日志文件中。所述服务器4可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器等计算设备,可以是独立的服务器,也可以是多个服务器所组成的服务器集群。
所述网络6可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。所述服务器4和一个或多个所述客户端2之间通过所述网络6通信连接,以进行数据传输和交互。
实施例一
如图2所示,为本申请第一实施例提出的一种游戏日志记录方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。
该方法包括以下步骤:
S200,按预设的多个层级创建容器。
所述容器,实质上为一组受到资源限制,彼此间相互隔离的进程。一般情况下,主要使用Docker容器。Docker是一个开源的应用容器引擎,让开发者可以以统一的方式打包应用及依赖包到一个可移植的容器中,然后发布到任何安装了Docker引擎的服务器上,也可以实现虚拟化。
在本实施例中,需要根据调用请求生成一定格式的游戏日志,而日志数据根据用户(玩家)在操作游戏过程中产生的日志信息生成。所述日志信息为在玩家操作游戏过程中产生的需要记录到游戏日志中的信息,用于后续生成对应的日志数据。所述预设的多个层级为:日志集合——日志成员(包括增区间和减区间)——日志组员。其中,一个所述日志集合对应一个所述容器,存放在一个全局的存储块中,用于保存一个玩家在操作游戏过程中产生的日志信息。每个所述日志集合中包括一个或多个日志成员,每个所述日志成员用于存储一系列类型、功能、结构相同(在本实施例中主要是同一类型)的日志信息。每个所述日志成员包括一个或多个日志组员,每个所述日志组员对应一条日志信息。也就是说,该玩家操作游戏过程中产生的每一条日志信息为所述日志组员,同一类型的一个或多个所述日志组员组合为所述日志成员,所有所述日志成员组合为所述日志集合。另外,每个所述日志成员还被分为增区间和减区间,所述增区间用于保存该玩家在操作游戏过程中获得的物品对应的日志信息,所述减区间用于保存该玩家在操作游戏过程中消耗的物品对应的日志信息。所述日志成员中所包括的日志组员按照逻辑(属于获得的物品或者消耗的物品)被分别存放于所述增区间或减区间。参阅图3所示,为所述容器(即日志集合)的一种形式的结构示意图。
在该游戏程序执行的过程中,产生日志信息的代码块可以称为生产者。依照不同的程序逻辑,生产者可以被安放在程序的任意位置,因此,所述日志集合需要保证能被全局访问,这样生产者才能够随时将数据放入其中。依照不同的程序语言,有多种实现方式,最简单的实现方式是使用全局变量。
现有技术中统一存放记录的方式也是使用全局变量,但是该方式是在操作游戏过程中,生产者根据需求直接生成多条日志数据,并放入全局变量中。然而不同的日志数据,会存在内容相互覆盖的情况,也就会多是全局变量内多存入冗余数据,这也是造成内存增加的原因。例如针对所有物品消耗的日志数据(物品A与物品B的消耗数据)与针对某一类型物品变更的日志数据(物品A的消耗和获取数据),均会包含相同的物品消耗日志信息(物品A的消耗)。而本实施例中,是先将日志信息保存在所述日志集合中的相应位置,同一条日志信息只保存一次,后续再根据统计需求对日志信息进行组合,生成日志数据写入日志文件。因此,在全局变量中不会保存重复的日志信息,即不会产生冗余数据,减少了全局变量的占用空间,降低了服务器的内存消耗。
另外,现有技术中生产者需要考虑如何生成日志数据,并将其写入日志文件中或者压入内存中。而在本实施例中,生产者无需关注如何生成日志数据,只需将日志信息按层级放入所述日志集合中即可,即提高了效率,也简化了生产者的逻辑。
S202,在当前用户操作游戏过程中,向所述容器中实时保存日志信息。
玩家在玩游戏的过程中,每一次操作都可能产生一条或多条日志信息。针对当前玩家操作游戏过程中产生的每一条日志信息,均实时保存到所述容器(日志集合)中。其中,将该条日志信息作为一个日志组员,根据该条日志信息中的类型从所述日志集合中找到对应的日志成员,并根据该条日志信息中的物品为消耗或获得,将该条日志信息(该日志组员)写入所述日志成员的增区间或减区间。
例如,当在游戏过程中消耗物品A时,产生一条日志信息,将该条日志信息作为日志组员A保存至所述容器(日志集合)中。其中,由于所述物品A所属类型对应于日志成员B,且消耗属于减区间,则将日志组员A存放在日志成员B的减区间中。
值得注意的是,由于日志统计需求需要对日志成员或日志组员进行各种组合,所以要求数据结构设计尽可能的统一化,方便对数据进行提取。在本实施例中,对所保存的所有日志信息(日志组员/日志成员)采用统一的数据结构,即采用统一的关键字段记录所述日志信息,例如:编号(id)、类型(type)、数量(num)。所述关键字段可以称为索引,统一的索引能极大地提升数据的处理效率。
S204,按照不同的统计需求从所述容器中提取所述日志信息并进行组合,从而汇总为对应的日志数据。
由于所述日志集合中记录的只是每个日志组员对应的日志信息,并不是完整的日志数据,因此需要根据所述日志集合组合出完整的日志数据,用以满足查看和统计需求。在本实施例中,会按照不同的统计需求对所述日志集合进行拆解和组合,提取所述统计需求对应的一个或多个日志组员的日志信息,然后进行数据格式化(即将所提取的日志信息按照所述统计需求变为需要的日志数据),最后汇总生成完整的日志数据。
在本实施例中,所述统计需求可能包括计算消耗、计算获得、计算某一类型物品的变更等等。其中,当计算消耗时,需要将所述日志集合中所有日志成员的减区间中的日志组员对应的日志信息进行汇总;当计算获得时,需要将所述日志集合中所有日志成员的增区间中的日志组员对应的日志信息进行汇总;当计算某一类型物品的变更时,需要将所述日志集合中该类型物品对应的日志成员中的所有日志组员对应的日志信息进行汇总。
一般情况下,在完成当前操作后,进行一次汇总,生成所述日志数据。在其他实施例中,也可以设置为在其他时间节点汇总生成所述日志数据,在此不做限制。
S206,将所述日志数据一次性写入日志文件中。
在本实施例中,当按照不同的统计需求生成所述日志数据后,一次性将所述日志数据批量写入日志文件中。在其他实施例中,也可以按需设置将所述日志数据批量写入日志文件中的时间节点。采用一次性将所述日志数据批量写入日志文件中的方式,可以减少服务器的I/O操作,降低服务器的性能损耗。
用户可以查看所述日志文件中的日志数据,或者可以根据实际情况,定时(例如按小时/天)对所述日志文件中的日志数据进行统计分析。
本实施例提出的游戏日志记录方法,可以在减少服务器的I/O操作的同时,降低服务器内存消耗,提升性能,并且方便程序人员的使用,极大的缩短游戏开发时间,节约成本。另外,按照所述日志集合的方式进行日志信息保存和汇总,还有利于便捷的处理分析内容。
为了更详尽的对该方法的上述各步骤进行解释说明,以下以特定的具体实施例(一次玩家抽卡过程)为例进行说明。本领域技术人员当知,下述具体实施例的内容并不用于限制本发明的发明思想,本领域技术人员可以轻易依据下述实施例具体描述内容进行适当的内容发散和扩展。
(一)发起抽卡操作。
(二)假设本次抽卡消耗了道具A和钻石,在日志集合中记录相应的日志信息。其中,道具A的属性为:编号(id):3,消耗数量(num):1,道具类型(type):1,归属子类型(subtype):12。钻石的属性为:编号(id):1,消耗数量(num):500,,道具类型(type):1,归属子类型(subtype):99。当扣除道具A和钻石成功时,生成日志组员道具A(itemA)和日志组员钻石(diamond),如图4A所示。
(三)将日志组员道具A和日志组员钻石归属于日志成员道具(item)中,且由于是消耗,归属于日志成员道具的减去间,如图4B所示。
(四)执行卡牌抽取算法,获得卡牌A,在日志集合中记录相应的日志信息。其中,卡牌A的属性为:编号(id):3,获得数量(num):1,道具类型(type):3,唯一编码(uniqueid):33。当获取成功时,生成日志组员卡牌A(cardA),如图4C所示。
(五)将日志组员卡牌A归属于日志成员卡牌(card)中,且由于是获得,归属于日志成员卡牌的增去间,如图4D所示。
(六)抽卡结束,产生的统计需求有:
(1)计算消耗:从日志集合中提取所有日志成员的减区间中的日志组员对应的日志信息,包括日志组员道具A和日志组员钻石的日志信息,生成对应的日志数据。
(2)计算获得:从日志集合中提取所有日志成员的增区间中的日志组员对应的日志信息,包括日志组员卡牌A的日志信息,生成对应的日志数据。
(3)计算卡牌变更:从日志集合中提取日志成员卡牌中所有日志组员对应的日志信息,包括日志组员卡牌A的日志信息,生成对应的日志数据。
(4)计算道具变更:从日志集合中提取日志成员道具中所有日志组员对应的日志信息,包括日志组员道具A和日志组员钻石的日志信息,生成对应的日志数据。
(七)将上一步所生成的所有日志数据批量写入日志文件中。
实施例二
如图5所示,为本申请第二实施例提出一种电子装置20的硬件架构示意图。本实施例中,所述电子装置20可包括,但不仅限于,可通过系统总线相互通信连接的存储器21、处理器22、网络接口23。需要指出的是,图5仅示出了具有组件21-23的电子装置20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。在本实施例中,所述电子装置20可以是所述服务器4。
所述存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器21可以是所述电子装置20的内部存储单元,例如该电子装置20的硬盘或内存。在另一些实施例中,所述存储器21也可以是所述电子装置20的外部存储设备,例如该电子装置20上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器21还可以既包括所述电子装置20的内部存储单元也包括其外部存储设备。本实施例中,所述存储器21通常用于存储安装于所述电子装置20的操作系统和各类应用软件,例如游戏日志记录系统60的程序代码等。此外,所述存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制所述电子装置20的总体操作。本实施例中,所述处理器22用于运行所述存储器21中存储的程序代码或者处理数据,例如运行所述游戏日志记录系统60等。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述电子装置20与其他电子设备之间建立通信连接。
实施例三
如图6所示,为本申请第三实施例提出一种游戏日志记录系统60的模块示意图。所述游戏日志记录系统60可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。
在本实施例中,所述游戏日志记录系统60包括:
创建模块600,用于按预设的多个层级创建容器。
在本实施例中,需要根据调用请求生成一定格式的游戏日志,而日志数据根据用户(玩家)在操作游戏过程中产生的日志信息生成。所述日志信息为在玩家操作游戏过程中产生的需要记录到游戏日志中的信息,用于后续生成对应的日志数据。所述预设的多个层级为:日志集合——日志成员(包括增区间和减区间)——日志组员。其中,一个所述日志集合对应一个所述容器,存放在一个全局的存储块中,用于保存一个玩家在操作游戏过程中产生的日志信息。每个所述日志集合中包括一个或多个日志成员,每个所述日志成员用于存储一系列类型、功能、结构相同(在本实施例中主要是同一类型)的日志信息。每个所述日志成员包括一个或多个日志组员,每个所述日志组员对应一条日志信息。也就是说,该玩家操作游戏过程中产生的每一条日志信息为所述日志组员,同一类型的一个或多个所述日志组员组合为所述日志成员,所有所述日志成员组合为所述日志集合。另外,每个所述日志成员还被分为增区间和减区间,所述增区间用于保存该玩家在操作游戏过程中获得的物品对应的日志信息,所述减区间用于保存该玩家在操作游戏过程中消耗的物品对应的日志信息。所述日志成员中所包括的日志组员按照逻辑(属于获得的物品或者消耗的物品)被分别存放于所述增区间或减区间。
在该游戏程序执行的过程中,产生日志信息的代码块可以称为生产者。依照不同的程序逻辑,生产者可以被安放在程序的任意位置,因此,所述日志集合需要保证能被全局访问,这样生产者才能够随时将数据放入其中。依照不同的程序语言,有多种实现方式,最简单的实现方式是使用全局变量。
现有技术中统一存放记录的方式也是使用全局变量,但是该方式是在操作游戏过程中,生产者根据需求直接生成多条日志数据,并放入全局变量中。然而不同的日志数据,会存在内容相互覆盖的情况,也就会多是全局变量内多存入冗余数据,这也是造成内存增加的原因。例如针对所有物品消耗的日志数据(物品A与物品B的消耗数据)与针对某一类型物品变更的日志数据(物品A的消耗和获取数据),均会包含相同的物品消耗日志信息(物品A的消耗)。而本实施例中,是先将日志信息保存在所述日志集合中的相应位置,同一条日志信息只保存一次,后续再根据统计需求对日志信息进行组合,生成日志数据写入日志文件。因此,在全局变量中不会保存重复的日志信息,即不会产生冗余数据,减少了全局变量的占用空间,降低了服务器的内存消耗。
另外,现有技术中生产者需要考虑如何生成日志数据,并将其写入日志文件中或者压入内存中。而在本实施例中,生产者无需关注如何生成日志数据,只需将日志信息按层级放入所述日志集合中即可,即提高了效率,也简化了生产者的逻辑。
保存模块602,用于在当前用户操作游戏过程中,向所述容器中实时保存日志信息。
玩家在玩游戏的过程中,每一次操作都可能产生一条或多条日志信息。针对当前玩家操作游戏过程中产生的每一条日志信息,均实时保存到所述容器(日志集合)中。其中,将该条日志信息作为一个日志组员,根据该条日志信息中的类型从所述日志集合中找到对应的日志成员,并根据该条日志信息中的物品为消耗或获得,将该条日志信息(该日志组员)写入所述日志成员的增区间或减区间。
例如,当在游戏过程中消耗物品A时,产生一条日志信息,将该条日志信息作为日志组员A保存至所述容器(日志集合)中。其中,由于所述物品A所属类型对应于日志成员B,且消耗属于减区间,则将日志组员A存放在日志成员B的减区间中。
值得注意的是,由于日志统计需求需要对日志成员或日志组员进行各种组合,所以要求数据结构设计尽可能的统一化,方便对数据进行提取。在本实施例中,对所保存的所有日志信息(日志组员/日志成员)采用统一的数据结构,即采用统一的关键字段记录所述日志信息,例如:编号(id)、类型(type)、数量(num)。所述关键字段可以称为索引,统一的索引能极大地提升数据的处理效率。
汇总模块604,用于按照不同的统计需求从所述容器中提取所述日志信息并进行组合,从而汇总为对应的日志数据。
由于所述日志集合中记录的只是每个日志组员对应的日志信息,并不是完整的日志数据,因此需要根据所述日志集合组合出完整的日志数据,用以满足查看和统计需求。在本实施例中,会按照不同的统计需求对所述日志集合进行拆解和组合,提取所述统计需求对应的一个或多个日志组员的日志信息,然后进行数据格式化(即将所提取的日志信息按照所述统计需求变为需要的日志数据),最后汇总生成完整的日志数据。
在本实施例中,所述统计需求可能包括计算消耗、计算获得、计算某一类型物品的变更等等。其中,当计算消耗时,需要将所述日志集合中所有日志成员的减区间中的日志组员对应的日志信息进行汇总;当计算获得时,需要将所述日志集合中所有日志成员的增区间中的日志组员对应的日志信息进行汇总;当计算某一类型物品的变更时,需要将所述日志集合中该类型物品对应的日志成员中的所有日志组员对应的日志信息进行汇总。
一般情况下,在完成当前操作后,进行一次汇总,生成所述日志数据。在其他实施例中,也可以设置为在其他时间节点汇总生成所述日志数据,在此不做限制。
记录模块606,用于将所述日志数据一次性写入日志文件中。
在本实施例中,当按照不同的统计需求生成所述日志数据后,一次性将所述日志数据批量写入日志文件中。在其他实施例中,也可以按需设置将所述日志数据批量写入日志文件中的时间节点。采用一次性将所述日志数据批量写入日志文件中的方式,可以减少服务器的I/O操作,降低服务器的性能损耗。
用户可以查看所述日志文件中的日志数据,或者可以根据实际情况,定时(例如按小时/天)对所述日志文件中的日志数据进行统计分析。
本实施例提出的游戏日志记录系统,可以在减少服务器的I/O操作的同时,降低服务器内存消耗,提升性能,并且方便程序人员的使用,极大的缩短游戏开发时间,节约成本。另外,按照所述日志集合的方式进行日志信息保存和汇总,还有利于便捷的处理分析内容。
实施例四
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有游戏日志记录程序,所述游戏日志记录程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的游戏日志记录方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请实施例的优选实施例,并非因此限制本申请实施例的专利范围,凡是利用本申请实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请实施例的专利保护范围内。

Claims (9)

1.一种游戏日志记录方法,其特征在于,所述方法包括:
按预设的多个层级创建容器,所述预设的多个层级包括日志集合、日志成员和日志组员,其中,用户操作游戏过程中产生的每一条日志信息为所述日志组员;同一类型的一个或多个所述日志组员组合为所述日志成员;所有所述日志成员组合为所述日志集合,一个所述日志集合对应一个所述容器;
在当前用户操作游戏过程中,按照所述层级向所述容器中实时保存所述用户操作产生的每一条日志信息;
按照不同的统计需求从所述容器中提取所述日志信息并进行组合,从而汇总为对应的日志数据;及
将所述日志数据一次性写入日志文件中。
2.根据权利要求1所述的游戏日志记录方法,其特征在于,在所述容器中,每个所述日志成员还包括增区间和减区间,所述增区间用于保存获得的物品对应的日志信息,所述减区间用于保存消耗的物品对应的日志信息。
3.根据权利要求2所述的游戏日志记录方法,其特征在于,所述在当前用户操作游戏过程中,按照所述层级向所述容器中实时保存所述用户操作产生的每一条日志信息包括:
将所述日志信息作为一个所述日志组员,根据所述日志信息中的类型从所述日志集合中找到对应的所述日志成员,并根据所述日志信息中的物品为消耗或获得,将所述日志组员写入所述日志成员的增区间或减区间。
4.根据权利要求2所述的游戏日志记录方法,其特征在于,所述按照不同的统计需求从所述容器中提取所述日志信息并进行组合,从而汇总为对应的日志数据包括:
按照不同的统计需求对所述日志集合进行拆解和组合,提取所述统计需求对应的一个或多个所述日志组员的所述日志信息,然后进行数据格式化,最后汇总生成所述日志数据。
5.根据权利要求2或4所述的游戏日志记录方法,其特征在于,所述统计需求包括计算消耗、计算获得、计算一种类型物品的变更,所述按照不同的统计需求从所述容器中对所述日志信息进行组合,从而汇总为对应的日志数据还包括:
当计算消耗时,将所述日志集合中所有所述日志成员的减区间中的所述日志组员对应的所述日志信息进行汇总;
当计算获得时,将所述日志集合中所有所述日志成员的增区间中的所述日志组员对应的所述日志信息进行汇总;
当计算一种类型物品的变更时,将所述日志集合中所述类型物品对应的所述日志成员中的所有所述日志组员对应的所述日志信息进行汇总。
6.根据权利要求1或2所述的游戏日志记录方法,其特征在于,所述容器采用全局变量实现,且保存的所有所述日志信息采用统一的数据结构。
7.一种游戏日志记录系统,其特征在于,所述系统包括:
创建模块,用于按预设的多个层级创建容器,所述预设的多个层级包括日志集合、日志成员和日志组员,其中,用户操作游戏过程中产生的每一条日志信息为所述日志组员;同一类型的一个或多个所述日志组员组合为所述日志成员;所有所述日志成员组合为所述日志集合,一个所述日志集合对应一个所述容器;
保存模块,用于在当前用户操作游戏过程中,按照所述层级向所述容器中实时保存所述用户操作产生的每一条日志信息;
汇总模块,用于按照不同的统计需求从所述容器中提取所述日志信息并进行组合,从而汇总为对应的日志数据;
记录模块,用于将所述日志数据一次性写入日志文件中。
8.一种电子装置,其特征在于,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的游戏日志记录程序,所述游戏日志记录程序被所述处理器执行时实现如权利要求1-6中任一项所述的游戏日志记录方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有游戏日志记录程序,所述游戏日志记录程序被处理器执行时实现如权利要求1-6中任一项所述的游戏日志记录方法。
CN202010374018.3A 2020-05-06 2020-05-06 游戏日志记录方法及系统 Active CN112402955B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010374018.3A CN112402955B (zh) 2020-05-06 2020-05-06 游戏日志记录方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010374018.3A CN112402955B (zh) 2020-05-06 2020-05-06 游戏日志记录方法及系统

Publications (2)

Publication Number Publication Date
CN112402955A CN112402955A (zh) 2021-02-26
CN112402955B true CN112402955B (zh) 2022-12-27

Family

ID=74844108

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010374018.3A Active CN112402955B (zh) 2020-05-06 2020-05-06 游戏日志记录方法及系统

Country Status (1)

Country Link
CN (1) CN112402955B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101222382A (zh) * 2008-01-25 2008-07-16 中兴通讯股份有限公司 状态监控方法和系统
CN106075903A (zh) * 2016-08-12 2016-11-09 刘永富 一种智能游戏互动系统
CN106354817A (zh) * 2016-08-30 2017-01-25 苏州蓝海彤翔系统科技有限公司 一种日志的处理方法及装置
CN106649744A (zh) * 2016-12-26 2017-05-10 金蝶软件(中国)有限公司 日志记录方法及装置
CN111104384A (zh) * 2019-12-23 2020-05-05 米哈游科技(上海)有限公司 数据预处理方法、装置、设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10025565B2 (en) * 2015-08-19 2018-07-17 Integrator Software Integrated software development environments, systems, methods, and memory models

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101222382A (zh) * 2008-01-25 2008-07-16 中兴通讯股份有限公司 状态监控方法和系统
CN106075903A (zh) * 2016-08-12 2016-11-09 刘永富 一种智能游戏互动系统
CN106354817A (zh) * 2016-08-30 2017-01-25 苏州蓝海彤翔系统科技有限公司 一种日志的处理方法及装置
CN106649744A (zh) * 2016-12-26 2017-05-10 金蝶软件(中国)有限公司 日志记录方法及装置
CN111104384A (zh) * 2019-12-23 2020-05-05 米哈游科技(上海)有限公司 数据预处理方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN112402955A (zh) 2021-02-26

Similar Documents

Publication Publication Date Title
CN107229619B (zh) 互联网业务链路调用情况的统计、展示方法及装置
US8370303B1 (en) Generating snapshots of data tables
CN109815228A (zh) 数据库表的创建方法、装置、计算机设备及可读存储介质
CN102129425A (zh) 数据仓库中大对象集合表的访问方法及装置
CN109918678B (zh) 一种字段含义识别方法和装置
CN112925792B (zh) 数据存储控制方法、装置、计算设备及介质
CN106570005A (zh) 清理数据库的方法和装置
CN112402955B (zh) 游戏日志记录方法及系统
CN106874327B (zh) 一种针对业务数据的计数方法及装置
CN111858590B (zh) 一种存储系统元数据组织方法、系统、终端及存储介质
CN113010542B (zh) 业务数据处理方法、装置、计算机设备及存储介质
CN112860412B (zh) 业务数据处理方法、装置、电子设备及存储介质
CN110362540B (zh) 一种数据存储、访客数获取方法及装置
CN116628042A (zh) 数据处理方法、装置、设备及介质
CN112036133A (zh) 一种文件保存方法、装置、电子设备及存储介质
CN112528189A (zh) 基于数据的组件封装方法、装置、计算机设备及存储介质
CN113297245A (zh) 获取执行信息的方法及装置
CN111008195A (zh) 一种数据库空闲空间管理方法、系统、终端及存储介质
CN113806372B (zh) 新数据信息构建方法、装置、计算机设备及存储介质
CN111131393B (zh) 用户活跃度数据统计方法、电子装置及存储介质
CN110909149B (zh) 数据过滤方法及装置
CN112988250B (zh) 多主板usb服务配置方法、系统、终端及存储介质
CN114328072A (zh) 一种曝光数据采集方法及装置
CN110069486B (zh) 一种存储自定义参数的方法及装置
CN116401323A (zh) 指标数据处理方法、装置及计算机设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant