本发明涉及计算机游戏技术领域,特别涉及一种获取游戏模块性能占用率的方法及系统。
背景技术:
目前手机游戏广受大众欢迎,而大部分手机游戏使用unity商业引擎进行开发。一个unity游戏项目,是有许多的模块组成的,渲染,物理,逻辑,音乐等。大量模块,大量功能的实现,都会导致游戏性能下降,导致游戏的卡顿。游戏运行的流畅程度,直接影响游戏用户的接受程度,与游戏的体验,且对低端游戏设备影响更为严重。
所以每个游戏开发团队,都需要在游戏开发中,投入大量的人力和时间,进行游戏性能的分析与优化。所以需要一种快速的方式,去获取游戏运行时,游戏各个模块的性能占比,进而进行针对性的性能分析,快速优化。
技术实现要素:
为至少解决现有技术中存在的技术问题之一,本发明的目的在于提供一种获取游戏模块性能占用率的方法及系统,通过游戏源码获取各个功能模块的入口,根据对应入口获取游戏运行时各功能模块的性能占用信息。
本发明解决其问题所采用的技术方案第一方面是:一种获取游戏模块性能占用率的方法,其特征在于,包括以下步骤:s10、遍历游戏资源,获取各个功能模块的信息;s20、根据各个所述功能模块的入口,调用接口接入所述入口获取实时信息;s30、模拟游戏运行,通过所述接口获取各个所述功能模块的占用时间信息。
有益效果:本发明提供基于自动化分析游戏引擎各个模块的性能消耗,可以对各个模块性能消耗进行统计排序,进而进行针对性的优化,为游戏的优化提供了准确,必要的数据支撑,而且只要是使用相同引擎开发的游戏,都完全通用,快速生成数据,无需投入人力。
根据本发明第一方面所述的,s10还包括:s11、遍历游戏引擎源代码,确定所述各个功能模块的信息,其中所述功能模块包括但不限于渲染模块、物理模块、逻辑模块以及音乐模块。
根据本发明第一方面所述的,s20还包括:s21、在各个所述功能模块中添加时间统计代码,根据各个所述入口获取对应所述功能模块的实时信息。
根据本发明第一方面所述的,s20还包括:s22、对各个所述功能模块进行二次划分,得到以所述功能模块为父模块的一个以上的功能子模块;s23、在各个所述功能子模块中添加时间统计代码,根据各个所述入口获取对应所述功能子模块的实时信息。
根据本发明第一方面所述的,s30还包括:s31、设置运行时间并模拟游戏运行,统计所述接口获取的各个所述功能模块的占用时间,基于所述运行时间得到各个所述功能模块的时间占比。
根据本发明第一方面所述的方法,还包括:s40、根据所述占用时间信息,得到各个所述功能模块的性能消耗信息,其中所述占用时间信息与所述性能消耗信息呈正相关;s50、以所述占用时间长短对对应的所述功能模块进行排序,得到性能消耗排序表,将所述功能模块的优化优先级高低按照所述性能消耗排序表进行设置。
根据本发明第一方面所述的,模拟游戏运行包括调用脚本模拟游戏运行和真人试玩游戏。
本发明解决其问题所采用的技术方案第二方面是:一种获取游戏模块性能占用率的系统,其特征在于,包括:遍历模块,用于遍历游戏资源,获取各个功能模块的信息;调用模块,用于根据各个所述功能模块的入口,调用接口接入所述入口获取实时信息;模拟运行模块,用于模拟游戏运行,通过所述接口获取各个所述功能模块的占用时间信息。
有益效果:本发明提供基于自动化分析游戏引擎各个模块的性能消耗,可以对各个模块性能消耗进行统计排序,进而进行针对性的优化,为游戏的优化提供了准确,必要的数据支撑,而且只要是使用相同引擎开发的游戏,都完全通用,快速生成数据,无需投入人力。
根据本发明第二方面所述的,调用模块还包括:划分模块,用于对各个所述功能模块进行二次划分,得到以所述功能模块为父模块的一个以上的功能子模块;代码插入单元,用于在各个所述功能模块中添加时间统计代码,根据各个所述入口获取对应所述功能模块的实时信息。
根据本发明第二方面所述的系统,还包括:
性能消耗记录模块,用于根据所述占用时间信息,得到各个所述功能模块的性能消耗信息,其中所述占用时间信息与所述性能消耗信息呈正相关;性能消耗分析模块,用于以占用时间的长短对对应的所述功能模块进行排序,得到性能消耗排序表,将所述功能模块的优化优先级高低按照所述性能消耗排序表进行设置。
附图说明
图1是根据本发明优选实施例的方法流程示意图;
图2是根据本发明优选实施例的系统结构示意图。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。
术语解释:
1.模块:一个游戏由许多不同的部分组成,如渲染,物理,音乐。
2.物理:游戏中用于模拟现实世界中的物理现象的模块,如走到墙时会撞到,停下等。
3.渲染:游戏中用于绘制我们在屏幕上看到最终画面的模块。
参照图1,是根据本发明优选实施例的方法流程示意图:
包括以下步骤:
s10、遍历游戏资源,获取各个功能模块的信息;
s20、根据各个所述功能模块的入口,调用接口接入入口获取实时信息;
s30、模拟游戏运行,通过接口获取各个功能模块的占用时间信息。
s10还包括:s11、遍历游戏引擎源代码,确定各个功能模块的信息,其中功能模块包括但不限于渲染模块、物理模块、逻辑模块以及音乐模块。
s20还包括:s21、在各个功能模块中添加时间统计代码,根据各个入口获取对应功能模块的实时信息。
s20还包括:s22、对各个功能模块进行二次划分,得到以功能模块为父模块的一个以上的功能子模块;s23、在各个功能子模块中添加时间统计代码,根据各个入口获取对应功能子模块的实时信息。
s30还包括:s31、设置运行时间并模拟游戏运行,统计接口获取的各个功能模块的占用时间,基于运行时间得到各个功能模块的时间占比。
还包括:s40、根据占用时间信息,得到各个功能模块的性能消耗信息,其中占用时间信息与性能消耗信息呈正相关;s50、以占用时间长短对对应的功能模块进行排序,得到性能消耗排序表,将功能模块的优化优先级高低按照性能消耗排序表进行设置。
模拟游戏运行包括调用脚本模拟游戏运行和真人试玩游戏。
综合来说即:
第一步:确定unity源码各个模块的入口,在各个模块添加时间统计代码。可以根据需求,进一步的对每个大模块的小模块进行划分,独立监测
第二步:通过机器人模拟或真人试玩等方式,对游戏进行模拟运行。获取一段时间后,对结果进行保存。
第三步:通过脚本语言python,对数据进行自动化处理与分析,获得各个模块的时间消耗占比。
第四步:根据时间占比消耗,进行针对性的性能优化。
参照图2,是根据本发明优选实施例的系统结构示意图:
包括:
遍历模块,用于遍历游戏资源,获取各个功能模块的信息;
调用模块,用于根据各个功能模块的入口,调用接口接入入口获取实时信息;
模拟运行模块,用于模拟游戏运行,通过接口获取各个功能模块的占用时间信息。
调用模块还包括:
划分模块,用于对各个功能模块进行二次划分,得到以功能模块为父模块的一个以上的功能子模块;
代码插入单元,用于在各个功能模块中添加时间统计代码,根据各个入口获取对应功能模块的实时信息。
还包括:
性能消耗记录模块,用于根据占用时间信息,得到各个功能模块的性能消耗信息,其中占用时间信息与性能消耗信息呈正相关;
性能消耗分析模块,用于以占用时间的长短对对应的功能模块进行排序,得到性能消耗排序表,将功能模块的优化优先级高低按照性能消耗排序表进行设置。
以fps类型的unity游戏为例:
第一步:使用添加了我们统计代码的unity编辑器。
第二步:在各个模块(渲染,物理,音乐)中添加时间统计,可以根据项目需求,添加更详细的时间统计(如物理可以划分更详细的模块,碰撞,射线检测等)。
第三步:在unity引擎中运行游戏,生成性能数据,各个模块的时间消耗。
第四步:使用python脚本,统计各个模块的性能消耗数据,进而进行性能分析。
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术-包括配置有计算机程序的非暂时性计算机可读存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作——根据在具体实施例中描述的方法和附图。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、ram、rom等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。
1.一种获取游戏模块性能占用率的方法,其特征在于,包括以下步骤:
s10、遍历游戏资源,获取各个功能模块的信息;
s20、根据各个所述功能模块的入口,调用接口接入所述入口获取实时信息;
s30、模拟游戏运行,通过所述接口获取各个所述功能模块的占用时间信息。
2.根据权利要求1所述的获取游戏模块性能占用率的方法,其特征在于,所述s10还包括:
s11、遍历游戏引擎源代码,确定所述各个功能模块的信息,其中所述功能模块包括但不限于渲染模块、物理模块、逻辑模块以及音乐模块。
3.根据权利要求1所述的获取游戏模块性能占用率的方法,其特征在于,所述s20还包括:
s21、在各个所述功能模块中添加时间统计代码,根据各个所述入口获取对应所述功能模块的实时信息。
4.根据权利要求3所述的获取游戏模块性能占用率的方法,其特征在于,所述s20还包括:
s22、对各个所述功能模块进行二次划分,得到以所述功能模块为父模块的一个以上的功能子模块;
s23、在各个所述功能子模块中添加时间统计代码,根据各个所述入口获取对应所述功能子模块的实时信息。
5.根据权利要求1所述的获取游戏模块性能占用率的方法,其特征在于,所述s30还包括:
s31、设置运行时间并模拟游戏运行,统计所述接口获取的各个所述功能模块的占用时间,基于所述运行时间得到各个所述功能模块的时间占比。
6.根据权利要求1所述的获取游戏模块性能占用率的方法,其特征在于,还包括:
s40、根据所述占用时间信息,得到各个所述功能模块的性能消耗信息,其中所述占用时间信息与所述性能消耗信息呈正相关;
s50、以所述占用时间长短对对应的所述功能模块进行排序,得到性能消耗排序表,将所述功能模块的优化优先级高低按照所述性能消耗排序表进行设置。
7.根据权利要求1或6所述的获取游戏模块性能占用率的方法,其特征在于,所述模拟游戏运行包括调用脚本模拟游戏运行和真人试玩游戏。
8.一种获取游戏模块性能占用率的系统,其特征在于,包括:
遍历模块,用于遍历游戏资源,获取各个功能模块的信息;
调用模块,用于根据各个所述功能模块的入口,调用接口接入所述入口获取实时信息;
模拟运行模块,用于模拟游戏运行,通过所述接口获取各个所述功能模块的占用时间信息。
9.根据权利要求8所述的获取游戏模块性能占用率的系统,其特征在于,所述调用模块还包括:
划分模块,用于对各个所述功能模块进行二次划分,得到以所述功能模块为父模块的一个以上的功能子模块;
代码插入单元,用于在各个所述功能模块中添加时间统计代码,根据各个所述入口获取对应所述功能模块的实时信息。
10.根据权利要求8所述的获取游戏模块性能占用率的系统,其特征在于,还包括:
性能消耗记录模块,用于根据所述占用时间信息,得到各个所述功能模块的性能消耗信息,其中所述占用时间信息与所述性能消耗信息呈正相关;
性能消耗分析模块,用于以占用时间的长短对对应的所述功能模块进行排序,得到性能消耗排序表,将所述功能模块的优化优先级高低按照所述性能消耗排序表进行设置。
技术总结