双模式程序执行和加载的制作方法

文档序号:1618685阅读:332来源:国知局
双模式程序执行和加载的制作方法
【专利摘要】一种计算系统,被配置以在服务器上执行计算机程序,以及通过通信网络向地理位置上的远程客户端提供程序输出的视频流。所述计算系统还被配置以与所述视频流并行地、通过通信网络向客户端提供计算机程序的可执行内容。当已经给客户端提供了足够多的可执行内容时,将计算机程序的执行从服务器切换到客户端。该切换可选地包括从服务器向客户端传送计算机程序的状态。该可执行内容能够以基于计算机程序状态确定的顺序,提供给客户端。被认为在客户端上支持游戏进行最可能需要的可执行内容的那些部分被给予优先级。
【专利说明】双模式程序执行和加载
[0001]相关申请的交叉引用
[0002]本发明是:
[0003]2008年12月15日申请的美国专利申请序列号为12/334,819,名称为“Systemsand Methods of Serving Game Video” 的部分延续;
[0004]2010年6月29日申请的美国专利申请序列号为12/826,130,名称为“Video GameOverlay”的部分延续;以及
[0005]2010年6月29日申请的美国专利申请序列号为12/826,489,名称为“VoiceOverlay”的部分延续;以及
[0006]本发明要求享有2010年9月13日提交的美国临时专利申请序列号为61/382,470名称为“Add-on Management”、2010年10月28日提交的美国临时专利申请序列号为61/407,898 名称为“Dual-Mode Program Execution,,、2010 年 12 月 8 日提交的美国临时专利申请序列号为61/421,163名称为“Intelligent Game Loading”以及2010年12月8日提交的美国临时专利申请序列号为61/421,175名称为“Program Mode Switching”的权益和优先权。所有上述共同拥有的专利申请的公开内容在此作为参考并入本发明。
【背景技术】
[0007]本发明的【技术领域】
[0008]本发明属于计算机编程领域,具体地说,属于计算机程序的服务器侧执行的领域。
[0009]相关技术
[0010]通过使用两种方法之一,计算机程序的执行一般能够发生。在一个模型中,计算机程序在从用户,例如游戏玩家接收输入的单个设备上被执行,并且程序输出展现给用户。在另一个模型中,程序执行在由一个或多个客户端的控制下的远程服务器上发生。用户在客户端提供输入,并且接收用于在客户端显示的程序输出。客户端和服务器之间的通信通过通信网络,例如因特网进行。
[0011]能够在客户端和服务器两者之间分配程序执行,是可能的。例如,在多人视频游戏中,通常服务器基于从多个用户的输入维持游戏的全局状态,并且通常每个客户端响应于游戏规则和全局状态的一部分,呈现各自的视频。这需要将视频游戏的软件客户端安装在客户端上。

【发明内容】

[0012]程序执行的双模式模型被用于提供游戏的立即执行(播放)和客户端侧视频呈现两者。通过最初在服务器上呈现视频,并且通过通信网络,例如因特网将呈现的视频提供给客户端,基本上实现立即执行。与呈现的视频并行地、或在其之后将客户端侧游戏逻辑和相关内容下载到客户端。当客户端接收客户端侧软件的所有或足够的部分时,改变程序执行的模式,这样视频的呈现发生在客户端上,而不是或除了在服务器上。
[0013]因为能够快速提供或在接收开始游戏的请求之前提供服务器侧游戏逻辑和相关组件,所以基本上实现了立即执行。服务器侧游戏逻辑的输出包括响应于接收到的游戏命令、游戏状态和游戏玩家的视点而在服务器上呈现的视频流。该视频流被通信到客户端,在所述客户端处实时地向游戏玩家展现所述视频流。为了完成这件事,在客户端上所需要的逻辑仅仅是需要接收、解码和显示视频流。
[0014]本发明的多种实施例包括一种游戏系统,所述游戏系统包括被配置以向地理位置上远离视频源的第一客户端提供流视频的视频源,该流视频在视频源产生且基于计算机程序状态(例如,计算机游戏状态),以及被配置以在流视频从视频源被提供给第一客户端的同时,经由网络、从代码源下载可执行代码和计算机程序的其他组件到第一客户端的下载管理器。这些实施例还可选地包括被配置以向第一客户端提供计算机程序状态的状态源。
[0015]本发明的多种实施例包括一种游戏服务器,所述游戏服务器包括输入端、游戏引擎、切换逻辑、状态存储器和输出端。所述输入端被配置以从多个地理位置上的远程客户端接收游戏命令,以及所述游戏引擎被配置以基于接收到的游戏命令维持视频游戏的全局状态并且给多个客户端的不同成员提供视频游戏的全局状态的不同子集,每个子集分别被分配给多个客户端的特定成员。所述切换逻辑被配置以将全局状态的子集之一从多个客户端的第一成员重新分配给多个客户端的第二成员,所述状态存储器被配置以存储全局状态,以及所述输出端被配置以通过因特网向多个客户端提供全局状态的子集。
[0016]本发明的多种实施例包括一种用于提供计算机游戏的方法,所述方法包括在视频服务器上执行游戏逻辑,其中在所述视频服务器上游戏逻辑的执行使得基于游戏状态的视频流呈现。所述方法进一步还包括通过通信网络、从视频服务器向客户端提供视频流,以及与视频流并行地向客户端提供可执行游戏内容,所述可执行游戏内容被配置以基于游戏状态产生视频。
[0017]另外,游戏逻辑和相关内容(例如,游戏逻辑使用的内容)能够被分成多个部分,并且这些部分基本上能够以任何顺序从游戏系统下载到客户端。在多种实施例中,以基于正在进行的游戏可能需要的那些部分的概率的顺序来下载所述部分。例如,如果,考虑游戏的当前状态,可能需要客户端侧游戏逻辑(以及其他内容)的特定部分支持进一步的游戏进行,则那部分将在下载序列中被给予高优先级。响应于游戏播放,所述下载序列可选地动态更新,以及游戏逻辑和相关内容的多个部分与流视频并行被下载到客户端,直到认为下载到客户端的游戏逻辑和相关内容的数量足够支持在客户端侧模式下的客户端侧上的游戏进行。此时,游戏进行能够切换到客户端,流视频停止,并且游戏代码的下载可能完成。在到客户端的流视频结束后,游戏代码的剩余部分能够继续被动态地排序,并且根据那个顺序、响应于游戏状态被下载到客户端。可选地,如果完整的游戏代码没有被下载,并且出乎意料地,游戏状态需要尚未下载的游戏代码的一部分,则游戏进行能够切换回服务器侧模式。
[0018]本发明的多种实施例包括一种游戏系统,所述游戏系统包括视频源和下载管理器。所述视频源被配置以给地理位置上远离视频源的客户端提供流视频,所述流视频响应于计算机程序当前状态,在视频源产生。所述下载管理器被配置以响应于计算机程序当前状态,动态地确定计算机程序的可执行代码和其他组件(连带“可执行内容”或“可执行游戏内容”)多个部分的下载序列。所述下载管理器还被配置以在从视频源给客户端提供流视频的同时,根据所述下载序列,经由网络、从代码源将部分可执行内容下载到客户端。在多种实施例中,视频源包括所述下载管理器。在多种实施例中,所述下载管理器被配置以通过基于计算机程序的当前状态,确定计算机程序的其他状态概率,来动态地确定下载序列。在这些实施例的一些中,所述游戏系统进一步还包括存储概率树数据库的计算机可读介质,并且所述计算机可读介质与下载管理器通信。在这些实施例中,所述下载管理器还被配置以通过查询概率树,基于计算机程序的当前状态来确定计算机程序的其他状态概率。在多种实施例中,所述游戏系统进一步还包括被配置以维持概率树数据库的统计引擎。
[0019]本发明的多种实施例包括一种用于提供计算机游戏的方法。在这些实施例中,所述方法包括在视频服务器上,以游戏执行的服务器侧模式执行游戏逻辑,以基于游戏状态呈现视频流,以及通过通信网络、从视频服务器给客户端提供视频流。所述方法进一步还包括响应于游戏状态,动态地确定可执行游戏内容的多个部分的下载序列,所述可执行游戏内容被配置以基于游戏状态产生视频,以及根据下载序列将部分可执行游戏内容与视频流并行地提供给客户端。在多种实施例中,动态地确定下载序列包括查询概率树数据库。在多种实施例中,所述方法进一步还包括确定给客户端提供部分可执行游戏内容的下载速率,以及在这些实施例的一些中,确定下载速率包括监视到客户端的通信信道的带宽。在多种实施例中,所述方法进一步还包括发起从游戏执行的服务器侧模式到游戏执行的客户端侧模式的切换,其中在游戏执行的客户端侧模式下,在客户端上执行游戏逻辑以基于游戏状态呈现视频流。在这些实施例的一些中,所述方法进一步还包括在发起所述切换后,给客户端提供所述部分可执行游戏内容,以及在另一些的实施例中在发起切换之后给客户端提供所述部分可执行游戏内容,能够根据下载序列被执行。在另一些的实施例中,在发起切换之后,所述方法进一步还包括响应于游戏状态动态地确定下载序列。
【专利附图】

【附图说明】
[0020]图1示出了根据本发明的多种实施例的游戏系统。
[0021]图2是根据本发明的多种实施例的被配置以服务多个视频游戏的视频源的进一步的细节。
[0022]图3示出了根据本发明的多种实施例的游戏服务器的进一步的细节。
[0023]图4示出了根据本发明的多种实施例的用户界面。
[0024]图5示出了根据本发明的多种实施例的下载管理器的进一步的细节。
[0025]图6示出了根据本发明的多种实施例的决策树。
[0026]图7示出了根据本发明的多种实施例的用于下载可执行游戏内容的方法。
[0027]图8示出了根据本发明的多种实施例的用于提供计算机游戏的方法。
[0028]图9示出了根据本发明的多种实施例的用于传送游戏会话的方法。
【具体实施方式】
[0029]本发明的多种实施例包括同时下载可执行游戏逻辑和流传输游戏视频到同一客户端,和/或从游戏执行的服务器侧模式切换到游戏执行的客户端侧模式。这些过程潜在地涉及几个部分和系统。视频服务器系统被配置以响应于游戏规则和接收到的游戏命令,经由网络给客户端提供流视频。下载管理器被配置以与提供视频流并行地,给客户端提供可执行游戏逻辑和相关内容。客户端被配置以在向游戏玩家显示流游戏视频的同时,接收可执行游戏逻辑和内容。可选地,游戏服务器被配置以维持多玩家视频游戏的全局游戏状态,以及给视频服务器系统和游戏服务器的其他客户端提供这个游戏状态的子集。可执行游戏逻辑能够由游戏服务器、视频服务器系统或第三方系统提供。
[0030]服务器侧模式的特征在于在视频服务器上呈现游戏视频以及将呈现的视频提供给地理位置上的远程客户端。在这个模式下,游戏视频响应于视频服务器经由通信网络从客户端接收的游戏命令。客户端侧模式的特征在于响应于本地输入到客户端的游戏命令,在客户端上呈现游戏视频。服务器侧模式和客户端侧模式未必是相互排斥的。可选地在视频服务器和客户端两处呈现游戏视频,以及并行或相继在客户端上显示。
[0031]被配置以管理服务器侧模式和客户端侧模式之间切换的切换逻辑可选地分布于上述设备中。例如,在客户端上切换逻辑能够被配置以终止流游戏视频的显示,接收本地游戏状态的副本,和/或发起接收到的可执行游戏逻辑的执行。在视频服务器系统上,切换逻辑能够被配置以终止流游戏视频的传递,给客户端提供本地游戏状态的所述副本,确定已经给客户端提供了足够的可执行游戏逻辑的时间以发起切换,和/或确定可执行游戏逻辑应该被提供给客户端的顺序。在游戏服务器上,切换逻辑能够被配置以重定向视频服务器系统和游戏服务器之间的通信,包括游戏命令和游戏状态,以致于这些通信发生在游戏服务器和客户端之间。在本发明的其他地方讨论切换逻辑的进一步的特征。
[0032]图1示出了根据本发明的多种实施例的被配置以执行计算机程序的游戏系统
100。游戏系统100被配置以经由网络115给一个或多个客户端110提供视频流。游戏系统100通常包括视频服务器系统120和可选的游戏服务器125。视频服务器系统120被配置以最小服务质量向一个或多个客户端110提供视频流。例如,视频服务器系统120可以接收改变视频游戏的状态的或视频游戏中的视点的游戏命令,以及以最小延迟给客户端110提供反映这个状态上改变的更新了的视频流。视频服务器系统120可以被配置以各式各样的可替代视频格式提供视频流,包括尚未定义的格式。进一步地,视频流可以包括被配置以各种的帧速率展现给游戏玩家的视频帧。虽然在本发明可替代的实施例中,包括更高或更低的帧速率,但是典型的帧速率是30帧/秒、60帧/秒和120帧/秒。在一些实施例中,视频服务器系统120被配置以提供三维视频数据,例如,从被人眼之间的距离分开的视点处,呈现的匹配视频流。
[0033]在这里分别被指代为110AU10B等的客户端110,可以包括终端、个人计算机、游戏主机、平板电脑、电话、电视、机顶盒、公共电话亭、无线设备、数字平板、独立设备、掌上游戏设备和/或诸如此类的。通常,客户端110被配置以接收编码的视频流、解码视频流,以及给游戏玩家,例如,一个游戏的玩家展现结果视频。接收编码的视频流和/或解码视频流的过程可选地包括在客户端的接收缓冲器中存储个别视频帧。视频流可以在客户端110的一部分显示器上或在独立的设备,例如监视器或电视上展现给游戏玩家。客户端110可选地被配置以支持多于一个的游戏玩家。例如,游戏主机可以被配置以支持两个、三个、四个或更多同时的玩家。这些玩家中的每个可以接收单独的视频流,或单个视频流,可以包括专门为每个玩家产生的,例如,基于每个玩家的视点产生的帧区域。可选地,客户端110在地理位置上是分散的。包括在游戏系统100中的客户端的数量可以广泛地变化,从一个或两个到数千个,数万个,或更多。这里使用的术语“游戏玩家”被用于指代玩游戏的人以及术语“游戏进行设备”被用于指代用于播放游戏的设备。[0034]客户端110被配置以经由网络115接收视频流。网络115可以是计算设备之间的任何类型的通信网络包括,电话网络、因特网、无线网络、电力线网络、局域网、广域网、专用网,和/或诸如此类的。网络115明确地不包括完全在计算设备中的通信信道,例如母板总线。在典型的实施例中,经由标准协议,例如TCP/IP或UDP/IP传送视频流。可替代地,经由专有的标准传送视频流。
[0035]客户端110的一个典型的例子是包括处理器、非易失性存储器、显示器、解码逻辑、网络通信能力、和输入设备的个人计算机。所述解码逻辑可以包括硬件、固件、和/或存储在计算机可读介质上的软件。用于解码(和编码)视频流的系统是本领域公知的并且依赖于使用的特定编码方案而变化。
[0036]客户端110可以,但不要求,进一步还包括被配置以用于修改接收到的视频的系统。例如,客户端可以被配置以执行进一步的呈现,将一个视频图像覆盖到另一个视频图像上,修剪视频图像,和/或诸如此类的。客户端110可以被配置以接收多种类型的视频帧,例如I帧、P帧和B帧,以及将这些帧处理成图像以显示给游戏玩家。在一些实施例中,一个或多个客户端HO的成员被配置以执行进一步的呈现、阴影、转换到3D,或类似的在视频流上的操作。客户端110的成员可选地被配置以接收多于一个的音频或视频流。客户端110的输入设备可以包括,例如,键盘、游戏杆、指向设备、力反馈设备、动作和/或位置感应设备、鼠标、触屏、神经界面、摄像机、尚未开发的输入设备、和/或诸如此类的。
[0037]客户端110接收的视频流(和可选地,音频流)由视频服务器系统120产生并提供。如在本发明的其他地方所进一步描述的,这个视频流包括视频帧(并且音频流包括音频帧)。视频帧被配置(例如,它们包括具有合适数据结构的像素信息)来为显示给游戏玩家的图像做有意义的贡献。有意义的贡献是游戏玩家易于观察到的贡献。这里使用的术语“视频帧”被用于指代包括主要信息的帧,所述信息被配置以贡献于,例如产生展示给游戏玩家的图像。这里关于“视频帧”的大部分教导也能够应用于“音频帧”。客户端110可以被配置以同时接收多于一个的视频流。例如,客户端IlOB可以被配置以当其中一个流被展现给一只眼睛并且另一个流被展现给另一只眼睛时,接收一对被配置以形成三维图像的匹配视频流。客户端IlOB可选地被配置以从第一源接收第一视频流,从第二源接收第二视频流,以及覆盖这两个视频流以展现给游戏玩家。
[0038]客户端110通常被配置以从游戏玩家接收输入。这些输入可以包括游戏命令,所述游戏命令被配置以改变视频游戏的状态或以其他方式影响游戏进行。游戏命令能够通过使用输入设备接收和/或可以通过在客户端110上执行计算指令自动产生。接收到的游戏命令经由网络115、从客户端110被传送到视频服务器系统120和/或游戏服务器125。例如,在一些实施例中,游戏命令经由视频服务器系统120被传送到游戏服务器125。在一些实施例中,个别的游戏命令的副本从客户端110被传送到游戏服务器125和视频服务器系统120。可选地,游戏命令的传送依赖于命令的身份。可选地,经由不同于用于给客户端IlOB提供音频或视频流的路由或通信信道,从客户端IlOB通信游戏命令。例如,能够从无线设备,例如蜂窝电话接收游戏命令,并且音频和/或视频流能够提供给显示器,例如电视机。无线设备和显示器不需要直接通信。在这个例子中,客户端IlOB包括两个独立的设备。来自于蜂窝电话的命令可以穿过蜂窝电话网络或无线路由器。
[0039]在多种实施例中,客户端110被配置以在每个客户端100和视频服务器系统120之间、或在客户端110的不同成员之间通信附加数据。例如,使语音通信能够直接在客户端之间进行的附件能够包括在客户端之间的音频数据的通信。增加服务器侧计算机程序功能的附加数据可以被存储在客户端110之一上,以供服务器侧附件使用或供客户端侧附件使用。附加数据也可以被存储在视频服务器系统120上或独立的附加服务器上,并且由位于客户端110、视频服务器系统120或所述附加服务器之一上的附件使用。
[0040]可选地,游戏服务器125由不同于视频服务器系统120的实体操作。例如,游戏服务器125可以由多玩家游戏的发行者操作。在这个例子中,视频服务器系统120可选地被游戏服务器125视为客户端,以及可选地被配置以从游戏服务器125的视点处看来是执行现有技术的游戏引擎的现有技术客户端。视频服务器系统120和游戏服务器125之间的通信能够经由网络115发生。这样,游戏服务器125能够是给多个客户端发送游戏状态信息的现有技术的多玩家游戏服务器,其中,多个客户端之一是视频服务器系统120。视频服务器系统120可以被配置以同时与游戏服务器125的多个实例通信。例如,视频服务器系统120能够被配置以给不同的游戏玩家提供多个不同的视频游戏。这些不同的视频游戏中的每一个可以由不同的游戏服务器125支持和/或由不同的实体发行。在一些实施例中,视频服务器系统120的一些地理上分布的实例被配置以给多个不同的游戏玩家提供游戏视频。视频服务器系统120的这些实例中的每一个可以与游戏服务器125的同一实例通信。视频服务器系统120和一个或多个游戏服务器125之间的通信可选地经由专用通信信道发生。例如,视频服务器系统120可以经由致力于这两个系统之间通信的高带宽信道,连接到游戏服务器125。
[0041]视频服务器系统120至少包括视频源130、I/O设备145、处理器150、以及非暂时性存储器155。视频服务器系统120可以由一个计算设备组成或分布于多个计算设备中。这些计算设备可选地经由通信系统,例如局域网连接。
[0042]视频源130被配置以提供视频流,例如,流视频或构成影片的一系列视频帧。在一些实施例中,视频源130还被配置以提供音频流。在一些实施例中,视频源130包括视频游戏引擎和呈现逻辑。视频游戏引擎被配置以从玩家接收游戏命令并且基于接收到的命令维持视频游戏状态的副本。这个游戏状态包括游戏环境中目标位置,以及通常包括视点。游戏状态也可以包括对象的属性、图像、颜色和/或纹理。游戏状态通常基于游戏规则,以及游戏命令例如移动、转动、进攻、设置焦点、互动、使用、和/或诸如此类的命令维持。游戏引擎的一部分可选地被安置在游戏服务器125中。游戏服务器125可以基于从多个玩家接收到的游戏命令,通过使用地理位置上分散的客户端维持游戏状态的副本。在这些情况下,游戏状态由游戏服务器125提供给视频源130,其中游戏状态的副本被存储并且执行呈现。游戏服务器125可以经由网络115、直接从客户端110接收游戏命令,和/或可以经由视频服务器系统120接收游戏命令。
[0043]视频源130通常包括呈现逻辑,例如,硬件、固件、和/或存储在计算机可读介质,例如存储器155上的软件。这个呈现逻辑被配置以基于游戏状态创建视频流的视频帧。全部或部分的呈现逻辑可选地被安置在图形处理单元(GPU)中。呈现逻辑通常包括处理阶段,所述处理阶段被配置以基于游戏状态和视点,确定目标之间的三维空间关系,和/或应用合适的纹理等。呈现逻辑生成原始视频,随后所述原始视频通常在通信给客户端110之前编码。例如,原始视频可以根据Adobe Flash?标准、.wav、H.264,H.263、0n2、VP6、VC_l、WMA、Huffyuv > Lagar i th、MPG-χ、Xvid.FFmpeg > x264、VP6-8、real video、mp3、或诸如此类的标准编码。所述编码过程产生视频流,所述视频流可选地被封装以传递到远程设备上的解码器。视频流的特征在于帧大小和帧速率。虽然可以使用任何其他的帧大小,但是典型的帧大小包括800 X 600、1280 X 720 (例如,720p)、1024X 768。帧速率是每秒视频帧的数量。视频流可以包括不同类型的视频帧。例如,H.264标准包括“P”帧和“I”帧。I帧包括在显示器设备上刷新所有宏块/像素的信息,而P帧包括刷新其子集的信息。P帧的数据大小通常小于I帧。如这里所使用的术语“帧大小”旨在指代帧中像素的数量。术语“帧数据大小”被用于指代存储所述帧需要的字节数量。
[0044]在可替代的实施例中,视频源130包括视频记录设备,例如摄像机。这个摄像机可以被用于产生延迟的或实时的视频,所述延迟的或实时的视频能够包括在计算机游戏的视频流中。结果视频流可选地包括呈现的图像和使用静态或视频摄像机记录的图像两者。视频源130也可以包括存储设备,所述存储设备被配置以存储之前记录的包括在视频流中的视频。视频源130也可以包括被配置以检测目标,例如人的动作或位置的动作或位置感应设备,以及被配置以确定游戏状态或基于检测到的动作和/或位置生成视频的逻辑。
[0045]视频源130可选地被配置以提供覆盖,所述覆盖被配置以放置于其他视频上。例如,这些覆盖可以包括命令界面、登录指令、从另一个游戏玩家的视点呈现的视频帧、给游戏玩家的消息、其他游戏玩家的图像、其他游戏玩家视频供给(例如,网络摄像机视频)。在包括触屏界面的客户端IlOB的实施例中,覆盖可以包括虚拟键盘、游戏杆、触摸板、和/或诸如此类的。在一个覆盖的例子中,玩家的声音被覆盖到音频流上。可选地,视频源130进一步还包括一个或多个音频源。
[0046]在一些视频服务器系统120被配置以基于来自于多于一个玩家的输入,维持游戏状态的实施例中,每个玩家可以具有包括位置和观察方向的不同视点。视频源130可选地被配置以基于他们的视点,为每个玩家提供各自的视频流。进一步地,视频源130可以被配置以提供不同的帧大小、帧数据大小、和/或为每个客户端110编码。可选地,视频源130被配置以提供3D视频。
[0047]I/O设备145被配置来为视频服务器系统120发送和/或接收信息,例如视频、命令、附件、附加数据、信息请求、游戏状态、客户端身份、玩家身份、游戏命令、安全信息、音频数据、和/或诸如此类的。I/o设备145通常包括通信硬件,例如网卡或调制解调器。I/O设备145被配置以与游戏服务器125、网络115、和/或客户端110通信。I/O设备145被配置以从多于一个的客户端110接收信息。可选地,I/O设备145被配置以通过使用标准,例如TCP或UDP,接收作为数据包(packet)的信息。
[0048]视频服务器系统120可选地进一步还包括客户端资格器160。客户端资格器160被配置以远程确定客户端,例如客户端IlOA或IlOB的能力。这些能力可能包括客户端IlOB自身的能力以及在客户端IIOB和视频服务器系统120之间的一个或多个通信信道的能力。例如,客户端资格器160可以被配置以通过网络115测试通信信道。
[0049]客户端资格器160能够人工地或自动地确定(例如,发现)客户端IlOB的能力。人工确定包括与客户端IlOB的游戏玩家通信以及询问游戏玩家以提供能力。例如,在一些实施例中,客户端资格器160被配置以在客户端IlOB的浏览器中显示图像、文本、和/或诸如此类的。显示的对象代表请求,请求游戏玩家输入客户端IlOB的信息,例如客户端IlOB的操作系统、处理器、视频解码器类型、网络连接类型、显示器分辨率等。将游戏玩家输入的信息传送回客户端资格器160。
[0050]自动确定可以,例如,通过客户端IlOB上代理的执行和/或通过给客户端IlOB发送测试视频而发生。所述代理可以包括在网页中嵌入或作为附件安装的计算指令,例如java脚本。可选地,由客户端资格器160提供代理。在多种实施例中,代理能够查出客户端IlOB的处理力,客户端IlOB的解码和显示能力、客户端IlOB和视频服务器系统120之间的滞后时间可靠性和通信信道的带宽、客户端IlOB的显示器类型、存在于客户端IlOB上的防火墙、客户端IlOB的硬件、在客户端IlOB上执行的软件、客户端IlOB中的注册表项、是否经由无线路由器连接客户端IlOBjP /或诸如此类的。
[0051]客户端资格器160包括硬件、固件、和/或存储在计算机可读介质上的软件。客户端资格器160可选地安置在与视频服务器系统120的一个或多个其他元件分开的计算设备上。例如,在一些实施例中,客户端资格器160被配置以确定客户端110和视频服务器系统120的一个以上实例之间的通信信道的特征。在这些实施例中,由客户端资格器160发现的信息能够被用于确定,视频服务器系统120的哪个实例最适合传递流视频到客户端110之
O
[0052]下载管理器165被配置以管理到客户端IlOB的可执行游戏内容下载。这个下载与由视频源130提供给客户端IlOB游戏视频而向游戏玩家显示并行发生。一个以上的客户端110中的每一个可以同时接收流游戏视频和可执行游戏内容两者。下载代码与流视频并行意味着,可执行游戏内容的数据包与流游戏视频的数据包同时或在流游戏视频的数据包之间,被通信到客户端110B。下载管理器165包括硬件、固件、和/或存储在计算机可读介质上的软件,并且下载管理器165能够分布于一个或多个设备中。可执行游戏内容被配置以在客户端IlOB上执行并且,当被执行时,基于游戏环境产生显示给游戏玩家的视频。
[0053]在一些实施例中,游戏视频和可执行游戏内容两者在同一个数据包中提供给客户端110B。例如,数据包可能包括(多种可能的类型之一的)视频帧和作为可执行游戏内容的一部分的数据。在传递到I/O设备145前,编码器225A或后置处理器260将可执行游戏内容可选地插入到数据包中。在一些实施例中,编码器225A或后置处理器260被配置以检查包括视频帧的数据包,计算还能够将多少数据置入数据包,以及插入可执行游戏内容以填满数据包中的剩余空间。优选的数据包大小可选地被用于进行这个计算。在客户端110B,数据包被解析,并且视频帧与可执行游戏内容分开被解码。
[0054]下载管理器165部分地通过控制在该速率下载可执行游戏内容的速率,例如,M比特/秒,管理执行游戏内容下载。这个速率取决于包括游戏代码的数据包的大小以及这些数据包被发送的频率。能够使这两个因素中的任一个变化以选择速率。选择速率基于I)视频服务器系统120和客户端IlOB之间的通信信道的可用带宽,和2)这个带宽被用于提供流状游戏视频的部分。例如,如果通信信道带宽是15M比特/秒,并且以渴望得到的质量提供流游戏视频所需要的是IOM比特/秒,则下载可执行游戏内容的速率将被限制到5M比特/秒。一般来说,如果X M比特/秒的带宽是可用的,并且Y M比特/秒被用于流视频,则下载管理器165将下载可执行内容的速率限制到小于(X-Y)M比特/秒。相对于最大可能速率,下载管理器165将减小下载可执行游戏内容的速率,这样由客户端IlOB接收的流游戏视频有渴望得到的质量等级,例如,在给定的分辨率下渴望得到的可靠性、颜色深度、和帧大小等。通信流视频优先于下载可执行游戏内容。
[0055]因为视频服务器系统120和客户端110不同成员之间的通信信道的带宽能够具有不同的带宽,所以将相同可执行游戏内容下载到客户端110的这些不同成员的速率可以是不同的。进一步地,即使通信信道具有相同的带宽,如果将流游戏视频下载到每个客户端110的速率是不同的,则下载可执行游戏内容的速率也可以是不同的。例如,如果客户端IlOA接收第一帧大小的流视频,并且客户端IlOB接收第二帧大小的流视频,则即使它们各自通信信道具有相同的带宽,它们接收可执行游戏内容的速率也能够是不同的。
[0056]从视频服务器系统120将可执行游戏内容下载到客户端IlOB的速率能够随着时间动态变化。例如,如果通信信道的带宽降低,则下载管理器165可以响应于这个降低,减小将可执行游戏内容下载到客户端IlOB的速率。有时通过监视丢失数据包检测所述带宽的降低。在一些实施例中,下载管理器165被配置为如果可执行游戏内容数据包和/或流视频数据包丢失,则自动减小下载可执行游戏内容的速率。在减小下载可执行游戏内容速率的同时,通信流游戏视频的速率能够保持不变。例如,如果通信流游戏视频速率的减小将导致展现给游戏玩家的视频质量降低到最低质量以下,则随后在减小通信流游戏视频的速率前,将减小下载可执行游戏内容的速率。这样,减小了可执行游戏内容与流游戏视频通信速率的比值。
[0057]在下载过程中,能够增加和减少下载可执行游戏内容的速率。例如,在通信信道带宽暂时减小后,能够逐渐增加速率以测试是否较高的下载速率是可能的。如果数据包丢失,则再降低一些下载速率。通过使用这种方法,即使当通信信道的带宽随着时间变化时,也能够找到最佳下载速率。在一些实施例中,通过在相对低的下载速率下开始以及增加下载速率直到数据包丢失,开始可执行游戏内容的下载。至此,减小下载可执行游戏内容的速率直到数据包丢失达到可接受的等级。
[0058]在一些实施例中,下载管理器165被配置以接收视频服务器系统120和客户端IlOB之间可用带宽的估计值。这个可用带宽能够通过本发明其他地方讨论的测试来确定,以及可以包括一个以上的通信信道。例如,能够从客户端资格器160接收可用带宽的估计值。可选地,经由不同于流游戏视频的通信信道下载可执行游戏内容的数据包。这些不同通信信道可以具有一些共同分段。例如,可以从代码源170下载可执行游戏内容,而从视频源130传送流游戏视频。可选地,代码源170被安置于地理位置上远离视频源130的位置处。这样,可执行游戏内容相对于流游戏视频可以穿过网络115的多个不同分段。即使一些分段是不同的,可执行游戏内容和流游戏视频两者也都可以穿过网络115的其他分段,例如,连接网络115和客户端IlOB的最后分段。
[0059]依赖于限制通过其通信可执行游戏内容和流游戏视频的通信信道带宽的网络115的分段,有时可以通信和下载比只通过一个信道多的总字节。例如,如果第一通信信道被分段限制于X M比特/秒的带宽,则能够下载的流游戏视频和可执行游戏内容两者的字节总数将大于X M比特/秒,其中,穿过所述第一通信信道传送流游戏视频,所述分段不被用于下载可执行游戏内容。有时可以增加下载可执行游戏内容的速率,直到要么达到用于下载可执行游戏内容的第二通信信道的带宽,要么达到第一和第二通信信道两者共享的网络115的分段容量。能够增加下载可执行游戏内容的速率,直到要么可执行游戏内容的数据包,要么流游戏视频的数据包太频繁地丢失。随后减小这个速率到没有或有可接受数量的数据包丢失的最优值。通过使用下载管理器165和/或客户端资格器160,能够管理最优的通信和下载速率的确定。
[0060]代码源170包括存储设备,例如硬件驱动和/或被配置以存储可执行游戏逻辑和可选地,相关内容的固态存储器。可选地,代码源170安置于地理位置上远离视频服务器系统120的其他部分位置处。例如,第一位置中的代码源170的单个实例能够由在一个以上不同位置中的一个以上视频服务器系统120共享。在这些实施例中,代码源170被配置以并行地给客户端110的不同成员提供可执行游戏内容的多个副本(游戏逻辑和相关内容),有时每个副本与提供给客户端110的同一成员的流游戏并行提供。可选地,代码源170被包括在与游戏服务器125相同的部分和/或被同一部分管理。代码源170可选地被配置来为一个以上的视频游戏题目提供可执行游戏内容。可选地,可执行游戏内容包括附件和/或附加数据。
[0061]在一些实施例中,所有或部分的代码源170分布在多个设备中,可选地,包括客户端110的成员。在这些实施例中,所有或部分的可执行游戏内容能够基于端对端,从一个客户端Iio提供给另一个客户端110。为了这个目的,所描述的关于代码源170和视频源130 (作为视频服务器系统120的一部分)之间通信的通信信道的测试和监视,也能够应用于客户端110成员之间的通信信道。例如,由客户端IlOB接收的部分可执行游戏内容能够从视频服务器系统120、客户端IlOA和/或客户端IlOC(没有示出)接收。在一些例子中,客户端IlOA和客户端IlOB的相对临近度比客户端IlOB和视频服务器系统120的临近度近得多。因此,端对端通信信道可以是优选的。可执行游戏内容的哪些部分从哪个源接收的选择可选地使得到客户端IlOB的传递最优化。当从端对端传递时,通过使用多于3、5或10或更多的端作为源,可以减小每个端上的负担。可选地,下载管理器165被配置以管理端对端通信。
[0062]可选地,下载管理器165被配置以管理下载可执行游戏内容的顺序。例如,响应于存储在视频服务器系统120或客户端IlOB上视频游戏的状态,能够改变下载可执行游戏内容的顺序。下载管理器165可选地被配置以在流和/或客户端侧模式下执行游戏的同时,监视这个状态。
[0063]下载管理器165还进一步被配置以管理到客户端IlOB的游戏状态的下载。这个游戏状态是由视频源130使用以产生流游戏视频的游戏状态。所述游戏状态能够从可选的状态源175或从游戏服务器125下载。在一些实施例中,一旦下载初始状态,下载管理器165就被进一步配置以下载更新以致于维持两份游戏状态。例如,能够在状态源175存储一份游戏状态(且由视频源130使用),而同时在客户端IlOB上维持第二份游戏状态。
[0064]状态源175包括存储设备,例如硬件驱动和/或被配置以存储视频游戏的状态的固态存储器。可选地,存储的状态是存储在游戏服务器125的全局游戏状态的子集,且通常基于从客户端HO的成员接收的命令和/或从游戏服务器125接收的状态更新,进行更新。
[0065]可选地,下载管理器165还被配置以监视可执行游戏内容的下载过程以及通过使用切换逻辑180,在客户端IlOB上发起下载代码的执行。当下载可执行游戏内容的可执行子集时或当下载所有可执行游戏内容时,所述发起能够发生。通常,下载管理器165被配置以检测何时满足这些条件中的一个或两个。
[0066]所述发起可是自动的或人工的。自动的发起由切换逻辑180执行,并且不需要客户端IlOB游戏玩家的任何行动,而人工的发起需要游戏玩家的一些行动。在自动的发起中,命令从切换逻辑180A被发送到在客户端IlOB上的切换逻辑180C,使得可执行游戏内容安装和/或开始。由于安全原因,不必所有类型的客户端110都允许程序执行远程自动发起。
[0067]在人工的发起中,游戏玩家采取一些行动以开始或允许下载的可执行游戏内容的执行。例如,游戏玩家可以点击按钮、以允许安装可执行游戏内容、设置配置和数据文件、和/或一旦安装则开始执行游戏代码的安装程序的执行。这是最小的互动情况,在上述情况下,游戏玩家仅仅需要单击。在其他实施例中,游戏玩家必须首先发起来自于下载到的可执行游戏内容游戏客户端的安装,在安装期间回答配置问题,键入许可密钥,人工发起安装游戏客户端的执行,和/或诸如此类的。在多种实施例中,这些任务的任意组合可以需要或可以不需要游戏玩家。
[0068]在一些实施例中,通过与显示流游戏视频的浏览器窗口同样的浏览器窗口,将控制展现给游戏玩家,便利下载可执行游戏内容执行的人工发起。例如,发起按钮能够作为置于游戏视频上覆盖的一部分,展现给游戏玩家,或在展示流游戏视频的同一浏览器窗口的另外一部分中,显示发起按钮。可选地,流游戏视频和发起控制在浏览器窗口不同的帧中。
[0069]在一些实施例中,对游戏玩家给予何时发起下载代码的执行的控制。例如,可以给游戏玩家显示消息,所述消息规定游戏进行必须在预定时间内例如,5分钟,从服务器侧模式切换到到客户端侧模式。这个消息可以作为覆盖显示,或可以在显示流视频的浏览器窗口中的别处显示,或可以在一个单独窗口中显示。所述消息可包括按钮,所述按钮允许游戏玩家在预定时间内,在他们选择的时间发起切换。可选地,所述消息对预定时间进行倒计时。虽然可以提供不包括实时游戏进行的可替代内容,但是在这个时间结束时,不再给客户端提供流游戏视频。在一些实施例中,在客户端IlOB上,下载的可执行游戏内容执行的发起需要游戏玩家人工终止流游戏视频的接收,基于可执行游戏内容人工执行游戏客户端安装,以及随后人工发起游戏客户端的执行。可选地,给游戏玩家预定时段,在上述时段中人工执行这个切换的全部或部分。
[0070]在一些实施例中,从游戏玩家接收开始下载的许可,并且这个许可也被用于发起安装例程和视频游戏客户端两者的执行。例如,消息能够被展现给请求下载可执行游戏内容的许可的游戏玩家,并且当准备好时也执行下载的代码。通过本发明别处将讨论的控制展现方法可以展现这个控制。一旦游戏玩家请求游戏,一旦流游戏视频的通信开始,或在流游戏视频被展现给游戏玩家后的某个时间,所述控制就可被展现。例如,在多种实施例中,可执行游戏内容的下载只发生在预定时间延迟后,特定游戏状态达到后,玩家推进到游戏中的某一阶段后,玩家保存游戏状态后,和/或诸如此类的。开始下载和/或发起可执行游戏内容执行许可的请求可选地伴有购买游戏的选项。例如,下载的发起和/或执行的发起可能需要付费。
[0071]在一些实施例中,直到游戏玩家已经终止流游戏视频的传递,才开始可执行游戏内容的下载。例如,一旦游戏玩家停止播放游戏,就可以配置下载管理器165以提供游戏玩家下载可执行游戏内容。这样,在一个实施例中,游戏玩家可以在服务器侧模式下播放游戏30分钟(或一些其他的时间段)并且随后退出游戏。一退出游戏,就给游戏玩家提供购买游戏的机会。如果游戏玩家接受,则下载可执行游戏内容。在服务器侧模式下时,下载顺序可选地取决于在游戏中游戏玩家已经做了什么。例如,支持游戏玩家化身当前位置所需的可执行游戏内容可以被最先下载。
[0072]在这个下载在进行的同时,游戏玩家可以决定继续或不继续游戏。如果游戏玩家决定继续游戏,则下载管理器165被配置以首先确定可执行游戏内容的可执行子集(或全部)是否已经被下载了。如果可执行游戏内容的可执行子集或全部已经被下载了,则执行下载的游戏代码。如果可执行游戏内容的可执行子集或全部尚未被下载,则随后再次在流模式下执行游戏。在游戏在服务器侧模式下再次被播放的同时,可以下载或可以不下载进一步可执行游戏内容。当游戏玩家随着时间推移参加多个游戏会话时,服务器侧模式播放的时间能够穿插在下载的时间。
[0073]在一些实施例中,可以发现被认为可执行游戏代码的子集是不足以使游戏玩家玩游戏的。例如,如果在支持更高等级的游戏区域被下载前,游戏玩家直接将化身进入该区域,则可以中断游戏的客户端侧模式。如果这发生,则可选地配置下载管理器165以回到游戏的服务器侧模式执行。在这种情况下,这里描述的多种切换步骤能够反过来执行。
[0074]虽然在控制化身前,流游戏视频的接收最初通常不需要游戏玩家拥有注册的账户,但是,接收流游戏视频,接收游戏代码,保存由游戏中游戏玩家的行动导致的游戏状态和/或从服务器侧模式切换到本地执行模式,通常确实需要账户。所述账户能够自动建立或由游戏玩家建立。在一些实施例中,为了玩多玩家游戏,游戏服务器125有时需要账户。在这些实施例中,视频服务器系统120中的、或游戏系统100中其他地方中的账户管理器185的实例,可以建立满足游戏服务器125的需要的临时账户。例如,可以配置账户管理器185以自动地产生用户名、密码、地理位置、和/或诸如此类的。随后这个账户信息被用于建立视频服务器系统120和游戏服务器125之间的游戏会话。这个游戏会话被用于在视频服务器系统120和游戏服务器125之间通信游戏命令和游戏状态信息。因为账户管理器185,游戏玩家能够在游戏玩家提供任何账户信息前,开始播放基于服务器的视频游戏。可以随着时间的推移,在游戏中一个特定的点,当玩家设法保存游戏状况时,或当发起游戏本地执行时,从游戏玩家处搜集账户信息。例如,游戏玩家已经玩了 5分钟、10分钟或15分钟后,当游戏玩家达到预定游戏等级或游戏状态时,当游戏玩家尝试保存游戏状态时,和/或诸如此类时,可以要求游戏玩家建立用户名和密码。当建立账户信息时,也可以要求游戏玩家为游戏付费。建立账户的请求可选地作为流视频上的覆盖展现,或可选地,在展现流游戏视频的同一浏览器窗口上的其他地方展现。
[0075]在一些实施例中,当在游戏视频服务器侧呈现(服务器侧模式)和游戏视频客户端侧呈现(客户端侧模式)之间切换游戏时,切换逻辑180A被配置以将由视频服务系统120从客户端IlOB接收的账户信息提供到游戏服务器125。切换逻辑180B使用这个账户信息以替换账户管理器185自动产生的账户信息。例如,当游戏玩家首先发起流视频游戏时,账户管理器185可以给游戏服务器125提供随机产生的用户名(SLE4IF45FFK1)和密码(kalLI28Iup)。在服务器和客户端执行模式之间的切换之前,视频服务器系统120接收游戏玩家选择的用户名(E_aP)和密码(4mybutterfly)。大约在切换时,游戏玩家选择的账户信息从切换逻辑180A被发送到切换逻辑180B,并且切换逻辑180B使用这些值替换游戏服务器125存储器中自动产生的账户数据。这样,游戏玩家选择的账户信息替换视频服务器系统120自动产生的临时账户信息。[0076]在一些实施例中,视频服务器系统120自动产生的账户信息进一步还包括服务器选择、玩家介绍信息、地理位置、和/或诸如此类的。玩家介绍信息是关于如何向玩家介绍游戏的信息。可以通过网站、营销程序广告、另一个游戏玩家等向玩家介绍。在这些情况下,介绍信息通常包括介绍人的身份。例如,被配置以允许第一游戏玩家播放流视频游戏的链接,可以在社交网站上的第二游戏玩家的页面上显示。第二玩家(或其化身)的标识能够被包括在链接中,并且视频服务器系统120被配置以使用这个标识识别第二玩家。账户管理器185或游戏服务器125能够使用第二玩家的身份来给予第二玩家引用第一玩家的信用。进一步地,游戏服务器125能够使用第二玩家的身份以将第一玩家置于与第二玩家相同的游戏服务器、化身派系、游戏环境中的位置等。这些是由视频服务器系统120可选地产生账户信息的进一步例子。
[0077]在一个更具体的例子中,来自于游戏魔兽世界? (World of Warcraft ? )的,由视频源130提供给在客户端IlOB的第一玩家的,流游戏视频的副本或其一帧被提供给第一玩家的FaceBook ?页面。将这个流游戏视频的副本与所述页面上的链接相关联,所述链接被配置以允许第二玩家加入第一玩家玩魔兽世界。当第二玩家点击链接时,标识符被发送到视频服务器系统120的实例。账户管理器185使用这个标识符以查找魔兽世界服务器、玩家派系(部落或联盟)、以及可选地在魔兽世界游戏空间中第一玩家的位置。账户管理器185使用这个信息来为第二玩家自动产生(或建议)账户信息,以将第二玩家置于与第一玩家相同的魔兽世界服务器和玩家派系。账户管理器185也可以给游戏服务器125提供信息以将第一玩家标识为已经介绍了第二玩家。这样,第一玩家能够得到用于将第二玩家带进游戏的信用。
[0078]从视频服务器系统120到游戏服务器125的、由账户管理器185传送的一些账户信息在游戏进行期间产生。例如,在游戏进行期间,游戏玩家可以将附件与账户相关联或建立化身。这个信息当其产生时可被传送到为客户端侧执行模式需要该信息的地方,当接下来游戏被保存时,作为周期性通信事件的一部分被传送,和/或诸如此类的。
[0079]可选地,切换逻辑180被配置以在游戏系统100的元件之间通信其他信息。例如,可以将安装的附加代码和产生的附加数据从视频服务器系统120或游戏系统100中其他地方传输到客户端110B。这个传输可以发生在切换的时候或切换之前。在一些实施例中,与从视频源130到客户端IlOB的流游戏视频的通信同时,产生的附加数据和/或附加代码被拷贝到客户端110B。
[0080]游戏玩家的账户信息可选地包括游戏服务器125向其提供游戏状态信息的IP (因特网协议)地址。这个IP地址对不同的登录会话可以是不同的。例如,每次游戏玩家登录播放由游戏服务器125提供的视频游戏,可以给视频源130提供不同的IP地址。同样地,对于其中视频源130接收流游戏视频的每个会话,客户端IlOB可以具有不同的IP地址。在现有技术中,游戏服务器125发送游戏状态信息到的IP地址在一个单独游戏会话中不改变。如果IP地址改变,则游戏玩家必须再次登录,或从某个初始状态开始以开始新的游戏会话。这样IP地址与由登录认证的游戏玩家相关联。同样地,当游戏服务器125接收游戏命令时,从其发送命令的IP地址被用于将所述命令分配到具体的游戏会话/游戏玩家。
[0081]在本发明的一些实施例中,游戏服务器125发送游戏状态信息到的、和从其接收游戏命令的IP地址在单个游戏会话中改变。例如,当执行流游戏模式和本地游戏模式之间的切换时,游戏服务器125从发送游戏状态信息到视频源130并从视频源130接收游戏命令,切换到发送游戏状态信息并从客户端IlOB接收游戏命令。可选地,完成这个不需要游戏玩家再次登录。
[0082]为了改变IP地址,切换逻辑180A发送视频源130使用来与客户端IlOB通信的客户端IP地址到游戏服务器125。客户端IP地址伴有游戏服务器125发送游戏状态信息到客户端IlOB的请求和/或从客户端IlOB接受游戏命令的请求。在游戏服务器125,切换逻辑180B接收这个客户端IP地址并且将它与特定的游戏会话相关联。随后发送进一步的游戏状态到这个客户端IP地址,除了或代替视频源130的IP地址。同样地,如果在游戏服务器125、从客户端IP地址接收游戏命令,则将它们与游戏玩家的游戏会话相关联。即使当经由视频源130初始建立游戏会话和可选的登录时,也进行这个关联。进一步地,由视频源130使用以与游戏服务器125通信的游戏服务器IP地址,被可选地提供给客户端110B,这样客户端IlOB能够直接发送游戏命令到这个游戏服务器IP地址。在游戏服务器125的IP地址被包括在下载到客户端IlOB的可执行游戏内容中的实施例中,给客户端IlOB提供这个游戏服务器IP地址是可选的。
[0083]在一些实施例中,通过将客户端IP地址与游戏会话相关联,将所述游戏会话与一个以上的客户端关联起来。在这种情况下,可以将游戏状态的子集发送到两个客户端。例如,能够将游戏状态的子集从游戏服务器125发送到客户端IlOB和视频源130两者(游戏服务器125将视频源130视为客户端,并且可以将,或可以不将不同的视频源130和客户端IlOB视为不同类型的客户端)。一段时间后,可以停止游戏会话和视频源130的IP地址之间的关联。在一些实施例中,将客户端IP地址与游戏会话相关联,自动地使得视频源130的IP地址与游戏会话的关联解除。无论关联解除立即发生或将两个IP地址与游戏会话相关联一段时间后发生,最终的结果都是切换逻辑180使游戏会话从第一客户端被重新分配到第二客户端。在不开始新的游戏会话情况下,这个重新分配可选地在单个游戏会话期间发生。
[0084]下载管理器165和/或切换逻辑180可选地被配置以维持两份游戏状态的子集,视频源130使用所述游戏状态的子集以呈现流游戏视频。这两份之一放置在视频源130,另一份在客户端110B。通过要么从视频源130,要么从游戏服务器125发送状态更新到客户端110B,维持这两份子集。在游戏玩家不会感受到状态不协调的情况下,所述两份状态允许进行执行模式切换。特别地,同一状态可用于视频源130上的游戏逻辑执行和客户端IlOB上的游戏逻辑执行的两者。在切换前、在切换期间和/或切换后,维持两份状态一段时间。这段时间可以是短的。在一些实施例中,视频源130上的游戏逻辑和客户端IlOB上的游戏逻辑并行被执行一段时间,这样,被配置以展现给游戏玩家的两份视频帧在不同的地方产生。在仍在通信流游戏视频到客户端IlOB和/或仍在客户端IlOB上显示流游戏视频的同时,在客户端IlOB上可选地发起下载的可执行游戏内容的执行。
[0085]在一些实施例中,配置切换逻辑180和/或下载的可执行游戏内容,以一旦执行下载的可执行游戏内容,就终止客户端IlOB从视频源130接收的流游戏视频的展现。例如,可执行游戏内容可以,当被执行时,关闭在其中展现流游戏视频的浏览器窗口。可替代地,可以配置可执行游戏内容以将浏览器窗口从视频源130重定向到可执行游戏内容的视频输出。例如,切换逻辑180C可以给浏览器窗口提供执行游戏代码的本地输出的URL,这样从视频源130接收的视频流被下载可执行游戏内容的视频输出代替。下次执行可执行游戏内容,其可选地被配置以在它自己的程序窗口中而不是浏览器中展现游戏视频。
[0086]如在本发明其他地方讨论的,在一些实施例中,配置下载管理器165和/或切换逻辑180以在这个游戏代码的仅仅一个子集被下载后,开始下载的可执行游戏内容的执行。因为为了保证流游戏视频的最小质量,不再需要限制下载速率,所以,切换后通常配置下载管理器165以增加下载可执行游戏内容的速率。
[0087]处理器150被配置以执行包括在本发明讨论的视频服务器系统120的多种部件中的逻辑,例如,软件。例如,可以用软件指令给处理器150编程以执行视频源130、游戏服务器125、客户端资格器160、下载管理器165、代码源170、状态源175、和/或切换逻辑180A的功能。视频服务器系统120可选地包括一个以上的处理器150的实例。为了执行视频服务器系统120接收的命令,或协调本发明讨论的游戏系统100的多种元件的操作,也可以用软件指令对处理器150编程。处理器150可以包括一个或多个硬件设备。处理器150是电子处理器。
[0088]存储设备155包括非暂时性的模拟和/或数字存储设备。例如,存储设备155可以包括被配置以存储视频帧的模拟存储设备。存储设备155可以包括计算机可读数字存储设备,例如,硬盘驱动、光驱、或固态存储设备。存储设备155被配置(例如,通过合适的数据结构或文件系统)以存储视频帧、人工帧、包括视频帧和人工帧两者的视频流、音频帧、音频流、附件、附加数据、可执行游戏内容、和/或诸如此类的。可选地,存储设备155分布于多个设备中。在一些实施例中,存储设备155被配置以存储本发明其他地方讨论的视频源130的软件组件。可以以准备好当需要时被提供的格式,存储这些组件。
[0089]图2示出了根据本发明的多种实施例的、被配置以服务多个视频游戏的视频源130的进一步细节。多个视频游戏能够包括同一视频游戏的多个实例和/或不同视频游戏的实例。可选地,视频游戏是多玩家游戏。例如,游戏服务器125的一个或多个实例可以维持视频游戏的一个或多个游戏状态,其每个都基于从多个客户端接收的输入。在图2中示出的视频源130的元件可选地通过使用处理器150被执行。
[0090]通过使用游戏逻辑210、分别被标记为210A、210B、210C等的不同实例,执行视频游戏。游戏逻辑210被配置以使用游戏状态确定游戏环境,所述游戏环境能够被呈现给被配置以展现给游戏玩家的视频流。游戏环境是包括游戏中的目标、化身、目标的位置、他们的形状、纹理、和之间的空间关系,以及诸如此类信息的两维或三维虚拟环境。游戏环境能够包括顶点数据、转换数据和纹理数据、和/或诸如此类的。
[0091]游戏逻辑210被配置以将视频游戏作为“游戏会话”的一部分提供。可选地,游戏会话是游戏玩家登录以播放视频游戏和注销,或其他从游戏断开方式之间的时间段。在没有建立登录账户的情况下,游戏玩家播放游戏的实施例中,游戏会话是连续时间段,在所述时间段期间,游戏玩家的进展和/或状态是可追踪的并且由游戏程序维持。如果玩家不与游戏进展和/或状态所存储的账户相关联,则随后当游戏会话终止时,游戏进展和状态丢失。游戏会话可以存在于客户端IlOB和视频源130之间,客户端IlOB和游戏服务器125之间,以及视频源130和游戏服务器125之间。在一些实施例中,在不终止游戏会话的情况下,将游戏会话从在游戏服务器125和视频源130之间传送到在客户端IlOB和游戏服务器125之间(和/或反之亦然)。[0092]游戏环境的呈现通常基于一个或多个与特定游戏玩家相关联的视点。这些视点可以是截然不同的,例如俯视和直视。或者,视点能够来自于依据大概人的瞳孔之间的距离而不同的位置,以及被配置以创造3D图像。视频源130可以包括多于1、2、3、5、7、15、或31个的游戏逻辑210的实例。可选地,游戏逻辑210是游戏服务器125的客户端,以及可以被配置以经由网络115与游戏服务器125通信。
[0093]游戏逻辑210被配置以从一个或多个客户端110接收游戏命令,并且根据一套游戏规则处理接收到的命令。这些规则覆盖,例如,化身如何与其他化身或在游戏目标中互动、化身移动、游戏实例管理、和/或诸如此类的。可选地,游戏逻辑210也被配置以基于游戏中的事件产生音频数据。这个音频数据可以代表枪声、溅泼声、引擎声、说话声、飞行声、雨声、音乐、或任何可能在游戏中产生的其他声音。例如,事件,例如一个目标打击另一个,可以产生代表相关声音的音频数据。游戏逻辑210包括硬件、固件、和/或存储在计算机可读介质上的软件。通常将游戏逻辑210与相关游戏内容相关联。
[0094]游戏逻辑210的每个实例可安置在单独的计算设备上、或游戏逻辑210的一些实例可安置在同一计算设备上、或游戏逻辑210的单个实例可跨多个计算设备安置。依赖于游戏玩家当前正在经历的游戏环境需要,游戏逻辑210的实例能够动态改变使用的计算设备数量和/或身份。可选地,安置在同一计算设备上的游戏逻辑210的实例在单独虚拟机或虚拟I/O壳中执行。在一些实施例中,游戏逻辑210的不同实例被配置以直接相互传送游戏命令和/或游戏状态信息,例如,在没有必然经由游戏服务器125通信的情况下。
[0095]游戏逻辑210通常在操作系统(OS) 215上执行。操作系统215可以包括Windows?、Linux、UNIX、Mac OS?、Solaris?、和/或诸如此类的。虚拟机平台可以在操作系统215和游戏逻辑210之间操作。虚拟机平台能够包括商业系统,例如ESX、Hyper-V、和/或诸如此类的。在这些实施例中,能够在虚拟机中执行一个或多个游戏逻辑210。游戏逻辑210的多个实例可以在操作系统215的同一实例上执行。例如,图2示出了游戏逻辑210A和游戏逻辑210B两者都在同一操作系统215上执行。可以配置或可以不配置同一操作系统215上执行的游戏逻辑210的实例,以播放同一视频游戏。例如,游戏逻辑210A、210B和210C可以都是魔兽世界?客户端,或可以分别是魔兽世界?的、:Eve?的和Call to Arms?的客户端。
[0096]在一些实施例中,由游戏逻辑210确定的游戏环境被传给可选的虚拟3D视频驱动器220。虚拟3D视频驱动器220被配置以从游戏逻辑210的视点看起来像控制图形处理单元的非虚拟3D视频驱动器。可以将游戏逻辑210的每个实例与它自己的虚拟3D视频驱动器220的实例相关联,或虚拟3D视频驱动器220可以由两个或两个以上的游戏逻辑210的实例共享。在一些实施例中,由每个游戏逻辑210确定的游戏音频被传给可选的虚拟音频驱动器285。游戏音频包括被配置以作为音频流的一部分展现给游戏玩家的声音数据。游戏音频能够由游戏规则产生,例如,射击枪支应该引起爆裂声,或可以从其他源,例如音乐曲目、客户端110的成员、麦克风、和/或诸如此类的源接收。
[0097]在可替代的实施例中,游戏逻辑210被配置以包括本发明讨论的、虚拟3D视频驱动器220的和/或虚拟音频驱动器285的功能。在这些实施例中,不需要虚拟3D视频驱动器220和/或虚拟音频驱动器285。
[0098]虚拟3D视频驱动器220还被配置以将接收到的游戏环境传给(非虚拟)3D驱动器230。可选地,到3D驱动器230的、游戏环境的传递由虚拟3D视频驱动器220的多种实例协调。例如,能够协调传递,这样3D驱动器230每次从仅仅一个或最少数量的虚拟3D视频驱动器220接收游戏环境。在典型的实施例中,每个虚拟3D视频驱动器220被配置,这样它们看起来是独立的过程以及独立的到3D驱动器230的视频数据源。3D驱动器230本身被配置以在呈现后,保持追踪视频数据形成的视频帧。
[0099]3D驱动器230接收的视频数据被传给图形处理单元(GPU) 235以呈现为原始视频帧。可选地,图形处理单元235被用于并行呈现一个以上的视频流。例如,图形处理单元235可以并行基于从游戏逻辑210A接收的视频数据产生第一视频流、基于从游戏逻辑210B接收的视频数据产生第二视频流、基于从游戏逻辑210C接收的视频数据产生第三视频流等。视频流的并行产生包括同时生产这些流。然而,视频流的并行产生可以,但并不一定,包括在图形处理单元235中同时处理单独帧。例如,在一些实施例中,3D驱动器230可替代地将多种成员游戏逻辑210产生的视频数据传给图形处理单元235。游戏逻辑210A产生的数据被用于做视频帧,并且随后逻辑210B产生的数据被用于做视频帧等。在这种情况下,视频流并行产生,而单独的帧连续产生。可替代地,一个以上的视频帧可以同时在图形处理单元235中产生。在这种情况下,图形处理单元235的第一部分被用于产生一个帧,而图形处理单元235的第二部分被用于产生第二帧,第一和第二帧源于由不同的游戏逻辑210产生的视频数据。在一些实施例中,一组图形计算内核被用于产生第一帧,而同时第二组图形计算内核被用于在相同时间产生第二帧。结果视频帧被传回到3D驱动器230的控制。
[0100]可选地,虚拟3D视频驱动器220被配置以管理原始呈现的视频帧从3D驱动器230的传输。例如,虚拟3D驱动器220可以被用于协调视频帧从3D驱动器230的控制到共享存储器240的传输(呈现后,视频帧在图形处理单元235的存储器中或由3D驱动器230管理的存储器中。在任意一种情况下,它们都在3D驱动器230的控制下)。因为虚拟3D视频驱动器220管理往返于3D驱动器230的视频数据和帧的通信,所以在一些实施例中,它们能将视频帧置于与具体的视频动态编码管道(DEP) 245相关联的共享存储器240的一部分中。视频DEP245分别被标识为视频DEP245A、视频DEP245B、视频DEP245C等。在这些实施例中,给每个视频DEP245在共享存储器240中,分配具体的存储器位置,并且配置每个视频DEP245以从那些位置重新获得视频数据。
[0101]在其他实施例中,虚拟3D驱动器220被配置以基于时间而管理到共享存储器240的视频数据的传输。在这些实施例中,使由每个虚拟3D驱动器220管理的传输同步,并且当它们的数据在共享存储器240中时,虚拟3D驱动器220通知每个视频DEP245。一旦通知的视频DEP245的成员重新获得这个数据,DEP的另一个成员的数据就在虚拟3D视频驱动器220的控制下,从3D驱动器230传输到共享存储器240。在这些情况下,像素从本地GPU存储器到共享存储器240的读回能够基于时间表。如本发明所使用的术语“同步”和“同步了的”旨在意味着在时间上相关的两个事件,所述在时间上相关是通过时间表、通过时间信号、通过时间延迟、或直到其他事件已经满足条件,例如,已经完成一个事件才开始。例如,虚拟3D驱动器220可以同步操作,这样一旦图形处理单元235已经完成来自于的第二虚拟3D驱动器220的游戏环境的呈现,就将游戏环境从第一虚拟3D驱动器220提供给3D驱动器230。可选地,选择这个同步的时间以使得以最佳方式使用图形处理单元235。
[0102]由于虚拟3D视频驱动器220的管理的结果,多个视频流能够被存储在共享存储器240中,而不会混淆哪些帧属于哪个视频流。可选地,共享存储器240被配置以存储音频和视频数据。可以以与讨论过的关于视频数据相似的方式,存储和/或管理这个音频数据。
[0103]虚拟音频驱动器285可选地是游戏逻辑210和OS 215之间的虚拟I/O壳的一部分。它们被配置以从游戏逻辑210的视点看起来像音频驱动器,并且将它们从游戏逻辑210接收的任何音频数据传给音频DEP 270之一。例如,在一些实施例中,与游戏逻辑210A相关联的虚拟音频驱动器285被配置以发送音频数据到音频DEP 270A,以及与游戏逻辑210B相关联的虚拟音频驱动器285被配置以发送音频数据到音频DEP 270B等。
[0104]共享存储器240包括随机存储器(RAM)或相似的被配置以高效地读写视频数据的存储器。共享存储器240被配置以为多个不同的视频DEP 245存储视频数据。可选地,不同的视频DEP 245的视频数据同时被存储在共享存储器240中。共享存储器240可以由单个硬件设备组成或可以包括多个设备。
[0105]视频DEP 245是动态地分配编码流水线,其被配置以将使用图形处理单元235呈现的视频数据编码。视频DEP 245的每个成员被配置以编码到提供视频DEP 245时指定的视频格式。这个格式规格通常基于客户端110之一的需要和/或视频服务器系统120和客户端110之间的通信路径的能力。可选地,相应于来自于客户端110之一的请求,动态提供视频DEP 245。例如,当客户端IlOB连接到视频服务器系统120,并且发送视频流请求时,能够提供视频DEP 245以包括特定选择以满足客户端IlOB需要的元件,例如编码器。如在本发明其他地方讨论的,可选地,视频DEP 245的成员被配置以使用一个以上的编码方案。
[0106]每个视频DEP 245包括抓取器247,所述抓取器247被配置以从共享存储器240抓取视频数据以及将这个视频数据传输到视频DEP 245的存储器。可选地,抓取器247在虚拟3D驱动器220成员的控制下。例如,在多种实施例中,由虚拟3D视频驱动器220的成员控制抓取器247以从共享存储器240中特定位置抓取视频数据和/或与到视频DEP 245其他成员的视频数据的传输同步地在特定时间抓取视频数据。
[0107]每个视频DEP 245可选地包括覆盖逻辑290,其被配置以将一个或多个视频图像覆盖到视频数据,例如,由图形处理单元235产生的帧上。覆盖是被置于第二图像上的第一图像,或被加到另一个声音的声音。覆盖可以具有变化透明度等级被应用。例如,第一图像能够是不透明的,这样,完全隐藏第二图像被覆盖的部分,或第一图像能够是部分透明的,在上述情况下,在第一图像下面的第二图像能够仍是稍微可见的。覆盖可以遮盖所有的或部分的在下面的图像。例如,覆盖可以被配置以遮盖在更大区域中的某些像素。在这种情况下,覆盖被映射到客户端110之一的显示器上的像素、或映射到由图形处理单元235产生的图像中的像素。映射能够以多种方式完成。例如,覆盖左下角的像素可以被分配到图形处理单元235产生的视频帧上的特定像素。在一些实施例中,覆盖逻辑290被配置以在应用所述覆盖前,调整覆盖的大小。可选地,覆盖逻辑290位于视频DEP 245A中的其他位置。例如,在处理器250后。
[0108]覆盖能够包括各种各样的像素/视频图像。例如,覆盖能够包括游戏玩家经由因特网接收的实时或静止的图像,运动(或其他)事件的实时或静止的图像、输入控制(例如,“a”、“b”、“TAB”、“回车”、“空格键”、“功能键”、“箭头”和/或其他键或输入设备)的图像、地图、文本、和/或诸如此类的。覆盖能够在大小和形状上千差万别。在一些情况下,覆盖是呈现3D游戏环境的结果。能够将一个以上的覆盖置于一个图像上。这些覆盖能够是重叠的或单独的。可选地,在被应用前,覆盖以一种编码格式被接收和被解码。
[0109]覆盖的存在和内容是可选地响应于接收到的游戏命令,一个或多个游戏玩家的身份、账户类型、正在播放游戏的身份、从先前的或实时的运动事件或现实世界的游戏捕捉的视频、游戏规则、和/或由游戏逻辑210产生的视频内容。例如,覆盖可以包括由游戏命令的接收产生的目录。覆盖可以包括响应于像素图案的内容,例如,包括在由游戏逻辑210产生的视频中的图像。可选地,覆盖逻辑290被配置以应用多个覆盖到单个视频帧并且这些覆盖可以来自于不同的源。
[0110]可选地,覆盖逻辑290被配置以在通过使用预处理器250已经预处理视频帧后和/或在通过使用编码器255编码后,应用覆盖。在一些实施例中,覆盖包括经由因特网在视频源130的输入(例如,I/O设备145)接收的图像,并且覆盖逻辑290包括被配置以从所述图像产生覆盖的视频处理逻辑。可选地,接收到的图像是从图像源,例如,摄像机或文件存储设备接收的。
[0111]可选地,每个视频DEP245也包括预处理器(PRE)250。预处理器250被配置以执行颜色空间转换,例如,RGB到YUV和/或缩放操作以增加或减少视频帧的分辨率。在图形处理单元235的输出是在YUV颜色空间中或一些其他渴望得到的颜色空间中的实施例中,预处理器250是可选的。多个预处理器250可以被包括在视频DEP 245中,所述视频DEP 245被配置以产生多个具有不同大小的视频帧的视频流。
[0112]每个视频DEP 245包括至少一个编码器(ENC) 255。编码器255分别被标识为编码器255A、编码器255B等。每个编码器225被配置以根据特定的编解码器,以及可选地,特定的颜色深度和/或帧大小对视频数据进行编码。例如,编码器225可以被配置以将视频数据编码为 Adobe Flash? 标准、.flv、.wav、.av1、.mpg、H.264, Η.263、0n2、VP6、VC-1、WMA、和/或本发明讨论的其他编解码器。
[0113]视频DEP 245的成员可以包括一个、两个或更多的编码器255。这些编码器可以被配置以编码为不同的编解码器和/或同一编解码器的不同格式。例如,可以配置编码器255A以根据Flash标准、以第一帧大小和颜色深度进行编码,而配置编码器255以同一Flash标准、以第二帧大小和颜色深度编码进行编码。在视频DEP 245的每个成员中的编码器255的身份通常在提供视频DEP 245时确定。例如,单个命令或命令集可以被用于产生(提供)视频DEP245A以及指定被产生的视频DEP 245A应该包括哪些组件。在本发明的其他地方进一步讨论视频DEP 245A的产生。包括两个或两个以上的编码器255的视频DEP 245成员可替代地被视为共有一些但并非全部组件的两个或两个以上的单独的视频DEP 245。例如,视频DEP 245A和视频DEP 245B可以具有同一预处理器250但不同的编码器 255。
[0114]在一个例子中,编码器255A被配置以使用H.264编解码器,而编码器255B被配置以使用H.263编解码器。具有两个或两个以上不同的可用编码器使视频DEP 245A能够在视频流传递期间改变编码。所述编码的改变能够是从一种编码类型到另一种,或仅仅是特定类型的编码特征上的改变。例如,特征可以在颜色深度、每秒帧数量、编码选项、像素数量、和/或诸如此类方面改变。在一些实施例中,响应于客户端IlOB特征上的改变或客户端IlOB和视频源130之间的通信信道的改变,视频DEP 245A可选地被配置以在编码器255A和255B之间切换。[0115]实际上,当需要不同于正在使用的编解码器的编解码器时,新的视频DEP245与当前的视频DEP245并行产生以及执行一小段时间。可选地,所述新的视频DEP245是原始视频DEP245的分支。例如,原始视频DEP245的一些组件可以被用在新的视频DEP245中。这两个视频DEP245可以具有逻辑上被安排在树形结构中的组件。
[0116]在一些实施例中,视频DEP 245被配置以使用两个或两个以上的不同的编码器以同时产生两个或两个以上的不同视频流。这些视频流基于由图形处理单元255呈现的同一游戏环境以及,因此,包括基本上相同的材料(有覆盖的可能的例外)以及能够被发送到不同的地方。例如,视频流之一能够被发送到客户端110A,而其他的被发送到客户端110B。可替代的,视频流之一能够被发送到客户端IlOB以及其他被发送到第三方能够观看视频的网站。可选地,这个网站是社交网络网站或游戏玩家网站的一部分。所述两个不同的视频流可在帧速率、编码类型、帧大小、颜色深度等方面不同。例如,传递到社交网站的视频流可能有比传递到通过使用客户端IlOB正在玩游戏的游戏玩家的视频流低得多的质量。第二视频流可以直达正在玩游戏的游戏玩家或仅仅在观看游戏进行的人。可选地,视频流直达一个以上的地方。
[0117]视频DEP 245A可选地包括一个或多个后置处理器(Post) 260。后置处理器260的单独例子分别被称作260A和260B。后置处理器260被配置以适合于通过网络通信的格式、根据公共或私有网络协议,将编码的视频帧打包进容器。例如,一些协议,诸如,Adobe RTMP需要后置处理,而其他视频标准,例如,H.264附件B不需要后置处理。可以将每个后置处理器260与编码器255的特定成员相关联,或一些后置处理器260可以被配置以从编码器255的一个成员接收编码的视频帧。
[0118]后置处理器260的输出直达I/O设备145以传递给一个或多个客户端110。本发明讨论的视频DEP 245的元件包括硬件、固件、和/或存储在计算机可读介质上的软件。例如,每个视频DEP 245可以代表一套软件,所述软件被载入存储器中并通过使用电子处理器执行。
[0119]音频DEP 270被配置以接收由游戏逻辑210成员产生的音频数据,并且将这个音频数据编码为音频数据包。通过使用I/o设备145和网络115,所述编码的数据数据包随后被发送到客户端110。可选地,音频DEP 270也被配置以将音频覆盖置于从游戏逻辑210接收的音频数据上。不同的音频DEP 270分别被标记为270A、270B、270C等。
[0120]和视频DEP 245 —样,音频DEP 270通常被按需分配以及被分配以处理来自于游戏逻辑210特定成员的音频数据。这个音频数据可以基于视频游戏中的事件。例如,根据游戏规则(例如,落入水中产生拍水声),视频游戏的一个或多个玩家采取的行动可以引起音频数据。音频DEP 270A的分配通常响应于相同因素并且以与视频DEP 245A的分配相同的方式执行。例如,包括于音频DEP 270A中的元件可以响应于客户端110之一的需要。音频DEP 270可以从共享存储器240和/或直接从虚拟音频驱动器285之一接收音频数据。
[0121]可选地,音频DEP 270A包括抓取器275,所述抓取器275被配置以从虚拟音频驱动器285之一接收音频数据、从视频服务器系统120外的一个或多个源接收音频数据、和/或从共享存储器240获得音频数据。例如,在一些实施例中,抓取器275被配置以重新获得通过因特网、从视频源130外的源(例如,从一个或多个客户端110)接收到的数据。从这些源的任何一个接收的音频能够包括声音、音乐、音响效果、音轨、警报、和/或诸如此类的。例如,使用客户端IlOA的游戏玩家的声音可以从客户端IlOA接收、或游戏玩家可以提供音乐以让使用另一个客户端110的游戏玩家听到。音频数据可以作为音频流、并行地从一个以上的游戏玩家接收。
[0122]可选地,音频DEP 270A进一步还包括覆盖逻辑295。覆盖逻辑295被配置以将一个或多个音频覆盖置于由游戏逻辑210成员产生的音频数据上。所述音频覆盖能够包括音频、音乐、音响效果、音轨、警报、和/或诸如此类的。例如,在一些实施例中,音频覆盖包括作为数据包,通过因特网,从一个或多个游戏玩家接收的语音数据。在被包括进覆盖前,由覆盖逻辑295可选地对这些数据包进行编码。将覆盖置于游戏逻辑210成员产生的音频数据上可选地包括将这个数据加到产生的音频数据。所有或部分的音频覆盖能够从视频源130外的源接收。例如,在一些实施例中,覆盖包括经由因特网、在I/O设备145接收的音频数据,且覆盖逻辑290包括被配置以从这个音频数据产生音频覆盖的音频处理逻辑。当提及音频覆盖时,数据的身份是覆盖,并且正被应用的所述覆盖上的数据可以是任意的,因为,在一些实施例中,音频数据没有在视频数据中能够具有分层的顺序感。
[0123]音频DEP 270A进一步还包括音频编码器280A。音频编码器280A被配置以根据音频编解码器,将游戏逻辑210成员产生的音频数据和音频覆盖编码进音频数据包。所述编码通常在已经将音频覆盖应用到音频数据后执行。
[0124]抓取器275、音频编码器280A和覆盖逻辑295包括硬件、固件、和/或存储在计算机可读介质上的软件。音频DEP 270B和音频DEP 270C是音频DEP 270A的可替代实施例。
[0125]通常,视频源130的操作由控制器265管理。控制器265包括硬件、固件、和/或存储在计算机可读介质上的软件。例如,控制器265可以包括存储于存储器中的、通过使用微处理器执行的软件。
[0126]在一些实施例中,控制器265被配置以响应于播放游戏的请求,提供游戏逻辑210A、虚拟音频驱动器285和虚拟3D视频驱动器220的实例。例如,如果从客户端IlOB接收特定的视频游戏的请求,则控制器265可以从存储设备155重新获得游戏逻辑210A、虚拟音频驱动器285和虚拟3D视频驱动器220,并且将这些置于工作的存储器中。游戏逻辑210A可以被置于与客户端IlOB和游戏服务器125两者的通信中。随后,为了播放视频游戏,通过使用处理器150执行游戏逻辑210A。
[0127]在一些实施例中,控制器265被配置以响应于播放游戏的请求,分配视频DEP 245和/或虚拟音频驱动器285的实例。例如,控制器265可以被配置以首先确定或接收对视频DEP 245A和音频DEP 270A的需求以及随后提供满足那些需要的计算指令。随后,将视频DEP 245A和音频DEP 270与游戏逻辑210之一以及虚拟3D驱动器220之一相关联。可选地,提供的视频DEP245A被配置以从共享存储器240中特定区域重新获得原始视频数据。
[0128]在一些实施例中,通过查询使用客户端IlOB的游戏玩家,确定对视频DEP 245A和/或音频DEP 270A的需求。例如,控制器265可以被配置以使文本消息出现在客户端IlOB上,所述消息请求使用客户端IlOB的游戏玩家输入游戏玩家渴望得到的视频流特征。这些特征能够包括连接类型、帧大小、编码方案、帧速率、颜色深度、和/或诸如此类的。键入的特征被传送回控制器265,随后控制器265使用这些特征选择元件,以当它们被提供时包括在视频DEP 245A和/或音频DEP 270A中。例如,如果游戏玩家请求特定的编码方案,则被配置以使用请求的编码方案的编码器255随后被选择并被包括到视频DEP 245A中。[0129]在一些实施例中,自动确定对视频DEP 245A和/或音频DEP 270A的需求。例如,通过使用客户端资格器聚集的信息可以被用于确定对视频DEP 245A的需求。在这个例子中,如果客户端IlOB只包括Microsoft Silverlight ?解码器和Adobe Flash ?解码器,则在视频DEP 245A中需要至少一个相应的解码器的配置或变量。通过使用视频DEP 245A产生的视频流的特征,例如帧大小、颜色深度和帧速率,也能够由控制器265以这种方式确定。
[0130]对视频DEP 245A和/或音频DEP 270A需求的确定可以包括由游戏玩家提供的特征和自动确定的特征两者的使用。在一些实施例中,可能的特征被游戏玩家的账户类型、付款和/或预定限制。例如,游戏玩家可以付费以接收更高质量的视频流。
[0131]控制器265也可以管理共享存储器240的共享。例如,控制器265可以配置视频DEP 245A和/或音频DEP 270A以使用共享存储器240中特定的存储器位置,和/或可以将控制器265配置为被配置的视频DEP 245A和/或音频DEP 270A,以响应于某些定时信号访问共享存储器240。所述定时信号被定时以便不同的视频DEP 245访问共享存储器240的同步。
[0132]图3示出了根据本发明的多种实施例的游戏服务器125的进一步细节。游戏服务器125被配置以基于从多个客户端接收的游戏命令维持视频游戏的全局状态。这些客户端可以是客户端110、视频源130、和/或其他类型的客户端。游戏服务器125能够包括一个或多个计算设备。例如,在一些实施例中,游戏服务器125包括不同的硬件设备,所述硬件设备贡献于支持游戏中的不同的区域、实例或地牢。
[0133]游戏服务器125包括输入/输出(I/O) 310,所述输入/输出310被配置以经由网络115、从多个地理位置上的远程客户端接收游戏命令。输入/输出310通常包括网络连接,例如,以太网端口、路由器、网关、和/或诸如此类的。可选地,这些网络连接被配置以使用TCP、UDP、和/或其他的标准进行通信。输入/输出310也被配置以发送游戏状态信息到多个客户端。这个游戏状态信息通常包括由游戏服务器125维持的全局游戏状态的子集。所述提供给每个客户端的子集通常依赖于化身的位置和与客户端相关联的特定的游戏会话。例如,全局游戏状态的子集通常包括代表化身周围区域的游戏状态。所述子集被配置以足够定义化身周围的游戏环境以及,这样,能够基于化身的视点来呈现流视频。全局游戏状态是整个游戏或游戏有效部分的代表,且是基于从地理位置上的远程客户端接收的游戏规则和游戏命令的。
[0134]游戏服务器125进一步还包括游戏弓丨擎320,所述游戏弓I擎320被配置以基于接收到的游戏命令和一套游戏规则,维持视频游戏的全局状态。游戏引擎320也追踪个别游戏会话,以及被配置为每个游戏会话选择和产生全局游戏状态的子集。将这些子集提供给多个客户端的不同成员。通常每个产生的全局游戏状态的子集被分别分配给多个客户端的特定成员。这个分配基于游戏引擎320和特定客户端之间建立的游戏会话。
[0135]可选地,游戏服务器125进一步还包括切换逻辑180B,所述切换逻辑180B被配置以将游戏进行从服务器侧模式切换到客户端侧模式,以及可选地,反之亦然。特别地,切换逻辑180B被配置以在单个游戏会话中将与游戏服务器125的通信从第一客户端切换到第二客户端。通常,第一客户端将是视频源130的实例,并且第二客户端将是客户端110之一(当从客户端侧模式切换回服务器侧模式时,这些角色将被倒换)。切换包括将一个全局状态的子集从多个客户端的第一成员重新分配到多个客户端的第二成员。子集本身将被发送到第二成员,而不是或除了多个客户端的第一成员。此外,切换逻辑180B被配置以改变接收到的通信到游戏会话的分配,这样,来自于多个客户端的第二成员通信被分配到,与来自于多个客户端的第一成员的通信被分配到的游戏会话一样的游戏会话。在一些实施例中,单个游戏会话和/或游戏状态子集能够同时被分配到一个以上的客户端。在这些情况下,从两个客户端接收的游戏命令都被分配到同一游戏会话,并且全局游戏状态的同一子集被发送到两个客户端。从两个客户端接收的游戏命令被当做它们是从同一客户端接收的。
[0136]如本发明的其他地方所描述的,切换可能涉及从视频服务器系统120接收重新分配游戏会话的请求。这个请求通常包括将对其进行重新分配的客户端110之一的IP地址或一些其他地址。在一些实施例中,切换逻辑180B被配置以只从特定的预定客户端接受重新分配请求。例如,切换逻辑180B可以被配置以从视频服务器系统120的实例而不是客户端110的实例接受重新分配请求。可选地,重新分配请求被加密和/或可以包括授权代码。
[0137]游戏服务器125进一步还包括被配置以存储全局状态和其子集的状态存储设备330。状态存储设备330包括一个或多个静态存储设备,例如,硬盘驱动器、静态存储器、随机存储器、和/或诸如此类的。全局状态可选地被分成一些部分,每个部分代表游戏中的不同区域。
[0138]图4示出了根据本发明的多种实施例的用户界面400。在一些实施例中,用户界面400由视频源130产生。用户界面400可以由展现在浏览器或其他窗口中的视频组成。可替代地,用户界面400可以包括一个以上的视频和/或视频和静态图像的组合。例如,流游戏视频可以在游戏显示区域410中展现,而控件可以在菜单区域420中显示。控件和流游戏视频可选地在不同的位置产生。例如,控件可以在客户端IlOB上产生,而流视频由视频源130产生。在一些实施例中,游戏显示区域410和菜单区域420是浏览器窗口中不同的帧。
[0139]菜单区域420能够包括各种各样的控制,为了说明的目的示出几个。在图4中示出的控制可选地覆盖在部分流游戏视频上。点击、光标经过、或其他的选择控制的方式能够使得命令被传送到切换逻辑180C、切换逻辑180B、切换逻辑180A、下载管理器165、账户管理器185、和/或诸如此类的。
[0140]在一个示出的例子中,菜单区域420包括购买按钮430,为游戏玩家购买视频游戏配置所述购买按钮430。在一些实施例中,在不打断游戏进行的情况下,这个购买能够进行。例如,在菜单区域420中完成购买(名字和信用卡信息和/或类似信息的输入)的同时,流游戏视频能够继续在显示区域410中展现给游戏玩家。购买游戏能够导致服务器侧模式和客户端侧模式之间的切换的发起,能够导致下载的可执行游戏内容的激活,能够引起可执行游戏内容下载的发起等。购买游戏通常需要游戏玩家提供账户信息。
[0141]在一个示出的例子中,菜单区域420也包括账户按钮440。账户按钮440可被用于访问账户管理器185的特征。在多种实施例中,账户按钮440被用于设置账户名、产生化身、选择服务器、付款、设置密码、在游戏之间切换、和/或诸如此类的。由游戏玩家通过使用账户按钮440(或购买按钮430)提供的信息能够被存储在视频服务器系统120、游戏服务器125、或游戏系统100中的其他地方。
[0142]在一个典型的实施例中,选择账户按钮440或购买按钮430将使得命令被发送到视频服务器系统120,其转而将改变菜单区域420的内容以给游戏玩家进一步的选择和/或数据输入域。
[0143]在一个示出的例子中,菜单区域420也包括炫耀按钮450。炫耀按钮450被配置以便游戏玩家自动地将游戏视频张贴到外面的网站,例如社交网站。视频张贴的位置和视频的长度是参数的例子,可选地,使用账户按钮440设置上述参数。所述张贴的视频能够是实时的或记录的。例如,炫耀按钮能够被配置以张贴最后60秒的播放,杀死首领前2分钟的播放,或游戏的实时视频。被选择张贴的视频可选地取决于被配置以监视游戏进行的附件的输出,例如,检测首领遭遇、成就、等级的改变等。
[0144]在一个示出的例子中,菜单区域420进一步还包括新游戏按钮460。新游戏按钮460被配置以展现其他通过游戏系统100给游戏玩家可用的视频游戏列表。通常,如果游戏玩家选择新游戏,则来自于当前游戏视频的传递被终止并且被来自于新游戏的视频取代。可选地,来自于当前游戏和新游戏的视频,相继显示在同一浏览器窗口中。可选地,账户管理器185被配置以将游戏玩家账户信息从一个视频游戏拷贝到另一个。可选地,新游戏按钮460被配置以便游戏玩家在没有重大延时的情况下,从一个视频游戏移到另一个。可选地,当新游戏开始时,将游戏会话分配给游戏逻辑的不同实例或视频源130的不同实例。这个分配可能涉及从让与人传出客户端的IP地址或将客户端的IP地址传给受让人。
[0145]如之前所述,下载管理器165被配置以执行与将可执行游戏内容下载到客户端IlOB相关的多种功能。图5示出了根据本发明的多种实施例的下载管理器165。下载管理器165能够包括统计引擎500、概率树数据库510、状态监视器520、带宽监视器530、下载器540以及优先级列表550中的一些或全部。特别地,下载器540接收输入,例如,从监视器520,530,以及也访问概率树数据库510来控制可执行游戏内容的下载方面,例如,以什么顺序和以什么速率下载可执行游戏内容。
[0146]图6示出了根据本发明的多种实施例的决策树600,以及决策树600被提供以辅助理解本发明描述的下载管理器165的一些功能,例如,关于图5。决策树600包括分枝点610,基于游戏玩家输入、来自于其他游戏玩家的输入,根据由可执行游戏内容或游戏逻辑210指定的规则,游戏状态能够从所述分枝点610推进到数个可选游戏状态任何一个。分枝点610引出更多的分枝点610,从而产生整体的决策树600。可以理解,虽然每个分枝点610代表一个唯一的游戏状态,但是游戏进行可以通过不是那些实例中的分枝点610的游戏状态进行,在所述实例中,体现在可执行游戏内容中的规则不提供选择。为了清楚,没有来自于其选择的游戏状态从图6省略。实际上,计算机游戏可以包括比在图6中示出的多得多的分枝点610。
[0147]由可执行游戏内容确定从每个分枝点610出发的选择。最初,在准备阶段选项是受限的,例如,幻想游戏的游戏玩家首先不得不选择固定数量的可能化身之一。选择化身后,游戏玩家接着可以具有在两个或两个以上的队列或联盟之间选择的选项。依据那个选择,游戏玩家可以具有人物种族、开始配置等等的不同选择,直到为玩游戏充足地定义了游戏玩家的化身。在一个特定的例子中,如果游戏玩家选择人类化身,则可知游戏将需要与人类起始区相关联的可执行游戏内容的可能性高,并且在短期内,将需要与兽人起始区相关联的资源的可能性较小。在另一个例子中,在赛跑游戏中,如果游戏玩家选择椭圆形轨道,则相对于只有8字形轨道需要的资源,这个椭圆形轨道需要的资源将被给予较大的下载优先级。其他类型的游戏可以具有不同的准备选择,例如,车辆类型、跑道、战场、玩家数量、化身武器、化身技能、化身性别等。随后游戏玩家从准备进展到玩游戏,例如,通过被置于游戏状态中。为简单起见,图6示出在准备阶段中的每个最后的分枝点610被映射到游戏进行中的唯一的初始游戏状态。然而,将理解,准备阶段中的多个最后的分枝点610可以映射到游戏进行中的同一初始游戏状态。众所周知,对合适的游戏进行,每个分枝点610需要特定的资源集。
[0148]从可能是分枝点610的初始游戏状态,游戏玩家可用的玩游戏的选项包括移动到不同的位置、与其他游戏玩家互动、与游戏环境中的特征互动、获取目标、挣钱等等。如在图6示出的,游戏玩家输入,例如,由游戏玩家玩游戏产生的游戏命令,使得游戏状态增加地改变。在一些实施例中,其他游戏玩家的行动能够引起游戏状态的改变。由可执行游戏内容提供的以从特定游戏状态前进的其他选项能够包括回到准备阶段中分枝点610、改变游戏等级以及采取其他将化身从游戏状态移走的行动的能力。为简单起见,在图6中示出的分枝总是向前推进,然而,如前面所描述的,来自于任何分枝点610的分枝都能够是复杂的,以及可选地,能够引导,例如,到位于准备或可供选择的等级中的分枝点610。游戏玩家从一个分枝点610到下一个的进展的历史构成那个游戏玩家游戏路径620。
[0149]在每个分枝点610有一套代表改变的概率,所述改变为游戏路径620接着将通向每个不同的可替代的游戏状态,以及随后超过那些进一步的游戏状态。在一个具体例子中,在一个分枝点610可以有25个游戏路径620可能延伸到的不同的可替换游戏状态。响应于接收到的游戏命令,游戏路径620将通向的这25个分枝点610前两个的概率分别是百分之21和百分之9。接下来的23个选择,每个具有百分之3的概率。也有百分之I概率游戏玩家将暂停或退出游戏。这些概率可以取决于到达一个分枝点610采取的路径。到达离当前的分枝点610数步远的分枝点610的概率能够通过将概率相乘计算。确定这些概率的方法在本发明的其他地方公开。
[0150]再次参考图5,可选的统计引擎500被配置以计算在当前游戏状态的游戏玩家将移到距离当前游戏状态一步的每个其他游戏状态统计的可能性。可选地,统计引擎500通过在一长段时间,监视大量的游戏玩家的游戏进行执行这个计算。游戏玩家的数量越大以及监视时期越长,结果的统计意义就越好。对于给定的游戏状态,一些可能的游戏状态将是很有可能的,而其他游戏状态可能性较小。例如,游戏玩家将回到设置中的游戏状态的可能性通常将是小概率的,而推进化身通过当前的游戏等级的选项是较高概率的。也有游戏玩家将退出游戏的概率。因为多个游戏玩家的游戏进行被持续监视,所以统计引擎500随着时间更新概率树数据库510中的概率。统计引擎500的单个实例可以支持大量的下载管理器165。可选地,统计引擎500被安置在地理位置上远离下载管理器165的其他部分的地方。
[0151]在一些实施例中,统计引擎500为距离当前游戏状态一步的、可供选择的游戏状态中的一些或所有做这个计算。在一些进一步的实施例中,统计引擎500为距离当前的游戏状态一步以上的、选择中的一些或所有做这个计算。在多种实施例中,统计引擎500基于当前游戏状态和/或基于一个或多个之前的游戏状态,沿着游戏路径620计算每个选择的概率。例如,前进到特定的游戏状态的概率可基于游戏玩家如何到达当前游戏状态变化。
[0152]在图5中,虽然统计引擎500在下载管理器165中被示出,但是可以理解,统计引擎500能够横跨多个游戏服务器125分布,每个实例基于由游戏服务器125支持的游戏进行,致力于概率树数据库510。统计引擎500的每个实例可以包括硬件、固件、和/或存储在计算机可读介质上的软件。概率树数据库510包括存储在计算机可读介质上的、有组织的并且可检索的数据收集。在多种实施例中,每个下载管理器165可以包括一份概率树数据库510或每个只可以访问共享的概率树数据库510。因为在监视足够大量的游戏玩家的游戏进行一段足够的时期后,被存储在概率树数据库510中的概率能够是适度静态的,所以,在多种实施例中,下载管理器165不包括统计引擎500和/或概率树数据库510不响应于进一步的游戏进行被更新。
[0153]此外,下载管理器165包括状态监视器520。状态监视器520被配置以沿着游戏路径620追踪游戏状态,以及可选地,在前分枝点610。可选地,下载管理器165进一步还包括带宽监视器530。在多种实施例中,状态监视器520被配置以从游戏服务器125或状态源175接收游戏状态。可选地,状态监视器520监视由游戏逻辑210使用以产生游戏视频的游戏状态。状态监视器520被配置以给统计引擎500提供游戏状态,这样,统计引擎500能够执行概率计算。
[0154]带宽监视器530监视例如,视频服务器系统120和客户端IlOB之间的通信信道的带宽。状态监视器520和带宽监视器530中的每个可以包括硬件、固件、和/或存储在计算机可读介质上的软件。带宽监视器530通过检测丢失的数据包、通过测量时延、通过测试增加的通信速率以了解是否导致丢失数据包、通过发送测试数据包、和/或诸如此类的方法监视带宽。其他的可以由带宽监视器530使用的带宽测试方法在共同拥有的、序列号为12/791,819的美国专利申请中和/或本发明其他地方关于客户端资格器160的讨论中公开。
[0155]进一步地,下载管理器165包括下载器540。下载器540被配置以从状态监视器520,以及可选地,从带宽监视器530接收输入,以及还进一步被配置以访问概率树数据库510。下载器540查询概率树数据库510以为了从状态监视器520接收的游戏状态,确定从那个游戏状态出发的每个可能选择的概率是什么。可选地,下载器540可以为每个可能的可供选择的游戏状态,确定从那些游戏状态出发的每个可能的可供选择的游戏状态概率是什么。例如,如果两个可能的游戏状态统计上是可能的而其余的游戏状态统计上是非常不可能的,则下载器540可以查看所述两个可供选择的游戏状态中的每一个以及从两个可供选择的游戏状态考虑进一步可供选择的游戏状态。
[0156]给定游戏状态,以及可选地,一个或多个在前分枝点610,下载器540使用从那个游戏状态出发的、每个可能的可供选择的游戏状态概率,以动态区分可执行游戏内容将被下载的优先顺序。下载器540维持提供部分可执行游戏内容将被下载的顺序的优先级列表550。可选地,当部分可执行游戏内容被下载以及游戏状态改变时,下载器540在优先级列表550中改变顺序。下载器540根据某些规则维持优先级列表550。例如,即使部分被下载的可执行游戏内容的片段属于与其他游戏状态相比,已经变得不太可能的游戏状态,那些片段也可以被给予优先级以完成下载。作为另一个例子,支持具有最大可能性的游戏状态需要的、可执行游戏内容的那些部分将具有最高下载优先级,以及支持具有较低可能性的游戏状态需要的、可执行游戏内容的部分将具有相对较低下载优先级。部分可执行游戏内容能够被目录、文件和/或文件的子部分划分。[0157]如本发明其他地方描述的,在一些实施例中,下载器540调节下载可执行游戏内容的速率。下载器540根据由带宽监视器530提供的带宽,以及可选地,来自于视频服务器系统120的其他信息,例如,用于提供流游戏视频的带宽数量,调节下载速率。
[0158]如本发明其他地方描述的,可选地,下载器540被配置以在客户端IIOB上,通过使用切换逻辑180发起下载代码的执行。在一些实施例中,在客户端IlOB上已经发起下载代码的执行后,并且流游戏视频不再被视频服务器系统120发送到客户端110B,根据优先级列表550,下载器540可以继续下载游戏代码到客户端110B。在这些实施例的一些中,下载器540继续接收游戏状态以及继续动态改变优先级列表550的顺序,直到已经完成到客户端IlOB的整个游戏代码的下载。
[0159]图7示出了根据本发明示例性实施例的用于下载可执行游戏内容的方法700。例如,方法700能够由下载管理器165执行。方法700包括接收游戏状态的步骤710、确定概率的步骤720、以及确定下载序列的步骤730。每次在步骤710接收新的游戏状态,可选地,在步骤720例如,通过查询概率树数据库510来确定新的概率。然而,在很多例子中,从一个游戏状态到下一个的推进不需要在步骤730对下载序列重新排序。然而,在一些例子中,基于从所述游戏玩家或其他游戏玩家接收的输入,游戏进行可能采用概率上来说可能性更小(相对于预期的进行)倾向。在这些情况下,例如,在优先级列表550中,可执行游戏内容的一个或多个部分被给予新的更高优先级,而可执行游戏内容的其他部分被给予新的更低优先级。在多种实施例中,概率和/或优先级列表550重新计算的时间可以基于固定时间段(例如,1、5或10分钟)、化身离开游戏中的区域、化身的行程、穿越游戏环境中的边界、化身执行的特定的行动、到达特定的状态、化身等级的改变、和/或诸如此类的。
[0160]方法700还可以包括可选的、确定下载可执行游戏内容下载速率的步骤740。在一些实施例中,步骤740包括监视通信信道的带宽。在一些实施例中,步骤740可包括从带宽监视器530接收带宽。如本发明其他地方讨论的,能够基于可用带宽和提供在最小质量等级的流视频需要的带宽,确定下载速率。
[0161]方法700进一步还包括下载可执行游戏内容的步骤750。在多种实施例中,步骤750包括根据从步骤730动态排序的优先级列表,通过网络115将部分可执行游戏内容通信到客户端110B。这个步骤可由例如,下载器540执行。在多种实施例中,根据优先级列表指定的顺序,部分可执行游戏内容从代码源170重新获得并且发送到客户端110B。在这些实施例的一些中,首先使可执行游戏内容排队,并且当优先级列表被重排序时,在队列中的可执行游戏内容的顺序被动态重排。
[0162]在一些例子中,步骤750包括改变下载速率。例如可通过下载器540改变下载速率,例如,基于诸如变化的带宽可用性的因素。由于信道可变性和流视频的带宽需要的改变,可用带宽的数量可能变化。例如,在某些时候,流视频可能每秒需要的帧比在其他时候的少,以及能够利用额外的可用带宽增加下载速率。
[0163]在一些实施例中,某些条件导致相对于流视频的提供,给可执行内容的下载更高的优先级。例如,如果因为资源是不可用的,所以在客户端模式游戏的执行将非常可能被打断,则相对于维持展现给游戏玩家的游戏视频的最小质量,可以给下载资源更多的优先级。在一些实施例中,帧速率、帧大小、颜色深度、或游戏视频的一些其他特征可以被改变,这样下载的帧数量(以比特/秒)减小。这使得对于下载可执行游戏内容,更多的带宽是可用的。在特定的例子中,如果下载管理器165确定当需要时被需要的资源很可能不可用,则配置下载管理器165发送指令到视频源130,指示应该减小提供给客户端IlOB的流视频的帧速率,以增加资源在需要前将被下载的概率。可选地,基于下载需要的资源预期需要的时间量,计算被减小的帧速率的数量。在可替代的实施例中,当在客户端侧模式下时为了保证需要的资源在需要它们前被下载,游戏的进行是“冻结的”。在可替代的实施例中,如果当客户端侧执行需要时,需要的资源在客户端IlOB上很可能是不可用的,则游戏的进行从客户端侧模式切换到服务器侧模式。
[0164]在一些实施例中,对于正常的游戏进行所需,资源被区别对待。例如,对于正常的游戏进行,场地的几何结构和/或在游戏的区域中的目标可被认为是必不可少的,而意欲应用在游戏目标中的纹理可能不是必不可少的。在这些实施例中,如果下载管理器165确定当需要时被需要的资源很可能是不可用的,则可以改为使用可替代的资源。例如,内部墙壁的纹理可以被使用在建筑物的外部,或不必要的目标可以从提供给游戏玩家的视频省略。可选地,由下载管理器165给客户端IlOB提供被允许的资源替代表。相对于不必要的资源,可以给必要的资源更大的优先级以下载到客户端110B。如本发明所使用的,术语“正常的游戏进行”指游戏按预期方式展现和播放。不正常的游戏进行可能有不正常的纹理、缺少游戏目标等,尽管如此仍允许游戏进行具有稍微不同的外观或功能。
[0165]可选地,方法700进一步还包括发起从游戏执行的服务器侧模式到游戏执行的客户端侧模式切换的步骤760。步骤760可以包括,例如,在需要可执行游戏内容的任何一部分将被下载前,确定那部分的概率是否低于给定的阈值。这个概率与将到达的游戏状态需要的部分可执行游戏内容的概率以及何时将到达这个游戏状态的概率有关。在需要资源前的时间量越大,越可能有机会在被需要前下载资源。在多种实施例中,在被下载前,如果被需要的任何资源的概率低于百分之1、2或5的阈值,则可执行游戏内容的“可执行子集”将被认为已经被下载到客户端。在这些实施例中,可执行子集的特征描述包括将来可能需要什么资源的考虑以及等到需要它们时下载这些资源的概率。这样,可执行子集依赖当前的游戏状态。在其他实施例中,不考虑将来将需要什么,当资源的最小可执行集已经被下载到客户端时,认为可执行子集被下载。
[0166]当下载可执行子集时,切换逻辑180能够发起到游戏执行的客户端侧模式的切换。步骤760可以包括,例如,终止流视频从视频服务器到客户端的传递以及在客户端上执行可执行游戏内容以基于游戏状态产生视频。在给客户端提供流视频的同时,步骤710-760中的每个都可被执行。
[0167]可选地,方法700进一步还包括完成可执行游戏内容的下载步骤770。在这个步骤中,在步骤760后,例如,转换到客户端侧模式后,能够继续下载可执行游戏内容到客户端。在这些实施例的一些中,能够根据下载序列下载可执行游戏内容,像下载序列在步骤760的时候一样。在其他实施例中,在步骤770期间,根据游戏状态,通过使用步骤730继续动态地改变下载序列。在这些实施例中,游戏状态,如在客户端IlOB上维持的,被传送回下载管理器165。即使在可执行子集的执行已经在客户端IlOB上开始后,步骤730也能够被用于改变下载部分可执行游戏内容到客户端IlOB的顺序。
[0168]可选地,方法700可包括发起切换回给客户端提供流视频的步骤780。在如下的例子中,这个步骤可被执行,所述例子为:在步骤760结束后,继续接收游戏状态,例如由下载器540接收的例子。这里,如果下载器540基于游戏状态确定,还没有被下载客户端的部分可执行游戏内容有很大的概率被需要以支持正在进行的游戏,则切换逻辑180,例如,能够将客户端从游戏执行的客户端侧模式切换回服务器侧游戏执行。应当意识到尽管在图7中,步骤780表现为在步骤770后,但是在那些采取步骤780的例子中,步骤780发生在步骤770完成前。在这些例子中,步骤770被打断,并且方法700返回步骤710,并且在下载可执行游戏内容到客户端的同时,继续流视频到客户端,直到步骤760重新切换回游戏执行的客户端侧模式的时刻。
[0169]图8示出了根据本发明的多种实施例的用于提供计算机游戏的方法。通过使用本发明其他地方公开的系统和方法,这些方法可选择地被执行。在接收命令步骤810中,通过通信系统,在视频服务器系统从远程客户端接收游戏命令。例如,在一些实施例中,视频服务器系统120通过网络115,从客户端IlOB接收游戏命令。游戏命令的接收是建立在客户端IlOB和视频服务器系统120之间的游戏会话的一部分。在图8中示出的步骤,可选地,以可替代的顺序执行。
[0170]在可选的转发命令步骤815中,接收到的游戏命令被转发到游戏服务器(例如,游戏服务器125)。经由网络115,接收到的游戏命令可选地,转发到游戏服务器125。在可选的接收状态步骤820中,在视频服务器系统从游戏服务器接收更新的游戏状态。接收到的游戏状态,可选地,是由游戏服务器125维持的全局游戏状态的子集,以及可选地,通过使用在命令转发步骤815中转发的游戏命令更新。在多玩家游戏中,接收到的子集通常是从多个游戏玩家和/或多个客户端110接收的游戏命令的结果。
[0171]转发命令步骤815和接收状态步骤820,可选地,是在不包括游戏服务器125的实施例中。在这些实施例中,更新状态步骤825在视频服务器系统120上执行。更新状态步骤825包括使用从客户端IlOB接收的游戏命令来新存储在视频服务器系统120上的游戏状态。可选地,通过使用游戏逻辑210之一的游戏规则执行更新。
[0172]在产生视频步骤830中,基于在接收状态步骤820中接收的游戏状态或在更新状态步骤825中更新的游戏状态产生游戏视频。游戏视频,可选地,如在本发明的其他地方描述的,例如关于图2,通过视频服务器系统120产生。例如,在一些实施例中,通过使用视频驱动器220、3D驱动器230、GPU235和/或视频DEP 245A,基于由游戏逻辑210产生的游戏环境产生的游戏视频。
[0173]在提供视频步骤835中,通过通信网络,游戏视频被从视频服务器系统提供到远程客户端。例如,游戏视频可以经由网络115,从视频服务器系统120提供给客户端110B。虽然游戏视频,可选地,在显示前被解码、被覆盖和/或以其他方式处理,但是通常以在客户端IlOB上显示的格式来提供游戏视频。
[0174]在确定速率步骤840中,确定可执行游戏内容能够被传送到客户端的速率。这个确定可选地,基于在客户端维持显示游戏视频的最小质量等级,而同时并行地传送可执行内容。例如可执行内容可以经由网络115从视频服务器系统120 (或游戏系统100上的其他地方)传送到客户端110B,而同时给客户端IlOB提供流状游戏视频。可执行游戏内容的传送和游戏视频的传递并行意味着游戏视频的数据包被同时接收,或散布在可执行游戏内容的数据包之间。可选地,游戏视频的数据包和可执行游戏内容的数据包两者都被同时存储在客户端IlOB的接收缓冲器中。确定速率步骤840,可选地,通过使用下载管理器165执行。如在本发明的其他地方讨论的,传送传送速率的确定可以基于视频服务器系统120和客户端IlOB之间的通信信道的可用带宽和/或这个带宽被用于提供流状游戏视频的片段。
[0175]当可执行游戏内容被传送客户端IlOB时,确定速率步骤840中的传送速率的确定可以重复以维持游戏视频质量。
[0176]在提供代码步骤845中,通过通信网络,可执行游戏内容被提供给远程客户端。例如,在一些实施例中,经由网络115,将可执行游戏内容从代码源170传送到客户端IIOB。如这里所使用的术语“可执行游戏内容”和“可执行内容”旨在包括可执行代码和用于产生游戏(或其他应用)视频(诸如,例如,脚本、数据结构、图像、纹理、地理信息,角色姓名、目标形状、用户数据、游戏数据等)的相关资源。一般,以不多于如本发明的其他地方所讨论的确定速率步骤840中确定的速率,提供可执行游戏内容。可执行游戏内容包括游戏逻辑和/或被配置以基于游戏状态产生游戏视频的代码。所述游戏代码可选地,进一步还包括纹理、图像、游戏区的地理数据、和/或被用于支持游戏的其他游戏数据。至少部分可执行游戏内容和游戏视频的流是被并行地提供给远程客户端。例如,经由网络115,与来自于视频源130的游戏视频并行地,可以将来自于代码源170的可执行游戏内容传送到客户端110B。可替代地,可执行游戏内容和游戏视频可以通过单独的信道,并行被传送到客户端110B。
[0177]这样,当可用带宽改变时,流游戏视频与由客户端110接收的可执行内容的比例(以字节/秒测量)可以变化。下载管理器165可以周期性地重复确定传送速率,例如,至少每秒、每十秒、每一百秒、每10巾贞、每1000巾贞、每100巾贞或连续地。在一些实施例中,响应于事件,例如,从视频源130接收信号指示游戏视频的数据速率或游戏视频的数据速率的改变,下载管理器165可以重复步骤840。响应于条件的改变,例如,客户端IlOB需求的变化(例如,受限于延迟时间可变性、客户端IlOB和视频服务器系统120之间的通信信道的带宽的改变、显示分辨率的改变等),下载管理器165可以重复步骤840。
[0178]在提供代码步骤845,部分可执行游戏内容可以以预定特定顺序提供给远程客户端。例如,相对于第二游戏状态,客户端IlOB可具有更大的概率到达第一游戏状态。因此,相对于在第二游戏状态需要的资源,给在第一游戏状态需要的资源更大的优先级。
[0179]在可选的修改顺序步骤850中,响应于当前的游戏状态,将部分可执行游戏内容提供给远程客户端的顺序可以被动态修改。如本发明的其他地方讨论的,重排序通常是基于变化的概率,所述概率是玩家玩游戏时将需要的游戏代码或一些其他资源的概率。当游戏从一个变到另一个状态时,由下载管理器165计算进一步的游戏状态的新概率。在修改顺序步骤850中,这些新概率被用于修改给客户端IlOB提供游戏代码的顺序,这样,首先提供有最大概率的那些部分。在游戏代码的下载期间,下载管理器165可以重复修改提供部分可执行游戏内容的顺序。可以根据需要重复修改顺序步骤850。修改的顺序可依赖于可执行内容被下载到的游戏玩家采取的行动和/或在游戏中其他游戏玩家采取的行动。
[0180]在确定子集步骤855中,下载管理器165确定是否可执行游戏内容的可执行子集已经被下载到远程客户端,例如,客户端110B。可执行游戏内容的可执行子集是允许游戏玩家在游戏将不会因为需要的资源还没有被下载而不得不暂停的具有合理的概率情况下玩游戏的子集。需要的概率能够是预先确定的,以及在多种实施例中,至少是百分之99、98、
95、90、或85。在游戏视频的呈现被传送到客户端前,所有的可执行游戏内容被下载的实施例中,确定子集步骤855是可选的。[0181]在提供状态步骤860,将游戏状态提供给远程客户端。可以随着时间给客户端提供游戏状态。例如,在一些实施例中,提供状态步骤860包括提供初始游戏状态以及随后随着时间提供初始状态的更新。可替代地,提供状态步骤860能够包括提供单个当前状态。提供游戏状态可以是从客户端IlOB和/或客户端110的其他成员接收的游戏命令的结果。从游戏服务器125和/或视频服务器系统120能够提供游戏状态。
[0182]在传送状态更新步骤865中,改变游戏状态更新的传递,这样,游戏状态从游戏服务器125被发送到客户端IlOB而不是从游戏服务器125到视频服务器系统120。可选地,有一段时间,在所述时间段中游戏状态更新被发送到客户端IlOB和视频服务器系统120的两者。游戏状态更新是在游戏服务器125上维持的全局游戏状态的子集,并且在视频服务器系统120和客户端IlOB处被用于产生游戏视频,。游戏状态更新可以是增加的和/或全部的。传送状态更新步骤865通常由切换逻辑180执行。
[0183]传送状态更新步骤865包括随着指令,给游戏服务器125提供客户端IlOB的地址,例如,IP地址,所述指令为与特定游戏会话相关联的游戏状态应该被发送到的这个地址。在游戏服务器125,将提供的地址与先前已有的游戏会话相关联。例如,客户端IlOB的地址被分配给在游戏服务器125和视频服务器系统120之间先前存在的游戏会话。在这个游戏会话中,游戏状态更新之前从游戏服务器125被发送到视频服务器系统120。传送状态更新步骤865的结果是,全局游戏状态的子集被发送到客户端110B,除了或代替视频服务器系统120。这个改变,可选地,在单个游戏会话中执行。
[0184]在传送命令步骤870中,指令由切换逻辑180提供给游戏服务器125,这样,游戏服务器将从远程客户端接收的命令分配到以前在游戏服务器125和视频服务器系统120之间建立的游戏会话。虽然能够使用其他的标识符,但是通常通过使用客户端IlOB的IP地址标识从客户端IlOB接收的命令。这样,提供给游戏服务器125的指令,可选地,包括客户端IlOB的IP地址。
[0185]进一步地,在传送命令步骤870中,指示客户端IlOB发送游戏命令到游戏服务器125,而不是或除了视频服务器系统120。这个指令通常包括游戏服务器125的地址。例如,切换逻辑180A可以给客户端IlOB提供游戏服务器125的IP地址以及可以(例如,经由切换逻辑180C)指示客户端IlOB直接将游戏命令发送到游戏服务器125。
[0186]传送状态更新步骤865和传送命令步骤870是可选的。在一些实施例中,即使在从流模式切换到客户端模式后,在游戏服务器125和客户端IlOB之间的游戏状态和游戏命令的通信通过视频服务器系统120继续发生。在切换回流模式很可能发生的情况下,通过视频服务器系统120继续通信是有帮助的。
[0187]在开始执行步骤875,可执行游戏内容的可执行子集的执行在客户端IlOB上开始。基于作为提供状态步骤860和传送状态更新步骤865的结果接收的游戏状态,这个执行导致游戏视频的产生。这个游戏视频被配置以在客户端IlOB上显示。游戏代码的执行,可选地,由切换逻辑180A发起或在切换逻辑180A的控制下发起。如在确定子集步骤855中确定的那样,只有可执行游戏内容的可执行子集(或全部)已经被下载到客户端后,才执行开始执行步骤875。在一些实施例中,即使在开始执行步骤875后,继续执行提供代码步骤845。这允许在执行已经开始后,下载剩余的可执行游戏内容和/或新游戏代码。
[0188]提供状态步骤860、传送状态更新步骤865、传送命令步骤870以及开始执行步骤875的结果是计算机游戏的执行从服务器侧模式切换到客户端侧模式,其中在客户端侧模式通过使用游戏代码和代替远程服务器客户端上的硬件,进行呈现。特别地,游戏视频的呈现从游戏服务器传送到远程客户端,例如,从视频服务器系统120到客户端110B。如本发明其他地方讨论的,在一段时间中,游戏视频可以并行是从视频服务器系统120接收的以及在客户端IlOB产生的两者。这能够允许视频的同步,和/或在游戏玩家选择时,允许游戏玩家从在浏览器播放视频游戏切换到不同的窗口(可能也是浏览器窗口)。
[0189]在终止游戏视频步骤880中,终止从视频服务器系统到远程客户端的游戏视频的传递。例如,切换逻辑180A可以指示下载管理器165终止从视频服务器系统120到客户端IlOB的游戏视频提供。在可替代的实施例中,人工执行终止游戏视频步骤880。例如,游戏玩家可以仅仅通过关闭其中显示游戏视频的浏览器窗口,或通过人工执行下载的可执行游戏内容,终止游戏视频的传递,所述可执行游戏内容被配置以通过发送命令到视频服务器系统120,或者本地关闭到视频服务器系统120的通信信道,终止来自于视频服务器系统120的游戏视频传递。
[0190]在继续下载步骤885中,可执行游戏内容的进一步和/或新的部分被下载到远程客户端。在执行已经被下载到客户端IlOB的可执行游戏内容的那部分同时,下载管理器165可以继续给客户端IlOB提供部分可执行游戏内容。这样,客户端IlOB接收可执行游戏内容,同时通过使用已经被下载的部分可执行游戏内容给游戏玩家呈现和展现游戏视频。一旦不再经由网络115从视频服务器系统120给客户端IlOB提供视频,可用于到客户端IlOB的可执行游戏内容传送的部分带宽通常大幅度增加。在所有的可执行游戏内容在开始执行步骤875前被下载的实施例中,继续下载步骤885是可选的。
[0191]在可选的回复步骤890中,视频服务器系统从客户端侧模式回复到服务器侧模式。从视频服务器系统120到客户端IlOB的流游戏视频的传递重新开始,并且在客户端IlOB处的游戏视频的呈现可选地被终止。例如,当存在于客户端IlOB的可执行游戏内容子集不再能为当前游戏状态和/或可能未来的游戏状态呈现视频时,回复步骤890可以发生。如上文所述,通过与步骤860-885相似的步骤,能够完成回复步骤890,除了切换一般反向发生的情况之外。可以重复地执行步骤850-890的执行。这样,视频游戏能够在客户端侧和服务器侧模式之间多次切换。在一些实施例中,当视频游戏在两维模式和三维模式之间变化,或在一些其他的视频输出之间变化时,这个切换发生。
[0192]图9示出了根据本发明的多种实施例的用于传送游戏会话的方法。游戏会话从游戏服务器125的第一客户端传送到第二客户端(例如,从视频服务器系统120到客户端110B)。为了在同一游戏会话期间,以流模式和客户端模式两者进行计算机游戏,这些方法,可选地,由游戏服务器125执行。在图9中示出的方法能够允许在不要求游戏玩家终止第一游戏会话,并且人工登录到游戏服务器125以建立第二游戏会话的情况下改变模式。可替代地,通过为游戏玩家提供合适的登录界面以登录第二游戏会话,所述方法可以促进模式改变。与那些在图9中示出步骤相似的步骤能够被用于将游戏会话从客户端IlOB传送回视频服务器系统120。在图9中示出的步骤,可选地,以可替代的顺序执行。
[0193]在可选的建立会话步骤910中,建立游戏会话,以在游戏服务器125和第一客户端,例如,视频服务器系统120之间通信游戏命令和游戏状态信息。在本发明其他地方,更充分地描述建立游戏会话。在一些实施例中,为了建立游戏会话,游戏服务器125需要账户。如本发明其他地方所描述的,所述账户能够自动建立或由游戏玩家建立。建立的游戏会话包括识别第一客户端和游戏服务器125的地址。作为游戏会话一部分,游戏命令从第一客户端被发送到游戏服务器125,以及游戏状态信息从游戏服务器125被发送到第一客户端。在游戏会话已经建立的实施例中,建立会话步骤910是可选的。
[0194]在接收游戏命令步骤915,游戏服务器125从第一客户端接收游戏命令。例如,在一些实施例中,游戏服务器125从视频服务器系统120接收游戏命令。最初,这个游戏命令可以已经通过客户端IlOB被发送到视频服务器系统120。在视频服务器系统120,游戏命令通常被用于更新一份游戏状态,所述游戏状态被用于呈现提供给客户端IlOB视频流,和/或在被转发到游戏服务器125前,游戏命令被处理或否则被修改。游戏命令的接收是在游戏服务器125和视频服务器系统120之间建立的游戏会话一部分。这样,将接收到的游戏命令与这个特定游戏会话相关联。该关联,可选地,通过使用地址或其中接收游戏命令的数据包中的其他标识符进行。
[0195]在更新状态步骤920中,游戏服务器125使用从第一客户端接收的游戏命令更新游戏状态。更新的状态可以被存储在视频服务器系统120和/或游戏服务器125上。通常,通过使用存储在游戏服务器125上的游戏规则,执行更新。
[0196]在发送状态步骤925中,游戏服务器125将计算机游戏更新的游戏状态作为第一游戏状态从游戏服务器发送到第一客户端。例如,第一游戏状态可以被发送到视频服务器系统120。在一些实施例中,发送状态步骤925包括发送初始的第一游戏状态,以及随后随着时间发送第一游戏状态的更新。可替代地,发送状态步骤925可包括发送单个第一游戏状态到视频服务器系统120。
[0197]在接收切换命令步骤930中,游戏服务器125接收命令以将游戏会话从第一客户端切换到第二客户端。在客户端中的这个改变导致游戏进行的流模式和客户端模式之间的改变。通常,由切换逻辑180,例如,切换逻辑180A发送所述命令。接收到的命令将游戏服务器125置于准备接收以及处理执行切换所需要信息的状态中。响应于所述切换命令,游戏服务器125准备从第二客户端接收游戏命令,而不是或除了第一客户端,例如,从客户端IlOB而不是视频服务器系统120。第二客户端的例子包括客户端110 (例如,客户端IlOA或110B)。在接收切换命令步骤930中,游戏服务器125也准备发送状态更新到第二客户端,而不是或除了第一客户端。
[0198]在可选的认证步骤935中,在接收切换命令步骤930中接收的切换命令被认证。这个认证能够以各式各样的方式完成。例如,在一些实施例中,接收的切换命令被加密和/或包括认证代码,所述认证代码被配置以阻止游戏会话未授权的重新分配。在一些实施例中,游戏服务器125包括认证IP地址的列表,并且被配置以只接受来自于这个列表中IP地址的切换命令。从其接收切换命令的IP地址,可选地,通过使用握手程序被确认。在一个特定例子中,游戏服务器125被配置以从包括视频服务器系统120的IP(或MAC)地址的地址有限集,接受切换命令,并且不接受来自于不在这个有限集中地址的切换命令。认证步骤935的认证,可选地,包括解密密钥、或任何本领域中公知的多种消息认证方案的使用。
[0199]在接收地址步骤940中,游戏服务器125接收第二客户端的IP地址(或其他类型的网络地址)。例如,切换逻辑180A可以给游戏服务器125提供客户端IlOB的IP地址,以及可以指示游戏服务器125 (通过切换逻辑180B)直接发送游戏命令到客户端110B。可选地,接收地址步骤940也包括给客户端110提供游戏服务器125的地址。例如,切换逻辑180A和/或切换逻辑180B可以给客户端IlOB提供游戏服务器125的IP地址以及可以指示客户端110B(经由切换逻辑180C)直接发送游戏命令到游戏服务器125的IP地址,而不是或除了视频服务器系统120的IP地址。虽然能够使用其他的标识符,但是从视频服务器系统120接收的命令通常由视频服务器系统120的IP地址标识,以及从客户端IlOB接收的命令通常由客户端IlOB的IP地址标识。这样,提供给游戏服务器125的指令可选地包括客户端IlOB的IP地址(或其他类型的网络地址)。
[0200]在关联地址步骤945中,将第二客户端的地址与游戏会话相关联,这样,计算机游戏的第二状态将被发送到第二客户端,和/或这样,将从第二客户端接收的游戏命令与游戏会话相关联。在游戏服务器125,切换逻辑180B将接收到的第二客户端IP地址与特定的游戏会话相关联。例如,在游戏服务器125,切换逻辑180B接收客户端IlOB的IP地址并将它与请求的游戏会话相关联。随后,进一步的游戏状态被发送到客户端IlOB的IP地址,除了或代替,视频服务器系统120的IP地址。有时能够将游戏会话与视频服务器系统120的IP地址相关联,以及在另一些时候能够将同一游戏会话与客户端IlOB的IP地址相关联。可选地,将这个游戏会话与两个IP地址相关联一段时间。IP地址和游戏会话之间的关联意思是指游戏会话使用该IP地址发送游戏状态和/或将接收到的游戏命令识别为那个游戏会话的游戏命令。
[0201]在可选的接收游戏命令步骤950中,从第二客户端接收游戏命令以及第二客户端的地址被用于将接收到的游戏命令标识为所述特定游戏会话的游戏命令。在接收游戏命令步骤950中接收的游戏命令是,可选地,与在接收游戏命令步骤915中接收的游戏命令同一类型的游戏命令。通过包括网络115的通信系统,游戏服务器125从客户端IlOB接收游戏命令。客户端110B,可选地,发送游戏命令到游戏服务器125的IP地址,而不是视频服务器系统120的IP地址。游戏服务器125从客户端IlOB的IP地址,而不是从视频服务系统的120IP地址,接收已经在关联地址步骤945中提供的游戏命令。游戏服务器125使用客户端IlOB的IP地址以将接收的游戏命令与游戏玩家的游戏会话相关联。即使最初经由视频服务器系统120建立游戏会话和登录时,也可以进行接收到的游戏命令的这个关联。在可替代的实施例中,除了 IP地址,标识符被用于将接收到的游戏命令与游戏会话相关联。例如,会话标识符可以包括在游戏命令中。当游戏会话开始时或当游戏玩家登录时,能够建立这个会话标识符。
[0202]在在客户端模式下,通过视频服务器系统120,由游戏服务器125从客户端IlOB持续接收游戏命令的实施例中,接收游戏命令步骤950的一些方面是可选的。
[0203]在发送状态步骤955中,计算机游戏的第二状态被发送到第二客户端。游戏服务器125,可选地,使用在接收游戏命令步骤950中接收的游戏命令确定计算机游戏的第二状态。计算机游戏的第二状态,可选地,被发送到客户端IlOB的IP地址,而不是或除了视频服务器系统120的IP地址。
[0204]在可替代的实施例中,当游戏在客户端模式下进行时,视频服务器系统120被配置以作为代理服务器运转。在这些实施例中,通过视频服务器系统120,计算机游戏的第二状态被发送到客户端110B。作为代理服务器,视频服务器系统120仅仅将游戏命令和游戏状态转发到合适的目的地。对游戏服务器125来说,所述过程能够是透明的。例如,在游戏进行被切换到客户端模式后,游戏服务器125能够继续发送游戏状态到视频服务系统120,和/或从视频服务器系统120接收命令。同样地,客户端IlOB能够继续发送游戏命令到视频服务器系统120,和/或从视频服务器系统120接收游戏状态。然而,如本发明其他地方讨论的,在客户端模式下,在客户端IlOB上显示的大多数游戏视频,在客户端IlOB上被呈现。在这些实施例中,视频服务器系统120被配置以更改接收到的游戏命令和游戏状态的地址,以及将它们发送到合适的目的地。如果模式从客户端模式改变回流模式,视频服务器系统120再次开始产生和提供流视频,以及使用接收到的游戏命令更新用于呈现流视频的本地游戏状态的副本。
[0205]在上述多种例子中,第一客户端被描述为本地客户端(例如,视频服务器系统120),以及第二客户端被描述为远程客户端(例如,客户端110B)。然而,在一些实施例中,第一客户端是客户端110B,并且第二客户端是视频服务器系统120。这样,在图9中示出的切换能够从流模式到客户端模式、或从客户端模式到流模式被执行。视频服务器系统120,可选地,被配置以认证客户端IlOBdP /或确定是否客户端IlOB能够为特定的视频游戏在客户端模式下运行。
[0206]在一些实施例中,当从客户端模式切换到流模式时,在接收游戏命令步骤915中,游戏服务器125经由网络115,从客户端IlOB接收游戏命令。在发送状态步骤925中,游戏服务器125也经由网络115,将游戏状态发送到客户端110B。在接收切换命令步骤930中,游戏服务器125接收从计算机游戏的客户端模式切换到流模式的命令。在多个步骤,包括接收切换命令步骤930、接收地址步骤940、认证步骤935、以及关联地址步骤945期间,通信从客户端IlOB切换到视频服务器系统120。在可选的认证步骤935中,认证从客户端模式切换到流模式的命令。一旦切换到流模式,游戏服务器125就在接收游戏命令步骤950中,从视频服务器系统120接收游戏命令。可以基于接收到的游戏命令确定第二游戏状态。在发送状态步骤955中,游戏服务器125将第二游戏状态发送到视频服务器系统120。
[0207]在一些实施例中,当游戏会话在流模式和客户端模式之间来回再三切换时,在游戏服务器125和客户端110B、或游戏服务器125和视频服务器系统120之间的通信能够从视频服务器系统120到客户端110B,以及从客户端IlOB到视频服务器系统120来回切换。这样,在游戏会话期间,客户端IlOB能够再三地与视频服务器系统120交换角色。同样地,在游戏会话期间,视频服务器系统120能够再三地与作为游戏服务器125的客户端的客户端IlOB交换角色。
[0208]本发明具体地示出和/或描述了一些实施例。然而,应当理解,修改和变化被上述指导覆盖,并且在不背离本发明的精神和期望范围的情况下,在所附权利要求书的范围内。例如,除了游戏,本发明讨论的系统和方法能够应用于计算机程序。这些其他类型的计算机程序能够包括图形程序、电子表格、文字处理软件、数据库程序、会计程序、项目管理程序、视频编辑程序、图像编辑程序、网站开发程序、库存程序、电子邮件程序、文件管理程序、文档管理/查看程序、绘图/计算机辅助设计程序、展示程序、和/或类似的程序。虽然服务器侧模式和客户端侧模式作为单独的游戏传递模式在本发明讨论,但是在一些实施例中,能够将这些模式组和起来。例如,从视频服务器系统120展现给游戏玩家的部分视频可以是流的,而另一部分视频可以在客户端IlOB上产生。在游戏进行的不同模式下,流的视频对本地产生视频的部分和/或比例能够改变。例如,一些游戏事件可以包括比其他游戏事件多的流视频。
[0209]这里讨论的实施例只是用于说明本发明。由于参考此说明描述了本发明的这些实施例,本领域的技术人员可以理解所描述的方法和或特定结构的多种修改或调整。依赖本发明的指导并且使得这些指导领先于现有技术的所有这种修改、调整或变化被认为是在本发明的实质和范围内。因此,这些说明和附图不应认为是限制性的,本发明不应被理解为限于所说明的实施例。
[0210]本发明提及的计算系统能够包括集成电路、微处理器、个人计算机、服务器、分布式计算系统、通信设备、网络设备、或类似的设备,以及同一设备的多种组合。计算系统也可以包括一个或多个计算机可读介质包括易失性和/或非易失性存储器,例如,随机存储器(RAM)、动态随机存储器(DRAM)、静态随机存储器(SRAM)、磁性介质、光学介质、纳米介质、硬盘驱动器、压缩磁盘、数字通用光盘(DVD)、和/或被配置以存储模拟或数字信息其他设备,例如,在数据库中。上面提到的逻辑的多种例子能够包括硬件、固件、或存储在计算机可读介质上的软件、或它们的组合。如本发明所使用的计算机可读介质很明显不包括纸和载波。本发明提到的方法的计算机实现步骤可以包括一套存储在计算机可读介质上的指令,当执行所述指令时,使计算系统执行所述步骤。被编程以依照来自于程序软件的指令执行特定功能的计算系统,是为执行那些特定功能的特殊用途的计算系统。在执行那些特定功能的同时,由特殊用途的计算系统操作的数据至少电子地被保存在计算系统的缓存中,通过存储数据的每个改变,物理上将计算系统从一个状态改变到下一状态。
【权利要求】
1.本发明的多种实施例包括一种提供计算机游戏的方法,所述方法包括: 在视频服务器系统中,执行计算机游戏的游戏逻辑,所述游戏逻辑的执行使得基于游戏状态的视频流呈现; 通过通信网络,从视频服务器系统给远程客户端提供视频流;以及与视频流并行地,给客户端提供可执行游戏内容,所述可执行游戏内容被配置以基于游戏状态产生游戏视频。
2.本发明的多种实施例包括一种提供计算机游戏的方法,所述方法包括: 从客户端接收游戏命令; 从游戏服务器接收游戏状态; 在流模式下,在视频服务器系统中执行计算机游戏的游戏逻辑,游戏逻辑的执行使得基于游戏状态和游戏命令的视频流呈现; 在流模式下,通过通信网络,从视频服务器系统给远程客户端提供视频流; 从流模式切换到客户端模式,在所述客户端模式下,不再在视频服务器系统提供视频流,并且计算机游戏的主要视频在客户端上呈现; 在视频服务器系统,从客户端接收游戏命令以及,在客户端模式下,将游戏命令转发到游戏服务器;以及 从游戏服务器接收游戏状态以及,在客户端模式下,将游戏状态转发到客户端。
3.一种在客户端之间传送游戏会话的方法,所述方法包括: 在游戏服务器和第一客户端之间建立游戏会话; 从第一客户端接收游戏命令; 使用接收到的游戏命令更新计算机游戏的第一状态; 将更新的计算机游戏的第一状态从游戏服务器发送到第一客户端; 接收计算机游戏从流模式切换到客户端模式的命令; 接收第二客户端的地址; 将第二客户端的地址与游戏会话相关联,以使得计算机游戏的第二状态将被发送到第二客户端,和/或以使得将从第二客户端接收的游戏命令与游戏会话相关联; 接收游戏命令以及使用第二客户端的地址来将接收到的游戏命令与游戏会话相关联;以及 将计算机游戏的第二状态发送到第二客户端的地址。
4.一种提供计算机游戏的方法,所述方法包括: 在视频服务器上,在游戏执行的服务器侧模式下,执行游戏逻辑,以基于游戏状态呈现视频流; 通过通信网络,从视频服务器给客户端提供视频流; 响应于所述游戏状态,动态确定可执行游戏代码的多个部分的下载序列,所述可执行游戏代码被配置以基于游戏状态产生视频;以及 与视频流并行地,根据下载序列,给客户端提供部分可执行游戏代码。
5.一种提供计算机游戏的方法,所述方法包括: 在视频服务器上,执行游戏逻辑,游戏逻辑的执行使得基于游戏状态的视频流呈现; 通过通信网络,从视频服务器系统给客户端提供视频流;以及与视频流并行地,给客户端提供可执行游戏代码,所述可执行游戏代码被配置以基于游戏状态产生视频。
6.如权利要求1-4或5所述的方法,其中,所述接收到的游戏命令被用于在视频服务器系统中,在流模式下更新游戏状态,以及接收到的游戏状态不被用于在视频服务器中,在客户端模式下更新游戏状态。
7.如权利要求1-5或6所述的方法,进一步还包括认证从流模式切换到客户端模式的命令。
8.如权利要求1-6或7所述的方法,其中,所述视频服务器系统被配置以为多个不同的视频游戏提供视频流。
9.如权利要求1-7或8所述的方法,其中,所述游戏状态是在游戏服务器上维持的全局游戏状态的子集。
10.如权利要求1-8或9所述的方法,其中,所述通信网络包括因特网。
11.如权利要求1-9或10所述的方法,其中,所述视频流和所述可执行游戏内容通过不同的通信网络,被提供给客户端。
12.如权利要求1-10或11所述的方法,其中,所述不同的网络包括因特网和电话网络。
13.如权利要求1-11或12所述的方法,其中,所述不同的网络具有一些共有的分段。
14.如权利要求1-12或13所述的方法,其中,提供可执行游戏内容的速率依赖于通信网络的带宽,速率以字节/秒为单位,且通过所述通信网络提供视频服务器系统。
15.如权利要求1-13或14所述的方法,其中,提供可执行游戏内容的速率依赖于以最小质量等级提供视频流所需的带宽,速率以字节/秒为单位。
16.如权利要求1-14或15所述的方法,其中,从视频游戏服务器发送到客户端的数据包包括视频流的数据和可执行游戏内容的数据两者。
17.如权利要求1-15或16所述的方法,进一步还包括从流模式切换到客户端模式,在所述流模式下,视频流从视频服务器系统被提供到客户端,在所述客户端模式下,可执行游戏内容被用于在客户端上产生计算机游戏的视频。
18.如权利要求1-16或17所述的方法,其中,所述切换包括重新分配游戏会话以在游戏服务器和客户端之间运行,而不是或除了在游戏服务器和视频服务器系统之间。
19.如权利要求1-17或18所述的方法,其中,在一段时间中,视频既在客户端上产生又由客户端从视频服务器系统接收。
20.如权利要求1-18或19所述的方法,其中,切换发生在所有的可执行游戏内容被提供到客户端前。
21.如权利要求1-19或20所述的方法,其中,切换包括给游戏服务器提供客户端的IP地址和/或给客户端提供游戏服务器的IP地址。
22.如权利要求1-20或21所述的方法,其中,在流模式和客户端模式两种模式下,部分可执行游戏内容被下载到客户端。
23.如权利要求1-21或22所述的方法,进一步还包括: 在视频服务器系统从客户端接收游戏命令; 将接收到的游戏命令转发到游戏服务器;以及 从游戏服务器接收游戏状态,通过使用接收到的游戏命令,所述游戏状态已经被更新。
24.如权利要求1-22或23所述的方法,进一步还包括使用接收到的游戏命令来在客户端上更新游戏状态。
25.如权利要求1-23或24所述的方法,进一步还包括维持在客户端上最小质量等级的视频流显示的同时,确定可执行内容能够被下载到客户端的速率。
26.如权利要求1-24或25所述的方法,其中,可执行内容能够被下载到客户端的速率依赖于给客户端提供视频流的速率。
27.如权利要求1-25或26所述的方法,其中,可执行内容能够被下载到客户端的速率随时间变化。
28.如权利要求1-26或27所述的方法,其中,以小于或等于所述确定速率的速率,将可执行游戏内容提供给客户端。
29.如权利要求1-27或28所述的方法,其中,可执行游戏内容和视频流并行地被提供给客户端。
30.如权利要求1-28或29所述的方法,其中,进一步还包括响应于游戏状态,修改给客户端提供部分可执行游戏内容的顺序。
31.如权利要求1-29或30所述的方法,其中,顺序的修改依赖于到达第二游戏状态、第一游戏状态的概率。
32.如权利要求1-30或31所述的方法,进一步还包括确定可执行游戏内容的可执行子集已经被下载到客户端。
33.如权利要求1-31或32所述的方法,其中,所述可执行子集依赖于游戏的当前状态。
34.如权利要求1-32或33所述的方法,进一步还包括从视频服务器系统或游戏服务器给客户端提供游戏状态。
35.如权利要求1-33或34所述的方法,进一步还包括传送游戏会话,这样,游戏状态从游戏服务器被发送到客户端,而不是或除了从游戏服务器被发送到视频服务器系统。
36.如权利要求1-34或35所述的方法,进一步还包括传送游戏会话,以使得游戏服务器用以前在视频服务器系统和游戏服务器之间建立的游戏会话,分配从客户端接收的命令。
37.如权利要求1-35或36所述的方法,其中,所述游戏会话被自动地传送。
38.如权利要求1-36或37所述的方法,其中,传送游戏会话包括将指令发送到游戏服务器,所述游戏服务器被配置以使得游戏服务器改变与游戏会话相关联的IP地址。
39.如权利要求1-37或38所述的方法,进一步还包括在客户端上,开始可执行子集的执行,以及通过使用所述执行的子集和所述游戏状态产生游戏视频。
40.如权利要求1-38或39所述的方法,其中,所述可执行子集包括所有可执行游戏内容。
41.如权利要求1-39或40所述的方法,进一步还包括在可执行子集已经被提供给客户端后,终止从视频服务器系统到客户端的游戏视频的提供。
42.如权利要求1-40或41所述的方法,其中,在客户端产生的游戏视频和从视频服务器系统接收的游戏视频被显示在同一浏览器窗口中。
43.如权利要求1-41或42所述的方法,进一步还包括在可执行游戏内容另外的部分被下载到客户端的同时,在客户端上继续执行可执行子集。
44.如权利要求1-42或43所述的方法,进一步还包括从客户端模式回复到流模式。
45.如权利要求1-43或44所述的方法,其中,动态确定下载序列包括查询概率树数据库。
46.如权利要求1-44或45所述的方法,进一步还包括计算给客户端提供部分可执行游戏代码的下载速率,所述计算依赖于给客户端提供视频流的速率。
47.如权利要求1-45或46所述的方法,其中,计算下载速率包括监视到客户端的通信信道的带宽。
48.如权利要求1-46或47所述的方法,进一步还包括发起从游戏执行的服务器侧模式到游戏执行的客户端侧模式的切换,其中,游戏逻辑在客户端上执行以基于游戏状态呈现所述视频流。
49.如权利要求1-47或48所述的方法,进一步还包括在发起所述切换后,给客户端提供部分可执行游戏代码。
50.如权利要求1-48或49所述的方法,其中,根据所述下载序列在发起所述切换后执行,给客户端提供部分可执行游戏代码。
51.如权利要求1-49或50所述的方法,进一步还包括,在发起所述切换后,响应于游戏状态,动态确定下载序列。
52.如权利要求1-50或51所述的方法,进一步还包括从视频服务器或游戏服务器,给客户端提供视频流所基于的游戏状态的副本。
53.如权利要求1-51或52所述的方法,进一步还包括在客户端上执行可执行游戏代码。
54.如权利要求1-52或53所述的方法,其中,当只有可执行游戏代码的子集已经被下载到客户端时,在客户端上执行所述可执行游戏代码。
55.如权利要求1-53或54所述的方法,进一步还包括从在客户端上展现在视频服务器产生的视频流,切换到在客户端上展现由可执行游戏代码产生的视频。
56.如权利要求1-54或55所述的方法,进一步还包括提供请求到游戏服务器以将视频流所基于的游戏状态通信到客户端,而不是或除了给视频服务器提供游戏状态。
57.如权利要求1-55或56所述的方法,进一步还包括给游戏服务器提供客户端的IP地址。
58.如权利要求1-56或57所述的方法,进一步还包括在终止从视频服务器给客户端提供视频流后,继续给客户端提供部分可执行游戏代码。
59.一种视频服务器系统,包括: 视频源,被配置以给地理位置上远离视频源的第一客户端提供流游戏视频,所述流游戏视频在视频源以及基于视频游戏的状态产生;以及 切换逻辑,被配置以使视频服务器系统从流模式切换到客户端模式,所述流模式包括从视频源给第一客户端提供流视频,所述客户端模式包括在第一客户端产生视频游戏的视频。
60.—种游戏系统,包括: 视频源,被配置以给地理位置上远离视频源的第一客户端提供流视频,所述流视频响应于计算机程序当前状态在视频源产生;以及下载管理器,被配置以 响应于计算机程序当前状态,动态确定计算机程序可执行内容的多个部分的下载序列,以及 在流视频从视频源被提供给第一客户端的同时,根据所述下载序列,通过网络,从代码源下载部分可执行内容到第一客户端。
61.—种游戏系统,包括: 视频源,被配置以给地理位置上远离视频源的第一客户端提供流视频,所述流视频基于计算机程序的状态在视频源产生;以及 下载管理器,被配置以在流视频从视频源被提供给第一客户端的同时,通过网络,从代码源将计算机程序的可执行内容下载到第一客户端。
62.—种游戏服务器,包括: 输入端,被配置以从多个地理位置上的远程客户端接收游戏命令; 游戏引擎,被配置以基于接收到的游戏命令维持视频游戏的全局状态,以及给多个客户端的不同成员提供该视频游戏的全局状态的不同子集,每个所述子集被分别分配给多个客户端的特定成员; 切换逻辑,被配置以将全局状态的一个子集从多个客户端的第一成员重新分配到多个客户端的第二成员; 状态存储器,被配置以存储全局状态;以及 输出端,被配置以通 过因特网,给多个客户端提供全局状态的子集。
63.如权利要求59-61或62所述的系统,进一步还包括下载管理器,被配置以在流模式下,将流视频从视频源提供给第一客户端的同时,通过网络,从代码源将视频游戏的可执行内容下载到第一客户端。
64.如权利要求59-62或63所述的系统,其中,所述切换逻辑被配置以传送IP地址,以使得相对于客户端模式,游戏命令和游戏状态在流模式下被发送到不同位置。
65.如权利要求59-63或64所述的系统,其中,所述视频服务器系统被配置以在客户端模式下充当代理服务器,以及作为代理服务器,将游戏命令从第一客户端转发到游戏服务器,并且将游戏状态从游戏服务器转发到第一客户端。
66.如权利要求59-64或65所述的系统,其中,所述切换逻辑还被配置以将视频服务器系统从客户端模式切换到流模式。
67.如权利要求59-65或66所述的系统,其中,所述切换逻辑被配置以在维持同一游戏会话的同时,在流模式和客户端模式之间切换,其中,在所述游戏会话中,视频游戏在两个模式下播放。
68.如权利要求59-66或67所述的系统,其中,所述流游戏视频,在客户端模式下,不被从视频源提供给第一客户端。
69.如权利要求59-67或68所述的系统,其中,所述视频源被配置以通过使用图形处理单元生成流视频。
70.如权利要求59-68或69所述的系统,其中,所述计算机程序当前状态依赖于从第一客户端和/或第二客户端接收的命令。
71.如权利要求59-69或70所述的系统,其中,所述计算机程序是计算机游戏,以及流视频在来自于三维游戏环境的视频源处被呈现。
72.如权利要求59-70或71所述的系统,其中,所述下载管理器被配置以相对于给第一客户端提供可执行内容,给第一客户端提供流视频被给予更大的优先级。
73.如权利要求59-71或72所述的系统,其中,所述下载管理器被配置以改变流视频的特征,以使得有相当大的概率在被下载到第一客户端之前,在第一客户端上需要可执行内容的部分时,下载流视频的速率被减小。
74.如权利要求59-72或73所述的系统,其中,流视频的改变的特征是帧速率,或其中相当大的概率大于百分之1、2或5。
75.如权利要求59-73或74所述的系统,其中,所述下载管理器被配置以依赖于代码源和第一客户端之间通信信道的带宽的比特速率来提供可执行内容。
76.如权利要求59-74或75所述的系统,其中,所述比特速率也依赖于提供流视频的比特速率。
77.如权利要求59-75或76所述的系统,其中,所述下载管理器被配置以受限于提供流视频的速率的速率将可执行内容下载到第一客户端,提供所述流视频的速率满足在第一客户端上显示时能接受的流视频的最小质量。
78.如权利要求59-76或77所述的系统,其中,所述视频源包括下载管理器。
79.如权利要求59-77或78所述的系统,其中,所述下载管理器被配置以基于从计算机程序的当前状态到达计算机程序的其他状态概率的确定以及在那些状态中将需要哪些资源的了解,动态修改下 载序列。
80.如权利要求59-78或79所述的系统,其中,所述下载序列的动态修改能够发生在服务器侧模式或者客户端侧模式。
81.如权利要求59-79或80所述的系统,进一步还包括存储概率树数据库并且与下载管理器通信的计算机可读介质,其中所述下载管理器还被配置以基于计算机程序的当前状态,通过查询概率树数据库,确定计算机程序的其他状态的概率。
82.如权利要求59-80或81所述的系统,进一步还包括被配置以维持所述概率树数据库的统计引擎。
83.如权利要求59-81或82所述的系统,其中,流视频的帧和部分可执行内容在同一数据包中,被下载到第一客户端。
84.如权利要求59-82或83所述的系统,其中,所述视频源被配置以基于第一用户的视点产生第一流视频和基于第二用户的视点产生第二流视频,以及分别给第一客户端和第二客户端提供第一和第二流视频。
85.如权利要求59-83或84所述的系统,其中,所述计算机程序的状态依赖于从第一和第二客户端接收的命令。
86.如权利要求59-84或85所述的系统,其中,所述视频源被配置以通过使用图形处理单元生成流视频。
87.如权利要求59-85或86所述的系统,其中,所述图形处理单元被配置以并行地产生两个或两个以上视频流,以及所述视频源被配置以将这些视频流通信给不同的客户端。
88.如权利要求59-86或87所述的系统,其中,所述计算机程序的状态取决于从第一客户端接收的命令。
89.如权利要求59-87或88所述的系统,其中,所述计算机程序是计算机游戏,以及所述流视频在来自于三维游戏环境的视频源处被呈现。
90.如权利要求59-88或89所述的系统,其中,在流视频被提供给第一客户端的同时,所述计算机程序的状态被提供给第一客户端。
91.如权利要求59-89或90所述的系统,其中,所述计算机程序的状态依赖于从第一客户端接收的命令。
92.如权利要求59-90或91所述的系统,其中,所述下载管理器被配置以,相对于将可执行内容提供给第一客户端,给将流视频提供给第一客户端更大的优先级。
93.如权利要求59-91或92所述的系统,其中,所述下载管理器被配置以提供可执行内容,所述提供可执行内容的比特速率依赖于代码源和第一客户端之间通信信道的带宽,以及也依赖于流视频的数据量。
94.如权利要求59-92或93所述的系统,其中,所述下载管理器被配置以受限于提供流视频的速率的速率下载可执行内容到第一客户端,提供流视频的速率满足在第一客户端上显示的能够接受的流视频最小质量。
95.如权利要求59-93或94所述的系统,进一步还包括被配置以给第一客户端提供计算机程序状态的状态源。
96.如权利要求59-94或95所述的系统,其中,所述状态源还进一步被配置以更新存储在第一客户端上的计算机程序状态的副本。
97.如权利要求59-95或96所述的系统,其中,所述状态源还进一步被配置以基于从游戏服务器接收的数据,更新存储在状态源上的计算机程序状态的副本。
98.如权利要求59-96或97所述的系统,进一步还包括切换逻辑被配置以确定可执行内容的可执行子集被提供给第一客户端的时间。
99.如权利要求59-97或98所述的系统,其中,所述切换逻辑被配置以给第一客户端的用户提供通知,所述通知为将计算机程序的执行能够从视频源切换到第一客户端。
100.如权利要求59-98或99所述的系统,其中,所述通知被提供作为在流视频上的视频覆盖或在呈现流视频的同一浏览器窗口中提供。
101.如权利要求59-99或100所述的系统,其中,所述通知包括在流视频将被终止前,剩余的时间量。
102.如权利要求59-100或101所述的系统,其中,所述切换逻辑还被配置以在第一客户端上发起可执行子集的执行。
103.如权利要求59-101或102所述的系统,其中,在第一流视频从视频源被提供给第一客户端的同时,发起所述可执行内容在第一客户端上的执行。
104.如权利要求59-102或103所述的系统,其中,所述下载管理器被配置以在可执行子集的执行发起后,继续给客户端提供计算机程序的可执行内容。
105.如权利要求59-103或104所述的系统,其中,所述切换逻辑被配置以将计算机程序的执行从视频源切换到第一客户端。
106.如权利要求59-104或105所述的系统,其中,所述计算机程序包括视频游戏并且所述切换逻辑被配置以在不打断游戏会话的情况下,将计算机程序的执行从视频源切换到第一客户端。
107.如权利要求59-105或106所述的系统,进一步还包括切换逻辑,所述切换逻辑被配置以将在客户端上的可执行内容的执行与在视频源处的计算机程序的执行同步。
108.如权利要求59-106或107所述的系统,进一步还包括切换逻辑,所述切换逻辑被配置以在第一客户端上,发起可执行内容的执行。
109.如权利要求59-107或108所述的系统,进一步还包括切换逻辑,所述切换逻辑被配置以将第一客户端的IP地址提供给游戏服务器,所述视频源被配置以从游戏服务器接收计算机程序的状态。
110.如权利要求59-108或109所述的系统,其中,所述切换逻辑被配置以使得游戏服务器给第一客户端提供计算机程序状态的更新。
111.如权利要求59-109或110所述的系统,进一步还包括资格逻辑,所述资格逻辑被配置以确定第一客户端是否能够并行地接收在最小质量等级的可执行内容和流视频。
112.如权利要求59-110或111所述的服务器,其中,给客户端并行地提供流视频和可执行内容的总速率比通过其通信流视频的通信信道的带宽大。
113.如权利要求59-111或112所述的服务器,其中,将每个子集与特定的游戏会话相关联,以及子集之一的重新分配包括将游戏会话从多个客户端的第一成员重新分配到多个客户端的第二成员。
114.如权利要求59-112或113所述的服务器,其中,所述切换逻辑被配置,以使得重新分配的子集在一段时间并行地提供给多个客户端的第一和第二成员两者。
115.如权利要求59- 113或114所述的服务器,其中,所述切换逻辑还被配置以将同一游戏会话分配给多个客户端的第一和第二成员两者。
116.如权利要求59-114或115所述的服务器,其中,所述切换逻辑还被配置以将从多个客户端的第一和第二成员两者接收的游戏命令分配给同一游戏会话。
117.如权利要求59-115或116所述的服务器,其中,所述切换逻辑还被配置以从多个客户端的第一成员接收请求,所述请求为请求将分配给多个客户端的第一成员的全局状态的子集发送到多个客户端的第二成员。
118.如权利要求59-116或117所述的服务器,其中,所述请求包括多个客户端的第二成员的IP地址。
119.一种提供计算机游戏的方法,所述方法包括:在视频服务器系统或第一客户端上执行计算机游戏的游戏逻辑,游戏逻辑的执行使得基于游戏状态的视频流的呈现;通过通信网络,从视频服务器系统或第一客户端给远程第二客户端提供视频流;以及与视频流并行地,从第一客户端给第二客户端提供可执行游戏内容,所述可执行游戏内容被配置以基于所述游戏状态产生游戏视频。
120.如权利要求1-58或119所述的方法,进一步还包括确定第一客户端到第二客户端的距离。
121.如权利要求1_58、119或120所述的方法,进一步还包括测试或监视第一客户端和第二客户端之间的通信信道。
122.如权利要求1-58、119、120或121所述的方法,其中,进一步还包括通过使用在远离第一客户端和第二客户端两者的服务器上的下载管理器管理从第一客户端到第二客户端的可执行游戏内容的通信。
123.如权利要求1-58、119-121或122所述的方法,其中,所述游戏逻辑在第一客户端上执行。
124.如权利要求1-58、119-122或123所述的方法,其中,所述可执行游戏内容从多个远程客户端被提供到第二 客户端,所述远程客户端包括以端对端为基础的第一客户端。
【文档编号】A63F9/24GK103442774SQ201180047649
【公开日】2013年12月11日 申请日期:2011年9月13日 优先权日:2010年9月13日
【发明者】A·B·高尔特, R·F·A·佩雷拉, D·佩里 申请人:索尼电脑娱乐美国公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1