CN115794186A - 游戏数据的热更新方法、装置、服务器及存储介质 - Google Patents
游戏数据的热更新方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN115794186A CN115794186A CN202211105063.4A CN202211105063A CN115794186A CN 115794186 A CN115794186 A CN 115794186A CN 202211105063 A CN202211105063 A CN 202211105063A CN 115794186 A CN115794186 A CN 115794186A
- Authority
- CN
- China
- Prior art keywords
- game data
- game
- data file
- updated
- sub
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种游戏数据的热更新方法、装置、服务器及存储介质,包括:监听游戏对应的待更新游戏数据文件;在至少一个游戏帧包含的子时间段内,对每个所述待更新游戏数据文件进行加载解析处理得到游戏数据解析结果;将所述游戏数据解析结果热更新至所述游戏内。本发明可以非阻塞的将游戏数据热更新至游戏内存中,有效改善因游戏数据热更新而导致的卡顿问题,从而显著提高了玩家的游戏体验。
Description
技术领域
本发明涉及游戏技术领域,尤其是涉及一种游戏数据的热更新方法、装置、服务器及存储介质。
背景技术
目前,现有游戏大多存在游戏数据热更新的需求,由游戏策划将游戏数据填写为表格,并以指定数据格式导出为文件进行存储,在游戏运行时将导出的文件加载到游戏内存中进行使用。但是将数据加载解析到内存中将耗费一定时间,而且极易阻塞游戏主循环,从而导致玩家在游戏过程中感受到明显的卡顿,影响玩家的游戏体验。
发明内容
有鉴于此,本发明的目的在于提供一种游戏数据的热更新方法、装置、服务器及存储介质,可以非阻塞的将游戏数据热更新至游戏内存中,有效改善因游戏数据热更新而导致的卡顿问题,从而显著提高了玩家的游戏体验。
第一方面,本发明实施例提供了一种游戏数据的热更新方法,包括:监听游戏对应的待更新游戏数据文件;在至少一个游戏帧包含的子时间段内,对每个所述待更新游戏数据文件进行加载解析处理得到游戏数据解析结果;将所述游戏数据解析结果热更新至所述游戏内。
在一种实施方式中,所述在至少一个游戏帧包含的子时间段内,对每个所述待更新游戏数据文件进行加载解析处理得到游戏数据解析结果的步骤,包括:基于所述待更新游戏数据文件生成第一加载解析任务;其中,所述第一加载解析任务携带有第一待加载解析列表,所述第一待加载解析列表包括每个所述待更新游戏数据文件的文件标识;运行所述第一加载解析任务,以基于所述第一待加载解析列表开启所述待更新游戏数据文件中的目标游戏数据文件;在至少一个游戏帧包含的子时间段内,对所述目标游戏数据文件进行加载解析处理,得到所述目标游戏数据文件对应的游戏数据解析结果;更新所述第一待加载解析列表,以基于更新后的第一待加载解析列表开启所述待更新游戏数据文件中的下一目标游戏数据文件,直至得到每个所述待更新游戏数据文件对应的游戏数据解析结果。
在一种实施方式中,所述游戏帧包括第一加载帧和第一解析帧;所述在至少一个游戏帧包含的子时间段内,对所述目标游戏数据文件进行加载解析处理,得到所述目标游戏数据文件对应的游戏数据解析结果的步骤,包括:在每个所述第一加载帧中分别确定第一加载子时间段,以及在每个所述第一解析帧中分别确定第一解析子时间段;在至少一个所述第一加载子时间段内,读取所述目标游戏数据文件包含的游戏数据,直至所述游戏数据读取完毕,将所述目标游戏数据文件的当前状态置为解析状态;如果所述目标游戏数据文件处于所述解析状态,在至少一个所述第一解析子时间段内,解析所述目标游戏数据文件包含的游戏数据,直至所述游戏数据解析完毕,得到所述目标游戏数据文件对应的游戏数据解析结果。
在一种实施方式中,所述在至少一个所述第一加载子时间段内,读取所述目标游戏数据文件包含的游戏数据的步骤,包括:根据所述第一加载子时间段配置的指定字节数;对于每个所述第一加载子时间段,在该第一加载子时间段内从所述目标游戏数据文件中读取所述指定字节数对应的游戏数据。
在一种实施方式中,所述目标游戏数据文件为json文件;所述在至少一个所述第一解析子时间段内,解析所述目标游戏数据文件包含的游戏数据的步骤,包括:创建所述json文件对应的解析器;对于每个所述第一解析子时间段,在该第一解析子时间段内通过所述解析器解析所述json文件包含的游戏数据。
在一种实施方式中,所述解析器包括数据存储结构和数据指针;所述在该第一解析子时间段内通过所述解析器解析所述json文件包含的游戏数据的步骤,包括:根据第一解析子时间段配置的指定推进次数;在该第一解析子时间段内,按照所述指定推进次数控制所述数据指针在所述json文件中推进,得到所述数据指针每次推进对应的对象;将所述对象及所述对象之间的映射关系确定为游戏数据解析结果,并将所述游戏数据解析结果保存至所述数据存储结构。
在一种实施方式中,所述将所述游戏数据解析结果热更新至所述游戏内的步骤,包括:利用所述数据存储结构中存储的游戏数据解析结果,替换所述待更新游戏数据文件对应的原始游戏数据文件。
在一种实施方式中,所述游戏帧包括第二加载帧和第二解析帧;所述在至少一个游戏帧包含的子时间段内,对每个所述待更新游戏数据文件进行加载解析处理得到游戏数据解析结果的步骤,还包括:基于所述待更新游戏数据文件生成第二加载解析任务;其中,所述第二加载解析任务携带有第二待加载解析列表,所述第二待加载解析列表包括每个所述待更新游戏数据文件的文件标识;运行所述第二加载解析任务,以在至少一个第二加载帧包含的第二加载子时间段内,基于所述第二待加载解析列表对每个所述待更新游戏数据文件进行加载处理,直至每个所述待更新游戏数据文件均处于解析状态;如果每个所述待更新游戏数据文件均处于解析状态,在至少一个所述第二解析帧包含的第二解析子时间段内,解析每个所述待更新数据文件的游戏数据,得到每个所述待更新数据文件对应的游戏数据解析结果。
第二方面,本发明实施例还提供一种游戏数据的热更新装置,包括:文件监听模块,用于监听游戏对应的待更新游戏数据文件;加载解析模块,用于在至少一个游戏帧包含的子时间段内,对每个所述待更新游戏数据文件进行加载解析处理得到游戏数据解析结果;热更新模块,用于将所述游戏数据解析结果热更新至所述游戏内。
第三方面,本发明实施例还提供一种服务器,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现第一方面提供的任一项所述的方法。
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现第一方面提供的任一项所述的方法。
本发明实施例提供的一种游戏数据的热更新方法、装置、服务器及存储介质,在监听到游戏对应的待更新游戏数据文件时,可以在至少一个游戏帧包含的子时间段内,对每个所述待更新游戏数据文件进行加载解析处理得到游戏数据解析结果,并将所述游戏数据解析结果热更新至所述游戏内。上述方法可以在每个游戏帧中抽取一部分的子时间段用于待更新游戏数据文件的加载解析处理,从而渐进式的解析加载每个待更新游戏数据文件,再对游戏数据解析结果进行热更新,本发明实施例可以非阻塞的将游戏数据热更新至游戏内存中,有效改善因游戏数据热更新而导致的卡顿问题,从而显著提高了玩家的游戏体验。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种游戏数据的热更新方法的流程示意图;
图2为本发明实施例提供的一种游戏数据的解析原理示意图;
图3为本发明实施例提供的另一种游戏数据的解析原理示意图;
图4为本发明实施例提供的另一种游戏数据的解析原理示意图;
图5为本发明实施例提供的另一种游戏数据的解析原理示意图;
图6为本发明实施例提供的另一种游戏数据的解析原理示意图;
图7为本发明实施例提供的另一种游戏数据的解析原理示意图;
图8为本发明实施例提供的另一种游戏数据的解析原理示意图;
图9为本发明实施例提供的另一种游戏数据的解析原理示意图;
图10为本发明实施例提供的另一种游戏数据的解析原理示意图;
图11为本发明实施例提供的另一种游戏数据的解析原理示意图;
图12为本发明实施例提供的另一种游戏数据的热更新方法的流程示意图;
图13为本发明实施例提供的一种游戏数据的热更新装置的结构示意图;
图14为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,游戏中存在大量元数据,元数据用于记录游戏中的基础信息,诸如道具类型、任务奖励、装备及装备可提升的攻击力等,随着游戏的外放,部分元数据可能需要被调整,诸如调整每天任务发放的钻石奖励,此时需要对调整后的元数据进行热更新。然而现有游戏在数据加载解析过程中极易阻塞游戏主循环,从而导致玩家在游戏过程中感受到明显的卡顿,影响玩家的游戏体验,比如游戏每帧100ms会处理玩家发送的请求,如果游戏数据比较大,加载耗时1000ms,此时玩家将会感受到明显的卡顿。
为改善上述问题,相关技术提出以下方案:(1)通过控制单个热更新文件的大小,诸如游戏中单个数据表尽量不要填写非常多,从而在热更新单个数据表时将不会消耗较多时长,但是在实际应用中,游戏数据表的大小不可控,部分游戏中涉及较多道具时必然导致数据表体量较大,导致该方案无法实施;(2)通过多线程加载解析方式,即游戏主循环线程正常运行,并通过专用线程进行游戏数据的加载解析,并在热更新结束后通知主循环线程执行主循环,该方案相对来说较为理想,但是对于特定语言(诸如python等)编写的游戏,例如利用python语言编写的游戏存在GIL(Global Interpreter Lock,全局解释锁),因此无法实现真正意义的多线程,当加载解析线程进行加载解析游戏数据时游戏主循环实际也是阻塞的;(3)通过增量的差异文件进行热更新,比如游戏数据表包含1000个道具,假设增加了一个新道具,此时游戏数据表将包含1001个道具,传统的热更新会将1001个道具的数据文件进行加载解析,该方案将只对新道具的数据文件进行加载解析,加载解析后与游戏内存中已有数据进行融合,该方案的缺点是热更新逻辑较为复杂,传统热更新方案只需将文件替换并触发重新加载即可,而该方案需要对版本间数据文件进行差异比较并生成差异部分,加载解析完成之后还需要进行游戏数据合并,较为复杂的热更新逻辑将极易导致热更新过程出现错误或异常。
基于此,本发明实施提供了一种游戏数据的热更新方法、装置、服务器及存储介质,可以非阻塞的将游戏数据热更新至游戏内存中,有效改善因游戏数据热更新而导致的卡顿问题,从而显著提高了玩家的游戏体验。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种游戏数据的热更新方法进行详细介绍,参见图1所示的一种游戏数据的热更新方法的流程示意图,该方法主要包括以下步骤S102至步骤S106:
步骤S102,监听游戏对应的待更新游戏数据文件。其中,待更新游戏数据文件可以为发生修改的游戏数据文件,游戏数据文件可以采用json格式存储,示例性的,待更新游戏数据文件包括道具数据表、任务奖励数据表、装备数据表等。
在一种实施方式中,可以通过游戏进程对游戏数据文件的修改时间进行监听,当监听到某游戏数据文件的修改时间发生变化时,即可将该游戏数据文件作为待更新游戏数据文件,例如,假设游戏包括游戏数据文件X、游戏数据文件Y和游戏数据文件Z,如果游戏数据文件Y的修改时间发生变化,则表明游戏数据文件Y发生更改,此时可以将游戏数据文件Y作为待更新游戏数据文件。
步骤S104,在至少一个游戏帧包含的子时间段内,对每个待更新游戏数据文件进行加载解析处理得到游戏数据解析结果。其中,游戏帧可以理解为游戏服务器调用对应函数的时间或周期,诸如,游戏帧设置为100ms,游戏服务器每100ms将调用一次推进动画状态切换的函数。子时间段也即游戏帧中用于加载解析处理的时间段,例如,子时间段为10ms,则每个游戏帧中将花费10ms用于对待更新游戏数据文件进行加载解析处理。加载解析处理包括加载处理和解析处理,加载处理用于读取待更新游戏数据文件中包含的游戏数据,解析处理用于解析游戏数据。游戏数据解析结果包括对象key及其映射关系。
在一种实施方式中,选择一个待更新游戏数据文件,可以先在至少一个子时间段内对该待更新游戏数据文件进行加载处理,再在至少一个子时间段内对加载处理得到游戏数据进行解析处理,得到该待更新游戏数据文件对应的游戏数据解析结果;选择下一个待更游戏数据文件,重复上述操作,直至得到每个待更新游戏数据文件对应的游戏数据解析结果。
在另一种实施方式中,选择一个待更新游戏数据文件,在至少一个子时间段内对该待更新游戏数据文件进行加载处理,当该待更新游戏数据文件加载完成后,选择下一个待更新游戏数据文件,重复上述操作,直至每个待更新游戏数据文件均加载完成;再在至少一个子时间段内该待更新游戏数据文件的游戏数据进行解析处理,当该待更新游戏数据文件的游戏数据解析完成后,选择下一个待更新游戏数据文件,重复上述操作,直至每个待更新游戏数据文件的游戏数据均解析完成,得到每个待更新游戏数据文件对应的游戏数据解析结果。
步骤S106,将游戏数据解析结果热更新至游戏内。在一种实施方式中,可以直接将游戏数据解析结果替换至游戏内存中,完成此次游戏热更新。
本发明实施例提供的游戏数据的热更新方法,可以在每个游戏帧中抽取一部分的子时间段用于待更新游戏数据文件的加载解析处理,从而渐进式的解析加载每个待更新游戏数据文件,再对游戏数据解析结果进行热更新,本发明实施例可以非阻塞的将游戏数据热更新至游戏内存中,有效改善因游戏数据热更新而导致的卡顿问题,从而显著提高了玩家的游戏体验。
为便于对前述加载解析处理进行理解,本发明实施例提供了一些在至少一个游戏帧包含的子时间段内,对每个待更新游戏数据文件进行加载解析处理得到游戏数据解析结果的实施方式,参见如下方式一至方式二:
方式一:考虑到加载完成的游戏数据将驻留在游戏内存中,在一定程度上增加了游戏内存的负担,因此可以优先针对一个待更新游戏数据文件执行加载处理和解析处理,当得到该待更新游戏数据文件对应的游戏数据解析结果之后,将该游戏数据解析结果热更新至游戏内存中,并删除游戏内存中暂存的游戏数据;在针对下一个待更新游戏数据文件重复上述操作,直至将每个待更新游戏数据文件热更新至游戏内存中,通过上述方法可以在一定程度上缓解游戏内存的负担。
在一种具体的实施方式中,可以参见如下步骤a1至步骤a4执行对每个待更新游戏数据文件进行加载解析处理得到游戏数据解析结果的步骤:
步骤a1,基于待更新游戏数据文件生成第一加载解析任务。其中,第一加载解析任务携带有第一待加载解析列表,第一待加载解析列表包括每个待更新游戏数据文件的文件标识。在一种实施方式中,当游戏进程监测到游戏数据文件发生变化时,将生成对应的第一加载解析任务。示例性的,比如游戏内存中游戏数据文件X、游戏数据文件Y和游戏数据文件Z的修改时间发生变化,则创建的第一待加载解析列表为[X,Y,Z]。
步骤a2,运行第一加载解析任务,以基于第一待加载解析列表开启待更新游戏数据文件中的目标游戏数据文件。在一种实施方式中,可以按照第一加载解析列表中文件标识的顺序,对每个待更新游戏数据文件逐个进行加载解析处理。示例性的,首先将第一待加载解析列表中的第一个游戏数据文件X作为目标游戏数据文件,并打开游戏数据文件X。
步骤a3,在至少一个游戏帧包含的子时间段内,对目标游戏数据文件进行加载解析处理,得到目标游戏数据文件对应的游戏数据解析结果。在一种实施方式中,可以将加载阶段的游戏帧称为第一加载帧,并将第一加载帧中用于加载处理的子时间段称为第一加载子时间段;以及将解析阶段的游戏帧称为第一解析帧,并将第一解析帧中用于解析处理的子时间段称为第一解析子时间段。在此基础上,可以在多个第一加载子时间段内对游戏数据文件X进行加载处理,在游戏数据文件X加载完成后,将游戏数据文件X的当前状态置为解析状态,可以继续在多个第一解析子时间段内对游戏数据进行解析得到相应的游戏数据解析结果。
步骤a4,更新第一待加载解析列表,以基于更新后的第一待加载解析列表开启待更新游戏数据文件中的下一目标游戏数据文件,直至得到每个待更新游戏数据文件对应的游戏数据解析结果。在一种实施方式中,当游戏数据文件X解析完成之后,可以更新第一待加载解析列表,更新后的第一待加载解析列表为[Y,Z],此时可以将游戏数据文件Y作为下一目标游戏数据文件,重复上述操作得到游戏数据文件Y对应的游戏数据解析结果;同理,在游戏数据文件Y解析完成之后,继续更新第一待加载解析列表,更新后的待加载解析列表为[Z],此时可以将游戏数据文件Z作为下一目标游戏数据文件,重复上述操作得到游戏数据文件Z对应的游戏数据解析结果。
为便于对前述步骤a3进行理解,本发明实施例还提供了一种在至少一个游戏帧包含的子时间段内,对目标游戏数据文件进行加载解析处理,得到目标游戏数据文件对应的游戏数据解析结果的实施方式,参见如下步骤a3.1至步骤a3.3:
步骤a3.1,在每个第一加载帧中分别确定第一加载子时间段,以及在每个第一解析帧中分别确定第一解析子时间段。在一种实施方式中,可以将加载阶段的游戏帧称为第一加载帧,并将第一加载帧中用于加载处理的子时间段称为第一加载子时间段,示例性的,每个第一加载帧(或游戏帧)均为100ms,且每个第一加载子时间段均为10ms;同理,可以将后续的解析阶段的游戏帧称为第一解析帧,并将第一解析帧中用于解析处理的子时间段称为第一解析子时间段,示例性的,每个第一解析真(或游戏帧)均为100ms,且每个第一解析子时间段为10ms。
步骤a3.2,在至少一个第一加载子时间段内,读取目标游戏数据文件包含的游戏数据,直至游戏数据读取完毕,将目标游戏数据文件的当前状态置为解析状态。在一种实施方式中,为了避免读入目标游戏数据文件时存在高耗时的问题,目标游戏数据文件打开后,将仅在每个游戏帧中第一加载子时间段内读取游戏数据,当经过一定帧数后目标游戏数据文件将被读取完成。
在一种具体的实施方式中,可以根据第一加载子时间段配置的指定字节数,对于每个第一加载子时间段,在该第一加载子时间段内从目标游戏数据文件中读取指定字节数对应的游戏数据。示例性的,假设每读入2MB将耗费10ms,此时可以设置指定字节数R为2MB,从而每个游戏帧中最多花费10ms用于读取目标游戏数据文件中R个字节的游戏数据,经过多个游戏帧,即可将目标游戏数据文件中包含的游戏数据读取完毕。应当注意的是,上述游戏帧、第一加载子时间段、指定字节数可基于实际情况进行设置,本发明实施例对此不进行限制。
步骤a3.3,如果目标游戏数据文件处于解析状态,在至少一个第一解析子时间段内,解析目标游戏数据文件包含的游戏数据,直至游戏数据解析完毕,得到目标游戏数据文件对应的游戏数据解析结果。在一种实施方式中,为了避免解析游戏数据时存在高耗时的问题,目标游戏数据文件的当前状态置为解析状态后,将仅在每个游戏帧中第一解析子时间段内解析游戏数据,当经过一定帧数后目标游戏数据文件的游戏数据将被解析完成。
可选的,上述目标游戏数据文件为json文件,在此基础上,可以创建json文件对应的解析器,对于每个第一解析子时间段,在该第一解析子时间段内通过解析器解析json文件包含的游戏数据。其中,解析器包括数据存储结构和数据指针,数据存储结构可以采用栈结构,数据指针也即游标,通过推进数据指针解析游戏数据对应的对象及对象之间的映射关系,并将对象和映射关系存储至栈结构中。
具体的,本发明实施例提供了一种在该第一解析子时间段内通过解析器解析json文件包含的游戏数据的实施方式,参见如下(1)至(3):
(1)根据第一解析子时间段配置的指定推进次数。示例性的,假设每推进1000次数据指针将耗费10ms,此时可以设置指定推进次数P为1000次,从而每个游戏帧中最多花费10ms用于解析目标游戏数据文件中的游戏数据,经过多个游戏帧,即可将目标游戏数据文件中包含的游戏数据解析完毕。应当注意的是,上述游戏帧、第一解析子时间段、指定推进次数可基于实际情况进行设置,本发明实施例对此不进行限制。
(2)在该第一解析子时间段内,按照指定推进次数控制数据指针在json文件中推进,得到数据指针每次推进对应的对象。本发明实施例的核心思路是对游戏数据采用json的格式进行存储,并通过一种增量解析方式将json数据渐进式的加载到游戏内存中。
考虑到现有json解析会直接将原始数据的字符串解析为游戏内存中的对象,诸如图2所示的一种游戏数据的解析原理示意图,当原始数据较大时会导致解析非常耗时,从而引起游戏主循环的阻塞。基于此,本发明实施例提供一种解析器,该解析器包括栈结构和游标,游标用于记录当前解析的字符串的具体位置,栈结构用于保存临时的数据结构。在实际应用中,可以通过游标的推移检索字符串的值,参见图3所示的另一种游戏数据的解析原理示意图,假设游戏数据为“{“x”:[1,2,3],“y”:{“a”:“xxx”,“b”:“yyy”}}”,当游标检索到“{”时,说明要解析的是一个对象,对象会有相应的key(键值),此时可以将该对象的key解析出来,栈结构中将存储为“result:{},key:“x””。
参见图4所示的另一种游戏数据的解析原理示意图,游标继续往后推进,扫描到“[”时,确定扫描的为一个数组[1,2,3],此时栈结构中继续存储“result:[]”。
参见图5所示的另一种游戏数据的解析原理示意图,游标继续往后推进,依次扫描到“1”、“2”、“3”,此时可直接在栈结构的最末尾的结果添加对应的值:“result:[1,2,3]”。
参见图6所示的另一种游戏数据的解析原理示意图,游标继续往后推进,当游标扫描到“]”表明数组已经到达尾声,所以临时的数组结果[1,2,3]被返回,接下来发现栈顶是一个对象,相应的key为x,那么就会将x->[1,2,3]的映射关系保存下来,并推进游标到下一个键值为y的key,此时栈结构中存储的临时数据结构为:“result:{“x”:[1,2,3]},key:“y””。
参见图7至图11所示的另一种游戏数据的解析原理示意图,游戏继续往后推进,随着栈结构上最后一个对象被弹出,游戏数据{"x":[1,2,3],"y":{"a":"xxx","b":"yyy"}}对应的游戏数据解析结果被返回。由前述实施例可知,上述示例用于描述的是整个解析json的方式,通过上述结构可以分布式的执行,临时的游戏数据解析结果保存在栈结构中,从而可以控制解析过程的步进。
(3)将对象及对象之间的映射关系确定为游戏数据解析结果,并将游戏数据解析结果保存至数据存储结构。示例性的,栈结构中将暂存游戏数据解析结果{"x":[1,2,3],"y":{"a":"xxx","b":"yyy"}}。
在实际应用中,通过每个游戏帧中花费10ms用于加载、解析目标游戏数据文件,在游戏里中分帧渐进式地对游戏数据进行加载解析,相较于现有技术直接对游戏数据进行解析而导致阻塞游戏主循环,本发明实施例可以实现游戏数据非阻塞的热更新,而在每个游戏帧中其余时间,可以执行游戏特定的业务逻辑,诸如将上一游戏帧中玩家所在战场的变化发送给玩家,或者在每个游戏帧中将玩家收到的消息发送给玩家,具体可基于实际需求进行设置,本发明实施例对此不进行限制。
方式二:可以依次加载每个待更新游戏数据文件,当所有待更新游戏数据文件均处于解析状态时,再依次解析每个待更新游戏数据文件中的游戏数据,当所有待更新游戏数据文件均被解析完毕之后,就可以触发游戏数据的替换,将原始游戏数据文件更新为游戏数据解析结果,最终完成游戏数据的热更新。
在一种具体的实施方式中,可以参见如下步骤b1至步骤b3执行对每个待更新游戏数据文件进行加载解析处理得到游戏数据解析结果的步骤:
步骤b1,基于待更新游戏数据文件生成第二加载解析任务。其中,第二加载解析任务携带有第二待加载解析列表,第二待加载解析列表包括每个待更新游戏数据文件的文件标识。在一种实施方式中,当游戏进程监测到游戏数据文件发生变化时,将生成对应的第二加载解析任务。示例性的,比如游戏内存中游戏数据文件X、游戏数据文件Y和游戏数据文件Z的修改时间发生变化,则创建的第二待加载解析列表为[X,Y,Z]。
步骤b2,运行第二加载解析任务,以在至少一个第二加载帧包含的第二加载子时间段内,基于第二待加载解析列表对每个待更新游戏数据文件进行加载处理,直至每个待更新游戏数据文件均处于解析状态。在一种实施方式中,可以将加载阶段的游戏帧称为第二加载帧,并将第二加载帧中用于加载处理的子时间段称为第二加载子时间段;以及将解析阶段的游戏帧称为第二解析帧,并将第二解析帧中用于解析处理的子时间段称为第二解析子时间段,具体可参见前述实施例,本发明实施例对此不在进行赘述。
示例性的,可以在每个游戏帧中花费10ms对游戏数据文件X进行加载处理,当经过一定帧数后游戏数据文件X即可加载完成,将游戏数据文件X的当前状态置为解析状态,继续在每个游戏帧中花费10ms对游戏数据文件Y进行加载处理,直至游戏数据文件X、游戏数据文件Y、游戏数据文件Z的当前状态均为解析状态。
步骤b3,如果每个待更新游戏数据文件均处于解析状态,在至少一个第二解析帧包含的第二解析子时间段内,解析每个待更新数据文件的游戏数据,得到每个待更新数据文件对应的游戏数据解析结果。示例性的,可以在每个游戏帧中花费10ms对游戏数据文件X的游戏数据进行解析,当经过一定帧数后游戏数据文件X的游戏数据解析完成,继续在后续每个游戏帧花费10ms对游戏数据文件Y的游戏数据进行解析,直至得到游戏数据文件X、游戏数据文件Y、游戏数据文件Z各自对应的游戏数据解析结果。
在前述实施例的基础上,本发明实施例还提供了一种将游戏数据解析结果热更新至游戏内的实施方式,可以利用数据存储结构中存储的游戏数据解析结果,替换待更新游戏数据文件对应的原始游戏数据文件。例如,利用游戏数据文件X替换游戏内存中原始游戏数据文本X’,以及利用游戏数据文件Y替换游戏内存中原始游戏数据文本Y’,以及利用游戏数据文件Z替换游戏内存中原始游戏数据文本Z’。
为便于对前述实施例进行理解,本发明实施例还示例性提供了一种游戏数据的热更新方法的应用示例,参见图12所示的另一种游戏数据的热更新方法的流程示意图,该方法主要包括以下步骤S1202至步骤S1222:
步骤S1202,触发热更新。
步骤S1204,获取第一待加载解析列表。
步骤S1206,判断第一待加载解析列表是否为空。如果是,执行步骤S1220;如果否,执行步骤S1208。
步骤S1208,基于第一待加载解析列表取出目标游戏数据文本。
步骤S1210,判断目标游戏数据文本是否加载完毕。如果是,执行步骤S1214;如果否,执行步骤S1212。
步骤S1212,每个游戏帧从目标游戏数据文本中循环读取R个字节的游戏数据。
步骤S1214,判断目标游戏数据文本的游戏数据是否解析完毕。如果是,执行步骤S1218;如果否,执行步骤S1216。
步骤S1216,每个游戏帧推进P次游标。
步骤S1218,更新第一待加载解析列表,并执行步骤S1206。
步骤S1220,利用游戏数据解析结果替换游戏内存中的原始游戏数据文本。
步骤S1222,热更新结束。
综上所述,本发明实施例提供的游戏数据的热更新方法,核心思路在于通过对原有json解析的采用增量化的处理,使得游戏可以在每帧中抽出一小部分的时间进行数据加载解析,直到在后台渐进式的处理完整个游戏数据的加载和解析后,再对游戏数据内容进行热更新替换,本发明实施例适用于python等无法使用多线程进程热更新数据加载的语言,也保留了热更新中简单的文件替换,相较于现有技术中需要额外生成差异文件,本发明实施例提供的游戏数据的热更新方法可以简单地实现游戏热更新。
对于前述实施例提供的游戏数据的热更新方法,本发明实施例提供了一种游戏数据的热更新装置,参见图13所示的一种游戏数据的热更新装置的结构示意图,该装置主要包括以下部分:
文件监听模块1302,用于监听游戏对应的待更新游戏数据文件;
加载解析模块1304,用于在至少一个游戏帧包含的子时间段内,对每个待更新游戏数据文件进行加载解析处理得到游戏数据解析结果;
热更新模块1306,用于将游戏数据解析结果热更新至游戏内。
本发明实施例提供的游戏数据的热更新装置,可以在每个游戏帧中抽取一部分的子时间段用于待更新游戏数据文件的加载解析处理,从而渐进式的解析加载每个待更新游戏数据文件,再对游戏数据解析结果进行热更新,本发明实施例可以非阻塞的将游戏数据热更新至游戏内存中,有效改善因游戏数据热更新而导致的卡顿问题,从而显著提高了玩家的游戏体验。
在一种实施方式中,加载解析模块1304还用于:基于待更新游戏数据文件生成第一加载解析任务;其中,第一加载解析任务携带有第一待加载解析列表,第一待加载解析列表包括每个待更新游戏数据文件的文件标识;运行第一加载解析任务,以基于第一待加载解析列表开启待更新游戏数据文件中的目标游戏数据文件;在至少一个游戏帧包含的子时间段内,对目标游戏数据文件进行加载解析处理,得到目标游戏数据文件对应的游戏数据解析结果;更新第一待加载解析列表,以基于更新后的第一待加载解析列表开启待更新游戏数据文件中的下一目标游戏数据文件,直至得到每个待更新游戏数据文件对应的游戏数据解析结果。
在一种实施方式中,游戏帧包括第一加载帧和第一解析帧;加载解析模块1304还用于:在每个第一加载帧中分别确定第一加载子时间段,以及在每个第一解析帧中分别确定第一解析子时间段;在至少一个第一加载子时间段内,读取目标游戏数据文件包含的游戏数据,直至游戏数据读取完毕,将目标游戏数据文件的当前状态置为解析状态;如果目标游戏数据文件处于解析状态,在至少一个第一解析子时间段内,解析目标游戏数据文件包含的游戏数据,直至游戏数据解析完毕,得到目标游戏数据文件对应的游戏数据解析结果。
在一种实施方式中,加载解析模块1304还用于:根据第一加载子时间段配置的指定字节数;对于每个第一加载子时间段,在该第一加载子时间段内从目标游戏数据文件中读取指定字节数对应的游戏数据。
在一种实施方式中,目标游戏数据文件为json文件;加载解析模块1304还用于:创建json文件对应的解析器;对于每个第一解析子时间段,在该第一解析子时间段内通过解析器解析json文件包含的游戏数据。
在一种实施方式中,解析器包括数据存储结构和数据指针;加载解析模块1304还用于:根据第一解析子时间段配置的指定推进次数;在该第一解析子时间段内,按照指定推进次数控制数据指针在json文件中推进,得到数据指针每次推进对应的对象;将对象及对象之间的映射关系确定为游戏数据解析结果,并将游戏数据解析结果保存至数据存储结构。
在一种实施方式中,热更新模块1306还用于:利用数据存储结构中存储的游戏数据解析结果,替换待更新游戏数据文件对应的原始游戏数据文件。
在一种实施方式中,游戏帧包括第二加载帧和第二解析帧;加载解析模块1304还用于:基于待更新游戏数据文件生成第二加载解析任务;其中,第二加载解析任务携带有第二待加载解析列表,第二待加载解析列表包括每个待更新游戏数据文件的文件标识;运行第二加载解析任务,以在至少一个第二加载帧包含的第二加载子时间段内,基于第二待加载解析列表对每个待更新游戏数据文件进行加载处理,直至每个待更新游戏数据文件均处于解析状态;如果每个待更新游戏数据文件均处于解析状态,在至少一个第二解析帧包含的第二解析子时间段内,解析每个待更新数据文件的游戏数据,得到每个待更新数据文件对应的游戏数据解析结果。
本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
本发明实施例提供了一种服务器,具体的,该服务器包括处理器和存储装置;存储装置上存储有计算机程序,计算机程序在被处理器运行时执行:
一种游戏数据的热更新方法,包括:监听游戏对应的待更新游戏数据文件;在至少一个游戏帧包含的子时间段内,对每个待更新游戏数据文件进行加载解析处理得到游戏数据解析结果;将游戏数据解析结果热更新至游戏内。
在一种实施方式中,在至少一个游戏帧包含的子时间段内,对每个待更新游戏数据文件进行加载解析处理得到游戏数据解析结果的步骤,包括:基于待更新游戏数据文件生成第一加载解析任务;其中,第一加载解析任务携带有第一待加载解析列表,第一待加载解析列表包括每个待更新游戏数据文件的文件标识;运行第一加载解析任务,以基于第一待加载解析列表开启待更新游戏数据文件中的目标游戏数据文件;在至少一个游戏帧包含的子时间段内,对目标游戏数据文件进行加载解析处理,得到目标游戏数据文件对应的游戏数据解析结果;更新第一待加载解析列表,以基于更新后的第一待加载解析列表开启待更新游戏数据文件中的下一目标游戏数据文件,直至得到每个待更新游戏数据文件对应的游戏数据解析结果。
在一种实施方式中,游戏帧包括第一加载帧和第一解析帧;在至少一个游戏帧包含的子时间段内,对目标游戏数据文件进行加载解析处理,得到目标游戏数据文件对应的游戏数据解析结果的步骤,包括:在每个第一加载帧中分别确定第一加载子时间段,以及在每个第一解析帧中分别确定第一解析子时间段;在至少一个第一加载子时间段内,读取目标游戏数据文件包含的游戏数据,直至游戏数据读取完毕,将目标游戏数据文件的当前状态置为解析状态;如果目标游戏数据文件处于解析状态,在至少一个第一解析子时间段内,解析目标游戏数据文件包含的游戏数据,直至游戏数据解析完毕,得到目标游戏数据文件对应的游戏数据解析结果。
在一种实施方式中,在至少一个第一加载子时间段内,读取目标游戏数据文件包含的游戏数据的步骤,包括:根据第一加载子时间段配置的指定字节数;对于每个第一加载子时间段,在该第一加载子时间段内从目标游戏数据文件中读取指定字节数对应的游戏数据。
在一种实施方式中,目标游戏数据文件为json文件;在至少一个第一解析子时间段内,解析目标游戏数据文件包含的游戏数据的步骤,包括:创建json文件对应的解析器;对于每个第一解析子时间段,在该第一解析子时间段内通过解析器解析json文件包含的游戏数据。
在一种实施方式中,解析器包括数据存储结构和数据指针;在该第一解析子时间段内通过解析器解析json文件包含的游戏数据的步骤,包括:根据第一解析子时间段配置的指定推进次数;在该第一解析子时间段内,按照指定推进次数控制数据指针在json文件中推进,得到数据指针每次推进对应的对象;将对象及对象之间的映射关系确定为游戏数据解析结果,并将游戏数据解析结果保存至数据存储结构。
在一种实施方式中,将游戏数据解析结果热更新至游戏内的步骤,包括:利用数据存储结构中存储的游戏数据解析结果,替换待更新游戏数据文件对应的原始游戏数据文件。
在一种实施方式中,游戏帧包括第二加载帧和第二解析帧;在至少一个游戏帧包含的子时间段内,对每个待更新游戏数据文件进行加载解析处理得到游戏数据解析结果的步骤,还包括:基于待更新游戏数据文件生成第二加载解析任务;其中,第二加载解析任务携带有第二待加载解析列表,第二待加载解析列表包括每个待更新游戏数据文件的文件标识;运行第二加载解析任务,以在至少一个第二加载帧包含的第二加载子时间段内,基于第二待加载解析列表对每个待更新游戏数据文件进行加载处理,直至每个待更新游戏数据文件均处于解析状态;如果每个待更新游戏数据文件均处于解析状态,在至少一个第二解析帧包含的第二解析子时间段内,解析每个待更新数据文件的游戏数据,得到每个待更新数据文件对应的游戏数据解析结果。
本发明实施例提供的服务器,可以在每个游戏帧中抽取一部分的子时间段用于待更新游戏数据文件的加载解析处理,从而渐进式的解析加载每个待更新游戏数据文件,再对游戏数据解析结果进行热更新,本发明实施例可以非阻塞的将游戏数据热更新至游戏内存中,有效改善因游戏数据热更新而导致的卡顿问题,从而显著提高了玩家的游戏体验。
图14为本发明实施例提供的一种服务器的结构示意图,该服务器100包括:处理器140,存储器141,总线142和通信接口143,处理器140、通信接口143和存储器141通过总线142连接;处理器140用于执行存储器141中存储的可执行模块,例如计算机程序。
其中,存储器141可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口143(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线142可以是ISA总线、PCI总线或EISA总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器141用于存储程序,处理器140在接收到执行指令后,执行程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器140中,或者由处理器140实现。
处理器140可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器140中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器140可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processing,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器141,处理器140读取存储器141中的信息,结合其硬件完成上述方法的步骤。
本发明实施例所提供的可读存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行:
一种游戏数据的热更新方法,包括:监听游戏对应的待更新游戏数据文件;在至少一个游戏帧包含的子时间段内,对每个待更新游戏数据文件进行加载解析处理得到游戏数据解析结果;将游戏数据解析结果热更新至游戏内。
在一种实施方式中,在至少一个游戏帧包含的子时间段内,对每个待更新游戏数据文件进行加载解析处理得到游戏数据解析结果的步骤,包括:基于待更新游戏数据文件生成第一加载解析任务;其中,第一加载解析任务携带有第一待加载解析列表,第一待加载解析列表包括每个待更新游戏数据文件的文件标识;运行第一加载解析任务,以基于第一待加载解析列表开启待更新游戏数据文件中的目标游戏数据文件;在至少一个游戏帧包含的子时间段内,对目标游戏数据文件进行加载解析处理,得到目标游戏数据文件对应的游戏数据解析结果;更新第一待加载解析列表,以基于更新后的第一待加载解析列表开启待更新游戏数据文件中的下一目标游戏数据文件,直至得到每个待更新游戏数据文件对应的游戏数据解析结果。
在一种实施方式中,游戏帧包括第一加载帧和第一解析帧;在至少一个游戏帧包含的子时间段内,对目标游戏数据文件进行加载解析处理,得到目标游戏数据文件对应的游戏数据解析结果的步骤,包括:在每个第一加载帧中分别确定第一加载子时间段,以及在每个第一解析帧中分别确定第一解析子时间段;在至少一个第一加载子时间段内,读取目标游戏数据文件包含的游戏数据,直至游戏数据读取完毕,将目标游戏数据文件的当前状态置为解析状态;如果目标游戏数据文件处于解析状态,在至少一个第一解析子时间段内,解析目标游戏数据文件包含的游戏数据,直至游戏数据解析完毕,得到目标游戏数据文件对应的游戏数据解析结果。
在一种实施方式中,在至少一个第一加载子时间段内,读取目标游戏数据文件包含的游戏数据的步骤,包括:根据第一加载子时间段配置的指定字节数;对于每个第一加载子时间段,在该第一加载子时间段内从目标游戏数据文件中读取指定字节数对应的游戏数据。
在一种实施方式中,目标游戏数据文件为json文件;在至少一个第一解析子时间段内,解析目标游戏数据文件包含的游戏数据的步骤,包括:创建json文件对应的解析器;对于每个第一解析子时间段,在该第一解析子时间段内通过解析器解析json文件包含的游戏数据。
在一种实施方式中,解析器包括数据存储结构和数据指针;在该第一解析子时间段内通过解析器解析json文件包含的游戏数据的步骤,包括:根据第一解析子时间段配置的指定推进次数;在该第一解析子时间段内,按照指定推进次数控制数据指针在json文件中推进,得到数据指针每次推进对应的对象;将对象及对象之间的映射关系确定为游戏数据解析结果,并将游戏数据解析结果保存至数据存储结构。
在一种实施方式中,将游戏数据解析结果热更新至游戏内的步骤,包括:利用数据存储结构中存储的游戏数据解析结果,替换待更新游戏数据文件对应的原始游戏数据文件。
在一种实施方式中,游戏帧包括第二加载帧和第二解析帧;在至少一个游戏帧包含的子时间段内,对每个待更新游戏数据文件进行加载解析处理得到游戏数据解析结果的步骤,还包括:基于待更新游戏数据文件生成第二加载解析任务;其中,第二加载解析任务携带有第二待加载解析列表,第二待加载解析列表包括每个待更新游戏数据文件的文件标识;运行第二加载解析任务,以在至少一个第二加载帧包含的第二加载子时间段内,基于第二待加载解析列表对每个待更新游戏数据文件进行加载处理,直至每个待更新游戏数据文件均处于解析状态;如果每个待更新游戏数据文件均处于解析状态,在至少一个第二解析帧包含的第二解析子时间段内,解析每个待更新数据文件的游戏数据,得到每个待更新数据文件对应的游戏数据解析结果。
本发明实施例提供的可读存储介质,可以在每个游戏帧中抽取一部分的子时间段用于待更新游戏数据文件的加载解析处理,从而渐进式的解析加载每个待更新游戏数据文件,再对游戏数据解析结果进行热更新,本发明实施例可以非阻塞的将游戏数据热更新至游戏内存中,有效改善因游戏数据热更新而导致的卡顿问题,从而显著提高了玩家的游戏体验。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (11)
1.一种游戏数据的热更新方法,其特征在于,包括:
监听游戏对应的待更新游戏数据文件;
在至少一个游戏帧包含的子时间段内,对每个所述待更新游戏数据文件进行加载解析处理得到游戏数据解析结果;
将所述游戏数据解析结果热更新至所述游戏内。
2.根据权利要求1所述的方法,其特征在于,所述在至少一个游戏帧包含的子时间段内,对每个所述待更新游戏数据文件进行加载解析处理得到游戏数据解析结果的步骤,包括:
基于所述待更新游戏数据文件生成第一加载解析任务;其中,所述第一加载解析任务携带有第一待加载解析列表,所述第一待加载解析列表包括每个所述待更新游戏数据文件的文件标识;
运行所述第一加载解析任务,以基于所述第一待加载解析列表开启所述待更新游戏数据文件中的目标游戏数据文件;
在至少一个游戏帧包含的子时间段内,对所述目标游戏数据文件进行加载解析处理,得到所述目标游戏数据文件对应的游戏数据解析结果;
更新所述第一待加载解析列表,以基于更新后的第一待加载解析列表开启所述待更新游戏数据文件中的下一目标游戏数据文件,直至得到每个所述待更新游戏数据文件对应的游戏数据解析结果。
3.根据权利要求2所述的方法,其特征在于,所述游戏帧包括第一加载帧和第一解析帧;所述在至少一个游戏帧包含的子时间段内,对所述目标游戏数据文件进行加载解析处理,得到所述目标游戏数据文件对应的游戏数据解析结果的步骤,包括:
在每个所述第一加载帧中分别确定第一加载子时间段,以及在每个所述第一解析帧中分别确定第一解析子时间段;
在至少一个所述第一加载子时间段内,读取所述目标游戏数据文件包含的游戏数据,直至所述游戏数据读取完毕,将所述目标游戏数据文件的当前状态置为解析状态;
如果所述目标游戏数据文件处于所述解析状态,在至少一个所述第一解析子时间段内,解析所述目标游戏数据文件包含的游戏数据,直至所述游戏数据解析完毕,得到所述目标游戏数据文件对应的游戏数据解析结果。
4.根据权利要求3所述的方法,其特征在于,所述在至少一个所述第一加载子时间段内,读取所述目标游戏数据文件包含的游戏数据的步骤,包括:
根据所述第一加载子时间段配置的指定字节数;
对于每个所述第一加载子时间段,在该第一加载子时间段内从所述目标游戏数据文件中读取所述指定字节数对应的游戏数据。
5.根据权利要求3所述的方法,其特征在于,所述目标游戏数据文件为json文件;所述在至少一个所述第一解析子时间段内,解析所述目标游戏数据文件包含的游戏数据的步骤,包括:
创建所述json文件对应的解析器;
对于每个所述第一解析子时间段,在该第一解析子时间段内通过所述解析器解析所述json文件包含的游戏数据。
6.根据权利要求5所述的方法,其特征在于,所述解析器包括数据存储结构和数据指针;所述在该第一解析子时间段内通过所述解析器解析所述json文件包含的游戏数据的步骤,包括:
根据第一解析子时间段配置的指定推进次数;
在该第一解析子时间段内,按照所述指定推进次数控制所述数据指针在所述json文件中推进,得到所述数据指针每次推进对应的对象;
将所述对象及所述对象之间的映射关系确定为游戏数据解析结果,并将所述游戏数据解析结果保存至所述数据存储结构。
7.根据权利要求6所述的方法,其特征在于,所述将所述游戏数据解析结果热更新至所述游戏内的步骤,包括:
利用所述数据存储结构中存储的游戏数据解析结果,替换所述待更新游戏数据文件对应的原始游戏数据文件。
8.根据权利要求1所述的方法,其特征在于,所述游戏帧包括第二加载帧和第二解析帧;所述在至少一个游戏帧包含的子时间段内,对每个所述待更新游戏数据文件进行加载解析处理得到游戏数据解析结果的步骤,还包括:
基于所述待更新游戏数据文件生成第二加载解析任务;其中,所述第二加载解析任务携带有第二待加载解析列表,所述第二待加载解析列表包括每个所述待更新游戏数据文件的文件标识;
运行所述第二加载解析任务,以在至少一个第二加载帧包含的第二加载子时间段内,基于所述第二待加载解析列表对每个所述待更新游戏数据文件进行加载处理,直至每个所述待更新游戏数据文件均处于解析状态;
如果每个所述待更新游戏数据文件均处于解析状态,在至少一个所述第二解析帧包含的第二解析子时间段内,解析每个所述待更新数据文件的游戏数据,得到每个所述待更新数据文件对应的游戏数据解析结果。
9.一种游戏数据的热更新装置,其特征在于,包括:
文件监听模块,用于监听游戏对应的待更新游戏数据文件;
加载解析模块,用于在至少一个游戏帧包含的子时间段内,对每个所述待更新游戏数据文件进行加载解析处理得到游戏数据解析结果;
热更新模块,用于将所述游戏数据解析结果热更新至所述游戏内。
10.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1至8任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211105063.4A CN115794186A (zh) | 2022-09-09 | 2022-09-09 | 游戏数据的热更新方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211105063.4A CN115794186A (zh) | 2022-09-09 | 2022-09-09 | 游戏数据的热更新方法、装置、服务器及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794186A true CN115794186A (zh) | 2023-03-14 |
Family
ID=85431885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211105063.4A Pending CN115794186A (zh) | 2022-09-09 | 2022-09-09 | 游戏数据的热更新方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794186A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117632198A (zh) * | 2024-01-26 | 2024-03-01 | 深圳乐木骆科技有限公司 | 固件升级方法、设备、存储介质及装置 |
-
2022
- 2022-09-09 CN CN202211105063.4A patent/CN115794186A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117632198A (zh) * | 2024-01-26 | 2024-03-01 | 深圳乐木骆科技有限公司 | 固件升级方法、设备、存储介质及装置 |
CN117632198B (zh) * | 2024-01-26 | 2024-05-07 | 深圳乐木骆科技有限公司 | 固件升级方法、设备、存储介质及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6148437A (en) | System and method for jump-evaluated trace designation | |
US7508985B2 (en) | Pattern-matching system | |
US20030014443A1 (en) | Dynamic web page generation | |
US20130159839A1 (en) | Semantic compression of cascading style sheets | |
CN109388403B (zh) | 依赖注入方法、装置、设备和存储介质 | |
US20040054991A1 (en) | Debugging tool and method for tracking code execution paths | |
CN105095367B (zh) | 一种客户端数据的采集方法和装置 | |
CN109561117A (zh) | 数据采集方法及装置 | |
CN115794186A (zh) | 游戏数据的热更新方法、装置、服务器及存储介质 | |
CN112181477A (zh) | 复杂事件处理方法、装置及终端设备 | |
US7958083B2 (en) | Interacting methods of data summarization | |
CN104978325B (zh) | 一种网页处理方法、装置及用户终端 | |
CN117289929B (zh) | 一种插件框架、插件及数据处理方法、装置及电子设备 | |
CN112860264A (zh) | 一种抽象语法树重构方法及装置 | |
CN112632425A (zh) | 一种离线资源文件的生成方法、装置、设备及存储介质 | |
CN107612919B (zh) | 协议配置方法及装置 | |
US20020104078A1 (en) | Forming an executable program | |
CN113721928A (zh) | 一种基于二进制分析的动态库裁剪方法 | |
EP0638862B1 (en) | Method and system for processing language | |
CN113282328A (zh) | 应用程序更新方法、计算机设备及计算机存储介质 | |
CN113419957A (zh) | 基于规则的大数据离线批处理性能容量扫描方法及装置 | |
JPWO2005101210A1 (ja) | データ解析装置およびデータ解析プログラム | |
CN110780983A (zh) | 任务异常处理方法、装置、计算机设备以及存储介质 | |
CN111126003A (zh) | 话单数据处理方法及装置 | |
CN112069775B (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 |