CN110582331A - 用于使用分布式游戏引擎的***和方法 - Google Patents

用于使用分布式游戏引擎的***和方法 Download PDF

Info

Publication number
CN110582331A
CN110582331A CN201880028171.1A CN201880028171A CN110582331A CN 110582331 A CN110582331 A CN 110582331A CN 201880028171 A CN201880028171 A CN 201880028171A CN 110582331 A CN110582331 A CN 110582331A
Authority
CN
China
Prior art keywords
game
node
server
nodes
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201880028171.1A
Other languages
English (en)
Other versions
CN110582331B (zh
Inventor
R.R.科伦布兰德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment America LLC
Original Assignee
Sony Computer Entertainment America LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment America LLC filed Critical Sony Computer Entertainment America LLC
Priority to CN202311160468.2A priority Critical patent/CN117323658A/zh
Publication of CN110582331A publication Critical patent/CN110582331A/zh
Application granted granted Critical
Publication of CN110582331B publication Critical patent/CN110582331B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/51Server architecture
    • A63F2300/513Server architecture server hierarchy, e.g. local, regional, national or dedicated for different tasks, e.g. authenticating, billing
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/534Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)

Abstract

一种用于使用分布式游戏引擎的方法包括:通过计算机网络从用户帐户接收玩游戏的请求,标识用于所述用户帐户的处理能力分配,以及基于所述处理能力分配确定用于所述用户帐户的节点组合件以利用两个或更多个处理节点来玩所述游戏。所述方法还包括针对所述用户帐户初始化所述两个或更多个处理节点以执行所述游戏。执行初始化的操作,以设置所述游戏的处理节点从一个处理节点到另一处理节点的传送。所述方法包括定义所述两个或更多个处理节点之间的内部通信信道,以交换所述游戏的状态信息。执行所述状态信息交换,以使得所述两个或更多个节点能够以共享方式处理所述游戏。

Description

用于使用分布式游戏引擎的***和方法
技术领域
本公开涉及用于使用分布式游戏引擎的***和方法。
背景技术
已经开发了用于玩游戏的各种装置。例如,各种游戏公司已经创造出游戏控制台,以向用户提供独特的游戏体验。为了说明,用户可以玩战争游戏、功夫游戏、跳舞游戏等。
一些游戏公司已经开发出在用户的头部上方并向用户提供游戏显示的显示装置。在使用此类显示装置以玩游戏期间,用户感觉他/她好像身处游戏中。
但是,随着与游戏相关联的图形和与游戏相关联的处理的增加,游戏控制台的处理能力无法增加。
发明内容
本公开的实施方案提供用于使用分布式游戏引擎的***和方法。
本公开的其它方面将从结合附图进行的以下详细描述中变得清楚,所述详细描述通过举例说明本公开中描述的实施方案的原理。
对于游戏和科学计算,总是渴望增加计算能力的量。单个服务器的计算能力受到芯片制造商组装时可用的计算机零件限制。对于给定计算机世代,由于晶体管数目和能力的技术限制,计算机芯片制造商受限于每个芯片一定数目个中央处理单元(CPU)或图形处理单元(GPU)内核。这些技术壁垒每几年就会根据摩尔定律而上升。但是,有时瞬间需要更高量的计算能力。获得更多计算能力的一种方法是在单个服务器中使用多个CPU插槽并添加更多GPU板。但是,随着添加更多CPU插槽和更多GPU板,单个服务器内的空间变得有限。获得更多计算能力的另一种方法是使用额外服务器并将工作负载分散到多个服务器上。
在一个实施方案中,描述了一种高速、低等待时间***,其中可选地由游戏控制台组成的多个服务器被互连。这项技术是弹性计算架构的基础,弹性计算架构例如用于包括云游戏的游戏目的。所述实施方案允许对计算节点(例如,游戏控制台、虚拟机、服务器等)进行群集,以获得以其他方式可用的更大量的计算容量。将计算节点捆绑在一起的方式允许编写游戏引擎的方式,其中例如单玩家游戏或多玩家游戏等游戏在多个计算节点上运行。所述***提供了允许不同类型的游戏的群集技术。
鉴于用于弹性计算的硬件架构,描述各种应用以利用计算能力。一个用例是为单个用户提供多个计算节点的计算能力。例如,游戏引擎横跨多个计算节点。这可以多种方式进行。为了说明,每个计算节点渲染不同帧,例如,节点1渲染帧1+n且节点2渲染帧2+n,其中n是节点数目。一些游戏引擎共享来自物理和GPU缓冲器的帧信息。例如,当被给予具有关于数据可用性等的存储器地址的通知时,每个节点从其他节点存储器读取帧信息。为了说明,一个节点向另一节点发送中断,并从另一节点内的共享寄存器读取帧信息。这比网络数据包快几个量级。作为共享帧信息的另一示例,通用数据报协议/传输控制协议(UDP/TCP)网络数据包用以读取帧信息。作为又另一说明,每个计算节点渲染帧的一部分,例如,四分之一或预定数目条线。作为又另一说明,在主从架构中,一个节点是主节点并在计算节点之间委派计算任务。作为另一示例,一个节点向另一节点发送中断,并将帧信息写入到另一节点内的共享寄存器。这可以比网络数据包快几个量级。作为共享帧信息的另一示例,使用UDP/TCP协议以写入帧信息。一些任务比其他任务利用更多或更少时间,因此主机是调度器。在主机上完成一些物理计算,并将游戏的状态广播到从机。
如果如上所述的单个用户配置用于云游戏,则在如何管理通过输入装置(例如,游戏板或键盘或鼠标)接收到的输入以及如何管理音频和/或视频流方面存在挑战。在云游戏中,只有单个客户端,所述客户端将输入发送到许多节点且客户端从各种节点接收音频和/或视频。节点中的一个被标记为流节点,所述流节点处理与客户端的连接并接收输入并将输入传播到其他节点。此节点还将所有压缩的音频和视频数据发送到客户端。此节点还代表所有节点处理音频和视频编码,或者每个节点都可以自己完成编码。但是,对于音频和视频编码,通常使用先前帧数据,因此在节点之间共享先前帧数据。例如,如果每个节点处理图像的一个角且每个角是其自有视频流,那么也可以使用多个视频流。客户端将角缝合在一起并使其同步。在视频帧之间的接缝中使用某一形式的混合,以避免出现难看的边缘。
弹性计算群集的一种用途是用于新型多玩家游戏。当所有用户都连接到此群集内托管的同一虚拟场景时,会玩出更具响应性类型的游戏。另外,如果消除了冗余计算,那么可以在弹性计算中实现节能。在常规多玩家游戏中,当用户在同一世界中玩游戏时,必须针对每个用户的游戏引擎(本地)实例重复许多物理计算。有可能执行一次计算,从而节能。
在一个方面中,描述一种用于使用分布式游戏引擎的方法。所述方法包括:通过计算机网络从用户帐户接收玩游戏的请求,标识用于所述用户帐户的处理能力分配,以及基于所述处理能力分配确定用于所述用户帐户的节点组合件以利用两个或更多个处理节点来玩所述游戏。所述方法还包括针对所述用户帐户初始化所述两个或更多个处理节点以执行所述游戏。执行所述初始化操作以设置所述游戏的处理节点从所述两个或更多个处理节点中的一个到两个或更多个处理节点中的另一个的传送。所述方法包括定义所述两个或更多个处理节点之间的内部通信信道,以交换所述游戏的状态信息。执行所述状态信息交换,以使得所述两个或更多个节点能够以共享方式处理所述游戏。持续进行所述两个或更多个节点之间的所述状态信息交换,以使得所述两个或更多个节点用作聚合节点。
在另一方面中,描述一种用于处理分布式游戏引擎的方法。所述方法包括:通过用户帐户和计算机网络从客户端装置接收玩游戏的请求,分配数个服务器节点来玩所述游戏,以及向所述服务器节点发送信息以使所述节点能够使用通信协议来彼此通信以便于玩所述游戏。所述方法包括在所述服务器节点之间分布游戏引擎来玩所述游戏。
在另一方面中,描述一种用于处理分布式游戏引擎的***。所述***包括云游戏服务器和耦合到所述云游戏服务器的节点组合件服务器,所述云游戏服务器被配置为通过用户帐户和计算机网络从客户端装置接收玩游戏的请求。所述节点组合件服务器分配数个服务器节点来玩所述游戏。所述节点组合件服务器向所述服务器节点发送信息以使所述服务器节点能够使用通信协议来彼此通信以便于玩所述游戏。所述服务器节点中的一个在所述服务器节点之间分布游戏引擎来玩所述游戏。
附图说明
通过参考结合以下附图给出的以下描述,最好地理解本公开的各种实施方案,其中:
图1是描述分布式游戏引擎的***的实施方案的图式。
图2是用以说明关于节点的细节的***的实施方案的图式。
图3A是用以说明在多个节点之间分布游戏引擎的***的实施方案的图式。
图3B是云游戏服务器的实施方案的图式。
图3C是节点组合件服务器的实施方案的图式。
图3D是用以说明游戏引擎的各个部分的图式。
图4A是用以说明执行分布式游戏引擎的***的实施方案的图式。
图4B是用以说明分布式游戏引擎的另一实施方案的***的实施方案的图式。
图5A是用以说明分布式游戏引擎的又另一实施方案的***的实施方案的图式。
图5B是用以说明由节点生成用于游戏的一个或多个帧且由另一节点生成用于游戏的一个或多个帧的图式。
图6A是用以说明分布式游戏引擎的又另一实施方案的***的实施方案的图式。
图6B是用以说明具有虚拟场景的视频帧中的视频帧部分的布置的图式。
图6C是用以说明具有虚拟场景的视频帧中的视频帧部分的另一布置的图式。
图7是用以说明从一个节点向另一节点广播用户输入以确定到另一节点的用户输入的相关性以生成视频帧的***的实施方案的图式。
图8是用以说明从一个节点向另一节点广播用户输入以确定到另一节点的用户输入的相关性以生成视频帧部分的图7的***的实施方案的图式。
图9是用以说明被选择来执行分布式游戏引擎的数个节点的动态变化的***的实施方案的图式。
图10是说明各种操作的流程图,执行所述操作来将云视频游戏流式传输到客户端装置。
图11是游戏控制台的实施方案的框图,所述游戏控制台兼容于与客户端装置的显示装置介接,或者能够通过计算机网络与游戏托管***通信。
图12是头戴式显示器(HMD)的实施方案的图式。
图13说明信息服务提供商(INSP)架构的实施方案。
具体实施方式
描述了用于使用分布式游戏引擎的***和方法。应注意,在没有一些或所有这些具体细节的情况下实践本公开的各种实施方案。在其他情况下,未详细描述熟知的过程操作,以免不必要地混淆本公开的各种实施方案。
图1是描述分布式游戏引擎102的***100的实施方案的图式。***100包括多个客户端装置104A、104B和104C。***100还包括交换机***106和多个节点1、2和3。***100包括节点组合件服务器108和云游戏服务器110。
如本文中所使用的客户端装置是由用户操作以获得对使用分布式游戏引擎102执行的游戏的访问的装置。客户端装置的示例包括游戏控制台、计算机、智能电话、智能电视、头戴式显示器(HMD)和平板电脑等。
如本文中所使用的HMD是用户佩戴以查看例如虚拟现实(VR)场景或增强现实(AR)场景等虚拟场景的显示装置。在在执行分布式游戏引擎102后,即刻生成VR场景或AR场景。
如本文中所使用的节点是用以执行分布式游戏引擎102的硬件服务器或游戏控制台或硬件服务器。作为示例,一个节点具有与另一节点的外壳分开的外壳。作为另一示例,一个节点放置于数据中心的与数据中心内上面有另一节点放置的机架不同的机架上。
在实施方案中,多个节点位于单个外壳内。例如,在PlayStation NowTM服务器的情况下,单个外壳由多个节点共享。当多个节点容纳于单个外壳中时,每个节点与机架且进一步与计算机网络具有自有网络连接性。然而,作为替代方案,单个外壳包括例如交换机等网络装置,且节点通过交换机和单根电缆耦合到机架,以耦合到计算机网络。具有多个节点的单个外壳就吞吐量和等待时间来说允许更好的连接性。
在一个实施方案中,使用虚拟机来执行节点,虚拟机是计算机***的仿真。在虚拟机中,管理程序是共享并管理硬件资源(例如处理器和存储器装置)以运行分布式游戏引擎102的计算机软件或硬件或其组合。作为示例,虚拟机包括操作***、在操作***之上运行的一个或多个应用计算机程序以及一个或多个硬件资源,例如中央处理单元、图形处理单元、视频编码器、音频编码器、网络通信装置、存储器装置、内部通信装置、网络通信装置等,所述硬件资源被一个或多个应用计算机程序通过操作***和管理程序访问来执行本文中描述为由节点执行的功能。
如本文中所使用的交换机***包括一个或多个交换机,所述交换机促进节点组合件服务器108与节点1、2和3中的一个或多个之间的数据传送。例如,交换机***是交换机结构。交换机结构在节点之间具有大量带宽,并且经常是动态重新配置的并允许服务质量(QoS)。为了说明,当节点之间没有足够的容量并且QoS重试发送数据时,QoS有助于减少链路上的拥塞。某些节点会及时开始处理来自容量不足的节点的数据。作为另一示例,交换机***包括多路复用器,所述多路复用器在节点1、2和3之间进行选择,其将执行分布式游戏引擎102,并且从节点组合件服务器108向其传送数据,且通过计算机网络112将数据从其传送到客户端装置104A、104B和104C中的一个或多个。作为另一示例,交换机***包括一个或多个晶体管,所述晶体管促进节点组合件服务器108与节点1、2和3中的一个或多个之间的数据传送。作为又另一示例,交换机***包括一个或多个交换机,每个交换机在断开位置与闭合位置之间改变其位置。交换机的断开位置使节点组合件服务器108与耦合到交换机的节点解耦。交换机的闭合位置将节点组合件服务器108耦合到与交换机耦合的节点。
如本文中所使用的计算机网络用于在客户端装置与服务器之间、或在客户端装置与节点之间、或在多个客户端装置之间等传送数据,以促进分布式游戏引擎102的操作。计算机网络的示例包括例如互联网等广域网(WAN)、或例如互联网等局域网(LAM)或其组合。
分布式游戏引擎102包括游戏代码,例如游戏计算机程序、用于生成VR场景的计算机程序、用于生成AR场景的计算机程序等,以及其他代码,例如物理代码、渲染代码等,下文将进一步描述所述代码以生成VR场景或AR场景。作为示例,分布式游戏引擎102的一部分由节点1存储并执行,分布式游戏引擎102的另一部分由节点2存储并执行,且分布式游戏引擎102的其余部分由节点3存储并执行。
客户端装置104A生成游戏请求202并通过计算机网络112将其发送到云游戏服务器110。云游戏服务器110基于游戏请求202确定由客户端装置104A的用户1访问以生成游戏请求202的用户帐户是否被授权访问分布式游戏引擎102。客户端装置104A的用户1通过客户端装置104A的输入装置(例如,手持控制器、相机等)或外部相机来提供登录信息例如用户名、密码等以访问用户帐户。当登录信息被云游戏服务器110认证时,向客户端装置104A的用户1提供对用户帐户的访问。在确定用户帐户被授权访问分布式游戏引擎102后,云游戏服务器110即刻向节点组合件服务器108发送信号来使得能够执行分布式游戏引擎102。
在一个实施方案中,除了认证登录信息之外,还在使客户端装置104A能够耦合到节点组合件服务器108以执行分布式游戏引擎102之前执行其他操作。例如,耦合到计算机网络112的网络测试服务器从云游戏服务器110接收信号来使得能够执行分布式游戏引擎102,并且对多个数据中心执行带宽ping。网络测试服务器将测试结果提供给云资源管理器服务器。云资源管理器耦合到计算机网络112。云资源管理器112确定客户端装置104A将连接到哪个数据中心。此确定基于测试结果和其他信息,例如,足够数目个节点的可用性以及游戏存储于哪个数据中心中。云组合件选择具有节点1、2和3的数据中心,并向节点组合件服务器108发送信号来选择节点1、2和3中的一个或多个。
在从云游戏服务器110或云组合件服务器接收到信号后,节点组合件服务器108即刻通过交换机***106选择节点1、2和3中的将执行分布式游戏引擎102的一个或多个,以初始化节点1、2和3中的所述一个或多个。例如,节点组合件服务器108向交换机***106的控制输入发送信号来耦合到节点1和2。在控制输入处接收到信号时,交换机***106闭合两个交换机的位置以将节点组合件服务器108连接到节点1和2,并断开其交换机中的一个的位置以断开节点组合件服务器108与节点3的连接。执行分布式游戏引擎102以通过计算机网络112从节点1、2和3中的一个或多个向客户端装置104A、104B和104C中的一个或多个传送数据,例如经编码帧。
应注意,***100包括除图1中说明的节点以外的数个节点。例如,***100包括50个节点或25个节点或5个节点,在所述节点之间分布游戏引擎102。
图2是用以说明关于节点的细节的***200的实施方案的图式。节点1包括中央处理单元(CPU)202A、存储器装置204A、图形处理单元(GPU)206A、网络通信装置208A和内部通信装置210A。类似地,节点2包括CPU 202B、存储器装置204B、GPU 206B、网络通信装置208B和内部通信装置210B。
如本文中所使用的节点的CPU用以处理(例如,分析、检查等)从节点组合件服务器108或从客户端装置104A至104C中的一个或多个接收且存储于耦合到CPU的存储器***内的数据。CPU的示例包括处理器、专用集成电路(ASIC)和可编程逻辑装置(PLD)。
存储器装置是从中读取数据或向其写入数据的装置。存储器装置的示例包括只读存储器(ROM)装置或随机存取存储器(RAM)装置或其组合。为了说明,存储器装置包括闪存或独立磁盘冗余阵列(RAID)。
如本文中所使用的GPU执行渲染计算机程序以生成视频帧,所述视频帧包括AR场景或VR场景的纹理和照明信息。GPU的示例包括处理器、ASIC和PLD。在一个实施方案中,术语“视频帧”与“图像帧”在本文中可互换使用。
内部通信装置用以在一个节点与另一节点之间传达数据。内部通信装置应用内部通信协议,例如,直接存储器访问(DMA)协议、远程DMA(RDMA)协议、基于会聚以太网的RDMA、Infiniband、以太网协议、定制协议、串行传送协议、并行传送协议、通用串行总线(USB)协议、无线协议、蓝牙协议、有线协议、通用数据报协议(UDP)、基于互联网协议的UDP、基于IP协议的传输控制协议(TCP)、基于TCP/IP的以太网等,以在两个节点之间传达数据。作为DMA的示例,节点的内部通信芯片例如PCI高速非透明交换芯片、RDMA芯片或基于聚合以太网的RDMA芯片或Infiniband芯片通过周边部件互连高速(PCIe)通信总线进行通信,以直接写入到一个或多个其他节点中的存储器装置或从所述存储器装置进行读取。此外,在比如PCIe等通信总线中,例如GPU等周边装置和其他装置都是基于存储器的,因为每个周边装置在总线上都具有分配的存储器地址空间。为了说明,一个节点的GPU应用内部通信协议以写入到另一节点的GPU的寄存器或缓冲器或从其进行读取。以此方式,节点通过共享的邮箱寄存器与另一节点进行通信。当另一节点读取到节点或从所述节点写入时,在节点的CPU上运行的应用会中断。另一节点在读取到所述节点或从所述节点写入之前发送中断信号。
内部通信装置的示例包括处理器、ASIC和PLD。为了说明,内部通信装置是PCI高速非透明交换芯片或RDMA芯片或基于聚合以太网的RDMA芯片或Infiniband芯片。作为另一说明,内部通信装置是网络接口控制器或网络接口卡(NIC)、使用串行数据传送来进行通信的装置、使用并行数据传送来进行通信的装置或使用通用串行总线(USB)协议来进行通信的装置。
应注意,与以太网协议或TCP协议或UDP协议相比,PCI高速和RDMA技术具有显著更低的等待时间并提供更高的性能,因为其消除了由CPU执行的操作***上方出现的协议层。在节点已被授予访问其他节点内的数据块时,在节点内执行的应用例如执行DMA协议的DMA引擎直接从其他节点的存储器读取或写入到所述存储器,直接绕过节点内的操作***。没有网络协议,例如以太网协议或TCP协议或UDP协议,并且节点的应用决定其如何组织存储器和其内部结构。节点的内部通信芯片具有DMA引擎,且如果需要在所述节点与其他节点之间进行存储器传送操作,则内部通信芯片将执行DMA引擎以从其他节点读取和写入数据,而不涉及节点的CPU。应注意,在一个实施方案中,内部通信芯片与耦合多个节点、单个机架或甚至多个机架的交换机结构结合使用。
网络通信装置用以通过计算机网络112在节点与客户端装置之间传输数据包。例如,网络通信装置应用例如TCP/IP、UDP/IP等外部通信协议来接收和发送数据包。网络通信装置的示例包括处理器、ASIC和PLD。为了说明,网络通信装置是网络接口控制器或NIC。
CPU 202A、存储器装置204A、GPU 206A、网络通信装置208A和内部通信装置210A例如通过总线彼此耦合。类似地,CPU 202B、存储器装置204B、GPU 206B、网络通信装置208B和内部通信装置210B彼此耦合。
基于准则例如节点与客户端之间的服务质量(QoS)、节点的可用性、节点的用于向客户端传送数据并从客户端接收数据的容量、节点和客户端之间的计算机网络112的带宽容量、分配给用户帐户的订阅级别或其组合,节点组合件服务器108分配节点1、2和3中的两个或更多个。
在实施方案中,代替一个存储器装置,在节点内使用多个存储器装置来存储存储于所述存储器装置内的数据。在一个实施方案中,代替一个CPU,在节点内使用多个CPU来执行由所述CPU执行的功能。在实施方案中,代替一个GPU,在节点内使用多个GPU来执行由所述GPU执行的功能。
图3A是用以说明在节点1与2之间分布游戏引擎102的***300的实施方案的图式。节点组合件服务器108确定选择用于分布游戏引擎的节点1和2。在确定选择节点1和2之后,节点组合件服务器108即刻向交换机***106发送控制信号,以将节点组合件服务器108耦合到节点1的CPU 202A和节点2的CPU 202B。在一个实施方案中,代替节点组合件服务器108,云资源管理器确定选择节点1和2来分布游戏引擎,并向交换机***106发送控制信号以将节点组合件服务器108耦合到节点1的CPU 202A和节点2的CPU 202B。在一个实施方案中,云资源管理器执行本文中描述为由节点组合件服务器108执行的功能。在实施方案中,云资源管理器将其功能委派给节点组合件服务器108来加以执行。
此外,节点组合件服务器108发送标识将用以在内部通信装置210A与内部通信装置210B之间进行数据通信的内部通信协议的信息。例如,节点组合件服务器108通过交换机***106将软件开发工具包(SDK)发送到内部通信装置210A和内部通信装置210B。程序员用户使用SDK来对内部通信装置进行编程,以使用内部通信协议来与另一内部通信装置进行通信。作为另一示例,节点组合件服务器108通过交换机***106将内部通信协议发送到内部通信装置210A和内部通信装置210B。内部通信装置210A和210B应用内部通信协议以彼此通信。
此外,节点组合件服务器108根据标识待执行游戏的信号确定节点1和2中的哪一个具有用于执行游戏以生成VR场景或AR场景的游戏引擎。从云游戏服务器110接收标识游戏的信号。例如,节点组合件服务器108从标识游戏的信号中标识出游戏引擎A存储于节点1内。在一个实施方案中,节点组合件服务器108通过交换机***106向节点1和2发送请求信号,以确定节点1和2中的哪一个具有游戏引擎A。
在确定任何节点不具有游戏引擎A的一个实施方案中,节点组合件服务器108向耦合到计算机网络112的存储服务器发送标识游戏的信号用于接收游戏引擎A。游戏引擎A存储于存储服务器中。节点组合件服务器108与存储服务器通信以将游戏引擎A发送到节点1和/或2。
当节点1具有游戏引擎A时,节点组合件服务器108通过交换机***106向CPU 202A发送命令信号,以将游戏引擎A从存储器装置204A分布到节点2。例如,节点组合件服务器108向CPU 202A发送命令信号,以将游戏引擎A的副本传送到节点2。
当接收到命令信号时,CPU 202A从存储器装置204A访问游戏引擎A,并将游戏引擎A发送到内部通信装置210A。内部通信装置210A将内部通信协议应用于游戏引擎A,以生成例如帧、数据包等传送单元,并将所述传送单元发送到内部通信装置210B。内部通信装置210B将内部通信协议应用于接收到的传送单元以提取游戏引擎A,并将游戏引擎A发送到存储器装置204B以进行存储。
在一个实施方案中,CPU 202A对于将游戏引擎A从节点1传送到节点2没有作用或作用非常有限。例如,在从节点1的内部通信装置210A获得游戏引擎A的存储器定位之后,节点2的内部通信装置210B将游戏引擎A从节点1的存储器装置204A复制到节点2的存储器装置204B。CPU 202A或内部通信装置210A早先向节点2的内部通信装置210B报告存储器装置204A内的游戏引擎A的定位。例如,CPU 202A或内部通信装置210A早先向节点组合件服务器108报告存储器装置204A内的游戏引擎A的定位。作为另一示例,CPU 202A或内部通信装置210A早先向节点2的内部通信装置210B报告存储器装置204A内的游戏引擎A的定位。
图3B是云游戏服务器110的实施方案的图式。云游戏服务器110包括处理器310、存储器装置312和通信装置314。处理器的示例包括CPU、ASIC和PLD。通信装置314的示例包括网络接口控制器、NIC、使用串行数据传送来进行通信的装置、使用并行数据传送来进行通信的装置、和使用USB协议来进行通信的装置。为了说明,通信装置314应用网络通信协议,例如TCP/IP。
存储器装置312存储多个用户帐户1到n的标识符,其中n是大于1的整数。例如,存储器装置310存储用户帐户1的用户标识符(ID)1和用户帐户2的用户ID 2。用户ID包括一个或多个字母数字字符或符号或其组合,并由处理器310分配给用户帐户。用户ID的示例包括用户名、密码或其组合。用户ID是唯一的,因为被处理器310分配给用户帐户的用户ID没有被处理器310分配给任何其他用户帐户。处理器310确定通过客户端装置和计算机网络112从用户接收到的用户ID是否被分配给任何其他用户帐户。在确定用户ID被分配给另一用户帐户后,处理器310即刻通过客户端装置向用户指示以提供另一用户ID。
存储器装置312进一步存储游戏1到N的多个游戏标题,其中N是大于1的整数。每个游戏标题标识不同的游戏。例如,游戏标题包括描述游戏的描述,并且所述描述不同于另一游戏的描述。使用不同游戏引擎来执行每个游戏。例如,通过运行分布式游戏引擎102来执行游戏1,且通过运行另一分布式游戏引擎来执行游戏2。
通信装置314从客户端装置104A接收游戏请求202,如图2中说明,并将游戏请求发送到处理器310。游戏请求202包括用于玩游戏1的请求。在用户1通过客户端装置104A登录到用户帐户1之后,通过用户帐户1接收到游戏请求202。用户1通过经由客户端装置104A提供用户ID1来登录到用户帐户1。通过计算机网络112和通信装置314将用户ID1从客户端装置104A传达到处理器310。处理器310确定用户ID1是否真实,例如是否与存储于存储器装置312中的用户ID匹配,且在确定匹配后,处理器310允许客户端装置104A登录用户帐户1。
在接收到游戏请求202后,处理器310即刻确定用户帐户1是否被授权访问游戏1。在存储器装置312中存储授权,且基于各种因素提供授权,因素例如通过用户帐户1购买的游戏、用户帐户1中存储的用户1的人口统计、用户1通过用户帐户1获得的游戏点数等。在确定用户帐户被授权访问游戏1后,处理器310即刻通过通信装置314向图2中说明的节点组合件服务器108发送允许用户帐户1访问以玩游戏1的指令。
在一个实施方案中,本文中描述为由处理器310执行的功能由多个处理器代替执行。在实施方案中,存储于存储器装置312内的数据被替代地存储于多个存储器装置中。
图3C是节点组合件服务器108的实施方案的图式。节点组合件服务器108包括处理器350、存储器装置352和通信装置354。通信装置354的示例包括网络接口控制器、NIC、使用串行数据传送来进行通信的装置、使用并行数据传送来进行通信的装置、和使用USB协议来进行通信的装置。
存储器装置352存储用户帐户1到n、多个订阅级别1、2和3与数个节点之间的对应关系,例如映射、列表、一对一关系等。例如,存储器装置352具有以下条目:为用户帐户1分配订阅级别1,且将订阅级别1定义为允许使用两个节点来玩通过用户帐户1请求访问的游戏。作为另一示例,存储器装置352具有以下另一条目:为用户帐户2分配订阅级别3,且将订阅级别3定义为允许使用四个节点来玩通过用户帐户2请求访问的游戏。
节点数目越大,用于执行分布式游戏引擎102的处理能力(例如,GPU和CPU的数目)越高。例如,订阅级别3对应于使用4个节点来执行分布式游戏引擎102,且订阅级别1对应于使用2个节点来执行分布式游戏引擎102。当每个节点具有一个GPU和一个CPU时,订阅级别3对应于4个节点,例如4个GPU和4个CPU,且订阅级别1对应于2个节点,例如2个GPU和2个CPU。与订阅级别1相比,订阅级别3分配更大的处理能力。
基于用户帐户的类型,将订阅级别分配给用户帐户。例如,当用户帐户用以以规则方式例如周期地、每周、每天等玩一个或多个游戏时,为所述用户帐户分配的订阅级别高于用以以不规则方式玩一个或多个游戏的用户帐户。作为另一示例,当第一用户帐户用于玩一个或多个游戏并且在一个或多个游戏中购买的虚拟物品比在第二用户帐户中购买的虚拟物品更多时,为第一用户帐户分配比第二用户帐户更高的订阅级别。作为又一示例,监视以规则方式玩一个或多个游戏和购买更高数目个虚拟物品两者,以确定分配更高的订阅级别。
存储器装置352进一步存储游戏的图形级别与执行分布式游戏引擎以允许玩游戏的节点数目之间的对应关系,例如映射、列表、一对一关系等。例如,存储器装置352包括条目,所述条目指示当游戏的图形级别是A时,执行用于玩游戏的分布式游戏引擎的节点数目是4。作为另一示例,存储器装置352包括条目,所述条目指示当游戏的图形级别是B时,执行用于玩游戏的分布式游戏引擎的节点数目是3。作为又另一示例,存储器装置352包括条目,所述条目指示当游戏的图形级别是C时,执行用于玩游戏的分布式游戏引擎的节点数目是2。
基于准则定义图形级别,例如游戏图像的分辨率、用于生成游戏帧的颜色数目、用于生成帧的强度级别数目、用于玩游戏的帧速率、在游戏中改变位置的虚拟物品数目、在游戏中保持静止的背景的数目、或其组合。作为示例,当帧速率增加,或分辨率增加,或强度级别数目增加,或虚拟物品的数目增加,或用于玩游戏的帧中使用的颜色数目增加时,用以执行分布式游戏引擎的节点数目增加。为了说明,在装置之间的流会话的切换的情况下,节点的数目增加。为了进一步说明,用户正在他/她的智能手机或平板电脑上玩游戏。当用户到达他/她的家时,用户希望将游戏传送到他/她的PlayStationTM游戏控制台。智能手机或平板电脑以低分辨率和低帧速率显示游戏,但是PlayStationTM游戏控制台结合4K或8K电视应用更高的分辨率和更高的帧速率。为了支持更高的分辨率和更高的帧速率,增加节点数目。在2016年4月28日提交的且标题为“云游戏装置切换(Cloud Gaming Device Handover)”的第15/141,799号美国专利申请中描述了此切换,所述美国专利申请以全文引用的方式并入本文中。作为另一示例,当帧速率减少,或分辨率减少,或强度级别数目减少,或虚拟物品的数目减少,或用于玩游戏的帧中使用的颜色数目减少时,用以执行分布式游戏引擎的节点数目减少。
通信装置354从云游戏服务器110的通信装置314接收允许访问游戏1的指令,并将所述指令发送到处理器350。指令包括被分配给用户帐户1的用户ID1。处理器350访问存储器装置352,以基于用户ID1确定被分配给用户帐户1的对应订阅级别。例如,处理器350确定用户帐户1被分配订阅级别1且两个节点将被分配给用户帐户1以执行分布式游戏引擎202。
处理器350通过通信装置354将例如包括SDK的库等信息发送到节点1,或通过交换机***106发送信息以使节点1和2能够使用内部通信协议来彼此通信以促进玩游戏1。在实施方案中,通过计算机网络112,处理器350通过通信装置354向节点1和2两者发送信息,以使节点1和2能够使用内部通信协议来彼此通信以促进玩游戏1。
在一个实施方案中,不同图形级别用于玩不同的游戏。例如,图形级别C用于玩游戏1,而图形级别B用于玩游戏2。
图3D是用以说明游戏引擎的各个部分的图式。游戏引擎A包括用于玩游戏1的游戏代码A、用于恢复游戏1的状态的保存数据A、用于显示游戏1的渲染代码A、用于执行物理操作以执行游戏1的物理引擎A、以及应用音频数据来玩游戏1的音频引擎A。类似地,游戏引擎B包括用于玩游戏2的游戏代码B、用于恢复游戏2的状态的保存数据B、用于显示游戏2的渲染代码B、用于执行物理操作以执行游戏2的物理引擎B、以及应用音频数据来玩游戏2的音频引擎B。
如本文中所使用的游戏代码是计算机程序,所述计算机程序被执行以基于通过计算机网络112从客户端装置接收到的用户输入确定游戏中的下一状态。用户输入是由用户在手持控制器上进行的选择,或者是由客户端装置的传声器捕获的音频数据,或者是由位于用户所位于的真实世界环境(例如,房间、仓库、地板、定位、公园等)中的例如深度相机、红外相机、数码相机等相机捕获的图像数据,或其组合。相机捕获由用户做出的姿势,例如一个或多个手部动作、一个或多个头部动作、一个或多个腿部运动等,以生成图像数据。游戏状态定义在执行游戏时生成的虚拟场景的所有部分的特性,例如位置、定向、大小、形状和定向等。虚拟场景的部分包括虚拟对象或背景。作为示例,虚拟对象从一个视频帧移动到另一视频帧,而背景从一个视频帧到另一视频帧保持静止。作为另一示例,虚拟对象从一个视频场景移动到另一视频场景,而背景从一个视频场景到另一视频场景保持静止。作为示例,虚拟对象从一个视频帧移动到另一视频帧,并且背景从一个视频帧到另一视频帧保持静止,但是在预定数目个视频帧之后移动。虚拟对象的示例包括车辆、建筑物、用户的化身、角色、超自然英雄、武器和动物等。背景的示例包括沙漠、山脉、海洋、树木、建筑物、城市、人群等。
如本文中所使用的保存数据是在用户在从用户帐户登出之后登录到他/她的用户帐户时所访问的游戏的状态数据。例如,在游戏会话期间,用户在游戏状态下登出他/她的用户帐户。当用户重新登录到用户帐户时,客户端装置显示在用户登出用户帐户时显示的游戏状态,例如相同的虚拟现实场景等。
如本文中所使用的渲染代码是用以从虚拟场景的一个或多个部分的二维(2D)或三维(3D)模型生成图像的计算机程序。例如,渲染代码定义应用于虚拟场景的一个或多个部分的纹理和光强度。作为另一示例,渲染代码定义应用于虚拟场景的一个或多个部分的颜色、纹理、阴影和光强度。
如本文中所使用的物理引擎是被执行以确定虚拟场景(例如,虚拟现实场景、增强现实场景等)中的不同部分之间以及不同虚拟场景之间的物理关系的计算机程序。基于例如重力定律、运动定律、摩擦定律等物理定律确定物理关系。
如本文中使用的音频引擎是确定并提供音频数据以管理游戏的对应虚拟场景的计算机程序。例如,当虚拟场景的一部分发出声音时,音频引擎确定用于输出声音和声音的其他变量(例如音高、音调、振幅等)的音频数据并使音频数据与虚拟场景的该部分链接。
图4A是用以说明图1的分布式游戏引擎102的执行的***400的实施方案的图式,其中视频帧信息从节点2发送到节点1。***400包括节点1和2、计算机网络112以及客户端装置104A和104B。节点1包括音频编码器402A和视频编码器404A。但是,节点2不包括音频编码器,不包括视频编码器,并且不包括GPU。
如本文中所使用的音频编码器是根据音频文件格式或流音频格式压缩或解压缩音频数据的例如集成电路、处理器等硬件装置、或例如计算机程序等软件模块、或其组合。
如本文中所使用的视频编码器是根据视频文件格式或流视频格式(例如H.264、H.265/MPEG-H、H.263/MPEG-4、H.262/MPEG-2a、定制协议等)压缩或解压缩视频数据的例如集成电路、处理器等硬件装置、或例如计算机程序等软件模块、或其组合。
客户端装置104A包括音频/视频(A/V)分类器418、音频解码器420、视频解码器422、显示装置424、通信装置426和音频输出装置430。A/V分类器是区分开音频数据与视频数据的硬件装置,例如集成电路、处理器等,或软件模块,例如计算机程序等。此外,音频解码器根据音频文件格式或流音频格式对经编码音频帧进行解码,例如解压缩,以输出音频帧。音频解码器还对音频帧进行编码。类似地,视频解码器根据视频文件格式或流视频格式对经编码视频帧进行解码,例如解压缩,以输出视频帧。此外,视频解码器对视频帧进行编码。显示装置的示例包括头戴式显示器(HMD)或液晶显示(LCD)装置或发光二极管(LED)显示装置、或电视的显示屏、或监视器、或平板电脑的显示屏、或智能手机的显示屏。通信装置的示例包括网络接口控制器或NIC。音频输出的示例包括将数字音频数据转换为模拟音频数据的数模转换器、和放大器和一个或多个扬声器。放大器的输入耦合到数模转换器,且放大器的输出耦合到一个或多个扬声器。
CPU 202A执行游戏引擎A以生成视频帧信息406A。例如,CPU 202A执行游戏代码A且CPU 202A和/或GPU 206A执行物理引擎A,以生成游戏1的一个或多个虚拟场景的位置、大小、形状和定向。如本文中所使用的视频帧信息的示例包括一个或多个虚拟场景的位置、大小、形状、定向或其组合。
类似地,CPU 202B执行游戏引擎A以生成视频帧信息406B。例如,CPU 202B执行游戏代码A和物理引擎A,以生成游戏1的一个或多个虚拟场景的位置、大小、形状和定向。此外,音频帧412B由节点2的一个或多个处理器例如CPU 202B生成。音频帧412B包括与视频帧信息406B相关联的音频数据,因为音频数据用于与显示具有视频帧信息406B的一个或多个虚拟场景同时地发出声音。
节点2的内部通信装置210B将内部通信协议应用于视频帧信息406B和音频帧412B,以生成打包的信息414,例如数据包、传送单元等,并通过通信链路416例如允许将内部通信协议中打包的数据传送的电缆发送打包的信息414到内部通信装置210A。链路416的图示是PCIe通信总线。
内部通信装置210A接收打包的信息414并将内部通信协议应用于打包的信息414,例如,对传送单元进行解包,以从打包的信息414提取视频帧信息406B和音频帧412B。视频帧信息406B和音频帧412B被存储于存储器装置204A中。
GPU 206A从存储器装置204A访问视频帧信息406A和视频帧信息406B,并将渲染代码A应用于视频帧信息406A和视频帧信息406B,以生成多个视频帧408(A+B),所述视频帧包括从视频信息406A生成的视频帧408A,并包括从视频信息406B生成的视频帧408B。作为示例,视频帧包括一个或多个虚拟场景的照明、强度、颜色、纹理、阴影或其组合。
此外,多个音频帧410A由节点1的一个或多个处理器例如CPU 202A等生成。音频帧410A与视频帧408A相关联,因为音频帧为视频帧408A内的场景的一部分提供音频数据。例如,音频帧410A包括用于将由虚拟对象发出的声音的音频数据。作为另一示例,音频帧410A包括音频数据,以生成待在一个或多个虚拟场景内由背景发出的声音。
音频编码器402A对音频帧410A和音频帧412B进行编码以生成经编码音频帧。类似地,视频编码器404A对视频帧408(A+B)进行编码以生成经编码视频帧。网络通信装置208A将外部通信协议应用于经编码音频帧和经视频编码视频帧以生成多个帧数据包,并且通过计算机网络112将帧数据包发送到客户端装置104A。
通信装置426接收帧数据包,并通过应用外部通信协议来对帧数据包进行解包以输出经编码视频帧和经编码音频帧。A/V分类器418区分开经编码视频帧和经编码音频帧,并且将经编码视频帧发送到视频解码器422并将经编码音频帧发送到音频解码器420。视频解码器422对经编码视频帧进行解码以输出视频帧408(A+B)。此外,音频解码器420对经编码音频帧进行解码以输出音频帧410A和412B。
显示装置424显示来自视频帧408(A+B)的一个或多个虚拟场景。例如,显示装置424控制显示装置424的颜色元素和光强度元素以生成虚拟场景,所述虚拟场景包括虚拟场景的所有部分的位置、定向、颜色、纹理、光强度、阴影或其组合。此外,音频输出装置430输出来自音频帧410A和412B的声音。例如,音频输出430的模数转换器将音频帧410A和412B从数字格式转换成模拟格式以生成模拟音频数据。模拟音频数据被音频输出装置430的放大器放大,以生成经放大音频数据。音频输出装置430的一个或多个扬声器将经放大的音频数据从电能转换为声能。
在实施方案中,节点1充当主机,以将生成视频帧信息406B和音频帧412B的任务委派给节点2。
在一个实施方案中,在多玩家游戏中,在图4A中描述且从网络通信装置208A发送的帧数据包被广播到多个客户端装置,例如客户端装置104A和104B等。例如,帧数据包通过计算机网络112从网络通信装置208A发送到客户端装置104A和104B来玩游戏。此广播会节能,因为用于生成帧数据包的计算由节点1和节点2执行一次,且帧数据包从节点1被广播到多个客户端装置。
在实施方案中,包括音频和视频数据并且在图4A中描述且从网络通信装置208A发送的帧数据包被发送到游戏的观众。例如,帧数据包通过计算机网络112从网络通信装置208A发送到托管例如YoutubeTM或TwitchTM等的观众服务或电子体育服务的服务器,以供观众进一步观看。
在一个实施方案中,节点1包括渲染音频数据以生成音频波的音频渲染器,例如集成电路。然后,音频波由音频编码器402A编码。基于客户端装置104A的扬声器配置,例如立体声5.1或立体声7.1,执行音频数据的渲染。
在节点1不包括音频渲染器的实施方案中,音频数据由音频编码器402A编码,且通过计算机网络112从节点1流传输到客户端装置104A。客户端装置104A包括音频渲染器,所述音频渲染器渲染音频数据以生成音频波。例如,客户端装置104A通过将每个虚拟对象放置在空间中并计算音频波来渲染音频波。计算取决于客户端装置104A的例如立体声5.1或立体声7.1等扬声器的数目。
在一个实施方案中,在节点2内不执行音频数据的渲染以生成音频波。节点2不包括音频渲染器。实际上,与视频帧信息406B相关联的音频数据通过内部通信装置210B和210A从节点2发送到节点1,并且音频波的渲染由节点1的音频渲染器执行。然后,音频波由音频编码器402A编码。
图4B是用以说明图1的分布式游戏引擎102的另一实施方案的***450的实施方案的图式,其中视频帧从节点2A发送到节点1。***450包括节点1、节点2A、计算机网络112以及客户端装置104A和104B。除了节点2A包括GPU 206B之外,节点2A与图4A的节点2相同。节点2A不包括音频编码器和视频编码器。
GPU 206B应用渲染代码A以根据视频帧信息406B生成多个视频帧452B。例如,GPU206B确定待应用于一个或多个虚拟场景以生成视频帧452B的照明强度、纹理、阴影和颜色。
节点2的内部通信装置210B将内部通信协议应用于视频帧452B和音频帧412B,以生成打包的信息454,例如数据包、传送单元等,并通过通信链路416向内部通信装置210A发送打包的信息454。在一个实施方案中,在生成音频帧412B之前,在节点2内对音频数据执行例如采样率转换、放大和音频滤波等其他操作。音频数据随后被转换为与显示视频帧452B同时输出的声音。
内部通信装置210A接收打包的信息454并将内部通信协议应用于打包的信息454,例如,对传送单元等进行解包,以从打包的信息452提取视频帧452B和音频帧412B。视频帧信息406B和音频帧412B被存储于存储器装置204A中。
GPU 206A从存储器装置204A访问视频帧信息406A,并将渲染代码A应用于视频帧信息406A以生成多个视频帧452A。视频编码器404A对视频帧452A和视频帧452B进行编码以生成经编码视频帧。音频编码器402A对音频帧410A和音频帧412B进行编码以生成经编码音频帧。网络通信装置208A将外部通信协议应用于经编码音频帧和经编码视频帧以生成多个帧数据包,并且通过计算机网络112将帧数据包发送到客户端装置104A。
在实施方案中,节点1充当主机,以将生成视频帧452B的任务委派给节点2A。
在一个实施方案中,在多玩家游戏中,在图4B中描述的从网络通信装置208A发送的帧数据包被广播到多个客户端装置,例如客户端装置104A和104B等。例如,帧数据包由节点1和2A生成一次,且通过计算机网络112从网络通信装置208A发送到客户端装置104A和104B来玩游戏以节能。不需要为被允许访问游戏引擎A的每个不同客户端装置再次生成帧数据包。
图5A是用以说明图1的分布式游戏引擎102的又另一实施方案的***500的实施方案的图式。***500包括节点1、节点2B、计算机网络112以及客户端装置104A1。除了节点2B包括音频编码器402B、视频编码器404B和网络通信装置208B之外,节点2B与图4B的节点2A相同。
除了客户端装置104A1包括视频解码器1、视频解码器2、音频解码器1、音频解码器2和帧组织器502之外,客户端装置104A1与图4B的客户端装置104A相同。帧组织器502是例如处理器、集成电路等硬件装置或例如计算机程序等软件模块、或其组合,以按连续顺序组织视频帧1到4,以在显示装置424上加以显示。此外,帧组织器502按连续顺序组织音频帧1到4,来按连续顺序输出与视频帧1到4相关联的声音。
视频帧信息406A包括视频帧信息1和视频帧信息3。类似地,视频帧信息406B包括视频帧信息2和视频帧信息4。视频帧信息1是关于虚拟场景的视频帧1的信息,视频帧信息2是关于虚拟场景的视频帧2的信息,视频帧信息3是关于虚拟场景的视频帧3的信息,且视频帧信息4是关于虚拟场景的视频帧4的信息。作为示例,每个视频帧信息1到4包括虚拟场景中的一个或多个虚拟对象和/或背景的位置、定向、大小和形状。
将以连续顺序显示视频帧1到4。例如,在客户端装置104A1上显示视频帧1之后,将在客户端装置104A1上显示视频帧2。在客户端装置104A1上显示视频帧2之后,将在客户端装置104A1上显示视频帧3。在客户端装置104A1上显示视频帧3之后,将在客户端装置104A1上显示视频帧4。在一个实施方案中,如本文所使用的视频帧由图像元素行组成,并且具有由图像元素的数目控制的分辨率。每个图像元素具有颜色和光强度,以定义虚拟对象或背景的形状、大小和纹理。
视频帧452A包括视频帧1和3。此外,视频帧452B包括视频帧2和4。类似地,音频帧410A包括音频帧1和音频帧3,且音频帧410B包括音频帧2和音频帧4。音频帧1具有音频数据,所述音频数据将在显示视频帧1的同时由客户端装置104A1发出为声音。类似地,音频帧2具有将在显示视频帧2的同时由客户端装置104A1发出为声音的音频数据,音频帧3具有将在显示视频帧3的同时由客户端装置104A1发出为声音的音频数据,且音频帧4具有将在显示视频帧4的同时由客户端装置104A1发出为声音的音频数据。
在生成视频帧1和3之前,CPU 202A和GPU 206A等待从节点2B接收视频帧2和4。在实施方案中,在生成视频帧1和3之前,CPU 202A通过内部通信装置206A、通信链路416和内部通信装置206B向CPU 202B发送对视频帧2和4以及对音频帧2和4的请求。在接收到视频帧2和4并将视频帧2和4存储于存储器装置204A中时,CPU 202A从视频帧4提取视频帧信息4,从视频帧2提取视频帧信息2,并应用视频帧信息4和视频帧信息2以生成视频帧信息3并生成视频帧信息1。例如,视频帧信息2指示虚拟球处于位置2,而视频帧信息4指示虚拟球处于位置4。CPU 202A根据位置2和4确定虚拟球将位于位置2与4之间的位置3。视频帧信息3包括虚拟球的位置3。作为另一示例,视频帧信息2指示虚拟球位于位置2,并且物理引擎代码A指示将遵循重力定律。CPU 202A根据位置2和重力定律确定虚拟球将处于低于位置2的位置3处。通过GPU 206A渲染视频帧信息1以生成视频帧1,且通过GPU 206A渲染视频帧信息3以生成视频帧3。类似地,从音频帧2和/或4的音频数据生成音频帧1和/或3。
此外,视频编码器404A对视频帧1和3进行编码以生成经编码视频帧,并将经编码视频帧发送到网络通信装置208A。此外,音频编码器402A对音频帧1和3进行编码以生成经编码音频帧,并将经编码音频帧发送到网络通信装置208A。网络通信装置208A将外部通信协议应用于经编码视频帧和经编码音频帧,以生成包括经编码视频帧和经编码音频帧的多个数据包。通过计算机网络112将数据包从节点1发送到客户端装置104A1。
类似地,在生成视频帧2和4之前,CPU 202B和GPU 206B等待从节点1接收视频帧1和3。在实施方案中,在生成视频帧2和4之前,CPU 202B通过内部通信装置206B、通信链路416和内部通信装置206A向CPU 202A发送对视频帧1和3以及对音频帧1和3的请求。在接收到请求后,CPU 202A即刻将视频帧1和3以及音频帧1和3发送到内部通信装置210A。内部通信装置210A将内部通信协议应用于视频帧1和3以及音频帧1和3以生成打包的信息,并通过通信链路416将打包信息发送到内部通信装置210B。内部通信装置210B应用内部通信协议以从打包的信息提取视频帧1和3以及音频帧1和3。视频帧1和3以及音频帧1和3被存储于存储器装置204B中。
当接收到视频帧1和3并将帧1和3存储于存储器装置204B中时,CPU 202B从视频帧1提取视频帧信息1,从视频帧3提取视频帧信息3,并将游戏引擎A应用于视频帧信息1和视频帧信息3以生成视频帧信息2并生成视频帧信息4。例如,视频帧信息1指示虚拟球位于位置1,且视频帧信息3指示虚拟球处于位置3。CPU 202B根据位置1和3确定虚拟球将位于位置1与3之间的位置2。视频帧信息2包括虚拟球的位置2。作为另一示例,视频帧信息3指示虚拟球位于位置3,并且物理引擎代码A指示将遵循重力定律。CPU 202B根据位置3和重力定律确定虚拟球将处于低于位置3的位置4处。通过GPU 206B渲染视频帧信息2以生成视频帧2,且通过GPU 206B渲染视频帧信息4以生成视频帧4。类似地,从音频帧1和/或3的音频数据生成音频帧2和/或4。
此外,视频编码器404B对视频帧2和4进行编码以生成经编码视频帧,并将经编码视频数据发送到网络通信装置208B。此外,音频编码器402B对音频帧2和4进行编码以生成经编码音频帧,并将经编码音频帧发送到网络通信装置208B。网络通信装置208B将外部通信协议应用于经编码视频帧和经编码音频帧,以生成包括经编码视频帧和经编码音频帧的多个数据包。通过计算机网络112将数据包从节点2B发送到客户端装置104A1。
客户端装置104A1的通信装置426通过计算机网络112从节点1接收数据包,并且将外部通信协议应用于数据包以获得从节点1发送的经编码视频帧和经编码音频帧。类似地,通信装置426通过计算机网络112从节点2B接收数据包,并且将外部通信协议应用于数据包以获得从节点2B发送的经编码视频帧和经编码音频帧。
A/V分类器418区分开从节点1接收到的经编码音频帧、从节点2B接收到的经编码音频帧、从节点1接收到的经编码视频帧和从节点2B接收到的经编码视频帧。A/V分类器418将从节点1接收到的经编码音频帧发送到音频解码器1,将从节点2B接收到的经编码音频帧发送到音频解码器2,将从节点1接收到的经编码视频帧发送到视频解码器1,并将从节点2B接收到的经编码视频帧发送到视频解码器2。音频解码器1对从节点1接收到的经编码音频帧进行解码,且视频解码器1对从节点1接收到的经编码视频帧进行解码。类似地,视频解码器2对从节点2B接收到的经编码视频帧进行解码,且音频解码器2对从节点2B接收到的经编码音频帧进行解码。
帧组织器502从视频解码器1和2接收视频帧,并按依序连续顺序组织视频帧1到4。此外,帧组织器502从音频解码器1和2接收音频帧,并且按依序连续顺序组织音频帧1到4。例如,视频帧1和3被存储于客户端装置104A1中的缓冲器中,直到帧2和4到达客户端装置104A1为止。帧2和4可能由于网络等待时间变化而延迟到达或可能丢失。在帧2和4丢失的情况下,应用前向纠错。当应用前向纠错时,客户端装置104A1向视频编码器404A和404B以及音频编码器402A和402B通知损失。在接收到通知之后,视频编码器404A和404B以及音频编码器402A和402B不使用来自丢失帧的任何数据来对较新的帧进行编码。改为,视频编码器404A和404B以及音频编码器402A和402B使用在丢失帧之前生成或在丢失帧之后生成的其他帧来对较新帧进行编码。
将音频帧1到4从帧组织器502发送到音频输出装置430以输出与视频帧1到4相关联的声音,且将视频帧1到4从帧组织器502发送到显示装置424以显示视频帧1到4。例如,在从音频帧1输出声音的同时显示视频帧1,在从音频帧2输出声音的同时显示视频帧2,在从音频帧3输出声音的同时显示视频帧3,且在从音频帧4输出声音的同时显示视频帧4。
在一个实施方案中,视频解码器1应用与由视频解码器2应用的(例如,定制格式)不同的视频文件格式或流视频格式(例如,H.264)以对经编码视频帧进行解码。在实施方案中,音频解码器1应用与由音频解码器2应用的不同的音频文件格式或流音频格式来对经编码音频帧进行解码。
在实施方案中,代替使用两个不同的视频解码器1和2,使用单个视频解码器以对从节点1和2B接收到的经编码视频帧进行解码。此外,在一个实施方案中,代替使用两个不同的音频解码器1和2,使用单个音频解码器以对从节点1和2B接收到的经编码音频帧进行解码。
在一个实施方案中,在不使用来自视频帧2和4的任何信息的情况下生成视频帧1和3,且在不使用来自音频帧2和4的任何信息的情况下生成音频帧1和3。在此情况下,不需要将视频帧2和4以及音频帧2和4从节点2B发送到节点1。
类似地,在实施方案中,在不使用来自视频帧1和3的任何信息的情况下生成视频帧2和4,并且在不使用来自音频帧1和3的任何信息的情况下生成音频帧2和4。在此情况下,不需要将视频帧1和3以及音频帧1和3从节点1发送到节点2B。
在一个实施方案中,连续执行节点1与2B之间的视频帧1、2、3和4和/或音频帧1、2、3和4的交换,例如不超过预定延迟、按预定频率等,以实现在客户端装置104A1的显示装置424上显示视频帧1、2、3和4的帧速率。在客户端装置104A看来,节点1和2B好像是聚合节点,例如一个且同一节点。
在实施方案中,视频编码器404A对通过计算机网络112和网络通信装置208A从客户端装置104A1接收到的经编码视频数据进行解码。例如,视频数据由耦合到客户端装置104A1或者是客户端装置104A1的一部分的相机捕获,例如深度相机或网络相机或红外相机。此外,音频编码器402A对通过计算机网络112和网络通信装置208A从客户端装置104A1接收到的经编码音频数据进行解码。例如,音频数据由传声器捕获,所述传声器耦合到客户端装置104A1或者是客户端装置104A1的一部分。类似地,视频编码器404B对通过计算机网络112和网络通信装置208A从客户端装置104A1接收到的经编码视频数据进行解码。此外,音频编码器402B对通过计算机网络112和网络通信装置208A从客户端装置104A1接收到的经编码音频数据进行解码。
在每个节点1和节点2B不包括音频渲染器的实施方案中,待由视频帧1和3表示的虚拟对象的音频数据由音频编码器402A编码,且通过计算机网络112从节点1流传输到客户端装置104A1。客户端装置104A1包括音频渲染器,所述音频渲染器渲染音频数据以生成音频波。例如,客户端装置104A1通过将虚拟对象放置在空间中并计算音频波来渲染音频波。计算取决于客户端装置104A1的例如立体声5.1或立体声7.1等扬声器的数目。类似地,待由视频帧2和4表示的另一虚拟对象或背景的音频数据由音频编码器402B编码,且通过计算机网络112从节点2B流传输到客户端装置104A1。客户端装置104A1使用与用以渲染从节点1接收到的音频数据的相同的音频渲染器或另一音频渲染器,以渲染从节点2B接收到的音频数据来生成用于另一虚拟对象或背景的另一音频波。
在一个实施方案中,在多玩家游戏中,在图5A中描述的从网络通信装置208A和208B发送的帧数据包被广播到多个客户端装置,例如客户端装置104A1和另一客户端装置等。例如,帧数据包由节点1和2B生成一次,且通过计算机网络112从网络通信装置208A和208B发送到多个客户端装置来玩游戏以节能。不需要为被允许同时从节点1和2B访问游戏引擎A的每个不同客户端装置再次生成由节点1和2B生成的帧数据包。
图5B是用以说明帧1和3由节点1生成且帧2和4由图5A的节点2B或图4B的节点2A生成的图式。如帧1中指示,当由虚拟用户570在虚拟场景572A中释放时,虚拟球处于位置1和/或定向1。此外,在虚拟场景572B的帧2中,虚拟球位于位置2和/或定向2,在虚拟场景572C的帧3中,虚拟球位于位置3和/或定向3,且在虚拟场景572D的帧4中,虚拟球位于位置4和/或定向4。虚拟用户570是用户1的化身,所述用户是真实用户,例如人。虚拟球的位置2在位置1下方。此外,虚拟球的位置3在位置2下方,且虚拟球的位置4在位置2下方。
在一个实施方案中,虚拟球在所有帧1到4中都处于相同定向。在实施方案中,虚拟球在所有帧1到4中都处于相同位置,但是在帧中具有不同定向。
在一个实施方案中,在多玩家游戏中,在图5B中描述的从网络通信装置208A和208B发送的帧数据包被广播到多个客户端装置,例如客户端装置104A1和另一客户端装置等。不需要为允许从节点1和2B同时访问游戏引擎A的每个不同客户端装置再次生成由节点1和2B发送的帧数据包。
图6A是用以说明图1的分布式游戏引擎102的又另一实施方案的***600的实施方案的图式,其中来自节点的视频帧的视频帧部分用以生成另一节点的视频帧部分。***600包括节点1和2B、计算机网络112以及客户端装置104A1。
CPU 202A执行游戏引擎A以生成视频帧1的视频帧部分信息1和视频帧1的视频帧部分信息3。例如,CPU 202A执行游戏代码A且CPU 202A和/或GPU 206A执行物理引擎A,以生成游戏1的虚拟场景的一部分的位置、大小、形状和定向。如本文中所使用的视频帧部分信息的示例包括虚拟场景的一部分的位置、大小、形状、定向或其组合。虚拟场景的一部分的示例是视频帧内的虚拟对象或视频帧的背景。视频场景的一部分的另一示例是视频帧内的预定数目个邻近像素。视频场景的一部分的又另一示例是视频帧的象限内的预定数目个邻近像素。视频场景的一部分的再另一示例是视频帧内的预定数目个邻近行。虚拟场景的一部分的另一示例是视频帧内的一个或多个虚拟对象。虚拟场景的一部分的又另一示例是视频帧内的虚拟对象的一部分或视频帧内的背景的一部分。
GPU 206A从存储器装置204A访问视频帧部分信息1,并将渲染代码A应用于视频帧部分信息1以生成视频帧1的视频帧部分1。类似地,GPU 206A从存储器装置204A访问视频帧部分信息3,并将渲染代码A应用于视频帧部分信息3以生成视频帧1的视频帧部分3。例如,GPU 206A确定将颜色、阴影、强度和/或纹理应用于视频帧1中的第一虚拟对象,并将颜色、阴影、强度和/或纹理应用于视频帧3中的背景。
此外,音频帧部分1和音频帧部分3由节点1的一个或多个处理器例如CPU 202A等生成。音频帧部分1与视频帧部分1相关联,因为音频帧部分1提供将由视频帧1内的视频帧部分1发出的声音的音频数据。例如,音频帧部分1包括用于将由音频帧1内的虚拟对象或背景或一部分发出的声音的音频数据。音频帧部分3与视频帧部分3相关联,因为音频帧部分3提供将由视频帧1内的视频帧部分3发出的声音的音频数据。例如,音频帧部分3包括用于将由视频帧1内的虚拟对象或背景或一部分发出的声音的音频数据。
类似地,CPU 202B执行游戏引擎A以生成视频帧部分信息2和视频帧部分信息4。例如,CPU 202B执行游戏代码A,且CPU 202B和/或GPU 206B执行物理引擎A,以生成游戏1的视频帧1内虚拟场景的一部分的位置、大小、形状和定向,为此节点1生成视频帧部分1和视频帧部分3。
GPU 206B从存储器装置204B访问视频帧部分信息2,并将渲染代码A应用于视频帧部分信息2以生成视频帧1的视频帧部分2。类似地,GPU 206B从存储器装置204B访问视频帧部分信息4,并将渲染代码A应用于视频帧部分信息4以生成视频帧1的视频帧部分4。例如,GPU 206B确定将颜色、强度和/或纹理应用于视频帧1中的第二虚拟对象,并将颜色、强度和/或纹理应用于视频帧1内的第三虚拟对象。第二虚拟对象不同于第一虚拟对象,且第三虚拟对象不同于第一和第二虚拟对象。为了说明,第一虚拟对象是用户1的化身,第二虚拟对象是虚拟球,且第三虚拟对象是作为化身的宠物的狗。
此外,音频帧部分2和4由节点2B的一个或多个处理器例如CPU 202B生成。音频帧部分2包括与视频帧部分2相关联的音频数据,因为音频数据将由视频帧部分2作为声音发出。此外,音频帧部分4包括与视频帧部分4相关联的音频数据,因为音频数据将由视频帧部分4作为声音发出。
此外,视频编码器404A对视频帧部分1和3进行编码以生成经编码视频帧部分,并将经编码视频帧部分发送到网络通信装置208A。此外,音频编码器402A对音频帧部分1和3进行编码以生成经编码音频帧,并将经编码音频帧部分1和3发送到网络通信装置208A。网络通信装置208A将外部通信协议应用于经编码视频帧部分和经编码音频帧部分,以生成包括经编码视频帧部分和经编码音频帧部分的多个数据包。通过计算机网络112将数据包从节点1发送到客户端装置104A1。
而且,视频编码器404B对视频帧部分2和4进行编码以生成经编码视频帧部分,并将经编码视频帧部分发送到网络通信装置208B。此外,音频编码器402B对音频帧部分2和4进行编码以生成经编码音频帧部分,并将经编码音频帧部分发送到网络通信装置208B。网络通信装置208B将外部通信协议应用于经编码视频帧部分和经编码音频帧部分,以生成包括经编码视频帧部分和经编码音频帧部分的多个数据包。通过计算机网络112将数据包从节点2B发送到客户端装置104A1。
客户端装置104A1的通信装置426通过计算机网络112从节点1接收数据包,并且将外部通信协议应用于数据包以获得从节点1发送的经编码视频帧部分和经编码音频帧部分。类似地,通信装置426通过计算机网络112从节点2B接收数据包,并且将外部通信协议应用于数据包以获得从节点2B发送的经编码视频帧部分和经编码音频帧部分。
A/V分类器418区分开从节点1接收到的经编码音频帧部分、从节点2B接收到的经编码音频帧部分、从节点1接收到的经编码视频帧部分和从节点2B接收到的经编码视频帧部分。A/V分类器418将从节点1接收到的经编码音频帧部分发送到音频解码器1,将从节点2B接收到的经编码音频帧部分发送到音频解码器2,将从节点1接收到的经编码视频帧部分发送到视频解码器1,并将从节点2B接收到的经编码视频帧部分发送到视频解码器2。音频解码器1对从节点1接收到的经编码音频帧部分进行解码,且视频解码器1对从节点1接收到的经编码视频帧部分进行解码。类似地,视频解码器2对从节点2B接收到的经编码视频帧部分进行解码,且音频解码器2对从节点2B接收到的经编码音频帧部分进行解码。视频帧部分1到4显示于显示装置424上,且音频帧部分1到4由音频输出装置430作为声音输出。例如,在从音频部分1输出声音的同时显示视频帧部分1,在从音频帧部分2输出声音的同时显示视频帧部分2,在从音频帧部分3输出声音的同时显示视频帧部分3,且在从音频帧部分4输出声音的同时显示视频帧部分4。
在一个实施方案中,在生成视频帧部分1和3之前,CPU 202A和GPU 206A等待从节点2B接收视频帧部分2和4。例如,在生成视频帧部分1和3之前,CPU 202A通过内部通信装置206A、通信链路416和内部通信装置206B向CPU 202B发送对视频帧部分2和4以及对音频帧部分2和4的请求。当接收到视频帧部分2和4并将视频帧部分2和4存储于存储器装置204A中时,CPU 202B从视频帧部分4提取视频帧部分信息4,从视频帧部分2提取视频帧部分信息2,并应用视频帧部分信息4和/或视频帧部分信息2以生成视频帧部分信息3和/或生成视频帧部分信息1。例如,视频帧部分信息2指示虚拟树干的第二部分位于位置2,且视频帧信息4指示虚拟树干的第四部分处于位置4。CPU 202A根据虚拟树干的位置2和4确定虚拟树干的第三部分将位于虚拟树干的位置2与4之间的位置3。视频帧部分信息3包括虚拟树干的第三部分的位置3。作为另一示例,视频帧部分信息2指示虚拟树干的第二部分处于位置2,并且物理引擎代码A指示虚拟树干将触摸视频帧1中的虚拟地面。CPU 202A根据位置2和物理引擎代码A确定虚拟树干的第三部分将位于虚拟树干的位置2下方的位置3。通过GPU 206A渲染视频帧部分信息1以生成视频帧部分1,且通过GPU 206A渲染视频帧部分信息3以生成视频帧部分3。
类似地,在此实施方案中,在生成视频帧部分2和4之前,CPU 202B和GPU 206B等待从节点1接收视频帧部分1和3。例如,在生成视频帧部分2和4之前,CPU 202B通过内部通信装置206B、通信链路416和内部通信装置206A向CPU 202A发送对视频帧部分1和3以及对音频帧部分1和3的请求。在接收到请求后,CPU 202A即刻将视频帧部分1和3以及音频帧部分1和3发送到内部通信装置210A。内部通信装置210A将内部通信协议应用于视频帧部分1和3以及音频帧部分1和3以生成打包的信息,并通过通信链路416将打包的信息发送到内部通信装置210B。内部通信装置210B应用内部通信协议以从打包的信息提取视频帧部分1和3以及音频帧部分1和3。视频帧部分1和3以及音频帧部分1和3被存储于存储器装置204B中。
在接收到视频帧部分1和3并将视频帧部分1和3存储于存储器装置204B中后,CPU202B即刻从视频帧部分1提取视频帧部分信息1,从视频帧部分3提取视频帧部分信息3,并应用视频帧部分信息1和/或视频帧部分信息3以生成视频帧部分信息2和/或生成视频帧部分信息4。例如,视频帧部分信息1指示虚拟树干的第一部分位于位置1,且视频帧部分信息3指示虚拟树干的第三部分处于位置3。CPU 202B根据虚拟树干的位置1和3确定虚拟树干的第二部分将位于虚拟树干的第一部分的位置1与虚拟树干的第三部分的位置3之间的位置2。视频帧部分信息2包括虚拟树干的第二部分的位置2。作为另一示例,视频帧部分信息3指示虚拟树干的第三部分处于位置3,并且物理引擎代码A指示虚拟树干将触摸视频帧1中的虚拟地面。CPU 202B根据虚拟树干的第三部分的位置3和物理引擎代码A确定虚拟树干的第四部分将位于虚拟树干的第三部分的位置3下方的位置4。通过GPU 206B渲染视频帧部分信息2以生成视频帧部分2,且通过GPU 206B渲染视频帧部分信息4以生成视频帧部分4。
在一个实施方案中,视频解码器1应用与由视频解码器2应用的(例如,定制格式)不同的视频文件格式或流视频格式(例如,H.264)以对经编码视频帧部分进行解码。在实施方案中,音频解码器1应用与由音频解码器2应用的不同的音频文件格式或流音频格式来对经编码音频帧部分进行解码。
在实施方案中,代替使用两个不同的视频解码器1和2,使用单个视频解码器以对从节点1和2B接收到的经编码视频帧部分进行解码。此外,在一个实施方案中,代替使用两个不同的音频解码器1和2,使用单个音频解码器以对从节点1和2B接收到的经编码音频帧部分进行解码。
在一个实施方案中,在不使用来自视频帧部分2和4的任何信息的情况下生成视频帧部分1和3,且在不使用来自音频帧部分2和4的任何信息的情况下生成音频帧部分1和3。在此情况下,不需要将视频帧部分2和4以及音频帧部分2和4从节点2B发送到节点1。
类似地,在实施方案中,在不使用来自视频帧部分1和3的任何信息的情况下生成视频帧部分2和4,并且在不使用来自音频帧部分1和3的任何信息的情况下生成音频帧部分2和4。在此情况下,不需要将视频帧部分1和3以及音频帧部分1和3从节点1发送到节点2B。
图6B是用以说明显示虚拟场景的视频帧1中的视频帧部分1到4的布置的图式。视频帧1的视频帧部分1包括视频帧1中的第一组一个或多个顶部像素行。此外,视频帧1的视频帧部分2包括视频帧1中的第二组一个或多个像素行,并且第二组邻近于第一组且在第一组下方。而且,视频帧1的视频帧部分3包括视频帧1中的第三组一个或多个像素行,并且第三组邻近于第二组且在第二组下方。视频帧1的视频帧部分4包括视频帧1中的第四组一个或多个像素行,并且第四组邻近于第三组且在第三组下方。
图6C是用以说明显示虚拟场景的视频帧1中的视频帧部分1到4的另一布置的图式。视频帧1的视频帧部分1包括视频帧1中的左上象限中的一组一个或多个邻近图像元素。此外,视频帧1的视频帧部分2包括视频帧1中的右上象限中的一组一个或多个邻近图像元素。此外,视频帧1的视频帧部分3包括视频帧1中的左下象限中的一组一个或多个邻近图像元素。视频帧1的视频帧部分4包括视频帧1中的右下象限中的一组一个或多个邻近图像元素。
应注意,节点1跨多个视频帧(例如,视频帧1和2等)生成位于相同象限(例如左上象限或左下象限)中的视频帧部分。类似地,节点2跨多个视频帧生成位于相同象限(例如右上象限或右下象限)中的视频帧部分。
在实施方案中,节点1跨多个视频帧(例如,视频帧1和2等)生成位于不同象限(例如左上象限和左下象限)中的视频帧部分。类似地,节点2跨多个视频帧生成位于不同象限(例如右上象限和右下象限)中的视频帧部分。
图7是用以说明从一个节点向另一节点广播用户输入以确定到另一节点的用户输入的相关性以生成视频帧的***700的实施方案的图式。***700包括节点1A和节点2C。除了节点1A包括相关性确定器702A之外,节点1A与图6A的节点1相同。此外,除了节点2C包括相关性确定器702B之外,节点2C与图6A的节点2B相同。
相关性确定器的示例包括确定用于在节点内生成视频帧或视频帧部分的用户输入的相关性的硬件装置(例如,处理器、集成电路等)或软件模块(例如,计算机程序等)或其组合。在一个实施方案中,节点的相关性确定器与节点的CPU和GPU集成在一起。例如,节点的相关性确定器的一部分集成于节点的CPU内,且相关性确定器的其余部分集成于节点的GPU内。
用户1通过客户端装置104A提供多个用户输入1和2。上文描述了捕获输入1和2的各种方式,例如,使用相机或手持控制器。输入1和2被打包并通过计算机网络112从客户端装置104A发送到节点1A的网络通信装置208A。网络通信装置208A对输入1和2进行解包,并将输入1和2提供给内部通信装置210A。
内部通信装置210A在CPU 202A的控制下应用内部通信协议,以通过通信链路416向节点2C的内部通信装置210B广播用户输入1和2的视频和音频数据。内部通信装置210B应用内部通信协议以从自内部通信装置210A接收到的打包的信息提取用户输入1和2,并将用户输入1和2提供给相关性确定器702B。
相关性确定器702B确定用户输入1和2的哪些与生成视频帧2和4相关。例如,相关性确定器702B确定用户输入1改变虚拟场景的位置、定向、大小、形状、强度、颜色、纹理、阴影或其组合,且改变的位置、改变的定向、改变的大小、改变的形状、改变的强度、改变的颜色、改变的纹理或改变的阴影或其组合将显示于视频帧2或视频帧4中。在此示例中,用户输入1与视频帧2或视频帧4相关。为了说明,相关性确定器702B确定用户输入1将有助于实现视频帧2内的虚拟球的位置2或帧4内的虚拟球的位置4。作为另一示例,相关性确定器702B确定用户输入1和2都改变虚拟场景的位置、定向、大小、形状、强度、颜色、纹理或其组合,且改变的位置、改变的定向、改变的大小、改变的形状、改变的强度、改变的颜色、改变的纹理或改变的阴影或其组合将显示于视频帧2或视频帧4中。在此示例中,用户输入1和2与视频帧2或视频帧4相关。为了说明,相关性确定器702B确定用户输入1和2将有助于实现视频帧2内的虚拟球的位置2或帧4内的虚拟球的位置4。
相关性确定器702B将被确定与视频帧2和/或4相关的用户输入1和2中的一个或两个提供给CPU 202B和GPU 206B。相关性确定器702B忽略被确定与视频帧2和4无关的用户输入1和2中的一个或两个。例如,相关性确定器702B不会应用与生成视频帧2和/或4无关的用户输入。
CPU 202B应用被确定与生成视频帧信息2和/或4相关的用户输入1和/或2。类似地,GPU 206B应用被确定为与生成视频帧2和/或4相关的用户输入1和/或2。
在一个实施方案中,视频帧1、视频帧2、视频帧3、视频帧4、音频帧1、音频帧2、音频帧3、音频帧4、视频帧部分1、视频帧部分2、视频帧部分3、视频帧部分4、音频帧部分1、音频帧部分2、音频帧部分3、音频帧部分4或其组合在本文中被称作状态信息。
在一个实施方案中,当用户输入1和2由图6A中说明的客户端装置104A1的视频解码器1或视频解码器2编码时,图6A中说明的节点1的视频编码器404A对用户输入1和2的视频数据进行解码。在将用户输入1和2广播到其他节点之前,用户输入1和2的视频数据由视频编码器404A解码。在实施方案中,当用户输入1和2由客户端装置104A1的音频解码器1或音频解码器2编码时,图6A中说明的节点1的音频编码器402A对用户输入1和2的音频数据进行解码。在将用户输入1和2广播到其他节点之前,用户输入1和2的音频数据由音频编码器402A解码。
在实施方案中,相关性确定器702A确定用户输入1和2中的一个或两个是否与生成视频帧1和3相关。例如,相关性确定器702A确定用户输入1改变虚拟场景的位置、定向、大小、形状、强度、颜色、纹理或其组合,且改变的位置、改变的定向、改变的大小、改变的形状、改变的强度、改变的颜色、改变的纹理或改变的阴影或其组合将显示于视频帧1或视频帧3中。在此示例中,用户输入1是相关的。在确定用户输入1相关后,CPU 202A即刻应用用户输入1以生成视频帧信息1和/或3,和/或GPU 206A应用用户输入1以生成视频帧1和/或3。在确定用户输入1和2与生成视频帧1和3相关后,节点1A即刻不将用户输入1和2广播到节点2C。另一方面,在确定用户输入1和2中的一个或两个与生成视频帧1和3无关时,节点1A将用户输入1和/或2广播到节点2C。
在此实施方案中,当用户输入1由图6A中说明的客户端装置104A1的视频解码器1或视频解码器2编码时,图6A中说明的节点1的视频编码器404A对用户输入1的视频数据进行解码。当用户输入2由客户端装置104A1的视频解码器1或视频解码器2编码时,从节点1A发送到节点2C的用户输入2的视频数据由视频编码器404B解码。而且,当用户输入1由客户端装置104A1的音频解码器1或音频解码器2编码时,图6A中说明的节点1的音频编码器402A对用户输入1的音频数据进行解码。当用户输入2由客户端装置104A1的音频解码器1或音频解码器2编码时,从节点1A发送到节点2C的用户输入2的音频数据由音频编码器402B解码。
在实施方案中,代替客户端装置104A,使用图4A中说明的客户端装置104A或图6A中说明的客户端装置104A1。
图8是用以说明从一个节点向另一节点广播用户输入以确定到另一节点的用户输入的相关性以生成视频帧部分的***700的实施方案的图式。相关性确定器702B确定用户输入1和2的哪些与生成视频帧部分2和4相关。例如,相关性确定器702B确定用户输入1改变视频帧1中的虚拟场景的一部分的位置、定向、大小、形状、强度、颜色、纹理、阴影或其组合,且改变的位置、改变的定向、改变的大小、改变的形状、改变的强度、改变的颜色、改变的纹理或改变的阴影或其组合将显示于视频帧部分2或视频帧部分4中。用户输入1与视频帧部分2或视频帧部分4相关。为了说明,相关性确定器702B确定用户输入1将有助于显示视频帧1中的虚拟树干的第二部分的位置2或视频帧1中的虚拟树干的第四部分的位置4。作为另一示例,相关性确定器702B确定用户输入1和2都改变虚拟场景的一部分的位置、定向、大小、形状、强度、颜色、纹理或其组合,且改变的位置、改变的定向、改变的大小、改变的形状、改变的强度、改变的颜色、改变的纹理或改变的阴影或其组合将显示于视频帧部分2或视频帧部分4中。用户输入1和2与视频帧部分2或视频帧部分4相关。为了说明,相关性确定器702B确定用户输入1和2将有助于实现视频帧部分2中的虚拟树干的第二部分的位置2或帧部分4中的虚拟树干的第四部分的位置4。
相关性确定器702B将被确定与视频帧部分2和/或4相关的用户输入1和2中的一个或两个提供给CPU 202B和GPU 206B。CPU 202B应用被确定与生成视频帧部分信息2和/或4相关的用户输入1和/或2。类似地,GPU 206B应用被确定为与生成视频帧部分2和/或4相关的用户输入1和/或2。
在实施方案中,相关性确定器702A确定用户输入1和2中的一个或两个是否与生成视频帧部分1和3相关。例如,相关性确定器702A确定用户输入1改变虚拟对象的位置、定向、大小、形状、强度、颜色、纹理或其组合,且改变的位置、改变的定向、改变的大小、改变的形状、改变的强度、改变的颜色、改变的纹理或改变的阴影或其组合将显示于视频帧1的一部分中。用户输入1是相关的。在确定用户输入1相关后,CPU 202A即刻应用用户输入1以生成视频帧部分信息1和/或3,和/或GPU 206A应用用户输入1以生成视频帧部分1和/或3。在确定用户输入1和2与生成视频帧部分1和3相关后,节点1A即刻不将用户输入1和2广播到节点2C。另一方面,在确定用户输入1和2中的一个或两个与生成视频帧部分1和3无关时,节点1A将用户输入1和/或2广播到节点2C。
图9是用以说明被选择来执行图1的分布式游戏引擎102的数个节点的动态变化的***900的实施方案的图式。***900包括多个节点A、B、C和D。每个节点B和D是专用的。例如,节点B比节点A和C包括更强的处理能力,例如包括更多数目个CPU和GPU。作为另一示例,节点B比节点A和C包括更高数目个存储器,例如更大量的存储器装置。作为又另一示例,节点B与节点A或节点C相同,除了节点B比节点A或节点C包括更强的处理能力和更高量的存储器之外。作为另一示例,节点D与节点A或节点C相同,除了节点D比节点A或节点C包括更强的处理能力和更高量的存储器之外。节点A的示例包括节点1和节点1A。节点B的示例包括节点2、节点2A、节点2B和节点2C。
节点组件服务器108的图3C中说明的处理器350确定节点A和C中的一个或多个是否已发生故障或不起作用。例如,处理器350通过节点组合件服务器108的通信装置354和计算机网络112向节点1的网络通信装置208A发送消息以响应消息。在确定网络通信208A装置在预定时间内没有对消息作出响应时,处理器350确定节点1已经发生故障或不起作用。在确定节点A和/或C发生故障后,处理器350通过交换机***106选择专用节点B以执行由节点A和/或C执行的功能。例如,当节点A不起作用或发生故障时,处理器350将关于内部通信协议的信息发送到专用节点B,以允许专用节点B与起作用的节点C通信。
在一个实施方案中,当用户1选择比游戏1具有更低图形级别的游戏2时或者在装置切换的情况下,处理器350实时地将执行游戏1的分布式游戏引擎102的节点数目减少到用于执行游戏2的分布式游戏引擎的更低数目。例如,处理器350通过交换机***106选择更低数目个节点,以通过内部通信协议在内部彼此通信并且用于执行游戏2的分布式游戏引擎。类似地,当用户1选择比游戏2具有更高图形级别的游戏1时,处理器350实时地将用以执行游戏2的分布式游戏引擎102的节点数目增加到用于执行游戏1的分布式游戏引擎的更高数目。例如,处理器350通过交换机***106选择更高数目个节点,以通过内部通信协议在内部彼此通信并且用于执行游戏1的分布式游戏引擎。作为另一示例,用户正在他/她的PlayStationTM游戏控制台上玩游戏。当用户踏出他/她的家门时,用户希望将游戏传送到他/她的智能手机或平板电脑。智能手机或平板电脑以低分辨率和低帧速率显示游戏,但是PlayStationTM游戏控制台结合4K或8K电视应用更高的分辨率和更高的帧速率。为了满足更低的分辨率和更低的帧速率,减少了节点数目。
在实施方案中,当通过不同的用户帐户促进玩游戏1的客户端装置的数目减少时,处理器350实时地将执行游戏1的分布式游戏引擎102的节点数目减少到用于执行游戏1的分布式游戏引擎102的更低数目。另一方面,当通过不同用户帐户促进玩游戏1的客户端装置的数目增加时,处理器350实时地将用以执行游戏1的分布式游戏引擎102的节点数目增加到用于执行游戏1的分布式游戏引擎102的更高数目。
图10是根据本公开的实现方式的概念性地说明各种操作的流程图,执行所述操作来将云视频游戏流式传输到客户端装置。游戏服务器1002执行视频游戏并生成原始(未压缩)视频1004和音频1006。出于流传输目的而捕获视频1004和音频1006并对其进行编码,如在所说明图式中的附图标记1008处所指示。编码实现视频和音频流的压缩,以减少带宽使用并优化游戏体验。编码格式的示例包括H.265/MPEG-H、H.264/MPEG-4、H.263/MPEG-4、H.262/MPEG-2、WMV、VP6/7/8/9等。
经编码音频1010和经编码视频1012进一步打包成网络数据包,如附图标记1014处指示,以用于通过例如互联网等计算机网络进行传输的目的。在一些实施方案中,网络数据包编码过程还采用数据加密过程,由此提供增强的数据安全性。在所说明实现方式中,生成音频数据包1016和视频数据包1018以供通过计算机网络1020进行传输。
游戏服务器1002另外生成触觉反馈数据1022,所述触觉反馈数据也被打包为网络数据包以用于网络传输。在所说明实现方式中,生成触觉反馈数据包1024以供通过计算机网络1020进行传输。
对数据中心的游戏服务器1002执行生成原始视频和音频以及触觉反馈数据的前述操作,且通过数据中心的流引擎执行对视频和音频进行编码以及将经编码音频/视频和触觉反馈数据打包以进行传输的操作。如附图标记1020处指示,通过计算机网络传输音频、视频和触觉反馈数据包。如附图标记1026处指示,音频数据包1016、视频数据包1018和触觉反馈数据包1024被客户端装置分解,例如解析等,以在客户端装置处从网络数据包提取经编码音频1028、经编码视频1030和触觉反馈数据1032。如果数据已加密,则数据还被解密。如附图标记1034处指示,然后通过客户端装置对经编码音频1028和经编码视频1030进行解码,以生成客户端侧原始音频和视频数据,来在客户端装置的显示装置1040上进行渲染。触觉反馈数据1032由客户端装置的处理器处理以在控制器装置1042或其他接口装置(例如,HMD等)处生成触觉反馈效果,可以通过其渲染触觉效果。触觉效果的一个示例是控制器装置1042的振动或隆隆声。
将理解,视频游戏对用户输入具有响应性,并因此执行与用于用户输入的传输和处理的上述程序流程类似的程序流程,但是按从客户端装置到服务器的相反方向执行程序流程。如所示出,控制器装置1042或另一输入装置例如用户1的身体部位等或其组合生成输入数据1044。此输入数据1044在客户端装置处被打包,以通过计算机网络传输到数据中心。输入数据包1046由游戏服务器1002解包并重组,以在数据中心侧定义输入数据1048。输入数据1048被馈送到游戏服务器1002,所述游戏服务器处理输入数据1048以更新用于游戏的游戏状态的保存数据。
在一些实施方案中,在通过计算机网络1020传输音频数据包1016、视频数据包1018和触觉反馈数据包1024期间,监视通过计算机网络1020进行的数据传输以确保服务质量。例如,如由附图标记1050指示,监视计算机网络1020的网络状况,包括上游和下游网络带宽,并响应于可用带宽的变化而调整游戏流传输。也就是说,如由附图标记1052指示,基于当前网络状况而控制网络数据包的编码和解码。
图11是游戏控制台1100的实施方案的框图,所述游戏控制台兼容于与客户端装置的显示装置介接,并且能够通过计算机网络1020与游戏托管***通信。游戏控制台1100位于数据中心A内或位于用户1所位于的定位。在一些实施方案中,游戏控制台1100用以执行在HMD上显示的游戏。游戏控制台1100具备可连接到游戏控制台1100的各种周边装置。游戏控制台1100具有cell处理器1128、动态随机存取存储器(XDRAM)单元1126、具有专用视频随机存取存储器(VRAM)单元1132的现实合成器图形处理器单元1130、以及输入/输出(I/O)桥1134。游戏控制台1100还具有用于从磁盘1140a读取的Blu只读存储器(BD-ROM)光盘读取器1140和可移动插槽式硬盘驱动器(HDD)1136,可通过I/O桥1134访问。可选地,游戏控制台1100还包括用于读取紧凑型闪存卡、memory存储卡等的存储卡读取器1138,所述存储卡读取器类似地可通过I/O桥1134访问。I/O桥1134还连接到通用串行总线(USB)2.0端口1124、千兆位以太网端口1122、IEEE 802.11b/g无线网络(Wi-Fi)端口1120、和能够支持蓝牙连接的无线链路端口1118。
在操作中,I/O桥1134处理所有无线、USB和以太网数据,包括来自游戏控制器842和/或1103以及来自HMD 1105的数据。例如,当用户A正在玩通过执行一部分游戏代码生成的游戏时,I/O桥1134通过蓝牙链路从游戏控制器842和/或1103和/或从HMD 1105接收输入数据,并将输入数据引导到cell处理器1128,所述处理器相应地更新游戏的当前状态。作为示例,HMD 1105内的相机捕获用户1的姿势以生成表示所述姿势的图像。图像是输入数据的示例。每个游戏控制器842和1103是手持控制器(HHC)的示例。
除了游戏控制器842和1103以及HMD 1105之外,无线、USB和以太网端口还为其他周边装置提供了连接性,例如遥控器1104、键盘1106、鼠标1108、便携式娱乐装置1110(例如,索尼Playstation娱乐装置等)、摄像机(例如,摄像机1112等)、传声器头戴式耳机1114和传声器1115。在一些实施方案中,此类周边装置无线连接到游戏控制台1100,例如,便携式娱乐装置1110通过Wi-Fi ad-hoc连接进行通信,而传声器头戴式耳机1114通过蓝牙链路进行通信。
提供这些接口意味着游戏控制台1100还可能与其他周边装置兼容,例如数字视频记录器(DVR)、机顶盒、数码相机、便携式媒体播放器、互联网协议语音(IP)电话、移动电话、打印机和扫描仪。
另外,旧版存储卡读取器1116通过USB端口1124连接到游戏控制台1100,从而能够读取由游戏控制台1100使用的种类的存储卡1148。游戏控制器842和1103以及HMD 1105可操作以通过蓝牙链路1118与游戏控制台1100无线通信,或者连接到USB端口1124,由此还接收用于对游戏控制器842和1103以及HMD 1105的电池充电的电力。在一些实施方案中,游戏控制器842和1103以及HMD 1105中的每一个包括存储器、处理器、存储卡读取器、持久存储器(例如,闪存等)、发光器(例如,照明球形部分、发光二极管(LED)或红外灯等)、用于超声通信的传声器和扬声器、声学室、数码相机、内部时钟、可识别形状(例如面向游戏控制台1100的球形部分)、以及使用例如蓝牙、Wi-Fi等协议的无线装置。
游戏控制器842是被设计为与用户1的两只手一起使用的控制器,并且游戏控制器1103是具有附件的单手控制器。HMD 1105被设计为配合在用户1的头部之上和/或眼前。除了一个或多个模拟操纵杆和常规控制按钮之外,每个游戏控制器842和1103还可以进行三维定位确定。类似地,HMD 1105易于进行三维定位确定。因此,在一些实施方案中,除了常规按钮或操纵杆命令之外或代替常规按钮或操纵杆命令,游戏控制器842和1103以及HMD1105的用户1的姿势和运动被转换为游戏的输入。可选地,其他带无线功能周边装置例如PlaystationTM便携式装置等被用作控制器。在PlaystationTM便携式装置的状况下,在装置的显示屏上会提供其他游戏或控制信息,例如控制指令或生命数等。在一些实施方案中,使用其他替代或补充控制装置,例如舞垫(未示出)、光枪(未示出)、方向盘和踏板(未示出)、定制控制器等。定制控制器中的一个包括用于快速响应问答游戏(也未示出)的一个或多个大按钮。
遥控器1104还可用以通过蓝牙链路1118与游戏控制台1100无线通信。遥控器1104包括适合于Blu RayTM磁盘BD-ROM读取器1140的操作以及适于磁盘内容导航的控件。
除了常规预记录和可记录的CD以及所谓的超级音频CD外,Blu RayTM磁盘BD-ROM读取器1140还可用以读取与游戏控制台1100兼容的CD-ROM。除了常规预记录和可记录的DVD外,Blu RayTM磁盘BD-ROM读取器1140还可用以读取与游戏控制台1100兼容的数字视频光盘ROM(DVD-ROM)。Blu RayTM磁盘BD-ROM读取器1140还可用以读取与游戏控制台1100兼容的BD-ROM以及常规预记录和可记录蓝光光盘。
通过音频连接器1150和视频连接器1152,游戏控制台1100可用以将通过现实合成器图形单元1130生成或解码的音频和视频提供给显示器和声音输出装置1142,例如具有显示屏1144和一个或多个扬声器1146的监视器或电视机等,或者通过无线链路端口1118将音频和视频供应给HMD 1105的显示装置。在各种实施方案中,音频连接器1150包括常规模拟和数字输出,而视频连接器1152各种包括分量视频、S-视频、复合视频以及一个或多个高清晰度多媒体接口(HDMI)输出。因此,视频输出可以呈例如相交线(PAL)或国家电视***委员会(NTSC)等格式,或者呈2220p、1080i或1080p高清晰度。通过cell处理器1108执行音频处理,例如生成、解码等。游戏控制台1100的操作***支持5.1环绕声、影院环绕声(DTS)、以及来自磁盘的7.1环绕声的解码。
在一些实施方案中,摄像机例如摄像机1112等包括单电荷耦合器件(CCD)、LED指示器以及基于硬件的实时数据压缩和编码设备,以使得以例如基于图像内的运动图像专家组(MPEG)标准等适当格式传输压缩后的视频数据来由游戏控制台1100解码。摄像机1112的LED指示器被布置为响应于来自游戏控制台1100的适当的控制数据而照明,例如以指示不利照明条件等。摄像机1112的一些实施方案通过USB、蓝牙或Wi-Fi通信端口以各种方式连接到游戏控制台1100。摄像机的各种实施方案包括一个或多个相关联传声器,并且还能够传输音频数据。在摄像机的若干实施方案中,CCD具有适合于高清视频捕获的分辨率。在使用中,由摄像机捕获的图像被并入游戏内或被解译为游戏控制输入。在另一实施方案中,摄像机是适合于检测红外光的红外相机。
在各种实施方案中,为了通过游戏控制台1100的通信端口中的一个与周边装置(例如,摄像机或遥控器)成功进行数据通信,提供适当的软件,例如装置驱动程序等。
在一些实施方案中,包括游戏控制台1100、HHC和HMD 1105的前述***装置使HMD1105能够显示并捕获游戏的交互会话的视频。***装置发起游戏的交互会话,所述交互会话定义用户1与游戏之间的交互。***装置进一步确定由用户1操作的HHC和/或HMD 1105的初始位置和定向。游戏控制台1100基于用户1与游戏之间的交互性而确定游戏的当前状态。在用户1与游戏的交互会话期间,***装置跟踪HHC和/或HMD 1105的位置和定向。***装置基于游戏的当前状态以及HHC和/或HMD 1105的所跟踪位置和定向而生成交互会话的观众视频流。在一些实施方案中,HHC在HHC的显示屏上渲染观众视频流。在各种实施方案中,HMD1105在HMD 1105的显示屏上渲染观众视频流。
参考图12,示出了说明HMD 1202的部件的图式。HMD 1202是HMD 1105(图11)的示例。HMD 1202包括用于执行程序指令的处理器1200。出于存储目的提供存储器装置1202。存储器装置1202的示例包括易失性存储器、非易失性存储器或其组合。包括显示装置1204,所述显示装置提供用户1(图1)观看的可视界面,例如显示从保存数据等生成的图像帧。提供电池1206作为HMD 1202的电源。运动检测模块1208包括各种运动敏感硬件中的任何一种,例如磁力计1210、加速度计1212和陀螺仪1214。
加速度计是用于测量加速度和重力引起的反作用力的装置。单轴和多轴模型可用于检测不同方向上的加速度的量值和方向。加速度计用于感应倾斜、振动和冲击。在一个实施方案中,三个加速度计1212用于提供重力方向,所述重力方向给出两个角度(例如,世界空间俯仰和世界空间滚动等)的绝对参考。
磁力计测量HMD 1202附近的磁场的强度和方向。在一些实施方案中,在HMD 1202内使用三个磁力计1210,从而确保世界空间偏航角的绝对参考。在各种实施方案中,磁力计被设计成跨越地球磁场,具有±80微特斯拉。磁力计受金属影响,并提供与实际偏航成单调的偏航测量。在一些实施方案中,磁场会由于真实世界环境中的金属而扭曲,这会导致偏航测量中的扭曲。在各种实施方案中,使用来自其他传感器(例如,陀螺仪1214、相机1216等)的信息来校准此扭曲。在一个实施方案中,加速度计1212与磁力计1210一起使用以获得HMD1202的倾斜度和方位角。
陀螺仪是用于基于角动量原理测量或维持定向的装置。在一个实施方案中,替代陀螺仪1214,三个陀螺仪基于惯性感测而提供关于跨相应轴(x、y和z)的移动的信息。陀螺仪有助于检测快速旋转。然而,陀螺仪在一些实施方案中会在没有绝对参考的情况下随时间漂移。这触发定期重置陀螺仪,此重置可以使用其他可用信息来完成,例如基于对象的视觉跟踪、加速度计、磁力计等的位置/定向确定。
提供相机1216以捕获用户1周围的真实环境例如房间、机舱、自然环境等的图像和图像流。在各种实施方案中,在HMD 1202中包括多于一个的相机,包括后向相机,例如在用户1正在观看HMD 1202的显示器等时背向用户1的相机,以及在用户1正在观看HMD 1202的显示器等时例如面向用户1的前向相机。另外,在若干实施方案中,深度相机1218包括于HMD1202中来感测真实世界环境中的对象的深度信息。
HMD 1202包括用于提供音频输出的扬声器1220。而且,在一些实施方案中,包括传声器1222来捕获来自真实世界环境的音频,包括来自周围环境的声音以及由用户1发出的语音等。HMD 1202包括触觉反馈模块1224,例如振动装置等,来向用户1提供触觉反馈。在一个实施方案中,触觉反馈模块1224能够引起HMD 1202的移动和/或振动,以向用户1提供触觉反馈。
提供LED 1226作为HMD 1202的状态的视觉指示器。例如,LED可以指示电池电量、通电等。提供读卡器1228以使HMD 1202能够从存储卡读取信息并向存储卡写入信息。包括USB接口1230作为用于实现***装置的连接或者与其他装置(例如其他便携式装置、计算机等)的连接的接口的一个示例。在HMD 1202的各种实施方案中,可以包括各种类型的接口中的任何一个以实现HMD 1202的更大连接性。
包括Wi-Fi模块1232,用于通过无线联网技术实现到互联网的连接。此外,HMD1202包括蓝牙模块1234,来实现与其他装置的无线连接。在一些实施方案中,还包括通信链路1236以连接到其他装置。在一个实施方案中,通信链路1236利用红外传输进行无线通信。在其他实施方案中,通信链路1236利用各种无线或有线传输协议中的任一个来与其他装置通信。
包括输入按钮/传感器1238以为用户1(图1)提供输入接口。包括各种输入接口中的任一个,例如按钮、触摸板、操纵杆、轨迹球等。在各种实施方案中,超声通信模块1240包括于HMD 1202中,来通过超声技术促进与其他装置的通信。
包括生物传感器1242以使得能够检测来自用户的生理数据。在一个实施方案中,生物传感器1242包括一个或多个干电极,用于通过用户的皮肤检测用户的生物电信号。
HMD 1202的前述部件已被描述为仅仅是可以包括在HMD 1202中的示例性部件。在各种实施方案中,HMD 1202包括或不包括各种前述部件中的一些。
图13说明信息服务提供商(INSP)架构的实施方案。INSP 1302向地理上分散并通过计算机网络1306(例如,LAN、WAN或其组合等)连接的用户A、B、C和D递送大量信息服务。WAN的示例包括互联网和LAN的示例包括内联网。用户1操作客户端装置1320-1,用户B操作另一客户端装置1320-2,用户C操作又另一客户端装置1320-3,且用户D操作另一客户端装置1320-4。
在一些实施方案中,每个客户端装置1320-1、1320-2、1320-3和1320-4包括中央处理单元(CPU)、显示器和输入/输出(I/O)接口。每个客户端装置1320-1、1320-2、1320-3和1320-4的示例包括个人计算机(PC)、移动电话、上网本、平板电脑、游戏***、个人数字助理(PDA)、游戏控制台1100和显示装置、HMD 1202(图11)、游戏控制台1100和HMD 1202、台式计算机、膝上型计算机、智能电视等。在一些实施方案中,INSP 1302识别客户端装置的类型并调整所采用通信方法。
在一些实施方案中,INSP递送一种服务类型,例如股价更新,或提供各种服务,例如广播媒体、新闻、体育、游戏等。此外,由每个INSP提供的服务都是动态的,即,可以在任何时间点添加或删除服务。因此,向特定个人提供特定类型的服务的INSP可能会随时间变化。例如,当客户端装置1320-1位于用户1的家乡时,邻近客户端装置1320-1的INSP为客户端装置1320-1提供服务,且当用户1前往不同城市旅游时,不同的INSP也会为客户端装置1320-1提供服务。家乡INSP会将所请求信息和数据传送到新INSP,使得信息“跟随”客户端装置1320-1到新城市,从而使数据更接近客户端装置1320-1且更易于访问。在各种实施方案中,在管理用于客户端装置1320-1的信息的主机INSP与在主机INSP的控制下直接与客户端装置1320-1介接的服务器INSP之间建立主机-服务器关系。在一些实施方案中,当客户端装置1320-1在世界范围内移动时,数据从一个ISP传送到另一ISP,以使处于更好的位置以服务客户端装置1320-1的INSP成为递送这些服务的INSP。
INSP 1302包括应用服务提供商(ASP)1308,所述ASP通过计算机网络1306向客户提供基于计算机的服务。使用ASP模型提供的软件有时还称为按需软件或软件即服务(SaaS)。提供对例如客户关系管理等基于计算机的服务的访问的简单形式是使用标准协议,例如超文本传送协议(HTTP)等。应用软件驻留于供应商的服务器上,且每个客户端装置1320-1、1320-2、1320-3和1320-4通过网络浏览器使用超文本标记语言(HTML)等、被供应商提供的专用客户端软件和/或例如瘦客户端等其他远程接口访问。
在广泛的地理区域内递送的服务通常使用云计算。云计算是一种计算方式,其中通过计算机网络1306提供动态可扩展且通常虚拟化的资源作为服务。用户A、B、C和D不需要成为支持他们的“云”中技术基础设施的专家。在一些实施方案中,云计算被划分为不同的服务,例如基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。云计算服务通常在线提供可从网络浏览器访问的通用业务应用,而软件和数据则存储于服务器上。术语云基于在计算机网络图中如何描绘计算机网络1306而用作计算机网络1306的隐喻,例如使用服务器、存储和逻辑等,并且是其所隐藏的复杂基础设施的抽象。
此外,INSP 1302包括在本文中有时也被称作游戏处理服务器的游戏处理提供商(GPP)1310,所述GPP由客户端装置1320-1、1320-2、1320-3和1320-4使用来玩单玩家和多玩家视频游戏。通过计算机网络1306进行的大多数视频游戏通过与游戏服务器的连接进行操作。通常,游戏使用专用服务器应用,所述应用从客户端装置1320-1、1320-2、1320-3和1320-4收集数据并将所述数据分布给由其他用户操作的其他客户端。这比对等布置更有效且高效,但使用单独服务器以托管服务器应用。在一些实施方案中,GPP 1310在客户端装置1320-1、1320-2、1320-3和1320-4之间建立通信,所述客户端装置交换信息而不进一步依赖集中式GPP 1310。
专用GPP是独立于客户端运行的服务器。此类服务器通常在数据中心内的专用硬件上运行,从而提供更多带宽和专用处理能力。专用服务器是为托管用于大多数基于PC的多玩家游戏的游戏服务器的方法。大型多玩家在线游戏通常在拥有游戏标题的软件公司托管的专用服务器上运行,从而允许它们控制并更新内容。
广播处理服务器(BPS)1312,有时在本文中被称作广播处理提供商,其将音频或视频信号分布给观众。向很窄范围的观众进行广播有时称为窄播。广播分布的最后一站是信号如何到达客户端装置1320-1、1320-2、1320-3和1320-4,且在某些实施方案中,信号像广播电台或电视台一样在空中分布到天线和接收器,或通过有线电视或有线广播或“无线电缆”通过电视台分布。在各种实施方案中,计算机网络1306还将无线电或电视信号带到客户端装置1320-1、1320-2、1320-3和1320-4,尤其是通过允许共享信号和带宽的多播。历史上,在若干实施方案中,广播是由地理区域界定的,例如国家广播、区域广播等。然而,随着高速互联网的普及,广播并未按地理区域定义,因为内容几乎可以到达世界上的任何国家。
存储服务提供商(SSP)1314提供计算机存储空间和相关管理服务。SSP 1314还提供定期备份和存档。通过提供存储即服务,相比于未将存储用作服务时,客户端装置1320-1、1320-2、1320-3和1320-4使用更多存储。另一主要优点是SSP 1314包括备份服务,且如果客户端装置1320-1、1320-2、1320-3和1320-4的硬盘驱动器发生故障,那么它们将不会丢失数据。此外,在一些实施方案中,多个SSP具有从客户端装置1320-1、1320-2、1320-3和1320-4接收到的数据的全部或部分副本,从而允许客户端装置1320-1、1320-2、1320-3和1320-4以独立于客户端装置1320-1、1320-2、1320-3和1320-4定位的位置或客户端类型的有效方式访问数据。例如,用户1通过家用计算机以及当用户1在移动中时通过移动电话访问个人文件。
通信提供商1316提供到客户端装置1320-1、1320-2、1320-3和1320-4的连接性。一种通信提供商1316是提供对计算机网络1306的访问的互联网服务提供商(ISP)。使用适用于递送互联网协议数据报的数据传输技术,例如拨号、数字用户线(DSL)、电缆调制解调器、光纤、无线或专用高速互连,ISP连接客户端装置1320-1、1320-2、1320-3和1320-4。在一些实施方案中,通信提供商1316还提供消息收发服务,例如电子邮件、即时消息传送和短消息服务(SMS)短信。另一种类型的通信提供商是网络服务提供商(NSP),它通过提供对计算机网络1306的直接主干访问来出售带宽或网络访问。网络服务提供商的示例包括电信公司、数据运营商、无线通信提供商、互联网服务提供商、提供高速互联网访问的有线电视运营商等。
数据交换器1318互连INSP 1302中的若干模块,并通过计算机网络1306将这些模块连接到客户端装置1320-1、1320-2、1320-3和1320-4。在各种实施方案中,数据交换1318覆盖INSP 1302的所有模块紧密接近的小型区域,或者在不同模块在地理上分散时覆盖大型地理区域。例如,数据交换1302包括在数据中心或洲际虚拟LAN的机柜内的快速千兆以太网。
应注意,在各种实施方案中,本文中描述的一些实施方案的一个或多个特征与本文中描述的其余实施方案中的一个或多个的一个或多个特征组合。
本公开中描述的实施方案可以用各种计算机***配置来实践,所述配置包括手持装置、微处理器***、基于微处理器的或可编程的消费电子产品、小型计算机、大型计算机等。在一个实现方式中,本公开中描述的实施方案在分布式计算环境中实践,其中任务由通过有线或无线网络链接的远程处理装置执行。
考虑到上述实施方案,应理解,在一个实现方式中,本公开中描述的实施方案采用涉及存储在计算机***中的数据的各种计算机实施的操作。这些操作是需要对物理量进行物理操控的操作。本文中描述的形成本公开中描述的实施方案的部分的任何操作都是有用的机器操作。本公开中描述的一些实施方案还涉及用于执行这些操作的装置或设备。所述设备出于所需目的而专门构造,或者所述设备是由存储在计算机中的计算机程序选择性地激活或配置的通用计算机。确切地说,在一个实施方案中,各种通用机器与根据本文的教导写入的计算机程序一起使用,或者可以更方便地构造更专用的设备以执行所需的操作。
在一个实现方式中,本公开中描述的一些实施方案被体现为计算机可读介质上的计算机可读代码。计算机可读介质是存储数据的任何数据存储装置,所述数据此后由计算机***读取。计算机可读介质的示例包括硬盘驱动器、附网存储器(NAS)、ROM、RAM、光盘ROM(CD-ROM)、CD可记录(CD-R)、CD-可重写(CD-RW)、磁带、光学数据存储装置、非光学数据存储装置等。作为示例,计算机可读介质包括分布于网络耦合式计算机***上的计算机可读有形介质,以使得以分布式方式存储并执行计算机可读代码。
此外,尽管关于游戏环境描述了一些上述实施方案,但是在一些实施方案中,使用例如视频会议环境等其他环境代替游戏。
尽管按具体顺序描述了方法操作,但是应理解,可以在操作之间执行其他内部管理操作,或者可以调整操作以使它们在稍微不同的时间发生,或可以分布于允许按与处理相关联的各种间隔发生处理操作的***中,只要以期望方式执行覆盖操作的处理即可。
尽管为了清楚理解的目的已经在一些细节上描述了本公开中描述的前述实施方案,但是明显的是,可以在所附权利要求的范围内实践某些改变和修改。因此,当前实施方案应被视为说明性的而非限制性的,且所述实施方案并不限于本文中给出的细节,而是可以在所附权利要求的范围和等同范围内修改。

Claims (21)

1.一种用于处理分布式游戏引擎的方法,其包括:
经由计算机网络从用户帐户接收玩游戏的请求;
标识用于所述用户帐户的处理能力分配;
基于所述处理能力分配确定用于所述用户帐户的节点组合件以利用两个或更多个处理节点来玩所述游戏;
针对所述用户帐户初始化所述两个或更多个处理节点以执行所述游戏,执行所述初始化以设置所述游戏的处理节点从所述两个或更多个处理节点中的一个到所述两个或更多个处理节点中的另一个的传送;以及
定义所述两个或更多个处理节点之间的内部通信信道,以交换所述游戏的状态信息,执行所述状态信息交换以使得所述两个或更多个节点能够以共享方式处理所述游戏,其中持续进行所述两个或更多个节点之间的所述状态信息交换,以使得所述两个或更多个节点用作聚合节点。
2.如权利要求1所述的方法,其中所述状态信息交换包括从所述两个或更多个处理节点中的所述另一个向所述两个或更多个处理节点中的所述一个传送第一帧,以允许所述两个或更多个处理节点中的所述一个构建第二帧。
3.如权利要求1所述的方法,其中所述状态信息交换包括从所述两个或更多个处理节点中的所述另一个向所述两个或更多个处理节点中的所述一个传送帧的第一帧部分,以允许所述两个或更多个处理节点中的所述一个构建所述帧的第二帧部分。
4.如权利要求1所述的方法,其中所述处理代码是用于玩所述游戏的游戏引擎,其中所述内部通信信道是所述两个或更多个处理节点将使用的通信协议。
5.如权利要求1所述的方法,其中每个处理节点是虚拟机或游戏控制台或服务器。
6.一种用于处理分布式游戏引擎的方法,其包括:
经由用户帐户和计算机网络从客户端装置接收玩游戏的请求;
分配数个服务器节点来玩所述游戏;
向所述服务器节点发送信息以使所述节点能够使用通信协议来彼此通信以便于玩所述游戏;以及
在所述服务器节点之间分布游戏引擎来玩所述游戏。
7.如权利要求6所述的方法,其中所述分布所述游戏引擎包括将所述游戏引擎的至少一部分从所述服务器节点中的第一个发送到所述服务器节点中的第二个。
8.如权利要求6所述的方法,其中基于所述用户帐户的订阅级别执行所述分配所述数个服务器节点。
9.如权利要求6所述的方法,其还包括:
通过所述服务器节点中的第一个执行所述游戏引擎以生成所述游戏的帧信息;
通过所述服务器节点中的第二个执行所述游戏引擎以生成所述游戏的额外帧信息;
应用所述通信协议以将所述额外帧信息从所述第二服务器节点传达到所述第一服务器节点;
通过所述第一服务器节点渲染所述帧信息和所述额外帧信息以生成多个帧;
通过所述第一服务器节点对所述帧进行编码以生成经编码帧;
通过所述第一服务器节点,经由所述计算机网络将所述经编码帧的数据包传达到所述客户端装置来玩所述游戏。
10.如权利要求6所述的方法,其还包括:
通过所述服务器节点中的第一个执行所述游戏引擎以生成所述游戏的帧信息;
通过所述第一节点服务器渲染所述帧信息以生成多个帧;
通过所述服务器节点中的第二个执行所述游戏引擎以生成所述游戏的额外帧信息;
通过所述第二服务器节点渲染所述额外帧信息以生成多个额外帧;
应用所述通信协议以将所述额外帧从所述第二服务器节点传达到所述第一服务器节点;
通过所述第一服务器节点对所述帧和所述额外帧进行编码以生成经编码帧;
通过所述第一服务器节点,经由所述计算机网络将所述经编码帧的数据包传达到所述客户端装置来玩所述游戏。
11.如权利要求6所述的方法,其还包括:
通过所述服务器节点中的第一个执行所述游戏引擎以生成所述游戏的帧信息;
应用所述通信协议以将所述帧信息从所述第一服务器节点传达到所述服务器节点中的第二个;
通过所述第二服务器节点执行所述游戏引擎,以基于从所述第一服务器节点接收到的所述帧信息生成所述游戏的额外帧信息。
12.如权利要求6所述的方法,其还包括:
通过所述服务器节点中的第一个执行所述游戏引擎以生成所述游戏的帧信息;
应用所述通信协议以将所述帧信息从所述第一服务器节点传达到所述服务器节点中的第二个;
通过所述第二服务器节点执行所述游戏引擎,以应用所述帧信息来生成所述游戏的额外帧信息;
通过所述第一服务器节点渲染所述帧信息以生成多个帧;
通过所述第二服务器节点渲染所述额外帧信息以生成多个额外帧;
通过所述第一节点服务器对所述多个帧进行编码以生成多个经编码帧;
通过所述第二节点服务器对所述多个额外帧进行编码,以生成多个额外经编码帧;
通过所述第一节点服务器,经由所述计算机网络将所述经编码帧的数据包传达到所述客户端装置;以及
通过所述第二节点服务器,经由所述计算机网络将所述额外经编码帧的数据包传达到所述客户端装置。
13.如权利要求6所述的方法,其还包括:
通过所述服务器节点中的第一个执行所述游戏引擎以生成所述游戏的帧部分信息;
应用所述通信协议以将所述帧部分信息从所述第一服务器节点传达到所述服务器节点中的第二个;
通过所述第二服务器节点执行所述游戏引擎,以基于从所述第一服务器节点接收到的所述帧部分信息生成所述游戏的额外帧部分信息。
14.如权利要求6所述的方法,其还包括:
通过所述服务器节点中的第一个执行所述游戏引擎以生成所述游戏的帧部分信息;
应用所述通信协议以将所述帧部分信息从所述第一服务器节点传达到所述服务器节点中的第二个;
通过所述第二服务器节点执行所述游戏引擎,以应用所述帧部分信息来生成所述游戏的额外帧部分信息;
通过所述第一服务器节点渲染所述帧部分信息以生成帧的一部分;
通过所述第二服务器节点渲染所述额外帧部分信息,以生成所述帧的另一部分;
通过所述第一节点服务器对所述帧部分进行编码以生成经编码帧部分;
通过所述第二节点服务器对所述额外帧部分进行编码,以生成额外经编码帧部分;
通过所述第一节点服务器,经由所述计算机网络将所述经编码帧部分的一个或多个数据包传达到所述客户端装置;以及
通过所述第二节点服务器,经由所述计算机网络将所述额外经编码帧部分的一个或多个数据包传达到所述客户端装置。
15.如权利要求14所述的方法,其中所述帧部分信息包括背景信息,且所述额外帧部分信息包括虚拟对象的位置和定向信息。
16.如权利要求6所述的方法,其还包括:
通过所述服务器节点中的第一个,经由所述用户帐户和所述计算机网络接收多个用户输入;
通过所述第一服务器节点确定所述用户输入中的一个是否适用于生成帧信息;
通过所述第一服务器节点,通过应用所述用户输入中的所述一个以生成所述帧信息来执行所述游戏引擎;
在确定所述用户输入中的另一个不适用于生成所述帧信息后,即刻通过所述第一服务器节点应用所述通信协议,以将所述用户输入中的所述另一个传达到所述服务器节点中的第二个;以及
通过所述第二服务器节点,通过应用所述用户输入中的所述另一个以生成额外帧信息来执行所述游戏引擎。
17.如权利要求6所述的方法,其还包括:
通过所述服务器节点中的第一个,经由所述用户帐户和所述计算机网络接收多个用户输入;
通过所述第一服务器节点应用所述通信协议,以将所述用户输入广播到所述服务器节点中的第二个和所述服务器节点中的剩余服务器节点;
通过所述第二服务器节点确定所述用户输入中的一个是否适用于生成额外帧信息;以及
通过所述第二服务器节点,通过应用所述用户输入中的所述一个以生成所述额外帧信息来执行所述游戏引擎。
18.如权利要求6所述的方法,其还包括:
通过所述服务器节点中的第一个,经由所述用户帐户和所述计算机网络接收多个用户输入;
通过所述第一服务器节点确定所述用户输入中的一个是否适用于生成帧的帧部分信息;
通过所述第一服务器节点,通过应用所述用户输入中的所述一个以生成所述帧部分信息来执行所述游戏引擎;
在确定所述用户输入中的另一个不适用于生成所述帧部分信息后,即刻通过所述第一服务器节点应用所述通信协议,以将所述用户输入中的所述另一个传达到所述服务器节点中的第二个;以及
通过所述第二服务器节点,通过应用所述用户输入中的所述另一个以生成额外帧部分信息来执行所述游戏引擎。
19.如权利要求6所述的方法,其还包括:
通过所述服务器节点中的第一个,经由所述用户帐户和所述计算机网络接收多个用户输入;
通过所述第一服务器节点应用所述通信协议,以将所述用户输入广播到所述服务器节点中的第二个;
通过所述第二服务器节点确定所述用户输入中的一个是否适用于生成额外帧部分信息;以及
通过所述第二服务器节点,通过应用所述用户输入中的所述一个以生成所述额外帧部分信息来执行所述游戏引擎。
20.一种用于处理分布式游戏引擎的***,其包括:
云游戏服务器,其被配置为经由用户帐户和计算机网络从客户端装置接收玩游戏的请求;以及
节点组合件服务器,其耦合到所述云游戏服务器,其中所述节点组合件服务器被配置为分配数个服务器节点来玩所述游戏;
其中所述节点组合件服务器被配置为向所述服务器节点发送信息以使所述服务器节点能够使用通信协议来彼此通信以便于玩所述游戏,
其中所述服务器节点中的一个被配置为在所述服务器节点之间分布游戏引擎来玩所述游戏。
21.如权利要求20所述的***,其中所述服务器节点中的所述一个被配置为将所述游戏引擎发送到所述服务器节点中的另一个。
CN201880028171.1A 2017-04-03 2018-03-20 用于使用分布式游戏引擎的***和方法 Active CN110582331B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311160468.2A CN117323658A (zh) 2017-04-03 2018-03-20 用于处理分布式游戏引擎的***

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/477,341 US10491666B2 (en) 2017-04-03 2017-04-03 Systems and methods for using a distributed game engine
US15/477,341 2017-04-03
PCT/US2018/023410 WO2018187032A1 (en) 2017-04-03 2018-03-20 Systems and methods for using a distributed game engine

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202311160468.2A Division CN117323658A (zh) 2017-04-03 2018-03-20 用于处理分布式游戏引擎的***

Publications (2)

Publication Number Publication Date
CN110582331A true CN110582331A (zh) 2019-12-17
CN110582331B CN110582331B (zh) 2023-09-26

Family

ID=61911727

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201880028171.1A Active CN110582331B (zh) 2017-04-03 2018-03-20 用于使用分布式游戏引擎的***和方法
CN202311160468.2A Pending CN117323658A (zh) 2017-04-03 2018-03-20 用于处理分布式游戏引擎的***

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202311160468.2A Pending CN117323658A (zh) 2017-04-03 2018-03-20 用于处理分布式游戏引擎的***

Country Status (6)

Country Link
US (4) US10491666B2 (zh)
EP (2) EP3606628B1 (zh)
JP (3) JP7030134B2 (zh)
KR (1) KR102332050B1 (zh)
CN (2) CN110582331B (zh)
WO (1) WO2018187032A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111957037A (zh) * 2020-06-18 2020-11-20 苏州幻塔网络科技有限公司 一种游戏状态控制方法、设备、装置、***及存储介质
CN112870711A (zh) * 2021-04-28 2021-06-01 腾讯科技(深圳)有限公司 一种云游戏的处理方法、装置、设备及存储介质

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015097726A1 (ja) * 2013-12-26 2015-07-02 株式会社スクウェア・エニックス 描画システム、制御方法、プログラム、及び記録媒体
WO2016073035A1 (en) 2014-11-05 2016-05-12 Super League Gaming, Inc. Game system
US10459751B2 (en) * 2017-06-30 2019-10-29 ATI Technologies ULC. Varying firmware for virtualized device
US10366766B2 (en) * 2017-12-12 2019-07-30 Western Digital Technologies, Inc. Power shaping and peak power reduction by data transfer throttling
US11260295B2 (en) * 2018-07-24 2022-03-01 Super League Gaming, Inc. Cloud-based game streaming
CN112740177B (zh) * 2018-11-06 2024-04-09 深圳市欢太科技有限公司 一种游戏的加载方法及相关产品
US11077362B2 (en) * 2018-12-03 2021-08-03 Sony Interactive Entertainment LLC Machine learning driven resource allocation
US11083961B2 (en) 2018-12-21 2021-08-10 Universal City Studios Llc Scalable interactive video systems and methods
US11470017B2 (en) * 2019-07-30 2022-10-11 At&T Intellectual Property I, L.P. Immersive reality component management via a reduced competition core network component
US20210042255A1 (en) * 2019-08-09 2021-02-11 Sony Interactive Entertainment LLC Methods for Using High-Speed Data Communication Fabric to Enable Cross-System Command Buffer Writing for Data Retrieval in Cloud Gaming
CN111991803B (zh) * 2020-08-28 2023-01-31 厦门雅基软件有限公司 云端游戏切换方法、装置及计算机可读存储介质
CN112090066B (zh) * 2020-09-10 2022-05-20 腾讯科技(深圳)有限公司 基于虚拟交互应用的场景展示方法和装置
US20220130096A1 (en) * 2020-10-25 2022-04-28 Meta Platforms, Inc. Reducing latency of an application in a server-side hosted environment
US20220129295A1 (en) 2020-10-25 2022-04-28 Meta Platforms, Inc. Server-side hosted environment for a cloud gaming system
EP4263011A1 (en) * 2020-12-17 2023-10-25 Telefonaktiebolaget LM Ericsson (publ) Selecting a processing unit to serve a user equipment (ue)
CN113368504B (zh) * 2021-06-09 2023-10-17 咪咕互动娱乐有限公司 云游戏服务***、交互方法、存储介质
WO2024039053A1 (ko) * 2022-08-18 2024-02-22 삼성전자주식회사 복수의 기기로 프레임을 전송하는 전자 장치 및 이의 제어 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146128A1 (en) * 2006-10-05 2010-06-10 National Ict Australia Limited Decentralised multi-user online environment
US20120184373A1 (en) * 2010-12-24 2012-07-19 Kim I-Gil Apparatus and method for providing a game service in cloud computing environment
JP2014016828A (ja) * 2012-07-09 2014-01-30 Konami Digital Entertainment Co Ltd アプリケーション管理装置、アプリケーション管理システム、アプリケーション管理方法、およびアプリケーション管理プログラム
US20140304407A1 (en) * 2012-12-21 2014-10-09 Boundary, Inc. Visualizing Ephemeral Traffic
US20170034234A1 (en) * 2015-07-28 2017-02-02 Google Inc. Independent control of interactive streaming media
US20170050111A1 (en) * 2015-08-19 2017-02-23 Sony Computer Entertainment America Llc User save data management in cloud gaming
US20170050110A1 (en) * 2015-08-19 2017-02-23 Sony Computer Entertainment America Llc Local application quick start with cloud transitioning

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8721448B2 (en) * 2001-08-20 2014-05-13 Bally Gaming, Inc. Local game-area network system
US8930561B2 (en) 2003-09-15 2015-01-06 Sony Computer Entertainment America Llc Addition of supplemental multimedia content and interactive capability at the client
JP2007034359A (ja) * 2005-07-22 2007-02-08 Hitachi Ltd 分散制御装置
US20070094325A1 (en) * 2005-10-21 2007-04-26 Nucleoid Corp. Hybrid peer-to-peer data communication and management
JP4865366B2 (ja) * 2006-03-03 2012-02-01 株式会社ドワンゴ ネットワークゲームシステム及びネットワークゲーム方法
WO2007133124A1 (en) * 2006-05-12 2007-11-22 Acei Ab Gaming system with failover and takeover capability
CA2854562A1 (en) * 2011-11-03 2013-05-10 Trivie, Inc. Network multi-player trivia-based game and contest
US10232252B2 (en) * 2011-11-21 2019-03-19 Sony Interactive Entertainment Inc. Information processing system, information processing method, program, and information storage medium
KR20130062462A (ko) * 2011-11-25 2013-06-13 한국전자통신연구원 스트리밍 게임 서비스를 위한 분산 서버 시스템 및 방법
WO2013162599A1 (en) * 2012-04-27 2013-10-31 Empire Technology Development Llc Virtual machine switching based on measured network delay
US20140024464A1 (en) * 2012-07-22 2014-01-23 Vitaly BELAKOVSKY Massively Multiplayer Online Strategic Multipurpose Game
KR101430930B1 (ko) * 2012-12-12 2014-09-25 에스케이플래닛 주식회사 클라우드 스트리밍 기반의 게임 제공 방법, 시스템, 클라이언트 단말기 및 서비스장치
CA2886282C (en) * 2013-05-23 2019-07-23 Stephan Georgiev Dynamic allocation of rendering resources in a cloud gaming system
EP3018631A4 (en) * 2013-07-05 2016-12-14 Square Enix Co Ltd SCREEN PROCESSING DEVICE, SCREEN PROCESSING SYSTEM, CONTROL METHOD, PROGRAM AND RECORDING MEDIUM
KR20150085376A (ko) * 2014-01-15 2015-07-23 한국전자통신연구원 클라우드 게이밍 환경에서 렌더링 서비스를 위한 부하 분산 시스템 및 이의 부하 분산 방법
US10369461B2 (en) * 2014-01-24 2019-08-06 Nvidia Corporation Cloud gaming system and method of initiating a gaming session
JP2015143893A (ja) * 2014-01-31 2015-08-06 株式会社スクウェア・エニックス・ホールディングス サーバシステム
US9417911B2 (en) 2014-03-12 2016-08-16 Live Planet Llc Systems and methods for scalable asynchronous computing framework
US9421465B2 (en) * 2014-04-22 2016-08-23 Microsoft Technology Licensing, Llc Game progression using retrieved partial user data
US9409083B2 (en) 2014-06-27 2016-08-09 Amazon Technologies, Inc. Spawning new timelines during game session replay
US9694281B2 (en) * 2014-06-30 2017-07-04 Microsoft Technology Licensing, Llc Data center management of multimode servers
US10015238B2 (en) * 2015-03-31 2018-07-03 International Business Machines Corporation Command processing in distributed computing systems
CN104991827A (zh) * 2015-06-26 2015-10-21 季锦诚 云游戏中gpu资源共享的方法
US10238965B2 (en) * 2016-04-28 2019-03-26 Sony Interactive Entertainment America Llc Cloud gaming device handover

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100146128A1 (en) * 2006-10-05 2010-06-10 National Ict Australia Limited Decentralised multi-user online environment
US20120184373A1 (en) * 2010-12-24 2012-07-19 Kim I-Gil Apparatus and method for providing a game service in cloud computing environment
JP2014016828A (ja) * 2012-07-09 2014-01-30 Konami Digital Entertainment Co Ltd アプリケーション管理装置、アプリケーション管理システム、アプリケーション管理方法、およびアプリケーション管理プログラム
US20140304407A1 (en) * 2012-12-21 2014-10-09 Boundary, Inc. Visualizing Ephemeral Traffic
US20170034234A1 (en) * 2015-07-28 2017-02-02 Google Inc. Independent control of interactive streaming media
US20170050111A1 (en) * 2015-08-19 2017-02-23 Sony Computer Entertainment America Llc User save data management in cloud gaming
US20170050110A1 (en) * 2015-08-19 2017-02-23 Sony Computer Entertainment America Llc Local application quick start with cloud transitioning

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111957037A (zh) * 2020-06-18 2020-11-20 苏州幻塔网络科技有限公司 一种游戏状态控制方法、设备、装置、***及存储介质
CN112870711A (zh) * 2021-04-28 2021-06-01 腾讯科技(深圳)有限公司 一种云游戏的处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US20210281633A1 (en) 2021-09-09
KR102332050B1 (ko) 2021-11-29
KR20190134733A (ko) 2019-12-04
US10491666B2 (en) 2019-11-26
US11943281B2 (en) 2024-03-26
JP7364716B2 (ja) 2023-10-18
US20180288133A1 (en) 2018-10-04
EP4252875A3 (en) 2023-11-29
EP3606628B1 (en) 2023-09-13
US20230038618A1 (en) 2023-02-09
EP4252875A2 (en) 2023-10-04
JP2023168583A (ja) 2023-11-24
US11044306B2 (en) 2021-06-22
JP2022066238A (ja) 2022-04-28
JP7030134B2 (ja) 2022-03-04
WO2018187032A1 (en) 2018-10-11
CN110582331B (zh) 2023-09-26
CN117323658A (zh) 2024-01-02
US11496551B2 (en) 2022-11-08
US20200084267A1 (en) 2020-03-12
EP3606628A1 (en) 2020-02-12
JP2020516346A (ja) 2020-06-11

Similar Documents

Publication Publication Date Title
US11943281B2 (en) Systems and methods for using a distributed game engine
JP7337187B2 (ja) 分散型ゲームエンジンを使用して状態を予測するシステム及び方法
US11537264B2 (en) Methods and systems for providing shortcuts for fast load when moving between scenes in virtual reality
US10315105B2 (en) Multi-image interactive gaming device
JP7411794B2 (ja) Gpuの1つまたは複数のパラメータを調整するためのシステム及び方法
CN117396255A (zh) 用于在玩传统游戏期间仿真图形参数和音频参数的***和方法
JP2024521138A (ja) レガシーゲームのプレイ中のユーザ入力のエミュレーションのためのシステム及び方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant