CN109646949B - 对象处理方法、装置、存储介质和电子装置 - Google Patents

对象处理方法、装置、存储介质和电子装置 Download PDF

Info

Publication number
CN109646949B
CN109646949B CN201710942253.4A CN201710942253A CN109646949B CN 109646949 B CN109646949 B CN 109646949B CN 201710942253 A CN201710942253 A CN 201710942253A CN 109646949 B CN109646949 B CN 109646949B
Authority
CN
China
Prior art keywords
creating
instructions
creation
instruction
time
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
CN201710942253.4A
Other languages
English (en)
Other versions
CN109646949A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710942253.4A priority Critical patent/CN109646949B/zh
Publication of CN109646949A publication Critical patent/CN109646949A/zh
Application granted granted Critical
Publication of CN109646949B publication Critical patent/CN109646949B/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/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种对象处理方法、装置、存储介质和电子装置。其中,该方法包括:获取目标应用的多条创建指令,其中,创建指令用于指示创建目标应用的目标对象;按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,其中,耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间;对排序处理后的多条创建指令进行分组处理,得到多组创建指令,分别与每组创建指令包括的至少一条创建指令对应的耗时数据之和不超过预设阈值;在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。本发明解决了相关技术中对象创建的流畅度低的技术问题。

Description

对象处理方法、装置、存储介质和电子装置
技术领域
本发明涉及计算机领域,具体而言,涉及一种对象处理方法、装置、存储介质和电子装置。
背景技术
目前,在应用中,可以针对一定的场景创建对象。比如,球球大作战游戏,可以在游戏场景中创建球体对象。球球大作战是一款实时对战的休闲游戏,其主游戏场景是一张大地图,每个游戏玩家对应的球在地图上移动,通过吃食物或者吃掉其它比自己小的球使自身边大,其中,体形越大,视野越大。由于游戏玩家可以在中途加入游戏,所以在视野变大或者刚进入游戏时,就需要创建大量球体,并将创建的大量球体添加到场景中进行渲染。
针对上述问题,现有技术使用了分帧处理技术,利用一帧创建一个球体,将大量的对象创建逻辑分散到各个游戏帧中去处理。图1是根据相关技术中的一种对象创建方法的流程图。如图1所示,该方法包括以下步骤:S101′,视野变大或者刚进入游戏,需要创建大量球体;步骤S102′,接收到服务器发送的数据;步骤S103′,处理接收到的数据;步骤S104′,启动分帧处理逻辑;步骤S105′,第1帧创建第1个球;S106′,第2帧创建第2个球;S107′,第n帧创建第n个球,n为大于等于3的自然数。
上述方法通过使用一帧创建一个球,实现了对象的创建,但是在创建时间上没有达到最优。假设在游戏场景中需要创建180个球体,如果游戏帧率为60帧每秒,则创建完180个球体需要3秒钟。如果游戏帧率为30帧每秒,则创建完180个球体共需6秒钟。当需要创建的球体的个数的总数越大时,创建时间也长,就会出现球体陆陆续续地出现,在播放大量特效时,引起的发热较快等问题,导致对象创建的流畅度低的问题,从而为用户理解带来困扰,降低了用户体验。
另外,在创建对象时,会出现相邻几个帧创建对象的耗时,有的很高,有的很低,导致中央处理器(Central Processing Unit,简称为CPU)对应的曲线上有较明显的波峰,从而导致对象创建的流畅度低的问题。
针对上述相关技术中对象创建的流畅度低的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种对象处理方法、装置、存储介质和电子装置,以至少解决相关技术中对象创建的流畅度低的技术问题。
根据本发明实施例的一个方面,提供了一种对象处理方法。该对象创建方法包括:获取目标应用的多条创建指令,其中,创建指令用于指示创建目标应用的目标对象;按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,其中,耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间;对排序处理后的多条创建指令进行分组处理,得到多组创建指令,其中,每组创建指令包括多条创建指令中的至少一条创建指令,分别与每组创建指令包括的至少一条创建指令对应的耗时数据之和不超过预设阈值;在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
根据本发明实施例的另一方面,还提供了一种对象处理装置。该对象创建装置包括:获取单元,用于获取目标应用的多条创建指令,其中,创建指令用于指示创建目标应用的目标对象;排序单元,用于按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,其中,耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间;分组单元,用于对排序处理后的多条创建指令进行分组处理,得到多组创建指令,其中,每组创建指令包括多条创建指令中的至少一条创建指令,分别与每组创建指令包括的至少一条创建指令对应的耗时数据之和不超过预设阈值;执行单元,用于在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
根据本发明实施例的另一方面,还提供了一种存储介质。存储介质包括存储的程序,其中,程序运行时执行本发明实施例的对象处理方法。
根据本发明实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序。该处理器通过计算机程序执行本发明实施例的对象处理方法。
在本发明实施例中,通过获取目标应用的多条创建指令,创建指令用于指示创建目标应用的目标对象;按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间;对排序处理后的多条创建指令进行分组处理,得到多组创建指令,每组创建指令包括多条创建指令中的至少一条创建指令,分别与每组创建指令包括的至少一条创建指令对应的耗时数据之和不超过预设阈值;在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。由于对创建指令进行排序打包,使得在一定时间内能够创建更多的对象,且在一定程度上能够使CPU曲线更平滑,提升了对象创建的流畅度,进而解决了相关技术中对象创建的流畅度低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据相关技术中的一种对象创建方法的流程图;
图2是根据本发明实施例的一种对象处理方法的硬件环境的示意图;
图3是根据本发明实施例的一种对象处理方法的流程图;
图4是根据本发明实施例的一种按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理的方法的流程图;
图5是根据本发明实施例的一种对排序处理后的多条创建指令进行分组处理的方法的流程图;
图6是根据本发明实施例的另一种对象处理方法的流程图;
图7是根据本发明实施例的一种获取由每条创建指令对应的耗时数据生成的配置文件的方法的流程图;
图8是根据本发明实施例的一种获取目标应用的多条创建指令的方法的流程图;
图9是根据本发明实施例的另一种对象处理的方法的流程图;
图10是根据本发明实施例的另一种对象处理的方法的流程图;
图11是根据本发明实施例的另一种对象处理方法的流程图;
图12是根据本发明实施例的另一种对象创建的方法的流程图;
图13是根据本发明实施例的一种用于创建对象的代码的示意图;
图14是根据本发明实施例的一种新增创建指令的方法的流程图;
图15是根据本发明实施例的一种用于创建指令耗时数据的生成逻辑和创建指令耗时配置的数据结构的代码的示意图;
图16是根据本发明实施例的一种获取配置文件的方法的流程图;
图17是根据本发明实施例的一种形成创建指令的方法的流程图;
图18是根据本发明实施例的一种用于分帧处理器存储创建指令的代码的示意图;
图19是根据本发明实施例的另一种用于分帧处理器存储创建指令的代码的示意图;
图20是根据本发明实施例的一种用于对创建指令进行排序的代码的示意图;
图21是根据本发明实施例的一种用于对多个创建指令进行打包的代码的示意图;
图22是根据本发明实施例的一种对象处理装置的示意图。以及
图23是根据本发明实施例的一种电子装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的一个方面,提供了一种对象处理方法的实施例。
可选地,在本实施例中,上述对象处理方法可以应用于如图2所示的由服务器202和终端204所构成的硬件环境中。图2是根据本发明实施例的一种对象处理方法的硬件环境的示意图。如图2所示,服务器202通过网络与终端204进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端204并不限定于PC、手机、平板电脑等。本发明实施例的对象处理方法可以由服务器202来执行,也可以由终端204来执行,还可以是由服务器202和终端204共同执行。其中,终端204执行本发明实施例的对象处理方法也可以是由安装在其上的客户端来执行。
图3是根据本发明实施例的一种对象处理方法的流程图。如图3所示,该方法可以包括以下步骤:
步骤S302,获取目标应用的多条创建指令。
在本申请上述步骤S302提供的技术方案中,获取目标应用的多条创建指令,其中,创建指令用于指示创建目标应用的目标对象。
在该实施例中,目标应用为需要创建对象的应用,可以为频繁地创建特效、频繁地播放特效、开局前可预先知道局内使用到的特效和对象、有一部分会固定使用到的特效的应用。比如,目标应用为游戏应用,可以为三消类游戏应用。
在预设场景下,获取目标应用的多条创建指令,比如,获取创建指令c1、c2、c3、c4、c5。该预设场景可以为游戏场景,创建指令用于指示创建目标应用的目标对象,其中,每条创建指令可以用于指示创建目标应用的一个目标对象,可以为用于创建目标对象的创建函数,目标应用的目标对象为目标应用中需要创建的对象,可以为在一定场景下需要游戏玩家控制的对象。
可选地,触发目标应用开局,向服务器发送开局请求,进行资源加载。解析局内需要使用到的目标对象,该局内需要使用到的目标对象的相关数据可以预先存储在关卡文件中,比如,解析关卡文件中当前一局的棋盘数据,生成创建指令,其中,棋盘数据为棋盘游戏中的数据。还可以解析出关卡使用到的棋子类型和数量,棋子对应的特效的类型和数量,从而组织好需要创建的目标对象的类型和数量。还可以根据对象池中已经创建好的对象的类型和数量,确定最终需要创建的目标对象的类型和数量,进而根据最终需要创建的目标对象的类型和数量生成用于指示创建目标应用的目标对象的指令。
可选地,在获取目标应用的多条创建指令之后,将创建指令添加至分帧处理器中,也即,将创建指令存储至分帧处理器中。其中,分帧处理器用于分帧创建对象和分帧播放特效,其中,分帧创建对象为将短时间内创建的大量对象分散到目标应用的多个数据帧中去创建,分帧播放特效为将短时间内播放的大量特效分散到目标应用的多个游戏帧中去播放。
步骤S304,按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理。
在本申请上述步骤S304提供的技术方案中,按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,其中,耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间。
创建指令用于指示创建目标应用的目标对象。目标应用的目标对象在创建的过程中需要消耗一定的时间(time_consuming)。在获取目标应用的多条创建指令之后,对多条创建指令进行排序处理,可以获取与每条创建指令对应的耗时数据,按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间,单位可以为毫秒(ms)。可选地,在将创建指令添加至分帧处理器,对多条创建指令进行排序处理,以进而对多条创建指令进行分组处理。
可选地,对多条创建指令进行快速排序,可以按照与每条创建指令对应的耗时数据所指示的时间,由小到大的顺序进行排列,或者由大到小的顺序进行排列,从而得到排序完的结果。
举例而言,创建指令c1对应的耗时数据为14,创建指令c2对应的耗时数据为10,创建指令c3对应的耗时数据为5,创建指令c4对应的耗时数据为15,创建指令c5对应的耗时数据为18。对创建指令c1、创建指令c2、创建指令c3、创建指令c4、创建指令c5对应的耗时数据按照从小到大的顺序排序,则得到的排序结果为c3、c2、c1、c4、c5。
步骤S306,对排序处理后的多条创建指令进行分组处理,得到多组创建指令。
在本申请上述步骤S306提供的技术方案中,对排序处理后的多条创建指令进行分组处理,得到多组创建指令,其中,每组创建指令包括多条创建指令中的至少一条创建指令,分别与每组创建指令包括的至少一条创建指令对应的耗时数据之和不超过预设阈值。
目标应用的数据在处理时具有帧率,也即,每秒钟处理的数据帧数,则在处理一帧数据时具有时间限制,比如,帧率为每秒30帧,则处理一帧数据的时间约为33毫秒(1秒等于1000毫秒)。其中,每帧引擎的逻辑更新和渲染更新占据了一部分时间,因而用于创建对象的时间不能占满处理一帧数据的时间,比如,不能占满33毫秒。
在按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理之后,对排序处理后的多条创建指令进行分组处理,也即,对排序处理后的多条创建指令进行打包处理,得到多组创建指令,每组创建指令包括多条创建指令中的至少一条创建指令,比如,第一组创建指令为[c3,c4],第二组创建指令为[c2,c1],第三组创建指令为[c5]。该实施例的每组创建指令与目标应用的每帧数据相对应。
在该实施例中,分别与每组创建指令包括的至少一条创建指令对应的耗时数据之和不超过预设阈值,该预设阈值不能超过处理每帧数据的时间,比如,该预设阈值不能超过33毫秒,可以设定预设阈值为25毫秒,第一组创建指令为[c3,c4],c3和c4耗时数据之和(5+15=20毫秒)小于25毫秒,第二组创建指令为[c2,c1],c2和c1耗时数据之和(10+14=24毫秒)小于25毫秒,第三组创建指令为[c5],c5耗时数据为18毫秒,小于25毫秒。
如果不对创建指令进行排序处理、分组处理,则只会取出指定个数的创建指令进行处理,因而起不到时间最优的效果,而该实施例对排序处理后的多条创建指令进行分组处理,得到多组创建指令,进而可以执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
步骤S308,在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
在本申请上述步骤S308提供的技术方案中,在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
在对排序处理后的多条创建指令进行分组处理,得到多组创建指令之和,在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令。可选地,启动分帧处理器,处理目标应用的多帧数据,执行每帧数据对应的一组创建指令,得到第一数量的目标对象,该第一数量与每组创建指令中包括的至少一个创建指令的数量相同,第一数量的目标对象为目标应用最终创建的对象。
在执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象之后,可以将第一数量的目标对象存储至对象池中以备用,该对象池用于存储已经创建好的目标对象。
在经过对多条创建指令进行排序处理、分组处理之后,可以在相同时间内创建更多的目标对象,避免了一帧创建两个或者更多对象时,可能会出现相邻几帧创建对象耗时有的很高有的很低,避免了CPU曲线上有较明显的波峰,在一定程度上能够使CPU曲线更平滑,提升了对象创建的流畅度。
通过上述步骤S302至步骤S308,通过获取目标应用的多条创建指令,创建指令用于指示创建目标应用的目标对象;按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间;对排序处理后的多条创建指令进行分组处理,得到多组创建指令,每组创建指令包括多条创建指令中的至少一条创建指令,分别与每组创建指令包括的至少一条创建指令对应的耗时数据之和不超过预设阈值;在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。由于对创建指令进行排序打包,使得在一定时间内能够创建更多的目标对象,且在一定程度上能够使CPU曲线更平滑,提升了对象创建的流畅度,进而解决了相关技术中对象创建的流畅度低的技术问题。
作为一种可选的实施方式,步骤S304,按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理包括:按照预设顺序对每条创建指令对应的耗时数据进行排序,得到多条创建指令的排序结果。
图4是根据本发明实施例的一种按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理的方法的流程图。如图4所示,该方法包括以下步骤:
步骤S401,从配置文件中获取每条创建指令对应的耗时数据。
在本申请上述步骤S401提供的技术方案中,在获取目标应用的多条创建指令之后,从配置文件中获取每条创建指令对应的耗时数据。该耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间,可以预先存储在配置文件中。该配置文件也即创建指令耗时配置,可以自动化生成,比如,将所有的创建指令都执行一遍,得到耗时数据,记录耗时数据,将记录的总的耗时数据上传至服务器,通过服务器生成配置文件,再下载该配置文件,该配置文件可以合到目标应用的代码中以供目标应用使用。
可选地,该实施例可以不自动生成创建指令耗时配置,而使用代码硬编码的形式进行替代。
步骤S402,按照预设顺序对每条创建指令对应的耗时数据进行排序,得到多条创建指令的排序结果。
在本申请上述步骤S402提供的技术方案中,在从配置文件中获取每条创建指令对应的耗时数据之后,按照预设顺序对每条创建指令对应的耗时数据进行排序,得到多条创建指令的排序结果,以对多条创建指令进行分组处理。该预设顺序可以为对耗时数据对应的时间由大到小进行排列的顺序,也可以为耗时数据对应的时间由小到大进行排列的顺序。
该实施例通过从配置文件中获取每条创建指令对应的耗时数据;按照预设顺序对每条创建指令对应的耗时数据进行排序,得到多条创建指令的排序结果,从而实现了按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理的目的,进而对排序处理后的多条创建指令进行分组处理,得到多组创建指令,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象,提升了对象创建的流畅度。
作为一种可选的实施方式,步骤S306,对排序处理后的多条创建指令进行分组处理,得到多组创建指令包括:获取排序处理后的多条创建指令中的第一创建指令和第二创建指令,其中,第一创建指令和第二创建指令为未进行分组的创建指令;将第一创建指令和第二创建指令打包为一组创建指令。
图5是根据本发明实施例的一种对排序处理后的多条创建指令进行分组处理的方法的流程图。如图5所示,该方法包括以下步骤:
步骤S501,获取排序处理后的多条创建指令中的第一创建指令和第二创建指令。
在本申请上述步骤S501提供的技术方案中,在按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理之后,获取排序处理后的多条创建指令中的第一创建指令和第二创建指令。该第一创建指令和第二创建指令为待进行分组处理的创建指令。
步骤S502,将第一创建指令和第二创建指令打包为一组创建指令。
在本申请上述步骤S502提供的技术方案中,在第一创建指令对应的耗时数据和第二创建指令对应的耗时数据之和小于预设阈值的情况下,将第一创建指令和第二创建指令打包为一组创建指令,其中,预设阈值小于在处理目标应用的每帧数据时需要的时间。
在获取排序处理后的多条创建指令中的第一创建指令和第二创建指令之后,获取第一创建指令对应的耗时数据,获取第二创建指令对应的耗时数据,判断第一创建指令对应的耗时数据和第二创建指令对应的耗时数据之和是否小于预设阈值。由于目标应用的数据在处理时具有帧率,在处理一帧数据时具有时间限制,每帧引擎的逻辑更新和渲染更新已经占据了一部分时间,因而用于创建对象时的时间不能占满处理一帧数据的时间,该实施例的预设阈值小于在处理目标应用的每帧数据时需要的时间。
在判断第一创建指令对应的耗时数据和第二创建指令对应的耗时数据之和是否小于预设阈值之和,如果判断出第一创建指令对应的耗时数据和第二创建指令对应的耗时数据之和小于预设阈值,则将第一创建指令和第二创建指令打包为一组创建指令。
该实施例通过获取排序处理后的多条创建指令中的第一创建指令和第二创建指令;在第一创建指令对应的耗时数据和第二创建指令对应的耗时数据之和小于预设阈值的情况下,将第一创建指令和第二创建指令打包为一组创建指令,其中,预设阈值小于在处理目标应用的每帧数据时需要的时间,实现了对排序处理后的多条创建指令进行分组处理,得到多组创建指令的目的,进而执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象,提升了对象创建的流畅度。
作为一种可选的实施方式,步骤S501,获取排序处理后的多条创建指令中的第一创建指令和第二创建指令包括:在预设顺序为由小到大顺序,或者为由大到小顺序的情况下,获取在排序处理后的多条创建指令中,位于正数第一序列位的第一创建指令和位于倒数第二序列位的第二创建指令。
在获取排序处理后的多条创建指令中的第一创建指令和第二创建指令时,在按照由小到大顺序对每条创建指令对应的耗时数据进行排序,或者按照由大到小顺序对每条创建指令对应的耗时数据进行排序的情况下,获取在排序处理后的多条创建指令中,位于正数第一序列位的第一创建指令和位于倒数第二序列位的第二创建指令,比如,正数第一序列位为正数第一位,倒数第二序列位为倒数第一位,则获取排序处理后的多条创建指令中,位于正数第一位的第一创建指令和位于倒数第一位的第二创建指令,在位于正数第一位的第一创建指令对应的耗时数据和位于倒数第一位的第二创建指令对应的耗时数据之和小于预设阈值的情况下,将第一创建指令和第二创建指令打包为一组创建指令。
可选地,正数第一序列位为正数第一位,倒数第二序列位为倒数第二位,则获取排序处理后的多条创建指令中,位于正数第一位的第一创建指令和位于倒数第二位的第二创建指令,在位于正数第一位的第一创建指令对应的耗时数据和位于倒数第二位的第二创建指令对应的耗时数据之和小于预设阈值的情况下,将第一创建指令和第二创建指令打包为一组创建指令。
举例而言,对创建指令c1、创建指令c2、创建指令c3、创建指令c4、创建指令c5对应的耗时数据按照从小到大的顺序排序,则得到的排序结果为创建指令c3(耗时数据为5)、创建指令c2(耗时数据为10)、创建指令c1(耗时数据为14)、创建指令c4(耗时数据为15)、创建指令c5(耗时数据为18)。可以设定该实施例的预设阈值为25毫秒,创建指令c3和创建指令c5耗时数据之和(5+18=23毫秒)小于25毫秒,可以将创建指令c3和创建指令c5打包为一组创建指令。可选地,创建指令c3和创建指令c4耗时数据之和(5+15=20毫秒)小于25毫秒,可以将创建指令c3和创建指令c4打包为一组创建指令;创建指令c2和创建指令c1耗时数据之和(10+14=24毫秒)小于25毫秒,可以将创建指令c2和创建指令c1打包为一组创建指令;c5耗时数据为18毫秒,小于25毫秒,可以将创建指令c5单独为一组。
需要说明的是,上述对排序处理后的多条创建指令进行分组处理,得到多组创建指令的方式仅为本发明实施例的优选实施方式,并不代表本发明实施例的对排序处理后的多条创建指令进行分组处理仅为上述方式,通过任何其它形式的组织数据和处理流程实现对创建指令进行排序打包的方法,也在本发明实施例的范围之内,此处不再一一举例说明。
作为一种可选的实施方式,在步骤S401,从配置文件中获取每条创建指令对应的耗时数据之前,该方法还包括:记录开始执行每条创建指令的开始时间和结束执行每条创建指令的结束时间,由开始时间和结束时间得到的每条创建指令对应的耗时数据,获取由每条创建指令对应的耗时数据生成的配置文件。
图6是根据本发明实施例的另一种对象处理方法的流程图。如图6所示,该方法包括以下步骤:
步骤S601,执行多条创建指令。
在本申请上述步骤S601提供的技术方案中,在从配置文件中获取每条创建指令对应的耗时数据之前,执行多条创建指令。可以启动引擎,比如,启动cocosjs引擎,进行资源加载,将所有的创建指令预先执行一遍。
步骤S602,记录开始执行每条创建指令的开始时间和结束执行每条创建指令的结束时间。
在本申请上述步骤S602提供的技术方案中,在执行多条创建指令之后,获取开始执行每条创建指令的开始时间(startTime),和结束执行每条创建指令的结束时间(endTime)。并对开始时间和结束时间进行记录。
步骤S603,获取由开始时间和结束时间得到的每条创建指令对应的耗时数据。
在本申请上述步骤S603提供的技术方案中,在记录开始执行每条创建指令的开始时间和结束执行每条创建指令的结束时间之后,获取由开始时间和结束时间得到的每条创建指令对应的耗时数据,可以由每条创建指令的结束时间与开始时间之间的差值得到每条创建指令对应的耗时数据,也即,time_consuming:endTime-startTime。
步骤S604,获取由每条创建指令对应的耗时数据生成的配置文件,并将配置文件添加至目标应用中。
在本申请上述步骤S604提供的技术方案中,在获取由开始时间和结束时间得到的每条创建指令对应的耗时数据之后,获取由每条创建指令对应的耗时数据生成的配置文件,也即,耗时配置文件,并将配置文件添加至目标应用中,比如,将配置文件合到目标应用的代码中。
该实施例通过在从配置文件中获取每条创建指令对应的耗时数据之前,执行多条创建指令;记录开始执行每条创建指令的开始时间和结束执行每条创建指令的结束时间;获取由开始时间和结束时间得到的每条创建指令对应的耗时数据;获取由每条创建指令对应的耗时数据生成的配置文件,并将配置文件添加至目标应用中,从而实现了对创建指令对应的耗时数据进行预先配置的目的,进而实现了按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,对排序处理后的多条创建指令进行分组处理,得到多组创建指令,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象,提升了对象创建的流畅度。
作为一种可选的实施方式,步骤S604,获取由每条创建指令对应的耗时数据生成的配置文件包括:获取由服务器对耗时数据进行处理得到的配置文件。
图7是根据本发明实施例的一种获取由每条创建指令对应的耗时数据生成的配置文件的方法的流程图。如图7所示,该方法包括以下步骤:
步骤S701,将所有创建指令对应的耗时数据上传至服务器。
在本申请上述步骤S701提供的技术方案中,由于HTML5的局限性,使得配置文件无法在本地生成,只能将数据发给服务器,由服务器生成配置文件。在获取由开始时间和结束时间得到的每条创建指令对应的耗时数据之后,将所有创建指令对应的耗时数据上传至服务器,也即,将生成好的总的耗时数据上传至服务器,以由服务器对耗时数据进行处理得到配置文件。
可选地,在引擎为cocosjs引擎的情况下,并且创建的有些对象需要用到资源,所以配置文件的生成逻辑需要在引擎运行后和资源加载完成才能执行。在引擎运行后和资源加载完成之后,将所有创建指令对应的耗时数据上传至服务器。
步骤S702,获取由服务器对耗时数据进行处理得到的配置文件。
在本申请上述步骤S702提供的技术方案中,在将所有创建指令对应的耗时数据上传至服务器之后,服务器对耗时数据进行处理,得到配置文件,客户端再从服务器上下载下来,从而获取到由服务器对耗时数据进行处理得到的配置文件。
该实施例通过将所有创建指令对应的耗时数据上传至服务器;获取由服务器对耗时数据进行处理得到的配置文件,达到了获取由每条创建指令对应的耗时数据生成的配置文件的目的,从而实现了对创建指令对应的耗时数据进行预先配置的目的,进而实现了按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,对排序处理后的多条创建指令进行分组处理,得到多组创建指令,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象,提升了对象创建的流畅度。
作为一种可选的实施方式,步骤S302,获取目标应用的多条创建指令包括:解析目标应用中的待创建对象,得到解析结果。
图8是根据本发明实施例的一种获取目标应用的多条创建指令的方法的流程图。如图8所示,该方法包括以下步骤:
步骤S801,解析目标应用中的待创建对象,得到解析结果。
在本申请上述步骤S801提供的技术方案中,解析目标应用中的待创建对象,得到解析结果,其中,待创建对象包括目标对象。
该实施例可以预先知道目标应用中需要使用到对象。比如,在开局前可以预先知道局内部分使用到的特效和棋子。该实施例的待创建对象的相关数据可以预先存储在关卡文件中。在获取目标应用的多条创建指令时,对目标应用中的待创建对象进行解析,比如,分析出关卡使用的棋子类型和数量,棋子对应的特效的类型和数量,该待创建对象包括最终创建的目标对象。
步骤S802,由解析结果生成多条创建指令。
在本申请上述步骤S802提供的技术方案中,解析目标应用中的待创建对象,得到解析结果之后,由解析结果生成多条创建指令。比如,在分析出关卡使用的棋子类型和数量,棋子对应的特效的类型和数量之后,进而根据关卡使用的棋子类型和数量,棋子对应的特效的类型和数量组织好需要创建的目标对象的类型和数量,生成多条用于指示创建目标对象的指令。
该实施例通过解析目标应用中的待创建对象,得到解析结果,再由解析结果生成多条创建指令,从而达到了获取目标应用的多条创建指令的目的,进而按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,对排序处理后的多条创建指令进行分组处理,得到多组创建指令,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象,提升了对象创建的流畅度。
作为一种可选的实施方式,步骤S801,解析目标应用中的待创建对象,得到解析结果包括:至少解析目标应用中待创建对象的类型和数量,得到待创建对象的第一类型和第二数量,其中,解析结果包括第一类型和第二数量;步骤S802,由解析结果生成多条创建指令包括:由第一类型、第二数量、已创建对象的类型和数量确定需要创建的目标对象的第一数量和第二类型;生成用于指示创建第一数量和第二类型的目标对象的多条创建指令。
图9是根据本发明实施例的另一种对象处理的方法的流程图。如图9所示,该方法包括以下步骤:
步骤S901,至少解析目标应用中待创建对象的类型和数量,得到待创建对象的第一类型和第二数量。
在本申请上述步骤S901提供的技术方案中,至少解析目标应用中待创建对象的类型和数量,得到待创建对象的第一类型和第二数量,其中,解析结果包括第一类型和第二数量。
在该实施例中,可以发送开局协议请求和资源加载;解析关卡文件,分析出关卡使用的棋子类型和数量和棋子对应的特效的类型和数量,得到待创建对象的第一类型和第二数量,比如,组织好需要创建的目标对象的类型和数量。
步骤S902,由第一类型、第二数量、已创建对象的类型和数量确定需要创建的目标对象的第一数量和第二类型。
在本申请上述步骤S902提供的技术方案中,在得到待创建对象的第一类型和第二数量之后,由第一类型、第二数量、已创建对象的类型和数量确定需要创建的目标对象的第一数量和第二类型,可以根据对象池中已有的目标对象类型的数量,计算出最终需要创建对象的数量。比如,某一关卡文件在解析完之后,需要创建20个棋子,其中,对象池中已经缓存了10个棋子,则还需要创建10个棋子。
步骤S903,生成用于指示创建第一数量和第二类型的目标对象的多条创建指令。
在本申请上述步骤S903提供的技术方案中,定需要创建的目标对象的第一数量和第二类型之后,生成用于指示创建第一数量和第二类型的目标对象的多条创建指令,可以从创建指令耗时配置中取得耗时数据,结合创建指令存储到分帧处理器中。
该实施例通过至少解析目标应用中待创建对象的类型和数量,得到待创建对象的第一类型和第二数量,其中,解析结果包括第一类型和第二数量,实现了解析目标应用中的待创建对象,得到解析结果,通过由第一类型、第二数量、已创建对象的类型和数量确定需要创建的目标对象的第一数量和第二类型;生成用于指示创建第一数量和第二类型的目标对象的多条创建指令,实现了由解析结果生成多条创建指令的目的。
作为一种可选的实施方式,在步骤S302,获取目标应用的多条创建指令之后,该方法还包括:向每条创建指令配置第一标识信息;步骤S308,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象包括:执行查找到的与第一标识信息对应的创建指令,得到第一数量的目标对象。
图10是根据本发明实施例的另一种对象处理的方法的流程图。如图10所示,该方法包括以下步骤:
步骤S1001,创建目标应用的每条创建指令的第一标识信息,并向每条创建指令配置第一标识信息。
在本申请上述步骤S1001提供的技术方案中,创建目标应用的每条创建指令的第一标识信息,并向每条创建指令配置第一标识信息。
该实施例的创建指令耗时配置生成和对创建指令进行排序处理、打包处理为该实施例的主要创新点。为了实现上述两点,前端在用于指示创建对象的创建指令要求设计得单一,且每个创建指令都需要配置一个唯一的标识以便数据查找。其中,包括创建指令、创建指令标识、创建指令配置、创建对象。在获取目标应用的多条创建指令之后,创建目标应用的每条创建指令的第一标识信息,并向每条创建指令配置第一标识信息。
步骤S1002,查找与第一标识信息对应的创建指令。
在本申请上述步骤S1002提供的技术方案中,在创建目标应用的每条创建指令的第一标识信息,并向每条创建指令配置第一标识信息之后,可以方便地查找与第一标识信息对应的创建指令。
步骤S1003,执行查找到的与第一标识信息对应的创建指令,得到第一数量的目标对象。
在本申请上述步骤S1003提供的技术方案中,执行查找到的与第一标识信息对应的创建指令,得到第一数量的目标对象。
在执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象时,查找与第一标识信息对应的创建指令,在查找到与第一标识信息对应的创建指令之后,执行查找到的与第一标识信息对应的创建指令,从而得到第一数量的目标对象。
该实施例通过在步获取目标应用的多条创建指令之后,创建目标应用的每条创建指令的第一标识信息,并向每条创建指令配置第一标识信息;通过查找与第一标识信息对应的创建指令;执行查找到的与第一标识信息对应的创建指令,得到第一数量的目标对象,实现了执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象的目的,提升了对象创建的流畅度。
作为一种可选的实施方式,在步骤S302,获取目标应用的多条创建指令之后,该方法还包括:获取第三数量创建指令;创建第三数量创建指令中每条创建指令的第二标识信息,并向第三数量创建指令中每条创建指令配置第二标识信息;查找与第二标识信息对应的创建指令;执行查找到的第二标识信息对应的创建指令,得到第三数量的目标对象。
图11是根据本发明实施例的另一种对象处理方法的流程图。如图11所示,该方法包括以下步骤:
步骤S1101,获取第三数量创建指令。
在本申请上述步骤S1101提供的技术方案中,获取第三数量创建指令。获取目标应用的多条创建指令之后,获取第三数量创建指令。
该实施例在应用开发过程中,如果需要新增创建指令,获取第三数量创建指令。
步骤S1102,创建第三数量创建指令中每条创建指令的第二标识信息,并向第三数量创建指令中每条创建指令配置第二标识信息。
在本申请上述步骤S1102提供的技术方案中,在获取第三数量创建指令之后,创建第三数量创建指令中每条创建指令的第二标识信息,并向第三数量创建指令中每条创建指令配置第二标识信息,这样每新增一个创建指令,给其配置对应的标识和指令配置。
步骤S1103,查找与第二标识信息对应的创建指令。
在本申请上述步骤S1103提供的技术方案中,在向第三数量创建指令中每条创建指令配置第二标识信息之后,查找与第二标识信息对应的创建指令。
步骤S1104,执行查找到的第二标识信息对应的创建指令,得到第三数量的目标对象。
在本申请上述步骤S1104提供的技术方案中,执行查找到的第二标识信息对应的创建指令,得到第三数量的目标对象。在创建对象时,可以使用Creator.create,这样即能保证创建的入口唯一,也方便后续的创建耗时配置文件的生成。
可选地,在该实施例中,判断第二标识信息是否存在于CreateCmdConfig函数中,如果判断出第二标识信息存在于CreateCmdConfig函数中,调用配置中的创建指令创建对象并返回。如果判断出第二标识信息不存在于CreateCmdConfig函数中,则返回空值(null)
该实施例通过在获取目标应用的多条创建指令之后,获取第三数量创建指令;创建第三数量创建指令中每条创建指令的第二标识信息,并向第三数量创建指令中每条创建指令配置第二标识信息;查找与第二标识信息对应的创建指令;执行查找到的第二标识信息对应的创建指令,得到第三数量的目标对象。
作为一种可选的实施方式,在步骤S302,获取目标应用的多条创建指令之后,且在步骤S304,按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理之前,该方法还包括:添加多条创建指令至处理器中,其中,处理器用于处理目标应用的多帧数据;步骤S306,对排序处理后的多条创建指令进行分组处理,得到多组创建指令包括:在处理器中,对排序处理后的多条创建指令进行分组处理,得到多组创建指令;在处理目标应用的多帧数据的过程中,步骤S308,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象包括:在处理器处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
该实施例的处理器可以为分帧处理器,分帧处理器用于分帧创建对象和分帧播放特效,其中,分帧创建对象为将短时间内创建的大量对象分散到目标应用的多个数据帧中去创建,分帧播放特效为将短时间内播放的大量特效分散到目标应用的多个游戏帧中去播放。可选地,预先生成创建指令的耗时配置文件,解析局内使用到的目标对象,形成创建指令,将创建指令添加进分帧处理器,使用创建指令排序打包策略对创建指令进行排序打包,启动分帧处理器,每执行一帧数据取出一组创建指令进行执行,最后将创建出来的目标对象添加到对象池中。
作为一种可选的实施方式,在步骤S306,对排序处理后的多条创建指令进行分组处理,得到多组创建指令之后,该方法还包括:添加多组创建指令至处理器中,其中,处理器用于处理目标应用的多帧数据;步骤S308,在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象包括:在处理器处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
该实施例可以调整流程处理的顺序,比如,对在对创建指令进行指令排序打包之后,再将得到的多组创建指令添加至分帧处理器中。
可选地,该实施例在添加多条创建指令至分帧处理器时,可以从配置文件中获取耗时数据,将多条创建指令和耗时数据添加至分帧处理器中。
可选地,该实施例在执行与每帧数据对应的一组创建指令,得到第一数量的目标对象之后,存储第一数量的目标对象至对象池中,其中,对象池用于存储创建好的对象,比如,对象预先创建好存放到对象池中备用。
本发明实施例的对象处理方法,结合了预处理和指令排序打包、分帧处理技术、对象池技术等,创新点在于指令排序打包思想和分帧创建技术的结合,可以将目标应用中的对象预先创建好,存放到对象池中备用,可以解决短时间内需要创建大量对象,播放大量特效引起的发热较快,出现相邻几帧创建对象耗时有的很高,有的很低,出现CPU曲线上有明显的波峰的问题,达到了提升对象创建的流畅度,使得CPU曲线平稳的效果。
下面结合优选的实施例对本发明的技术方案进行说明,具体以目标应用为游戏应用进行举例说明。
该实施例的对象创建方法可以使用游戏引擎实现,该游戏引擎可以为cocosjs游戏引擎,可以在PC机的Chrome浏览器上运行。
该实施例的技术方案主要为前端实现逻辑,可以由四部分内容组合而成,包括分帧处理器、对创建指令进行排序打包、创建指令耗时的配置生成逻辑、以及对象池。其中,分帧处理包括分帧创建对象和分帧播放特效两部分。分帧创建对象可以将短时间内创建的大量对象分散到多个游戏帧中去创建。分帧播放特效将短时间内播放的大量特效分散到多个游戏帧中去播放。该实施例的预处理结合分帧创建对象技术和对象池技术,从而将游戏内的对象预先创建好,并存放至对象池中以备用。
图12是根据本发明实施例的另一种对象创建的方法的流程图。如图12所示,该方法包括以下步骤:
步骤S1201,预先生成创建指令的耗时配置文件。
根据由创建指令创建对象需要的耗时时间,预先进行耗时配置,得到配置文件。
步骤S1202,开局。
在预先生成创建指令耗时配置之后,可以进行游戏开局。
步骤S1203,解析局内使用到的对象。
在开局之后,解析局内需要使用到的对象,比如,解析棋盘数据。该使用到的对象为预先确定的需要创建的对象。
步骤S1204,生成多个创建指令。
在解析局内使用到的对象之后,生成用于指示创建对象的创建指令。
步骤S1205,将生成的多个创建指令添加进分帧处理器。
在生成多个创建指令之后,将生成的创建指令添加至分帧处理器。该实施例的分帧处理器可以用于分帧创建对象和分帧播放特效。其中,分帧创建对象用于将短时间内创建的大量对象分散到多个游戏帧中去创建,分帧播放特效为将短时间内播放的大量特效分散到多个游戏帧中去播放。
步骤S1206,对多个创建指令进行排序打包。
在将生成的多个创建指令添加进分帧处理器之后,对多个创建指令进行排序打包。对创建指令进行排序,可以根据每个创建指令对应的耗时数据对多个创建指令进行快速排序,得到排序后的创建指令,再对排序后的创建指令进行打包。可选地,分帧处理器内部使用了通过数组存储的创建指令,该数组元素可以包括创建指令标识,创建参数和创建耗时,从而在创建对象时,达到时间最优的效果。
该实施例如果不对创建指令进行排序分组处理,则分帧处理器的每帧只会取出指定个数的指令进行处理,起不到时间最优的效果。
步骤S1207,启动分帧处理器。
在对创建指令进行排序打包之后,启动分帧处理器。
步骤S1208,第1帧执行第1组创建指令。
在启动分帧处理器之后,取出第1帧数据对应的第1组创建指令进行执行。
步骤S1209,第2帧执行第2组指令。
在启动分帧处理器之后,取出第2帧数据对应的第2组创建指令进行执行。
步骤S1210,第3帧执行第3组指令。
在启动分帧处理器之后,取出第3帧数据对应的第3组创建指令进行执行。
在取出每帧数据对应的一组创建指令进行执行之后,将创建出来的对象添加至对象池中。
在该实施例中,预先生成创建指令的耗时配置文件和对创建指令进行打包排序为本发明实施例的创新点。为了实现上述两点,前端用于创建对象的创建指令的设计要求单一,并且每个创建指令都需要配置一个唯一的标识,以便根据标识进行数据查找。
图13是根据本发明实施例的一种用于创建对象的代码的示意图。如图13所示,该实施例的代码用于在泡泡棋子游戏中实现创建指令、创建指令标识、创建指令配置、创建对象,比如,创建泡泡棋子对象。
下面对该实施例在开发过程中需要新增创建指令的方案进行说明。
图14是根据本发明实施例的一种新增创建指令的方法的流程图。如图14所示,该方法包括以下步骤:
步骤S1401,在Creator中新增创建函数。
在应用开发过程中,如果需要新增创建指令,则需要新增创建指令,也即,新增创建函数,可以通过Creator函数新增创建函数。
步骤S1402,在CreateCmdTag中为新的创建函数分配一个标识。
每新增一个创建指令,给其配置对应的标识。在新增创建函数之后,在CreateCmdTag函数中为新的创建函数分配一个标识,以便数据查找。
步骤S1403,在CreateCmdConfig中为新的创建函数新增配置。
每新增一个创建指令,为新的创建函数新增配置,比如,通过CreateCmdConfig函数中为新的创建函数新增配置。
步骤S1404,调用Creator.create传入标识。
在为新的创建函数新增配置之后,传入标识以进行对象的创建,可以通过调用Creator.create传入标识以进行对象的创建。在创建对象时,使用Creator.create,这样即能保持创建的入口唯一,也方便后续耗时配置文件的生成。
步骤S1405,判断标识是否存在于CreateCmdConfig中。
在调用Creator.create传入标识之后,判断标识是否存在于CreateCmdConfig函数中。如果判断出标识存在于CreateCmdConfig中,执行步骤S1406;如果判断出标识不存在于CreateCmdConfig中,执行步骤S1407。
步骤S1406,调用配置中的创建函数创建对象并返回。
在判断标识是否存在于CreateCmdConfig中之后,如果判断出标识存在于CreateCmdConfig中,调用配置中的创建函数创建对象并返回。
步骤S1407,返回null。
在判断标识是否存在于CreateCmdConfig中之后,如果判断出标识不存在于CreateCmdConfig中,则返回空null。
下面对该实施例创建指令耗时数据的生成逻辑和创建指令耗时配置的数据结构的方案进行说明。
图15是根据本发明实施例的一种用于创建指令耗时数据的生成逻辑和创建指令耗时配置的数据结构的代码的示意图。如图15所示,在创建指令耗时数据的生成逻辑中,将所有创建指令执行一遍,记录每个创建指令的开始执行时的时间(startTime)和结束执行时的时间(endTime)计算出创建对象所消耗的时间,则每个创建指令对应的耗时数据(time_consuming)为每个创建指令的开始执行时的时间(startTime)和结束执行时的时间(endTime)之差,也即,time_consuming:endTime-startTime。最后返回耗时数据的结果(result)。
图16是根据本发明实施例的一种获取配置文件的方法的流程图。如图16所示,该方法包括以下步骤:
步骤S1601,引擎启动,资源加载完成。
该实施例的引擎可以为cocosjs游戏引擎,运行引擎。在创建有些对象时,需要用到资源,因而在引擎运行之后,加载资源。
步骤S1602,执行耗时配置生成逻辑。
在引擎启动,资源加载完成之后,执行耗时配置生成逻辑。
步骤S1603,读取CreateCmdConfig函数。
读取CreateCmdConfig函数,可以将所有创建指令都执行一遍。
步骤S1604,记录第一创建指令的开始时间。
在读取CreateCmdConfig之后,记录开始执行第一创建指令的开始时间。
步骤S1605,执行第一创建指令。
在记录第一创建指令的开始时间之后,执行第一创建指令,也即,执行第1个配置的创建函数。
步骤S1606,计算第一创建指令对应的耗时数据。
在执行第一创建指令之后,获取结束执行第一创建指令的结束时间。根据开始执行第一创建指令的开始时间和结束时间计算出用于根据第一创建指令创建对象所消耗的时间,得到第一创建指令对应的耗时数据。
步骤S1607,记录第二创建指令的开始时间。
在读取CreateCmdConfig之后,记录开始执行第二创建指令的开始时间。
步骤S1608,执行第二创建指令。
在记录第二创建指令的开始时间之后,执行第二创建指令,也即,执行第2个配置的创建函数。
步骤S1609,计算第二创建指令对应的耗时数据。
在执行第二创建指令之后,获取结束执行第二创建指令的结束时间。根据开始执行第二创建指令的开始时间和结束时间计算出用于根据第二创建指令创建对象所消耗的时间,得到第二创建指令对应的耗时数据。
步骤S1610,记录第三创建指令的开始时间。
在读取CreateCmdConfig之后,记录开始执行第三创建指令的开始时间。
步骤S1611,执行第三创建指令。
在记录第三创建指令的开始时间之后,执行第三创建指令,也即,执行第3个配置的创建函数。
步骤S1612,计算第三创建指令对应的耗时数据。
在执行第三创建指令之后,获取结束执行第三创建指令的结束时间。根据开始执行第三创建指令的开始时间和结束时间计算出用于根据第三创建指令创建对象所消耗的时间,得到第三创建指令对应的耗时数据。
步骤S1613,形成用于生成配置文件的耗时数据。
在步骤S1606、步骤S1609、步骤S1612之后,根据得到的第一创建指令对应的耗时数据、第二创建指令对应的耗时数据、第三创建指令对应的耗时数据形成用于生成配置文件的耗时数据。
步骤S1614,上传用于生成配置文件的耗时数据至服务器。
由于HTML5的局限性,使得配置文件无法在本地生成,需要上传至服务器,由服务器生成配置文件。在形成用于生成配置文件的耗时数据之后,上传用于生成配置文件的耗时数据至服务器。
步骤S1615,下载配置文件合到游戏代码中。
在上传用于生成配置文件的耗时数据至服务器之后,在客户端下载由服务器生成的配置文件,进一步将配置文件合到游戏代码中。
该实施例在配置生成逻辑中,将所有创建指令执行一遍,记录创建指令开始执行时的开始时间和结束执行时的结束时间,计算出每个创建指令在指示创建对象时所消耗的时间,最后由服务器生成配置文件,再在客户端下载下来合到游戏代码中,从而实现了配置文件的生成。
可选地,通过上述配置和规范代码的设计,在后续开发过程中,只需要按照预先规定好的步骤,新增创建指令标识进行标识配置,创建指令配置和创建指令即可,其它流程可以无需更改。
下面对形成创建指令的方法进行介绍。
图17是根据本发明实施例的一种形成创建指令的方法的流程图。如图17所示,该方法可以包括以下步骤:
步骤S1701,触发开局。
当有些玩家进行界面操作时,触发开局。
步骤S1702,向服务器发送开局请求和资源加载。
在该实施例的引擎为cocosjs引擎的情况下,由于创建的有些对象需要用到资源,所以生成逻辑需要在引擎运行后和资源加载完成才能执行。在触发开局之后,向服务器发起开局请求,进行资源加载。
步骤S1703,解析关卡文件。
在向服务器发送开局请求,进行资源加载之后,解析关卡文件。可选地,该关卡文件预先配置了用于确定需要创建的对象的数据,比如,通过棋子类型、数量和棋子对应的特效的类型和数量等,从而组织好需要创建的对象的类型和数量。
步骤S1704,分析出创建的对象的类型和数量。
在解析关卡文件之后,分析出创建的对象的类型和数量。
步骤S1705,判断对象池中是否有对应类型的缓存。
在分析出创建的对象的类型和数量之后,判断对象池中是否有对应类型的缓存。根据对象池中已有的对象类型的数量,计算出最终需要创建的对象的类型和数量。
步骤S1706,计算出最终的需要创建的对象的类型和数量。
在判断对象池中是否有对应类型的缓存之后,如果判断出对象池中有对应类型的缓存,则计算出最终需要创建的对象的类型和数量。比如,某一关卡文件在解析完之后,需要创建20个棋子,其中,对象池中已经缓存了10个棋子,则还需要创建10个棋子。
步骤S1707,根据数据类型和数量形成创建指令。
在判断对象池中是否有对应类型的缓存之后,如果判断出对象池中没有对应类型的缓存,则根据数据类型和数量形成创建指令,或者在计算出最终的需要创建的对象的类型和数量之后,根据数据类型和数量形成创建指令。
步骤S1708,将创建指令存储至分帧处理器中。
在根据数据类型和数量形成创建指令之后,将创建指令存储到分帧处理器中。
步骤S1709,从耗时配置文件中取得耗时数据并存储。
在将创建指令存储至分帧处理器中之后,从耗时配置文件中取得耗时数据并存储。
该实施例当游戏玩家进行界面操作开局时,发送开局协议请求和资源加载;解析关卡文件,分析出关卡使用的棋子类型和数量和棋子对应的特效的类型和数量,组织好需要创建的对象的类型和数量;根据对象池中已有的对象类型的数量,计算出最终需要创建的对象的类型和数量;从创建指令耗时配置中获取耗时数据,结合创建指令进一步存储到分帧处理器中,进而费根据耗时数据和创建指令对创建指令进行排序打包,使得在相同时间内能够创建更多对象,且在一定程度上能够使CPU曲线更平滑,提升了对象创建的流畅度。
下面对本发明实施例的对形成的创建指令进行排序打包的方法进行介绍。
图18是根据本发明实施例的一种用于分帧处理器存储创建指令的代码的示意图。如图18所示,在经过开局,解析棋盘数据,生成创建指令之后,将创建指令添加到分帧处理器中,分帧处理器内部可以使用数组存储了创建指令,数组元素包括创建指令标识(createCmdTag),比如,指令标识包括tag1、tag2、tag3、tag4、tag5、创建参数(createParams),比如,参数包括params1、params2、params3、params4、params5,创建耗时(time_consuming),比如,耗时为tc1、tc2、tc3、tc4、tc5。
图19是根据本发明实施例的另一种用于分帧处理器存储创建指令的代码的示意图。如图19所示,有5个创建指令,分别为c1、c2、c3、c4、c5。c1创建指令的创建耗时tc1为14,c2创建指令的创建耗时tc2为10,c3创建指令的创建耗时tc3为5,c4创建指令的创建耗时tc4为15,c5创建指令的创建耗时tc5为18。
图20是根据本发明实施例的一种用于对创建指令进行排序的代码的示意图。如图20所示,使用快速排序,根据创建耗时time_consuming从小到大进行排序,得到排序完的结果,其中,各个创建指令的time_consuming的顺序依次为time_consuming:5(c3)、time_consuming:10(c2)、time_consuming:14(c1)、time_consuming:15(c4)、time_consuming:18(c5)。
图21是根据本发明实施例的一种用于对多个创建指令进行打包的代码的示意图。如图21所示,可以将图19所示的[c3,c4]作为第一组(20毫秒),将[c2,c1]作为第二组(24毫秒),将[c5]作为第三组(18毫秒)。
假设游戏帧率每秒30帧,那么一帧的时间约为33毫秒(1秒等于1000毫秒),每帧引擎的逻辑更新和渲染更新占据了一部分时间,所以用于创建的时间不能占满33毫秒,暂且设定为25毫秒为阈值,一种简单的打包策略可以将首尾两个指令进行时间计算看是否低于阈值,c3和c5的创建总时长为23毫秒(18+5),低于阈值25毫秒,那么将c3和c5打包成一组。
在该实施例中,如果不对创建指令进行排序分组处理,则分帧处理器每帧只会取出指定个数的指令进行处理,达不到时间最优的效果。经过排序打包后的创建指令在创建对象时,相比于利用分帧处理技术一帧处理一个或者多个指令的方式,在相同时间内能够创建更多对象,并且在一定程度上能够使CPU曲线更平滑。
该实施例使用了分帧处理技术,对象池技术,结合预处理和指令排序打包思想,将指令排序打包和分帧创建技术的结合,根据创建指令执行耗时对创建指令进行排序打包,从而形成了用于解决主游戏场景内短时间内创建大量对象,播放大量特效引起发热较快等问题的技术方案,从而达到了提升游戏流畅度、使CPU曲线平稳、在固定时间内创建更多对象的技术效果。
本发明实施例的应用环境可以但不限于参照上述实施例中的应用环境,本实施例中对此不再赘述。本发明实施例提供了用于实施对象处理方法的一种可选的具体应用。
该实施例的应用环境可以为游戏环境,对象处理方法可以应用于需要创建大量对象的游戏场景中,比如,应用在三消类游戏中,可选地,为天天爱消除H5游戏。该类游戏具有以下特点:
(1)频繁地创建特效;
(2)频繁地播放特效;
(3)开局前可预先知道局内部分使用到的特效和棋子;
(4)有一部分固定会使用到的特效。
该实施例可以预先分帧创建对象,减少局内频繁创建对象,分帧播放特效等功能,通过分帧预创建可以有效地解决短时间内创建大量对象造成CPU性能超负荷,出现发热加快,渲染不流畅等等问题。
该实施例在使用上可以分为游戏外和游戏内两部分。其中,游戏外部分为在执行创建指令耗时配置时,生成的逻辑生成配置,也即,执行每个创建指令,并记录耗时数据以生成配置文件,最后将得到的配置文件合到游戏代码中以供游戏内使用;游戏内部分的使用时机为在开局时,首先解析局内使用到的对象,生成创建指令,然后添加创建指令到分帧处理器中,对创建指令进行排序打包,最后启动分帧处理器进行每帧创建对象并存储到对象池中。在游戏播放特效时,可以将播放指令按顺序添加至分帧处理器中,通过分帧处理器每帧取出部分执行。
该实施例的创新点在于分帧处理技术和指令排序打包思想的结合,关键点在于指令排序打包。可选地,该实施例还可以采用以下方法进行实现:不自动化生成创建指令耗时配置,使用代码硬编码的形式替代;调整流程处理顺序,如进行指令排序打包后再添加到分帧处理器中;通过其他形式组织数据和流程,但最终实现思想也是对指令进行排序打包;该实施例还可以应用到APP开发领域,比如,ios应用开发等。
本发明实施例可以为用户提供更为流畅的游戏体验,对于高端设备如iphone手机,能保证表现效果的流畅度,对于低端设备如锤子手机,红米手机,大面积的消除不会造成太大的卡顿感,相比未做优化前大大提高的游戏的流畅度;相比于一帧创建一个对象的方案,相同时间内能够创建更多的对象;可以解决短时间内创建大量对象的造成的性能问题,降低设备发热速度,CPU曲线更平滑,较大波幅的情况更少;本发明技术方案还可以通过对创建指令进行打包排序解决传统方案中的出现相邻几个帧创建对象耗时有的很高有的很低,从CPU曲线上有较明显的波峰的问题。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
根据本发明实施例的另一方面,还提供了一种用于实施上述对象处理方法的对象处理装置。图22是根据本发明实施例的一种对象处理装置的示意图。如图22所示,该装置可以包括:获取单元10、排序单元20、分组单元30和执行单元40。
获取单元10,用于获取目标应用的多条创建指令,其中,创建指令用于指示创建目标应用的目标对象。
排序单元20,用于按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,其中,耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间。
分组单元30,用于对排序处理后的多条创建指令进行分组处理,得到多组创建指令,其中,每组创建指令包括多条创建指令中的至少一条创建指令,分别与每组创建指令包括的至少一条创建指令对应的耗时数据之和不超过预设阈值。
执行单元40,用于在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
需要说明的是,该实施例中的获取单元10可以用于执行本申请实施例中的步骤S302,该实施例中的排序单元20可以用于执行本申请实施例中的步骤S304,该实施例中的分组单元30可以用于执行本申请实施例中的步骤S306,该实施例中的执行单元40可以用于执行本申请实施例中的步骤S308。
该实施例通过获取单元10获取目标应用的多条创建指令,其中,创建指令用于指示创建目标应用的目标对象,通过排序单元20按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,其中,耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间,通过分组单元30对排序处理后的多条创建指令进行分组处理,得到多组创建指令,其中,每组创建指令包括多条创建指令中的至少一条创建指令,分别与每组创建指令包括的至少一条创建指令对应的耗时数据之和不超过预设阈值,通过执行单元40,用于在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。由于对创建指令进行排序打包,使得在一定时间内能够创建更多的对象,且在一定程度上能够使CPU曲线更平滑,提升了对象创建的流畅度,进而解决了相关技术中对象创建的流畅度低的技术问题。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图2所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
根据本发明实施例的另一方面,还提供了一种用于实施上述对象处理方法的电子装置。
图23是根据本发明实施例的一种电子装置的结构框图。如图23所示,该的电子装置可以包括:一个或多个(图中仅示出一个)处理器231、存储器233。可选地,如图23所示,该电子装置还可以包括传输装置235、输入输出设备237。
其中,存储器233可用于存储软件程序以及模块,如本发明实施例中的对象处理方法和装置对应的程序指令/模块,处理器231通过运行存储在存储器233内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的对象处理方法。存储器233可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器233可进一步包括相对于处理器231远程设置的存储器,这些远程存储器可以通过网络连接至电子装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置235用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置235包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置235为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器233用于存储应用程序。
处理器231可以通过传输装置235调用存储器233存储的应用程序,以执行下述步骤:
获取目标应用的多条创建指令,其中,创建指令用于指示创建目标应用的目标对象;
按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,其中,耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间;
对排序处理后的多条创建指令进行分组处理,得到多组创建指令,其中,每组创建指令包括多条创建指令中的至少一条创建指令,分别与每组创建指令包括的至少一条创建指令对应的耗时数据之和不超过预设阈值;
在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
处理器231还用于执行下述步骤:从配置文件中获取每条创建指令对应的耗时数据;按照预设顺序对每条创建指令对应的耗时数据进行排序,得到多条创建指令的排序结果。
处理器231还用于执行下述步骤:获取排序处理后的多条创建指令中的第一创建指令和第二创建指令,其中,第一创建指令和第二创建指令为未进行分组的创建指令;在第一创建指令对应的耗时数据和第二创建指令对应的耗时数据之和小于预设阈值的情况下,将第一创建指令和第二创建指令打包为一组创建指令,其中,预设阈值小于在处理目标应用的每帧数据时需要的时间。
处理器231还用于执行下述步骤:在预设顺序为由小到大顺序,或者为由大到小顺序的情况下,获取在排序处理后的多条创建指令中,位于正数第一序列位的第一创建指令和位于倒数第二序列位的第二创建指令。
处理器231还用于执行下述步骤:在从配置文件中获取每条创建指令对应的耗时数据之前,执行多条创建指令;记录开始执行每条创建指令的开始时间和结束执行每条创建指令的结束时间;获取由开始时间和结束时间得到的每条创建指令对应的耗时数据;获取由每条创建指令对应的耗时数据生成的配置文件,并将配置文件添加至目标应用中。
处理器231还用于执行下述步骤:将所有创建指令对应的耗时数据上传至服务器;获取由服务器对耗时数据进行处理得到的配置文件。
处理器231还用于执行下述步骤:解析目标应用中的待创建对象,得到解析结果,其中,待创建对象包括目标对象;由解析结果生成多条创建指令。
处理器231还用于执行下述步骤:至少解析目标应用中待创建对象的类型和数量,得到待创建对象的第一类型和第二数量,其中,解析结果包括第一类型和第二数量;由第一类型、第二数量、已创建对象的类型和数量确定需要创建的目标对象的第一数量和第二类型;生成用于指示创建第一数量和第二类型的目标对象的多条创建指令。
处理器231还用于执行下述步骤:在获取目标应用的多条创建指令之后,创建目标应用的每条创建指令的第一标识信息,并向每条创建指令配置第一标识信息;查找与第一标识信息对应的创建指令;执行查找到的与第一标识信息对应的创建指令,得到第一数量的目标对象。
处理器231还用于执行下述步骤:在获取目标应用的多条创建指令之后,获取第三数量创建指令;创建第三数量创建指令中每条创建指令的第二标识信息,并向第三数量创建指令中每条创建指令配置第二标识信息;查找与第二标识信息对应的创建指令;执行查找到的第二标识信息对应的创建指令,得到第三数量的目标对象。
处理器231还用于执行下述步骤:在获取目标应用的多条创建指令之后,且在按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理之前,添加多条创建指令至处理器中,其中,处理器用于处理目标应用的多帧数据;在处理器中,对排序处理后的多条创建指令进行分组处理,得到多组创建指令;在处理器处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
处理器231还用于执行下述步骤:在对排序处理后的多条创建指令进行分组处理,得到多组创建指令之后,添加多组创建指令至处理器中,其中,处理器用于处理目标应用的多帧数据;在处理器处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
采用本发明实施例,提供了一种对象处理的方案。通过获取目标应用的多条创建指令,创建指令用于指示创建目标应用的目标对象;按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间;对排序处理后的多条创建指令进行分组处理,得到多组创建指令,每组创建指令包括多条创建指令中的至少一条创建指令,分别与每组创建指令包括的至少一条创建指令对应的耗时数据之和不超过预设阈值;在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。由于对创建指令进行排序打包,使得在一定时间内能够创建更多的对象,且在一定程度上能够使CPU曲线更平滑,提升了对象创建的流畅度,进而解决了相关技术中对象创建的流畅度低的技术问题。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图23所示的结构仅为示意,电子装置可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等电子装置。图23其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图23中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图23所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令电子装置相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行对象处理方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
获取目标应用的多条创建指令,其中,创建指令用于指示创建目标应用的目标对象;
按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理,其中,耗时数据用于指示每条创建指令在指示创建目标应用的一个目标对象时需要消耗的时间;
对排序处理后的多条创建指令进行分组处理,得到多组创建指令,其中,每组创建指令包括多条创建指令中的至少一条创建指令,分别与每组创建指令包括的至少一条创建指令对应的耗时数据之和不超过预设阈值;
在处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:从配置文件中获取每条创建指令对应的耗时数据;按照预设顺序对每条创建指令对应的耗时数据进行排序,得到多条创建指令的排序结果。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:获取排序处理后的多条创建指令中的第一创建指令和第二创建指令,其中,第一创建指令和第二创建指令为未进行分组的创建指令;在第一创建指令对应的耗时数据和第二创建指令对应的耗时数据之和小于预设阈值的情况下,将第一创建指令和第二创建指令打包为一组创建指令,其中,预设阈值小于在处理目标应用的每帧数据时需要的时间。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在预设顺序为由小到大顺序,或者为由大到小顺序的情况下,获取在排序处理后的多条创建指令中,位于正数第一序列位的第一创建指令和位于倒数第二序列位的第二创建指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在从配置文件中获取每条创建指令对应的耗时数据之前,执行多条创建指令;记录开始执行每条创建指令的开始时间和结束执行每条创建指令的结束时间;获取由开始时间和结束时间得到的每条创建指令对应的耗时数据;获取由每条创建指令对应的耗时数据生成的配置文件,并将配置文件添加至目标应用中。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:将所有创建指令对应的耗时数据上传至服务器;获取由服务器对耗时数据进行处理得到的配置文件。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:解析目标应用中的待创建对象,得到解析结果,其中,待创建对象包括目标对象;由解析结果生成多条创建指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:至少解析目标应用中待创建对象的类型和数量,得到待创建对象的第一类型和第二数量,其中,解析结果包括第一类型和第二数量;由第一类型、第二数量、已创建对象的类型和数量确定需要创建的目标对象的第一数量和第二类型;生成用于指示创建第一数量和第二类型的目标对象的多条创建指令。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在获取目标应用的多条创建指令之后,创建目标应用的每条创建指令的第一标识信息,并向每条创建指令配置第一标识信息;查找与第一标识信息对应的创建指令;执行查找到的与第一标识信息对应的创建指令,得到第一数量的目标对象。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在获取目标应用的多条创建指令之后,获取第三数量创建指令;创建第三数量创建指令中每条创建指令的第二标识信息,并向第三数量创建指令中每条创建指令配置第二标识信息;查找与第二标识信息对应的创建指令;执行查找到的第二标识信息对应的创建指令,得到第三数量的目标对象。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在获取目标应用的多条创建指令之后,且在按照与每条创建指令对应的耗时数据对多条创建指令进行排序处理之前,添加多条创建指令至处理器中,其中,处理器用于处理目标应用的多帧数据;在处理器中,对排序处理后的多条创建指令进行分组处理,得到多组创建指令;在处理器处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在对排序处理后的多条创建指令进行分组处理,得到多组创建指令之后,添加多组创建指令至处理器中,其中,处理器用于处理目标应用的多帧数据;在处理器处理目标应用的多帧数据的过程中,执行多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的目标对象。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (15)

1.一种对象处理方法,其特征在于,包括:
获取目标应用的多条创建指令,其中,所述创建指令用于指示创建所述目标应用的目标对象;
按照与每条所述创建指令对应的耗时数据对所述多条创建指令进行排序处理,其中,所述耗时数据用于指示每条所述创建指令在指示创建所述目标应用的一个所述目标对象时需要消耗的时间;
对排序处理后的所述多条创建指令进行分组处理,得到多组创建指令,其中,每组创建指令包括所述多条创建指令中的至少一条创建指令,每组所述创建指令的耗时数据之和不超过预设阈值;
在处理所述目标应用的多帧数据的过程中,执行所述多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的所述目标对象。
2.根据权利要求1所述的方法,其特征在于,按照与每条所述创建指令对应的耗时数据对所述多条创建指令进行排序处理包括:
从配置文件中获取每条所述创建指令对应的所述耗时数据;
按照预设顺序对每条所述创建指令对应的耗时数据进行排序,得到所述多条创建指令的排序结果。
3.根据权利要求2所述的方法,其特征在于,对排序处理后的所述多条创建指令进行分组处理,得到所述多组创建指令包括:
获取排序处理后的所述多条创建指令中的第一创建指令和第二创建指令,其中,所述第一创建指令和所述第二创建指令为未进行分组的创建指令;
在所述第一创建指令对应的耗时数据和所述第二创建指令对应的耗时数据之和小于所述预设阈值的情况下,将所述第一创建指令和所述第二创建指令打包为一组创建指令,其中,所述预设阈值小于在处理所述目标应用的每帧数据时需要的时间。
4.根据权利要求3所述的方法,其特征在于,获取排序处理后的所述多条创建指令中的所述第一创建指令和所述第二创建指令包括:
在所述预设顺序为由小到大顺序,或者为由大到小顺序的情况下,获取在排序处理后的所述多条创建指令中,位于正数第一序列位的所述第一创建指令和位于倒数第二序列位的所述第二创建指令。
5.根据权利要求2所述的方法,其特征在于,在从所述配置文件中获取每条所述创建指令对应的所述耗时数据之前,所述方法还包括:
执行所述多条创建指令;
记录开始执行每条所述创建指令的开始时间和结束执行每条所述创建指令的结束时间;
获取由所述开始时间和所述结束时间得到的每条所述创建指令对应的所述耗时数据;
获取由每条所述创建指令对应的所述耗时数据生成的所述配置文件,并将所述配置文件添加至所述目标应用中。
6.根据权利要求5所述的方法,其特征在于,获取由每条所述创建指令对应的所述耗时数据生成的所述配置文件包括:
将所有所述创建指令对应的所述耗时数据上传至服务器;
获取由所述服务器对所述耗时数据进行处理得到的所述配置文件。
7.根据权利要求1所述的方法,其特征在于,获取所述目标应用的所述多条创建指令包括:
解析所述目标应用中的待创建对象,得到解析结果,其中,所述待创建对象包括所述目标对象;
由所述解析结果生成所述多条创建指令。
8.根据权利要求7所述的方法,其特征在于,
解析所述目标应用中的所述待创建对象,得到所述解析结果包括:至少解析所述目标应用中所述待创建对象的类型和数量,得到所述待创建对象的第一类型和第二数量,其中,所述解析结果包括所述第一类型和所述第二数量;
由所述解析结果生成所述多条创建指令包括:由所述第一类型、所述第二数量、已创建对象的类型和数量确定需要创建的所述目标对象的所述第一数量和第二类型;生成用于指示创建所述第一数量和所述第二类型的所述目标对象的所述多条创建指令。
9.根据权利要求1所述的方法,其特征在于,在获取所述目标应用的所述多条创建指令之后,所述方法还包括:
创建所述目标应用的每条创建指令的第一标识信息,并向每条所述创建指令配置所述第一标识信息;
执行所述多组创建指令中与所述每帧数据对应的一组创建指令,得到所述第一数量的目标对象包括:查找与所述第一标识信息对应的创建指令;执行查找到的与所述第一标识信息对应的所述创建指令,得到所述第一数量的目标对象。
10.根据权利要求1所述的方法,其特征在于,在获取所述目标应用的所述多条创建指令之后,所述方法还包括:
获取第三数量创建指令;
创建所述第三数量创建指令中每条创建指令的第二标识信息,并向所述第三数量创建指令中每条创建指令配置所述第二标识信息;
查找与所述第二标识信息对应的创建指令;
执行查找到的所述第二标识信息对应的所述创建指令,得到第三数量的目标对象。
11.根据权利要求1至10中任意一项所述的方法,其特征在于,
在获取所述目标应用的所述多条创建指令之后,且在按照与每条所述创建指令对应的耗时数据对所述多条创建指令进行排序处理之前,所述方法还包括:添加所述多条创建指令至处理器中,其中,所述处理器用于处理所述目标应用的所述多帧数据;
对排序处理后的所述多条创建指令进行分组处理,得到所述多组创建指令包括:在所述处理器中,对排序处理后的所述多条创建指令进行分组处理,得到所述多组创建指令;
在处理所述目标应用的所述多帧数据的过程中,执行所述多组创建指令中与所述每帧数据对应的一组创建指令,得到所述第一数量的目标对象包括:在所述处理器处理所述目标应用的所述多帧数据的过程中,执行所述多组创建指令中与所述每帧数据对应的一组创建指令,得到所述第一数量的目标对象。
12.根据权利要求1至10中任意一项所述的方法,其特征在于,在对排序处理后的所述多条创建指令进行分组处理,得到所述多组创建指令之后,所述方法还包括:
添加所述多组创建指令至处理器中,其中,所述处理器用于处理所述目标应用的所述多帧数据;
在处理所述目标应用的所述多帧数据的过程中,执行所述多组创建指令中与所述每帧数据对应的一组创建指令,得到所述第一数量的目标对象包括:在所述处理器处理所述目标应用的所述多帧数据的过程中,执行所述多组创建指令中与所述每帧数据对应的一组创建指令,得到所述第一数量的目标对象。
13.一种对象处理装置,其特征在于,包括:
获取单元,用于获取目标应用的多条创建指令,其中,所述创建指令用于指示创建所述目标应用的目标对象;
排序单元,用于按照与每条所述创建指令对应的耗时数据对所述多条创建指令进行排序处理,其中,所述耗时数据用于指示每条所述创建指令在指示创建所述目标应用的一个所述目标对象时需要消耗的时间;
分组单元,用于对排序处理后的所述多条创建指令进行分组处理,得到多组创建指令,其中,每组创建指令包括所述多条创建指令中的至少一条创建指令,每组所述创建指令的耗时数据之和不超过预设阈值;
执行单元,用于在处理所述目标应用的多帧数据的过程中,执行所述多组创建指令中与每帧数据对应的一组创建指令,得到第一数量的所述目标对象。
14.一种计算机可读的存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行所述权利要求1至12任一项中所述的对象处理方法。
15.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行所述权利要求1至12任一项中所述的对象处理方法。
CN201710942253.4A 2017-10-11 2017-10-11 对象处理方法、装置、存储介质和电子装置 Active CN109646949B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710942253.4A CN109646949B (zh) 2017-10-11 2017-10-11 对象处理方法、装置、存储介质和电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710942253.4A CN109646949B (zh) 2017-10-11 2017-10-11 对象处理方法、装置、存储介质和电子装置

Publications (2)

Publication Number Publication Date
CN109646949A CN109646949A (zh) 2019-04-19
CN109646949B true CN109646949B (zh) 2021-06-08

Family

ID=66109663

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710942253.4A Active CN109646949B (zh) 2017-10-11 2017-10-11 对象处理方法、装置、存储介质和电子装置

Country Status (1)

Country Link
CN (1) CN109646949B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110288689B (zh) * 2019-06-20 2020-09-01 北京三快在线科技有限公司 对电子地图进行渲染的方法和装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101073070A (zh) * 2004-08-24 2007-11-14 塞门铁克操作公司 提供数据存储器内位置的修改历史的系统和方法
CN102461163A (zh) * 2009-06-15 2012-05-16 奥林巴斯株式会社 图像发送装置和图像接收装置
WO2013027725A1 (ja) * 2011-08-24 2013-02-28 株式会社コナミデジタルエンタテインメント ゲーム機、それに用いられる制御方法及び、コンピュータプログラム
CN103902805A (zh) * 2012-12-26 2014-07-02 索尼电脑娱乐美国公司 基于标签内容和社交网络内容对云执行迷你游戏进行排名的系统和方法
WO2015171029A1 (en) * 2014-05-08 2015-11-12 Telefonaktiebolaget L M Ericsson (Publ) Method, apparatus and communication device for handling broadcasted or multicasted content
CN105763825A (zh) * 2016-04-12 2016-07-13 杭州电魂网络科技股份有限公司 一种对帧同步录像功能进行优化的方法
CN105868079A (zh) * 2016-04-21 2016-08-17 中国矿业大学 一种基于内存使用传播分析的Java内存低效使用检测方法
CN106251390A (zh) * 2016-08-15 2016-12-21 网易(杭州)网络有限公司 动画编辑方法和动画编辑装置
CN106325664A (zh) * 2015-06-30 2017-01-11 广州华多网络科技有限公司 图像显示方法及装置
CN106412277A (zh) * 2016-09-26 2017-02-15 腾讯科技(深圳)有限公司 虚拟场景的加载方法和装置

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101073070A (zh) * 2004-08-24 2007-11-14 塞门铁克操作公司 提供数据存储器内位置的修改历史的系统和方法
CN102461163A (zh) * 2009-06-15 2012-05-16 奥林巴斯株式会社 图像发送装置和图像接收装置
WO2013027725A1 (ja) * 2011-08-24 2013-02-28 株式会社コナミデジタルエンタテインメント ゲーム機、それに用いられる制御方法及び、コンピュータプログラム
CN103902805A (zh) * 2012-12-26 2014-07-02 索尼电脑娱乐美国公司 基于标签内容和社交网络内容对云执行迷你游戏进行排名的系统和方法
WO2015171029A1 (en) * 2014-05-08 2015-11-12 Telefonaktiebolaget L M Ericsson (Publ) Method, apparatus and communication device for handling broadcasted or multicasted content
CN106325664A (zh) * 2015-06-30 2017-01-11 广州华多网络科技有限公司 图像显示方法及装置
CN105763825A (zh) * 2016-04-12 2016-07-13 杭州电魂网络科技股份有限公司 一种对帧同步录像功能进行优化的方法
CN105868079A (zh) * 2016-04-21 2016-08-17 中国矿业大学 一种基于内存使用传播分析的Java内存低效使用检测方法
CN106251390A (zh) * 2016-08-15 2016-12-21 网易(杭州)网络有限公司 动画编辑方法和动画编辑装置
CN106412277A (zh) * 2016-09-26 2017-02-15 腾讯科技(深圳)有限公司 虚拟场景的加载方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
利用matlab将视频分帧成图片或将图片转成视频;xiao__run;《https://blog.csdn.net/xiao__run/article/details/76343826》;20170729;全文 *

Also Published As

Publication number Publication date
CN109646949A (zh) 2019-04-19

Similar Documents

Publication Publication Date Title
Valente et al. Mapping quality requirements for pervasive mobile games
CN111104635B (zh) 一种表格网页的生成方法和装置
CN110809175B (zh) 视频推荐方法及装置
CN107071587A (zh) 视频片段的获取方法及装置
JP2019518257A (ja) 状態制御方法及び装置
CN110035325A (zh) 弹幕回复方法、弹幕回复装置和直播设备
CN110851043B (zh) 页面显示方法和装置、存储介质及电子装置
CN104598602A (zh) 通过计算机实现的基于场景的信息推荐方法及装置
CN108549560A (zh) 界面状态的切换方法和装置、存储介质、电子装置
CN117319441B (zh) 一种元宇宙的远程互动方法及系统
CN109646949B (zh) 对象处理方法、装置、存储介质和电子装置
CN107609065B (zh) 一种游戏分类方法、装置及电子设备
CN108616768B (zh) 多媒体资源的同步播放方法、装置、存储位置及电子装置
CN113938696A (zh) 基于自定义虚拟礼物的直播互动方法、系统及计算机设备
CN103413018A (zh) 动态锻炼内容
CN108710514B (zh) 对象跳转控制方法和装置、存储介质及电子装置
CN106682014A (zh) 游戏展示数据的生成方法和装置
CN108718424A (zh) 基于移动终端的二维码信息共享方法
CN109905753A (zh) 角标的显示方法和装置、存储介质、电子装置
CN106294395B (zh) 一种任务处理的方法及装置
CN106954323A (zh) 一种基于台灯的信息共享系统及方法
CN102752233A (zh) 一种体育赛事远程信息提示的方法及系统
US20120278739A1 (en) System and method of triggering periodic events within an instance of a virtual space
JP7182870B2 (ja) ゲームプログラム、及びサーバー装置
CN107613364B (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