用于云游戏的游戏状态保存、传输和恢复的制作方法

文档序号:21539042发布日期:2020-07-17 17:38阅读:629来源:国知局
用于云游戏的游戏状态保存、传输和恢复的制作方法

本分案申请是申请日为2015年11月25日、申请号为201580072048.6、发明名称为“用于云游戏的游戏状态保存、传输和恢复”的分案申请。

相关申请的交叉引用

本申请要求2014年12月31日提交且标题为“gamestatesave,transferandresumeforcloudgaming”的美国临时专利申请号62/099,027的优先权,所述申请的全文出于所有目的以引用的方式并入本文。

本发明总体涉及云游戏环境,并且更具体地涉及用于在游戏中的任何点处保存正在进行的游戏的状态并且在稍后的某个时间在游戏的相同点处恢复游戏的系统和方法。



背景技术:

由可供用户经由互联网访问的联网服务器的系统来促进云游戏。服务器托管多个用户的游戏会话。通常,为用户分配虚拟服务器或物理服务器以用于托管用户的游戏进行。许多游戏是复杂的并且可能无限期持续下去。通常,由于许多不同的原因,用户将暂停他的游戏以允许用户休息一下。

游戏通常包括编程到游戏中的周期性的、预定义的停止点。例如,预定义的停止点通常在游戏中的每个场景或动作级别的结尾处。在这些预定义的停止点处,游戏将保存来自游戏进行的数据(诸如所达到的级别、所获得的成就)并且执行其他内务处理功能。如果用户希望继续玩游戏,那么在停止点或另一个稍后的时间点之后,游戏系统将例如在下一级别或阶段处重新开始或重新启动游戏。如果用户希望暂停游戏,那么可暂停游戏,但游戏机将需要保持冻结以等待另外的用户输入。如果用户希望短暂休息,那么当然是这样。然而,如果用户希望暂停并且在一段时间内停止玩游戏,那么游戏机继续运转几个小时或几天以等待用户恢复是无效率的且不切实际的。

在预定义的暂停点之间的游戏的内容包括独特的、复杂的、交互式的图形和动作,所述图形和动作对用户玩游戏的特定实例来说是独特的。独特的、复杂的、交互式的图形和动作体现在众多不同的、独特的游戏状态数据中。在游戏中的独特的、复杂的、交互式的图形和动作点中的一个中保存游戏相应地是复杂的,并且经常被各种硬件版本和软件版本的不兼容性所阻止。

如上所述,可暂停托管用户的游戏进行的云游戏服务器,然而,这样不必要地消耗云游戏服务器的时间和能量并且还在暂停的用户的游戏进行被暂停的同时阻止任何其他用户使用云游戏服务器。此外,如果用户不再恢复他的游戏进行,那么服务器将专用于不再回来的用户。因此,目前的技术将暂停游戏进行限制到预定义的停止点。

此外,如果用户在游戏中的停止点(即,战斗的结尾、级别的结尾、场景的结尾等)之前的某个点处停止游戏进行,那么可将游戏进行重置到最后保存的停止点(即级别开始之前的状态)。这种重置抹掉了用户在最近经过的预定义的停止点之间的游戏进行。

本发明的实施方案正是在这种情况下出现的。



技术实现要素:

一般来说,本发明通过提供一种用于在游戏中的任何点处暂停正在进行的游戏并且在将来的某个时间在游戏的相同点处恢复游戏的系统和方法来满足这些需要。实施方案允许在暂停点处保存游戏状态。用足以在用户选择恢复时重建游戏状态的数据来保存暂停的游戏状态。当游戏暂停时,游戏状态被收集并保存到存储体,以使得云游戏系统或服务器不再将状态存储在硬件的活动存储器或寄存器中。这允许空出系统以便进行其他游戏进行或处理。此外,恢复游戏进行可在任何时间并且从任何远程客户端发生。当期望恢复时,用户将直接选择已暂停游戏并且系统将加载游戏状态。加载游戏状态将包括从多个文件和数据结构生成游戏状态,以使得重建的游戏状态将使机器回到与在游戏暂停时相同或大致上相同的状态。

在一个实施方案中,当游戏暂停时,保存的游戏状态也将节省在暂停被触发的时间之前的一段时间。节省这个附加的时间量将允许用户赶上或被重新引入到在暂停之前发生在游戏中的情况。将如下所述,游戏状态的保存发生在通常不是由游戏设计者预先设计的某个时间,所以必须完成处理以从硬件寄存器、缓冲器、存储器等以及软件缓冲器、寄存器和文件收集状态数据。这种状态数据收集将允许另一个云游戏系统恢复游戏进行,其中在状态数据被加载在适当的硬件位置和软件位置中之后停止收集,以使得可恢复活动的交互式游戏进行。应理解的是,本发明可以多种方式来实现,包括实现为程序、装置、系统、计算机可读介质或设备。以下描述本发明的若干发明性实施方案。

一个实施方案公开一种云游戏系统,所述云游戏系统包括暂停游戏并恢复所述游戏的能力。所述云游戏系统包括云控制器、联接到所述云控制器的存储设备以及通过网络联接到所述云控制器的多个游戏控制台。多个游戏控制台中的每一个包括硬件层、操作系统层以及应用层。操作系统层被配置用于与硬件层交互,操作系统层包括状态管理器客户端。应用层被配置用于与操作系统层的至少一部分和硬件层的一部分交互。应用层包括游戏,状态管理器客户端被配置来在游戏暂停时捕获游戏控制台的游戏状态数据并且存储所述捕获的游戏状态数据。状态管理器客户端还可在相同的或不同的游戏控制台上应用游戏状态数据并且在游戏被暂停的点处恢复游戏。

另一个实施方案提供一种在云游戏系统中暂停游戏的方法。所述方法包括:在云游戏系统中所包括的第一游戏控制台上玩游戏,以及在游戏中的选定点处暂停游戏。针对已暂停游戏捕获游戏状态数据。通过检索游戏状态数据并且将游戏状态数据应用于选定的游戏控制台并且在选定的游戏控制台上、在游戏中的选定点处恢复游戏,可恢复已暂停游戏。还可在不同用户之间共享游戏状态数据,以允许第一用户与一个或多个其他用户共享他的游戏状态。

结合附图来阅读以下详细描述,本发明的其他方面和优点将变得显而易见,以下详细描述通过举例的方式说明本发明的原理。

附图说明

通过结合附图进行的以下详细描述,将容易理解本发明。

图1是用于实现本公开的实施方案的简化云游戏系统。

图2a是示出用于实现本公开的实施方案的方法操作的简化概述的流程图,所述方法操作是在云游戏状态保存、恢复和传输机构中执行的。

图2b是用于实现本公开的实施方案的用户云游戏系统仪表板的简化图形用户界面。

图2c示出用于实现本公开的实施方案的实施例,其中为用户提供了共享并且保存恢复点的功能。

图3是示出用于实现本公开的实施方案的方法操作的流程图,所述方法操作是在云游戏状态保存、恢复和传输中执行的。

图4是根据本发明的各种实施方案的游戏系统的框图。

具体实施方式

现在将描述用于在游戏中的任何点处保存正在进行的游戏的状态并且在将来的某个时间在游戏的相同点处恢复游戏的系统和方法的几个示例性实施方案。然而,对于本领域技术人员将显而易见的是,可以在没有本文中陈述的一些或全部具体细节的情况下实践本发明。

云游戏正在成为非常受欢迎的游戏环境。云游戏允许单个玩家玩游戏和多玩家玩游戏并且还允许用户玩复杂的、内容丰富的游戏,诸如具有丰富的交互内容以及身临其境的三维(3d)图形的游戏。这类内容丰富的游戏需要复杂且强大的、通常非常专业的计算机,所述计算机具有专业处理器、协处理器以及图形处理器。云游戏还需要精心设计的服务器进程以减少延时并且监控延时以避免性能下降。作为额外的益处,云游戏允许用户在更简单的客户端计算机上玩内容丰富的游戏。例如,用户可使用能够经由本地网络和/或互联网与云游戏系统通信的平板计算机、智能手机或其他手持式计算设备在云游戏系统上玩游戏。

在云游戏环境中,仅维持对用户开放的游戏会话以在未来某个不明确的时刻回到游戏会话不是可行的选项。无限期地维持对用户开放的游戏会话对于云游戏供应商来说成本太高。这些成本包括云游戏控制台的用电量以及阻止另一个用户使用所述相同的游戏控制台。在一个实施方案中,云游戏系统可以在每个游戏会话中为用户分配专用的游戏控制台(即,由云游戏服务器管理的游戏控制台)。因此,当较早的用户不再被分配到供使用的游戏控制台时,相同的游戏控制台也可被分配到第二用户。随时间推移,多个用户共享游戏控制台,但他们不会在相同的时间点使用相同的游戏控制台。

所公开的云游戏状态保存、恢复和传输技术允许用户在游戏进行期间的用户选择的任何时间暂停他的游戏进行会话。在幕后,存储用户的游戏状态并且随后用户的云游戏控制台被空出给另一个用户。云游戏状态保存、恢复和传输技术节省能量,因为游戏服务器可将用户的所分配游戏控制台的使用传输给另一个用户。

当用户准备好恢复他的游戏时,用户的保存的游戏状态被检索并且被加载到相同的或不同的云游戏控制台中。用户可随后在他暂停游戏进行的相同点处恢复他的游戏进行。用户可使用相同的或不同的客户端设备来恢复他的游戏状态。用户可使用相同的或不同的云游戏数据中心来恢复他的游戏状态。用户可从世界上的地理上不同的地区恢复他的游戏状态。

所公开的云游戏状态保存、恢复和传输技术也具有其他用途。例如,用户的游戏会话可在其他用户之间共享,以允许其他用户经历相同的游戏会话或者可能帮助另一个用户(可能在另一个远程位置、但连接了云游戏服务的用户)。例如,第一用户暂停游戏进行,将游戏状态数据传递(例如,共享)给第二用户,第二用户为第一用户完成艰难的战斗并且随后再次暂停游戏并将新的游戏状态数据传递回到第一用户。在一个实现方式中,用户可在控制器或其他用户界面上选择共享按钮或选项来共享保存的游戏状态。所公开的云游戏状态保存、恢复和传输技术也具有许多其他用途。当用户共享游戏状态时,接收到共享的用户可由云游戏系统分配到另一个游戏控制台(即,与共享用户的游戏控制台不同)。在每次共享之前,保存状态,并且在恢复状态时,取决于用户在不同时间被分配了哪个游戏控制台,可在相同的游戏控制台或另一个游戏控制台上恢复状态。

图1是用于实现本公开的实施方案的简化云游戏系统100。云游戏系统100包括云控制器130、多个游戏控制台112a-n、一个或多个游戏控制台管理器113以及存储服务器110。云控制器130、多个游戏控制台112a-n、一个或多个游戏控制台管理器113以及存储服务器110可位于一个或多个数据中心111、115、117中。云控制器130、多个游戏控制台112a-n以及存储服务器110由局域网104a、104b、104c和/或互联网102联接在一起。多个游戏控制台112a-n和游戏控制台管理器113可共同位于单个数据中心115中或分布在超过一个数据中心之中。

一个或多个游戏控制台管理器113可包括在游戏控制台112a-n的每个机架中。游戏控制台管理器113根据一个或多个硬件和/或软件体系结构来管理一个或多个游戏控制台112a-n。使用网络连接115和/或任选的通用输入/输出、通用串行总线或等效控制连接将游戏控制台管理器113物理连接到游戏控制台112a-n以启动对游戏控制台的供电。游戏控制台管理器113可以任选地包括附加功能,诸如在所分配游戏控制台与用户的客户端设备之间建立并管理流式会话。

本地存储服务器116可以任选地与多个游戏控制台112a-n中的一个或多个共同位于相同的数据中心115中。本地存储服务器116可存储将要由多个游戏控制台112a-n和/或云控制器130使用的或将要从多个游戏控制台112a-n和/或云控制器130接收的数据116a。数据中心111、115、117可在地理上分离。举例来说,第一数据中心111和第三数据中心117可位于加利福尼亚的洛杉矶,并且第二数据中心115可位于瑞典的斯德哥尔摩。

云控制器130和/或游戏控制台管理器113包括游戏数据库132以用于存储可被下载到多个游戏控制台112a-n中的一个或多个的多个游戏和其他应用程序。云控制器130还包括授权管理器135。授权管理器135确定第一用户是否具有有效帐户和对云游戏系统100的授权访问。第一用户的账户信息包括在用户账户数据库133中。在一个或多个实现方式中,云控制器130还可包括状态控制器134。状态管理器134在启动时还可与游戏控制台112a-n中的每一个中所包括的状态管理器客户端144一起工作来捕获用于相应游戏控制台的游戏状态数据。

存储服务器110为云游戏系统100提供存储设施。存储服务器110包括一个或多个存储设备110a、110b以用于存储云游戏系统100可能需要的数据,诸如用户的状态数据114’。一个或多个存储设备110a、110b可以是任何合适的存储介质,例如硬盘驱动器、固态驱动器或光驱等。

游戏控制台112a-n中的每一个包括硬件层143和覆在所述硬件层上面的操作系统层142。应用层141覆盖操作系统层142。应用层141包括在游戏控制台112a上运行的游戏和其他应用程序。硬件层包括主处理器145、协处理器146、图形处理器(gpu)147、存储器系统148、输入输出系统149、网络接口卡150以及许多其他物理外围设备和虚拟外围设备,上述各项可能是游戏控制台112a的操作所需的。主处理器145、协处理器146、图形处理器147、存储器系统148、输入输出系统149、网络接口卡150以及其他外围设备由一个或多个数据总线151联接在一起。

在至少一个实现方式中,操作系统层142包括状态管理器客户端144。在其他实现方式中,状态管理器客户端144可包括在应用层141中的一个或多个应用程序中。状态管理器客户端144也可实现为有部分常驻在操作系统层142和应用层141两者中。状态管理器客户端144在启动时可捕获游戏控制台112a的游戏状态数据114。捕获的游戏状态数据114可作为游戏状态数据114’存储在本地存储服务器116中和/或存储服务器110中。存储的游戏状态数据114’的存储位置被提供到云控制器以添加到用户帐户数据库133中的第一用户的帐户信息。

客户端设备122a、122b经由互联网102或本地网络104a-c提供对云游戏系统100的访问。客户端设备122a、122b可以是能够访问互联网102和/或本地网络104a-c的任何合适的平台。举例来说,客户端设备122a、122b可以是个人计算机、便携式计算机、笔记本式计算机、手持式游戏设备、手持式计算设备(诸如平板计算机或智能电话或任何其他合适的计算平台)。第一客户端计算设备122a和第二客户端计算设备122b可用在多个不同的、地理上分离的位置中。举例来说,第一客户端计算设备122a可以是由第一用户在他的家里、在他的办公室中以及在他旅行时用来访问互联网102和云游戏系统100的平板计算机。类似地,第二客户端计算设备122b可以是能够在家里、在办公室或在可以访问互联网的其他场所中访问互联网102和云游戏系统100的笔记本式计算机。

在一个实现方式中,第一用户可使用第一客户端计算设备122a来经由互联网102访问云控制器130。身份验证管理器135对第一用户进行身份验证并且确定针对第一用户所允许的访问级别。云控制器130和/或游戏控制台管理器113针对目前的云游戏会话将第一用户分配到游戏控制台a112a并且提供已授权级别的访问,所述访问包括来自游戏和应用程序数据库132的授权的应用程序和游戏。云控制器130和/或游戏控制台管理器113还可将授权的游戏和其他应用程序从游戏和应用程序数据库132传输到所分配游戏控制台a112a。在一个实现方式中,所分配游戏控制台a112a可访问游戏和应用程序数据库132以将授权的游戏和其他应用程序传输到所分配游戏控制台a。

所公开的云游戏状态保存、恢复和传输技术针对云游戏目的是特别有用的,因为暂停和恢复游戏状态中涉及有大量的数据。云游戏系统100非常适合所公开的云游戏状态保存、恢复和传输技术,因为云游戏系统包括使用高速网络104a-c在世界各地连接起来的成千上万个云游戏控制台112a-n。

本文公开云游戏状态保存、恢复和传输技术和方法的多个实现方式。一种方法是在游戏控制台之间传输完整的硬件状态数据或完整的应用程序状态数据中的至少一个。以下是对云游戏状态保存、恢复和传输机构可以怎样工作的描述。还提供了对怎样复制硬件状态数据和应用程序状态数据的详述。

云游戏状态保存、恢复和传输机构允许将游戏状态数据从一个游戏控制台传输到另一个游戏控制台。图2a是示出用于实现本公开的实施方案的方法操作200的简化概述的流程图,所述方法操作200是在云游戏状态保存、恢复和传输机构中执行的。在操作205中,第一用户正在云游戏系统100中的游戏控制台112a上玩游戏。在操作210中,第一用户选择在游戏中的选定的暂停点处暂停游戏。选定的暂停点可以是游戏中除预定义的游戏暂停点之外的任何点。由于一个或多个云游戏系统管理的原因,云游戏系统100还可自动地暂停用户的游戏。举例来说,如果云控制器130在比预先确定的不活动时间极限长的时间段内未检测到来自第一用户的活动,或者如果云控制器从第一用户的客户端设备112a检测到网络断开。

在一个实施方案中,云控制器了解可用的游戏和可用的游戏服务器,但由于能力原因,通常依赖于所分配游戏控制台和/或游戏控制台管理器中的流式软件来处理与客户端设备112a-b的连续交互。游戏控制台管理器、所分配游戏控制台或客户端设备可以确定不活动。用户的不活动(诸如在预定义的持续时间内没有按钮按压)可由客户端设备确定。游戏控制台管理器和/或所分配游戏控制台可类似地识别用户的不活动。举例来说,当客户端设备检测到用户在预定义的持续时间内的不活动时,客户端设备将断开消息发送到所分配游戏控制台和/或游戏控制台管理器。断开消息还可包括造成断开消息的原因,例如,没有用户活动。当所分配游戏控制台和/或游戏控制台管理器接收到断开消息时,启动关闭流式会话的其余部分的过程,诸如停止游戏、存储用户数据、捕获游戏状态数据等。在一个实现方式中,断开消息由所分配游戏控制台中和/或游戏控制台管理器中的流式软件接收,并且流式软件向游戏控制台管理器发布关闭消息,并且游戏控制台管理器处理关闭过程。

根据体系结构,用户断开最终还可被传达到云控制器。在一个实施方案中,云控制器可监视或跟踪用户当前是否在进行流式传输(例如,为了计费目的)或者阻止用户多次进行流式传输,如果用户从两个或更多个位置访问他所保存的数据,所述多次流式传输可能造成数据损坏。

在操作215中捕获并存储第一用户的游戏状态数据。在捕获并存储第一用户的游戏状态数据之后,游戏控制台112a可被空出以供第二用户使用。游戏状态数据包括硬件状态数据和/或应用程序状态数据。游戏状态数据还可包括在游戏的选定的暂停点处重建游戏可能所必需的历史相关数据和过程数据。历史相关数据和过程数据可以呈数据结构的形式,所述数据结构包括形成能够在选定的暂停点处恢复的可执行游戏应用程序所需的时间元数据和用户交互历史元数据。时间元数据和用户交互历史元数据的实例包括图形数据,诸如颜色数据、纹理数据、顶点数据、分段数据、艺术资产、绘图数据、阴影数据、照明数据等等。时间元数据和用户交互历史元数据还可包括各种缓冲器和高速缓存的内容和状态,以及协调游戏操作所必需的各种计数器和计时器的状态。捕获游戏状态数据还可包括在第一用户的选定的暂停点处捕获游戏中的场景的当前图像。

在稍后的某个时间,在操作220中,第一用户选择恢复已暂停游戏并且所存储的第一用户的游戏状态数据被检索并且加载在所分配游戏控制台上,并且在操作225中,在游戏中的暂停点处恢复游戏。用户可在原来用户最初用来玩游戏的那个相同的游戏控制台112a上恢复游戏。可选地,第一用户可在另一个游戏控制台112b上恢复游戏。第一用户还可授权第二用户访问第一用户的游戏状态数据以允许第二用户恢复第一用户的已暂停游戏。恢复游戏包括在选定的游戏控制台上应用游戏状态数据。游戏状态数据可包括数据结构,所述数据结构包括形成能够在选定的暂停点处恢复的可执行游戏应用程序所需的时间元数据和用户交互历史元数据。

图2b是用于实现本公开的实施方案的用户云游戏系统仪表板250的简化图形用户界面。云游戏系统仪表板250包括以下选项:选择新游戏252、研究用户在游戏比赛中的当前名次254、查看用户的游戏历史256、更新用户的朋友258、其他选项260和更新用户帐户262。选项中的每一个使用户移动到对应的屏幕来执行选定的选项。

云游戏系统仪表板250还可包括已暂停游戏菜单270。已暂停游戏菜单270包括已暂停游戏列表和恢复或删除已暂停游戏的选项。应注意,用户可具有超过一个已暂停游戏并且可任何时间并且由于他选择的任何理由暂停游戏。云游戏系统仪表板250屏幕中还示出了用于选择所显示的菜单选项的指针280。

云游戏状态保存、恢复和传输提供捕获并且允许将用户的游戏状态从一个游戏控制台传输到另一个游戏控制台。用户的游戏状态可包括在用户暂停游戏时用户的游戏控制台的硬件状态数据和/或应用程序状态数据中的一个或两个。

图2c示出一个实施例,其中为用户提供了共享290游戏a的保存状态的功能。系统还可保存用户与bob292保存游戏状态的数据,并且随后具备从由bob保存的某个暂停点或状态恢复292的能力。bob还可能完成一个级别并保存或向用户指示所述级别已完成,这将允许重新开始下一级别。图2c中还示出保存游戏b中的暂停点的历史信息294的选项。如果用户多次暂停,那么用户可能在这些较早的暂停点处而不是仅在最后保存的暂停点处恢复。在一些实施方案中,为了历史目的保存一定数量的暂停点以节省存储空间,或者用户可具备下载所存储暂停点的能力。此外,用户也许能够与超过一个用户共享暂停点。例如,用户可与多个用户(例如,朋友)共享游戏a中的暂停点,以查看谁在一个级别中取得最佳成绩,获得最佳的奖品等。随后,用户可选择他或她希望从哪个朋友暂停点接管或恢复。

图3是示出用于实现本公开的实施方案的方法操作300的流程图,所述方法操作300是在云游戏状态保存、恢复和传输中执行的。在操作305中,第一用户访问云游戏系统云控制器130。授权管理器135通过查询用户帐户数据库133以及将第一用户的登录访问信息与用户帐户数据库133中的第一用户的帐户信息进行比较来确认用户具有有效帐户和第一用户的授权访问。第一用户可经由客户端设备122a访问云控制器。

在操作310中,云控制器130将第一用户分配到游戏控制台112a。在一个实现方式中,将第一用户分配到游戏控制台112a可包括将第一用户的先前已暂停游戏中的任一个自动地加载在所分配游戏控制台112a上。将游戏控制台112a分配到第一用户还可包括显示第一用户的云游戏系统仪表板250屏幕。在一个实现方式中,游戏控制台管理器可将第一用户分配到游戏控制台112a。云控制器执行授权,并且游戏控制台管理器激活游戏控制台(例如,应用电力),传输任何所需的数据(诸如游戏数据、用户数据、游戏状态数据等)并触发向所分配游戏控制台的登录序列。可选地,所分配游戏控制台可从用户数据所指示的对应的存储位置和/或游戏控制台管理器和/或云控制器130检索任何所需的数据(诸如游戏数据、用户数据、游戏状态数据等)。

在操作315中,第一用户在所分配游戏控制台112a上选择并执行游戏或应用程序。所分配游戏控制台112a可以是一个或多个云游戏服务器中的许多游戏控制台中的一个。在一个实现方式中,第一用户的所分配游戏控制台112a可被限制于游戏控制台的时间共享,其中仅分配给第一用户所分配游戏控制台112a的操作时间的一部分。游戏控制台112a可提供一个或多个时间共享,所述时间共享中的每一个可被分配给相应的用户,从而允许多个用户同时使用单个游戏控制台。

在操作320中,在游戏中、在除应用程序中的预定义暂停点之外的点处启动暂停。例如,第一用户可启动暂停请求来暂停他的流式游戏会话。可选地,云控制器130可由于第一用户的不活动超过预先选择的不活动时间极限而启动暂停。由于成本原因,云控制器130可自动地暂停第一用户的游戏控制台112a,以使得第一用户的游戏控制台可被空出并且可供第二用户使用。第一用户可通过将暂停请求传达到云控制器130和第一用户的所分配游戏控制台112a中的一个或两个来启动暂停。如上所述,暂停操作可分布在所分配游戏控制台、游戏控制台管理器、云控制器130以及流式软件之中。

在操作325中,捕获所分配游戏控制台112a的第一用户的当前游戏状态数据114。所捕获的第一用户的游戏状态数据114可以是硬件状态数据或应用程序状态数据或者是硬件状态数据和应用程序状态数据两者。以下更详细地描述硬件状态数据和应用程序状态数据以及用于捕获硬件状态数据和应用程序状态数据的方法和系统。

在操作330中,存储捕获的第一用户的游戏状态数据114以用于稍后检索。如上所述,捕获的第一用户的游戏状态数据114可作为存储的游戏状态数据114’存储在本地存储服务器116中和/或存储服务器110中。存储服务器110和本地存储服务器116可为多个游戏控制台和/或多个用户有效地存储游戏状态数据。在操作335中,第一用户的存储的游戏状态数据114’的位置与用户帐户数据库133中的第一用户的帐户数据相关联。这允许第一用户的帐户信息包括第一用户的暂停的游戏状态数据的存储位置。

在稍后的某个时间,并且在操作340中,启动在以上操作320中暂停游戏的那个点处恢复第一用户的已暂停游戏的请求。恢复请求可来源于第一用户或授权的第二用户。第一用户或授权的第二用户可通过所分配游戏控制台(诸如游戏控制台112b)来发布恢复请求。

如果第一用户已经退出他的初始游戏会话或者他的初始游戏会话以其他方式中断(诸如,云控制器终止初始游戏会话或者第一用户经历与云游戏服务器130或与游戏控制台管理器113或与所分配游戏控制台的网络连接的中断),那么可能需要第一用户重新访问云游戏服务并分配有游戏控制台,如以上操作305中所述。当第一用户分配有游戏控制台112b时,第一用户的已暂停游戏中的一个或多个可被自动地加载在所分配游戏控制台上。当第一用户分配有游戏控制台112b并且第一用户的已暂停游戏中的一个被加载在所分配游戏控制台上时,所分配游戏控制台可向第一用户提供已暂停游戏准备好恢复的指示,并且为第一用户提供访问来在以上操作320中暂停游戏的那个点处恢复已暂停游戏。

如上所述,第一用户还可共享或发送存储的游戏状态数据114'或以其他方式授权第二用户访问存储的游戏状态数据114'。在云控制器130中从所分配游戏控制台(例如游戏控制台112b)接收恢复游戏的请求。

在接收到恢复请求之后,在操作345中,云控制器130查询用户帐户数据库133中的第一用户的帐户信息以确定用于用户的已暂停游戏的存储的第一用户的游戏状态数据114’的存储位置。在操作250中,云控制器130和/或游戏控制台管理器113可检索存储的第一用户的游戏状态数据114’并且将存储的第一用户的游戏状态数据114’发送到发出请求的游戏控制台112b。在操作355中,发出请求的游戏控制台112b接收存储的第一用户的游戏状态数据114’。

在操作360中,发出请求的游戏控制台112b应用存储的第一用户的游戏状态数据114’来产生恢复的游戏状态数据114”以在暂停点处重建游戏。在暂停点处重建游戏将发出请求的游戏控制台112b配置成与游戏控制台112a等效的配置,并且将游戏配置成当在以上操作320中暂停游戏时。在暂停点处重建游戏可包括使用恢复的游戏状态数据的相应部分来填充发出请求的游戏控制台112b内的多个相应方面和位置。举例来说,在暂停点处重建游戏可包括填充在暂停游戏的点处重建游戏所必需的所有历史相关数据和过程数据。重建游戏所必需的相关数据和过程数据的实例包括图形数据,诸如颜色数据、纹理数据、顶点数据、分段数据、艺术资产、绘图数据、阴影数据、照明数据等等。相关数据和过程数据还可包括各种缓冲器和高速缓存的内容和状态,以及协调游戏操作所必需的各种计数器和计时器的状态。在暂停游戏的点处重建游戏还可包括显示在第一用户的选定暂停点处、游戏中的场景的捕获图像。

在操作370中,在游戏中与以上操作320中暂停游戏的相同点处、在游戏控制台112b中恢复第一用户的游戏,并且所述方法操作可以结束。

游戏状态数据可以表达为应用程序状态数据和/或硬件状态数据的形式。应用程序状态数据捕获和恢复以及硬件状态数据捕获和恢复中的每一个都对云游戏状态保存、恢复和传输技术有它自己的挑战,如下文所讨论。

应用程序状态数据

计算机是由一个或多个处理器、存储器以及输入输出外围设备(例如图形处理器单元(gpu)、声卡、键盘以及其他外围设备)组成的一件硬件。计算机运行的任务是计算机程序或应用程序。计算机处理器执行这些应用程序的代码并且基于i/o作出决定,例如,键盘按钮按压可导致在显示器上输出视频帧。

应用程序状态数据可归因于硬件状态数据。应用程序所使用的存储器缓冲器最终是ram芯片的或在交换文件中的区域,例如硬盘驱动器或固态驱动器。处理器在指令高速缓存中存储用于应用程序的指令,并且在处理器寄存器、数据高速缓存或ram中检索/存储数据。在执行期间,每个计算机应用程序具有对应的应用程序状态数据。应用程序状态数据呈以下形式:

打开文件句柄

呈开放式套接字形式的网络连接

管道

应用程序所使用的存储器缓冲器的状态

指令计数器

计时器

例如,应用程序状态数据可包括信号、线程、文件描述符、虚拟存储器映射、线程本地存储、线程、进程id、用户id、组id、管道、套接字等等。应用程序状态数据还可包括操作系统级概念,诸如由游戏占用的gpu资源。游戏意识到资源,诸如纹理、几何缓冲器、供gpu执行的着色器指令以及其他资源。纹理存储在gpu存储器中,着色器指令被加载到gpu存储器中并且在执行期间加载在指令高速缓存中,并且最终有一个匹配的指令指针。

再次参考以上图3,当在以上图3的操作320中启动暂停时,游戏或应用程序被暂停。在操作325中,通过捕获应用程序状态数据来捕获游戏状态数据。应用程序状态数据包括虚拟存储器映射、检索文件描述符等。在一个实现方式中,来自应用程序内的类似调试程序的功能可用来捕获虚拟存储器映射、检索文件描述符等。

应用程序状态数据的一部分也可在linux操作系统上从外部获得,例如从/proc/<proccessid>应用程序获得。应用程序状态数据的实例可以是打开文件,针对所述打开文件,应用程序具有为数值的文件描述符。在文件读/写调用中使用数值文件描述符作为用于文件的标识符。为了还原这种状态,应用程序需要具备正确的数值文件描述符。举例来说,在linux操作系统中,可通过伪码捕获数值文件描述符,所述伪码诸如:

-original_file_descriptor=42

-file_descriptor=open("/path/to/file",..)

-dup2(file_descriptor,original_file_descriptor)

另外,在linux操作系统上,可使用名称空间来虚拟化其他类型的应用程序状态数据,诸如进程id(pid)、用户id、组id、网络布局以及其他数据。虚拟化的进程id(pid)、用户id、组id、网络布局等允许创建沙箱/容器环境,其中系统的部分可被隐藏并且其中可重新创建pid、用户id以及其他操作系统级资源。

捕获的应用程序状态数据可随后用来在图3的操作360中在相同的或不同的计算机系统(例如,游戏控制台112b)上重新创建相同的应用程序状态数据。可将各种应用程序状态数据放置在用来恢复应用程序或游戏的游戏控制台112b中的相应位置中。可在操作系统中重新创建网络缓冲器的内容。可选地,网络缓冲器可被排空到安全还原点,类似于以下描述的硬件中断。以这种方式,用户将能够在以上操作320中暂停应用程序或游戏的点处恢复应用程序。

硬件状态数据

硬件状态数据包括在执行应用程序期间,诸如当用户选择暂停应用程序时,被暂停的计算机的操作状况。及时冻结计算机的当前操作状况,以使得计算机的硬件,例如处理器、ram、所有外围设备、gpu、声卡、网卡等。在用户已经在第一计算机中暂停应用程序的情况下,捕获这个硬件状态数据并随后将捕获的硬件状态数据应用到另一个计算机可允许用户恢复所述应用程序。

仿真程序是完全在软件中模拟计算机的硬件的应用程序。仿真程序通常用来在最近生产的计算机系统上运行来自很旧的计算机或游戏控制台(诸如已过时的计算机或游戏控制台)的旧版应用程序。由于硬件不兼容和没有仿真程序应用程序,最近生产的计算机系统与旧版应用程序不兼容,所以最近生产的计算机系统不能运行旧版应用程序。

为了在操作中的任何选定点处保存硬件状态数据,仿真程序可将用于仿真计算机的仿真硬件状态数据保存到例如文件。仿真硬件状态数据包括捕获用于仿真设备的所有存储器、外围设备的状态、将当前执行的指令的地址存储在用于仿真计算机的其他地方。仿真计算机完全在仿真程序应用程序中实现,从而如上所述捕获仿真程序应用程序的应用程序状态数据。

虚拟机状态类似于仿真硬件状态数据。在云游戏、硬件状态数据捕获、传输和恢复的情况下,对仿真程序的一个挑战是在多个虚拟游戏机之间共享仿真硬件状态数据。

通常,服务器应用程序(例如web服务器、数据库服务器、电子邮件服务器等)在物理服务器硬件(例如服务器机器)上运行。服务器机器包括强大的中央处理单元(cpu)以及大量存储器,这允许并行运行多个服务器应用程序。计算机硬件(诸如处理器、存储器、数据总线等)已变得更强大,并且服务器运行时间和安全性已变得甚至更关键且重要。

服务器应用程序通常在虚拟化服务器硬件上运行。在这种情况下,存在强大的服务器处理器,所述服务器处理器运行虚拟化应用程序。虚拟化应用程序允许创建多个虚拟机。每个虚拟机是单独运行的仿真计算机硬件。每个虚拟机包括它自己的一组虚拟外围设备或物理外围设备,例如网卡、存储设备等。每个虚拟机可运行它自己的操作系统。虚拟机中的每一个虚拟机上的操作系统可与其他虚拟机不同并且与物理机(例如运行多个虚拟机的linux物理机)的操作系统不同,所述虚拟机中的每一个运行不同版本的windows或其他合适的计算机操作系统。

每个服务器应用程序(例如web服务器、数据库服务器、电子邮件服务器等)通常由于安全隔离的原因被分配到它自己的虚拟机。通常,虚拟机(例如仿真程序)是软件概念,并且可与仿真程序以类似的方式被暂停,并且虚拟机状态可被捕获为虚拟化应用程序的应用程序状态数据。

随后可将虚拟机状态传输到第二虚拟机。第二虚拟机可在可能使用不同物理部件的不同物理服务器上运行,但由于虚拟外围设备和虚拟机的虚拟处理器,物理部件将并不重要。

虚拟机状态可被认为是一种类型的应用程序状态数据。在计算机系统之间传输虚拟机状态被称为虚拟机迁移,并且是服务器世界中的常见特征。

对虚拟机迁移的最近扩展被称为实时迁移,并且提高了服务器可靠性。例如,虚拟数据库服务器可检测到物理硬件出现故障(例如存储器错误、硬盘读错误等),并且触发虚拟数据库服务器迁移到托管在不同服务器硬件上的另一个相同的虚拟数据库服务器。实时迁移可在仅几毫秒或更少的停机时间内并且在不断开任何客户端的情况下发生。

不幸的是,虚拟机的所有外围设备都必须是虚拟外围设备,以便虚拟机的迁移正常工作。虚拟机的迁移不支持物理外围设备的迁移。将第一游戏控制台的硬件状态数据迁移到第二游戏控制台需要迁移物理硬件,并且因此虚拟机迁移不适合这个目的。

由于产生内容丰富的交互式游戏环境所需的游戏控制台硬件的复杂性,不能容易地或有效地仿真或虚拟化游戏控制台。用户被分配到特定的游戏控制台,并且用户的选定游戏正由所分配游戏控制台的硬件执行。因此,仿真和虚拟化将不提供捕获硬件状态数据作为一种类型的应用程序状态数据所需的功能。

如上所述,硬件迁移需要捕获计算机和用于所述计算机的外围设备的相关硬件状态数据。可查询用于相应外围设备的设备驱动程序,以捕获用于外围设备的相关硬件状态数据并且在系统进入休眠时将这种状态存储在系统存储器中。当系统再次通电时,从磁盘还原所有存储器状态,并且还将命令外围设备驱动程序还原任何硬件状态数据,例如用于gpu的包含3d纹理的缓冲器。

在一个实现方式中,游戏控制台112a如以上图1中所示包括主处理器145和协处理器146。当用户选择暂停游戏控制台112a时,在以上操作320中,主处理器145可冻结当前操作中的一个或多个。在操作325中,协处理器146可查询主处理器145、缓冲器、图形处理器147、存储器系统148、输入输出系统149、网络接口卡150以及其他外围设备,以确定相应的目前状态来捕获硬件状态数据。可选地,与操作系统一起工作或作为操作系统的一部分的应用程序可暂停并查询缓冲器、图形处理器147、存储器系统148、输入输出系统149、网络接口卡150以及其他外围设备。

为了支持从第一游戏控制台112a到第二游戏控制台112b的游戏控制台硬件状态数据迁移,需要额外的手段,即使第二游戏控制台112b包括与第一游戏控制台112a相同的部件和外围设备。例如,游戏控制台112a、112b中的每一个中的外围设备将具有不同的内部序列号,其可能需要某种重新配置。另一个实例将是网络设备的mac地址,其需要附加的重新配置。

此外,第二游戏控制台112b可处于与第一游戏控制台112a不同的网络环境中。不同的网络环境很可能使用不同的网络设置,并且因此游戏控制台硬件状态数据迁移也将需要网络重新配置。也可能需要针对第一游戏控制台112a与第二游戏控制台112b之间的地理差异来重新配置游戏控制台硬件状态数据迁移。例如,传输到处于与第一游戏控制台112a不同的地理区域中的第二游戏控制台112b可能需要时区变化、语言变化以及甚至可能在正在运行的游戏中使用的语言的变化。

第二游戏控制台112b还可具有与第一游戏控制台112a不同的硬件版本,其可能需要不同的重新初始化。例如,第二游戏控制台112b可以是例如在较小的半导体工艺中的较新的硬件版本,可具有比第一游戏控制台112a更高的功率效率并且将需要与第一游戏控制台112a不同的功率和冷却设置。

单个应用程序的实时迁移是相当新的领域。一种方法允许暂停应用程序,然后捕获应用程序状态数据(诸如文件句柄、套接字、存储器状态以及诸如上文所述的其他类型的应用程序状态数据)。在恢复期间,将相同的文件描述符还原到与应用程序被暂停时相同的状况。网络连接、计时器、相互排斥以及其他类型的状态也被还原。3d游戏应用程序依赖于呈常驻在gpu上的缓冲器形式的硬件状态数据。先前方法不捕获相应的硬件状态数据,并且将需要先前方法进行3d游戏的应用程序状态数据传输。在这种情况下,硬件状态数据是指代表应用程序存储在硬件中的任何数据或状态。例如,gpu存储器中的缓冲器包含几何图形或纹理数据,存储器缓冲器包含硬盘上的游戏数据文件。应用程序通常通过由操作系统核心或设备驱动程序提供的软件抽象层来访问这种硬件状态数据。这种抽象的实例可以是,磁盘上的文件的文件描述符最终是存储设备之上的层,文件描述符表示gpu侧缓冲器和图形情境。有时,由于性能原因,应用程序可直接访问硬件缓冲器。直接访问硬件缓冲器可由设备驱动程序引导。

用来捕获硬件状态数据的一种方法包括暂停应用程序,并且链接到暂停的硬件状态数据的软件抽象将被捕获。如果软件抽象机构是文件描述符,那么文件描述符可用来查找对应的硬件状态数据。由于文件描述符通常是设备驱动程序/os核心概念,所以对应的设备驱动程序需要揭露用于检索其相关联的硬件状态数据的方法。识别应用程序背后的所有硬件状态数据的过程可能相当困难。

硬件状态数据的实例包括各种寄存器、fifo缓冲器、指令高速缓存(在cpu和gpu两者中)、数据高速缓存(cpu/gpu)、ram、cpu和gpu上的程序计数器/指令指针的内容。gpu指令将用于着色器应用程序。

硬件状态数据还包括过渡态相关信息。例如,硬件可发出中断信号。可以重新生成中断信号,或者缓冲器可排空缓冲器的当前内容,并且随后在已知的安全还原状态下重新加载缓冲器。在一个实现方式中,可允许硬件完成任何已排入队列或已计划的操作。中断可随后用来触发新的操作或用来通知操作已完成。如果硬件忙于操作,那么可重新生成这类中断信号,否则在硬件正等待中断信号以便进行某个挂起的操作的情况下,硬件可能无法完成恢复操作。某些操作可具有较少的过渡态要捕获。在一个实现方式中,可继续游戏操作,直到挂起的过渡态被最小化或低于选定的阈值为止,随后在恢复游戏期间可能需要较少的过渡硬件状态数据(诸如中断和指令计数器)用于重建。

另一种方法是从应用程序获取帮助。代替暂停应用程序,可向应用程序发送暂停信号,所述暂停信号使得应用程序将其所有内部状态存储到磁盘并且允许应用程序还原任何所需的硬件状态数据。在恢复应用程序之后,应用程序的工作就是进行还原。优点是应用程序知道它真正需要捕获什么硬件状态数据。通过从它的游戏文件重新加载数据,可能会还原硬件状态数据的很大一部分。游戏也可处理还原,例如断开到在线云控制器的网络连接。

独立于经由传输应用程序状态数据或硬件状态数据的还原,存在附加的恢复方面,包括在线游戏断开、对用户和游戏控制台的时区的调整、为用户选择适当的语言以及恢复游戏计时器。游戏通常使用高精度的总是增加的计时器,以便进行内部游戏计时。在恢复之后,这些计时器需要在与它们之前被暂停时完全相同的时间重新开始,否则游戏可能做出错误的决定,例如游戏角色可能被卡在墙中或死亡。根据可能处理或可能还未处理这种重新开始的操作系统,需要进行软件修改。如上所述,在操作350以及以下操作中,成功的恢复需要正确的应用程序或游戏以及所有支持数据文件。

图4为根据本发明的各种实施方案的游戏系统400的框图。游戏系统400被配置来经由网络415向一个或多个客户端410提供视频流。游戏系统400通常包括视频服务器系统420和任选的游戏服务器425。视频服务器系统420被配置来以最低的服务质量向一个或多个客户端410提供视频流。例如,视频服务器系统420可接收改变视频游戏的状态或所述视频游戏内的视角的游戏命令,并且以最小的滞后时间给客户端410提供反映这种状态变化的更新后的视频流。视频服务器系统420可被配置来以多种替代视频格式(包括还未定义的格式)提供视频流。此外,视频流可包括配置用于以多种帧速率呈现给用户的视频帧。典型的帧速率是每秒30帧、每秒60帧和每秒420帧。但是本发明的替代实施方案中包括更高或更低的帧速率。

在本文中被单独称为为410a、410b等的客户端410可包括头戴式显示器、终端、个人计算机、游戏控制台、平板计算机、电话、机顶盒、信息亭、无线设备、数字板、独立设备、手持式玩游戏设备和/或类似设备。通常,客户端410被配置来接收编码的视频流,对视频流进行解码,并且将所得的视频呈现给用户,例如游戏玩家。接收编码的视频流和/或对视频流进行解码的过程通常包括将个别视频帧存储在客户端的接收缓冲器中。可以在与客户端410成一体的显示器上或在诸如监视器或电视机的单独设备上将视频流呈现给用户。客户端410任选地被配置来支持超过一个游戏玩家。例如,游戏控制台可被配置来支持两个、三个、四个或更多个同时的玩家。这些玩家中的每一个可接收单独的视频流,或单个视频流可包括特别针对每个玩家所生成(例如,基于每个玩家的视角所生成)的帧的区。客户端410任选地在地理上分散。游戏系统400中所包括的客户端的数量可从一个或两个广泛变化到几千个、几万个或更多个。如本文所使用,术语“游戏玩家”用来指玩游戏的人,并且术语“玩游戏设备”用于指用来玩游戏的设备。在一些实施方案中,玩游戏设备可指多个计算设备,这些计算设备合作来向用户传达游戏体验。例如,游戏控制台和hmd可与视频服务器系统420合作来传达通过hmd看到的游戏。在一个实施方案中,游戏控制台从视频服务器系统420接收视频流,并且游戏控制台将视频流或对视频流的更新转发给hmd以便呈现。

客户端410被配置来经由网络415接收视频流。网络415可以是任何类型的通信网络,其包括电话网络、互联网、无线网络、电力线网络、局域网、广域网、私有网络和/或类似网络。在典型的实施方案中,经由诸如tcp/ip或udp/ip的标准协议来传达视频流。或者,经由专有标准来传达视频流。

客户端410的典型实例是个人计算机,所述个人计算机包括处理器、非易失性存储器、显示器、解码逻辑、网络通信能力以及输入设备。解码逻辑可包括硬件、固件和/或存储在计算机可读介质上的软件。用于解码(和编码)视频流的系统在本领域中是熟知的,并且根据所使用的具体编码方案而变化。

客户端410可能(但不需要)还包括被配置用于修改接收到的视频的系统。例如,客户端可被配置来:执行进一步呈现,将一个视频图像叠加在另一个视频图像上,修剪视频图像,和/或类似操作。例如,客户端410可被配置来接收各种类型的视频帧,诸如i帧、p帧和b帧,并且被配置来将这些帧处理成图像以向用户显示。在一些实施方案中,客户端410的构件被配置来对视频流执行进一步呈现、阴影处理、转换成3-d或类似操作。客户端410的构件任选地被配置来接收超过一个音频或视频流。客户端410的输入设备可包括:例如,单手游戏控制器、双手游戏控制器、示意动作辨别系统、注视辨别系统、语音辨别系统、键盘、操纵杆、指针设备、力反馈设备、运动和/或位置传感设备、鼠标、触摸屏、神经接口、摄像机、还未开发出的输入设备,和/或类似设备。

客户端410所接收的视频流(和任选的音频流)是由视频服务器系统420生成并提供的。如在本文中其他地方进一步描述的,这个视频流包括视频帧(并且音频流包括音频帧)。视频帧被配置成(例如,它们包括在适当数据结构中的像素信息)在很大程度上构成向用户显示的图像。如本文所使用,术语“视频帧”用来指主要包括被配置来构成(例如实现)展示给用户的图像的信息的帧。本文中关于“视频帧”的大部分教义也可适用于“音频帧”。

客户端410通常被配置来从用户接收输入。这些输入可包括游戏命令,所述游戏命令被配置来改变视频游戏的状态或以其他方式影响游戏进行。可使用输入设备接收游戏命令,且/或可由在客户端410上执行的计算指令自动地生成游戏命令。将接收到的游戏命令经由网络415从客户端410传达到视频服务器系统420和/或游戏服务器425。例如,在一些实施方案中,将游戏命令经由视频服务器系统420传达到游戏服务器425。在一些实施方案中,将游戏命令的单独拷贝从客户端410传达到游戏服务器425和视频服务器系统420。游戏命令的传达任选地取决于命令的标识。通过用来向客户端410a提供音频或视频流的不同路线或通信信道,从客户端410a任选地传达游戏命令。应理解,游戏服务器425可包括如上所述的云控制器130和/或游戏管理器113的部分。

游戏服务器425任选地由不同于视频服务器系统420的实体来操作。例如,游戏服务器425可由多玩家游戏的发行商来操作。在这个实例中,视频服务器系统420任选地被游戏服务器425视为客户端,并且任选地被配置来(从游戏服务器425的角度看)表现为执行现有技术游戏引擎的现有技术客户端。视频服务器系统420与游戏服务器425之间的通信任选地经由网络415发生。因此,游戏服务器425可以是向多个客户端发送游戏状态信息的现有技术多玩家游戏服务器,所述客户端中的一个是视频服务器系统420。视频服务器系统420可被配置来同时与游戏服务器425的多个实例通信。例如,视频服务器系统420可被配置来向不同用户提供多个不同的视频游戏。这些不同视频游戏中的每一个可由不同游戏服务器425支持且/或由不同实体发行。在一些实施方案中,视频服务器系统420的一些地理上分散的实例被配置来向多个不同用户提供游戏视频。视频服务器系统420的这些实例中的每一个可与游戏服务器425的相同实例通信。视频服务器系统420与一个或多个游戏服务器425之间的通信任选地经由专用通信信道发生。例如,视频服务器系统420可经由高带宽信道连接到游戏服务器425,所述高带宽信道专门用于这两个系统之间的通信。

视频服务器系统420至少包括:视频源430、i/o设备445、处理器450,以及非暂时性存储体455。视频服务器系统420可包括一个计算设备或分布在多个计算设备之中。这些计算设备任选地经由诸如局域网的通信系统连接起来。

视频源430被配置来提供视频流,例如,流式视频或形成运动图片的一系列视频帧。在一些实施方案中,视频源430包括视频游戏引擎和呈现逻辑。视频游戏引擎被配置来:从玩家接收游戏命令,并且基于接收到的命令维持视频游戏的状态的拷贝。这个游戏状态包括游戏环境中的对象的定位,并且通常包括视角。游戏状态还可包括对象的性质、图像、颜色和/或纹理。通常基于游戏规则以及游戏命令(诸如,移动、转动、攻击、设置焦点、交互、使用和/或类似命令)来维持游戏状态。游戏引擎的部分任选地设置在游戏服务器425内。游戏服务器425可基于使用地理上分散的客户端从多个玩家接收到的游戏命令来维持游戏状态的拷贝。在这些情况下,游戏服务器425将游戏状态提供给视频源430,其中存储游戏状态的拷贝并且执行呈现。游戏服务器425可经由网络415直接从客户端410接收游戏命令,且/或可经由视频服务器系统420接收游戏命令。

视频源430通常包括呈现逻辑,例如硬件、固件和/或存储在诸如存储体455的计算机可读介质上的软件。这个呈现逻辑被配置来基于游戏状态创建视频流的视频帧。呈现逻辑的全部或部分任选地设置在图形处理单元(gpu)内。呈现逻辑通常包括被配置用于确定对象之间的三维空间关系且/或用于基于游戏状态和视角来应用适当的纹理等的处理阶段。呈现逻辑产生原始视频,所述原始视频随后通常被编码,然后传达给客户端410。例如,可根据adobe标准、.wav、h.264、h.263、on2、vp6、vc-1、wma、huffyuv、lagarith、mpg-x.、xvid.、ffmpeg、x264、vp6-8、realvideo、mp3或类似标准对原始视频进行编码。编码过程产生视频流,任选地将所述视频流打包以便传达到远程设备上的解码器。视频流由帧大小和帧速率来表征。典型的帧大小包括800x600、1280x720(例如720p)、1024x768,但是可使用任何其他帧大小。帧速率是每秒的视频帧数。视频流可包括不同类型的视频帧。例如,h.264标准包括“p”帧和“i”帧。i帧包括用来刷新显示设备上的全部宏块/像素的信息,而p帧包括用来刷新所述宏块/像素的子集的信息。p帧的数据大小通常比i帧小。如本文中所使用,术语“帧大小”意图指帧内的像素数。术语“帧数据大小”用来指存储所述帧所需的字节数。

在替代实施方案中,视频源430包括诸如摄像机的视频录制设备。这个摄像机可用来生成可被包括在计算机游戏的视频流中的延迟视频或实况视频。所得的视频流任选地包括所呈现的图像和使用静态摄像机或视频摄像机录制的图像。视频源430还可包括被配置来存储将要包括在视频流中的先前录制视频的存储设备。视频源430还可包括:被配置来检测对象(例如,人)的运动或定位的运动或定位传感设备;以及被配置来基于检测到的运动和/或定位来确定游戏状态或产生视频的逻辑。

视频源430任选地被配置来提供叠加,所述叠加被配置来放置在其他视频上。例如,这些叠加可包括命令界面、登入指令、发给游戏玩家的消息、其他游戏玩家的图像、其他游戏玩家的视频馈送(例如网络摄像机视频)。在客户端410a包括触摸屏界面或注视检测界面的实施方案中,所述叠加可包括虚拟的键盘、操纵杆、触摸板和/或类似物。在叠加的一个实例中,将玩家的语音叠加在音频流上。视频源430任选地还包括一个或多个音频源。

在视频服务器系统420被配置来基于来自超过一个玩家的输入来维持游戏状态的实施方案中,每个玩家可具有不同视角,所述视角包括观察的位置和方向。视频源430任选地被配置来基于玩家的视角给每个玩家提供单独的视频流。此外,视频源430可被配置来向客户端410中的每一个提供不同的帧大小、帧数据大小和/或编码。视频源430任选地被配置来提供3-d视频。

i/o设备445被配置以供视频服务器系统420用来发送和/或接收信息,所述信息诸如:视频、命令、对信息的请求、游戏状态、注视信息、设备运动、设备位置、用户运动、客户端身份、玩家身份、游戏命令、安全信息、音频和/或类似信息。i/o设备445通常包括诸如网卡或调制解调器的通信硬件。i/o设备445被配置来与游戏服务器425、网络415和/或客户端410通信。

处理器450被配置来执行在本文中论述的视频服务器系统420的各种部件内所包括的逻辑,例如软件。例如,处理器450可编程有软件指令,以便执行视频源430、游戏服务器425和/或客户端限定器460的功能。视频服务器系统420任选地包括处理器450的超过一个实例。处理器450还可编程有软件指令,以便执行视频服务器系统420所接收的命令或协调本文中讨论的游戏系统400的各种元件的操作。处理器450可包括一个或多个硬件设备。处理器450是电子处理器。

存储体455包括非暂时性模拟和/或数字存储设备。例如,存储体455可包括被配置来存储视频帧的模拟存储设备。存储体455可包括计算机可读数字存储体,例如,硬盘驱动器、光盘驱动器或固态存储体。存储体415被配置(例如,借助于适当的数据结构或文件系统)来存储视频帧、人工帧、包括视频帧与人工帧两者的视频流、音频帧、音频流和/或类似物。存储体455任选地分布在多个设备之中。在一些实施方案中,存储体455被配置来存储本文中其他地方所讨论的视频源430的软件部件。这些部件可存储为准备好在需要时供应的格式。

视频服务器系统420任选地还包括客户端限定器460。客户端限定器460被配置用于远程确定诸如客户端410a或410b的客户端的能力。这些能力可包括客户端410a本身的能力以及介于客户端410a与视频服务器系统420之间的一个或多个通信信道的能力。例如,客户端限定器460可被配置来测试通过网络415的通信信道。

客户端限定器460可手动或自动地确定(例如,发现)客户端410a的能力。手动确定包括:与客户端410a的用户通信,以及要求用户提供能力。例如,在一些实施方案中,客户端限定器460被配置来在客户端410a的浏览器内显示图像、文字和/或类似物。在一个实施方案中,客户端410a是包括浏览器的hmd。在另一个实施方案中,客户端410a是具有浏览器的游戏控制台,所述浏览器可显示在hmd上。所显示的对象请求用户输入客户端410a的信息,诸如操作系统、处理器、视频解码器类型、网络连接类型、显示器分辨率等。向客户端限定器460传达回用户所输入的信息。

自动确定可例如通过在客户端410a上执行代理程序和/或通过向客户端410a发送测试视频来进行。代理程序可包括嵌入网页中或安装为加载项的计算指令,诸如java脚本。代理程序任选地由客户端限定器460提供。在各种实施方案中,代理程序可发现:客户端410a的处理能力、客户端410a的解码和显示能力、客户端410a与视频服务器系统420之间的通信信道的滞后时间可靠性和带宽、客户端410a的显示器类型、客户端410a上存在的防火墙、客户端410a的硬件、在客户端410a上执行的软件、客户端410a内的注册表项和/或类似物。

客户端限定器460包括硬件、固件和/或存储在计算机可读介质上的软件。客户端限定器460任选地设置在与视频服务器系统420的一个或多个其他元件分开的计算设备上。例如,在一些实施方案中,客户端限定器460被配置来确定客户端410与视频服务器系统420的超过一个实例之间的通信信道的特性。在这些实施方案中,客户端限定器所发现的信息可用来确定视频服务器系统420的哪个实例最适合于向客户端410中的一个传达流式视频。

本发明的实施方案可以利用各种计算机系统配置来实践,所述计算机系统配置包括手持式设备、微处理器系统、基于微处理器的或可编程的消费型电子设备、小型计算机、大型计算机等。本发明还可以在分布式计算环境中实践,其中由通过基于有线或无线的网络链接起来的远程处理设备来执行任务。

考虑到以上实施方案,应理解,本发明可以采用各种计算机实施的操作,所述操作涉及存储在计算机系统中的数据。这些操作是需要对物理量进行物理操纵的操作。本文中描述的形成本发明的一部分的任何操作都是有用的机器操作。本发明还涉及用于执行这些操作的设备或装置。所述装置可出于所需目的而专门构造而成,或所述装置可以是由存储在计算机中的计算机程序来选择性地激活或配置的通用计算机。具体来说,各种通用机器可与根据本文中的教示所编写的计算机程序一起使用,或者可以更方便地构造更专门的装置来执行所需的操作。

本发明也可体现为计算机可读介质上的计算机可读代码。计算机可读介质是可存储数据的任何数据存储设备,所述数据随后可由计算机系统读取。计算机可读介质的实例包括硬盘驱动器、网络附接存储体(nas)、只读存储器、随机存取存储器、cd-rom、cd-r、cd-rw、磁带以及其他光学和非光学数据存储设备。计算机可读介质可包括分布在网络联接式计算机系统上的计算机可读有形介质,以使得计算机可读代码是以分布方式进行存储和执行。

尽管以特定顺序描述了方法操作,但应理解,可以在操作之间执行其他内务处理操作,或者可以调整操作以使得它们在略微不同的时间发生,或者可以分布在系统中,所述系统允许处理操作以与所述处理相关联的各种时间间隔发生,只要重叠操作的处理以所需方式执行即可。

尽管为了理解的清晰性而略微详细地描述了前述发明,但很显然,可以在所附权利要求书的范围内实践某些变化和修改。因此,目前的实施方案应被认为是说明性而非限制性的,并且本发明不限于本文所给出的细节,而是可在所描述的实施方案的范围和等效物内进行修改。

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