在失去主动控制之后通过用户模拟的临时游戏控制的制作方法

文档序号:21825079发布日期:2020-08-11 21:46阅读:175来源:国知局
在失去主动控制之后通过用户模拟的临时游戏控制的制作方法

本申请总体上涉及计算机技术,包括但不限于用于管理服务器系统以支持与一个或多个实时用户交互式应用相对应的在线交互式会话的方法和系统



背景技术:

连接互联网的电子设备可以支持各种基于云的媒体和娱乐应用。这些应用包括其中服务器将内容流送到用户设备的媒体流送应用、其中用户从用户设备与在服务器上执行的游戏进行交互的游戏应用、以及允许大量用户经由他们的连接互联网的设备彼此同时交互和与云托管的内容和应用进行交互的各种社交媒体和通信应用。在基于云的应用当中,由于以下原因,云游戏呈现一些独特的挑战:游戏名称的广泛地变化的硬件需求;其中可以(例如,由一个玩家、由单个位置中的多个玩家或由多个位置中的多个玩家)玩基于云的游戏的多种拓扑结构;需要可靠地且无延迟地将玩家输入传输到执行游戏会话的游戏服务器并将来自于游戏服务器的游戏会话输出传输到玩家的设备/显示器;关于游戏玩法(gameplay)的速度和响应能力的广泛地变化的玩家预期;以及在某些情况下向观众提供近乎实时的游戏内容的愿望。基于云的游戏的其他挑战涉及为玩家提供一致的游戏玩法体验、无论他们位于何处(例如,靠近服务器或者远离服务器)、他们如何连接到游戏服务(例如,经由快速或慢速互联网连接)、以及他们使用哪种类型的设备玩游戏(例如,通用个人设备或专用游戏控制器)并且查看游戏玩法输出(例如,连接到媒体流送设备的个人设备或媒体设备)。

具体地,需要一种云游戏系统,该云游戏系统支持多个游戏名称的多个游戏会话,其中游戏可以以可接受的延迟和响应能力同时执行,包括对于正在玩同一游戏名称的来自同一或不同位置的多个用户,以及通过各种各样的输入和输出设备以及网络连接。此外,需要一种云游戏系统,该云游戏系统在游戏会话中接收到玩家输入(例如,在最终用户游戏设备/控制器上键入的游戏输入)之后,立即处理用户输入并为所有游戏玩家同时并且以可接受的延迟输出反映玩家输入动作的结果的高清图像。还需要一种游戏系统,在一些情况下,该游戏系统提供游戏玩法活动的高清视频流,以允许观众在相应显示设备上实时跟踪游戏玩法。这样,从在同一位置聚集的用户的自发游戏玩法到来自多个位置的多个用户的在线交互式游戏玩法,向云游戏系统提供有效的游戏处理和输出机制以扩展广泛的游戏设置中的游戏体验将是有益的。



技术实现要素:

本说明书中描述的实施方式针对提供一种游戏应用编程接口(api)和云平台,以实现第三方游戏内容的高效、可移植和低延迟托管。一些实施方式动态地分配云游戏硬件资源,并监视和利用可用于各个最终用户的网络带宽以提供最佳的云游戏体验。一些实施方式提供多个性能层,包括支持具有高清媒体输出和最终用户流的高性能、实时游戏会话的层。一些实施方式支持不同的订阅模型和/或被配置成提供一个或多个并发的实时游戏玩法和/或评论媒体流,其几乎没有延迟或者没有延迟地对应于一个或多个实际游戏流(例如,输出到经由移动应用或基于浏览器的程序参与在线/云游戏会话的用户的客户端的视频流)。在一些实施方式中,经由诸如youtube的媒体流送站点向一个或多个用户几乎没有延迟或没有延迟地提供并发游戏玩法和/或评论视频。

在本申请的一个方面,一种在网络中断期间和网络中断之后处理游戏玩法输入的方法在具有一个或多个处理器以及存储一个或多个程序以供一个或多个处理器执行的存储器的服务器系统处实现。该方法包括:在服务器系统与第一客户端设备之间的网络连接的中断期间,确定第一客户端设备的模拟游戏玩法输入;基于模拟游戏玩法输入更新第一游戏状态,从而产生占位符游戏状态;在恢复网络连接之后,接收在中断期间由第一客户端设备的用户做出的恢复的游戏玩法输入;基于恢复的游戏玩法输入更新第一游戏状态,从而产生期望游戏状态;比较占位符游戏状态与期望游戏状态;基于占位符游戏状态与期望游戏状态的比较来更新占位符游戏状态,从而产生后续游戏状态;以及将描绘后续游戏状态的帧传输给与第一客户端设备相关联的输出设备。

根据本申请的一些方面,服务器系统包括存储器,该存储器存储用于使服务器系统执行上述任何方法的指令。

此外,根据本申请的一些方面,存储在服务器系统的存储器中的指令包括用于使服务器系统执行上述任何方法的指令。

根据本说明书中的描述和附图,其他实施例和优点对于本领域的技术人员而言可以是显而易见的。

附图说明

为了更好地理解各种所描述的实施方式,应结合以下附图参考以下实施方式的描述,在附图中,相同的附图标记指代整个附图中的相应部分。

图1是根据一些实施方式的示例在线交互式游戏环境。

图2是图示根据一些实施方式的游戏环境的示例客户端设备的框图。

图3是图示根据一些实施方式的游戏环境的示例媒体设备的框图。

图4是图示根据一些实施方式的游戏环境的示例服务器的框图。

图5a是根据一些实施方式的示例游戏环境。

图5b至图5c图示根据一些实施方式的示例游戏玩法场景。

图6是根据一些实施方式的游戏玩法过程的流程图。

图7是图示根据一些实施方式的用于补偿网络中断的示例方法的流程图。

图8a至图8b图示根据一些实施方式的游戏玩法过程的示例场景。

图9是图示根据一些实施方式的用于在中断之前、期间和之后处理游戏玩法的示例方法的流程图。

在整个附图中,相似的附图标记指代对应的部分。

具体实施方式

本说明书中描述的实施方式针对提供一种云平台和api,以实现对包括第三方游戏内容的云游戏内容的高效、可移植、低延迟的托管。一些实施方式动态分配云游戏硬件资源(例如,cpu、gpu、存储器、输入/输出和视频流编码器),并监视和利用对单个最终用户可用的网络带宽,以同时向游戏玩家社区提供最佳的在线游戏体验。一些实施方式提供多个性能层,包括支持具有针对最终用户的高清媒体流的高性能、实时游戏会话的层。一些实施方式支持不同的订阅模型和/或被配置成提供一个或多个并发的实时游戏玩法和/或评论媒体流,其几乎没有延迟或者没有延迟对应于一个或多个实际游戏流(例如,输出到经由移动应用或基于浏览器的程序参与在线/云游戏会话的用户的客户端设备的视频流)。在一些实施方式中,通过诸如youtube的媒体流送网站向一个或多个用户几乎没有延迟或没有延迟地提供实时游戏玩法和/或评论媒体流。

在云游戏环境的一些实施方式中,服务器系统为实时、交互式游戏会话提供硬件资源,以用于处理玩家输入并生成输出流以向一个或多个玩家,并且可选地,向游戏观众显示。响应于建立实时交互式游戏会话的请求,服务器系统确定请求的客户端设备(即,玩家的控制器设备)的设备能力(例如,硬件和/或软件能力)、网络连接的连接能力(例如,带宽、延迟和/或错误率)、以及游戏会话的一个或多个目标质量参数(例如,输出视频流的分辨率、游戏响应延迟等),并因此,将其虚拟机之一与实时交互式会话相关联以建立该会话。

在一些实施方式中,针对托管实时、在线和交互式游戏环境的服务器系统中的一个或多个处理内核(例如,gpu内核和编码器内核)管理游戏数据的处理和编码能力(例如,为玩家和/或观众产生输出视频流)。例如,在一些实施方式中,一个或一个以上处理内核与多个处理切片一起操作(例如,每个在内核上在16.67ms内执行),并且服务器系统将多个处理切片中的每个分配给要在其上执行的多个在线游戏会话的子集。对于处理切片之一,服务器系统确定分时处理排程,使得游戏会话的相应子集共享处理切片的占空比,并根据它们相应的实时数据处理需要并行执行。另外,为了在时间间隔内加速图像编码,服务器系统的编码器不需要等待直到gpu已经使图像帧的所有数据可用为止。而是,在一些实施方式中,一旦由gpu提供用于编码图像帧的一部分所需的信息,就对该部分进行编码,与使图像帧的与已编码的部分无关的其他部分是否gpu可用无关。

另外,服务器系统可以响应于从参加在线游戏会话的用户接收到的用户命令动态地生成多个帧。根据用户命令的类型,服务器系统确定预期的响应延迟、实际的通信和处理延迟以及实际的传输延迟。然后,通过生成反映命令效果的帧集合在在线游戏会话中执行用户命令。当以预定帧速率传输的帧集合占用与实际传输延迟相对应的传输时间,并且可以在与预期响应延迟相对应的时间内在用户的客户端设备处被接收。

图1图示根据一些实施方式的示例在线交互式游戏环境100。在线交互式游戏环境100包括一个或多个客户端设备(例如,客户端设备102和104)。每个客户端设备102执行一个或多个游戏应用。游戏会话可以在特定游戏应用上运行,以允许客户端设备102的用户玩由服务器系统114托管的在线交互式游戏。在一些实施方式中,客户端设备102(例如,主机客户端)被配置成邀请一个或多个其他客户端设备102加入特定游戏应用的游戏场景。这些客户端设备102的游戏会话被同步以显示相同的游戏场景,所述游戏场景可选地具有与它们相应的用户相对应的不同视角。

相反,服务器系统114托管在线交互式游戏平台以支持客户端设备102参加一个或多个游戏应用,其包括特定游戏应用。具体地,服务器系统114包括与客户端设备102相关联的多个用户账户,并且与一个或多个游戏应用中的每个相关联地认证客户端设备的用户。服务器系统114在客户端设备102上渲染并刷新在线交互式游戏的场景,该客户端设备102加入与该场景相关联的对应游戏会话。在一些实施方式中,服务器系统114评估客户端设备102的能力和/或服务器系统114与每个客户端设备102之间的通信连接的质量,并且自适应地生成用于与客户端设备102相关联的游戏会话的同步数据流。通过这些手段,服务器系统114被配置成同时并且以相当低的延迟促进两个或更多个客户端设备102上的在线交互式游戏的同步游戏会话。

在一些实施方式中,服务器系统114包括游戏服务器122和媒体流送服务器124。游戏服务器122被配置成同时为在第一客户端设备102a上运行的在线交互式游戏会话提供两个或更多个媒体流。两个或更多个媒体流包括低延迟流和正常延迟流,所述低延迟流和正常延迟流分别经由一个或多个通信网络112提供给第一客户端设备102a和评论者客户端设备104。可选地,提供正常延迟流,用于教学目的。当第一客户端设备102的用户在第一客户端设备102a上参加游戏会话时,该游戏会话被记录并经由正常延迟流广播给一个或多个观众,即,观众可以在评论者客户端上评论游戏会话。低延迟流对应于在线交互式游戏会话的游戏玩法,并且具有比对应于相关联的评论会话的正常延迟流更快的响应速率和更低的传输延迟。例如,低延迟流具有每秒60帧(fps)的预定义帧速率,并且在每个16.67ms的时间间隔期间向第一客户端设备102a提供至少一个帧,并且正常延迟流具有30fps的预定义帧速率,并在每个33.33ms的时间间隔内向评论者客户端设备104提供至少一个帧。在一些实施方式中,正常延迟流具有比低延迟流低的分辨率。

在一些实施方式中,客户端设备102或104具有集成在其中的用于显示媒体内容的显示屏。在一些实施方式中,客户端设备102或104被耦合到媒体设备106和输出设备108。具体地,客户端设备102或104可以直接(例如,经由蓝牙或其他无线通信链路)、经由本地网络110(例如,wi-fi网络)或经由一个或多个通信网络112通信耦合到媒体设备106。在一些实施方式中,客户端设备(102或104)和媒体设备106彼此都是本地的(例如,在同一房间、在同一所房子等)。媒体设备106进一步耦合到一个或多个可以输出视觉和/或音频内容的输出设备108(例如,电视、显示监视器、声音系统、扬声器等)。媒体设备106被配置成将内容输出到输出设备108。在一些实施方式中,媒体设备106是投放设备(例如,google有限公司的chromecast)或否则包括投放功能的设备。

在一些实施方式中,一个或者多个客户端设备102或104能够与彼此、中央服务器或云计算系统(例如,服务器系统114)和/或被网络连接的其他设备(例如,另一个客户端设备102或104、媒体设备106和输出设备108))进行数据通信和信息共享。可以使用各种自定义或标准无线协议(例如,ieee802.15.4、wi-fi、zigbee、6lowpan、thread、z-wave、bluetoothsmart、isa100.11a、wirelesshart、miwi等)的任何一种和/或各种自定义或标准有线协议(例如,以太网、homeplug等)中的任何一种,或包括截至本文档提交之日尚未开发的通信协议的任何其他合适的通信协议来执行数据通信。在一些实施例中,在线交互式游戏环境100包括常规网络设备(例如,路由器),客户端设备102和104以及它们的对应媒体和输出设备(如果有的话)的集合经由该常规网络设备在本地网络110(例如,局域网)上彼此通信地耦合,并且本地网络110被通信地耦合到通信网络112(例如,广域网和因特网)。在一些实施例中,客户端设备102和104中的每个客户端设备使用一个或多个无线电通信网络(例如,zigbee、z-wave、insteon、蓝牙、wi-fi和/或其他无线电通信网络)与一个或者多个其它客户端设备、相应媒体设备106或者相应输出设备108可选地通信。

在一些实施方式中,客户端设备102彼此远离,即,它们不位于相同房间或甚至建筑物中。可以通过启动游戏应用(例如,图2中的游戏应用228)来开始游戏,以在每个客户端设备102上执行。在一些实施方式中,对于每个客户端设备102,游戏应用与服务器系统114独立建立在线游戏会话116。两个或更多个客户端设备102(例如,102a和102b)的在线游戏会话116彼此相关(例如,因为它们都在游戏应用的相同游戏域中玩游戏),并且因此,在游戏应用中共享游戏场景。相关的在线游戏会话116彼此同步,并且每个在线游戏会话116可选地以对应于相应客户端设备102的唯一玩家视角示出相同游戏场景。因此,每个客户端设备102的用户可以在相应客户端设备上玩游戏,并影响其他客户端设备102上的在线游戏会话116的输出。

可选地,在一些其他实施方式中,在第一客户端设备102a的游戏应用建立在线游戏会话116之后,通过邀请消息邀请一个或多个第二客户端设备102b加入在线游戏会话116,并且例如,将具有加入在线游戏会话116的链接(例如,url地址)的消息发送到第二客户端设备102b中的每个。适当的控制器配置被提供给被邀请加入在线游戏会话116的每个第二客户端设备102b。在此应用中,当第二客户端102b加入在线游戏会话116时,服务器系统114为每个单独的第二客户端设备102b创建单独的游戏会话。相应的第二客户端设备102b的每个单独的游戏会话116与第一客户端设备102a的游戏会话116同步并且与该游戏会话116共享相同的场景,但是可以具有与相应第二客户端设备102b相对应的唯一玩家视角。在每个第二客户端设备102b已经接收到适当的控制器配置并加入在线游戏会话116(更准确地,开始其相关的在线游戏会话116)之后,用户可以在相应第二客户端设备102b上玩游戏并且影响在其他客户端设备102上运行的在线游戏会话116的输出。

客户端设备102是包括并且可以运行包括游戏应用的一个或多个不同用户应用的设备。在一些实施方式中,客户端设备102是智能手机、平板设备、膝上型计算机、台式计算机或多媒体设备。在一些实施方式中,客户端设备102是专用的游戏控制器,其包括被配置成当激活或以其他方式操纵时控制游戏玩法的某些方面的游戏控件(例如,一个或多个按钮、操纵杆、触摸屏开供性(affordance)、运动控件、压力控件、视觉控件、音频控件和/或其他触觉界面)。在一些实施方式中,客户端设备102包括被配置成与媒体设备106结合操作的一个或多个用户应用。在一些实施方式中,应用包括用于将客户端设备102与媒体设备106配对并且配置媒体设备106的媒体设备应用。应用还包括可以将相关联的内容投放到媒体设备106的一个或多个应用。在一些实施方式中,通过(例如,经由本地网络)直接将数据/内容发送到媒体设备106和/或通过将媒体设备106定向到从其媒体设备106能够流送或者以其它方式接收数据/内容的远程位置(例如,到服务器系统处的某个位置的url或其他链接),应用将数据和/或内容投放到媒体设备106。媒体设备106从应用和/或远程位置接收数据/内容,并将与接收到的数据/内容相对应的视觉和/或音频内容输出到输出设备108。因此,在客户端设备102上运行的游戏应用、远程服务器系统114和媒体设备106之间建立在线游戏会话116。

在一些实施方式中,作为链接相关的在线游戏会话116的过程的一部分,服务器系统114评估每个对应客户端设备102的能力和/或服务器系统114与客户端设备102之间的通信连接的质量。在一些实施方式中,服务器系统114测量客户端设备102和服务器系统114之间的网络延迟。如果所测量到的延迟高于阈值并且较低延迟的连接可用,则服务器系统114可以建议客户端设备102更改为较低延迟的连接,或邀请客户端设备102的用户将客户端设备102更改为较低延迟的连接。例如,如果客户端设备102在蜂窝无线连接118上,并且本地网络可用,则服务器系统114可以建议客户端设备102应该通过可用本地网络进行连接。在一些实施方式中,延迟阈值要求在游戏之间有所不同。例如,一些游戏(例如,动作游戏)在较低延迟的连接上体验最好,而其他一些游戏(例如,在线棋盘游戏或纸牌游戏)对延迟的要求不高。鉴于与不同类型的游戏相关联的这些不同要求,服务器系统114可以做出连接推荐。

在一些实施方式中,作为开始或加入游戏会话116的客户端设备102的一部分,服务器系统114与客户端设备102通信以在客户端设备102上设置控制器(例如,游戏控制器配置和/或接口)。在一些实施方式中,这包括服务器系统114评估客户端设备102是否具有控制器所需的资源和通信能力。取决于客户端设备102处的可用资源、连接质量和游戏要求,可以在客户端设备102处不同地实现控制器。在一些实施方式中,可以使用基于网页的控制器界面来玩游戏。例如,用于游戏的控制器接口可以被嵌入在网页中,并且该网页被渲染在客户端设备102上的网页浏览器中。可替选地,在一些实施方式中,标准化控制器被实现在非特定于游戏或直接与游戏相关联的预定义应用(例如,投放设备应用,诸如google有限公司的chromecast或googlecast,或其他媒体设备应用)中,或客户端设备102的操作系统中。例如,客户端设备102上的设备操作系统或预定义的应用可以具有控制器子模块。控制器子模块包括一个或多个标准化控制器配置、模板等。每个标准化控制器配置将控制器子模块配置成以一些方式利用客户端设备102上的输入设备和/或传感器来实现虚拟控制器。使用的标准化控制器配置可能随游戏和/或客户端设备的类型而变化。

此外,在一些实施方式中,游戏具有可以在控制器子模块上实现的特定控制器配置。这样的配置可以被存储在服务器系统114处并且被传输到客户端设备102,作为客户端设备102加入或开始在线游戏会话116的过程的一部分。在一些实施方式中,特定控制器配置可以是完全自定义控制器或标准控制器和自定义控制器的混合。另外,在一些实施方式中,游戏需要与该游戏相关联的特定应用。例如,游戏可能需要专门与该游戏相关联的控制器应用。在一些实施方式中,可以指导客户端设备102下载特定应用或预定义的应用作为开始或加入会话116的一部分。例如,如果客户端设备102还没有预定义的应用(和控制器子模块)或者与游戏相关联的特定应用,并且这样的应用被需要用于玩游戏,则服务器系统114指示客户端设备102提示其用户需要下载并向用户请求许可继续进行。

在一些实施方式中,服务器系统114存储与托管在服务器系统114上的一个或多个游戏应用中的每个(例如,图2的游戏应用228)的用户账户相关联的用户信息。用户信息的示例包括但不限于,用户账户信息(例如,标识和密码)、成员资格类型、偏好和活动历史。在一些实施方式中,服务器系统114存储与在客户端设备102上参加的在线游戏会话相关联的会话数据。每个在线游戏会话的会话数据的示例包括但不限于帧速率、渲染规范、正常延迟要求、gpu分配信息、编码器分配信息、相关会话的标识以及最新状态信息。

在一些实施方式中,服务器系统114提供游戏api和云平台,以启用在线游戏会话116中使用的第三方游戏内容的高效、便携式、低延迟托管。在一些实施方式中,游戏api和云平台由服务器系统114启用,该服务器系统114进一步包括下述中的一个或者多个:前端服务器134、媒体流送服务器124、游戏服务器122和一个或多个第三方内容服务器136。在一些实施方式中,游戏api平台由游戏服务器122创建和/或托管,并结合前端服务器134和内容服务器136一起启用游戏会话116。前端服务器134被配置成向游戏会话116的用户提供服务,并且管理用户的账户。可选地,用户经由前端服务器134订阅游戏服务。内容服务器136提供与游戏会话116有关的游戏内容。

在一些实施方式中,前端服务器134管理与客户端设备102和104相关联的用户账户,例如,通过用户账户对一个或多个在线交互式游戏的成员资格的订阅。在客户端设备102登录其相应的用户账户并加入其在线游戏会话116之后,游戏服务器122设置游戏会话116,并通过从内容服务器136中获取游戏内容,将游戏内容发送到在客户端设备102上执行的游戏应用,识别用户请求或动作,响应于用户请求或动作为客户端设备102渲染游戏玩法输出,以及在相应游戏会话116期间存储游戏状态数据,来管理相应客户端设备102的每个特定游戏会话116。游戏服务器122包括一个或多个处理单元(例如,cpu138、gpu140和编码器142)、存储器146和数据缓冲器144,其临时存储gpu140生成的多媒体内容并且将多媒体内容提供给编码器142以进行进一步的编码(例如,标准化或压缩)。数据缓冲器144可选地集成在存储器146中或独立于存储器146。

在一些实施方式中,游戏服务器122动态分配云游戏硬件资源(例如,gpu140和编码器142),并且监视和利用可用于个人最终用户的网络带宽以提供最佳的云游戏体验。在一些实施方式中,游戏服务器122提供多个性能层,包括利用高清视频/媒体流支持高性能、实时游戏会话的层。在一些实施方式中,游戏服务器122支持不同的订阅模型和/或被配置成提供一个或多个并发的实时游戏玩法和/或评论媒体流,其几乎没有延迟或没有延迟地对应于一个或多个实际游戏流(例如,输出到经由移动应用或基于浏览器的程序参与在线/云游戏会话的用户的客户端设备的视频流)。具体地,游戏服务器122被配置成生成用于游戏玩法的并发媒体流和评论视频,并且向媒体流送服务器104提供用于并发游戏玩法的评论视频。经由媒体流送网站,诸如youtube,向一个或多个用户几乎没有延迟或没有延迟地提供此类评论视频。媒体流送站点可选地由媒体流送服务器124管理。

一些实施方式使得能够结合游戏竞赛来进行公共事件的托管。例如,结合基于已托管的游戏的多玩家游戏事件或竞赛,由游戏服务器122托管的云游戏站点可以可选地经由媒体流送服务器123将以下广播或流送到特定评论者客户端设备104:(a)一个或多个并发辅助或补充媒体流,包括相关联的评论曲目/流,(b)来自于不同竞争者的视角的游戏流,重点流基于云服务器分析和/或对与游戏事件相关联的多个游戏会话的评分而显示特别引人注目的游戏动作,(c)反映一个或多个活跃玩家的游戏玩法会话116的一个或多个游戏视点流,和/或(d)来自一个或多个活跃玩家和/或评论者的教学曲目,可能包括主动玩家发送给云游戏服务器系统114的实时画中画(pip)视频以及他们相应的游戏玩法响应。

根据一些实施方式,可以由内容服务器136有效地托管的第三方内容的示例包括但不限于体育游戏、赛车游戏、角色扮演游戏(rpg)和第一人称射击(fps)游戏。这些游戏的不同实例可能基于不同的相关联延迟要求和预期、输出视频分辨率和游戏服务器计算工作量和视频编码/流传输资源、以及网络带宽而具有广泛变化的云硬件要求和网络(例如,以确保最佳的用户游戏体验-在某些情况下与不同的订阅性能层一致)。

在一些实施方式中,前端服务器134提供账户管理api和/或软件模块,该账户管理api和/或软件模块监视游戏玩法活动和订户的相关请求(例如,最终用户邀请其他玩家参与游戏会话,升级他们的游戏工具、和/或游戏性能的请求),并且通过api将相关联的信息传输到第三方内容服务器136或使api可用该相关联的信息,以使内容提供商能够跟踪他们的订户和/或关注者的设置(包括但不限于计费信息、游戏中信用、订阅级别等)。在一些实施方式中,托管的内容的内容提供商可以经由相同的托管平台为托管的内容提供一个或多个不同的订阅模型。在一些实施方式中,向用户(例如,游戏服务的订户)授予对由内容提供商在托管平台上提供的所有游戏的无限访问和游戏玩法。在一些实施方式中,用户被授予对内容提供商在托管平台上提供的一个或多个特定游戏特许经营权(例如,特定的足球或第一人称射击特许经营权)的无限制访问和游戏玩法。在一些实施方式中,订阅是为了用户的有限参与-可以根据游戏玩法时间、最终用户所委托的硬件资源级别或最终用户设备类型/位置来限制参与。在一些实施方式中,账户api和模块配置和监视游戏玩法会话,并且使内容提供商能够根据其最新订阅信息来跟踪各个订户的游戏活动,甚至在活动游戏玩法期间也是如此。

服务器系统114启用云功能,该云功能允许用户四处移动,例如,悬挂在第一客户端设备102上执行的第一游戏会话的第一游戏流,并且在第二客户端设备102的第二游戏会话上重新启动第一游戏流以继续第一游戏会话。服务器系统114还大规模地支持多个玩家,并提供更丰富、更持久的基于云的世界。服务器系统114使用基于云的系统来存储与相同用户的不同游戏会话116或不同用户的不同游戏会话116有关的会话数据。

服务器系统114在多个客户端设备102和104上渲染游戏内容,所述多个客户端设备包括但不限于移动电话、平板计算机、台式计算机和电视。可选地,游戏内容被动态地调整以符合这些客户端设备102和104的规范。在一些实施方式中,客户端设备102和104具有有限的存储能力或没有存储能力,因为游戏api平台提供即时访问并且要求没有或几乎没有的用户设备存储(例如,用户可以在5秒钟内开始播放并节省250gb的控制台硬盘空间)。

除了游戏内容之外,服务器系统114还向客户端设备102和104流送附加内容,例如,新的联赛名册、统计数据以及对早期标题的预览访问,其被可选地定期更新(例如,随时更新、每天或每小时升级)。在一些实施方式中,附加内容包括互联网搜索或数据库搜索的搜索结果。

在一些实施方式中,服务器系统114支持与游戏应用相关联的实时在线社区。用户(例如,服务的订户)整天参与对应游戏api平台上的现场事件、锦标赛或活动。现场事件、锦标赛或活动的示例包括观看其他用户玩的现场游戏会话、将成就发布到公共域(例如,youtube)、以及得到现场提示和指导视频。例如,响应于用户动作,游戏服务器122提供两个或更多个实时流130和132。在将第一游戏流130保持在游戏玩家的第一客户端设备102a的第一游戏会话116上的同时,服务器系统114还向(例如,订户的)一个或多个其他客户端设备104广播第二实时评论流132(例如,youtube流)。第二实时评论流132允许用户与听众分享他的或者她的游戏体验。可选地,第二实时流是玩家的第一客户端设备102a的屏幕的再现。服务器系统114可以获得其中玩家解释第一游戏会话116的音频流,或者播放并解释第一游戏会话116的玩家的视频流。在为听众播放第二实时评论流132的同时为听众可选地播放音频流。视频流可选地在第二实时评论流132中的嵌入式窗口中播放。

一些实施方式提供移动游戏,允许用户将他或她的所预期的游戏带到任何位置或者客户端设备。例如,用户可以在他或她的通勤中在移动设备102a上开始在线游戏会话116,然后在膝上型计算机102b上在他或她的目的地无缝地恢复游戏会话116。而且,在一些实施方式中,基于当游戏会话116在不同设备102之间切换时用户可用的不同客户端设备资源,服务器系统114(具体地,游戏服务器122)可以动态地部署不同的硬件资源集合(例如,gpu140和编码器142)以基于不同的最终用户当前设备资源(例如,客户端硬件能力和网络带宽)来优化用户的游戏体验。

在服务器系统114中,前端服务器134和游戏服务器122可以具有相应用户账户系统。在示例中,用于前端服务器134的用户账户系统被用于管理对特定游戏内容和服务的订阅,并且用于游戏服务器122的用户账户系统(例如,youtube或google账户)被用于管理游戏体验(例如,渲染游戏内容以满足特定游戏标准)和许多其他目的。在一些实施方式中,这两个用户账户系统共享客户和使用数据(例如,社交、朋友、存在、认证、账户信息、账单信息)。而且,内容前端服务器134提供坐落在由游戏服务器122启用的技术层的顶部上的服务层。在一些实施方式中,游戏内容服务器管理用于访问他们的内容的附加用户账户系统。可选地,用于游戏内容的附加用户账户系统与用于管理用户订阅的前端服务器134的用户账户系统集成在一起。

图2是图示根据一些实施方式的游戏环境100的示例客户端设备102的框图。贯穿本申请,除非另有说明,否则对客户端设备102的引用对应于参考图1描述的客户端设备102a、102b和104中的一个或多个。客户端设备102的示例包括但不限于移动电话、平板计算机、膝上型计算机、台式计算机和可穿戴个人设备。在一些实施方式中,客户端设备102是专用的游戏控制器,其包括游戏控制输入210(例如,一个或多个按钮、操纵杆、触摸屏元件、运动控件、压力控件、视觉控件、音频控件和/或配置成在激活时控制游戏玩法的某些方面的其它触觉接口元件)。客户端设备102包括一个或多个处理单元(cpu)202、一个或多个网络接口204、存储器206以及用于互连这些组件(有时称为芯片组)的一个或多个通信总线208。客户端设备102包括促进用户输入的一个或多个输入设备210,诸如键盘、鼠标、语音命令输入单元或麦克风、触摸屏显示器、触敏输入板、手势捕获相机、或其他输入按钮或控件。此外,一些客户端设备200可以使用麦克风和语音识别或相机和手势识别来补充或替换要求接触的接口(例如,键盘和按钮)。在一些实施方式中,客户端设备102包括一个或多个相机、扫描仪或照片传感器单元,用于捕获例如印制在电子设备上的图形系列代码的图像。在一些实施方式中,客户端设备102包括能够呈现用户界面和显示内容的一个或多个输出设备212,包括一个或多个扬声器和/或一个或多个可视显示器。可选地,客户端设备102包括位置检测设备214,诸如gps(全球定位卫星)或其他地理位置接收器,用于确定客户端设备102的位置。客户端设备102还可以包括接近度检测设备215,例如,ir传感器,用于确定媒体设备106和/或其它客户端设备102的接近度。客户端设备102还可以包括一个或多个传感器213(例如,加速度计、陀螺仪等),用于感测客户端设备102的运动、定向、和其他参数,其可以用作输入(例如,用于在上面描述的输入210)。

存储器206包括高速随机存取存储器,诸如dram、sram、ddrram或其他随机存取固态存储器设备;并且可选地,包括非易失性存储器,诸如一个或多个磁盘存储设备、一个或多个光盘存储设备、一个或多个闪存设备或一个或多个其他非易失性固态存储设备。存储器206可选地包括与一个或多个处理单元202远程定位的一个或多个存储设备。存储器206或可替选地,存储器206内的非易失性存储器,包括非暂时性计算机可读存储介质。在一些实施方式中,存储器206或存储器206的非暂时性计算机可读存储介质存储下述程序、模块和数据结构或其子集或超集:

·操作系统216,包括用于处理各种基本系统服务和用于执行硬件相关任务的过程;

·网络通信模块218,用于经由一个或多个网络接口204(有线或无线)和诸如互联网、其他广域网、局域网、城域网等的一个或多个网络110和/或112将客户端设备102连接到其他设备(例如,服务器系统114、媒体设备106和其他客户端设备102);

·用户界面模块220,用于能够经由一个或多个输出设备212(例如,显示器、扬声器等)在客户端设备102处呈现信息(例如,用于呈现应用、窗口小部件、网站和其网页、和/或游戏、音频和/或视频内容、文本等的图形用户界面);

·输入处理模块222,用于检测来自一个或多个输入设备210之一的一个或多个用户输入或交互,并解释检测到的输入或交互;

·输入事件报告模块223,用于向服务器系统114报告输入标识和/或时间戳信息,以用于延迟计算;

·web浏览器模块225,用于导航、请求(例如,经由http)和显示网站和其网页,包括用于加入会话116的web界面;

·媒体设备应用226,用于与媒体设备106进行交互,包括登录到与媒体设备106相关联的用户账户,如果与该用户账户相关联控制媒体设备106,以及编辑和评论与媒体设备106相关联的设置和数据;

·游戏应用228,用于在客户端设备102上提供游戏,包括促进对应游戏玩法和促进其他玩家的邀请;

·游戏控制器模块230,用于向游戏应用228提供游戏玩法输入界面;

·数据下载模块231,用于从服务器系统114和其他内容主机和提供商下载数据(例如,游戏控制器配置456(图4)、游戏应用228和其他应用、对模块和应用以及存储器206中的数据的更新);和

·客户端设备数据232,至少存储与游戏应用228和其他应用/模块相关联的数据,包括:

ο客户端设备设置234,用于存储与客户端设备102本身相关联的信息,包括公共设备设置(例如,服务层、设备模型、存储容量、处理能力、通信能力等);

ο媒体设备设置236,用于存储与媒体设备应用226的用户账户相关联的信息,包括账户访问信息以及设备设置(例如,服务层、设备模型、存储容量、处理能力、通信能力等)的信息中的一个或多个;

ο游戏应用设置238,用于存储与游戏应用228的用户账户相关联的信息,包括账户访问信息、游戏中用户偏好、游戏玩法历史数据和关于其他玩家的信息中的一项或多项;

ο游戏控制器配置240,用于存储与用于游戏应用228的游戏控制器模块230的配置(例如,从图4的游戏控制器配置456接收的配置)相关联的信息;以及

ο位置/接近度数据242,包括与客户端设备102以及媒体设备106中的任何一个的存在、接近度或位置相关联的信息。

在一些实施方式中,游戏控制器模块230是媒体设备应用226或存储器206中的另一应用的一部分(例如,子模块)。在一些实施方式中,游戏控制器模块230是操作系统216的一部分。在一些实施方式中,游戏控制器模块230是不同的模块或应用。

在客户端设备102的一些实施方式中,媒体设备应用226(以及对应的媒体设备设置236)和游戏应用228(以及对应的游戏应用设置238)是可选的。取决于邀请客户端设备102加入的特定游戏,不需要玩媒体设备应用226和游戏应用228。如果为了玩游戏需要这些应用中的任何一个(例如,游戏使用媒体设备应用226中的游戏控制器模块230),并且该应用不在存储器206中,则可以提示客户端设备102下载该应用。

上面识别的元素中的每个可以被存储在一个或多个前面提到的存储设备中,并且对应于用于执行上述功能的指令集。上面识别的模块或程序(即,指令集)不需要被实现为单独的软件程序、过程、模块或数据结构,并且因此这些模块的各种子集可以在各种实施方式中被组合或以其他方式重新排列。在一些实施方式中,存储器206可选地存储在上面识别的模块和数据结构的子集。此外,存储器206可选地存储以上未描述的附加模块和数据结构。

图3是图示根据一些实施方式的游戏环境100的示例媒体设备106的框图。媒体设备106通常包括一个或多个处理单元(cpu)302、一个或多个网络接口304、存储器306以及用于互连这些组件(有时称为芯片组)的一个或多个通信总线308。可选地,媒体设备106包括接近度/位置检测单元310,诸如ir传感器,用于确定客户端设备102的接近度。

存储器306包括高速随机存取存储器,诸如dram、sram、ddrram或其他随机存取固态存储器设备;并且可选地包括非易失性存储器,诸如一个或多个磁盘存储设备、一个或多个光盘存储设备、一个或多个闪存设备或一个或多个其他非易失性固态存储设备。存储器306可选地包括与一个或多个处理单元302远程定位的一个或多个存储设备。存储器306或可替选地存储器306内的非易失性存储器包括非暂时性计算机可读存储介质。在一些实施方式中,存储器306或存储器306的非暂时性计算机可读存储介质存储以下程序、模块和数据结构或其子集或超集:

·操作系统316,包括用于处理各种基本系统服务和用于执行硬件相关任务的过程;

·网络通信模块318,用于经由一个或多个网络接口304(有线或无线)和一个或多个网络110和/或112(诸如互联网、其他广域网、局域网、城域网、有线电视系统、卫星电视系统、iptv系统等)将媒体设备106连接到其他计算机或系统(例如,服务器系统114和客户端设备102);

·内容解码模块320,用于解码从一个或多个内容源(例如,从游戏会话116输出的服务器系统114)接收到的内容信号,并且将解码后的信号中的内容输出到耦合到媒体设备106的输出设备108;

·接近度/位置确定模块322,用于基于接近度检测单元310检测到的或服务器系统114提供的接近度相关信息,确定客户端设备102的接近度;

·媒体显示模块324,用于控制媒体显示;以及

·显示事件报告模块325,用于向服务器系统114报告显示事件标识和/或时间戳信息,以用于延迟计算;

·媒体设备数据328,用于至少存储包括下述的数据:

ο媒体设备设置330,用于存储与媒体设备应用的用户账户相关联的信息,包括账户访问信息和设备设置信息(例如,服务层、设备模型、存储能力、处理能力、通信能力等)中的一项或多项;以及

ο位置/接近度数据332,包括与客户端设备102以及媒体设备106中的任何一个的存在、接近度或位置相关联的信息。

上面识别的每个元素可以存储在一个或多个前面提到的存储器设备中,并且对应于用于执行上述功能的指令集。上面识别的模块或程序(即,指令集)不需要被实现为单独的软件程序、过程、模块或数据结构,并且因此这些模块的各种子集可以在各种实施方式中被组合或以其他方式重新排列。在一些实施方式中,存储器306可选地存储以上识别的模块和数据结构的子集。此外,存储器306可选地存储以上未描述的附加模块和数据结构。

图4是图示根据一些实施方式的游戏环境100的服务器系统114中的示例服务器的框图。服务器系统114通常包括一个或多个处理单元(例如,cpu138、gpu140和编码器142)、一个或多个网络接口404、存储器146以及用于互连这些组件(有时称为芯片组)的一个或多个通信总线408。服务器系统114可以可选地包括促进用户输入的一个或多个输入设备410,诸如键盘、鼠标、语音命令输入单元或麦克风、触摸屏显示器、触敏输入板、手势捕获相机或其他输入按钮或控件。此外,服务器系统114可以使用麦克风和语音识别或相机和手势识别来补充或替换键盘。在一些实施方式中,服务器系统114可选地包括一个或多个相机、扫描仪或照片传感器单元,用于捕获例如印制在电子设备上的图形系列代码的图像。服务器系统114还可以包括能够呈现用户界面和显示内容的一个或多个输出设备412,包括一个或多个扬声器和/或一个或多个可视显示器。

存储器146包括高速随机存取存储器,诸如dram、sram、ddrram或其他随机存取固态存储器设备;并且可选地包括非易失性存储器,诸如一个或多个磁盘存储设备、一个或多个光盘存储设备、一个或多个闪存设备或一个或多个其他非易失性固态存储设备。存储器146可选地包括与一个或多个处理单元远程定位的一个或多个存储设备。存储器146或可替选地存储器146内的非易失性存储器,包括非暂时性计算机可读存储介质。在一些实施方式中,存储器146或存储器146的非暂时性计算机可读存储介质存储下述程序、模块和数据结构或其子集或超集:

·操作系统416,包括用于处理各种基本系统服务和用于执行硬件相关任务的过程;

·网络通信模块418,用于通过一个或多个网络接口404(有线或有线)和一个或多个网络110和/或112(诸如互联网、其他广域网、局域网、城域网等)将服务器系统114连接到其他设备(例如,服务器系统114中的各种服务器、客户端设备102和媒体设备106);

·用户界面模块420,用于能够在客户端设备102处呈现信息(例如,用于呈现应用、窗口小部件、网站和其网页和/或游戏、音频和/或视频内容、文本等的图形用户界面);

·媒体设备模块422(可选),被执行以提供服务器端功能,用于与媒体设备106相关联的设备供应、设备控制和用户账户管理;

·接近度/位置确定模块424,用于基于客户端设备102和媒体设备106中的任何一个的位置信息来确定客户端设备102与媒体设备106的接近度;

·游戏服务器模块426,用于提供与游戏(例如,游戏应用228)相关联的服务器端功能,包括但不限于设置游戏会话、存储会话状态数据和其他与游戏相关的数据、处理来自客户端设备102的游戏玩法输入、以及响应于游戏玩法输入而渲染游戏玩法输出;该游戏服务器模块包括:

ο游戏引擎428,用于基于(i)游戏玩法输入和(ii)与游戏玩法输入相对应的游戏状态来确定游戏玩法输出

ο模拟模块430,用于在玩家的游戏控制器102与服务器系统114之间的网络中断期间(例如,根据特定玩家的游戏中的行为)模拟游戏玩法输入;

ο中断检测模块432,用于检测服务器系统114与游戏控制器102和/或媒体设备106之间的网络连接中的中断或该网络连接的中断,该网络连接支持前述组件中的一个或多个之间或者涉及前述组件中的一个或多个的游戏会话;和

ο状态协调模块434,用于在恢复在服务器系统114和游戏控制器102之间的网络连接时处理恢复后的输入并且使受模拟影响的游戏状态与用户期望的游戏状态协调;

·媒体流送服务器模块438,用于托管媒体流送站点,接收与在线游戏会话相关联的并发辅助或补充媒体流,并且将并发媒体流提供给客户端设备104以与在相同客户端设备104或不同客户端设备102的游戏应用228上正在执行的在线游戏会话并发显示;

·前端服务器模块440,用于管理与客户端设备102相关联的用户账户,例如,通过用户账户对一个或多个在线交互式游戏的会员资格的订阅,能够进行用于订户请求转发到游戏服务器模块426的到订户的服务,并监控游戏玩法活动和订户的相关请求;

·媒体内容服务器模块442,用于提供对由一个或多个第三方内容提供商托管的游戏内容的访问;

·设备/网络评估模块444,用于评估客户端设备102的设备和网络能力,包括但不限于评估与客户端设备102的连接的网络带宽以及评估客户端设备102是否具有玩游戏所需的模块或应用;

·数据传输模块446,用于向客户端设备102提供数据(例如,游戏控制器配置456、软件更新等);以及

·服务器系统数据448,包括:

ο客户端设备设置450,用于存储与客户端设备102相关联的信息,包括公共设备设置(例如,服务层、设备模型、存储容量、处理能力、通信能力等);

ο媒体设备设置452(可选),用于存储与媒体设备应用422的用户账户相关联的信息,包括账户访问信息和设备设置信息(例如,服务层、设备型号、存储容量、处理能力、通信能力等)中的一个或者多个;

ο位置/接近度数据454,454,包括与客户端设备102以及媒体设备106中的任何一个的存在、接近度或位置相关联的信息;

ο游戏控制器配置456,用于存储各种游戏的控制器配置;以及

ο用户信息458,用于存储与托管在服务器系统114上的一个或多个游戏应用(例如,图2中的游戏应用228)中的每个的用户账户相关联的信息,包括例如用户账户信息(例如,标识和密码)、会员类型、偏好、活动历史、以及用于特定游戏的游戏行为数据(例如,以供模拟模块430使用);

ο游戏会话事件日志460,用于存储与游戏会话相关的事件数据(例如,游戏状态数据、游戏玩法输入和其他与游戏相关的数据),包括例如,第一游戏会话的数据460-1和第二游戏会话的数据460-2,其中每个游戏会话的会话数据460包括但不限于游戏状态数据、游戏玩法输入和其他会话数据,诸如帧速率、渲染规范、正常延迟要求、gpu分配、编码器分配以及与相应游戏会话相关的状态信息(例如,详述服务器系统114与控制器102和/或媒体设备106之间是否存在网络连接中断的网络连接状态信息);和

·数据缓冲器144,用于与一个或多个输出媒体流相关联地临时存储由gpu140生成的游戏玩法多媒体内容。

在一些实施方式中,游戏服务器模块426包括以下程序、模块或其子集或超集:

·意图确定模块428,用于将用户输入传输时间(例如,在客户端设备102和服务器系统114之间)与显示传输时间(例如,在媒体设备106和服务器系统114之间)进行比较,并且通过将输入事件与相应的触发帧进行匹配确定用户的意图背后的特定输入;

·延迟调整模块430,用于确定gpu140在(i)在接收到用户输入时正在处理的当前帧与(ii)示出接收到的输入的结果的响应帧之间插入的中间帧的数量:

·资源分配模块432(在本文中可选地称为“会话协调器”),用于从端点(例如,控制器102)接收会话请求并确定哪个资源指配给该会话;和

·资源调优模块434,用于确定特定用户的延迟容限。

在一些实施方式中,存储器146还包括数据缓冲器144,其被配置成将编码器142耦合到gpu140。具体地,数据缓冲器144与一个或多个输出媒体流相关联地临时存储由gpu140生成的游戏玩法多媒体内容,使得编码器142可以从数据缓冲器144中检索游戏玩法多媒体内容,并将检索到的内容编码到一个或多个媒体流中,例如,用于标准化、速度或压缩。

上面识别的元素中的每个可以被存储在一个或多个前面提到的存储器设备中,并且对应于用于执行上述功能的指令集。上面识别的模块或程序(即,指令集)不需要被实现为单独的软件程序、过程、模块或数据结构,并且因此这些模块的各种子集可以在各种实施方式中被组合或以其他方式重新排列。在一些实施方式中,存储器146可选地存储以上识别的模块和数据结构的子集。此外,存储器146可选地存储以上未描述的附加模块和数据结构。

示例游戏过程

上述基于云的游戏平台的各种实施方式提供许多好处(例如,可移植、可扩展性、效率、易于访问和控制等)。然而,这些游戏平台的基于云的性质面临各种挑战,诸如网络和处理资源的可变性,如果不加以适当考虑,可能会对游戏玩法体验产生负面影响。由于在客户端设备102和服务器系统114之间的网络110/112中的可变延迟和瞬时连接中断,这样的挑战可能潜在地创建不均衡的游戏玩法体验。以下公开内容描述各种实施方式,其补偿可能存在于实时交互式的基于云的游戏环境中的瞬时网络中断。通过补偿这些中断,本文所述的实施方式为每个玩家提供平滑且统一的游戏体验。

图5a描绘示例游戏环境500。游戏环境500是与游戏环境100(图1)相似的示例实施方式,具有类似地标记的相应组件。游戏环境500包括客户端设备102(在本文中也称为“游戏控制器”或“控制器”),玩家(或“用户”)使用该客户端设备102例如通过激活或操纵输入210(图2)来控制游戏(或“游戏玩法”)的各个方面。游戏环境500还包括媒体设备106(例如,机顶盒)和输出设备108(例如,电视或其他输出显示器)。控制器102和媒体设备106分别经由本地通信链路502和504(例如,通过wifi)通信地耦合到本地网络110(在该示例中被描绘为无线路由器)。本地网络110通过通信链路506经由通信网络112(例如,互联网)通信地耦合到服务器系统114。服务器系统114包括游戏服务器122(图1)。

虽然图中所描绘的游戏环境500仅包括具有单个控制器102的单个本地网络110,但是游戏环境500的一些实施方式可以包括多个本地网络110,其中一些本地网络110包括多于一个控制器102(例如,用于共享相同游戏会话的多玩家游戏,如上面参考图1至图4所描述的)。

游戏环境500中存在的几个元素可以引入可察觉(例如,影响至少一帧)并且随时间变化的网络中断。例如,本地网络110(例如,wifi)可以在通信链路502和504中引入各种数量的延迟。如果在信道上没有竞争,则平均延迟可以非常低(例如,<1ms)。但是,在诸如具有重叠wifi网络的公寓楼或具有多个无线客户端设备的游戏玩法环境的繁忙环境中,延迟的平均量在10-50ms范围内更为常见,离群值超过200+ms。

此外,通信网络112(例如,互联网)可以在通信链路506中引入引起瞬时中断的延迟。对于大多数用户而言,此延迟的可变性可能不如wifi高;但是,在高峰的游戏时间(傍晚),媒体共享(例如,在电缆调制解调器上)以及网络饱和会导致数据包延时或丢失。平均延迟将取决于从本地网络110到服务器系统114的边缘服务器的距离,其中示例延迟量在20-30ms范围内。此外,瞬时连接中断的可能性随本地网络110和服务器系统114的边缘服务器之间的距离而增加。

因为游戏环境100/500的一些实施方式在控制器102和服务器系统114(例如502/506)之间相对于输出设备108和服务器系统114(例如,504/506)具有单独的网络连接,控制器和服务器之间的网络路径中断可能不一定会影响服务器和输出设备之间的网络路径。在这些情况下,当游戏玩法事件连续渲染在输出设备108上时,用户可能会经历与游戏控制器102的瞬时中断。因此,重要的是准确补偿控制器102和服务器系统114之间的网络中断,以便确保在游戏玩法体验中正确考虑用户意图(例如,期望游戏玩法输入)。

在上面描述的网络问题(例如,延迟和丢失的数据包)可能会对游戏玩法体验产生重大影响。图5b和5c示出两个示例游戏玩法场景,由于网络连接中断而导致完全不同的结果。但是,在详细描述这些示例之前,首先需要描述示例游戏玩法过程。

图6是根据一些实施方式的游戏玩法过程600的流程图。该过程可以在具有一个或多个处理器(例如,cpu138和/或gpu140)和存储用于通过一个或者多个处理器执行的一个或者多个程序的存储器(例如,存储器146)的电子服务器(例如,服务器系统114,或更具体地说,游戏服务器122);具有一个或多个处理器(例如,cpu302)和存储用于由一个或多个处理器执行的一个或多个程序的存储器(例如,存储器306)的媒体设备(例如,媒体设备106);和/或具有一个或多个处理器(例如,cpu202)和存储用于通过一个或多个处理器执行的一个或多个程序的存储器(例如,存储器206)的用户设备(例如,控制器102)处执行。在一些实施方式中,服务器、媒体设备和用户设备包括一个或多个程序以及存储用于通过一个或多个相应处理器执行的一个或多个相应程序的存储器,并且一个或多个程序包括用于执行过程600的指令。在一些实施方式中,相应的非暂时性计算机可读存储介质存储一个或多个相应程序,该一个或多个相应程序包括指令,指令当由电子服务器、媒体设备和用户设备执行时,使具有一个或多个相应处理器的电子服务器、媒体设备和用户设备执行过程600。过程600中的一些操作可以被组合和/或一些操作的顺序可以被改变。

控制器102的用户(在本文中也称为“玩家”)使用控制器102影响游戏中的事件,这些事件由显示在输出设备108上的视频帧(例如,510)描绘(参见图5a)。当玩家决定影响游戏玩法(例如,通过移动虚拟玩家、射击曲棍球等等)时,玩家激活(602)或以其他方式操纵控制器102上的输入210(例如,按下按钮)。将控制器102上的输入210的激活或操纵在此称为“用户输入”、“用户游戏玩法输入”、“期望输入”、“输入事件”和“命令”。经由通信链路502和506(通过网络110和112)将输入事件传达(604)到服务器系统114(例如,到与游戏会话相关联的事件日志460)。

在接收到(606)输入事件时,服务器系统114可选地确定(608)用户激活与接收到的输入事件相关联的输入时在输出设备108上显示哪一个帧。在用户激活输入时向用户显示的帧在本文中称为“触发帧”,因为其触发用户通过激活输入做出响应。

游戏服务器可选地122确定(610)与输入事件相关联的游戏的状态(在此称为“触发状态”)。可选地,基于在步骤608中确定的触发帧来确定触发状态。在一些实施方式中,游戏服务器122通过查阅事件日志460(图4)中维护的游戏状态的日志来确定触发状态。在一些实施方式中,事件日志460包括由帧指纹、帧id和/或游戏时间数据(例如,时间戳或时钟数据)索引的游戏状态的日志。在一些实施方式中,游戏服务器122通过确定与触发帧相关联或与输入事件相关联的游戏时间索引,并查阅事件日志460以确定在与该触发帧相关联的游戏时间索引时存在的游戏状态,来确定触发状态。取决于在输出设备108上显示触发帧和在游戏服务器122上接收输入事件之间流逝多少时间,相对于在游戏服务器122上正在处理的当前状态,触发状态可以是过去的。

已经确定触发状态后,游戏服务器122(例如,gpu140)根据(i)输入事件(例如,“射击冰球”)和(ii)触发状态(例如,当用户键入“射击冰球”输入时存在或显示的游戏状态)处理(612)随后的游戏状态(有时在本文中称为“游戏玩法输出”)。在一些实施方式中,处理游戏玩法输出包括将输入事件输入到算法或游戏引擎中,其基于输入事件和对应的游戏状态来确定游戏玩法输出。例如,游戏引擎可以基于在当前游戏状态期间每个玩家和冰球与球门相关的状态/位置以及在当前游戏状态期间相对于虚拟玩家接收到的任何输入命令(例如,“移动(move)”、“射击(shoot)”或“阻挡(block)”)来确定下一个游戏状态。在一些实施方式中,根据输入事件和触发状态来处理后续游戏状态(游戏玩法输出)包括,处理输入事件,就好像服务器在处理接近于触发状态(例如,触发状态之后的下一个状态,或紧随触发状态之后的状态)的游戏状态时该输入事件对于服务器而言是可用的。

在处理游戏玩法输出时,游戏服务器122渲染(614)或者以其它方式处理描绘所处理的游戏玩法输出的一帧或一系列帧。描绘游戏玩法输出的帧(或一系列帧中的第一个)在本文中称为“响应帧”。例如,如果输入事件和触发状态导致包括特定虚拟玩家的运动的游戏玩法输出,则响应帧是描绘相对于该帧中的其他对象在修改的空间位置中的特定虚拟玩家与用户输入指定的方向保持一致的帧。可替选地,如果输入事件和触发状态导致特定虚拟玩家射击冰球的游戏玩法输出,则响应帧是描绘特定虚拟玩家射击曲棍球的一系列帧中的第一帧。在一些实施方式中,呈现响应帧包括根据处理的游戏玩法输出在响应帧中引入新虚拟对象,修改现有的虚拟对象或修改游戏玩法的任何其他方面并且包括新虚拟对象、经修改的现有虚拟对象或修改后的游戏玩法的任何其他方面。

服务器系统114继续(例如,使用编码器142)对响应帧进行编码,并将编码后的响应帧传输(616)到媒体设备106。在从服务器系统114接收到编码后的响应帧后,媒体设备106(例如,使用内容解码模块320)对响应帧进行解码,并使得(例如,使用输出设备108)向用户显示(620)解码后的响应帧。

返回到图5b和图5c,描绘两个序列的视频帧(510和520),其示出(在帧510-1和520-1中描绘的)相同初始游戏状态。这些序列是应用于游戏环境500的游戏玩法过程600的示例。

图5b描绘了第一场景550,其包括示出了玩曲棍球游戏的三个虚拟玩家(a,b和c)的一系列视频帧510。玩家a由控制器102的用户控制,并且玩家b和c由其他控制器的其他用户,通过计算机控制算法或其组合来控制。在(帧510-1所描绘的)初始游戏状态中,玩家a对球门有无阻碍(clear)的射击。当控制玩家a的用户查看显示器108上的帧510-1时,用户看到玩家a对球门有无阻碍的射击,因此决定命令玩家a投掷冰球。换句话说,帧510-1触发用户输入“射击”命令。将“射击”命令作为输入事件发送到游戏服务器122。当游戏服务器122接收到“射击”输入时,游戏引擎基于“射击”输入和游戏状态本身(例如,玩家的位置,冰球的位置,玩家a和球门之间是否存在无阻碍路径等)来更新帧510-1中所描绘的游戏状态。帧510-2和510-3描绘了更新后的游戏状态(游戏玩法输出),显示了冰球在玩家c有机会阻挡其进入球门之前向球门移动。换句话说,根据游戏引擎,如果玩家在有无阻碍的射击的同时进行射击,则后续状态包括成功射击序列。这样,游戏服务器生成描绘后续状态的响应帧510-2和510-3,并将响应帧传输给用户(例如,传输给媒体设备106以在输出设备108上显示)。从用户的角度来看,响应帧描述了用户在输入事件时期望执行的操作。这样,通过正确确定与用户输入相对应的触发状态,游戏服务器会基于用户输入游戏玩法输入时的意图来处理游戏玩法事件。

图5c描绘第二场景552,包括一系列的视频帧520,其示出与场景550中相同的游戏和玩家。与先前的场景一样,在帧520-1中所描绘的初始状态下,玩家a对球门具有无阻碍的射击;因此,游戏服务器将表示此状态的帧520-1传输到用户的显示器108。当用户查看屏幕108上的帧520-1时,用户看到玩家a对球门具有无阻碍的射击,并且因此决定命令玩家a射击冰球。“射击”命令作为输入事件被传输到游戏服务器122。但是,与先前的场景不同,存在控制器102和服务器系统114之间的网络连接中断,这延迟输入事件在服务器处的接收。如果输入事件最终确实到达服务器,则服务器可能将无法正确确定(在帧520-1中描绘的)触发状态,因为由于延迟,服务器在输入事件到达服务器时正在处理后续游戏状态。这样,游戏服务器继而基于接收到输入事件时的(在帧520-2中描绘的)游戏状态来处理游戏玩法输出。在此示例中,当前状态不包括无阻碍的射击。根据游戏引擎,如果玩家在没有无阻碍射击的情况下进行射击,则后续状态包括被阻挡的射击。这样,游戏服务器渲染描绘玩家a试图射击冰球但被玩家c阻挡的响应帧520-3,并将响应帧传输给用户(例如,传输给媒体设备106,用于在输出设备108上显示)。从用户的角度来看,响应帧描述用户在输入事件时不期望进行的动作。具体地说,用户期望让玩家a射击,而玩家c不挡道;相反,玩家a没有如用户期望的那样快射击,并且因此射击被阻挡。这样,由于未能考虑游戏玩法输入的延迟接收,游戏服务器可能会处理与用户意图相反的游戏玩法事件,这可能潜在地导致用户(和许多其他用户)对玩游戏和/或使用游戏环境500失去兴趣。

在替代场景中,如果服务器系统114检测到上述场景552中所描绘的游戏控制器102和服务器系统114之间的网络中断,则服务器可以忽略在中断期间发送的用户的游戏玩法输入,或者暂停游戏玩法直到中断被解决为止。如果该游戏是多玩家游戏,则暂停一个玩家的游戏可能还会导致其他玩家暂停游戏。可以想象,玩游戏的玩家越多,一个玩家可能体验临时网络中断的可能性就越高,这意味着游戏将被更频繁地暂停。暂停游戏会完全中断游戏流程,从而妨碍每个用户的无缝、连续的游戏体验。此外,忽略游戏玩法输入可能导致与用户意图相反的游戏状态。这些结果还可能潜在地导致用户对玩游戏和/或使用游戏环境500失去兴趣。

在上述每种场景下,输入事件都同时发生;但是,取决于输入事件到达游戏服务器所耗费的时间,响应帧可能会描绘各种不同的结果。这是因为,如果服务器在处理在时间上比触发用户进行输入的游戏状态更晚的游戏状态时接收到用户的输入,则服务器可能会基于关于用户输入的定时的错误信息而错误地处理游戏输出。因为避免这种不一致对于游戏平台而言至关重要,所以对于游戏平台而言补偿在游戏环境中引入的各种网络中断非常重要。通过补偿游戏控制器102与服务器系统114之间的网络中断,游戏玩法平台可以(i)更精确地将输入事件与实际触发状态相关,并且(ii)确保与用户的意图一致的无缝连续游戏体验,即使在连接状况时好时坏的情况下。这样,本文所述的各种实施方式是对下述的改进:不尝试在中断期间以与用户意图一致的方式来补偿网络中断的游戏平台;和在中断期间以与用户意图一致的方式错误地补偿网络中断的游戏平台。

在某些场景下,取决于触发状态与游戏服务器正在处理的当前状态之间流逝多少时间,特定游戏玩法输出可能与已经显示给一个或多个用户什么相矛盾。例如,在图5c中,帧520-3描绘被阻挡的射击。但是,如果游戏服务器确定触发状态是在帧520-1中描绘的状态,则在一些实施方式中,游戏服务器会尝试将用户的意图与游戏的当前状态进行追溯协调。换句话说,用户的意图是在玩家a进行无阻碍射击的同时射击冰球,而游戏的当前状态在玩家a和球门之间显示玩家c。为了使用户的意图(冰球向球门移动)与当前状态(玩家c挡道冰球)保持一致,游戏服务器可以在冰球向球门移动的情况下渲染一系列响应帧,尽管玩家c挡道(例如,图5b的帧510-3)。响应帧可能看起来与当前游戏状态不一致;但是,它们与过去(触发)游戏状态期间的用户意图一致。游戏开发人员可以例如通过设计协调不一致游戏状态的动画来预先计划这些意外情况。示例协调动画包括立即将虚拟角色或对象位移到预期位置(即使这可能看起来违反游戏中的物理学),或以预期方式推进游戏状态同时不示出正确的动画(例如,在不示出冰球到达球门的情况下更新分数,或将怪兽归类为已受伤,即使该怪兽在被射击前似乎已经让开)。在一些实施方式中,在用户交互时将当前游戏状态与用户期望的游戏状态(期望游戏状态)协调包括修改描绘当前游戏状态的帧以创建描绘或更紧密地匹配预期游戏状态的后续帧。

中断补偿

以下讨论描述根据一些实施方式的补偿游戏控制器102和服务器系统114之间的网络中断的各种方法,从而确保在游戏玩法体验中正确地考虑用户的实际输入(并且通过扩展,用户的意图)。

图7是示出根据一些实施方式的用于补偿游戏控制器102和服务器系统114之间的网络中断的示例方法700的流程图。方法700可选地由指令支配,该指令被存储在计算机存储器或非暂时性计算机可读存储介质(例如,图2中的游戏控制器模块230、图3中的媒体显示模块324和/或图4中的游戏服务器模块426),并由游戏控制器102(例如,cpu202)、媒体设备(例如,cpu302)和/或服务器系统114(例如,cpu138和/或gpu140)中的一个或多个处理器执行。计算机可读存储介质可以包括磁盘或光盘存储设备,诸如闪存的固态存储设备或其他一个或多个非易失性存储设备。存储在计算机可读存储介质上的指令可以包括下述中的一个或者多个:源代码、汇编语言代码、目标代码或由一个或多个处理器解释的其他指令格式。方法700中的一些操作可以被组合和/或一些操作的顺序可以被改变。

方法700由游戏控制器(有时在本文中称为“客户端设备”)102、媒体设备106和服务器系统114执行,该游戏控制器102、媒体设备106和服务器系统114包括一个或多个处理内核(例如,cpu202、303、138和/或gpu140)和存储程序以供处理内核执行的存储器。

与用户相关联的游戏控制器102传输(702)关于在实时交互游戏会话(例如,游戏环境100/500)中正在玩的游戏的与该用户的命令(例如,“移动”或“射击冰球”)相关联的一个或多个用户输入。服务器系统114的网络通信模块418接收用户输入,并且游戏引擎428基于接收到的用户输入来更新(704)当前游戏状态gs0。更新后的游戏状态称为gs1,并且基于游戏状态gs0和接收到的用户输入。服务器系统114(例如,使用编码器142)生成描绘游戏状态gs1的一个或多个响应帧,并将响应帧传输到媒体设备106,以在输出设备108上向用户进行显示(706)。

针对随后接收到的用户输入重复在702-706中描述的动作,直到服务器系统114的中断检测模块432检测到(708)在服务器系统114和游戏控制器102之间的网络连接中的中断750。在一些实施方式中,服务器系统114可能不会肯定地检测到网络中断750;在这些实施方式中,服务器系统114使用另一指示器来确定与游戏控制器102的通信可能被中断,诸如与实际游戏玩法行为(例如,在关联的游戏状态的场境中从游戏控制器102接收到的用户输入)相比在预期游戏玩法行为(例如,基于存储在用户信息458中的用户的游戏行为简档)中的不同。

在检测到中断750时,模拟模块430代表控制器102的用户接管游戏玩法输入,同时控制器102和服务器系统114尝试重新连接。在一些实施方式中,模拟模块430暂时地(例如,在自从初始检测到中断以来的预定量的时间内)接管游戏玩法输入,并且然后停止控制游戏玩法动作。在一些实施方式中,模拟模块430接管游戏玩法动作,直到与控制器102的通信重新建立(例如,由于网络连接的恢复)为止。模拟模块430模拟(例如,来自游戏控制器的)直接用户输入或游戏中的行为。

在一些实施方式中,模拟模块430(例如,在任何中断之前)与正常游戏玩法并行运行。换句话说,当用户通过响应于特定游戏状态传输用户输入来主动控制游戏玩法事件时,模拟模块430基于那些特定游戏状态来预测用户输入。当用户向服务器系统114发送输入时,模拟模块将用户的实际输入与模拟的预测输入(或其缺乏)进行比较,以便于响应于特定游戏状态来确定模拟的预测输入(或其缺乏)的精度。通过与主动游戏玩法并行运行,可以在发生中断750的情况下更有效地访问模拟的预测输入。此外,通过与主动游戏玩法并行运行,该模拟可以不断提高用户针对特定的游戏、游戏状态、场景等在游戏中行为的模拟精度。

在一些实施方式中,模拟模块430使用机器学习来训练自身以精确地对特定用户的游戏中行为进行建模。在本文中有时将使用机器学习的模拟称为“ai”(人工智能)模拟。在一些实施方式中,随着ai继续训练,模拟模块为用户创建游戏行为简档。在一些实施方式中,游戏行为简档被存储在服务器系统114的存储器146的用户信息部分458中。随着ai继续与用户一起玩游戏,ai进一步更新用户的游戏行为简档并使用该简档作为通知未来预测的基础。通过让ai不断与用户一起玩游戏,ai可以自动检查以看到在每个用户输入之后,或者在用户输入的子集之后其的精度,并从错误(预测输入与实际输入之间的差异)中学习。例如,在涉及角色穿越地图的游戏中,如果每次角色在特定游戏状态期间处于特定位置时存在角色采用的类似的路径,则如果发生中断ai学习在该路径中移动角色。在一些实施方式中,针对不同类型的游戏和不同游戏状态存在不同的启发式集合。

在一些实施方式中,作为对ai的实时训练的替代,用户的输入和对应的游戏状态被保存在事件日志460中,并且模拟模块430使用那些输入和对应的游戏状态来玩游戏和学习用户的游戏中行为离线(例如,在游戏会话完成之后)。通过在不同时间训练ai,服务器系统114可以在游戏玩法高峰时间更有效地使用处理能力。

在一些实施方式中,模拟模块430模拟关于用户在某些场景下将会做的事情而偏离ai的最佳猜测的输入。例如,在一些实施方式中,模拟模块430在中断期间在更加保守的基础上玩游戏(模拟游戏玩法输入)。例如,通过保守地玩游戏,ai不太可能引起重大的游戏改变事件,诸如在角色扮演游戏中对另一个角色发起进攻行动(例如,战斗、投掷手榴弹)。此外,在一些实施方式中,如果在中断时由用户控制的角色处于防御状态(例如,蹲伏),则发起进攻行动的可能性较低;因此,ai在这些场景中不太可能发起进攻行为。在一些实施方式中,当模拟模块430难以在两个输入之间做出决定时,其中一个输入将以任何方式(射击对手或被对手射击)解决玩家/玩家冲突,而另一个将维持现状(暂时隐藏),会存在玩家之间的冲突无法解决的倾向(保持开放),直到与控制器的网络连接恢复并且游戏引擎可以基于用户的期望输入来处理游戏玩法输出为止。换句话说,存在未解决玩家/玩家冲突的倾向,直到看到如果不发生中断用户会做些什么。

再次参考图7,虽然在中断750期间模拟模块430代表用户正在控制游戏玩法输入,但是用户可能仍在尝试主动控制游戏。在此期间,游戏控制器102不断尝试将用户输入传输(710)到服务器系统114。同样,在此期间,游戏引擎428使用一个或多个模拟用户输入来更新(712)游戏状态gs1,产生更新的游戏状态gs2。游戏状态gs2在本文中有时也称为“占位符游戏状态”,因为它们在中断期间充当用户期望的游戏玩法结果的占位符。在一些实施方式中,占位符游戏状态gs2是模拟游戏玩法输入的直接副产品。换句话说,当游戏玩法输入被键入到游戏引擎428中时,游戏引擎基于游戏玩法输入产生游戏玩法输出,而无需等待额外的游戏玩法输入。可替选地,游戏引擎428一次处理一个或多个输入,基于一个或多个游戏玩法输入确定游戏玩法输出。在一些实施方式中,游戏引擎428在游戏状态存储库中(例如,在事件日志460中)存储或使存储基于模拟输入的每个游戏玩法输出(例如,每个占位符游戏状态),以供以后期望游戏状态进行比较,如在下面所详细地讨论的。在一些实施方式中,对于每个占位符游戏状态gs2,服务器系统114(例如,使用编码器142)生成描绘游戏状态gs2的一个或多个响应帧,并将响应帧传输到媒体设备106以在输出设备108上向用户显示(714)。

当服务器系统114和游戏控制器102之间的网络连接恢复从而结束中断750时,服务器系统114接收(716)在中断期间由客户端设备的用户做出的用户输入710(此处称为“恢复的用户输入”)。在一些实施方式中,服务器系统114基于与接收到的用户输入相关联的时间戳与当前游戏时间索引的比较来确定接收到的用户输入是否是恢复的用户输入。如果用户输入与在其期间存在中断的时间相对应的时间戳相关联,则用户输入是与用户在中断期间发出的命令相对应的恢复的用户输入。取决于游戏控制器102和服务器系统114之间的通信协议以及中断的定时,可能已经在中断之前、期间和/或之后从客户端设备传输恢复的用户输入。

服务器系统114的状态协调模块434基于恢复的用户输入更新(718)游戏状态gs1(与步骤712中的模拟输入一起使用的游戏状态,作为游戏状态gs2的基础),产生可替代地导出的游戏状态gs2,在此称为游戏状态gs2a。游戏状态gs2a在这里有时被称为“期望游戏状态”,因为其描述如果没有中断就会发生的结果–用户键入输入以传输到服务器时用户期望的结果(步骤710)。重要的是要注意,恢复的用户输入被用来更新刚好在中断750的开始之前或接近于中断750的开始存在的游戏状态(游戏状态gs1)。在一些实施方式中,状态协调模块434从事件日志460中的游戏状态存储库获得占位符游戏状态gs2。通过更新在模拟输入替换用户输入之前存在的游戏状态,服务器系统114通过生成游戏状态的两个版本-一个版本是模拟游戏玩法输入的结果(占位符游戏状态gs2),并且另一个版本是恢复的用户输入的结果(期望游戏状态gs2a)–并且比较游戏状态以确定占位符游戏状态gs2的精度,具有将其预测(模拟输入)与用户意图(恢复的用户输入)进行比较的基础。

服务器系统114的状态协调模块434基于在上面讨论的比较(例如,比较占位符和期望游戏状态)而使占位符游戏状态gs2与期望游戏状态gs2a协调(720),从而产生匹配或更紧密匹配用户意图的游戏状态gs3。换句话说,当控制器102与服务器系统114重新连接时,状态协调模块434尝试使从模拟的游戏玩法产生的现存游戏状态(gs2)与已经涉及具有用户维护的控制权的游戏状态(gs2a)协调,从而产生后续游戏状态gs3。在一些实施方式中,后续游戏状态gs3是占位符游戏状态gs2的更新版本,受占位符游戏状态gs2和期望游戏状态gs2a之间的差异影响。服务器系统114(例如,使用编码器142)生成描绘游戏状态gs3的一个或多个响应帧,并将响应帧传输到媒体设备106以在输出设备108上显示给用户(722)。

在一些实施方式中,后续游戏状态gs3附加地或可替代地基于恢复的输入与模拟输入的比较。具体地,当控制器102与服务器系统114重新连接时,状态协调模块434将(由模拟模块430确定的)预测输入与(在中断之后恢复的)用户期望输入进行比较。基于比较的结果(例如,与阈值相比是否存在差异或差异量的测量),状态协调模块434使从模拟游戏玩法产生的现存游戏状态(gs2)与已经涉及具有用户维护的控制权的游戏状态(gs2a)协调,从而产生后续游戏状态gs3。

状态协调模块434取决于特定游戏和/或特定场景,使用一种或多种方法来校正和/或修改占位符游戏状态gs2,以更紧密地匹配期望游戏状态gs2a。例如,如果用户期望将角色移动到游戏场景的第一区域,但是在中断期间,模拟将角色移动到与第一区域不同的第二区域,则gs2将描绘在第二区域(预测区域)中的角色,而gs2a将描绘在第一个区域(预期区域)中的角色。在一些实施方式中,状态协调模块434将使游戏引擎428将角色逐渐或立即位移到第一区域。这样,游戏引擎428将输出描绘第一区域中的角色的后续游戏状态gs3。对于其中游戏状态gs2和gs2a之间的差异被逐渐校正的实施方式,游戏引擎428输出连续的游戏状态gs3,该游戏状态gs3描述角色朝着期望区域移动(例如,在预定数量的响应帧或预定时间量上呈现);相反,对于立即校正差异的实施方式,游戏引擎428输出立即描绘在期望区域处的角色的游戏状态gs3(例如,在下一响应帧中渲染)。

如以上关于图5c所讨论的,从用户的角度来看,描绘游戏状态gs3的响应帧可能看起来与当前显示的游戏状态gs2不一致;但是,它们与用户最初传输用户输入时的意图一致。游戏开发者可以例如通过设计协调不一致的游戏状态的动画来预先计划这些意外情况。示例协调动画包括如前所讨论的立即将虚拟角色或对象移动到期望位置(即使这可能看起来违反游戏中的物理原理),或以期望方式推进游戏状态而未示出正确的动画(例如,在没有示出冰球到达球门的情况下更新得分,或者将怪物分类为具有已经受伤的伤口,即使该怪物在被射击之前看起来已经让开)。在一些实施方式中,使当前游戏状态gs2与预期游戏状态gs2a协调包括,修改描绘当前游戏状态gs2的帧以创建描绘或或更紧密地匹配期望游戏状态gs2a的后续帧。

图8a至图8b图示与以上讨论的中断补偿方法700一致的示例性游戏玩法过程的两种场景。中断被描绘为从线802处开始,并且在线804处结束。与方法700中的用户输入和游戏状态对应的用户输入和游戏状态被类似地标记。在两个附图中,期望游戏状态gs2a都由虚线加边,以表示它没有显示给用户;相反,仅作为状态协调模块434进行比较的基础而生成期望游戏状态gs2a(步骤720)。

在场景810(图8a)中,模拟正确地预测,响应于游戏状态gs1,用户(玩家a)就会射击冰球。响应于此预测,模拟模块430向游戏引擎428发送“射击”输入(708),该游戏引擎428输出占位符游戏状态gs2,其描绘冰球被射击。因为占位符游戏状态gs2和期望游戏状态gs2a相同,所以状态协调模块434指示游戏引擎428继续基于占位符游戏状态gs2生成更新的游戏状态。可替选地,状态协调模块434指示游戏引擎428继续基于期望游戏状态gs2a生成更新的游戏状态。因此,gs3描述冰球朝着球门继续前行。

在场景820(图8b)中,模拟错误地预测,响应于游戏状态gs1,用户就会射击冰球。相反,用户期望将玩家移近球门(请参见恢复的输入“向左移动”)。因为占位符游戏状态gs2和期望游戏状态gs2a不同,所以状态协调模块434指示游戏引擎428修改占位符状态gs2以更紧密地匹配期望状态gs2a。结果,游戏引擎输出示出用户(玩家a)按照期望移动的后续游戏状态gs3。

从用户的角度来看,并且甚至从其他用户(例如,与图1的其他游戏控制器102a玩同一游戏的用户)的角度来看,如果没有正确地处理,或者如果足够的时间已经流逝不存在处理差异的更平滑的方式,则从gs2到gs3的转变看起来可能是脱节的、违反直觉的、或者异常的。在一些实施方式中,为了防止这种场景,状态协调模块434在预定时间量已经流逝之后或者在已经生成预定数量的占位符游戏状态gs2并将其呈现给其他用户之后,放弃修改占位符游戏状态gs2(因为不管用户的初始意图如何,游戏已经超越无法返回的地步)。例如,对于无法暂停的游戏,或者对于具有快速前进游戏状态的游戏,协调模块434可以在(i)预定时间段(例如,2秒、5秒等等),(ii)预定数量的游戏状态,或(iii)占位符状态与期望状态之间的预定量差异,和/或(iv)基于将会受到协调的影响的其它玩家的数量,和/或对协调会对游戏玩法的影响的程度的不一致的预定测量,放弃使占位符状态与期望状态协调。

此外,在一些实施方式中,为了解决或减轻差异,如图8b所示的(在gs2和gs3之间的)差异,状态协调模块434指示游戏引擎428包括具有后续游戏状态gs3的通知,将出现差异的原因通知一个或多个受影响的用户。在一些实施方式中,每当执行中断补偿步骤720时,状态协调模块434使通知显示给一个或多个用户。换句话说,状态协调模块434使显示通知,以便通知用户模拟临时接管特定用户的游戏玩法。

此外,在一些实施方式中,为了解决或减轻差异,如图8b所示的(gs2和gs3之间的)的差异,状态协调模块434指示游戏引擎428提供倒带或重做选项以供一个或多个玩家选择。在选择此选项之后,游戏引擎428将采取先前状态(例如,状态gs1),从而允许用户获得第二次机会按照期望玩游戏。在一些实施方式中,游戏服务器自动提供游戏玩法倒带或重做(不需要用户选择倒带或重做选项)。

图9是图示根据一些实施方式的用于在中断之前、期间和之后处理游戏玩法的示例方法900的流程图。方法900对应于方法700(图7和图8),其中相应的步骤被类似地标记。

方法900可选地由指令支配,该指令存储在计算机存储器或非暂时性计算机可读存储介质(例如,图4中的游戏服务器模块426)中,并且由服务器系统114的一个或多个处理器(例如,cpu138和/或gpu140)执行。计算机可读存储介质可以包括磁盘或光盘存储设备、诸如闪存的固态存储设备或其他非易失性存储设备或者设备。存储在计算机可读存储介质上的指令可以包括下述中的一个或者多个:源代码、汇编语言代码、目标代码或由一个或多个处理器解释的其他指令格式。方法900中的一些操作可以被组合和/或一些操作的顺序可以被改变。

方法900由服务器系统114执行,该服务器系统114包括一个或多个处理内核(例如,cpu138和/或gpu140)和存储由处理内核执行的程序的存储器。服务器系统114(例如,游戏引擎428)如在上面讨论的步骤704中那样处理(902)用户输入。在游戏引擎428处理用户输入的同时,中断检测模块432检查(904)与控制器102的网络连接的中断。只要没有中断(904:否),游戏引擎428就继续处理用户输入。然而,当存在中断时(904:是),模拟模块430如在上面讨论的步骤712中那样模拟(906)用户输入。

中断检测模块434继续检查(908)与控制器102的网络连接的状态。如果中断持续(908:否),则模拟模块430继续模拟用户输入。在一些实施方式中,模拟模块在预定时间量(例如,2秒、5秒等)之后停止模拟用户输入。如果恢复网络连接(908:是),则状态协调模块434如在上面所讨论的步骤718中那样处理(910)恢复的用户输入。

状态协调模块434比较(912):(i)由模拟的预测产生的占位符游戏状态,该模拟的预测关于用户在中断期间如何玩游戏,和(ii)从恢复的输入的处理中产生的期望游戏状态,如上面讨论的步骤720中那样。如果模拟的预测与用户的意图匹配(例如,占位符状态gs2和期望状态gs2a匹配,或者模拟输入与恢复的输入匹配),则过程返回到步骤902,以便继续处理用户输入。但是,如果模拟的预测与用户的意图不匹配(例如,占位符状态gs2和预期状态gs2a不匹配,或者模拟输入和恢复的输入不匹配),则协调模块434(例如,通过修改占位符状态gs2a)修正游戏玩法,如上面讨论的步骤720那样,并且然后该过程返回到步骤902以便继续处理用户输入。

通过补偿诸如游戏环境100和500的实时交互式在线游戏环境的特定用户所体验的网络连接问题,本文公开的实施方式减轻固有的网络连接问题,同时使用户感到连接没有掉落。所公开的实现方式通过学习用户的游戏中行为并且还考虑基于学习到的行为做出的某些假设中的错误,使在线游戏会话对临时连接掉落更有复原能力。重要的是要注意,在此处公开的在线游戏环境的一些实施方式中,每个用户的输出设备(例如,电视、控制台、显示器)正在渲染自己的游戏视图,而游戏玩法事件的处理在远离用户的服务器系统上发生。这样,即使在用户端(例如,媒体设备106或控制器102)上存在连接问题,对于游戏的其余玩家,游戏处理仍然在服务器系统114处继续。因此,本文公开的各种实施方式允许受连接问题影响的用户继续玩游戏,因此具有无缝和积极的游戏玩法体验。

附加模拟功能

返回参考上面关于模拟模块430和游戏玩法行为简档458的讨论,根据一些实施方式,以下讨论公开与在线游戏的场境中的启用ai的模拟特征有关的附加特征。

在一些实施方式中,特定用户的游戏玩法行为简档458用作模拟模块430以无限期地代表用户玩游戏的基础,或者直到用户决定关闭模拟为止。在一些实施方式中,用户角色的模拟版本(例如,虚拟角色和控制该角色的所有游戏玩法输入)会填充其他用户的游戏世界。换句话说,其他用户可以在其各自的相应游戏组件(例如,控制器102、媒体设备106和/或输出设备108)上与特定用户的角色的模拟版本进行交互。

在一些实施方式中,特定用户的角色的模拟版本填充特定用户的游戏世界,从而允许特定用户(使用另一个角色)与模拟角色进行交互。这些实施方式使用户可以接触到用户自己的模拟。例如,这些实施方式允许用户(i)与已被训练成完全像用户玩的模拟比赛,或(ii)与已被训练成完全像用户玩的模拟一起玩游戏。对于用户可以与模拟比赛的实施方式,这使用户可以进一步训练模拟,因为模拟不断从用户的主动游戏玩法控制中学习,如上所讨论的。对于用户可以与模拟一起玩游戏的实施方式,这使用户可以与一个或多个已经被培训以玩游戏的具有用户技能的模拟玩家进行组队,这在诸如体育的团队游戏和其中角色的团队可以一起完成任务的角色玩游戏中非常有用。

关于本公开的注释

已经详细参考各种实施方式,其示例在附图中被图示。在以上详细描述中,阐述许多具体细节以便于提供对本发明和所描述的实施方式的透彻理解。然而,可以在没有这些具体细节的情况下实践本发明。在其他情况下,未详细描述公知的方法、过程、组件和电路,以免不必要地使实施方式的各方面不清楚。

将会理解,尽管在本文中可以使用术语“第一”、“第二”等来描述各种元件,但是这些元件不应受到这些术语的限制。这些术语仅用于区分一个元件和另一个元件。例如,第一设备可以被称为第二设备,并且类似地,第二设备可以被称为第一设备,同时不改变描述的含义,只要第一设备的所有出现都被一致地重命名并且第二设备的所有出现被一致重命名。第一设备和第二设备都是设备,但是它们不是同一设备。

本文所使用的术语仅出于描述特定实施方式的目的,并且不旨在限制权利要求。如在实施方式和所附权利要求书的描述中所使用的,单数形式“一”、“一个”和“该”也旨在包括复数形式,除非场境另外明确指出。还将会理解,本文所用的术语“和/或”指代并涵盖一个或多个相关联所列项目的任何和所有可能的组合。还将会理解,在本说明书中使用时,术语“包括”和/或“包含”指定存在所述特征、整数、步骤、操作、元件和/或组件,但不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或其组的存在或者添加。

如本文中所使用的,术语“如果”可以被解释为意指“当”、“在……时”或“响应于确定”或“根据确定”或“响应于检测”,所陈述的条件先例为真,具体取决于场境。类似地,短语“如果确定[所陈述的条件先例为真]”或“如果[所陈述的条件先例为真]”或“当[所陈述的条件先例为真]”可以被解释为意指,取决于场境,“在确定所陈述的条件先例为真之后”或者“响应于确定所陈述的条件先例为真”或者“根据确定所陈述的条件先例为真”或者“在检测所陈述的条件先例为真之后”或者“响应于检测所陈述的条件先例为真”。

出于解释的目的,已经参考特定实施方式描述前述描述。然而,以上说明性讨论并非旨在穷举或将本发明限制为所公开的精确形式。鉴于以上教导,许多修改和变化是可能的。选择和描述实施方式以便于最好地解释本发明的原理及其实际应用,从而使本领域的其他技术人员能够最佳地利用本发明以及具有各种修改的各种实施方式,以适合于预期的特定用途。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1