CN111714875B - 用于在视频游戏中测试命令执行延迟的系统 - Google Patents
用于在视频游戏中测试命令执行延迟的系统 Download PDFInfo
- Publication number
- CN111714875B CN111714875B CN201910365262.0A CN201910365262A CN111714875B CN 111714875 B CN111714875 B CN 111714875B CN 201910365262 A CN201910365262 A CN 201910365262A CN 111714875 B CN111714875 B CN 111714875B
- Authority
- CN
- China
- Prior art keywords
- user
- computing system
- video game
- event
- command
- 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/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
-
- 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/25—Output arrangements for video game devices
-
- 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/20—Input arrangements for video game devices
- A63F13/23—Input arrangements for video game devices for interfacing with the game device, e.g. specific interfaces between game controller and console
-
- 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/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
-
- 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/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
视频游戏测试系统可以确定在与视频游戏控制器的交互和视频游戏内特定事件的发生之间流逝的时间的客观度量。所述客观度量使得测试者能够确定视频游戏是客观上运行缓慢还是仅测试者感觉缓慢,并且可以指示存在可能影响执行速度但不会导致可见错误的编码错误。系统可以通过模拟用户与视频游戏的交互来获得流逝的时间的所述客观度量。此外,系统可以通过视频游戏源代码识别嵌入到动画的帧中的数据,以识别相应事件的发生。然后,系统可以测量在模拟的用户交互与所述相应事件的发生或触发之间的流逝的时间。
Description
背景技术
许多视频游戏是利用计算机系统资源的很大一个百分比的复杂软件应用程序。每年,许多最新视频游戏的复杂性推动了最新计算系统的界限。现代视频游戏包括数百万行代码。测试这种大型应用程序的代码可能是一个耗时且具有挑战性的过程。此外,由于视频游戏通常由开发人员团队编程,因此针对视频游戏的一部分工作的一个开发人员或开发人员团队所作的更改可能会影响针对视频游戏的另一部分工作的另一个开发人员或开发团队开发的代码。当视频游戏由可以独立创建的、被配置为一起运作以创建单个视频游戏或应用程序的不同模块组成时,确保视频游戏如所期望的运作可能是特别具有挑战性的。因此,随着不同团队对代码进行更改,代码必须经常被反复地测试和重新测试。
发明内容
本公开内容的系统、方法和设备各自具有若干创新方面,其中没有一个方面单独担负本文公开的所有期望属性。在附图和以下描述中阐述本说明书中描述的主题的一个或多个实施方式的细节。
本公开内容的某些方面涉及视频游戏测试系统,其被配置为在视频游戏的执行期间测试事件延迟(latency,时延,执行时间)。视频游戏测试系统可以包括前端系统和后端系统。前端系统可以被配置为:访问模拟用户与用户计算系统的用户接口设备的交互的第一命令;以及向用户计算系统提供第一命令以与由用户计算系统托管的视频游戏进行交互,其中向用户计算系统提供第一命令触发计时器。后端系统可以被配置为:从用户计算系统接收一个或多个输出信号;将一个或多个输出信号转换为像素集,所述像素集对应于用于由用户计算系统显示的帧输出;识别嵌入在像素集中的停止条件的存在;以及至少部分地基于触发计时器的第一时间和与识别存在停止条件相关联的第二时间来确定事件的事件延迟,其中至少部分地通过执行所述第一命令来触发所述事件。
前一段的系统可以包括以下特征的任何组合或子组合:其中前端系统包括非易失性存储装置,所述非易失性存储装置被配置为存储与用户接口设备的一个或多个交互序列对应的一个或多个命令序列,所述一个或多个命令序列中的至少一个包括所述第一命令;其中前端系统包括被配置成存储第一命令的存储装置和被配置成向用户计算系统提供第一命令的用户接口电路,并且其中所述存储装置与所述用户接口电路并置,从而减少与模拟到所述用户计算系统的用户输入相关联的输入延迟;其中,前端系统还被配置为与向所述用户计算系统提供所述第一命令基本上并行地触发所述计时器;其中,前端系统还被配置为在向用户计算系统提供第二命令时触发第二计时器;其中前端系统包括用户接口电路,所述用户接口电路被配置为通过经由所述用户计算系统的接口端口向所述用户计算系统提供所述第一命令来模拟所述用户与所述用户接口的交互;其中后端系统包括计时器;其中后端系统还被配置为通过以下方式识别停止条件:从像素集中过滤出像素子集,像素子集被配置为存储嵌入数据;解码像素子集以获得嵌入数据;以及确定嵌入数据是否包括停止条件;其中后端系统包括控制器,所述控制器被配置为向所述计时器提供所述像素集的像素子集;其中,后端系统还被配置为至少部分地基于所述第一时间、所述第二时间以及所述控制器与所述计时器之间的通信延迟来确定所述事件的事件延迟;其中前端系统包括一个或多个集成电路,并且后端系统包括与前端系统分开的一个或多个集成电路;其中所述事件包括以下中的至少一个:动画的输出、动画内的帧的输出、声音的输出、视频游戏的状态的改变或视频游戏的要素的状态的改变;以及,其中前端系统被配置为至少部分地基于所述事件的事件延迟来修改视频游戏的测试。
本公开内容的另外的方面涉及一种在视频游戏的执行期间测试事件延迟的方法。该方法可以由自身以硬件实现的视频游戏测试系统实施。硬件可以包括一个或多个专用硬件电路或系统。在某些实施方案中,硬件可以是具有应用特定的指令的通用硬件,或者是通用硬件和专用硬件的组合。该方法可以包括接收测试视频游戏内的事件的事件延迟的触发器,其中事件延迟包括介于与托管视频游戏的用户计算系统的用户接口设备的交互与所述事件的发生之间的时间量;响应于接收到所述触发器,访问来自命令序列存储装置的第一命令,第一命令模拟用户与用户接口设备的交互;经由被配置为与所述用户接口设备通信的所述用户计算系统的接口向所述用户计算系统提供第一命令,其中所述视频游戏测试系统与所述用户计算系统接口连接,作为所述用户接口设备的替代;从用户计算系统的输出端口接收一组输出信号;将所述一组输出信号转换为像素集;识别嵌入在像素集中的停止标志;以及响应于识别所述停止标志,至少部分地基于与提供第一命令相关联的第一时间和与识别停止标志相关联的第二时间来确定所述事件的事件延迟。
前一段的方法可包括以下特征的任何组合或子组合:其中确定所述事件延迟还包括:通过与视频游戏测试系统的元素之间的通信相关联的通信开销时间来修改所确定的延迟;其中确定所述事件延迟还包括:通过与用户计算系统相关联的垂直同步延迟来修改所确定的延迟;其中该方法还包括:过滤所述像素集以获得包括嵌入数据的像素子集,其中识别嵌入在所述像素集中的停止标志包括提取嵌入在所述像素子集中的数据并确定所提取的数据是否包括所述停止标志;其中该方法还包括:输出所述事件延迟供在用户接口上呈现给用户;以及,该方法还包括:至少部分地基于所述事件延迟来选择第二命令以提供给所述用户计算系统。
本公开内容的又一些另外的方面涉及一种视频游戏测试系统,该视频游戏测试系统被配置为在视频游戏的执行期间测试命令执行延迟。所述视频游戏测试系统可以包括存储装置和处理电路,所述存储装置被配置为存储模拟用户与用户计算系统的用户接口设备的交互的一个或多个命令。所述处理电路可以是专用处理电路诸如专用集成电路,和/或被配置为执行专用的计算机可执行指令的通用处理电路。处理电路可以被配置为:访问来自存储装置的命令;向用户计算系统提供命令以与由用户计算系统托管的视频游戏交互;在向用户计算系统提供命令时的第一时间启动计时器;从用户计算系统获得一组输出信号,所述输出信号与用于在显示器上显示的帧输出相关联;将所述输出信号转换为像素集;处理所述像素集以获得包括在所述像素集的子集中的嵌入数据;在确定所述嵌入数据包括停止条件时的第二时间停止计时器;以及,至少部分地基于所述第一时间和所述第二时间确定与所述命令相关联的命令执行延迟。
本公开内容的某些方面涉及一种被配置为测试应用程序的代码效率的应用程序测试系统。所述应用程序测试系统可以包括硬件处理器。所述硬件处理器可以是被配置为执行专用的计算机可执行指令的通用硬件处理器。此外,硬件处理器可以包括一个处理器或一组硬件处理器,其可以是分布式的。替代地,硬件处理器可以是或包括专用电路。在又一些实施方案中,硬件处理器可以包括专用电路和通用硬件的组合。硬件处理器可以被配置为:向托管应用程序的计算系统提供用户命令,所述用户命令模拟用户与计算系统处的应用程序的交互;与向计算系统提供用户命令基本上并行地启动计时器;捕获来自计算系统的输出,所述输出是经由计算系统的显示端口被输出;确定所述输出是否包括与停止事件相关联的嵌入数据;以及,在确定输出包括与停止事件相关联的嵌入数据时,基于所述计时器确定命令延迟值。在某些实施方案中,在启动计时器之时和向计算系统提供用户命令之时之间存在小于阈值的时间差。例如,阈值时间差可以是5ms、100ns、500ns、介于前述之间的任何值等。
前一段的系统可包括以下特征的任何组合或子组合:其中计时器测量时间的流逝;其中计时器测量在启动计时器和检测到停止事件之间发生的多个事件;事件包括在显示器上的帧输出;其中捕获来自计算系统的输出并不阻止输出经由显示端口被提供给显示器;其中所述停止事件包括由所述应用程序响应于所述用户命令执行的事件;其中所述应用程序包括视频游戏;其中硬件处理器还被配置为通过以下方式确定输出是否包括与停止事件相关联的嵌入数据:将所述输出转换为动画帧的像素集;解码所述像素集的至少一部分以获得解码的像素子集;以及确定解码的像素子集是否包括与停止事件相关的嵌入数据;其中命令延迟值包括事件触发器和对应事件的发生之间的时间的度量,其中事件触发器包括向计算系统提供用户命令;以及,其中硬件处理器还被配置为至少部分地基于命令延迟值来选择第二用户命令以提供给计算系统。
本公开内容的另外的方面涉及一种测试应用程序的代码效率的方法。所述方法可以由配置有特定计算机可执行指令的应用程序测试系统实施。所述应用程序测试系统可以包括专用硬件和/或被配置为执行特定计算机可执行指令的通用硬件。所述方法可以包括:向托管应用程序的计算系统提供用户命令,所述用户命令模拟用户与计算系统处的应用程序的交互;与向计算系统提供用户命令基本上并行地启动计数器;捕获来自计算系统的输出,所述输出是经由计算系统的输出端口被输出;确定输出是否包括与目标事件相关联的数据;以及,在确定所述输出包括与目标事件相关联的数据时,基于所述计数器的值确定命令延迟。
前一段的方法可以包括以下特征的任何组合或子组合:其中所述计数器对在启动计数器与确定所述输出包括与目标事件相关联的数据之间流逝的时间量计数;其中所述计数器对在启动计数器与确定输出包括与目标事件相关联的数据之间已发生的事件或已输出的帧的数量计数;其中目标事件包括由所述应用程序响应于所述用户命令和所述应用程序的状态而执行的事件;其中确定输出是否包括与目标事件相关联的数据包括:将所述输出转换为一图像的像素集;解码所述像素集的至少一部分以获得解码的像素子集;以及,确定所述解码的像素子集是否包括与目标事件相关的数据;其中与所述目标事件相关联的数据通过插入到所述应用程序的测试代码被插入到所述图像中,作为所述图像的像素数据的替代;以及,其中该方法还包括:至少部分地基于命令延迟来选择第二用户命令提供给计算系统。
本公开内容的又一些另外的方面涉及存储计算机可执行指令的非暂时性计算机可读存储介质,所述计算机可执行指令当由一个或多个计算设备执行时,配置所述一个或多个计算设备以执行一个或多个操作。所述一个或多个操作可以包括:向托管应用程序的计算系统提供用户命令,所述用户命令模拟用户与计算系统处的应用程序的交互;与向计算系统提供用户命令基本上并行地启动计数器;捕获来自计算系统的输出,所述输出是经由计算系统的输出端口被输出;确定所述输出包括与目标事件相关联的数据;以及响应于确定所述输出包括与目标事件相关联的数据,基于所述计数器的值确定命令延迟。
前一段的计算机可读非暂时性存储介质可包括以下特征的任何组合或子组合:其中确定输出包括与目标事件相关联的数据包括:将输出转换为一图像的像素集;解码所述像素集的至少一部分以获得解码的像素集;以及确定解码的像素集包括与目标事件相关联的数据;以及,其中操作还包括:至少部分地基于命令延迟选择关于应用程序执行的自动测试。
尽管本文公开了某些实施方案和实施例,但是发明的主题超出具体公开的实施方案中的实施例,延伸到其他替代实施方案和/或用途,以及其改型和等同物。
附图说明
在所有附图中,重复使用附图标记来指示加参考标记的元件之间的对应性。提供附图是为了说明本文描述的主题的实施方案,而不是限制其范围。
图1示出了根据某些实施方案的视频游戏测试环境。
图2呈现了根据某些实施方案的命令执行延迟测试过程的流程图。
图3呈现了根据某些实施方案的延迟确定过程的流程图。
图4示出了根据某些实施方案的包括嵌入数据的示例输出帧。
图5示出了根据某些实施方案的图4的示例输出帧的一部分的展开图。
图6示出了用户计算系统的实施方案。
图7示出了图6的用户计算系统的硬件配置的实施方案。
具体实施方式
介绍
进行测试可能是重要的视频游戏的一个方面是视频游戏的响应性。视频游戏的响应性可以涉及用户与视频游戏交互和由视频游戏执行相应动作之间的时间量。该时间差可以被称为视频游戏的“延迟”或“命令延迟”。例如,确定用户按下用户接口设备的按钮(例如,视频游戏控制台的控制器或膝上型计算机的键盘)与相应事件或动作的发生之间的时间量可能是重要的,所述相应事件或动作例如射出子弹、加速车辆或投篮。
有许多原因导致与视频游戏的交互和事件的发生可能具有特定的延迟。延迟的一些原因可能是由于编码错误或设计错误。例如,代码可能包括错误的函数调用,配置某些状态变量方面的错误,不好的或非最优的对象设计,选择相比于替代选项效率较低的数据结构,选择相比于替代选项效率较低的方法、函数、库,使用相比于其他可能代码选项效率较低的代码,或使用游戏引擎或编程语言中弃用的(deprecated)功能。延迟的其他原因可能是由于可能不一定是错误的但是可以修改与视频游戏的交互和事件的发生之间的延迟的决定。例如,动画制作者可以延长与事件相关联的动画的长度,所述事件例如投篮。该延长的动画可以使抛投看起来更平滑,但是可以延迟对用户与用户接口设备的交互的响应。在投篮示例中,不一定存在与延长的延迟相关的错误,而是延迟可以与更平滑的动画和更快的响应时间之间的设计选择有关。
此外,对于不同的视频游戏,在发出命令——例如通过与用户接口设备的交互——和触发动作或事件之间可能存在不同的可接受水平的延迟。在某些情况下,甚至可能希望具有较大量的延迟。例如,可以引入延迟以模仿环境影响,例如重力的增加,以反映对用户可玩的角色的伤害,或者灌输某种氛围或恐惧感(例如,可以在一个怪物如僵尸正在追逐用户可玩的角色的点处有意地引入延迟)。作为另一示例,在比赛游戏中可以在不同车辆之间引入延迟以反映不同水平的加速度。在某些实施方案中,一些动作或输入序列可以比其他动作或输入序列更快地发生,这可以产生视频游戏的响应性不一致的感觉。因此,为了解决输入序列的响应性的这种不一致性,在某些实施方案中,可以添加延迟以造成多个输入序列上的延迟一致性。
无论延迟是否是有意的,对于用户诸如设计者或测试者来说重要的是,能够确定与视频游戏的交互和由与视频游戏的交互触发的事件之间的延迟。通常,测试者将播放视频游戏的不同迭代以确定在与视频游戏交互和同与视频游戏的交互相关联的对应事件之间的延迟。但是,这通常是不足够的。在一些情况下,用户对视频游戏的响应性或对用户与视频游戏的交互和视频游戏中的对应事件的发生之间的延迟的评估是主观的。例如,一个用户可能感觉视频游戏的响应性慢,或者感觉缓慢,而另一个用户可能发现视频游戏不缓慢。作为另一示例,用户可以发现游戏在一天是响应的,但是认为它在另一天缓慢,尽管与视频游戏的交互和相应事件之间的客观延迟没有变化。这种对延迟的主观评估增加了在开发过程中测试视频游戏的挑战。因此,期望具有对延迟的客观度量。
获得主观的延迟感通常是不够的。而是,期望具有对延迟的客观度量。获得延迟的度量的一种解决方案是使用高速摄像机捕获在执行被测视频游戏的用户计算系统以及使用灯来反映视频游戏控制器的状态的控制器状态板或其他用户接口设备的显示器上显示的帧。用户可以对当控制器状态板指示控制器的特定状态时的第一帧与对应于特定事件的第二帧之间出现的帧的数量计数。这种解决方案可能是麻烦且困难的,并且不太理想。该解决方案的一个缺点是它需要大型安装,其对于放置和操作来说可能既昂贵又麻烦。另外,虽然比用户对延迟的感知更客观,但该解决方案并非完全客观,因为它依赖于用户识别控制器何时捕获用户交互以及手动对显示特定事件之前的帧的数量计数。此外,事件可能限于与动画相关的事件或者影响用于显示的内容输出的事件。另外,测量是不容易在不同测试中重复的,因为例如依赖于用户来确定何时开始帧计数和执行帧计数。此外,在开发期间每次修改视频游戏时,用户(例如测试者或设计者)必须手动执行并重复测试。让用户执行测试可能导致测试错误或测量的不一致。另外,因为测量依赖于用户查看所显示的帧,所以延迟测量是不精确的并且不考虑系统可变性和不同显示器的可变刷新率。
通过使用相同的测试机配置,可以减少系统可变性之间的差异。然而,使用相同的测试机配置并不总是可行的,因为视频游戏通常被设计为用不同的用户计算机器和/或不同的视频游戏控制台来玩。例如,视频游戏可以被配置为在机器、机器、一个或多个便携式设备(例如智能手机)或不同配置的个人计算机设置上玩。
本文公开的实施方案呈现用于获得在托管或执行视频游戏的用户计算系统的输入与对应于该输入或以其他方式由该输入触发的事件的发生之间的延迟的客观测量的系统和过程。该系统可以包括前端系统,该前端系统经由例如用户计算系统的输入端口直接与用户计算系统通信,该输入端口被配置为从用户接口设备接收输入。因此,在某些实施方案中,前端系统可以代替插入视频游戏控制台的控制器或代替插入计算机的键盘。该前端系统可以向用户计算系统提供一个或多个命令,该一个或多个命令可以用于替代,或可以模拟,用户与用户接口设备交互,以与由用户计算系统执行的视频游戏交互。在命令被提供给用户计算系统的基本上同时(例如,同时或在小于阈值时间量例如50纳秒、10纳秒、5纳秒或更少的时间内),系统可以触发计时器,该计时器对对应于命令的事件或由命令以其他方式触发的事件发生之前的时间量计数。
该系统还可以包括后端系统,该后端系统经由例如用户计算系统的输出端口从用户计算系统获得输出,该输出端口被配置为向显示器提供输出供在显示器上呈现给用户。在某些实施方案中,输出包括由用户计算系统的输出端口输出的一组信号。这些信号可以是通过端口连接传送到电子设备例如监视器的电信号。后端系统可以从输出端口获得信号并对信号进行解码以获得帧或图像的像素。此外,后端系统可以识别嵌入在像素中的数据,以确定对应于输入的事件或由输入以其他方式触发的事件的发生。在识别事件的发生后,后端系统可以确定自触发事件的输入以来已经流逝的时间,从而确定输入与事件之间的延迟的客观度量。
为了简化讨论,主要关于视频游戏描述了本公开内容。然而,本公开内容并不限于此,可以应用于其他类型的应用程序。例如,本文公开的实施方案可以应用于教育应用程序或其中可能期望测量与用户输入设备的交互和对应于与用户输入设备的交互的事件或由与用户输入设备的交互以其他方式触发的事件之间的延迟的其他应用程序。此外,本公开内容在视频游戏的类型方面是没有限制的。本文使用的术语“视频游戏”包括所有类型的游戏,包括但不限于:基于网络的游戏、控制台游戏、个人计算机(PC)游戏、计算机游戏、用于移动设备(例如,智能手机、便携式控制台、游戏机或可穿戴设备,可穿戴设备诸如虚拟现实眼镜、增强现实眼镜或智能手表)的游戏或虚拟现实游戏,以及其他类型的游戏。
此外,虽然主要关于在开发期间测试视频游戏进行了描述,但是本文公开的实施方案可以用于其中可能期望测量延迟的其他用例。例如,在涉及视频游戏的竞赛事件——有时被称为“电子竞技”——中,玩家使用的系统的响应性是相同的或者考虑到当前技术尽可能地接近相同是重要的。这样,每个玩家的每个计算系统和显示系统通常将被配置为相同。然而,配置错误有时可能会导致视频游戏的执行不一致。此外,周围环境的差异可能影响主机计算系统的操作。例如,较靠近窗户定位的计算系统比位于空调通风口下方的另一计算系统可能运行得更热,因此更慢。由于在这些比赛期间有时可能会花费大量金钱(例如奖金、广告费、赞助费、电视转播权等),因此竞争者使用的系统之间的平衡是重要的。甚至由于例如计算系统的温度差异而导致的系统运行速度的小差异也会在感知合法性和竞争公平性方面产生影响。因此,参与方(例如,玩家、观众,赞助商等)对竞争公平性有信心是重要的。在某些实施方案中,本文公开的系统可用于测试托管视频游戏的实例的每个计算系统,以确认每个计算系统相同地运行,并且在不同竞争者用户计算系统之间命令执行延迟没有差异。
示例视频游戏测试环境
图1示出了根据某些实施方案的视频游戏测试环境100。视频游戏测试环境100可以包括用于测试视频游戏例如视频游戏112的环境,或者托管视频游戏112的系统,例如用户计算系统110。例如,视频游戏测试环境100可以被配置为测试开发中的视频游戏112,以确定发出或接收的命令与命令的执行或可以直接或间接对应于命令或由命令触发的事件的发生之间的延迟的客观度量。例如,视频游戏测试环境100可以用于确定当用户(例如玩家、开发者或测试者)推动或以其他方式与用户接口设备(例如,视频游戏控制台控制器、键盘或触摸屏接口)上的按钮交互之时和视频游戏112执行对应于与按钮的交互的动作之间的时间或延迟的度量。然而,视频游戏测试环境100还可以测试由按钮交互的组合或者一个或多个按钮按压的组合触发的事件的延迟和视频游戏112的特定状态。在一些实施方案中,视频游戏测试环境100可以使得能够测试视频游戏112的多个状态之间的延迟。视频游戏112的这多个状态可以由或可以不由用户与视频游戏的交互触发。例如,在一些情况下,视频游戏112的状态的改变可以涉及时间的流逝,视频游戏112本身内的代码的执行,或者除了视频游戏112之外的可能导致视频游戏112的状态改变的应用程序的执行,该应用程序例如使用户能够拍卖在视频游戏112中获得的物品的拍卖应用程序。
此外,如上所述,在一些情况下,视频游戏测试环境100可用于测试用户计算系统110本身。例如,视频游戏测试环境可用于确定视频游戏112在多个用户计算系统110上的执行是否导致相同的延迟。如前所述,确保当与视频游戏112的相同交互发生在多个用户计算系统110上时延迟相等在竞争环境中可能是重要的,例如对于电子竞技。
视频游戏测试环境100包括视频游戏测试系统102,视频游戏测试系统102被配置为测试视频游戏112和/或托管或执行视频游戏112的至少一部分的用户计算系统110。如图1中所示,视频游戏测试系统102可以分成多个子系统。例如,视频游戏测试系统102可以分为前端测试系统104和后端测试系统106。前端测试系统104和后端测试系统106可以被实现为被单独容置的单独的系统。替代地,前端测试系统104和后端测试系统106可以是封装在单个外壳中的单个系统。无论视频游戏测试系统102是被实现为单个系统还是被实现为多个单独的系统,在一些情况下,这两个子系统在概念上可以被认为是一个系统或多个不同的系统。
此外,如下面更详细描述的,视频游戏测试系统102可以使用多个不同的硬件处理器来实现。硬件处理器中的至少一些可以是不同类型的。此外,硬件处理器中的至少一些可以不同的专用硬件实现,该专用硬件被配置为执行与本文描述的过程相关联的特定功能。在其他实施方案中,视频游戏测试系统102的功能可以由被配置成执行本文描述的特定过程的单个硬件处理器实现。在某些实施方案中,该单个硬件处理器可以是可以执行一个或多个指令以执行本文描述的过程的通用处理器。
前端测试系统104可以包括用户接口电路108和命令序列储存库114。用户接口电路108可以用作用户计算系统110的用户接口设备的替代物,或可以模拟用户计算系统110的用户接口设备。例如,如果用户计算系统110是控制台,例如或/>用户接口电路108可以模拟控制台的控制器。替代地,用户接口电路108可以模拟键盘、鼠标、触摸屏输入设备或可以用于与用户计算系统110托管的视频游戏交互的任何其他输入设备。用户接口电路108可以获得对应于用户与用户接口设备交互的命令,并向用户计算系统110提供该命令。可以与用户接口设备(例如,/>控制器)向用户计算系统110传送的相同或相似地格式化该命令。在一些实施方案中,该命令可以是用户接口设备的按钮或接口元件的状态而非命令,或者是用户接口设备的按钮或接口元件的状态外加命令。例如,用户接口电路108可以传送包括通过用户计算系统110正被模拟的用户接口设备的一个或多个用户接口元件的状态的数据结构。
在某些实施方案中,用户接口电路108可以获得命令序列并且可以向用户计算设备110提供该命令序列。可以串行地提供命令序列,模拟用户执行与用户接口设备的一系列交互。替代地,可以并行地提供命令序列,模拟用户的、执行与用户接口设备的交互的组合的能力,与用户接口设备的交互的组合例如:按压方向按钮或模拟操纵杆,同时按压游戏手柄或控制器上的动作按钮。在又一些实施方案中,可以并行地提供命令序列中的至少一些,而串行地提供其他命令。用户接口电路108提供给用户计算设备110的命令可以是如果用户正在与用户接口设备交互的话用户接口设备会向用户计算设备110提供的执行相同的交互的相同的命令。
可以由测试服务器124将命令或命令序列提供给前端测试系统104。用户,诸如视频游戏112的设计者或测试者,可以生成使用测试服务器124测试视频游戏112的命令序列。然后,测试服务器124可以向前端测试系统104提供命令序列,该前端测试系统104可以将命令存储在命令序列储存库114处。该命令序列储存库114可以存储多个命令序列。每个命令序列可以与单独的标签或标识符相关联。可以由前端测试系统104或用户接口电路108基于对特定期望测试的选择或识别来选择特定命令序列。
在执行延迟测试期间,用户接口电路108可以从命令序列储存库114获得在测试期间使用的命令或命令序列。有利地,在某些实施方案中,通过从被包括作为前端测试系统104的一部分的命令序列储存库114获得命令,可以消除可能因与测试服务器124通信而发生的延迟。此外,前端测试系统104可以预先加载有测试命令序列,从而消除测试服务器124在执行测试期间出现的需要。因此,与在执行测试过程期间从测试服务器124接收命令的系统相比,视频游戏测试系统102可具有增加的可携带性。
此外,在命令序列储存库114处存储命令序列使得特定测试能够在视频游戏112上或者在视频游戏112的多次迭代或多个版本上重复多次。例如,在开发期间每次对视频游戏112进行改变时,或者当对视频游戏112进行更新或扩展开发时,可以使用存储在命令序列储存库114处的存储的测试序列更容易地重复测试。此外,通过在命令序列储存库114处存储命令,与可能需要用户与视频游戏112交互并且通过对高速摄像机捕获的帧计数来测量延迟的系统相比,可以使用自动过程或者在减少的用户参与或没有用户参与的情况下执行测试。
后端测试系统106可以捕获来自用户计算系统110的输出。该输出可以是从用户计算系统输出到显示系统122的信号。在某些实施方案中,后端测试系统106可以代替显示系统122。在其他实施方案中,可以使用分路器或其他电子设备(未示出)将提供给显示系统122的输出信号的副本提供给后端测试系统106。通过分离信号,用户可以观察显示系统122上的输出,同时后端测试系统106测量在发出的命令与在视频游戏112处发生的相应的被触发事件之间的延迟。应当理解,与先前使用高速摄像机来测量视频游戏112内的延迟的尝试不同,要使用本文公开的某些实施方案来测量延迟,视频游戏112的输出被显示在显示系统上是不必要的。
后端系统106可以包括解码器116、控制器118和计时器系统120。后端系统106的解码器116可以经由用户计算系统110的输出端口——例如显示端口——连接到用户计算系统110。例如,解码器116可以连接到DisplayPort(显示接口)、数字视频接口(DVI)端口或高清多媒体接口(HDMI)端口。通常,解码器116经由有线连接连接到用户计算系统110的输出端口。通过经由有线连接进行连接,可以避免可能由于例如无线连接中的干扰而引入的延迟。然而,在某些实施方案中,解码器116可以使用无线连接来连接到用户计算系统110。
解码器116可以包括可以经由用户计算系统110的输出端口从用户计算系统110获得信号并且可以将信号转换为像素的任何电路或系统。例如,解码器116可以被配置为将HDMI信号转换为表示由视频游戏112生成的动画的一帧的像素集。该帧可以是视频游戏112的开发者想要在显示器上显示的动画的一部分,该显示器例如由显示系统122提供的显示器。
解码器116可以将像素提供给控制器118。在某些实施方案中,解码器116一次一帧地向控制器118提供像素。在其他实施方案中,随着控制器118将输出信号转换为像素解码器116将像素提供给控制器118。因此,在一些情况下,控制器118可以接收一帧的部分,同时解码器116继续将接收的信号转换为包括在该帧中的附加像素。
控制器118可以包括可以处理从解码器116接收的像素以识别可以存储嵌入数据的像素子集的任何系统或电路。在一些情况下,表示一帧的整个像素集可以用于本文公开的实施方案。然而,通常使用仅像素子集,因为剩余像素被指定为例如描绘由视频游戏112生成的动画的图像或帧。
处理像素以识别像素子集可以包括过滤接收的像素以获得像素子集。过滤像素可以包括识别由解码器116生成的像素集中包括的特定像素。该像素子集可以是最初的“n”个像素,其中“n”是某个数字。例如,像素子集可以是最初的1024个像素、最初的2048个像素或小于形成图像帧的像素总数的任何其他数量的像素。可以以特定顺序接收像素。例如,可以从帧的左上角开始并且从左到右和从上到下继续地,类似于英语书中书写单词的顺序来接收像素。因此,在先前的示例中,最初的1024个像素可以包括从帧的左上开始并且朝向图像中第一行的右侧延伸1024个像素的1024个像素。替代地,在某些实施方案中,像素子集可以是存储像素信息的最初的“n”比特或字节的数据。因此,例如,像素子集可以是存储在从解码器116获得的最初的1024或2048个字节的数据中的像素集,在假定24比特或3字节RGB图像的情况下其可以对应于341个像素或682个像素。应当理解,可以使用其他比特或字节量来表示每个像素,从而导致每1024或2048字节或者存储嵌入数据的其他数量的字节的不同像素量。
所识别的像素子集可以包括被配置为嵌入用作测试过程的一部分的信息的像素,该测试过程诸如测试或测量命令的发出与相应事件的发生之间的延迟的过程。该嵌入信息可以识别何时特定事件在视频游戏112中发生。可以基于为像素子集设置的值将信息嵌入帧中。例如,像素子集可以被配置为描绘特定颜色或图像,以指示在视频游戏112内已发生了特定事件。作为另一个示例,像素子集可以被配置为具有特定的不透明度以指示视频游戏112中事件的发生。该事件可以涉及特定动画或动画中特定帧的出现。然而,尽管识别事件的发生的嵌入信息嵌入在图像或动画帧中,但是事件可以包括在视频游戏112的执行期间发生的基于非动画的事件。例如,事件可以涉及特定声音的播放、特定状态变量的设置或与视频游戏112的执行相关的任何其他事件的发生。
计时器系统120可以包括可以确定所识别的像素子集是否包括嵌入数据和/或嵌入数据是否包括特定信息并且基于该确定可以停止由前端测试系统104启动的计时器的任何系统或电路。该特定信息可以包括可以由视频游戏112插入到待输出的帧或图像的一个或多个像素中的任何信息。例如,该信息可以包括指示计时器系统120停止计时器的停止命令或标签。可以通过从用于对视频游戏112编程的应用程序编程接口(API)或软件开发工具包(SDK)调用、执行或以其他方式实例化函数或方法,将信息插入到帧或图像的一个或多个像素中。
计时器系统120可以响应于从前端测试系统104接收的触发器来启动一个或多个计时器。前端测试系统104可以在将来自命令序列储存库114的命令提供给用户计算系统110时触发计时器。当计时器系统120识别嵌入在帧的像素中的特定标签或数据片段时,计时器系统120可以停止计时器。计时器系统120可以向测试服务器124提供流逝的时间的度量,该测试服务器124可以向用户呈现流逝的时间的度量。该流逝的时间的度量可以对应于当用户接口电路向用户计算系统110提供命令时和当在视频游戏112处发生相应的事件时之间的延迟。在一些实施方案中,计时器可以是计数器,该计数器对自计数器启动直到发生与命令相应的事件已经在视频游戏112内发生的多个事件的发生计数。替代地或附加地,计数器可以测量在视频游戏112处发生相应的事件之前由用户计算系统110输出的帧的数量。因此,在一些实施方案中,命令延迟可以是时间的度量、发生的事件的度量、输出的帧的度量或可以关于被测视频游戏的执行和/或提供给托管被测视频游戏112的用户计算系统110的命令测量的任何其他度量。
在一些实施方案中,计时器系统120可以修改或调整测量的时间以考虑视频游戏测试系统102内的测量的延迟。例如,在一些情况下,存在在解码的像素被提供给控制器118与处理的或过滤的像素子集被传送到计时器系统120之间发生的非无限小量的时间。例如,在一个原型中,控制器118和计时器系统120之间的通信时间始终被确定为3.8毫秒。因此,计时器系统120可以被配置为将测量的时间调整3.8毫秒以考虑由视频游戏测试系统102引入的延迟。在某些实施方案中,由于用户计算系统110或用于创建视频游戏112的特定游戏引擎的限制,可能发生额外的延迟。在一些情况下,计时器系统120可以将测量的流逝的时间修改该额外的延迟。
用户接口电路108可以被实现为专用集成电路(ASIC)、现场可编程门阵列(FPGA)、微控制器(例如,如在前端测试系统104的原型中使用的来自的/>M4),或任何其他类型的专用计算系统或集成电路。此外,用户接口电路108可以与用户计算系统110的端口接口连接。该端口可以是专用端口或标准化端口,例如通用串行总线(USB)端口。使用专用电路使得前端测试系统104能够小型化。例如,前端测试系统可以与由前端测试系统104模拟的用户接口设备一样小或比它更小。替代地,在某些实施方案中,用户接口电路108可以是通用计算机。此外,命令序列储存库114可以任何类型的易失性或非易失性存储器实现,该易失性或非易失性存储器例如ROM、RAM、SRAM、闪存或磁硬盘驱动器。在某些实施方案中,命令序列储存库可以在用户接口电路108的存储器中实现。因此,在某些实施方案中,可以组合用户接口电路108和命令序列储存库114。
可以使用ASIC、FPGA、微控制器或任何其他类型的专用计算系统或集成电路来实现解码器116。例如,解码器116可以是被专门设计用于将HDMI信号转换为像素的数字信号处理器。在后端测试系统106的原型实现中,使用包括来自Analog 公司的ADV7611 ASIC的定制的HDMI解码器板来实现解码器116。然而,解码器116不限于此,并且任何专用系统或集成电路可用于将用户计算系统110的输出解码成像素。
可以使用ASIC、FPGA、微控制器或任何其他类型的专用计算系统或集成电路来实现控制器118。此外,随着用户计算系统110的输出信号被转换或解码,控制器118可以从解码器116接收像素。换句话说,在某些实施方案中,像素可以以特定顺序(例如,对于图像从左上到右下)流式传输到控制器118。通过随着生成像素而将像素流式传输到控制器118,控制器118可以更容易地识别要提供给计时器系统120的像素子集。
可以使用ASIC、FPGA、微控制器或任何其他类型的专用计算系统或集成电路来实现计时器系统120。此外,计时器系统120可以从控制器118接收像素子集。计时器系统120可以从像素子集中提取数据以确定停止条件或其他数据是否被嵌入到像素子集中。在一些情况下,从像素子集中提取数据可以包括:将像素值与存储在计时器系统120处的与特定数据或条件相关联的像素值库进行比较。例如,计时器系统120可以将像素子集的像素值与指示视频游戏112中已经发生事件的值或值集进行比较。该值或值集可以存储在计时器系统120的存储器中。
前端测试系统104可以在用户计算系统110、测试服务器124和后端测试系统106之间接口连接或以其他方式与它们通信。前端测试系统104可以经由直接连接或通过网络(未示出)与测试服务器124通信。通常,前端测试系统104将经由直接连接诸如物理线路,与用户计算系统110和后端测试系统106通信。期望具有在前端测试系统104、后端测试系统106和用户计算系统110中的每一个之间的直接连接,以减少或消除通信延迟。该通信延迟可以增加在与用户输入设备的交互和视频游戏112中相应事件的发生之间的延迟的测量中的错误。尽管通常期望前端测试系统104、后端测试系统106和用户计算系统110中的每一个之间的连接是直接或有线连接,但所述连接中的至少一个是无线连接是可能的并且有时甚至是期望的。例如,可能期望测试通过使用无线控制器引入的延迟量,以确定在使用无线控制器时视频游戏112是否具有期望的响应性。在一些这样的情况下,前端测试系统104可以被配置为与用户计算系统110无线通信,以获得与用户输入设备的交互和视频游戏112中相应事件的发生之间的延迟的测试测量结果。
如前所述,用户计算系统110可以包括视频游戏112或对该视频游戏进行托管。在一些情况下,视频游戏112可以完全在用户计算系统110上执行。在其他情况下,视频游戏112可以至少部分地在用户计算系统110上执行并且至少部分地在另一计算系统诸如服务器上执行。在一些情况下,视频游戏112可以完全地在服务器上执行,但是用户可以经由用户计算系统110与视频游戏112交互。例如,游戏可以是大型多玩家在线角色扮演游戏(MMORPG),该大型多玩家在线角色扮演游戏包括由用户计算系统110执行的客户端部分和由一个或多个应用程序主机系统执行的服务器部分,所述应用程序主机系统可以被包括作为基于网络的交互式计算系统的一部分。作为另一个示例,视频游戏112可以是在不与另一系统交互的情况下在用户计算系统110上玩的冒险游戏。
用户计算系统110可以包括用于通过通信网络(未示出)建立通信的硬件和软件部件。例如,用户计算系统110可以配备经由网络(例如,因特网)或内联网促进通信的联网设备和网络软件应用程序(例如,网页浏览器)。用户计算系统110可以具有各种各样的本地计算资源,诸如中央处理单元和架构、存储器、大容量存储装置、图形处理单元、通信网络可用性,以及带宽等。此外,用户计算系统110可以包括任何类型的计算系统。例如,用户计算系统110可以包括任何类型的计算设备,诸如台式电脑、膝上型计算机、视频游戏平台或控制台(诸如或Nintendo SwitchTM)、电视机机顶盒、电视(例如,因特网电视)、启用网络的自助服务终端(kiosk)、汽车控制台设备、计算机化器具、可穿戴设备(例如,具有计算功能的智能手表和眼镜)和无线移动设备(例如,智能电话、PDA、平板计算机等),仅举几例。在一些实施方案中,用户计算系统110可以包括下文关于图6和图7描述的实施方案中的一个或多个。
显示系统122可以包括用于显示用户计算系统110的输出的任何系统。在一些实施方案中,显示系统122可以是用户计算系统110的一部分。例如,如果用户计算系统110是便携式游戏系统,显示系统122可以内建于用户计算系统110中。在其他实施方案中,显示系统122可以与用户计算系统110分开。例如,如果用户计算系统110是游戏控制台,显示系统122可以是相比于用户计算系统122可以由不同实体制造或销售的电视。
测试服务器124可以包括可以与视频游戏测试系统102接口连接以向视频游戏测试系统102提供一系列指令或命令以在延迟测试或确定过程期间执行的任何类型的计算系统,该延迟测试或确定过程例如过程200。例如,测试服务器124可以是服务器计算系统、台式电脑、膝上型计算机、基于网络的或云计算系统,或测试者可用来便于使用视频游戏测试系统102测试视频游戏112或托管视频游戏112的用户计算系统110的任何其他计算系统。
如前所述,为了减少视频游戏测试系统102和用户计算系统110之间的通信延迟,视频游戏测试系统102可以通过有线连接直接连通。不过在某些实施方案中,视频游戏测试系统的一个或多个元件可以与用户计算系统110无线通信,使得测试者能够针对使用无线用户接口设备与视频游戏112交互的用户确定对延迟的影响。
测试服务器124可以直接与视频游戏测试系统102通信,或者经由网络(未示出)与视频游戏测试系统102通信。网络可以包括任何类型的通信网络。例如,网络可以包括广域网(WAN)、局域网(LAN)、蜂窝网络、自组织网络(ad hoc network)、卫星网络、有线网络、无线网络等中的一个或多个。此外,在一些情况下,网络可以包括因特网。
示例命令延迟测试过程
图2呈现了根据某些实施方案的命令执行延迟测试过程200的流程图。过程200可以由可以确定与视频游戏112的交互和对应于与视频游戏112的交互的或由与视频游戏112的交互以其他方式触发的事件的发生之间的延迟或时间的度量的任何系统实现。过程200全部或部分地可以通过例如视频游戏测试系统102、前端测试系统104、后端测试系统106、用户接口电路108、解码器116、控制器118或计时器系统120等实施。尽管任何数量的系统全部或部分地可以实施过程200,但为了简化讨论,将参考特定系统描述过程200。
过程200在框202处开始,在框202处前端测试系统108接收对应于与用户接口的交互的指令集。指令可以包括单个指令、一个指令序列或多个指令序列。在一些情况下,每个指令序列可以与单独的测试、视频游戏112的一不同部分的测试或处于不同条件或状态下的视频游戏112的测试相关联。所接收的指令可以对应于用户在玩视频游戏112时可以执行的与用户接口设备的交互。例如,指令可以表示当用户与用户接口设备交互时提供给托管视频游戏112的用户计算系统110的命令。例如,当用户按压游戏控制器上的“向上”按钮时,游戏控制器可以向用户计算系统110提供特定命令,通知用户计算系统110用户按压了“向上”按钮。从前端测试系统108接收的指令可以包括相同的特定命令。因此,所接收的指令可以模拟用户与游戏控制器交互。
用户接口设备可以包括用户可以用来玩视频游戏112或与视频游戏112交互的任何设备。例如,用户接口设备可以是游戏手柄或游戏控制器、键盘、鼠标或触敏显示器。
在框204处,前端测试系统104在视频游戏测试系统102的存储装置处存储在框202处的接收的指令集。例如,前端测试系统104可以在命令序列储存库114和/或在用户接口电路108的存储器或存储装置处存储指令集。在一些实施方案中,存储指令集可包括存储识别指令集的标记或标签。例如,标签可以指示或识别包括在指令集中的命令、基于指令集在视频游戏112处执行的动作、可以由指令集测试的视频游戏112的一部分,或者可以将该指令集与存储在命令序列储存库114处的另一指令集或指令序列区分开的任何其他信息。
在框206处,前端测试系统104接收触发器以启动延迟测试。触发器可以从用户接收,或者可以是自动触发器,例如自动测试过程的一部分。此外,可以响应于用户直接与视频游戏测试系统102交互而接收触发器,或者可以从测试服务器124接收触发器。在一些实施方案中,用户计算系统110可以在框206处提供触发器。在一些情况下,触发器可以响应于视频游戏112的代码的改变,或可以响应于视频游戏112的代码的改变而被接收。在某些实施方案中,触发器可以包括存储在命令序列储存库114处的命令或命令序列的标识。例如,触发器可以包括标记、标签或将命令器(commander)命令序列与存储在例如命令序列储存库114处的另一命令器命令序列区分开的其他参考。
在框208处,前端测试系统104触发计时器系统120处的延迟计时器。触发计时器系统120处的延迟计时器可包括启动计时器系统120处的多个计时器。例如,在一些情况下,可能期望测量对应于由用户接口电路108提供给用户计算系统110的一个或多个命令在视频游戏112处发生多个事件之前的时间量。此外,在某些实施方案中,触发计时器系统120处的延迟计时器可以包括识别用于计时器系统120的、指示计时器系统120何时停止延迟计时器中的一个或多个的特定停止条件。每个延迟计时器可以与由计时器系统120监视的不同停止条件相关联,如下面更详细描述的。
在一些情况下,触发计时器系统120处的多个计时器可以包括识别每个计时器的顺序或等级。每当检测到停止条件时,计时器系统120可以停止具有最高等级的现用计时器。因此,一旦第一等级计时器停止,第二等级计时器可以成为等级最高的计时器,并且可以在计时器系统120识别第二停止条件时停止。有利地,在某些实施方案中,通过触发各自与不同停止条件相关联或被配置为在不同时间停止的多个计时器,可以针对可能由命令触发的多个事件,测量向用户计算系统110提供命令和相应事件的发生或触发之间的延迟或时间的度量。
在框210处,前端测试系统104从用于存储在框202处接收的指令的存储装置加载一个或多个指令。例如,前端测试系统104可以从命令序列储存库114加载这一个或多个指令。在一些实施方案中,前端测试系统104可以一次加载单个指令,作为框210的一部分。在其他实施方案中,前端测试系统104可以一次加载对应于特定测试或指令序列的子集的指令序列。前端测试系统104可以基于在框206处接收的触发器或基于随触发器被包括的标记确定要加载的指令或指令序列。
在框212处,用户接口电路108将一个或多个指令传送到执行被测视频游戏112的用户计算系统110。将一个或多个指令传送到用户计算系统110可以包括:发送用户接口设备在向用户计算系统110提供指令时会传送给用户计算系统110的相应数据或指令。例如,如果用户接口电路108要传送与按压并保持游戏控制器上的特定按钮相关联的指令,用户接口电路108可以传送游戏控制器会传送给用户计算系统110的相同数据或指令。因此,在某些实施方案中,用户接口电路108可以模拟游戏控制器或用户计算系统110的其他用户接口设备。
在某些实施方案中,与框212和/或框208相关联的操作可以包括触发用于传送到用户计算系统的每个指令的不同延迟计时器。在其他实施方案中,与框212和/或框208相关联的操作可以包括触发用于第一指令、最后指令或传送到用户计算系统110的特定指令子集的延迟计时器。
在框214处,计时器系统120至少部分地基于在框208处出现的触发器和检测到的停止条件来确定执行一个或多个指令的延迟时间测量结果。可以基于用户计算系统110的输出来检测该检测到的停止条件。该输出可以是提供给或意图提供给显示系统122但是由后端测试系统106捕获的输出。如前所述,延迟时间测量结果可以与命令由用户接口电路108提供给用户计算系统110和在视频游戏112处发生事件之间流逝的时间量相关联。在某些实施方案中,延迟时间测量结果通过自用户接口108向用户计算系统110提供命令以来在视频游戏112内已经发生的多个事件和/或已经输出的多个帧来测量,事件在视频游戏112内发生。下面关于图3描述与在确定延迟时间测量结果方面检测停止条件有关的附加细节。
尽管被描述为单个过程,但是应当理解,过程200可以被划分为多个过程和/或可以在不同时间执行的与过程200相关联的多个操作。例如,与框202和204相关联的操作可以先于过程200的剩余操作在某个时间发生。例如,在第一时间段期间,可以接收一个或多个指令序列以在命令序列储存库114处存储。在第一时间段之后的某个时间出现的第二时间段期间,可以对视频游戏112的一次或多次迭代执行一个或多个测试。这一个或多个测试可以包括执行与过程200的框206到214相关联的操作。
此外,应当理解,与过程200相关联的操作可以以不同的顺序串行地,或至少部分地并行地执行。例如,可以在与框210相关联的操作之后执行与框208相关联的操作。作为另一示例,与框208相关联的操作可以至少部分地同与框212相关联的操作并行地执行。例如,与作为框212的一部分、用户接口电路108将至少一个指令传送给用户计算系统110同时地或基本上同时地,用户接口电路108可以触发计时器系统120处的计时器,作为框208的一部分。
示例延迟确定过程
图3呈现了根据某些实施方案的延迟确定过程300的流程图。过程300可以由如下的任何系统实现:该系统可以通过至少部分地检测输出中的嵌入停止条件来确定与视频游戏112的交互和对应于与视频游戏112的交互的或由与视频游戏112的交互以其他方式触发的事件的发生之间的延迟或时间的度量。过程300全部或部分地可以通过例如视频游戏测试系统102、前端测试系统104、后端测试系统106、用户接口电路108、解码器116、控制器118或计时器系统120等来实施。尽管任何数量的系统全部或部分地可以实施过程300,但为了简化讨论,将关于特定系统描述过程300。
在某些实施方案中,过程300可以与过程200组合,或作为过程200的一部分执行。例如,与框306-322相关联的操作可以作为与过程200的框214相关联的操作执行,或作为与过程200的框214相关联的操作的一部分执行。此外,框302和304可以分别对应于框210和212。
过程300在框302处开始,在框302处前端测试系统104从存储装置例如命令序列储存库114加载指令。在某些实施方案中,框302可以包括关于框210描述的实施方案中的一个或多个。
在框304处,用户接口电路108将指令传送到托管或执行被测视频游戏112的至少一部分的用户计算系统110。在某些实施方案中,框304可以包括关于框212描述的实施方案中的一个或多个。
在框306处,后端测试系统106从用户计算系统110接收输出信号。可以从被配置为向显示系统122提供输出的用户计算系统110的输出端口接收输出信号。例如,输出端口可以是HDMI端口、DisplayPort或任何其他视频输出端口。在某些实施方案中,后端测试系统106连接到用户计算系统110以代替显示系统122。在其他实施方案中,信号捕获设备或分路器可用于获得输出到显示系统122的信号的副本,而不阻止将信号提供给显示系统122。因此,在某些实施方案中,后端测试系统106可用于测量延迟,同时用户观察输出到显示系统122的内容。通过使得当后端测试系统测量延迟时用户能够查看显示系统122,用户可以至少部分地基于显示系统122上显示的视图来确定是否修改正在执行的测试。从用户计算系统110接收的输出信号可以对应于由视频游戏112输出用于显示的动画的图像或帧。
在框308处,解码器116将输出信号转换为像素。将输出信号反转为像素可以包括基于输出信号生成动画的图像或帧。
在框310处,控制器118对像素进行后处理以获得与嵌入数据相关联的像素子集。对像素进行后处理可以包括过滤形成在框308处生成的动画的图像或帧的像素,以获得与嵌入数据相关联的像素子集。替代地或附加地,对像素进行后处理可以包括选择或以其他方式获得被指定为包括嵌入数据的像素子集。在某些实施方案中,后处理涉及裁剪图像或帧以隔离被指定为包括嵌入数据的像素子集。像素子集可以包括来自图像的特定数量的像素,例如最初的1024或2048像素。替代地,像素子集可以是与特定数据量相关联的像素,例如包括在图像或帧中的2048比特或2048字节的数据。
动画的图像或帧的像素子集包括被指定为包括嵌入数据的像素,但是对于特定图像而言,可以包括或不包括嵌入数据。换句话说,在某些实施方案中,某些图像或帧可以包括嵌入数据,而其他图像是可以不包括嵌入数据的帧。
在判定框312处,计时器系统120确定嵌入数据是否包括停止条件。在某些实施方案中,确定嵌入数据是否包括停止条件可以包括确定像素子集是否包括嵌入数据。如果确定像素子集不包括嵌入数据,判定框312确定没有出现停止条件。
停止条件可以包括当执行与视频游戏112相关联的代码时可以通过API或SDK插入到动画的图像或帧中的任何数据。例如,当在视频游戏112的执行期间发生特定事件时,可以调用包括在API中的函数以将特定数据插入到动画的图像或帧中以待输出以警告用户或后端测试系统106事件的发生。该特定数据可以是图像或帧内的像素集的特定颜色或不透明度。在一些情况下,停止条件可以是存储在被配置为存储像素数据的存储器的字节中的特定标记或其他值。
API或SDK可以是用于测试或便于测试视频游戏的代码的测试代码或测试工具的一部分或者可以提供该测试代码或测试工具。例如,对于开发者希望测试的特定代码片段,开发者可以在代码片段的末尾插入对便于测试代码片段的API或SDK中的函数的调用。在开发者想要测试特定事件的延迟的情况下,开发者可以在待测试的代码的末尾(或其他期望位置)插入对函数的调用,该函数将数据插入或嵌入到待输出的帧中。该嵌入数据可以用使视频游戏测试系统102能够检测到特定事件已经发生的信息(例如停止条件、标记或其他标识)替换帧中的一些像素。因此,一旦指示事件已经发生的信息已经从帧被解码,视频游戏测试系统102就可以使用计时器来确定自启动计时器或接收到导致特定事件发生的模拟用户交互以来流逝的时间量。
在一些实施方案中,可以在可以被称为“目标事件”的特定事件发生时插入停止条件。该目标事件可以对应于在框304处提供给用户计算系统110的指令或由在框304处提供给用户计算系统110的指令触发。在一些实施方案中,当用户计算系统110接收到指令时视频游戏112处于特定状态时触发事件。
在一些实施方案中,程序员可以将库调用插入到包括在与视频游戏112的测试相关联的API中的函数(function,功能)。该函数可以是由API使得程序员或编码器可用的函数,使得程序员能够从正在执行的应用程序提取数据以促进测试过程。如果存在程序员希望测试的代码的特定部分,程序员可以将函数调用插入代码的特定部分。替代地,测试函数可以内置于从API可用的一些或所有函数中或随从API可用的一些或所有函数被包括。在一些这样的情况下,可以使用标志或其他触发器来在视频游戏112的执行期间启用或停用测试函数。
如果在判定框312处确定嵌入数据不包括停止条件,则过程300可以进行到框302。在框302处,可以从存储装置加载另一个指令以提供给用户计算系统110。替代地,过程300可以进行到框304。例如,如果最初在框302处加载了一系列指令或命令,则过程300可以返回到框304以将先前加载的指令之一传送给用户计算系统110。作为又一替代方案,过程300可以进行到框306。例如,在一些情况下,可以不向用户计算系统110提供附加指令是测试的一部分,但是对应于先前提供的指令的或由先前提供的指令以其他方式触发的事件可能尚未在视频游戏112处发生。因此,在判定框312之后,过程300可以返回到框306以继续处理输出,直到识别出具有停止条件的嵌入数据。
如果在判定框312处确定嵌入数据的确包括停止条件,则计时器系统120在框314处停止延迟计时器。停止延迟计时器可以包括停止多个正在进行的计时器中的一个。停止的延迟计时器可以与在判定框312处识别的停止条件相关联。由计时器系统120管理的其他计时器可以继续运行。在一些实施方案中,计时器系统120在框314处不停止延迟计时器,而是记录自延迟计时器启动以来流逝的时间。有利地,在某些实施方案中,通过记录延迟计时器的时间值以及允许延迟计时器继续运行,计时器系统120可以使用单个计时器监视由单个指令触发的或对应于传送给用户计算系统的单个指令的多个事件的发生。
在框316处,计时器系统120确定延迟时间测量结果。确定延迟时间测量结果可以包括确定当指令被传送给用户计算系统时或者当指令由视频游戏112执行时的时间点与在视频游戏112处发生事件的时间点之间的差异,该事件由它与指令的对应性触发。如前所述,事件可以是特定动画被播放、动画内的特定帧被显示、声音被播放、视频游戏112内的特定状态变量的状态的改变、视频游戏112的状态的改变,或可以至少部分地基于在框304处提供的指令修改的视频游戏112的任何其他方面。在某些实施方案中,框316可以包括关于框214描述的实施方案中的一个或多个。
在框318处,计时器系统120针对由视频游戏测试系统102引入的延迟调整延迟时间测量结果。针对由视频游戏测试系统102引入的延迟调整延迟时间测量结果可以包括:将延迟时间测量结果减少与视频游戏测试系统102的元件相关联的时间量。例如,在评估视频游戏测试系统102的原型期间确定控制器118和计时器系统120之间的通信需要3.8ms。3.8ms的值是控制器118和计时器系统120之间的通信的确定性测量结果。因此,在该特定示例中,延迟时间测量结果可以减少3.8ms。原型中解码器116和控制器118之间的通信时间是可忽略的。然而,在确定解码器116和控制器118之间的通信时间是不可忽略的实施方案中,可以通过所确定的通信时间来调整延迟时间测量结果。
因为,在某些实施方案中,视频游戏测试系统102使用经由引脚和或短线直接连接的一个或多个专用硬件设备来实现,所以与使用通用计算硬件相比,视频游戏测试系统102的硬件元件之间的延迟量可以是确定性的并且基本上不变的。因此,视频游戏112的特定实现中的特定指令的延迟的测量结果可以是可重复的,可以在多个测试迭代之间提供基本相同的结果。在某些实施方案中,与框318相关联的操作可以是可选的或被省略。
在框320处,计时器系统120从调整的延迟时间测量结果中过滤延迟噪声。延迟噪声可以包括与视频游戏112的特定代码、资源或资产无关或非视频游戏112的特定代码、资源或资产所特定的延迟或推迟。换句话说,延迟噪声可以是与程序员创建的代码或图形艺术家在开发视频游戏112中可以生成的各种动画无关的噪声。例如,延迟噪声可以包括由用户计算系统110本身的配置或由用于开发视频游戏112的编码引擎引入的延迟。例如,一些用户计算系统可以被配置为被设计成每60秒仅显示一个新帧。然而,在一些情况下,视频游戏112可能能够以比每60秒一次更快的速率生成新帧。在这样的情况下,尽管帧可以准备好输出,但是输出可以被拖延,直到用户计算系统110准备好输出另一帧。在帧准备好输出和用户计算系统110可以输出帧之间的这种延迟可以被测量并在框320处从在框316处确定的延迟时间测量结果或从框318的经调整的延迟时间测量结果减去。在某些实施方案中,在帧准备好输出和用户计算系统110准备好输出帧之间的延迟可以是有意的,以防止屏幕撕裂,并且可以称为垂直同步或Vsync。
在一些情况下,因为不同类型的用户计算系统110可能引入不同的延迟噪声,所以视频游戏112的开发者可以使用本文公开的实施方案对另外的不同类型执行延迟测试,在某些实施方案中,视频游戏112的开发者可以制作或编程视频游戏112的不同版本,以便在不同类型的用户计算系统110上执行。例如,游戏系统和/>游戏系统之间的固有差异可能导致在相同状态下向视频游戏112提供的相同指令以不同的延迟被执行。在某些实施方案中,与框320相关联的操作可以是可选的或被省略。
在框322处,后端测试系统106输出经过滤的调整的延迟时间测量结果,作为在用户计算系统110处接收指令与在视频游戏112处发生特定事件之间的延迟或时间的度量。该输出可以显示在屏幕上,例如测试服务器124的显示器上。替代地,或附加地,输出可以存储在储存库中,该储存库稍后可以由用户或自动测试系统访问。在一些实施方案中,用户,诸如开发者,可以基于在框322处的延迟时间测量结果输出来修改与视频游戏112相关联的代码。在某些实施方案中,自动测试或开发系统可以基于延迟时间测量结果自动调整视频游戏112的代码或参数,以获得特定目标时间测量结果。在某些实施方案中,例如当测试在视频游戏竞赛中(例如在电子竞技比赛中)使用的计算系统时,用户可以至少部分地基于在框322处的延迟时间测量结果的输出来修改用户计算系统110的配置。
在一些实施方案中,前端测试系统104可以至少部分地基于在框320处确定的经过滤的调整的延迟时间测量结果来确定要加载和/或传送到执行被测视频游戏的用户计算系统的后续指令。该后续指令可以是先前在框304处传送的相同指令的重复,或者可以是不同的指令。
此外,在一些实施方案中,可以至少部分地基于包括在像素子集中的嵌入数据来确定要加载的指令或何时向用户计算系统提供该指令。有利地,在某些实施方案中,可以执行自动测试,该自动测试包括基于被测视频游戏的特定状态的检测来确定要提供的特定指令和何时提供该指令的定时。被测视频游戏的此特定状态可以被传送到前端测试系统104,作为嵌入在像素子集中的数据。
在一些实施方案中,可以至少部分地基于在框304处提供的一个或多个指令的测得的延迟来确定视频游戏的代码的效率的度量。此外,可以通过测量在视频游戏的不同状态期间执行的命令的延迟来比较视频游戏内的不同点处的效率。另外,可以比较针对不同版本的视频游戏执行的命令的延迟,以确定可以在不同类型的计算系统上和/或在相同类型的计算系统上运作但是在视频游戏112的代码上有改变的视频游戏的不同版本之间的相对效率。
尽管本公开内容主要涉及使用视觉输出来测试视频游戏112,但是在某些实施方案中可以使用音频输出。例如,当事件发生时视频游戏112可以播放特定声音。后端测试系统106可以捕获声音,指示计时器应该停止并且没有延迟度量应该被确定。
具有嵌入数据的示例输出帧
图4示出了根据某些实施方案的包括嵌入数据的示例输出帧400。输出帧400可以是由视频游戏112输出的动画的一帧。该动画可以是正在播放的视频或非交互动画的一部分,或者可以是响应于来自用户的输入而改变的交互式场景的一部分。输出帧400的一部分可以被配置为包括已经通过在视频游戏112的开发期间使用的API、SDK或库插入到帧400中的嵌入数据。输出帧的该部分可以是被指定为具有对应于开发者想要从视频游戏112获得的信息的某些颜色或不透明度值的特定像素集。该信息可以是视频游戏112内的事件的发生或触发。帧400的该部分可以称为有效载荷402,并且嵌入的信息可以称为有效载荷数据。
在某些实施方案中,不同的颜色或不透明度值可以指示视频游戏112内的不同信息或不同事件的发生。类似地,有效载荷402内的不同像素可以与被监视的不同事件相关联。应当理解,帧400的有效载荷402是识别已由例如接收的命令触发的事件的通信介质。但是,事件可能是或可能不是动画或动画本身的帧的出现。例如,事件可以是视频游戏112内可能对用户不可见的特定状态的设置,诸如将物品添加到角色的库存。虽然用户可以访问库存以查看该物品,但是在将该物品添加到库存时可能不一定显示库存。测试者可能想要确定当用户与物品进行交互以获取物品时该物品被多快地添加到用户的库存。作为另一个例子,事件可以是播放声音或射击在炮弹击中敌人时的特定时间点不可见的敌人。
图5示出了根据某些实施方案的图4的示例输出帧的一部分的展开图。线502可以指示视频游戏112中事件的发生。将线502与线504进行比较,可以看出嵌入数据可以具有不同的颜色并且可以分布在多个不同的像素上。线502和504中的每一个可以与被监视的不同事件相关联。在一些实施方案中,嵌入数据是停止标签或包括识别已经出现停止条件的数据。线502和504之间的间隙506可以对应于尚未发生或触发的事件,因此间隙506中不包括嵌入数据。
尽管包括嵌入数据的像素在图4和图5中可见,但应理解,在某些情况下,包括嵌入数据的像素可能不可见。例如,像素可以在数量上足够少以使观察者不可见。作为另一示例,具有嵌入数据的像素可以混合到正在显示的动画帧中。
计算系统的概览
图6示出了也被称为游戏系统的用户计算系统110的一个实施方案。如所示出的,用户计算系统110可以是可以包括多个元件的单个计算设备。然而,在一些情况下,用户计算系统110可以包括多个设备。例如,用户计算系统110可以包括:包括中央处理单元和图形处理单元的一个设备,包括显示器的另一设备,以及包括输入机构诸如键盘或鼠标的另一设备。
用户计算系统110可以是可以执行游戏系统的计算系统的一个实施方案。在图6的非限制性实施例中,用户计算系统110是能够经由触摸屏显示器602从用户接收输入的可触摸计算设备。然而,用户计算系统110并不限于此,可以包括非可触摸的实施方案,该非可触摸的实施方案不包括触摸屏显示器602。
用户计算系统110包括触摸屏显示器602和触摸屏接口604,并且被配置为执行游戏应用程序610。该游戏应用程序可以是视频游戏112,或者是连同视频游戏112一起执行或支持该视频游戏的应用程序,诸如视频游戏执行环境。虽然被描述为游戏应用程序610,但是在一些实施方案中,应用程序610可以是可以至少部分地基于用户的偏好或能力而具有可变的执行状态的另一种类型的应用程序,诸如教学软件。尽管用户计算系统110包括触摸屏显示器602,但应认识到,可以除触摸屏显示器602之外或代替触摸屏显示器602使用多种输入设备。
用户计算系统110可以包括一个或多个处理器,诸如中央处理单元(CPU)、图形处理单元(GPU)和加速处理单元(APU)。此外,用户计算系统110可以包括一个或多个数据存储元件。在一些实施方案中,用户计算系统110可以是出于执行游戏应用程序610的目的创建的专用计算设备。例如,用户计算系统110可以是视频游戏控制台。由用户计算系统110执行的游戏应用程序610可以是使用特定的应用程序编程接口(API)创建的,或者可以被编译为可以特定于用户计算系统110的特定指令集。在一些实施方案中,用户计算系统110可以是能够执行游戏应用程序610和非游戏应用程序的通用计算设备。例如,用户计算系统110可以是具有集成触摸屏显示器的膝上型计算机或者具有外部触摸屏显示器的台式电脑。关于图7更详细地描述了用户计算系统110的示例实施方案的部件。
触摸屏显示器602可以是电容性触摸屏、电阻式触摸屏、表面声波触摸屏或被配置成从用户接收触觉输入——也被称为触摸输入——的其他类型的触摸屏技术。例如,可以经由一个手指触摸屏幕、多个手指触摸屏幕、手写笔或者可以用于在触摸屏显示器602上记录触摸输入的其他刺激物来接收触摸输入。触摸屏接口604可以被配置为将触摸输入转化成数据并且输出数据,使得其可以被用户计算系统110的部件——诸如操作系统和游戏应用程序610——解读。该触摸屏接口604可以将触觉触摸输入触摸的特性转化成触摸输入数据。触摸输入的一些示例特性可以包括形状、大小、压力、位置、方向、动量、持续时间和/或其他特性。触摸屏接口604可以被配置为确定触摸输入的类型,诸如,例如轻击(例如,在单个位置处触摸并释放)或者滑动(例如,在单个触摸输入中移动通过触摸屏上的多个位置)。触摸屏接口604可以被配置成检测和输出与同时地或基本上并行地发生的多个触摸输入相关联的触摸输入数据。在一些情况下,同时的触摸输入可以包括其中用户维持在触摸屏显示器602上的第一触摸、同时随后在触摸屏显示器602上执行第二触摸的实例。触摸屏接口604可以被配置为检测触摸输入的移动。可以将触摸输入数据传输到用户计算系统110的部件供处理。例如,可以将触摸输入数据直接传输到游戏应用程序610供处理。
在一些实施方案中,在被输出到游戏应用程序610之前,触摸输入数据可以经受由触摸屏接口604、操作系统或者其他部件进行的处理和/或滤波。作为一个示例,可以从触摸输入捕获原始触摸输入数据。可以对原始数据进行滤波以移除背景噪声,可以测量与输入相关联的压力值,以及可以计算与触摸输入相关联的位置坐标。提供给游戏应用程序610的触摸输入数据的类型可以取决于触摸屏接口604和与触摸屏接口604相关联的特定API的具体实现。在一些实施方案中,触摸输入数据可以包括触摸输入的位置坐标。可以以限定的频率输出触摸信号数据。处理触摸输入可以每秒计算许多次,并且可以将触摸输入数据输出到游戏应用程序以用于进一步处理。
游戏应用程序610可以被配置成在用户计算系统110上执行。游戏应用程序610还可以被称为视频游戏、游戏、游戏代码和/或游戏程序。游戏应用程序应当被理解为包括用户计算系统110可以使用以提供供用户玩的游戏的软件代码。游戏应用程序610可能包括向用户计算系统110通知要执行的处理器指令的软件代码,但还可能包括在玩游戏方面使用的数据,诸如与常量、图像和其他数据结构相关的数据。例如,在所示出的实施方案中,游戏应用程序包括游戏引擎612、游戏数据614以及游戏状态信息616。
用户计算系统110的触摸屏接口604或另一部件诸如操作系统可以提供用户输入诸如触摸输入至游戏应用程序610。在一些实施方案中,用户计算系统110可以包括替代的或者附加的用户输入设备,诸如鼠标、键盘、相机、游戏控制器等。用户可以经由触摸屏接口604和/或一个或多个替代的或附加的用户输入设备与游戏应用程序610交互。游戏引擎612可以被配置为在用户计算系统110内执行游戏应用程序610的操作的各方面。游戏应用程序内的玩游戏的各方面的执行可以至少部分地基于所接收的用户输入、游戏数据614以及游戏状态信息616。游戏数据614可以包括游戏规则、预录的运动捕获姿势/路径、环境设置、约束、动画参考曲线、骨架模型和/或其他游戏应用程序信息。此外,游戏数据614可以包括用于设置或调整游戏应用程序610的难度的信息。
游戏引擎612可以根据游戏规则来执行游戏内的玩游戏。游戏规则的一些示例可以包括用于打分、可能的输入、动作/事件、响应于输入的移动等的规则。其他部件可以控制接受哪些输入和游戏如何进展,以及玩游戏的其他方面。在游戏应用程序610的执行期间,游戏应用程序610可以存储游戏状态信息616,该游戏状态信息可以包括角色状态、环境状态、场景对象存储和/或与游戏应用程序610的执行状态相关联的其他信息。例如,游戏状态信息616可以识别游戏应用程序在特定时间点的状态,诸如角色位置、角色动作、游戏等级属性以及影响游戏应用程序的状态的其他信息。
游戏引擎612可以接收用户输入,并且确定适于游戏应用程序610的游戏内事件,诸如动作、碰撞、奔跑、投掷、攻击和其他事件。在运行期间,游戏引擎612可以读取游戏数据614和游戏状态信息616,以便确定合适的游戏内事件。在一个实施例中,在游戏引擎612确定角色事件之后,这些角色事件可以被传送到运动引擎,该运动引擎可以确定角色响应于该事件应当做出的合适运动,并将那些运动传递到动画引擎。动画引擎可以确定角色的新姿势,并且将新姿势提供到皮肤和渲染引擎。皮肤和渲染引擎又可以将角色图像提供至对象组合器,以便将有生命对象、无生命对象和背景对象组合成完整场景。可以将该完整场景传送至渲染器,该渲染器可以生成用于显示给用户的新帧。在执行游戏应用程序期间,可以重复该过程以用于渲染每一帧。虽然在角色的情况下描述了该过程,但是该过程可以应用于用于处理事件和渲染用于显示给用户的输出的任何过程。
计算系统的示例硬件配置
图7示出了用于图6的用户计算系统110的硬件配置的一个实施方案。用户计算系统110的其他变型可以代替本文明确呈现的实施例,诸如移除用户计算系统110的部件或向该用户计算系统添加部件。用户计算系统110可以包括专用游戏设备、智能手机、平板计算机、个人计算机、台式电脑、膝上型计算机、智能电视、汽车控制台显示器等。此外,(虽然没有在图7中明确地示出)如关于图6所描述的,用户计算系统110可以可选地包括触摸屏显示器602和触摸屏接口604。
如所示出的,用户计算系统110包括处理单元20,该处理单元与用户计算系统110的其他部件交互并且还与在用户计算系统110外部的部件交互。可以包括可以与游戏媒介12通信的游戏媒介读取器22。游戏媒介读取器22可以是能够读取光盘诸如CD-ROM或者DVD的光盘读取器,或者可以是可以从游戏媒介12接收和读取数据的任何其他类型的读取器。在一些实施方案中,游戏媒介读取器22可以是可选的或者被省略。例如,可以经由网络I/O38通过网络访问游戏内容或应用程序,从而使游戏媒介读取器22和/或游戏媒介12是可选的。
用户计算系统110可以包括单独的图形处理器24。在一些情况下,图形处理器24可以诸如用APU内置于处理单元20中。在一些这样的情况下,图形处理器24可以与处理单元20共享随机存取存储器(RAM)。替代地或附加地,用户计算系统110可以包括与处理单元20分开的分立图形处理器24。在一些这样的情况下,图形处理器24可以具有与处理单元20分开的RAM。此外,在一些情况下,图形处理器24可以连同一个或多个另外的图形处理器和/或连同嵌入的或非分立的图形处理单元一起工作,该嵌入的或非分立的图形处理单元可以被嵌入到主板中并且有时被称为板上图形芯片或设备。
用户计算系统110还包括用于使得能够输入/输出的各种部件,诸如I/O 32、用户I/O 34、显示I/O 36和网络I/O 38。如之前所描述的,在一些情况下,输入/输出部件可以包括触控设备。I/O 32与存储元件40交互,并且通过设备42与可移动存储媒介44交互,以便提供用于计算设备110的存储装置。处理单元20可以通过I/O 32进行通信以存储数据,诸如游戏状态数据和任何共享的数据文件。除了存储装置40和可移动存储媒介44之外,计算设备110还被示出包括ROM(只读存储器)46和RAM 48。RAM 48可以用于被频繁访问的数据,诸如当正在玩游戏时。
用户I/O 34用于在处理单元20与用户设备诸如游戏控制器之间发送和接收命令。在一些实施方案中,用户I/O 34可以包括触摸屏输入。如之前所描述的,触摸屏可以是电容性触摸屏、电阻式触摸屏或者被配置为通过触觉输入从用户接收用户输入的其他类型的触摸屏技术。显示I/O 36提供用于显示来自正在玩的游戏的图像的输入/输出功能。网络I/O38用于针对网络的输入/输出功能。在执行游戏期间,诸如当正在线玩游戏或者在线访问游戏时,可以使用网络I/O 38。
显示输出信号可以由显示I/O 36产生,并且可以包括用于在显示设备上显示由计算设备110产生的可视内容的信号,所述可视内容诸如图形、用户界面、视频和/或其他可视内容。用户计算系统110可以包括被配置为接收由显示I/O 36产生的显示输出信号的一个或多个集成显示器,所述显示输出信号可以被输出以用于显示给用户。根据一些实施方案,由显示I/O 36产生的显示输出信号还可以被输出到在计算设备110外部的一个或多个显示设备。
用户计算系统110还可以包括可以与游戏一起使用的其他特征,诸如时钟50、闪存52以及其他部件。音频/视频播放器56还可以用于播放视频序列,诸如电影。应当理解的是,可以在用户计算系统110中设置其他部件,并且本领域技术人员将会意识到用户计算系统110的其他变型。
程序代码可以存储在ROM 46、RAM 48或者存储装置40(其可以包括硬盘、其他磁存储装置、光存储装置、固态驱动器和/或其他非易失性存储装置,或者它们的组合或变型)中。程序代码的至少一部分可以存储在可编程的ROM(ROM、PROM、EPROM、EEPROM等)中、存储在存储装置40中和/或存储在可移动媒介诸如游戏媒介12(其可以是CD-ROM、盒式磁带(cartridge)、存储器芯片等,或者可以根据需要通过网络或其他电子渠道获得)上。通常,可以发现程序代码被包含在有形的非暂时性信号承载媒介中。
随机存取存储器(RAM)48(以及可能的其他存储装置)可根据需要用于存储变量以及其他游戏和处理器数据。使用RAM,RAM保存在玩游戏期间生成的数据,并且其一部分还可以被留出用于帧缓冲、游戏状态和/或对于解读用户输入和生成游戏显示而言所需要的或可用的其他数据。一般地,RAM 48是易失性存储装置,并且当用户计算系统110被关闭或者失去电力时,存储在RAM 48内的数据可能会丢失。
当用户计算系统110读取游戏媒介12并提供游戏时,可以从游戏媒介12读取信息并且将信息存储在存储设备诸如RAM 48中。另外地,来自存储装置40、ROM 46、经由网络(未示出)访问的服务器或可移动存储媒介46的数据可以被读取且加载到RAM 48中。虽然描述了在RAM 48中得到数据,但将理解的是,数据不是非要存储在RAM 48中,而是可以存储在处理单元20可访问的其他存储器中,或者分布在若干媒介诸如游戏媒介12和存储装置40中。
示例实施方案
可以根据以下条款描述本公开内容的实施方案:
条款1.一种被配置为在视频游戏的执行期间测试事件延迟的视频游戏测试系统,该视频游戏测试系统包括:
前端系统,被配置为:
访问模拟用户与用户计算系统的用户接口设备的交互的第一命令;和
向所述用户计算系统提供所述第一命令,以与由所述用户计算系统托管的视频游戏进行交互,其中向所述用户计算系统提供所述第一命令触发计时器;以及
后端系统,被配置为:
从所述用户计算系统接收一个或多个输出信号;
将所述一个或多个输出信号转换为像素集,所述像素集对应于用于由所述用户计算系统显示的帧输出;
识别嵌入在所述像素集中的停止条件的存在;以及
至少部分地基于触发所述计时器时的第一时间和与识别所述停止条件的存在相关联的第二时间来确定事件的事件延迟,其中至少部分地通过执行所述第一命令来触发所述事件。
条款2.根据条款1所述的视频游戏测试系统,其中,所述前端系统包括非易失性存储装置,所述非易失性存储装置被配置为存储对应于与所述用户接口设备的一个或多个交互序列的一个或多个命令序列,所述一个或多个命令序列中的至少一个包括所述第一命令。
条款3.根据条款1所述的视频游戏测试系统,其中,所述前端系统包括:存储装置,所述存储装置被配置为存储所述第一命令;和用户接口电路,所述用户接口电路被配置为向所述用户计算系统提供所述第一命令,并且其中,所述存储装置与所述用户接口电路并置,减少与模拟到所述用户计算系统的用户输入相关联的输入延迟。
条款4.根据条款1所述的视频游戏测试系统,其中,所述前端系统还被配置为与向所述用户计算系统提供所述第一命令基本上并行地触发所述计时器。
条款5.根据条款1所述的视频游戏测试系统,其中,所述前端系统还被配置为在向所述用户计算系统提供第二命令时触发第二计时器。
条款6.根据条款1所述的视频游戏测试系统,其中,所述前端系统包括用户接口电路,所述用户接口电路被配置为通过经由所述用户计算系统的接口端口向所述用户计算系统提供所述第一命令来模拟所述用户与所述用户接口的交互。
条款7.根据条款1所述的视频游戏测试系统,其中,所述后端系统包括所述计时器。
条款8.根据条款1所述的视频游戏测试系统,其中,所述后端系统还被配置为通过以下方式识别所述停止条件:
从所述像素集中过滤出像素子集,所述像素子集被配置为存储嵌入数据;
解码所述像素子集以获得所述嵌入数据;以及
确定所述嵌入数据是否包括所述停止条件。
条款9.根据条款1所述的视频游戏测试系统,其中,所述后端系统包括控制器,所述控制器被配置为向所述计时器提供来自所述像素集的像素子集。
条款10.根据条款9所述的视频游戏测试系统,其中,所述后端系统还被配置为至少部分地基于所述第一时间、所述第二时间以及所述控制器与所述计时器之间的通信延时来确定所述事件的事件延迟。
条款11.根据条款1所述的视频游戏测试系统,其中,所述前端系统包括一个或多个集成电路,并且所述后端系统包括与所述前端系统分开的一个或多个集成电路。
条款12.根据条款1所述的视频游戏测试系统,其中,所述事件包括以下中的至少一个:动画的输出、动画内的帧的输出、声音的输出、视频游戏的状态的改变或者视频游戏的要素的状态的改变。
条款13.根据条款1所述的视频游戏测试系统,其中,所述前端系统被配置为至少部分地基于所述事件的事件延迟来修改所述视频游戏的测试。
条款14.一种在视频游戏的执行期间测试事件延迟的方法,该方法包括:
当通过以硬件实现的视频游戏测试系统实现时,
接收触发器以测试视频游戏内的事件的事件延迟,其中所述事件延迟包括在与托管所述视频游戏的用户计算系统的用户接口设备的交互与所述事件的发生之间的时间量;
响应于接收到所述触发器,从命令序列储存器访问第一命令,所述第一命令模拟用户与所述用户接口设备的交互;
经由被配置为与所述用户接口设备通信的所述用户计算系统的接口向所述用户计算系统提供第一命令,其中所述视频游戏测试系统与所述用户计算系统接口连接,作为所述用户接口设备的替代;
从所述用户计算系统的输出端口接收一组输出信号;
将所述一组输出信号转换为像素集;
识别嵌入在所述像素集中的停止标志;以及
响应于识别所述停止标志,至少部分地基于与提供所述第一命令相关联的第一时间和与识别所述停止标志相关联的第二时间来确定所述事件的事件延迟。
条款15.根据条款14所述的方法,其中,确定所述事件延迟还包括:通过与所述视频游戏测试系统的元件之间的通信相关联的通信开销时间来修改所确定的延迟。
条款16.根据条款14所述的方法,其中,确定所述事件延迟还包括:通过与所述用户计算系统相关联的垂直同步延迟来修改所确定的延迟。
条款17.根据条款14所述的方法,还包括:过滤所述像素集以获得包括嵌入数据的像素子集,其中识别嵌入在所述像素集中的所述停止标志包括:提取嵌入在所述像素子集中的数据,以及确定所提取的数据是否包括所述停止标志。
条款18.根据条款14所述的方法,还包括:输出所述事件延迟用于在用户接口上呈现给用户。
条款19.根据条款14所述的方法,还包括:至少部分地基于所述事件延迟选择第二命令以提供给所述用户计算系统。
条款20.一种被配置为在视频游戏的执行期间测试命令执行延迟的视频游戏测试系统,所述视频游戏测试系统包括:
存储装置,所述存储装置被配置为存储模拟用户与用户计算系统的用户接口设备的交互的一个或多个命令;和
处理电路,所述处理电路被配置为:
访问来自所述存储装置的命令;
向所述用户计算系统提供所述命令以与由所述用户计算系统托管的视频游戏进行交互;
在向所述用户计算系统提供所述命令时的第一时间启动计时器;
从所述用户计算系统获得一组输出信号,所述输出信号与用于在显示器上显示的帧输出相关联;
将所述输出信号转换为像素集;
处理所述像素集以获得包括在所述像素集的子集中的嵌入数据;
在确定所述嵌入数据包括停止条件时的第二时间停止所述计时器;以及
至少部分地基于所述第一时间和所述第二时间确定与所述命令相关联的命令执行延迟。
可以根据以下条款描述本公开内容的另外的实施方案:
条款1.一种应用程序测试系统,被配置为测试应用程序的代码效率,该应用程序测试系统包括:
硬件处理器,被配置为:
向托管应用程序的计算系统提供用户命令,该用户命令模拟用户与所述计算系统处的应用程序的交互;
与向所述计算系统提供用户命令并行地启动计时器,其中在启动所述计时器和向所述计算系统提供所述用户命令之间存在小于阈值的时间差;
捕获来自所述计算系统的输出,该输出通过所述计算系统的显示端口输出;
确定所述输出是否包括与停止事件相关联的嵌入数据;和
在确定所述输出包括与所述停止事件相关联的嵌入数据时,基于所述计时器确定命令延迟值。
条款2.根据条款1所述的应用程序测试系统,其中,所述计时器测量时间的流逝。
条款3.根据条款1所述的应用程序测试系统,其中,所述计时器测量在启动所述计时器和检测到所述停止事件之间发生的多个事件。
条款4.根据条款3所述的应用程序测试系统,其中,所述事件包括在显示器上的帧输出。
条款5.根据条款1所述的应用程序测试系统,其中,捕获来自所述计算系统的输出不阻止所述输出经由所述显示端口被提供给显示器。
条款6.根据条款1所述的应用程序测试系统,其中,所述停止事件包括响应于所述用户命令由所述应用程序执行的事件。
条款7.根据条款1所述的应用程序测试系统,其中,所述应用程序包括视频游戏。
条款8.根据条款1所述的应用程序测试系统,其中,所述硬件处理器还被配置为通过以下方式确定所述输出是否包括与所述停止事件相关联的嵌入数据:
将所述输出转换为动画帧的像素集;
解码所述像素集的至少一部分以获得解码的像素子集;以及
确定所述解码的像素子集是否包括与所述停止事件相关联的所述嵌入数据。
条款9.根据条款1所述的应用程序测试系统,其中,所述命令延迟值包括事件触发器和相应事件的发生之间的时间的度量,其中,所述事件触发器包括向所述计算系统提供所述用户命令。
条款10.根据条款1所述的应用程序测试系统,其中,所述硬件处理器还被配置为至少部分地基于所述命令延迟值选择第二用户命令以提供给所述计算系统。
条款11.一种测试应用程序的代码效率的方法,该方法包括:
当通过配置有特定计算机可执行指令的应用程序测试系统实施时,
向托管应用程序的计算系统提供用户命令,所述用户命令模拟用户与所述计算系统处的所述应用程序的交互;
与向所述计算系统提供所述用户命令基本上并行地启动计数器;
捕获来自所述计算系统的输出,所述输出经由所述计算系统的输出端口输出;
确定所述输出是否包括与目标事件相关联的数据;以及
在确定所述输出包括与所述目标事件相关联的数据时,基于所述计数器的值确定命令延迟。
条款12.根据条款11所述的方法,其中,所述计数器对在启动所述计数器与确定所述输出包括与所述目标事件相关联的数据之间流逝的时间量计数。
条款13.根据条款11所述的方法,其中,所述计数器对在启动所述计数器和确定所述输出包括与所述目标事件相关联的数据之间发生的多个事件或输出的帧计数。
条款14.根据条款11所述的方法,其中,所述目标事件包括响应于所述用户命令和所述应用程序的状态由所述应用程序执行的事件。
条款15.根据条款11所述的方法,其中,确定所述输出是否包括
与目标事件相关联的数据包括:
将所述输出转换为图像的像素集;
解码所述像素集的至少一部分以获得解码的像素子集;以及
确定所述解码的像素子集是否包括与所述目标事件相关联的数据。
条款16.根据条款15所述的方法,其中,与所述目标事件相关联的数据通过插入到所述应用程序中的测试代码被插入到图像中,作为所述图像的像素数据的替代。
条款17.根据条款11所述的方法,还包括:至少部分地基于所述命令延迟来选择第二用户命令以提供给所述计算系统。
条款18.一种存储计算机可执行指令的非暂时性计算机可读存储介质,所述计算机可执行指令当由一个或多个计算设备执行时,配置所述一个或多个计算设备以执行操作,所述操作包括:
向托管应用程序的计算系统提供用户命令,所述用户命令模拟用户与所述计算系统处的所述应用程序的交互;
与向所述计算系统提供所述用户命令基本上并行地启动计数器;
捕获来自所述计算系统的输出,所述输出经由所述计算系统的输出端口输出;
确定所述输出包括与目标事件相关联的数据;以及
响应于确定所述输出包括与所述目标事件相关联的数据,基于所述计数器的值确定命令延迟。
条款19.根据条款18所述的计算机可读非暂时性存储介质,其中,确定所述输出包括与目标事件相关联的数据包括:
将所述输出转换为图像的像素集;
解码所述像素集的至少一部分以获得解码的像素集;以及
确定所述解码的像素集包括与所述目标事件相关联的数据。
条款20.根据条款18所述的计算机可读非暂时性存储介质,其中,所述操作还包括:至少部分地基于所述命令延迟选择关于所述应用程序执行的自动化测试。
另外的实施方案
要理解的是,根据本文描述的任何具体实施方案不一定可以实现所有的目标或优点。因此,例如本领域技术人员将认识到,某些实施方案可以被配置为以实现或优化如本文所教示的一个优点或一组优点而不一定实现如本文可能教示或暗示的其他目标或优点的方式进行操作。
本文描述的所有过程均可以体现在软件代码模块中并且经由软件代码模块完全自动化,所述软件代码模块由包括一个或多个计算机或处理器的计算系统执行。上述代码模块可以被存储在任何类型的非暂时性计算机可读介质或其他计算机存储设备中。一些或所有上述方法可以以专用的计算机硬件来实施。
根据本公开内容将明了除本文描述的那些之外的许多其他变型。例如,根据实施方案,本文描述的算法中任一个的某些动作、事件或功能均可以以不同的顺序执行,可以被添加、合并或完全被省略(例如,对于算法的实行而言,并非所有描述的动作或者事件都是必需的)。此外,在某些实施方案中,动作或事件可以被同时执行——例如通过多线程处理、中断处理或者多个处理器或处理器内核被同时执行或在其他并行架构上被同时执行,而不是被顺序地执行。此外,不同的任务或过程可以由可以一起运行的不同机器和/或计算系统来执行。
结合本文公开的实施方案描述的各种说明性逻辑框和模块可以由机器实施或执行,所述机器诸如处理单元或处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立门或晶体管逻辑电路、分立硬件部件或被设计成执行本文描述的功能的其任何组合。处理器可以是微处理器,但在替代方案中,处理器可以是控制器、微控制器或者状态机,其组合等。处理器可以包括被配置为处理计算机可执行指令的电路。在另一实施方案中,处理器包括执行逻辑操作而不处理计算机可执行指令的FPGA或其他可编程器件。处理器还可以被实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、一个或多个微处理器连同DSP内核或者任何其他这样的配置。虽然本文中主要关于数字技术描述了处理器,但处理器还可以包括主要是模拟性的部件。计算环境可以包括任何类型的计算机系统,包括但不限于基于微处理器的计算机系统、大型计算机、数字信号处理器、便携式计算设备、设备控制器或者器具内的计算引擎等,仅举几例。
除非另外特别说明,否则条件性用语,诸如“能(can)”、“可(could)”、“可能(might)”或“可以(may)”等,应在上下文中如通常所使用的被理解为表达:某些实施方案包括某些特征、元件和/或步骤,而其他实施方案不包括所述的某些特征、元件和/或步骤。因此,这样的条件性用语通常并不意在暗示:特征、元件和/或步骤以任何方式是一个或多个实施方案所需要的,或者一个或多个实施方案必需包括用于判定——在具有或不具有用户输入或提示的情况下——这些特征、元件和/或步骤是否被包括在任何特定的实施方案中或是否要在任何特定的实施方案中执行的逻辑。
除非另外特别说明,否则析取性(disjunctive)用语,诸如短语“X、Y或Z中的至少一个”,应在上下文中如通常所使用的被理解为表示:项、术语等可以是X、Y或Z,或它们的任何组合(例如,X、Y和/或Z)。因此,这样的析取性用语通常并不意在并且不应当暗示,某些实施方案需要至少一个X、至少一个Y或至少一个Z均存在。
在本文中描述的和/或在附图中描绘的流程图中的任何过程描述、要素或框均应当被理解为潜在地表示包括用于实现过程中的特定逻辑功能或要素的一个或多个可执行指令的代码模块、代码段或代码部分。在本文描述的实施方案的范围内包括替代的实施方式,在所述替代的实施方式中,要素或功能可以被删除、不按照所示出的或讨论的次序执行,包括基本上同时执行或以颠倒的顺序执行,这取决于所涉及的功能,如本领域技术人员会理解的。
除非另外明确说明,否则冠词,诸如“一个”或“一”,通常应被解释为包括一个或多个所描述的项。相应地,诸如“被配置成……的设备”之类的措辞意在包括一个或多个所叙述的设备。这样的一个或多个所叙述的设备还可以被共同配置成执行所陈述的叙述项(recitation)。例如,“被配置为执行叙述项A、B和C的处理器”可以包括连同被配置为执行叙述项B和C的第二处理器一起工作的、被配置为执行叙述项A的第一处理器。
应当强调的是,可以对上述实施方案做出许多变型和修改,这些变型和修改的要素应被理解为在其他可接受的示例之中。所有这样的修改和变型都意在被包括在本文中在本公开内容的范围内。
Claims (40)
1.一种视频游戏测试系统,被配置为在视频游戏的执行期间测试事件延迟,所述视频游戏测试系统包括:
前端系统,被配置为:
访问模拟用户与用户计算系统的用户接口设备的交互的第一命令;和
向所述用户计算系统提供所述第一命令,以与由所述用户计算系统托管的视频游戏进行交互,其中向所述用户计算系统提供所述第一命令触发计时器;以及
后端系统,被配置为:
从所述用户计算系统接收一个或多个输出信号;
将所述一个或多个输出信号转换为像素集,所述像素集对应于用于由所述用户计算系统显示的帧输出;
识别所述像素集中的停止条件的存在;以及
至少部分地基于触发所述计时器时的第一时间和与识别所述停止条件的存在相关联的第二时间来确定事件的事件延迟,其中至少部分地通过执行所述第一命令来触发所述事件,
其中所述停止条件嵌入在对应于所述帧输出的所述像素集的一部分中。
2.根据权利要求1所述的视频游戏测试系统,其中,所述前端系统包括非易失性存储装置,所述非易失性存储装置被配置为存储对应于与所述用户接口设备的一个或多个交互序列的一个或多个命令序列,所述一个或多个命令序列中的至少一个包括所述第一命令。
3.根据权利要求1所述的视频游戏测试系统,其中,所述前端系统包括:存储装置,所述存储装置被配置为存储所述第一命令;和用户接口电路,所述用户接口电路被配置为向所述用户计算系统提供所述第一命令,并且其中,所述存储装置与所述用户接口电路并置,减少与模拟到所述用户计算系统的用户输入相关联的输入延迟。
4.根据权利要求1所述的视频游戏测试系统,其中,所述前端系统还被配置为与向所述用户计算系统提供所述第一命令并行地触发所述计时器。
5.根据权利要求1所述的视频游戏测试系统,其中,所述前端系统还被配置为在向所述用户计算系统提供第二命令时触发第二计时器。
6.根据权利要求1所述的视频游戏测试系统,其中,所述前端系统包括用户接口电路,所述用户接口电路被配置为通过经由所述用户计算系统的接口端口向所述用户计算系统提供所述第一命令来模拟所述用户与所述用户接口设备的交互。
7.根据权利要求1所述的视频游戏测试系统,其中,所述后端系统包括所述计时器。
8.根据权利要求1所述的视频游戏测试系统,其中,所述后端系统还被配置为通过以下方式识别所述停止条件:
从所述像素集过滤出像素子集,所述像素子集被配置为存储嵌入数据;
解码所述像素子集以获得所述嵌入数据;以及
确定所述嵌入数据是否包括所述停止条件。
9.根据权利要求1所述的视频游戏测试系统,其中,所述后端系统包括控制器,所述控制器被配置为向所述计时器提供来自所述像素集的像素子集。
10.根据权利要求9所述的视频游戏测试系统,其中,所述后端系统还被配置为至少部分地基于所述第一时间、所述第二时间以及所述控制器与所述计时器之间的通信延时来确定所述事件的事件延迟。
11.根据权利要求1所述的视频游戏测试系统,其中,所述前端系统包括一个或多个集成电路,并且所述后端系统包括与所述前端系统分开的一个或多个集成电路。
12.根据权利要求1所述的视频游戏测试系统,其中,所述事件包括以下中的至少一个:动画的输出、动画内的帧的输出、声音的输出、视频游戏的状态的改变或者视频游戏的要素的状态的改变。
13.根据权利要求1所述的视频游戏测试系统,其中,所述前端系统被配置为至少部分地基于所述事件的事件延迟修改所述视频游戏的测试。
14.一种在视频游戏的执行期间测试事件延迟的方法,该方法包括:
在通过以硬件实现的视频游戏测试系统实施时,
接收触发器以测试视频游戏内的事件的事件延迟,其中所述事件延迟包括与托管所述视频游戏的用户计算系统的用户接口设备的交互和所述事件的发生之间的时间量;
响应于接收到所述触发器,访问来自命令序列存储装置的第一命令,所述第一命令模拟用户与所述用户接口设备的交互;
经由被配置为与所述用户接口设备通信的所述用户计算系统的接口向所述用户计算系统提供所述第一命令,其中所述视频游戏测试系统与所述用户计算系统接口连接,作为所述用户接口设备的替代;
从所述用户计算系统的输出端口接收一组输出信号;
将所述一组输出信号转换为像素集;
识别所述像素集中的停止标志;以及
响应于识别所述停止标志,至少部分地基于与提供所述第一命令相关联的第一时间和与识别所述停止标志相关联的第二时间来确定所述事件的事件延迟,
其中所述停止标志嵌入在所述像素集的一部分中。
15.根据权利要求14所述的方法,其中,确定所述事件延迟还包括:通过与所述视频游戏测试系统的元件之间的通信相关联的通信开销时间来修改所确定的延迟。
16.根据权利要求14所述的方法,其中,确定所述事件延迟还包括:通过与所述用户计算系统相关联的垂直同步延迟来修改所确定的延迟。
17.根据权利要求14所述的方法,还包括:过滤所述像素集以获得包括嵌入数据的像素子集,其中识别嵌入在所述像素集中的所述停止标志包括:提取嵌入在所述像素子集中的数据,以及确定所提取的数据是否包括所述停止标志。
18.根据权利要求14所述的方法,还包括:输出所述事件延迟用于在用户接口上呈现给用户。
19.根据权利要求14所述的方法,还包括:至少部分地基于所述事件延迟选择第二命令以提供给所述用户计算系统。
20.一种视频游戏测试系统,被配置为在视频游戏的执行期间测试命令执行延迟,所述视频游戏测试系统包括:
存储装置,所述存储装置被配置为存储模拟用户与用户计算系统的用户接口设备的交互的一个或多个命令;和
处理电路,所述处理电路被配置为:
访问来自所述存储装置的命令;
向所述用户计算系统提供所述命令以与由所述用户计算系统托管的视频游戏进行交互;
在向所述用户计算系统提供所述命令时的第一时间启动计时器;
从所述用户计算系统获得一组输出信号,所述输出信号与用于在显示器上显示的帧输出相关联;
将所述输出信号转换为像素集;
处理所述像素集以获得包括在所述像素集的子集中的嵌入数据;
在确定所述嵌入数据包括停止条件时的第二时间停止所述计时器;以及
至少部分地基于所述第一时间和所述第二时间确定与所述命令相关联的命令执行延迟,
其中所述停止条件嵌入在与所述帧输出相关联的所述像素集的一部分中。
21.一种应用程序测试系统,被配置为测试应用程序的代码效率,所述应用程序测试系统包括:
硬件处理器,其被配置为:
向托管应用程序的计算系统提供用户命令,所述用户命令模拟用户与所述计算系统处的所述应用程序的交互;
与向所述计算系统提供所述用户命令并行地启动计时器,其中在启动所述计时器和向所述计算系统提供所述用户命令之间存在小于阈值的时间差;
捕获来自所述计算系统的输出,所述输出经由所述计算系统的显示端口输出;
确定所述输出是否包括与停止事件相关联的嵌入数据;以及
在确定所述输出包括与所述停止事件相关联的所述嵌入数据时,基于所述计时器确定命令延迟值,
其中与所述停止事件相关联的所述嵌入数据嵌入在所述输出的一部分中。
22.根据权利要求21所述的应用程序测试系统,其中,所述计时器测量时间的流逝。
23.根据权利要求21所述的应用程序测试系统,其中,所述计时器测量在启动所述计时器和检测到所述停止事件之间发生的多个事件。
24.根据权利要求23所述的应用程序测试系统,其中,所述事件包括在显示器上的帧输出。
25.根据权利要求21所述的应用程序测试系统,其中,捕获来自所述计算系统的输出不阻止所述输出经由所述显示端口被提供给显示器。
26.根据权利要求21所述的应用程序测试系统,其中,所述停止事件包括响应于所述用户命令由所述应用程序执行的事件。
27.根据权利要求21所述的应用程序测试系统,其中,所述应用程序包括视频游戏。
28.根据权利要求21所述的应用程序测试系统,其中,所述硬件处理器还被配置为通过以下方式确定所述输出是否包括与所述停止事件相关联的嵌入数据:
将所述输出转换为动画帧的像素集;
解码所述像素集的至少一部分以获得解码的像素子集;以及
确定所述解码的像素子集是否包括与所述停止事件相关联的所述嵌入数据。
29.根据权利要求21所述的应用程序测试系统,其中,所述命令延迟值包括事件触发器和对应事件的发生之间的时间的度量,其中,所述事件触发器包括向所述计算系统提供所述用户命令。
30.根据权利要求21所述的应用程序测试系统,其中,所述硬件处理器还被配置为至少部分地基于所述命令延迟值选择第二用户命令以提供给所述计算系统。
31.一种测试应用程序的代码效率的方法,该方法包括:
当通过配置有特定计算机可执行指令的应用程序测试系统实施时,
向托管应用程序的计算系统提供用户命令,所述用户命令模拟用户与所述计算系统处的应用程序的交互;
与向所述计算系统提供所述用户命令并行地启动计数器;
捕获来自所述计算系统的输出,所述输出经由所述计算系统的输出端口输出;
确定所述输出是否包括与目标事件相关联的数据;以及
在确定所述输出包括与所述目标事件相关联的数据时,基于所述计数器的值确定命令延迟,
其中与所述目标事件相关联的数据嵌入在所述输出的一部分中。
32.根据权利要求31所述的方法,其中,所述计数器对在启动所述计数器与确定所述输出包括与所述目标事件相关联的数据之间流逝的时间量计数。
33.根据权利要求31所述的方法,其中,所述计数器对在启动所述计数器和确定所述输出包括与所述目标事件相关联的数据之间发生的多个事件或输出的帧计数。
34.根据权利要求31所述的方法,其中,所述目标事件包括响应于所述用户命令和所述应用程序的状态由所述应用程序执行的事件。
35.根据权利要求31所述的方法,其中,确定所述输出是否包括与目标事件相关联的数据包括:
将所述输出转换为图像的像素集;
解码所述像素集的至少一部分以获得解码的像素子集;以及确定所述解码的像素子集是否包括与所述目标事件相关联的数据。
36.根据权利要求35所述的方法,其中,与所述目标事件相关联的数据通过插入所述应用程序的测试代码被插入到所述图像中,作为所述图像的像素数据的替代。
37.根据权利要求31所述的方法,还包括:至少部分地基于所述命令延迟选择第二用户命令以提供给所述计算系统。
38.一种存储计算机可执行指令的非暂时性计算机可读存储介质,所述计算机可执行指令当由一个或多个计算设备执行时,配置所述一个或多个计算设备以执行操作,所述操作包括:
向托管应用程序的计算系统提供用户命令,所述用户命令模拟用户与所述计算系统处的所述应用程序的交互;
与向所述计算系统提供所述用户命令并行地启动计数器;
捕获来自所述计算系统的输出,所述输出经由所述计算系统的输出端口输出;
确定所述输出是否包括与目标事件相关联的数据;以及
响应于确定所述输出包括与所述目标事件相关联的数据,基于所述计数器的值确定命令延迟,
其中与所述目标事件相关联的数据嵌入在所述输出的一部分中。
39.根据权利要求38所述的非暂时性计算机可读存储介质,其中,确定所述输出是否包括与目标事件相关联的数据包括:
将所述输出转换为图像的像素集;
解码所述像素集的至少一部分以获得解码的像素集;以及
确定所述解码的像素集是否包括与所述目标事件相关联的数据。
40.根据权利要求38所述的非暂时性计算机可读存储介质,其中,所述操作还包括:至少部分地基于所述命令延迟选择关于所述应用程序执行的自动测试。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/359,802 | 2019-03-20 | ||
US16/359,836 | 2019-03-20 | ||
US16/359,836 US10963365B2 (en) | 2019-03-20 | 2019-03-20 | System for testing command execution latency within an application |
US16/359,802 US11020658B2 (en) | 2019-03-20 | 2019-03-20 | System for testing command execution latency within a video game |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111714875A CN111714875A (zh) | 2020-09-29 |
CN111714875B true CN111714875B (zh) | 2023-07-14 |
Family
ID=72563848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910365262.0A Active CN111714875B (zh) | 2019-03-20 | 2019-04-30 | 用于在视频游戏中测试命令执行延迟的系统 |
Country Status (2)
Country | Link |
---|---|
KR (1) | KR102265017B1 (zh) |
CN (1) | CN111714875B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113220517B (zh) * | 2021-05-28 | 2023-01-10 | Oppo广东移动通信有限公司 | 操作耗时测试系统、信号处理设备及信号处理方法 |
CN113426101B (zh) * | 2021-06-22 | 2023-10-20 | 咪咕互动娱乐有限公司 | 教学方法、装置、设备及计算机可读存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4150410B2 (ja) * | 2007-02-23 | 2008-09-17 | 株式会社コナミデジタルエンタテインメント | ゲームシステム、ゲーム制御方法、ならびに、プログラム |
WO2011041566A1 (en) * | 2009-09-30 | 2011-04-07 | Zynga Game Network Inc. | Apparatuses, methods and systems for an engagement-tracking game modifier |
US9808724B2 (en) * | 2010-09-20 | 2017-11-07 | Activision Publishing, Inc. | Music game software and input device utilizing a video player |
JP5774314B2 (ja) * | 2011-01-05 | 2015-09-09 | 任天堂株式会社 | 遅延測定システムおよび遅延測定方法 |
CN104158696B (zh) * | 2013-05-13 | 2018-03-06 | 华为技术有限公司 | 一种测量操作延时的确定方法、装置及终端 |
CN105718363B (zh) * | 2016-01-15 | 2019-05-03 | 青岛海信移动通信技术股份有限公司 | 手机响应启动时间点获取方法和装置 |
CN108704314B (zh) * | 2018-05-25 | 2021-10-26 | 网易(杭州)网络有限公司 | 一种音乐游戏中延迟校准的方法、装置和电子设备 |
-
2019
- 2019-04-30 CN CN201910365262.0A patent/CN111714875B/zh active Active
- 2019-04-30 KR KR1020190050794A patent/KR102265017B1/ko active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
KR20200112568A (ko) | 2020-10-05 |
CN111714875A (zh) | 2020-09-29 |
KR102265017B1 (ko) | 2021-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10963365B2 (en) | System for testing command execution latency within an application | |
US11904238B2 (en) | System for testing command execution latency within a video game | |
US10282280B1 (en) | Automated scalable video game testing system | |
US11318390B2 (en) | Systems and methods for hardware-based matchmaking | |
US10282882B2 (en) | Augmented reality simulation continuum | |
US9717989B2 (en) | Adding triggers to cloud-based emulated games | |
US10384133B1 (en) | Systems and methods for automatically measuring a video game difficulty | |
KR101862180B1 (ko) | 스푸프 클록의 사용 및 미세 수준 주파수 제어를 통한 역 호환성 | |
JP5739872B2 (ja) | モーションキャプチャにモデルトラッキングを適用するための方法及びシステム | |
US11654365B2 (en) | Secure anti-cheat system | |
US9656163B2 (en) | Haptic enhancements for emulated video game not originally designed with haptic capabilities | |
US20120304126A1 (en) | Three-dimensional gesture controlled avatar configuration interface | |
US9044672B2 (en) | Game system, game apparatus, storage medium and game controlling method | |
US20200159644A1 (en) | Testing as a service for cloud gaming | |
US8360856B2 (en) | Entertainment apparatus and method | |
JP2009072601A (ja) | エミュレーション強化方法及び装置 | |
CN111714875B (zh) | 用于在视频游戏中测试命令执行延迟的系统 | |
CN113993600A (zh) | 延迟消除 | |
CN111862345A (zh) | 信息处理方法及装置、电子设备和计算机可读存储介质 | |
US20240058700A1 (en) | Mobile game trainer using console controller | |
KR101352865B1 (ko) | 대상 픽셀 블록 제거형 이동 픽셀 블록 게임 제공 방법, 서버 및 단말 | |
JP2024076923A (ja) | プログラム、方法、およびシステム | |
JP2009219525A (ja) | プログラム、情報記憶媒体及びゲーム装置 | |
Carr et al. | Shadow Puppetry Using the Kinect |
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 |