CN108721898B - 帧率的确定方法和装置、存储介质、电子装置 - Google Patents
帧率的确定方法和装置、存储介质、电子装置 Download PDFInfo
- Publication number
- CN108721898B CN108721898B CN201810558368.8A CN201810558368A CN108721898B CN 108721898 B CN108721898 B CN 108721898B CN 201810558368 A CN201810558368 A CN 201810558368A CN 108721898 B CN108721898 B CN 108721898B
- Authority
- CN
- China
- Prior art keywords
- frame rate
- game
- rendering
- engine
- frame
- 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
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
- A63F13/69—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by enabling or updating specific game elements, e.g. unlocking hidden features, items, levels or versions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- General Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Debugging And Monitoring (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种帧率的确定方法和装置、存储介质、电子装置。其中,该方法包括:获取第一请求,其中,第一请求用于请求获取客户端中运行的网页游戏的帧率;响应于第一请求,获取第一渲染操作在目标时间段内的执行次数,其中,第一渲染操作用于客户端的渲染引擎根据更新信息渲染出网页游戏的一帧游戏画面,更新信息为网页游戏的游戏引擎向渲染引擎发送的用于更新一帧游戏画面的信息;根据执行次数和目标时间段的时间长度确定网页游戏的帧率。本发明解决了相关技术中统计的游戏画面的帧率的准确率较低的技术问题。
Description
技术领域
本发明涉及互联网领域,具体而言,涉及一种帧率的确定方法和装置、存储介质、电子装置。
背景技术
目前,互联网已经形成规模,互联网应用走向多元化。互联网越来越深刻地改变着人们的学习、工作以及生活方式,甚至影响着整个社会进程。
在互联网的应用中,随着智能设备的普及,用户娱乐的方式发生了较大变化,用户的游戏娱乐从传统的游戏机转向了以智能设备为载体的方式,游戏服务,尤其是网页游戏成为热门并逐步成为主流的游戏服务方式。游戏服务是一个非常核心的服务,为了保证服务质量,需要统计游戏过程中的游戏动画的帧率,然而,相关技术中的统计方式并不能准确统计游戏画面的帧率。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种帧率的确定方法和装置、存储介质、电子装置,以至少解决相关技术中统计的游戏画面的帧率的准确率较低的技术问题。
根据本发明实施例的一个方面,提供了一种帧率的确定方法,包括:获取第一请求,其中,第一请求用于请求获取客户端中运行的网页游戏的帧率;响应于第一请求,获取第一渲染操作在目标时间段内的执行次数,其中,第一渲染操作用于客户端的渲染引擎根据更新信息渲染出网页游戏的一帧游戏画面,更新信息为网页游戏的游戏引擎向渲染引擎发送的用于更新一帧游戏画面的信息;根据执行次数和目标时间段的时间长度确定网页游戏的帧率。
根据本发明实施例的另一方面,还提供了一种帧率的确定装置,包括:第一获取单元,用于获取第一请求,其中,第一请求用于请求获取客户端中运行的网页游戏的帧率;第二获取单元,用于响应于第一请求,获取第一渲染操作在目标时间段内的执行次数,其中,第一渲染操作用于客户端的渲染引擎根据更新信息渲染出网页游戏的一帧游戏画面,更新信息为网页游戏的游戏引擎向渲染引擎发送的用于更新一帧游戏画面的信息;确定单元,用于根据执行次数和目标时间段的时间长度确定网页游戏的帧率。
根据本发明实施例的另一方面,还提供了一种存储介质,该存储介质包括存储的程序,程序运行时执行上述的方法。
根据本发明实施例的另一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器通过计算机程序执行上述的方法。
在本发明实施例中,在获取第一请求时,获取第一渲染操作在目标时间段内的执行次数,第一渲染操作用于客户端的渲染引擎根据更新信息渲染出网页游戏的一帧游戏画面,更新信息为网页游戏的游戏引擎向渲染引擎发送的用于更新一帧游戏画面的信息;根据执行次数和目标时间段的时间长度确定网页游戏的帧率,由于统计的是进行了有效游戏画面内容更新的渲染操作,进而可以准确地统计出有效的帧率,可以解决相关技术中统计的游戏画面的帧率的准确率较低的技术问题,进而达到准确统计游戏画面的有效帧率的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的游戏架构的示意图;
图2是根据本发明实施例的帧率的确定方法的硬件环境的示意图;
图3是根据本发明实施例的一种可选的帧率的确定方法的流程图;
图4是根据本发明实施例的一种可选的游戏画面重绘的示意图;
图5是根据本发明实施例的一种可选的游戏画面重绘的示意图;
图6是根据本发明实施例的一种可选的游戏画面重绘的示意图;
图7是根据本发明实施例的一种可选的游戏画面重绘的示意图;
图8是根据本发明实施例的一种可选的游戏画面重绘的示意图;
图9是根据本发明实施例的一种可选的游戏画面的示意图;
图10是根据本发明实施例的一种可选的游戏画面帧率的示意图;
图11是根据本发明实施例的一种可选的游戏画面帧率的示意图;
图12是根据本发明实施例的一种可选的游戏画面帧率的示意图;
图13是根据本发明实施例的一种可选的游戏画面的示意图;
图14是根据本发明实施例的一种可选的游戏画面帧率的示意图;
图15是根据本发明实施例的一种可选的游戏画面帧率的示意图;
图16是根据本发明实施例的一种可选的游戏画面帧率的示意图;
图17是根据本发明实施例的一种可选的游戏画面帧率的示意图;
图18是根据本发明实施例的一种可选的游戏画面帧率的示意图;
图19是根据本发明实施例的一种可选的游戏画面帧率的示意图;
图20是根据本发明实施例的一种可选的帧率的确定装置的示意图;以及
图21是根据本发明实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本发明实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
应用游戏(或称App游戏),是以独立应用App的形式运行在终端(如移动端)上的游戏,App通常由游戏引擎工具生成。
H5游戏:是一种基于浏览器内核实现的游戏,如运行在浏览器、网页视图webview中的游戏,是利用HTML5等浏览器内核的技术特性操作的游戏。
帧率(FPS),游戏每秒钟刷新的帧数(Frame Per Second)。
根据本发明实施例的一方面,对于运行的游戏,提供了以下两种帧率采集的技术方案:
其一是基于游戏引擎层采集,其二是基于终端系统层采集。下面以安卓Android系统为例,来介绍这两种技术方案。
在安卓系统上,如图1所示,示出了应用游戏和H5游戏的帧数据传输过程,系统层分为opengl层(即游戏引擎层)和surfaceflinger(是一个独立的进程,是属于安卓系统中显示系统的核心服务)层(即窗口服务层),于是对于App游戏,有如下几种方法来获取帧率:
1)游戏引擎层,通过update()、WaitForEndOfFrame()函数来计算帧率;2)终端系统层,从opengl层采集,通过eglSwapBuffers()函数计算帧率;3)终端系统层,从SurfaceFlinger层采集,通过service call SurfaceFlinger1013命令,或通过dumpsysSurfaceFlinger--latency layername命令来计算帧率。
对于H5游戏,应用如下几种技术方案可以采集的到帧率数据:1)游戏引擎层采集,可通过H5游戏引擎的更新update入口,从H5游戏的引擎层采集帧率;2)终端系统层采集,系统层采集的帧率不依赖于游戏的实现,可以采集到H5游戏容器的帧率。
依然以安卓系统为例,H5游戏可以运行在社交应用、即时通讯应用和浏览器中,在应用移动端游戏的帧率采集方案中,H5游戏可以采集到三种帧率:游戏引擎层,通过统计update入口函数来计算帧率,简称engine-fps;终端系统层,从opengl层采集帧率,简称opengl-fps;终端系统层,从SurfaceFlinger层采集帧率,简称surfaceflinger-fps。
此外,当H5游戏运行在浏览器引擎中时,还可以采集到如下帧率:4)浏览器引擎层帧率,打开浏览器开发者调试模式后,通过调试协议得到的浏览器的事件,从中获取绘帧相关事件,计算帧率,简称devtools-fps。在该技术方案中,获取帧率的原理为,计算机PC端通过通用串行总线USB与移动端链接,打开移动端浏览器或浏览器开发者调试模式,PC端通过“Tracing”调试协议(该协议用于当网页运行时捕获并显示关于网页的调试信息),获取浏览器事件,从中过滤出绘帧相关事件,计算出帧率;5)获取浏览器引擎可重绘的频率,也即webview或浏览器可重绘的频率,简称reqAF-fps。
上述技术方案中,是将webview或浏览器可重绘的频率来当做H5游戏的帧率,获取帧率的原理是利用window.requestAnimationFrame(callback)方法来进行统计,文中简称为reqAF-fps。
window.requestAnimationFrame(callback)方法告诉浏览器希望执行动画并请求浏览器在下一次重绘之前调用指定的函数来更新动画,该方法使用一个回调函数作为参数,这个回调函数会在浏览器重绘之前调用。
在callback方法中,调用window.requestAnimationFrame(callback),形成循环,则每次浏览器引擎可重绘之前,都会调用callback,便能不断统计浏览器引擎可重绘的频率。
由于H5游戏的帧与帧之间不连续,利用上述技术方案采集到的帧率,仅统计帧率不能反映H5游戏的绘帧状态。
此外,在上述的帧率统计方法中,存在不准确的问题、可行性问题,以及对平台系统的依赖性较强的问题:1)采集游戏引擎层帧率,存在不准确的问题,H5游戏的绘帧依赖于浏览器引擎的重绘,游戏引擎可能存在无效绘帧,所以游戏引擎层的获得的帧率也存在不准确的问题;2)采集终端系统层帧率存在不准确的问题,从移动端系统的采集的帧率是H5游戏容器的帧率,即浏览器或webview宿主应用的帧率,对于H5游戏而言,帧率数据并不准确;3)采集浏览器引擎层帧率的方案可行性差,浏览器引擎需要打开调试模式,且不能连续计算帧率,同时在采集过程,会影响浏览器或宿主应用进程的内存、中央处理器CPU的使用率;4)采集浏览器引擎可重绘的频率,并不是帧率数据;5)上述若干方案依赖于系统状态,如在安卓opengl层获取帧率,需要系统为root(即系统根权限)状态,如iOS平台下系统层获取帧率,需要系统为越狱状态;如浏览器引擎层帧率,依赖于浏览器引擎打开调试模式等。
为了克服以上方案中的问题,根据本发明实施例的一方面,提供了一种帧率的确定方法的方法实施例。
可选地,在本实施例中,上述帧率的确定方法可以应用于如图2所示的由服务器201和终端203所构成的硬件环境中。如图2所示,服务器201通过网络与终端203进行连接,可用于为终端或终端上安装的客户端提供服务(如游戏服务、应用服务、媒体内容服务等),可在服务器上或独立于服务器设置数据库205,用于为服务器201提供数据存储服务,上述网络包括但不限于:广域网、城域网或局域网,终端203并不限定于PC、手机、平板电脑等。
本发明实施例的帧率的确定方法可以由终端203来执行,也可以由服务器201来执行,还可以是由服务器201和终端203共同执行。其中,终端203执行本发明实施例的帧率的确定方法也可以是由安装在其上的客户端来执行。
图3是根据本发明实施例的一种可选的帧率的确定方法的流程图,如图3所示,该方法可以包括以下步骤:
步骤S302,终端获取第一请求,第一请求用于请求获取客户端中运行的网页游戏的帧率。
终端上安装有网页游戏的客户端,该客户端可以为网页应用的客户端,或者为集成有网页功能的应用的客户端,集成有网页功能的应用即混合模式应用(英文名称为Hybrid App),是介于网页应用web-app、本地应用native-app这两者之间的应用,兼具native-app良好用户交互体验的优势和web-app跨平台开发的优势,如常见的集成了网页功能的即时通讯应用、社交应用等。上述网页游戏可以为典型的H5网页游戏,也可是以“小程序”形式存在的游戏,可称为小游戏,其运行的容器可以是原生的浏览器引擎或webview,也可以不是原生的浏览器引擎或webview,而是在开源的浏览器引擎(如V8引擎)的基础上进行定制得到的,虽然不支持对普通网页的打开,但是仍然是利用浏览器引擎的技术特性操作的游戏,故仍然可以归类为网页游戏。
步骤S304,响应于第一请求,终端获取第一渲染操作在目标时间段内的执行次数,第一渲染操作用于客户端的渲染引擎根据更新信息渲染出网页游戏的一帧游戏画面,更新信息为网页游戏的游戏引擎向渲染引擎发送的用于更新一帧游戏画面的信息。
相关技术中,仅采集终端实际执行的渲染操作的频率,作为游戏画面的帧率,但是,许多情况下,在没有更新信息的情况下,即使渲染引擎进行了物理渲染,但是由于并没有更新信息提供新的游戏画面内容,因此,所更新的游戏画面与上一帧游戏画面并无区别,无论对于游戏自身而言、还是对于用户而言,都不是有效的游戏画面帧,若将该次渲染作为一次刷新,会导致实际统计到的帧率偏高。
而在本申请的技术方案中,所统计的渲染操作为客户端的渲染引擎根据更新信息渲染出网页游戏的一帧游戏画面的渲染操作,换言之,统计的是进行了有效游戏画面内容更新的渲染操作,进而可以准确地统计出有效的帧率。
步骤S306,终端根据执行次数和目标时间段的时间长度确定网页游戏的帧率,例如,以执行次数和目标时间段的时间长度之间的比值作为网页游戏的有效帧率。
在上述实施例中,以本发明实施例的帧率的确定方法由终端203来执行为例进行说明,本发明实施例的帧率的确定方法也可以由服务器201来执行,与上述实施例的区别在于,步骤S302至步骤S306的执行主体由终端变成了服务器,本发明实施例的帧率的确定方法还可以是由服务器201和终端203共同执行,即步骤S302至步骤S306中的一个或两个步骤由终端执行,而剩余步骤由服务器执行。其中,终端203执行本发明实施例的帧率的确定方法也可以是由安装在其上的客户端来执行。
通过上述步骤S302至步骤S306,在获取第一请求时,获取第一渲染操作在目标时间段内的执行次数,第一渲染操作用于客户端的渲染引擎根据更新信息渲染出网页游戏的一帧游戏画面,更新信息为网页游戏的游戏引擎向渲染引擎发送的用于更新一帧游戏画面的信息;根据执行次数和目标时间段的时间长度确定网页游戏的帧率,由于统计的是进行了有效游戏画面内容更新的渲染操作,进而可以准确地统计出有效的帧率,可以解决相关技术中统计的游戏画面的帧率的准确率较低的技术问题,进而达到准确统计游戏画面的有效帧率的技术效果。
申请人经过对相关技术进行分析认识到,若仅统计帧率,并不能反映H5游戏的绘帧状态:问题根源在于H5游戏的帧不连续,H5游戏的帧不连续的原因有两个:1)H5游戏运行在浏览器引擎的JS(英文全称为JavaScript,是一种直译式脚本语言)环境下,上一帧的结束并不是下一帧的开始,两帧之间可以隔一段时间;2)浏览器引擎的每一帧花费的总时间,要比H5游戏的绘帧时间(JS代码的执行时间)要长,且不低于垂直屏幕刷新时间,目前大多数设备的屏幕刷新率是60次/秒,屏幕刷新时间约为16.6ms。
若仅统计帧率不能反映游戏的绘帧时间信息,反映不出游戏的绘帧能力,因而不能全面反映H5游戏的绘帧状态,下面举例分析说明,例子中,屏幕刷新率默认为主流的屏幕刷新率60次/秒。
大多数浏览器引擎重绘的频率最高到60,这时每个重绘窗格的时间是1000ms/60,约等于16.6ms。如图4所示(图4中仅示意出了6次重绘,即6个重绘周期T1至T6)。
H5游戏的绘帧,依赖于浏览器引擎的重绘,如H5游戏想要达到60帧效果,必须保证每帧的绘帧时间(JS代码的执行时间,灰色阴影部分)小于16.6ms且平均,如图5所示。如果H5游戏想要达到20帧的效果,那么可能3种情况发生:
情况1,游戏每次绘帧时间(JS代码执行时间)较长,使得浏览器引擎重绘一次耗费了大约16.6ms*3(即三个周期),如图6所示。
情况2,游戏每次绘帧时间(JS代码执行时间)很短,但使浏览器引擎每间隔16.6ms*2(即两个周期),才进行一次重绘,如图7所示。
情况3,游戏每次绘帧时间(JS代码执行时间)很短,但两次绘帧(JS代码执行)间隔很短,发生在浏览器引擎的一次重绘里,使得浏览器引擎每间隔16.6ms*5(即五个周期),进行一次重绘,此时,统计H5游戏引擎的帧率,是20帧;而统计浏览器引擎的帧率是10帧,这也是玩家实际感知的帧率,如图8所示。
对比前两种情形,同样是20帧的表现,在情况1中,每个帧的耗时都很长,当前游戏的绘帧能力,已经达到了它的极限;而在情况2中,每帧的耗时都很短,游戏的绘帧能力有富足,只要需要,就很有可能把帧率提高。由此可见,仅靠相关技术中统计出来的帧率,不能全面反映H5游戏的绘帧状态。
可见,相关技术中统计帧率存在不准确的问题、可行性问题,以及对平台系统的依赖性问题。而采用本申请的技术方案可以克服上述问题,下面结合图3所示的步骤进一步详述本申请的技术方案。
在步骤S302提供的技术方案中,终端获取第一请求,第一请求用于请求获取客户端中运行的网页游戏的帧率。
上述的第一请求可以是客户端或客户端应用的服务器触发的,如客户端或客户端应用的服务器需要定时检测网页游戏的帧率时触发上述第一请求;上述第一请求也可以是第三方应用触发的,如第三应用需要知晓网页游戏的帧率,则可以触发上述的第一请求。
在步骤S304提供的技术方案中,响应于第一请求,终端获取第一渲染操作在目标时间段内的执行次数,第一渲染操作用于客户端的渲染引擎根据更新信息渲染出网页游戏的一帧游戏画面,更新信息为网页游戏的游戏引擎向渲染引擎发送的用于更新一帧游戏画面的信息。
可选地,获取第一渲染操作在目标时间段内的执行次数包括:在目标时间段内,实时监控客户端的渲染引擎所执行的第一渲染操作;在目标时间段结束的情况下,统计监控到的第一渲染操作的执行次数,换言之,此处做的是监控并统计目标时间段内有实质性内容刷新的渲染操作。
在上述实施例中,监控客户端的渲染引擎所执行的第一渲染操作可包括:监控客户端的渲染引擎所执行的第二渲染操作,即监控渲染引擎执行的物理刷新或物理渲染(第二渲染操作),第二渲染操作是由引擎自主触发的(如按照60赫兹定时触发),并检测待处理的更新信息,此处待处理的更新信息(或称update信息)即在该渲染周期内容接收到的更新信息,第二渲染操用于客户端的渲染引擎渲染出网页游戏的一帧游戏画面;在监控到第二渲染操作、且检测到待处理的更新信息的情况下,确认第二渲染操是利用更新信息进行的具有实质性内容刷新的第一渲染操作。
可选地,监控客户端的渲染引擎所执行的第二渲染操作,并检测待处理的更新信息可包括:
通过渲染引擎的第一接口来监控渲染引擎所执行的第二渲染操作,如通过window.requestAnimationFrame(callback)这一方法的接口实现,并通过游戏引擎的第二接口来检测待处理的更新信息,如通过update()方法的接口实现,待处理的更新信息为渲染引擎前一次执行第二渲染操作与本次执行第二渲染操作之间接收到的更新信息。
在本申请的实施例中,在待处理的更新信息为多个的情况下,渲染引擎可以按照如下方式进行渲染:渲染引擎获取目标更新信息,目标更新信息为对待处理的多个更新信息进行处理后得到,目标消息的获取方式包括但不局限于:目标更新信息为对待处理的多个更新信息进行合并处理后得到的,多个更新信息中每个更新信息用于更新画面中的部分区域的内容,那么可以将多个更新信息表示的更新的部分区域的内容进行合并(若存在更新的内容重合的情况下,以最新的更新信息为准),得到用于表示合并后的帧画面的目标更新信息;目标更新信息还可为对待处理的多个更新信息进行择一处理后得到,可以根据内置的算法选择多个更新信息中的一个为目标更新信息,如选择最晚接收到的为目标更新信息,再如选择其中用于指示生成关键帧的更新信息为目标更新信息;渲染引擎渲染出目标更新信息所指示的网页游戏的一帧游戏画面。
在一个可选的实施例中,在监控客户端的渲染引擎所执行的第二渲染操作,并检测待处理的更新信息之后,在目标时间段结束的情况下,统计监控到的第二渲染操作在目标时间段内的执行次数,即浏览器引擎可重绘的频率,并统计检测到的更新信息在目标时间段内的接收次数,即游戏引擎层的帧率。
申请人通过对相关技术中的技术方案进行分析,认识到:
1)采集游戏引擎层帧率存在的不准确的问题,通过上述情况3可知,情况3中游戏引擎在一次浏览器重绘中,存在无效绘帧,统计到的帧率高于与玩家感知到帧率,此时采集游戏引擎的帧率是不准确的。
2)采集终端系统层帧率,存在不准确的问题,以安卓系统为例来说明,系统层可以通过surfaceflinger层和opengl层来采集帧率,对于webview,其将自己的帧数据,提交给宿主应用的render线程,对于浏览器,网页则将自己的帧数据提交给浏览器的GPU(即图像处理器)进程,surfaceflinger和opengl接收到的是来自应用的render线程或浏览器的GPU进程的帧数据,这样就导致采集到的H5游戏的帧率,可能会受到应用和浏览器的影响而不准确。
例如,以图9所示的牌类游戏斗地主H5的关卡场景为例,使用同一款设备机型,在即时通讯应用和社交应用的某些版本上,利用surfaceflinger和opengl采集到的帧率(分别为帧率2和帧率3)和测试工具(如devtools工具采集到的帧率3)一致,均为30帧左右,如图10和图11所示,在其它版本上,利用surfaceflinger和opengl的帧率比测试工具采集的要高,如图12所示。
再如,以图13所示的射击类H5游戏为例,加入JS代码,意在浏览器引擎可做重绘前,调用一个空的动作,并不做绘制,将stop置为ture,停止空动作。
在即时通讯应用和社交应用中运行游戏,在JS代码执行后,一开始所有帧率几乎一致,利用surfaceflinger和opengl采集的帧率会飙升到55帧左右,其余帧率保持与之前一致,空动作停止时,各帧率又恢复一致,而游戏引擎层的帧率和测试工具采集到的帧率始终维持在20帧左右,如图14和图15所示;在浏览器中运行游戏,则不会出现上述现象,如图16所示,各个帧率几乎重合。
3)浏览器引擎层帧率,方案可行性差的问题,该方案获取帧率的原理为,PC端通过USB与移动端链接,打开移动端浏览器或应用中浏览器开发者调试模式,PC端通过“Tracing”调试协议,获取浏览器事件,从中过滤出绘帧相关事件,计算出帧率。
该方案的不足之处在于:依赖浏览器打开调试模式,并不是所有的移动端上的浏览器或应用都支持打开浏览器调试模式,安卓系统上,浏览器、社交应用、即时通讯应用等产品中使用X5浏览器内核的应用,支持浏览器调试模式的打开,其他浏览器和应用的支持程度则不确定,iOS系统上,仅能打开safari浏览器的调试模式;不能实时和持续获取帧数据,受制于“Tracing”调试协议的机制限制,只能间隔的获取事件,且数据传输需要花费时间,故而不能持续的获取帧数据;对游戏的性能指标有影响,以安卓系统为例,如图17所示,H5游戏的opengl帧率、CPU和内存曲线图,其中阴影部分,是通过“Tracing”协议获取浏览器事件过程,随后“Tracing”协议结束,可以看到,通过“Tracing”协议,获取浏览器事件过程中,H5游戏所在的进程,内存不断上涨,“Tracing”协议结束时,H5游戏CPU、内存使用率陡增,而H5游戏FPS陡降,由此可见获取浏览器引擎事件的行为对H5游戏的性能指标有很大影响。
4)浏览器引擎可重绘的频率,并不是帧率数据,浏览器引擎可重绘的频率,不能体现H5游戏的帧率,以上述情况2为例,在浏览器可重绘时,游戏引擎却没有绘帧动作,此时浏览器可重绘的频率为60,而游戏的帧率为20。
5)以上若干方案依赖于系统状态,如安卓opengl层获取帧率,需要系统为root状态;如iOS平台下系统层获取帧率,需要系统为越狱状态;如浏览器引擎层帧率,依赖于浏览器引擎打开调试模式,而现实情况是,受手机厂商和软件厂商的限制,这种对系统特殊的状态的要求却难以达到,如:安卓平台上热门的安卓机型无法root,iOS平台上在iOS 11之后的系统尚无越狱方法;在安卓、iOS平台下,应用中使用系统自带的webview组件以及部分浏览器无法打开调试模式。
通过以上分析可见,所列举的多类统计H5游戏帧率的方法,对于H5游戏均不适用。
而本申请的技术方案则可以克服上述问题,在产品侧,可以将本申请的技术方案集成在游戏性能测试工具中,用于获取H5游戏的FPS数据(游戏引擎层有效的帧率,real-fps),如图18所示。下面结合具体的实施方式进一步详述本申请的技术方案:
采用本申请的技术方案,所统计的始终是有效绘帧(即第二渲染操作所对应的绘帧),可以克服上述问题。本方案根据H5游戏帧率机制的特性,给出了一种H5游戏帧率的精确统计方法和技术实现方案,可全面反馈H5游戏的绘帧状态,且不依赖于系统。可以实现精确统计帧率,全面反馈H5游戏绘帧状态,本申请实现了采集游戏引擎层有效的帧率,简称real-fps(图19中曲线f1表示),来精确统计H5游戏的帧率;结合游戏引擎层的帧率(图19中曲线f2表示)、浏览器引擎可重绘的频率(图19中曲线f3表示),全面反馈H5游戏的绘帧能力,本申请所涉及的三种帧率如图19所示;系统平台通用,且不依赖于系统状态,本方案的技术实现可为javascript代码(即JS代码),可以在主流浏览器引擎中执行,因此在各系统平台上通用,与系统root、越狱、浏览器调试模式等状态无关。
在步骤S306提供的技术方案中,终端根据执行次数和目标时间段的时间长度确定网页游戏的帧率。
在又一个可选的实施例中,在根据执行次数和目标时间段的时间长度确定网页游戏的帧率之后,根据第一帧率与第二帧率、或第一帧率与第三帧率之间的关系生成提示信息,第一帧率为网页游戏在目标时间段内的帧率,第二帧率为第二渲染操作在目标时间段内的执行次数,第三帧率为更新信息在目标时间段内的接收次数,提示信息用于提示网页游戏的绘帧状态。
可选地,根据第一帧率与第二帧率、或第一帧率与第三帧率之间的关系生成提示信息包括:在第一帧率与第二帧率之间的差值小于第一阈值的情况下,生成第一提示信息,其中,第一提示信息用于表示网页游戏的绘帧状态为饱和状态;在第二帧率与第一帧率之间的差值大于第二阈值的情况下,生成第二提示信息,其中,第二提示信息用于表示网页游戏的绘帧状态为非饱和状态,第二阈值大于第一阈值;在第三帧率与第一帧率之间的差值大于第三阈值的情况下,生成第三提示信息,其中,第三提示信息用于表示网页游戏的绘帧状态处于待优化状态,第三阈值大于第一阈值。
作为一种可选的实施例,下面以将本申请的技术方案应用于H5游戏为例进一步详述本申请的技术方案。
本方案根据H5游戏帧率机制的特性,给出了一种H5游戏帧率的精确统计方法和技术实现方案。
(1)采集游戏引擎层有效的帧率,简称real-fps
由前述内容可知,在相关技术的方案中,engine-fps会虚高。因此,本方案在统计游戏引擎的帧率时,将一次浏览器引擎重绘里的多个update(更新信息)做合并,而得到游戏引擎层有效的帧率(即real-fps)。
(2)采集游戏引擎层的帧率,即游戏引擎update方法执行的频率,简称engine-fps。
游戏引擎有统一的绘帧的update方法,当前主流的H5游戏引擎、cocos游戏引擎、laya游戏引擎、egret游戏引擎都有update方法入口。
如果engine-fps比real-fps高,那么游戏引擎就存在无效的update现象,这说明很有可能需要做优化。
(3)采集浏览器引擎可重绘的频率,也即webview或浏览器可重绘的频率,可利用window.requestAnimationFrame(callback)方法来进行统计,得到的可重绘的频率,可简称为reqAF-fps。
reqAF-fps与engine-fps结合,能够反映出H5游戏的绘帧能力:如果engine-fps和reqAF-fps比较接近,那么游戏的绘帧能力已经到了瓶颈;如果engine-fps比reqAF-fps小很多,那么游戏的绘帧能力很可能还有富足。
下面来说明本方案的技术实现,本方案的实现内容可为运行在浏览器中的javascript代码,通过所执行的javascript代码来统计上述的3种帧率。
在进行帧率统计之前,可以利用定时器实现统计引擎update入口执行次数。
利用定时器实现的方案如下:
帧率的统计可每间隔一段时间来计算帧率数据。
本方案可采用浏览器引擎的window.requestAnimationFrame(callback)方法来实现定时器功能,调用上述方法后,callback将会被加入到一个回调函数列表中,浏览器会在下次可重绘前执行回调函数列表,即浏览器引擎在下次可重绘前,执行回调函数列表。
同时,在callback中加入统计代码,便可统计到浏览器引擎可重绘的频率,即reqAF-fps。
Hook(是一种用于劫持消息的机制)游戏引擎update的入口:
如果在调用window.requestAnimationFrame(callback)的callback方法中,加入统计游戏引擎的绘帧的代码,便可得到游戏引擎层的帧率,即engine-fps。但游戏引擎没有直接提供接口,本方案借助javascript的hook技术,通过hook游戏引擎的update入口,在hook后的update入口中添加统计代码,便能统计游戏引擎update入口执行次数,达到计算engine-fps的目的。
例如,javascript方法的hook举例,在代码中,利用编写好的hook部分的代码,完成对JS方法(游戏引擎update入口的执行)的劫持,劫持的效果为,每检测到一次update,就会有一个返回。
再如,对cocos、laya和egret三种H5游戏引擎的update方法进行劫持,update方法为:
“Laya.Scene.prototype._updateScene”、“Laya.timer._update”、“cc.director.updateScene”、“egret.sys.$ticker.render”,其中laya引擎新老版本的入口不同,使用两种方法。
基于上述方案,便可完成定时统计帧率的目的,本方案统计帧率的实现逻辑步骤如下:
步骤1,调用window.requestAnimationFrame(callback)方法,将回调方法加入浏览器重绘调用的回调列表。
步骤2,浏览器引擎准备重绘。
步骤3,回调方法被调用。
步骤4,统计游戏引擎update入口执行次数;统计浏览器引擎重绘的次数;统计游戏引擎update入口去重后的执行次数;更新统计计时器时间。
步骤5,判断统计计时器是否大于1秒,若是则执行步骤6,否则执行步骤7。
步骤6,输出帧率数据;统计计时器归零,并回到步骤1。
步骤7,统计到上述的三种帧率。
采用本申请的技术方案,根据H5游戏帧率机制的特性,规避了相关技术方案存在的问题,给出了一种H5游戏帧率的精确统计方法和技术实现,全面反馈H5游戏的绘帧状态,且不依赖于系统。
(1)可精确统计帧率,全面反馈H5游戏绘帧状态。
采集游戏引擎层有效的帧率,简称real-fps,来精确统计H5游戏的帧率;游戏引擎层有效的帧率,文中简称为real-fps,在统计游戏引擎的帧率时,将一次浏览器引擎重绘里的游戏引擎的多个update次数做合并,精确反馈H5游戏的真实的绘帧频率。
结合游戏引擎层的帧率、浏览器引擎可重绘的频率,全面反馈H5游戏的绘帧能力:游戏引擎层的帧率,游戏引擎update方法执行的频率,反馈H5游戏的期望的绘帧频率;浏览器引擎可重绘的频率,即webview或浏览器可重绘的频率。当游戏引擎的有效帧率比游戏引擎帧率低很多时,即反映出无效绘帧比较多,表明游戏需要进行优化;当游戏引擎有效绘帧频率与浏览器引擎可重绘的频率接近时,表明游戏的绘帧能力已经到了瓶颈;当游戏引擎有效绘帧频率与浏览器引擎可重绘的频率小很多时,表明游戏的绘帧能力很可能还有富足。
(2)该方案对系统平台通用,且不依赖于系统状态
本方案的技术实现可为javascript代码,能够在主流浏览器引擎中执行。因此在各系统平台上通用,与系统root、越狱、浏览器调试模式等状态无关。
本申请的技术方案不仅限于运行在安卓、iOS移动端平台上的H5等网页游戏,对于PC、电视盒子等平台上的H5等网页游戏也适用;本方案不仅限于运行在浏览器引擎中的H5游戏类型,对于帧不连续的游戏的帧率统计,本方案对的解决思路也适用,如承载在应用中以小程序的形式存在的小游戏等。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
根据本发明实施例的另一个方面,还提供了一种用于实施上述帧率的确定方法的帧率的确定装置。图20是根据本发明实施例的一种可选的帧率的确定装置的示意图,如图20所示,该装置可以包括:
第一获取单元2001,用于获取第一请求,其中,所述第一请求用于请求获取客户端中运行的网页游戏的帧率。
第二获取单元2003,用于响应于所述第一请求,获取第一渲染操作在目标时间段内的执行次数,其中,所述第一渲染操作用于所述客户端的渲染引擎根据更新信息渲染出所述网页游戏的一帧游戏画面,所述更新信息为所述网页游戏的游戏引擎向所述渲染引擎发送的用于更新一帧游戏画面的信息。
确定单元2005,用于根据所述执行次数和所述目标时间段的时间长度确定所述网页游戏的帧率。
需要说明的是,该实施例中的第一获取单元2001可以用于执行本申请实施例中的步骤S302,该实施例中的第二获取单元2003可以用于执行本申请实施例中的步骤S304,该实施例中的确定单元2005可以用于执行本申请实施例中的步骤S306。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图2所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
通过上述模块,在获取第一请求时,获取第一渲染操作在目标时间段内的执行次数,第一渲染操作用于客户端的渲染引擎根据更新信息渲染出网页游戏的一帧游戏画面,更新信息为网页游戏的游戏引擎向渲染引擎发送的用于更新一帧游戏画面的信息;根据执行次数和目标时间段的时间长度确定网页游戏的帧率,由于统计的是进行了有效游戏画面内容更新的渲染操作,进而可以准确地统计出有效的帧率,可以解决相关技术中统计的游戏画面的帧率的准确率较低的技术问题,进而达到准确统计游戏画面的有效帧率的技术效果。
在一个可选的实施例中,第二获取单元可包括:监控模块,用于在目标时间段内,监控客户端的渲染引擎所执行的第一渲染操作;统计模块,用于在目标时间段结束的情况下,统计监控到的第一渲染操作的执行次数。
上述的监控模块可包括:监控子模块,用于监控客户端的渲染引擎所执行的第二渲染操作,并检测待处理的更新信息,其中,第二渲染操用于客户端的渲染引擎渲染出网页游戏的一帧游戏画面;确定子模块,用于在监控到第二渲染操作、且检测到待处理的更新信息的情况下,确认第二渲染操作为第一渲染操作。
可选地,监控子模块还可用于:通过渲染引擎的第一接口来监控渲染引擎所执行的第二渲染操作,并通过游戏引擎的第二接口来检测待处理的更新信息,其中,待处理的更新信息为渲染引擎前一次执行第二渲染操作与本次执行第二渲染操作之间接收到的更新信息。
本申请的第二获取单元还用于在待处理的更新信息为多个的情况下,通过渲染引擎获取目标更新信息,其中,目标更新信息为对待处理的多个更新信息进行处理后得到;并通过渲染引擎渲染出目标更新信息所指示的网页游戏的一帧游戏画面。
在又一个可选的实施例中,监控子模块还用于在监控客户端的渲染引擎所执行的第二渲染操作,并检测待处理的更新信息之后,在目标时间段结束的情况下,统计监控到的第二渲染操作在目标时间段内的执行次数,并统计检测到的更新信息在目标时间段内的接收次数。
可选地,本申请的装置还可包括提示单元,用于在根据执行次数和目标时间段的时间长度确定网页游戏的帧率之后,根据第一帧率与第二帧率、或第一帧率与第三帧率之间的关系生成提示信息,其中,第一帧率为网页游戏在目标时间段内的帧率,第二帧率为第二渲染操作在目标时间段内的执行次数,第三帧率为更新信息在目标时间段内的接收次数,提示信息用于提示网页游戏的绘帧状态。
上述的提示单元可包括:第一提示模块,用于在第一帧率与第二帧率之间的差值小于第一阈值的情况下,生成第一提示信息,其中,第一提示信息用于表示网页游戏的绘帧状态为饱和状态;第二提示模块,用于在第二帧率与第一帧率之间的差值大于第二阈值的情况下,生成第二提示信息,其中,第二提示信息用于表示网页游戏的绘帧状态为非饱和状态,第二阈值大于第一阈值;第三提示模块,用于在第三帧率与第一帧率之间的差值大于第三阈值的情况下,生成第三提示信息,其中,第三提示信息用于表示网页游戏的绘帧状态处于待优化状态,第三阈值大于第一阈值。
采用本申请的技术方案,所统计的始终是有效绘帧(即第二渲染操作所对应的绘帧),可以克服上述问题。本方案根据H5游戏帧率机制的特性,给出了一种H5游戏帧率的精确统计方法和技术实现方案,可全面反馈H5游戏的绘帧状态,且不依赖于系统。可以实现精确统计帧率,全面反馈H5游戏绘帧状态,本申请实现了采集游戏引擎层有效的帧率,简称real-fps(图19中曲线f1表示),来精确统计H5游戏的帧率;结合游戏引擎层的帧率(图19中曲线f2表示)、浏览器引擎可重绘的频率(图19中曲线f3表示),全面反馈H5游戏的绘帧能力,本申请所涉及的三种帧率如图19所示;系统平台通用,且不依赖于系统状态,本方案的技术实现可为javascript代码(即JS代码),可以在主流浏览器引擎中执行,因此在各系统平台上通用,与系统root、越狱、浏览器调试模式等状态无关。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图2所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
根据本发明实施例的另一个方面,还提供了一种用于实施上述帧率的确定方法的服务器或终端。
图21是根据本发明实施例的一种终端的结构框图,如图21所示,该终端可以包括:一个或多个(图21中仅示出一个)处理器2101、存储器2103、以及传输装置2105,如图21所示,该终端还可以包括输入输出设备2107。
其中,存储器2103可用于存储软件程序以及模块,如本发明实施例中的帧率的确定方法和装置对应的程序指令/模块,处理器2101通过运行存储在存储器2103内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的帧率的确定方法。存储器2103可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器2103可进一步包括相对于处理器2101远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置2105用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置2105包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置2105为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器2103用于存储应用程序。
处理器2101可以通过传输装置2105调用存储器2103存储的应用程序,以执行下述步骤:
获取第一请求,其中,第一请求用于请求获取客户端中运行的网页游戏的帧率;
响应于第一请求,获取第一渲染操作在目标时间段内的执行次数,其中,第一渲染操作用于客户端的渲染引擎根据更新信息渲染出网页游戏的一帧游戏画面,更新信息为网页游戏的游戏引擎向渲染引擎发送的用于更新一帧游戏画面的信息;
根据执行次数和目标时间段的时间长度确定网页游戏的帧率。
处理器2101还用于执行下述步骤:
在第一帧率与第二帧率之间的差值小于第一阈值的情况下,生成第一提示信息,其中,第一提示信息用于表示网页游戏的绘帧状态为饱和状态;
在第二帧率与第一帧率之间的差值大于第二阈值的情况下,生成第二提示信息,其中,第二提示信息用于表示网页游戏的绘帧状态为非饱和状态,第二阈值大于第一阈值;
在第三帧率与第一帧率之间的差值大于第三阈值的情况下,生成第三提示信息,其中,第三提示信息用于表示网页游戏的绘帧状态处于待优化状态,第三阈值大于第一阈值。
采用本发明实施例,在获取第一请求时,获取第一渲染操作在目标时间段内的执行次数,第一渲染操作用于客户端的渲染引擎根据更新信息渲染出网页游戏的一帧游戏画面,更新信息为网页游戏的游戏引擎向渲染引擎发送的用于更新一帧游戏画面的信息;根据执行次数和目标时间段的时间长度确定网页游戏的帧率,由于统计的是进行了有效游戏画面内容更新的渲染操作,进而可以准确地统计出有效的帧率,可以解决相关技术中统计的游戏画面的帧率的准确率较低的技术问题,进而达到准确统计游戏画面的有效帧率的技术效果。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图21所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图21其并不对上述电子装置的结构造成限定。例如,终端还可包括比图21中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图21所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行帧率的确定方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S12,获取第一请求,其中,第一请求用于请求获取客户端中运行的网页游戏的帧率;
S14,响应于第一请求,获取第一渲染操作在目标时间段内的执行次数,其中,第一渲染操作用于客户端的渲染引擎根据更新信息渲染出网页游戏的一帧游戏画面,更新信息为网页游戏的游戏引擎向渲染引擎发送的用于更新一帧游戏画面的信息;
S16,根据执行次数和目标时间段的时间长度确定网页游戏的帧率。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
S22,在第一帧率与第二帧率之间的差值小于第一阈值的情况下,生成第一提示信息,其中,第一提示信息用于表示网页游戏的绘帧状态为饱和状态;
S24,在第二帧率与第一帧率之间的差值大于第二阈值的情况下,生成第二提示信息,其中,第二提示信息用于表示网页游戏的绘帧状态为非饱和状态,第二阈值大于第一阈值;
S26,在第三帧率与第一帧率之间的差值大于第三阈值的情况下,生成第三提示信息,其中,第三提示信息用于表示网页游戏的绘帧状态处于待优化状态,第三阈值大于第一阈值。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种帧率的确定方法,其特征在于,包括:
获取第一请求,其中,所述第一请求用于请求获取客户端中运行的网页游戏的帧率;
响应于所述第一请求,获取第一渲染操作在目标时间段内的执行次数,其中,所述第一渲染操作用于所述客户端的渲染引擎根据更新信息渲染出所述网页游戏的一帧游戏画面,所述更新信息为所述网页游戏的游戏引擎向所述渲染引擎发送的用于更新一帧游戏画面的信息;
根据所述执行次数和所述目标时间段的时间长度确定所述网页游戏的帧率;
在根据执行次数和目标时间段的时间长度确定网页游戏的帧率之后,根据第一帧率与第二帧率、或第一帧率与第三帧率之间的关系生成提示信息,第一帧率为网页游戏在目标时间段内的帧率,第二帧率为第二渲染操作在目标时间段内的执行次数,第三帧率为更新信息在目标时间段内的接收次数,提示信息用于提示网页游戏的绘帧状态,其中,所述第二帧率通过将一次所述第一渲染操作对应的多个所述更新信息进行合并后得到;
所述获取第一渲染操作在目标时间段内的执行次数包括:
监控所述客户端的渲染引擎所执行的所述第二渲染操作,并检测待处理的所述更新信息,其中,所述第二渲染操作用于所述客户端的渲染引擎渲染出所述网页游戏的一帧游戏画面,所述第二渲染操作是由所述渲染引擎自主触发的;
在监控到所述第二渲染操作、且检测到待处理的所述更新信息的情况下,确认所述第二渲染操作为所述第一渲染操作;
所述根据第一帧率与第二帧率、或所述第一帧率与第三帧率之间的关系生成提示信息包括:在所述第一帧率与所述第二帧率之间的差值小于第一阈值的情况下,生成第一提示信息,其中,所述第一提示信息用于表示所述网页游戏的绘帧状态为饱和状态;在所述第二帧率与所述第一帧率之间的差值大于第二阈值的情况下,生成第二提示信息,其中,所述第二提示信息用于表示所述网页游戏的绘帧状态为非饱和状态,所述第二阈值大于所述第一阈值;在所述第三帧率与所述第一帧率之间的差值大于第三阈值的情况下,生成第三提示信息,其中,所述第三提示信息用于表示所述网页游戏的绘帧状态处于待优化状态,所述第三阈值大于所述第一阈值。
2.根据权利要求1所述的方法,其特征在于,获取第一渲染操作在目标时间段内的执行次数包括:
在所述目标时间段内,监控所述客户端的渲染引擎所执行的所述第一渲染操作;
在所述目标时间段结束的情况下,统计监控到的所述第一渲染操作的执行次数。
3.根据权利要求1所述的方法,其特征在于,监控所述客户端的渲染引擎所执行的第二渲染操作,并检测待处理的所述更新信息包括:
通过所述渲染引擎的第一接口来监控所述渲染引擎所执行的所述第二渲染操作,并通过所述游戏引擎的第二接口来检测待处理的所述更新信息,其中,待处理的所述更新信息为所述渲染引擎在前一次执行所述第二渲染操作与本次执行所述第二渲染操作之间接收到的更新信息。
4.根据权利要求1所述的方法,其特征在于,在待处理的所述更新信息为多个的情况下,所述方法还包括
所述渲染引擎获取目标更新信息,其中,所述目标更新信息为对待处理的多个所述更新信息进行处理后得到;
所述渲染引擎渲染出所述目标更新信息所指示的所述网页游戏的一帧游戏画面。
5.根据权利要求1所述的方法,其特征在于,在监控所述客户端的渲染引擎所执行的第二渲染操作,并检测待处理的所述更新信息之后,所述方法还包括:
在所述目标时间段结束的情况下,统计监控到的所述第二渲染操作在所述目标时间段内的执行次数,并统计检测到的所述更新信息在所述目标时间段内的接收次数。
6.一种帧率的确定装置,其特征在于,包括:
第一获取单元,用于获取第一请求,其中,所述第一请求用于请求获取客户端中运行的网页游戏的帧率;
第二获取单元,用于响应于所述第一请求,获取第一渲染操作在目标时间段内的执行次数,其中,所述第一渲染操作用于所述客户端的渲染引擎根据更新信息渲染出所述网页游戏的一帧游戏画面,所述更新信息为所述网页游戏的游戏引擎向所述渲染引擎发送的用于更新一帧游戏画面的信息;
确定单元,用于根据所述执行次数和所述目标时间段的时间长度确定所述网页游戏的帧率;
在根据执行次数和目标时间段的时间长度确定网页游戏的帧率之后,根据第一帧率与第二帧率、或第一帧率与第三帧率之间的关系生成提示信息,第一帧率为网页游戏在目标时间段内的帧率,第二帧率为第二渲染操作在目标时间段内的执行次数,第三帧率为更新信息在目标时间段内的接收次数,提示信息用于提示网页游戏的绘帧状态,其中,所述第二帧率通过将一次所述第一渲染操作对应的多个所述更新信息进行合并后得到;
所述第二获取单元包括:
监控子模块,用于监控所述客户端的渲染引擎所执行的第二渲染操作,并检测待处理的所述更新信息,其中,所述第二渲染操用于所述客户端的渲染引擎渲染出所述网页游戏的一帧游戏画面,所述第二渲染操作是由所述渲染引擎自主触发的;
确定子模块,用于在监控到所述第二渲染操作、且检测到待处理的所述更新信息的情况下,确认所述第二渲染操作为所述第一渲染操作;
所述装置用于通过如下方式根据第一帧率与第二帧率、或所述第一帧率与第三帧率之间的关系生成提示信息:在所述第一帧率与所述第二帧率之间的差值小于第一阈值的情况下,生成第一提示信息,其中,所述第一提示信息用于表示所述网页游戏的绘帧状态为饱和状态;在所述第二帧率与所述第一帧率之间的差值大于第二阈值的情况下,生成第二提示信息,其中,所述第二提示信息用于表示所述网页游戏的绘帧状态为非饱和状态,所述第二阈值大于所述第一阈值;在所述第三帧率与所述第一帧率之间的差值大于第三阈值的情况下,生成第三提示信息,其中,所述第三提示信息用于表示所述网页游戏的绘帧状态处于待优化状态,所述第三阈值大于所述第一阈值。
7.根据权利要求6所述的装置,其特征在于,所述第二获取单元包括:
监控模块,用于在所述目标时间段内,监控所述客户端的渲染引擎所执行的所述第一渲染操作;
统计模块,用于在所述目标时间段结束的情况下,统计监控到的所述第一渲染操作的执行次数。
8.根据权利要求6所述的装置,其特征在于,所述监控子模块还用于:
通过所述渲染引擎的第一接口来监控所述渲染引擎所执行的所述第二渲染操作,并通过所述游戏引擎的第二接口来检测待处理的所述更新信息,其中,待处理的所述更新信息为所述渲染引擎前一次执行所述第二渲染操作与本次执行所述第二渲染操作之间接收到的更新信息。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至5任一项中所述的方法。
10.一种电子装置,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器通过所述计算机程序执行上述权利要求1至5任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810558368.8A CN108721898B (zh) | 2018-06-01 | 2018-06-01 | 帧率的确定方法和装置、存储介质、电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810558368.8A CN108721898B (zh) | 2018-06-01 | 2018-06-01 | 帧率的确定方法和装置、存储介质、电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108721898A CN108721898A (zh) | 2018-11-02 |
CN108721898B true CN108721898B (zh) | 2022-02-22 |
Family
ID=63931864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810558368.8A Active CN108721898B (zh) | 2018-06-01 | 2018-06-01 | 帧率的确定方法和装置、存储介质、电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108721898B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111408138B (zh) * | 2019-01-04 | 2023-07-07 | 厦门雅基软件有限公司 | 基于游戏引擎的渲染方法、装置及电子设备 |
CN109933537B (zh) * | 2019-03-29 | 2021-07-27 | 腾讯科技(深圳)有限公司 | 一种卡顿检测方法、相关装置、设备及计算机可读介质 |
CN110300327B (zh) * | 2019-04-18 | 2021-06-15 | 深圳市腾讯网域计算机网络有限公司 | 一种游戏客户端性能分析方法、装置、终端及存储介质 |
CN111966557B (zh) * | 2019-05-20 | 2023-07-14 | 北京车和家信息技术有限公司 | 监测浏览器帧率的方法及装置 |
CN110334027B (zh) * | 2019-07-04 | 2024-04-12 | 深圳市腾讯网域计算机网络有限公司 | 游戏画面测试方法和装置 |
CN111632382B (zh) * | 2020-05-25 | 2021-06-25 | 腾讯科技(深圳)有限公司 | 游戏数据同步方法、装置、计算机及可读存储介质 |
CN112657187A (zh) * | 2020-12-24 | 2021-04-16 | 北京像素软件科技股份有限公司 | Npc控制方法、装置、服务器和存储介质 |
CN113127282B (zh) * | 2021-04-23 | 2024-07-23 | 北京字节跳动网络技术有限公司 | 一种帧能力确定方法、装置、电子设备和存储介质 |
CN113457140B (zh) * | 2021-07-20 | 2024-05-28 | 网易(杭州)网络有限公司 | 设备配置的评价方法、装置和电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102956208A (zh) * | 2011-08-23 | 2013-03-06 | 华为技术有限公司 | 一种统计终端画面帧率的方法、装置及系统 |
CN103077015A (zh) * | 2012-12-25 | 2013-05-01 | 福州博远无线网络科技有限公司 | 一种动态控制游戏帧率的方法 |
CN103366391A (zh) * | 2013-06-26 | 2013-10-23 | 广州市动景计算机科技有限公司 | 动态图像的画面渲染方法及画面渲染装置 |
CN105117191A (zh) * | 2015-09-08 | 2015-12-02 | 广东欧珀移动通信有限公司 | 一种移动终端的显示控制方法及装置 |
CN106339300A (zh) * | 2016-08-12 | 2017-01-18 | 武汉斗鱼网络科技有限公司 | 一种第三方游戏的fps获取方法及获取系统 |
US9584787B1 (en) * | 2012-06-08 | 2017-02-28 | Amazon Technologies, Inc. | Performance optimization for streaming video |
CN107102936A (zh) * | 2017-05-27 | 2017-08-29 | 腾讯科技(深圳)有限公司 | 一种流畅度的评估方法和移动终端以及存储介质 |
-
2018
- 2018-06-01 CN CN201810558368.8A patent/CN108721898B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102956208A (zh) * | 2011-08-23 | 2013-03-06 | 华为技术有限公司 | 一种统计终端画面帧率的方法、装置及系统 |
US9584787B1 (en) * | 2012-06-08 | 2017-02-28 | Amazon Technologies, Inc. | Performance optimization for streaming video |
CN103077015A (zh) * | 2012-12-25 | 2013-05-01 | 福州博远无线网络科技有限公司 | 一种动态控制游戏帧率的方法 |
CN103366391A (zh) * | 2013-06-26 | 2013-10-23 | 广州市动景计算机科技有限公司 | 动态图像的画面渲染方法及画面渲染装置 |
CN105117191A (zh) * | 2015-09-08 | 2015-12-02 | 广东欧珀移动通信有限公司 | 一种移动终端的显示控制方法及装置 |
CN106339300A (zh) * | 2016-08-12 | 2017-01-18 | 武汉斗鱼网络科技有限公司 | 一种第三方游戏的fps获取方法及获取系统 |
CN107102936A (zh) * | 2017-05-27 | 2017-08-29 | 腾讯科技(深圳)有限公司 | 一种流畅度的评估方法和移动终端以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108721898A (zh) | 2018-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108721898B (zh) | 帧率的确定方法和装置、存储介质、电子装置 | |
KR102337507B1 (ko) | 게임 원격측정 내에서 동기화된 비디오 | |
US9554292B2 (en) | Methods and systems for performance monitoring for mobile applications | |
CN113038287B (zh) | 多人视频直播业务实现方法、装置、计算机设备 | |
CN107045508B (zh) | 应用程序的处理方法和装置 | |
US9244993B1 (en) | Management of application state data | |
CN112402980B (zh) | 游戏运行的适配方法、装置及电子设备 | |
CN109976966A (zh) | 一种应用程序启动时间统计方法、装置及系统 | |
CN109428910B (zh) | 一种数据处理方法、装置及系统 | |
US10643239B2 (en) | Monitoring an application on a processing device and generating rewards | |
US20170180805A1 (en) | Method and electronic device for video follow-play | |
WO2014176919A1 (en) | Method and system for displaying recommended pages by terminal device | |
CN109688109B (zh) | 基于客户端信息识别的验证码的验证方法及装置 | |
CN114723866A (zh) | 卡顿检测方法及装置 | |
US11442606B2 (en) | User interface interaction method and system | |
CN113032278B (zh) | 应用程序的运行方式、终端设备的等级确认方法及装置 | |
CN106482742B (zh) | 计步数据的获取方法及装置 | |
CN113296666A (zh) | 主播曝光数据上报方法、装置、终端设备及存储介质 | |
CN110806909A (zh) | 一种应用程序页面掉帧信息确定方法、装置及电子设备 | |
CN109304035A (zh) | 游戏时长的获取方法、装置、终端设备及存储介质 | |
GB2527672A (en) | Measuring device performance | |
CN114028802A (zh) | 延迟计算方法及装置、电子设备、存储介质 | |
US10413818B2 (en) | Monitoring an application on a processing device | |
CN111770510A (zh) | 网络体验状态确定方法、装置、存储介质及电子设备 | |
CN113413592B (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 |