附加组件管理的制作方法

文档序号:18885479发布日期:2019-10-15 20:50阅读:180来源:国知局
附加组件管理的制作方法

相关申请的交叉引用

本申请要求2010年9月13日提交的申请序列号为61/382,470、标题为《add-onmanagement》的美国临时专利申请的优先权和权益。该申请涉及2010年6月29日提交的序列号为12/826,130,标题为《videogameoverlay》的美国专利申请,和2010年6月29日提交的序列号为12/826,489,标题为《voiceoverlay》的美国专利申请。上述所有共同拥有的专利申请的公开内容都通过引用被合并在此。

本发明涉及计算机系统领域,并且特别地涉及计算机程序的服务器端执行领域。



背景技术:

附加组件是一组计算指令,用于扩展计算机程序功能或在其他方面增强计算机程序。附加组件用于广泛种类的应用程序中。例如,adobe附加组件可以用来使微软文字处理软件能打印成.pdf文件,或使浏览器能查看.pdf文件。附加组件在在线视频游戏中是很受欢迎的。例如,著名的多玩家在线游戏有可用的数以百计的附加组件,其可以用来增强游戏玩法。这些附加组件通常是由第三方提供。用户从网站下载附加组件并将附加组件安装在用户的计算机适当的目录里从而将附加组件添加到计算机程序中。本文所使用的术语“附加组件”用于指代配置为扩展计算机程序功能的可选的计算指令,其中该附加组件专门为该计算机程序而开发。附加组件可能由第三方或由计算机程序的开发者开发。一些计算机程序配置为在特定目录查找附加组件。附加组件不同于于其他软件工具,如打印机驱动,因为它们被配置为增强一个特定的程序。附加组件有时被称为“插件”。

附加组件数据是附加组件中包括、产生或组织的数据。例如,在一个视频游戏中附加组件数据可能包括游戏中对象的位置,目录信息,购买和销售的记录,拍卖行数据,非玩家角色的特征,地图,历史信息,音频数据,事件定时信息,和/或类似物。

计算机程序通常包括计算指令或配置为用于在计算机程序和附加组件之间通信的应用程序接口(api)。例如,通常计算机程序被配置为在特定的目录查找附加组件。这个目录可以是存储计算机程序的目录的子目录。



技术实现要素:

本发明的一些实施例包括在在服务器上执行计算机程序并且将作为程序执行结果而生成的视频流提供到远程客户端的系统中使用附加组件的系统和方法。附加组件可安装在服务器或客户端上。如果附加组件安装在客户端并且计算机程序安装在服务器,那么提供应用程序编程接口(api)以使得计算机程序可以就像附加组件安装在计算机程序本地的服务器上一样运行。服务器上的api被配置为通过通信网络让附加组件和计算机程序之间通信信息通过。

如果附加组件安装在服务器上,计算机程序可以安装在客户端或地理上远离客户端的位置。本发明的各种实施例可包括,例如,被配置为远程安装附加组件的软件工具,被配置为提供执行附加组件的虚拟环境的计算指令;附加组件数据的存储器,开启和关闭附加组件,安全执行附加组件,维护准许附加组件列表;和/或类似物。

本发明的多个实施例包括游戏服务器系统,其包括视频源,被配置为使用游戏逻辑生成视频帧和将视频帧编码为视频流,视频流是基于视频游戏的游戏环境的,游戏逻辑通过附加组件来增强;i/o设备,被配置为将视频流通信到地理上远离的客户端和从客户端接收游戏命令;附加组件存储器,被配置为在视频游戏可访问的位置存储附加组件,和在附加组件可访问的位置存储附加组件的附加组件数据;附加组件管理器,被配置为创建被配置用于视频游戏使用附加组件的附加组件环境,将附加组件与用户帐户相关联,并将附加组件的附加组件数据与用户帐户相关联;以及处理器,被配置为执行游戏逻辑或附加组件管理器。

本发明的各种实施例包括一种系统,其包括视频源,被配置为使用游戏逻辑生成视频帧和将视频帧编码为视频流,视频流基于视频游戏的状态和从地理上远离的客户端接收到的游戏命令,游戏逻辑通过附加组件增强;i/o设备,被配置为将视频流传输到地理上远离的客户端和从客户端接收游戏命令;附加组件管理器,被配置为响应于接收到游戏逻辑的新版本,自动更新附加组件;以及处理器,被配置为执行游戏逻辑或附加组件管理器。

本发明的各种实施例包括一种系统,其包括安装在第一计算设备的游戏逻辑,并且其被配置为生成视频帧并在显示器上呈现视频帧;安装在第一计算设备的第一api滤波器,并且其被配置为在游戏逻辑和附加组件之间重定向命令,附加组件安装在地理上远离第一计算设备的第二计算设备并且被配置为增强游戏逻辑的功能;i/o设备,被配置为在第一计算设备和第二计算设备之间通信命令;以及处理器,被配置为执行游戏逻辑。

本发明的各种实施例包括执行附加组件的方法,该方法包括在被配置为提供视频流给客户端的游戏服务器系统上安装附加组件,视频流是游戏逻辑执行的结果,附加组件被配置为扩展该游戏逻辑的功能,客户端地理上远离该游戏服务器系统;执行游戏逻辑;根据游戏逻辑接收来自客户端的游戏命令;将接收到的游戏命令从游戏逻辑传递至附加组件;使用附加组件生成附加组件数据;并且在地理上远离客户端的位置存储附加组件数据,附加组件数据与客户端用户的账户相关联。

本发明的各种实施例包括安装附加组件的方法,该方法包括识别将安装的附加组件;建立被配置用于将被计算机程序访问的附加组件的附加组件环境,计算机程序使用客户端执行并且位于地理上远离客户端的服务器上;在附加组件环境中放置附加组件;将附加组件与客户端用户的账户相关联;识别用于附加组件生成的附加组件数据的存储器;以及将存储器或附加组件数据与账户相关联。

本发明的各种实施例包括自动更新附加组件的方法,该方法包括在视频源接收游戏逻辑的更新版本,视频源被配置为基于从地理上远离的客户端接收的游戏命令生成视频流并提供视频流给远程客户端;确定附加组件是用于增强游戏逻辑的功能;向第三方发送附加组件更新版本的请求,请求包括附加组件的标识和更新应被提供到的地址;通过计算网络接收附加组件更新版本,附加组件更新版本被配置为增强游戏逻辑的更新版本;以及在被配置用于将由游戏逻辑使用的附加组件的附加组件环境中自动安装附加组件。

附图说明

图1示出了根据本发明各种实施例的系统,其被配置为执行由一个或多个附加组件增强的计算机程序。

图2是根据本发明各种实施例的视频源实施例的框图,视频源被配置为服务于由附加组件增强的多个视频游戏。

图3示出了根据本发明各种实施例的附加组件管理器的进一步的细节。

图4示出了根据本发明各种实施例的客户端的进一步的细节。

图5示出了根据本发明各种实施例的安装和/或使用附加组件的方法。

图6示出了根据本发明各种实施例的自动更新附加组件的方法。

具体实施方式

在上述的共同拥有的专利申请中公开了一种系统,其中在服务器上执行计算机程序,并给一个地理上远离的客户端提供计算机程序输出的视频流。本发明的各种实施例提供了在这些系统使用附加组件的能力。附加组件管理器安装,执行,支持,或除这些之外还管理附加组件,附加组件管理器可以位于服务器,客户端或其他位置。例如,附加组件管理器可以用来在服务器适当的环境中安装附加组件,从而可以通过计算机程序的api访问附加组件。附加组件生成的附加组件数据和附加组件本身通常关联到特定的,客户端,用户帐户,化身(avatar),和/或类似物。在发明的其他实施例中,计算机程序而非附加组件被安装在客户端。

图1示出了根据本发明的各种实施例的一个游戏系统100,其被配置为执行由一个或多个附加组件增强的计算机程序。游戏系统100被配置为通过网络115提供视频流到一个或更多的客户端110。游戏系统100通常包括视频服务器系统120和可选的游戏服务器125。视频服务器系统120被配置为以最低限度的服务质量提供视频流给一个或多个客户端110。例如,视频服务器系统120可能会收到游戏命令,该命令改变视频游戏中的状态或视角,并以最小的延迟(latency)向客户端110提供反映这种状态的改变的更新的视频流。视频服务器系统120可配置为提供多种多样的可供选择的视频格式(包括还没有被定义的格式)的视频流。此外,视频流可能包括被配置为以多种多样的帧率呈现给用户的视频帧。尽管在本发明的替代实施例中包括更高或更低的帧率,但是典型的帧率为30帧每秒,60帧每秒和120帧每秒。在一些实施例中,视频服务器系统120被配置为提供三维视频数据,例如根据分开人眼之间的距离的视角呈现的匹配的视频流。

客户端110,在这里分别指110a,110b等,可能包括终端、个人计算机、游戏控制台、平板电脑、电话、电视机、机顶盒、自助服务终端、无线设备、数字键盘、独立设备、手持游戏设备和/或类似物。通常,客户端110被配置为接收编码的视频流,解码视频流,并且将生成的视频呈现给用户,例如,游戏的玩家。接收编码视频流和/或解码视频流的过程可选地包括在客户端接收缓冲区中存储若干单独的视频帧。视频流可在客户端110集成的显示器或分离的设备如监视器或电视上呈现给用户。客户端110可选地被配置为支持一个以上的游戏玩家。例如,游戏控制台可被配置为支持两个,三个,四个或更多的玩家同时在线。这些玩家的每个可能会收到单独的视频流,或单个视频流可包括专门为每个玩家产生的帧的区域,例如基于每个玩家视角而产生的。客户端110可选地是地理上分散的。游戏系统100包括的客户数量可能变化很大,从一个或两个到数千、数万,或者更多。在此使用的术语“游戏玩家”用于指的是玩游戏的人,术语“游戏设备”用于指的是用于玩游戏的设备。

客户端110被配置为通过网络115接收视频流。网络115可以是计算设备之间的任何类型的通信网络,包括电话网络、英特网、无线网络、电力线网络、局域网、广域网、专用网、和/或类似网络。网络115明确不包括完全在计算设备中的通信信道,如主板总线。在典型的实施例中,视频流通过标准协议如tcp/ip或udp/ip通信。替代性地,视频流通过专用标准通信。

客户110典型的例子是个人计算机,其包括处理器、非易失性存储器、显示器、解码逻辑,网络通信能力和输入设备。解码逻辑可能包括硬件、固件和/或存储在计算机可读介质上的软件。解码(编码)视频流的系统是本领域众所周知的并随着使用的特定编码方案的不同而变化。

客户端110可能,但是不必然需要,进一步包括被配置为修改接收到的视频的系统。例如,客户端可被配置为执行进一步的呈现,在另一个视频图像上叠加一个视频图像、裁切视频图像和/或类似。客户端110可被配置为接收各种类型的视频帧,如i帧、p帧和b帧,以及将这些帧处理成图像以显示给用户。在一些实施例中,客户端110的一个成员被配置为在视频流上执行进一步的呈现,阴影(shading),3-d转换,或者类似操作。客户端110的一个成员可选地被配置为接收超过一个的音频或视频流。客户端110的输入设备可能包括,例如,键盘,操纵杆,定点设备,力反馈设备,运动和/或位置传感设备,鼠标,触摸屏,神经接口,摄像机(camera),有待开发的输入设备,和/或类似物。

客户端110收到的视频流(和可选的音频流)是由视频服务器系统120生成和提供的。和本文其他地方进一步描述的一样,该视频流包括视频帧(以及音频流包括音频帧)。视频帧被配置为(例如:它们包括在适当的数据结构中的像素信息)对显示给用户的图像提供有意义的贡献。有意义的贡献是游戏玩家很容易观察到的贡献。在此使用的术语“视频帧”是用于指包括被配置为贡献(例如,产生)显示给用户的图像的主要信息的帧。本文大部分关于“视频帧”的教导也可以应用到““音频帧”。客户端110可被配置为在同一时间接收超过一个视频流。例如,客户端110b可被配置为接收一对匹配的视频流,它们被配置为当视频流之一呈现给一只眼睛,而视频流的另一个呈现给另一只眼睛时,形成三维图像。

客户端110通常被配置为接收来自用户的输入。这些输入可包括被配置为改变视频游戏状态或其他影响游戏玩法的游戏命令。游戏命令可以使用输入设备接收和/或由客户端110上执行的计算指令自动生成。接收到的游戏命令通过网络115从客户端110通信至视频服务器系统120和/或游戏服务器125。例如,在一些实施例中,游戏命令通过视频服务器系统120通信到游戏服务器125。在一些实施例中,游戏命令单独的副本从客户端110通信到游戏服务器125和视频服务器系统120。游戏命令的通信可选地取决于命令的标识。游戏命令可选地通过不同于用于提供音频或视频流到客户端110a的路径或通信信道从客户端110a通信。

在各种实施例中,客户端110被配置为在每个客户端100和视频服务器系统120之间,或者在客户端110的不同成员之间通信附加组件数据。例如,使客户端之间能直接语音通信的附加组件可以包括客户端之间的音频数据通信。增强服务器侧计算机程序的功能的附加组件数据可存储在一个客户端110中以供服务器侧附加组件使用或供客户端侧的附加组件使用。附加组件数据也可存储在视频服务器系统120或附加组件服务器165上,并由位于一个客户端110、视频服务器系统120或附加组件服务器165上的附加组件使用。

游戏服务器125可选地是由不同于视频服务器系统120的实体运行。例如,游戏服务器125可能由多玩家游戏的发行商运行。在这个例子中,视频服务器系统120可选地被游戏服务器125视为客户端,并且可选地被配置为从游戏服务器125的角度看是执行现有技术游戏引擎的现有技术客户端。视频服务器系统120和游戏服务器125之间的通信可以通过网络115发生。这样,游戏服务器125可以是现有技术的多玩家游戏服务器,其发送游戏状态信息给多个客户端,其中一个客户端是视频服务器系统120。视频服务器系统120可被配置为同时与游戏服务器125的多个实例通信。例如,视频服务器系统120可以被配置为提供多个不同的视频游戏给不同的用户。这些不同的视频游戏的每个可由不同的游戏服务器125支持和/或由不同的实体发行。在一些实施例中,视频服务器系统120的几个地理上分布式的实例被配置为提供游戏视频给多个不同的用户。视频服务器系统120的这些实例的每一个可与游戏服务器125的相同实例通信。视频服务器系统120和一个或多个游戏服务器125之间的通信可选地通过专用通信信道发生。例如,视频服务器系统120可能通过高带宽信道连接到游戏服务器125,该高带宽信道专用于这两个系统之间的通信。

视频服务器系统120包括至少一个视频源130,i/o设备145,处理器150,非临时性存储器155。视频服务器系统120可能由一个计算设备组成或在多个计算设备中分布。这些计算设备可选地通过通信系统(如局域网)连接。

视频源130被配置为提供视频流,例如:形成电影的流媒体视频或一系列的视频帧。在一些实施例中,视频源130也被配置为提供音频流。在一些实施例中,视频源130包括视频游戏引擎和呈现逻辑。视频游戏引擎被配置为从玩家接收游戏命令和基于接收到的命令维护视频游戏的状态的副本。游戏状态包括游戏环境中对象的位置,以及通常地包括视角。游戏状态也可能包括对象的属性、图像、颜色和/或纹理。游戏状态通常基于游戏规则以及游戏命令(如前进,转弯,攻击,设置焦点,交互,使用,和/或类似)进行维护。游戏引擎的一部分可选地放置在游戏服务器125中。游戏服务器125可基于从使用地理上分散的客户端的多个玩家接收的游戏命令维护游戏状态的副本。在这些情况下,游戏状态由游戏服务器125提供至视频源130,其中存储有游戏状态的副本并执行呈现。游戏服务器125可通过网络115直接从客户端110接收游戏命令,和/或可通过视频服务器系统120接收游戏命令。

视频源130通常包括呈现逻辑,例如:硬件、固件和/或存储在计算机可读介质例如存储器155上的软件。呈现逻辑被配置为基于游戏状态创建视频流的视频帧。全部或部分呈现逻辑可选地被放置在图形处理单元(gpu)中。呈现逻辑通常包括处理级,被配置为用于基于游戏状态和视角确定对象之间的三维空间关系和/或应用适当的纹理等。呈现逻辑产生原始视频,其随后通常在通信给客户端110之前编码。例如,原始视频可根据adobe标准、.wav、h.264、h.263、on2、vp6、vc-1、wma、huffyuv、lagarith、mpg-x.xvid.ffmpeg、x264、vp6-8、realvideo、mp3,或类似格式编码。编码过程产生视频流,可选地将其打包以传递给远程设备上的解码器。视频流以帧大小和帧率为特征。尽管可使用任何其他的帧大小,但是典型的帧大小包括800×600、1280×720(例如720p)、1024×768。帧率是每秒视频帧的数量。视频流可包括不同类型的视频帧。例如,h.264标准包括“p”帧和“i”帧。i帧包括刷新显示设备上所有宏块/像素的信息,而p帧包括刷新其子集的信息。p帧的数据大小通常比i帧小。此处使用的术语“帧大小”意思是指一帧内的像素的数目。术语“帧数据大小”用于指存储帧所需要的字节数。

在替代实施例中,视频源130包括视频记录设备,如摄像机。摄像机可以用来产生延迟的或者实时的视频,其可以包括在电脑游戏的视频流中。由此产生的视频流,可选地包括呈现的图像和使用照相机或视频摄像机记录的图像两者。视频源130也可能包括被配置为存储将被包含在视频流中的先前记录的视频的存储设备。视频源130可能还包括被配置为检测对象(例如,人)的运动或位置的运动或位置传感设备,以及被配置为确定游戏状态或产生基于所检测的运动和/或位置的视频的逻辑。

视频源130可选地被配置为提供被配置为放置在其他视频上的叠加。例如,这些叠加可能包括命令界面、登录说明、从另一个游戏玩家的视角呈现的视频帧、给游戏玩家的消息、其他游戏玩家的图像、其他游戏玩家的视频馈送(如:网络摄像头视频)。在客户端110a包括触摸屏界面的实施例中,叠加可包括虚拟键盘,操纵杆,触摸板,和/或类似物。在叠加的一个示例中,玩家的声音叠加在音频流上。视频源130可选地进一步包括一个或多个音频源。

在实施例中,其中视频服务器系统120被配置为基于来自多于一个玩家的输入维持游戏状态,每个玩家可以有不同的包括观看位置和方向的视角。视频源130可选地被配置为向每个玩家基于他们的视角提供单独的视频流。此外,视频源130可被配置为向每个客户端110提供不同的帧大小,帧数据大小和/或编码。视频源130可选地被配置为提供3-d视频。

i/o设备145被配置为用于视频服务器系统120发送和/或接收信息,如视频、命令、附加组件、附加组件数据、信息请求、游戏状态、客户端标识、玩家标识、游戏命令、安全信息、音频数据和/或类似物。i/o设备145通常包括通信硬件,如网卡或调制解调器。i/o设备145被配置为与游戏服务器125,网络115,和/或客户端110通信。i/o设备145被配置为从多于一个客户端110接收信息。i/o设备145可选地被配置为使用标准(如tcp或udp)将信息接收为数据包。

处理器150被配置为执行被包括在本文讨论的视频服务器系统120的各种组件内的逻辑(例如,软件)。例如,可用软件指令给处理器150编程以执行视频源130,游戏服务器125,和/或附加组件管理器160的功能。视频服务器系统120可选地包括处理器150的多于一个的实例。也可用软件指令给处理器150编程以执行视频服务器系统120接收到的命令,或协调本文讨论的游戏系统100的各种元件的运行。处理器150可包括一个或多个硬件设备。处理器150是电子处理器。

存储器155包括非临时性模拟和/或数字存储设备。例如,存储155可包括模拟存储设备,被配置为存储视频帧。存储器155可包括计算机可读数字存储器,例如硬盘,光驱,或固态存储器。存储器115被配置为(例如,通过合适的数据结构或文件系统的方式)存储视频帧、人工帧(artificialframe)、包括视频帧和人工帧的视频流、音频帧、音频流、附加组件、附加组件数据和/或类似物。存储器155可选地分布在多个设备中。在一些实施例中,存储器155被配置为存储本文别处讨论的视频源130的软件组件。这些组件可能以需要时方便被提供的格式存储。

视频服务器系统120可选地进一步包括附加组件管理器160。附加组件管理器160被配置为便于使用附加组件来增强视频服务器系统120和/或客户端110上的计算机程序。例如,在一些实施例中,附加组件管理器160被配置为增强视频源130中的游戏程序。在一些实施例中,附加组件管理器160被配置为增强客户端110中的游戏程序。

可由附加组件管理器160执行的任务,包括但不限于,安装附加组件,更新附加组件,执行附加组件,存储附加组件数据,以及通信附加组件数据。在一些实施例中,附加组件管理器160包括被配置为用于重定向附加组件和相关联的计算机程序之间的通信的计算指令。附加组件管理器160可重定向来自计算机程序的,最初指向与计算机程序相关的特定位置的消息到可供选择的位置。例如,如果包括在视频源130中的计算机程序被配置为访问与计算机程序相关的特定目录中的附加组件和/或附加组件数据,附加组件管理器160可被配置为重定向那个访问到视频服务器系统120内的不同位置,到客户端110之一或到单独的附加组件服务器165。在其中计算机程序被配置为访问附加组件的特定目录可能是在其中执行计算机程序的目录的子目录。访问被重定向到的位置可选地是虚拟环境。另外,如果计算机程序在客户端110b中,并且被配置为访问客户端110b的特定目录内的附加组件,那么附加组件管理器可被配置成重定向这个访问至视频服务器系统120和/或附加组件服务器165内的位置。这样,客户端110b上的附加组件可用来增强视频服务器系统120上的计算机程序,反之亦然。同样,附加组件服务器165上的附加组件可用来增强客户端110或视频服务器系统120上的计算机程序。虚拟环境是在其中的某个位置或物理设备,如存储位置或路径,使用软件模拟的环境。

附加组件管理器160包括硬件、固件和/或存储在计算机可读介质上的软件。全部或部分附加组件管理器160可选地被放置在与视频服务器系统120一个或多个其他元件分离的计算设备上。例如,所有或部分附加组件管理器160可选地被放置在客户端110,附加组件服务器165,或者游戏系统100内的一些其他的位置上。附加组件管理器160进一步的细节在本文其他地方讨论。

可选的附加组件服务器165是被配置为存储和/或执行一个或多个附加组件的系统。附加组件服务器165也可以用来存储附加组件数据。附加组件服务器165和视频服务器系统120和/或客户端110之间的通信可直接或通过网络115发生。附加组件服务器165可选地由附加组件的发行商或开发者管理。在一些实施例中,来自计算机程序的通信信息被从接近计算机程序的位置重定向到附加组件服务器165的位置。例如,对附加组件数据或可执行的附加组件的访问可能从客户端110b或视频服务器系统120重定向到附加组件服务器165。游戏系统100可包含多于一个视频服务器系统120和/或多于一个附加组件服务器165。

附加组件服务器165包括硬件、固件和/或存储在计算机可读介质上的软件。例如,在一些实施例中,附加组件服务器165包括计算设备、数字存储器、电子处理器和i/o设备。数字存储器可包括附加组件的可执行代码,附加组件数据,图像,全部或部分附加组件管理器160,被配置为管理附加组件与游戏系统100其他元件通信的计算指令,和/或类似物。

图2是根据本发明的各种实施例的视频源130的实施例的框图,视频源130被配置为服务于附加组件增强的多个视频游戏。多个视频游戏可以包括相同视频游戏的多个实例和/或不同视频游戏的实例。视频游戏可选地为多玩家游戏。例如,一个或更多的视频游戏的游戏状态可由游戏服务器125一个或多个实例维护,每个都基于从多个客户端接收到的输入。图2所示的视频源130的元素(element)可选地使用处理器150执行。

使用游戏逻辑210不同的实例执行视频游戏,游戏逻辑210分别标记为210a,210b,210c等。游戏逻辑210被配置为使用游戏状态来确定可以呈现成被配置为展示给游戏玩家的视频流的游戏环境。游戏环境是二维或三维虚拟环境,包括游戏中的对象,化身,对象位置,他们的形状,纹理和他们之间的空间关系以及类似物。游戏环境可包括顶点数据,变换数据和纹理数据,和/或等等。

游戏环境的呈现通常是基于于特定的游戏玩家相关联的一个或多个视角。这些视角可以大大不同,比如顶视图和前视图。或者,视角可以来自相距大约人瞳孔之间的距离的不同位置,并配置为创建3d图像。视频源130可能包括超过1、2、3、5、7、15或31个游戏逻辑210的实例。游戏逻辑210可选地是游戏服务器125的客户端并且可配置为通过网络115与游戏服务器125通信。

游戏逻辑210被配置为从一个或多个客户端110接收游戏命令并且根据一组游戏规则处理接收到的命令。这些规则包括,例如,化身如何与其他化身或游戏对象交互、化身移动、游戏实例管理、和/或类似物。游戏逻辑210可选地也被配置为基于游戏中的事件产生音频数据。音频数据可能代表枪响,飞溅,引擎,语音,飞翔,下雨,音乐,或者其他可能发生在游戏中的任何声音。例如,某个事件,比如一个物体撞击另一个可能导致代表相关声音的音频数据。游戏逻辑210包括硬件、固件和/或存储在计算机可读介质上的软件。

游戏逻辑210的每个实例都可设置在单独的计算设备上,或者游戏逻辑210的几个实例可以设置在同一个计算设备上,或者游戏逻辑210的单个实例可以设置在所有的多个计算设备上。游戏逻辑210的实例可以根据用户目前正在体验的游戏环境的需求动态地更改所使用的计算设备的数量和/或标识。设置在相同计算设备上的游戏逻辑210的实例可选地在单独的虚拟机或虚拟i/o壳(virtuali/oshell)内执行。在一些实施例中,游戏逻辑210的不同实例被配置为直接互相通信游戏命令和/或游戏状态信息,例如,不需要通过游戏服务器125通信。

游戏逻辑210通常在操作系统(os)215的顶部执行。操作系统215可包括windowstm,linux,unix,macostm,solaristm和/或等等。虚拟机平台可运行在操作系统215和游戏逻辑210之间。虚拟机平台可以包括商业系统,如esx,hyper-v和/或类似物。在这些实施例中,一个或多个游戏逻辑210可在虚拟机内执行。游戏逻辑210的多个实例可在操作系统215的相同实例上执行。例如,图2示出了游戏逻辑210a和游戏逻辑210b都在相同的操作系统215上执行。在相同操作系统215上执行的游戏逻辑210的实例可能会,也可能不会,被配置为玩相同的视频游戏。例如,游戏逻辑210a、210b和210c可能都是魔兽世界客户端,或可能分别是的客户端。

在一些实施例中,由游戏逻辑210确定的游戏环境被传递给可选的虚拟3d视频驱动220。虚拟3d视频驱动220被配置为从游戏逻辑210的角度看起来像是控制图形处理单元的非虚拟3d视频驱动。游戏逻辑210的每一个实例可能关联自己的虚拟3d视频驱动220的实例,或虚拟3d视频驱动220可由游戏逻辑210两个或多个实例共享。在一些实施例中,由每个游戏逻辑210确定的游戏音频被传递到可选虚拟音频驱动285。游戏音频包括被配置为作为音频流的部分展现给游戏玩家的声音数据。游戏音频可由游戏规则引起,例如,开枪射击应该导致砰砰声,或可能从其他来源,如音乐声带,客户端110的成员,麦克风,和/或等等来接收。

在替代实施例中,游戏逻辑210被配置为包括如本文讨论的虚拟3d视频驱动220和/或虚拟音频驱动285的功能。在这些实施例中,虚拟3d视频驱动220和/或虚拟音频驱动285不是必需的。

虚拟3d视频驱动220进一步被配置为将接收到的游戏环境传递到(非虚拟)3d驱动230。可选地,将游戏环境传送至3d驱动230由虚拟3d视频驱动220的各种实例协调。例如,可如此协调传送,从而使得3d驱动230一次只从一个或最低数量的虚拟3d视频驱动220接收游戏环境。在典型的实施例中,配置每个虚拟3d视频驱动220,以使得它们对3d驱动230而言看起来像是单独的进程(process)和单独的视频数据源。因此,3d驱动230被配置为对哪个视频数据在呈现后导致哪个视频帧进行跟踪。

3d驱动230接收的视频数据被传递给图形处理单元(gpu)235以呈现为原始视频帧。图形处理单元235可选地用于并行呈现多于一个视频流。例如,图形处理单元235可并行地基于从游戏逻辑210a收到的视频数据生成第一视频流,基于从游戏逻辑210b收到的视频数据生成第二视频流,基于从游戏逻辑210c收到的视频数据生成第三视频流等等。并行产生视频流包括同时生成这些流。然而,并行产生视频流可能,但不一定,包括同时在图形处理单元235内处理每个帧。例如,在一些实施例中,3d驱动230替代地传递游戏逻辑210各种成员产生的视频数据到图形处理单元235。游戏逻辑210a生成的数据被用来制作视频帧,并且随后游戏逻辑210b生成的数据被用来制作视频帧等。在这种情况下,视频流并行产生而单个帧串行产生。替代地,多于一个的视频帧可同时在图形处理单元235内产生。在这种情况下,图形处理单元235的第一部分用于生成一帧,而图形处理单元235的第二部分用于生成第二帧,第一和第二帧源自不同的游戏逻辑210产生的视频数据。在一些实施例中,在同一时间,一组图形计算核心用于产生第一帧而第二组图形计算核心用于产生第二帧。生成的视频帧被传回3d驱动230的控制部。

虚拟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内特定的存储器位置,并被配置为从那些位置获取视频数据。

在其他实施例中,虚拟3d驱动220被配置为基于定时管理视频数据到共享存储器240的转移。在这些实施例中,每个虚拟3d驱动220管理的转移都是同步的,并且虚拟3d驱动220在视频dep245的数据在共享存储器240中时会通知每个视频dep245。一旦被通知的视频dep245成员获取这个数据,在虚拟3d视频驱动220的控制下,dep的另一个成员的数据从3d驱动230转移到共享存储器240。在这些情况下可以基于时间表从本地gpu存储器将像素读回至共享存储器240。此处使用的术语“同步”和“同步的”意思是指两个事件通过时间表、定时信号、时间延迟、或一个事件直到另一事件已满足条件(例如,已完成)才开始,而在时间上相关联。例如,虚拟3d驱动220可同步运行,从而使得一旦图形处理单元235已完成来自第二虚拟3d驱动220的游戏环境的呈现,就从第一虚拟3d驱动220提供游戏环境至3d驱动230。同步的定时可选地选择为最佳使用图形处理单元235。

作为虚拟3d视频驱动220的管理结果,多个视频流可存储在共享存储器240中而没有混淆哪些帧属于哪个视频流。共享存储器240可选地配置为存储音频和视频数据。音频数据可以用视频数据相关讨论中的类似方式存储和/或管理。

虚拟音频驱动285可选地是游戏逻辑210和os215之间的虚拟i/o壳的一部分。它们被配置为从游戏逻辑210的角度看像是作为音频驱动并且将其从游戏逻辑210接收的任何音频数据传递给音频dep270之一。例如,在一些实施例中,与游戏逻辑210a相关联的虚拟音频驱动285被配置为发送音频数据给音频dep270a,并且与游戏逻辑210b相关联的虚拟音频驱动285被配置为发送音频数据给音频dep270b等。

一个或多个游戏逻辑210可选地每个都与附加组件环境287相关联。附加组件环境287包括硬件、固件和/或存储在计算机可读介质上的软件,并被配置为用于相关联的游戏逻辑210访问附加组件和/或附加组件数据。例如,在一些实施例中,附加组件环境287包括目录结构,被配置为存储附加组件和/或附加组件数据。具体的目录结构可以取决于游戏逻辑210a或210b的标识。例如,如果游戏逻辑210a被配置为在称作“附加组件”的子目录下寻找附加组件和在附加组件目录的子目录下寻找附加组件数据,那么附加组件环境287可包括这些子目录或这些子目录的虚拟表示。通常,附加组件环境287这样配置,以使得游戏逻辑210a可如同附加组件本地安装在游戏逻辑210a一样运行,例如在和游戏逻辑210a相同的目录结构或相同的本地文件系统内。甚至当游戏逻辑210和相关联的附加组件安装在通过网络115(如因特网)耦合的单独的计算设备上时,其仍然允许使用被配置为一起安装在同一个计算设备上的游戏逻辑210a和附加组件的实例。

在一些实施例中,附加组件环境287包括计算指令,该计算指令被配置为重定向游戏逻辑210和存储在客户端110中的一个上、附加组件服务器165和/或视频服务器系统120内其他位置的附加组件(和附加组件数据)之间的通信。例如,附加组件环境287可包括通过游戏逻辑210的api发送和接收消息和重定向这些消息的计算指令。附加组件环境287可选地包括过滤器,该过滤器被配置为来确定来自api的哪些消息应该重定向以及按照需要重定向特定信息到不同的位置。一个类似的过滤器可包含在附加组件本地。这个过滤器也可以被视为附加组件环境287的一部分并且被配置为从附加组件接收消息(如数据或命令)并将这些消息导向相关联的游戏逻辑210的成员。例如,当附加组件响应来自游戏逻辑210a的请求或命令时,请求或命令的响应被重定向回游戏逻辑210a。发生在两个方向的任意一个方向上的重定向都可包括通过网络115进行的数据包通信。附加组件环境287通常由部分的附加组件管理器160产生或包括部分的附加组件管理器160。

共享存储器240包括随机存取存储器(ram)或类似的配置为用于高效的视频数据读写的存储器。共享存储器240被配置为为多个不同的视频dep245存储视频数据。用于不同视频dep245的视频数据可选地同时存储在共享存储器240中。共享存储器240可能由单个硬件设备组成或可能包括多个设备。

视频dep245是动态分配编码流水线,其每个都被配置为使用图形处理单元235编码呈现的视频数据。视频dep245的每个成员都被配置为编码成提供给视频dep245时指定的视频格式。这个格式的指定通常是基于客户端110之一的需要和/或视频服务器系统120和客户端110之间的通信路径的能力。视频dep245可选地响应来自一个客户端110的请求被动态提供。例如,当客户端110a连接视频服务器系统120并且发送视频流请求时,可提供视频dep245,以包括特别选择以满足客户端110a需求的元件,例如编码器。正如文中其他地方所讨论的,视频dep245的成员可选地被配置为使用不止一个编码方案。

视频dep245每个都包括抓取器(grabber)247,被配置为抓取来自共享存储器240的视频数据并转移这些视频数据到视频dep245的存储器。抓取器247可选地受虚拟3d视频驱动220的成员控制。例如,在各种实施例中,抓取器247由虚拟3d驱动220的成员控制以从共享存储器240内的特定位置和/或在与视频数据至视频dep245其他成员的转移同步的特定时间抓取视频数据。

视频dep245每个都可选地包括叠加逻辑290,该叠加逻辑被配置为在视频数据上叠加一个或多个视频图像,例如,图形处理单元235生成的帧。叠加是将要放置在第二图像上的第一图像或添加到另一个声音之上的声音。叠加可应用变化的程度的透明度。例如,第一图像可以不透明的,因此,完全隐藏了第二图像被覆盖的部分,或第一图像可以部分透明,在这种情况下,第二个图像在第一图像下仍然某种程度的可见。叠加可覆盖所有或部分底层图像。例如,叠加可被配置为覆盖较大的区域内的特定像素。在这种情况下,叠加被映射成客户端110之一的显示器上的像素或被映射成图形处理单元235生成的图像内的像素。映射可以以不同的方式完成。例如,叠加左下部分的像素可能会被分配给图形处理单元235生成的视频帧的特定像素。在一些实施例中,叠加逻辑290被配置为在应用叠加前调整叠加的大小。叠加逻辑290可选地位于视频dep245a内的其他位置。例如,在预处理器250之后。

叠加可包括各种各样的像素/视频图像。例如,叠加可包括通过互联网收到的游戏玩家的实时或静态图像,运动(或其他)事件的实时或静态图像,输入控制(例如,“a”、“b”、“tab”、“回车”、“空格键”、“功能键”、“箭头”,和/或其他按键或输入设备)的图像,地图,文本和/或类似物。叠加在尺寸和形状方面的差异可以很大。在某些情况下,叠加是呈现3d游戏环境的结果。在图像上可以放置多于一个叠加。这些叠加可以是重叠的或分离的。叠加可选地以编码格式接收并在应用前先解码。

叠加的显示和内容可选地响应于收到的游戏命令,一个或多个的游戏玩家的身份,帐户类型,将要玩的游戏的特性,从先前或实时运动事件或真实世界游戏中采集的视频,游戏规则,和/或游戏逻辑210生成的视频内容。例如,叠加可能包括收到的游戏命令产生的菜单。叠加可能包括响应于像素模式(pixelpattern)的内容,例如,包含在游戏逻辑210生成的视频中的图像。叠加逻辑290可选地被配置为给单个视频帧应用多个叠加,这些叠加可能来自不同的源。

叠加逻辑290可选地被配置为在使用预处理器250预处理视频帧后和/或在使用编码器255之一编码后应用叠加。在一些实施例中,叠加包括在视频源130的输入(如i/o设备145)处通过互联网收到的图像,并且叠加逻辑290包括被配置为从图像中生成叠加的视频处理逻辑。接收到的图像可选地从图像源(如摄像机或文件存储器)接收。

视频dep245每个都可选地还包括预处理器(pre)250。预处理器250被配置为执行色彩空间转换如rgb到yuv和/或缩放操作来提高或降低视频帧的分辨率。在图形处理单元235的输出是在yuv色彩空间或其他想要的色彩空间内的实施例中,预处理器250是可选的。多个预处理器250可以包含在被配置为产生具有不同大小的视频帧的多个视频流的视频dep245中。

视频dep245的每个都包括至少一个编码器(enc)255。编码器255分别标记为编码器225a,编码器255b等。每个编码器225都被配置为根据特定的编解码器和可选地根据特定色彩深度和/或帧大小来编码视频数据。例如,编码器225可配置为将视频数据编码为adobe标准,.flv,.wav,.avi,.mpg,h.264,h.263,on2,vp6,vc-1,wma,和/或本文所讨论的其他编解码器。

视频dep245的成员可包括一个、两个或多个编码器255。这些编码器可以配置为以不同的编解码器和/或相同编解码器的不同格式编码。例如,编码器255a可配置为根据flash标准以第一帧大小和色彩深度编码而编码器255配置为根据相同flash标准以第二帧大小和颜色深度编码。视频dep245每个成员内的编码器255的标识通常在视频dep245被提供时确定。例如,单个命令或命令集可用于创建(提供)视频dep245a并规定创建的视频dep245a应该包括哪些组件。创建视频dep245a在本文其他地方进一步讨论。包括两个或两个以上的编码器255的视频dep245的成员替代地被视为两个或更多个具有一些但不是所有共有的组件的独立的视频dep245。例如,视频dep245a和视频dep245b可具有相同的预处理器250但是具有不同编码器255。

在一个示例中,编码器255a被配置为使用h.264编解码器而编码器255b被配置为使用h.263编解码器。有两个或两个以上的不同的编码器可用使得视频edp245a能在视频流传递期间改变编码。编码的改变可以是从一种类型的编码到另一种,或仅仅是特定类型的编码的特性的改变。例如,特性可能在色彩深度,每秒帧数,编码选项,像素数量,和/或等等方面改变。在一些实施例中,视频dep245a可选地配置为响应于客户端110a或客户端110a和视频源130之间通信信道的特性变化而在编码器255a和255b之间切换。

在实际中,当需要除正在使用的编解码器之外的不同的编解码器时,产生新的视频dep245并且在很短的一段时间内与当前视频edp245并行执行。新的视频dep245可选地是原始视频dep245的分支(branch)。例如,原始视频dep245的一些组件可用于新视频dep245。这两个视频dep245可具有以树结构逻辑排列的组件。

在一些实施例中,视频dep245被配置为使用两个或更多个不同的编码器同时生成两种或更多种不同的视频流。这些视频流都是基于图形处理单元255呈现的相同游戏环境,并且因此,包括基本相同的材料(可能除了叠加),并可以发送到不同的地方。例如,一个视频流可以发送给客户端110a,而其他发送到客户端110b。或者,一个视频流可以发送给客户端110a,而另一个发送到第三方可以观看该视频的网站。这个网站可选地是社交网站或游戏玩家站点的一部分。这两种不同的视频流在帧速率、编码类型、帧大小、色彩深度等方面可能不同。例如传递到社交网站的视频流可比送到使用客户端110a玩游戏的游戏玩家的视频流质量低得多。第二视频流可被导向正在玩游戏的游戏玩家或只是在观看玩游戏的人。视频流可选地被导向多于一个的地方。

视频dep245a可选地包括一个或多个后处理器(post)260。后处理器260的单独例子分别标记为260a和260b。后处理器260被配置为根据公共或私有的网络协议以适合通过网络通信的格式将编码的视频帧打包在容器中。例如,一些协议(如adobertmp)需要后处理而其他视频标准(如h.264附件b)不需要后处理。每个后处理器260可以关联到编码器255的特定成员,或几个后处理器260可被配置为从编码器255的一个成员接收编码视频帧。

后处理器260的输出被导向i/o设备145以传递给一个或多个客户端110。本文讨论的视频dep245的元件包括硬件、固件和/或存储在计算机可读介质上的软件。例如,每个视频dep245可能代表一组加载到存储器的并且使用电子处理器执行的软件。

音频dep270被配置为接收游戏逻辑210的成员生成的音频数据并且将音频数据编码成音频包。然后使用i/o设备145和网络115发送编码的数据包到客户端110。音频dep270也可选地被配置为将音频叠加放置到从游戏逻辑210收到的音频数据上。不同的音频dep270分别标记为270a,270b,270c等。

与视频dep245一样,音频dep270通常是根据需要分配并且被分配用来处理来自游戏逻辑210特定成员的音频数据。这个音频数据可基于视频游戏中的事件。例如,根据游戏规则(如落到水中产生飞溅的声音),视频游戏的一个或多个玩家采取的行动可能导致音频数据。音频dep270a的分配通常和视频dep245a的分配一样,响应于相同的因素并且以相同的方式执行。例如,包含在音频dep270a的元件可响应于客户端110之一的需求。音频dep270可从共享存储器240和/或直接从一个虚拟音频驱动285接收音频数据。

音频dep270a可选地包括抓取器275,该抓取器被配置为从一个虚拟音频驱动285接收音频数据,从视频服务器系统120外部的一个或多个源接收音频数据,和/或从共享存储器240得到音频数据。例如,在一些实施例中,抓取器275被配置为通过互联网获取从视频源130外部的源(比如一个或多个的客户端110)接收到的数据。从任意这些源收到的音频可以包括语音音频、音乐、音效、声道、警报和/或类似物。例如,使用客户端110a的游戏玩家的声音可从客户端110a接收,或者游戏玩家可提供音乐让使用另一个客户端110的游戏玩家听到。和音频流一样,音频数据可并行从多于一个的游戏玩家处接收。

音频dep270a可选地进一步包括叠加逻辑295。叠加逻辑295被配置为将一个或多个音频叠加放置在游戏逻辑210的成员生成的音频数据上。音频叠加可包括音频、音乐、音效、声道、警报和/或类似物。例如,在一些实施例中,音频叠加包括通过互联网从一个或多个游戏玩家收到的作为数据包的语音数据。这些数据包可选地在被包括进叠加之前通过叠加逻辑295解码。在游戏逻辑210的成员生成的音频数据上放置叠加可选地包括添加这些数据到生成的音频数据。全部或部分音频叠加可从音频源130外部的源接收。例如,在一些实施例中,叠加包括通过互联网在i/o设备145处收到的音频数据并且叠加逻辑290包括被配置为从这些音频数据生成音频叠加的音频处理逻辑。当提到音频叠加时,哪些数据是叠加和叠加应用在其上的数据是哪些的标识可以是任意的,因为在一些实施例中,音频数据没有分层次顺序的意义,而视频数据是可能有的。

音频dep270a进一步包括音频编码器280a。音频编码器280a被配置为根据音频编解码器将游戏逻辑210的成员生成的音频数据和音频叠加编码成音频包。编码通常在音频叠加已被应用到音频数据后进行。

抓取器275,音频编码器280a和叠加逻辑295包括硬件、固件和/或存储在计算机可读介质上的软件。音频dep270b和音频dep270c是音频dep270a的替代实施例。

视频源130的操作通常由控制器265管理。控制器265包括硬件、固件和/或存储在计算机可读介质上的软件。例如控制器265可包括存储在存储器中并且使用微处理器执行的软件。

在一些实施例中,控制器265被配置为响应玩游戏的请求提供游戏逻辑210a,虚拟音频驱动285和虚拟3d视频驱动220的实例。例如,如果从客户110a收到特定视频游戏的请求,控制器265从存储器155获取游戏逻辑210a、虚拟音频驱动285和虚拟3d视频驱动220并将它们放在工作存储器中。游戏逻辑210a可放置为与客户端110a和游戏服务器125都通信。为了玩视频游戏,随后使用处理器150执行游戏逻辑210a。

在一些实施例中,控制器265被配置为响应玩游戏的请求分配视频dep245和/或虚拟音频驱动285的实例。例如,控制器265可配置为首先确定或接收对视频dep245a和音频dep285a的需求,然后提供符合这些需求的计算指令。视频dep245a和音频dep285随后关联一个游戏逻辑210和一个虚拟3d驱动220。提供的视频dep245a可选地被配置为从共享存储器240内特定的区域获取原始视频数据。

在一些实施例中,通过询问客户端110a的用户来确定对视频dep245a和/或音频dep285a的需求。例如,控制器265可被配置为导致文本消息出现在客户端110a,该消息请求客户端110a的用户输入用户期望的视频流的特征。这些特性可包括连接类型,帧大小,编码方案,帧率,色彩深度,和/或类似物。输入的特征传回控制器265,当提供元件时,控制器265随后利用这些特征来选择包含在视频dep245a和/或音频dep285a中的元件。例如,如果用户请求特定的编码方案,那么选择被配置为使用请求的编码方案的编码器255并将其包括在视频dep245a中。

在一些实施例中,自动确定对视频dep245a和/或音频dep285a的需求。例如,使用客户端限定词(qualifier)收集的信息可用来确定对视频dep245a的需求。在这个例子中,如果客户端110a只包含microsoft译码器和adobe译码器,那么在视频dep245a中需要至少一个相应的编码器配置或其变体。使用视频dep245a将要生成的视频流的特征,如帧大小、色彩深度和帧速率,也可以以此方式由控制器265确定。

对视频dep245a和/或音频dep270的需求的确定可包括使用用户提供的特征和自动确定的特征两者。在一些实施例中,可能的特征受用户帐户类型、付款和/或订阅的限制。例如,用户可以付费以获得更高质量的视频流。

控制器265也可管理共享存储器240的共享。例如,控制器265可配置视频dep245a和/或音频dep285a以使用共享存储器240内特定的存储器位置和/或控制器265可被配置为配置视频dep245a和/或音频dep285a响应于某些定时信号来访问共享存储器240。所述定时信号是为了不同的视频dep245对共享存储器240的访问的同步而计时的。

图3根据本发明各种实施例说明了附加组件管理器160进一步的细节。通常,附加组件管理器160被配置为使能远程选择和安装附加组件以便于使用附加组建环境执行附加组件,管理附加组建数据,关联附加组件和附加组件数据到特定用户(游戏玩家)账户或化身,和/或类似物。附加组件管理器160通常包括存储在计算机可读介质上的软件,但也可包括固件或硬件。附加组件管理器160可设置在单个计算设备上或分布在超过一个的计算设备中。例如,在各种实施例中,附加组件管理器160的组件被设置在视频服务器系统120,附加组件服务器165和/或客户端110b上。

附加组件管理器160包括附加组件安装程序310,其被配置为安装与计算机程序相关联的附加组件。此处所使用的附加组件和计算机程序的相关联是表示附加组件被配置为增强或以其他方式扩展计算机程序的功能。通常,该附加组件被配置为与特定的计算机程序相关联。安装可选地是远程操作,例如,通过网络115响应于从客户端110b接收到的命令可在视频服务器系统120处执行的安装。这些命令是由附加组件管理器160接收并处理的。

附加组件安装程序310执行的安装可包括创建具有兼容附加组件执行的特性的附加组件环境287。如本文其他地方所讨论的,附加组件环境287可包括目录结构,被配置为重定向通信的计算指令等。例如,安装可包括创建相关于游戏逻辑210的目录,子目录,或其他目录结构的元件。在一些实施例中,安装包括添加被配置为重定向消息到其他设备的计算指令。这些计算指令的安装可在游戏逻辑210和/或附加组件的位置处。

可通过附加组件接口320开始和控制安装。附加组件接口320包括被配置为用于显示给客户端110的用户的用户界面,被配置为通过网络115生成和通信该用户界面的计算指令,和/或被配置为接收用户通过界面输入的命令的计算指令。在各种实施例中,配置用户界面以让用户选择要安装的附加组件,为附加组件或附加组件数据存储空间付费,对特定的化身选择应该激活哪个附加组件,打开和关闭附加组件,更新附加组件,管理准许的附加组件列表,和/或卸载附加组件。选择和输入命令通常是通过用户在显示的附加组件接口320的部分点击或输入文本等完成的。这些行为的结果通信到附加组件接口320的其他部分进行处理。部分附加组件接口320可选地作为叠加被包括在通信至客户端110的视频流内。

使用附加组件接口320,用户可以在视频服务器系统120或附加组件服务器165上远程安装一个或多个附加组件,和/或在远离客户端110的附加组件和游戏逻辑210的位置处安装用于重定向的合适的计算指令。例如,用户可以从准许的附加组件列表中选择一个或多个附加组件。准许的附加组件列表可选地存储在存储器155或附加组件服务器165中。准许的附加组件是游戏发行商,视频服务器系统120的管理者,或其他授权者已认证(qualified)的可与游戏逻辑210一起使用的附加组件。使用附加组件接口320用户可选地也可以选择附加组件应该关联哪些帐户,化身和/或游戏,以及附加组件应该存储在哪里,例如,存储在一个客户端110,视频服务器系统120,和/或附加组件服务器165。例如,用户可以指定应该只让一个或多个特定化身使用附加组件,而不让其他化身使用。

在本发明的一些实施例中,用户受附加组件数量和/或用户可用的附加组件数据存储量限制。该限制由附加组件管理器160管理并且可通过购买额外空间增加。例如,在一个实施例中,用户接收三个可以放置附加组件的虚拟“插口(slot)”并且可以通过付款或执行某些行为,如带入额外的玩家来购买额外的插口。

附加组件管理器160可选地被配置为用于用户打开或关闭安装的附加组件。例如,用户可能只有当参与某些游戏中的活动,如玩家与玩家的对战时希望使用附加组件。关闭附加组件并不必然意味着卸载它。在一些实施例中,关闭的附加组件不需要附加组件插口。在这些实施例中,用户可以有比可用插口更多的安装的附加组件。可替代地,每个安装的附加组件,无论是否激活,可能都需要插口。

在一些实施例中,附加组件管理器160被配置为更新附加组件。这些更新可以是手动和/或自动的。手动更新包括,例如,用户给附加组件管理器160提供附加组件发行商的网址或附加组件代码。附加组件管理器160可从发行商或一个客户端110获取附加组件。自动附加组件更新包括从附加组件发行商或其他来源自动获取附加组件。例如,当检测到附加组件过期时,附加组件管理器160可选地被配置为自动请求来自该附加组件的发行商或其他来源的更新,并如果可用,自动安装更新。这个过程可以对游戏玩家透明。在某些情况下,附加组件管理器160会等到来自源的附加组件可用,再执行更新。

具备手动或自动附加组件更新的附加组件管理器160可选地自动配置为检测附加组件何时过期并通知用户。附加组件管理器160也可配置为从附加组件发行商接收新版本附加组件可用的通知。

附加组件管理器160可选地配置为用于客户端110的用户通过附加组件接口320管理附加组件。通过附加组件接口320执行的管理可包括,例如,更新附加组件,购买附加组件,配置附加组件,移动附加组件,浏览安装的附加组件,激活和禁止附加组件,安装附加组件,卸载附加组件和/或类似行为。在一些实施例中,附加组件接口320配置为执行可以在客户端侧附加组件上执行的任何附加组件管理功能。卸载可选地包括移除被配置为重定向附加组件和游戏逻辑210之间消息的计算指令,和/或移除附加组件环境287。如本文其他地方所描述的,在一些实施例中,附加组件管理器160配置为自动更新附加组件。更新模式可选地使用附加组件接口320来管理。

附加组件管理器160可选地进一步包括账户管理器325,其被配置为管理附加组件和/或附加组件数据与客户端110b或其他客户端110的用户的关联。当用户(游戏玩家)安装附加组件时,账户管理器325将附加组件与特定视频游戏,用户,用户的账户,和/或化身相关联。通常这个关联作为每个用户安装的附加组件列表的一部分存储。当用户启动视频游戏时,账户管理器325读取该列表并且识别与用户相关联的附加组件。这些附加组件和合适的附加组件环境然后和游戏逻辑210、视频dep245a和/或音频dep270a的提供一起来提供。附加组件可选地进一步随着用户切换不同的化身或激活和禁止附加组件而被提供或不被提供。

当用户不玩视频游戏时,账户管理器325管理用户相关联的附加组件数据的存储。附加组件数据可存储在存储器155,附加组件服务器165和/或客户端110中。当开始玩游戏时,该数据通常被复制到合适的附加组件环境287中以供一个或多个提供的附加组件使用。当结束玩游戏后,附加组件环境287中附加组件数据的副本被用来更新所存储的副本。附加组件数据存储在数据库,文件结构或类似物中,并且包括识别信息,如记录索引或文件名,该识别信息被配置为确定附加组件数据属于特定的用户(即游戏玩家)。在一些实施例中,帐户管理器325维护被配置为指示附加组件数据的哪些文件属于特定的用户和/或与特定的帐户或化身相关联的索引。

在各种实施例中,账户管理器325被配置为管理附加组件插口的数量和/或每个用户可访问的存储器,以对用户收取额外的插口和/或存储费,和/或提供给用户用于购买的额外的插口或存储。例如,如果用户试图激活比可用插口更多的附加组件,账户管理器可使用附加组件接口320向用户提供购买更多插口的机会。

附加组件管理器160可选地进一步包括被配置为更新附加组件的附加组件更新器330。当附加组件的新版本是可用的或响应于游戏逻辑210的新版本时可发生更新。例如,当游戏发行商发布游戏逻辑210的新版本时,用于该游戏的第三方附加组件通常将需要测试和/或更新。附加组件更新器330被配置为监控这样的事件(例如,附加组件和游戏逻辑210的新版本发布)并且作为响应来执行更新。在一些实施例中,该过程包括接收表明游戏逻辑210的新版本可用的信息,通知附加组件发行商需要附加组件的更新版本,接收更新的附加组件,并用更新的附加组件替代过期的附加组件。任何或所有的这些步骤可以自动进行或可涉及来自客户端110b的用户的输入。在一些实施例中,附加组件更新器330被配置为自动从第三方位置,如ftp服务器或网站获取附加组件。

附加组件管理器160进一步包括附加组件存储器335。附加组件存储器335包括至少一个电子存储设备,其被配置为存储数据、图像和/或可执行计算指令。例如,附加组件存储器335可以包括易失或非易失存储器,硬盘和光驱,静态或动态随机存取存储器,和/或类似物。附加组件存储器335可选地分布在多个包括视频服务器系统120,附加组件服务器165和客户端110的设备中。

附加组件存储器335可选地包括附加组件340。附加组件340包括数据、图像、可执行代码、脚本或其他被配置为用于扩展游戏逻辑210的功能的游戏内容。附加组件340可作为附加组件安装在视频服务器系统120,附加组件服务器165,客户端110,或其他地方上。在直接从第三方资源获取附加组件以用于执行的实施例中,附加组件340是可选的。附加组件存储器355可选地进一步包括准许附加组件340的准许列表345。附加组件340内的计算指令可选地由多于一个的游戏玩家共享。例如,在提供单个附加组件时,可以关联到游戏逻辑210a和游戏逻辑210b,使用不同计算线程独立访问计算指令。

附加组件存储器355可选地包括api过滤器350。如本文其他地方讨论的,api过滤器350包括被配置为用于重定向附加组件340和游戏逻辑210之间通信的计算指令。可配置这些计算指令以使得在附加组件服务器165或一个客户端110上的附加组件可以用来扩展视频服务器系统120上的游戏逻辑210的功能。可替代地,使用api过滤器350,在视频服务器系统120或附加组件服务器165上的附加组件可用于扩展安装在一个客户端110上的游戏逻辑210的功能。当api过滤器350安装在适当的位置时,即使当附加组件和计算机程序被网络115分开时,附加组件也可用来扩展计算机程序的功能。

附加组件存储器355可选地包括与附加组件一起被包括,由附加组件生成或组织的附加组件数据355。附加组件数据355可包括由多于一个的附加组件生成的数据。通常,当开始玩游戏或激活附加组件340时,复制该数据到合适的附加组件环境287中。当结束玩游戏时,附加组件环境287中的附加组件数据用于更新存储在附加组件存储器355中的附加组件数据副本。

图4根据本发明各种实施例说明了客户端的进一步的细节。i/o405包括为客户端110配置的输入/输出设备,以发送和/或接收信息,如视频、命令、附加组件、附加组件数据、信息请求、游戏状态、客户端标识、玩家标识、游戏命令、安全信息、音频数据和/或类似物。在一些实施例中,i/o包括调制解调器或以太网端口。

客户端侧存储器410包括非临时性模拟和/或数字存储设备。例如,客户端侧存储器410可包括被配置为存储视频帧的模拟存储设备。客户端侧存储器410可包括计算机可读数字存储器,如硬盘,光驱,或固态存储器。客户端侧存储器410被配置为(例如,通过合适的数据结构或文件系统的方式)存储视频帧、人工帧、包括视频帧和人工帧两者的视频流、音频帧、音频流、附加组件、附加组件数据和/或类似物。其中的一些附加组件可与客户端110b上的游戏逻辑210的实例相关联,而相同的游戏逻辑210也与安装在地理上远离客户端110b的设备上的附加组件相关联。

api过滤器350是附加组件环境287的一部分,如本文其他地方所讨论的那样,被配置为重定向通信。处理器420包括中央处理单元(cpu)和至少一个图形处理单元(gpu)两者。显示器430被配置为显示客户端110b本地产生和/或视频服务器系统120产生的视频流。

用户输入440包括,例如,键盘,操纵杆,定点设备,电话,力反馈设备,运动和/或位置传感设备,鼠标,触摸屏,神经接口,摄像机,有待开发的输入设备和/或类似物。

图5根据本发明各种实施例说明了安装和/或使用附加组件的方法。这些方法可以应用在附加组件安装在附加组件服务器165,视频服务器系统120,或一个客户端110上的实施例中,以及游戏逻辑210安装在一个客户端110或视频服务器系统120上的实施例中。所有这些实施例的共同点是至少一个附加组件和相关联的游戏逻辑210在除了一个客户端110外的位置处安装和使用并且通过网络115与该一个客户端110分离。例如,如果游戏逻辑210安装在客户端110b上,那么至少一个相关联的附加组件在客户端110的不同成员,附加组件服务器165,视频服务器系统120,或第三方的位置安装和使用。如果游戏逻辑210安装在除客户端110b以外的其他位置,那么附加组件可以安装在客户端110b或任何本文所讨论的其他位置。图5中涉及安装附加组件的那些步骤可选地与涉及使用所安装的附加组件的那些步骤分开执行。附加组件的安装和执行都可由使用一个客户端110的游戏玩家初始化,或者可指定为游戏逻辑210的默认配置的一部分。一些实施例包括安装多于一个的附加组件。

首先考虑那些游戏逻辑210安装在视频服务器系统120上的实施例,安装过程可以以选择附加组件步骤510开始。在该步骤中,通常由使用一个客户端110的游戏玩家选择将被安装的附加组件。可以从使用附加组件接口320显示给游戏玩家的附加组件列表中选择,或可包括游戏玩家从存储位置或第三方资源选择附加组件。

在一些实施例中,只有准许的附加组件才可以被选择。在这些实施例中,确认附加组件步骤515可选地用于确认所选的附加组件340是包含在准许的附加组件的列表中的。该检查可包括在准许列表查找附加组件的名字(或其他标识符)或将准许的附加组件的校验和,url或其他签名和所选附加组件的对应特征相比较。

在建立环境步骤520中,附加组件管理器160用于建立附加组件环境287的实例以执行选定的附加组件。在不同的实施例中,附加组件环境287建立在视频服务器系统120,附加组件服务器165,或一个客户端110上。例如,在视频源130上建立附加组件环境287可包括创建合适的目录结构以使得附加组件可以安装在相关联的游戏逻辑210所期望的位置上。在一个更具体的例子中,如果游戏逻辑210被配置为查找相对于游戏逻辑210目录的,叫做“附加组件”的子目录,那么创建环境步骤520可包括在合适的位置创建这个子目录。

在附加组件服务器165或一个客户端110上建立附加组件环境287通常包括在合适的位置安装被配置为重定向游戏逻辑210和附加组件之间的通信的计算指令。例如,第一api过滤器350可安装在游戏逻辑210的api处和第二api过滤器350可安装在将执行附加组件的位置处。这些api过滤器350被配置为重定向给彼此的消息从而使得被配置为在相同计算设备上共同运行的附加组件和相关联的游戏逻辑210可以通过网络115相互通信而运行。建立附加组件环境287可选地包括配置每个api过滤器350,从而使得无论它们在哪里安装都可以互相通信。例如,每个api过滤器350可被配置具有ip地址或对应api过滤器350的统一资源定位器。

在接收附加组件步骤525中,从存储器155,附加组件存储器335,一个客户端110或第三方位置接收要安装的附加组件。附加组件可选地通过网络115接收。在将要执行附加组件的位置,例如建立环境步骤520中建立的附加组件环境287处接收附加组件。接收附加组件步骤525的一些实施例包括从附加组件存储器335,客户端110b或第三方位置通信附加组件到视频服务器系统120。接收附加组件步骤525的一些实施例包括从附加组件存储器335,存储器155,第三方位置通信附加组件到客户端110b。

在放置步骤530中,在创建环境步骤520中创建的附加组件环境287中安装/放置接收到的附加组件。该安装可以发生在视频源130的目录结构内,或者在安装在附加组件服务器165,视频源130和/或客户端110上的api过滤器350的位置处。安装可包括提供附加组件的计算指令和可选地提供默认附加组件数据。创建环境步骤520可选地在放置步骤530之后或与其同时执行。例如,api过滤器350可在附加组件安装后安装。放置步骤520可选地包括与附加组件一起提供附加组件数据。该附加组件数据可能会或可能不会来自与附加组件相同的位置。例如,附加组件可从附加组件服务器165接收而附加组件数据从客户端110b接收。接收到的附加组件数据可以是默认附加组件数据或已经被游戏玩家行为修改过的附加组件数据。

在可选的关联步骤535中,放置步骤530中安装的附加组件和可选地所提供的附加组件数据,都关联到一个客户端110或一个客户端110的用户,即游戏玩家。该关联可涉及在分配给用户的附加组件列表中包括该附加组件的标识符或复制该附加组件到分配给用户的目录中。与用户的关联可为用户的账户,用户,特定的视频游戏,一个或多个特定的化身,和/或类似物所特有。当附加组件安装在一个客户端110或已经关联了帐户,用户等的位置上时,关联步骤530是可选地。在这种情况下与位置、设备、地址等等的关联,可能代替或补充与特定用户的关联。

一旦附加组件关联到帐户,用户,或位置等等,每次用户请求执行游戏逻辑210时,都可提供和/或使用它。例如,关联到用户的一个或多个附加组件可与游戏逻辑210a和视频dep245a接近同时地提供。提供过程可以包括如本文所述步骤510到530的变化。例如,当附加组件在先前已安装后再被提供时,选择附加组件步骤510可以仅仅包括解析之前关联到用户或位置等的附加组件列表。接收附加组件步骤525可以仅仅包括从一个或多个存储位置,如存储器155,附加组件存储器335,或客户端侧存储器410获取该附加组件和相关联的附加组件数据。

一旦提供了附加组件和任何相关联的附加组件数据,使用附加组件可以以执行游戏步骤540开始。在该步骤中,通常响应于从一个客户端110收到的请求来执行游戏逻辑210。该执行可选地包括在视频服务器系统120和游戏服务器125之间的通信,从而在视频服务器系统120处维护多玩家视频游戏的状态。

在接收命令步骤545中,通过一个游戏逻辑210从一个客户端110接收游戏命令。这通常是通过网络115发生。游戏命令可以是被配置为用于控制或使用附加组件的命令。例如,游戏命令可以被配置为使附加组件显示某些信息,执行某些功能或可以包括将由附加组件处理的数据。

在转发命令步骤550中,接收命令步骤550中接收的游戏命令被识别为附加组件的命令并转发给附加组件。在附加组件安装在和接收命令的游戏逻辑210相同的计算设备上的实施例中,该命令可从游戏逻辑210的api直接传递到附加组件的api。例如,游戏命令可通过游戏逻辑210aapi传递到附加组件api的存储器位置。

在附加组件安装在与执行游戏逻辑210的不同的计算设备上的实施例中,api过滤器350用于在游戏逻辑210和附加组件之间通信接收到的命令。例如,命令可能首先从游戏逻辑210a通信到视频源130的第一api过滤器350。从游戏逻辑210aapi的角度看,第一api过滤器350被配置为看起来像是附加组件api。因此,从游戏逻辑210a到第一api过滤器350的通信可以通过提供命令或指向命令的指针,到第一api过滤器350的存储器位置来实现。第一api过滤器350被配置为通信命令至在附加组件的位置,例如一个客户端110b或附加组件服务器165处的第二api过滤器350。该通信可以通过使用tcp/ip,udp/ip,或者一些其他通信标准的网络115来发生。一旦收到命令,第二api过滤器350被配置为转发该命令至附加组件。第二api过滤器350被配置为从附加组件的角度看起来像是游戏逻辑api。因此,从第二api过滤器350到附加组件的通信可以通过提供命令或指向命令的指针,到附加组件存储器位置来实现。

在处理命令步骤555中,使用附加组件来处理命令。该处理可包括附加组件数据的产生。例如,命令可包括由用户或游戏逻辑210a提供的数据。该命令可能会导致附加组件记录或检测游戏中的事件并基于这些事件生成附加组件数据。该命令可导致附加组件提供包含在视频服务器系统120产生的音频或视频流中的音频和图像数据给一个客户端210。该命令可能导致图像在格式之间转换。例如,转换为pdf文件。从处理命令步骤555产生的该音频或图像数据,或任何其他数据,可选地通信到视频服务器系统120或一个客户端110,例如,通过网络115。该命令可能导致目前现有附加组件技术已知的任何其他结果。

在可选的存储步骤560中,存储处理命令步骤550中产生的附加组件数据。该存储器可能靠近附加组件,或者替代地在通过网络115与附加组件通信的位置处。例如,不管附加组件在哪,数据都可存储在视频服务器系统120,附加组件服务器165,和/或一个客户端110上。存储可实时或延迟后发生。例如,在一些实施例中,在游戏逻辑210a的特定执行期间,使用附加组件本地的附加组件数据的工作副本,并且当执行结束时,附加组件数据存储在其他地方。

在可选的生成步骤565中,视频数据作为附加组件处理游戏命令的结果产生。例如,游戏命令可能代表获得显示给游戏玩家的附加组件数据、位置、地图、文字、通知、物品和/或类似物(或呈现给游戏玩家的声音)的请求。视频数据可能包括二维或三维图像。例如,为了指示资源的位置,可能从存储器中读取二维图像/符号并且通过应用为叠加来转换为视频数据。叠加的使用在2010年6月29日提交的序列号为12/826,130的题为《videogameoverlay》的美国专利申请中进一步讨论。在此通过引用从而包括该专利申请的内容在本文中。可替代性地,视频数据可能是附加组件添加二维或三维对象到随后使用gpu235呈现成视频数据的游戏环境中的结果。

在可选地提供步骤570中,生成步骤560中生成的视频数据作为视频流的一部分提供给一个或更多的客户端110。通常,这些客户端110包括客户端110的成员,在接收命令步骤545中从该客户端110的成员收到游戏命令,并且通过网络115提供视频流。例如,如果从客户端110b收到游戏命令,视频可提供给客户端110a和第三方目的地,以及客户端110b。第三方目的地可以是储存位置、网站、社交网站、电视、电话、和/或类似物。

现在考虑游戏逻辑210安装在客户端110b上并且在使用时至少一个附加组件在客户端110b外部的实施例。在这些实施例中,因为游戏环境可以基于游戏状态生成,游戏环境可以呈现成视频,视频可以显示,所有都在客户端110上,视频服务器系统120因此是可选的。游戏状态可以基于从游戏服务器125,客户端110的其他成员收到的状态信息,和/或仅仅基于客户端110b内的信息。图5所示的这些步骤可能变化如下:

在建立环境步骤520中,游戏逻辑210和附加组件必须在不同的计算设备上。这是因为,在讨论的实施例中,游戏逻辑210在客户端110b上并且至少一个游戏逻辑210和附加组件在被网络115分开的不同计算设备上。建立环境步骤520,因此包括在游戏逻辑210的位置和附加组件的位置都提供api过滤器350。在一些实施例中,一个游戏逻辑210和一个附加组件都在客户端110b上,而至少一个其他附加组件在不同的计算设备上,例如附加组件服务器165和/或视频服务器系统120上。在这些实施例中,建立环境步骤520指向为不同计算设备上的附加组件(们)创建附加组件环境287。

在接收附加组件步骤525中,附加组件是在附加组件服务器165,视频服务器系统120,不同的客户端110,或第三方位置,比如web服务器、文件服务器,或者附加组件开发商控制的其他位置处接收。在放置步骤530中,附加组件安装在除客户端110以外的位置,在客户端110上安装有将通过附加组件增强的游戏逻辑210的实例。例如,如果游戏逻辑210被设置在客户端210b上,附加组件可安装在客户端210c,附加组件服务器165,视频服务器系统120,或第三方的位置。放置步骤530可选地包括从客户端210b,附加组件服务器165或视频服务器系统120通信附加组件数据到附加组件安装的位置。

在关联附加组件步骤535中,用来保存附加组件关联的附加组件列表可选地存储在客户端210b。执行游戏步骤540和接收命令步骤545可选地限制在客户端110b。例如,接收命令步骤545可能包括通信来自用户输入440的命令到处理器420,而非通过网络115通信命令。在转发命令步骤550中,接收命令步骤544中收到的命令从客户端110b转发到附加组件的位置。处理步骤555产生的任何数据可选地通信回客户端210b。

在可选的存储步骤560中,处理命令步骤550中生成的数据存储在客户端110b,附加组件的位置,和/或其他地方。提供步骤570可以仅包括从处理器420提供产生步骤560中产生的视频数据到显示器430。虽然,在一些实施例中,该视频数据也可以提供给客户端110的其他成员或本文讨论的第三方位置。

现在回到更一般的情况,游戏逻辑210可以被设置在客户端110或视频服务器系统120上。图6根据本发明的各种实施例,说明了自动更新附加组件的方法。附加组件通常响应于收到游戏逻辑210更新版本而更新。图6示出步骤的任何组合可自动执行。获得更新附加组件的请求在收到执行游戏逻辑210更新版本的请求前做出是可能的。图6说明的方法可选地用来响应于接收一个更新的游戏逻辑210更新多于一个的附加组件。

在接收游戏逻辑更新步骤610中,游戏逻辑210的新版本在视频源130或客户端210b处接收。新版本通常是从相关联的视频游戏的发行商或其代理商收到。新版本可选地通过网络115接收。游戏逻辑210的新版本被配置为替换以前的版本。接收游戏逻辑更新步骤610可选地包括禁用任何过期的附加组件。

在确定附加组件使用步骤615中,确定附加组件是否已经用于增强游戏逻辑210先前版本的功能。确定附加组件使用步骤615可以包括,例如,检查与特定游戏逻辑210、视频游戏、用户、用户账户、客户端110等相关联的附加组件列表。这个列表可通过账户管理器325维护。可替代性地,确定附加组件使用步骤615可包括检查被配置为存储附加组件的存储位置以及查找被配置为增强游戏逻辑210的附加组件。

在发送请求步骤620中,发出请求获得更新的附加组件的请求。该请求通常向第三方做出,如附加组件的发行商或其代理商。请求包括更新应被提供到的地址,和可选地包括附加组件的标识符和附加组件应该与其兼容的游戏逻辑210的新版本。例如,请求可表明用于“魔兽世界6.542版本”游戏逻辑210的“首领警报”的新版本发送至视频服务器120,附加组件服务器165或客户端110b的地址。请求可选地通过网络115发送。发送请求步骤620可以在接收游戏逻辑更新步骤610中收到游戏逻辑210更新版本的时间和接收到请求执行游戏逻辑210的更新版本的请求的第一时间之间执行。发送请求步骤620可响应于在游戏逻辑更新步骤610中接收游戏逻辑210的更新版本而自动执行。发送请求步骤620可选地重复直到收到更新的附加组件。例如,请求可以最初每10分钟发送而随后每一小时发送。

在接收附加组件更新步骤625中,在发送请求步骤620中提供的地址处接收更新的附加组件。更新后的附加组件被配置为增强接收游戏逻辑更新步骤610收到的游戏逻辑210新版本,并可以通过网络115接收。接收附加组件更新步骤625可选地在接收游戏逻辑更新步骤610中收到游戏逻辑210的新版本的时间和收到执行游戏逻辑210更新版本的第一请求的时间之间执行。

在安装步骤630中,安装接收附加组件更新步骤625中收到的更新附加组件。安装可在存储器如附加组件存储器335或客户端侧存储器410上的附加组件中。替代地,安装可在附加组件环境287中,其中其可被使用而无需进一步提供。安装过程可选地类似于如图5所讨论的放置步骤530。安装步骤630可选地自动执行,例如不需要游戏玩家命令安装。

在接收执行请求步骤635中,接收执行在接收游戏逻辑更新步骤610中收到的游戏逻辑210的新版本的请求。该请求通过一个客户端110从游戏玩家接收,并且可选地通过网络115在视频源130处接收。接收执行请求步骤635可在发送请求步骤620,接收附加组件更新步骤625和安装步骤630中的任意一个或几个之前或之后发生。

在可选的请求捐赠步骤640中,捐赠给附加组件发行商的请求呈现给游戏玩家。通常是游戏玩家在接收执行请求步骤635中做出执行请求。请求捐赠可选地作为使用视频服务器系统120产生的视频流的叠加呈现。

在可选的通知用户步骤645中,通知在接收执行请求步骤635中做出执行请求的游戏玩家已接收到附加组件的新版本。该通知也可选地作为使用视频服务器系统120产生的视频流的叠加呈现。

本文特别说明和/或描述了几个实施例。然而,应当理解,修改和变化是被上述教导所覆盖的,并且在所附权利要求的范围内,不偏离本发明的精神及其期望范围。例如,尽管这里给出的示例是针对电脑游戏,在其他实施例中,教导的系统和方法应用于其它类型的计算机程序。这些其他类型的计算机程序可以包含图形程序、电子表格、文字处理、数据库程序、会计程序、项目管理计划、视频编辑程序、图像编辑程序、网站开发程序、库存程序、电子邮件程序、文件管理程序、文档管理/查看程序、绘图/计算机辅助设计程序、演示程序、和/或类似程序。此外,尽管本文讨论的许多例子涉及单个附加组件。公开的系统和方法可以应用于多组附加组件。这些组可以作为一个附加组件包来处理。

文中讨论的实施例是对本发明的说明。虽然本发明的实施例通过参考示例而描述,描述的方法和/或特定结构的各种修改或适应对本领域技术人员而言可以是显而易见的。依靠本发明的教导并通过这些教导对现有技术有贡献的所有这些修改、适应、或变化被认为是在本发明的精神和范围内的。因此,这些描述和附图不应被视为是限制性的,因为可理解,本发明绝不局限于示出的实施例。

本文所指的计算系统可包括集成电路、微处理器、个人计算机、服务器、分布式计算系统、通信设备、网络设备、或类似物,以及各种相同物的组合。计算系统也可能包括易失性和/或非易失性存储器如随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、磁介质、光介质、纳米介质、硬盘、光盘、数字通用光盘(dvd),和/或被配置为存储模拟或数字信息,如数据库中的其他设备。上面提到的逻辑的各种例子可以包括硬件、固件或存储在计算机可读介质上的软件,或其组合。此处使用的计算机可读介质,明确排除了纸。本文提到的方法的计算机实现步骤可包括一组存储在计算机可读介质上的指令,当其执行时,导致计算系统来执行这些步骤。依据程序软件的指令被编程为执行特定的功能的计算系统是用于执行那些特定功能的特殊用途计算系统。特殊用途计算系统在执行那些特定功能时处理的数据至少电子地保存在计算系统的缓存中,随着所存储的数据的每次改变而在物理上将特殊用途计算系统从一种状态改变到下一种状态。

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