本公开涉及为在线游戏分配资源,并且更确切地涉及构建人工智能(artificialintelligence;ai)模型和使用所述ai模型识别资源并且为在线游戏分配资源。
背景技术:
在线游戏在游戏世界内已经变得非常流行。在线游戏、尤其是大型多玩家在线(mmo)游戏,大量用户经由计算机的网络同时地参见所述游戏。因此,mmo游戏需要用于执行在线游戏的游戏逻辑的资源的大量协调,以便向用户提供令人满意的玩游戏体验。在一些实例中,使用游戏控制台的网络来玩在线游戏,其中每个游戏控制台专用于特定用户。在玩游戏会话期间,游戏控制台的数目视在线游戏的需求而上调或下调。每个游戏控制台为对应用户提供用于在线游戏的可用资源。各个游戏控制台的资源被独立地控制并且不在用户间共享。
在替代实例中,在线游戏是使用游戏云系统的资源在游戏云上执行,并且用户能够连接到在云服务器上执行的在线游戏。在游戏云上执行在线游戏的优点是执行游戏所需的资源被集中。然而,由于玩在线游戏的玩家的数目同时地增大,游戏云系统资源的压力持续地增大,从而使得难以向在线游戏的用户提供可接受的服务质量。资源的压力可以归因于针对在线游戏产生的数据的量。举例来说,在mmo游戏中,每个玩家必须具备基于玩家自身感知的游戏数据。为了避免所述压力,游戏开发者设置能够同时参加玩游戏会话的用户的数目的极限。即使具有设置的极限,资源的压力也可以导致等待时间,从而严重地影响用户的玩游戏体验,尤其在需要将游戏数据快速地散播到用户,使得用户能够筹划其下一步动作的快节奏游戏中。此外,基于用户的分布将资源分配给在云服务器上执行的在线游戏非常复杂。
在此上下文中,本公开的实施方案出现。
技术实现要素:
本公开的实施方案涉及用于为在线游戏提供资源的系统和方法。所述在线游戏是使用包括多个管理节点和处理节点的分布式游戏引擎执行。所述管理节点用于识别所述分布式游戏引擎的功能部分和将所述分布式游戏引擎的功能部分分布到多个处理节点进行处理。所述功能部分与处理所述在线游戏的特定特征的所述分布式游戏引擎的游戏引擎任务有关。所述功能部分是使用资源分配模型分布到所述处理节点。所述资源分配模型是使用机器学习算法构建并且用玩游戏训练数据来训练,所述玩游戏训练数据包括从用户(即,玩家、开发者)接收的输入、从历史玩游戏获得的所述在线游戏的游戏状态和成功准则。所述资源分配模型识别所述在线游戏所需的所述游戏引擎的所述功能部分、处理所述功能部分所需的资源和在云游戏系统内的能够提供用于处理所述识别的功能部分的必要资源的所述处理节点中的特定处理节点。分配代理用于与配置代理通信以将所述识别的功能部分分配给所述处理节点中的所述特定处理节点进行处理。
所述机器学习算法使用来自所述在线游戏的开发者的初始输入产生所述分配模型。接着使用来自用户(玩家、观众等)的输入、从服务器的网络收集的关于先前和当前游戏过程的所述在线游戏的游戏状态来训练所述产生的分配模型。所述机器学习算法相对于针对所述在线游戏定义的成功准则分析所述游戏状态,以识别具有用于处理所述在线游戏的所述游戏引擎的所述功能部分的资源的恰当处理节点的最优量。所述产生的资源分配模型包括多个互连的处理节点,其中一个或多个处理节点被指派用于处理所述游戏引擎的特定功能部分。每个处理节点由服务器表示。所述服务器可以是独立的物理服务器,或作为数据中心的部分的物理服务器,作为虚拟云系统的部分的虚拟服务器,或容器服务器,或其任何组合。在数据中心内的物理服务器可以是单个服务器,或可以是在数据中心内的一排服务器的部分,经由例如架顶路由器的机架式路由器来访问所述排的服务器。
所述分布式游戏引擎被配置成:管理所述在线游戏的所述游戏引擎任务(即,功能部分)中的特定游戏引擎任务到从所述资源分配模型识别出的所述处理节点中的对应处理节点的指派;将所述特定游戏引擎任务分布到恰当处理进行处理;在所述处理节点之间以及在所述处理节点与配置代理之间路由经处理的结果;以及通过在考虑用于处理所述游戏引擎任务的过程时序的同时管理所述游戏引擎任务的队列而使对分布在所述处理节点间的所述游戏引擎任务的处理同步。
使用所述处理节点的所述资源处理的所述功能部分可以包括所述在线游戏的某些核心领域,仅举几个实例,例如游戏物理、图形、音频、逻辑、人工智能(ai)、脚本、动画、网络连接、流化、优化、内存管理、线程化、本地化支持。前述功能部分仅作为实例提供并且不应被视为详尽的。所述分布式游戏引擎的所述资源分配模型提供框架,其中许多可再用部件(即,处理节点)经识别以用于处理所述在线游戏的核心特征,所述核心特征用于使所述在线游戏变得生动。根据随时间从在线游戏执行收集的用户输入(即,训练数据的部分)连续地更新所述资源分配模型。在更新所述分配模型之前,根据所述成功准则来分析所述收集到的用户输入。对所述分配模型的所述更新可以包括对处理所述游戏引擎的所述功能部分(即,游戏引擎任务)可能需要的资源的数目和类型的调整。只要在线视频游戏被用户访问,对输入的收集和对所述资源分配模型的更新仍在进行。
在一个实施方案中,公开一种用于为在线游戏提供资源的分布式游戏引擎。所述分布式游戏引擎包括多个管理节点,所述多个管理节点被配置用于将所述分布式游戏引擎的功能部分分布在多个处理节点上。所述分布式游戏引擎还包括资源分配模型,所述资源分配模型是由玩游戏训练数据构造。所述训练数据包括从用户接收的输入、所述在线游戏的游戏状态和成功准则。所述分布式游戏引擎还包括资源分配代理,使用所述资源分配代理来访问所述资源分配模型并且与配置代理通信以识别处理所述在线游戏的所述功能部分中的特定功能部分所需的所述多个处理节点,其中处理所述功能部分中的每个功能部分所需的所述处理节点的类型和数目是基于由所述资源分配模型指定的资源分配。所述分布式游戏引擎包括过程同步层,所述过程同步层与所述多个处理节点中的每一者和所述多个管理节点中的每一者介接,以提供所述处理节点的资源用于执行所述在线游戏,所述在线游戏产生用于在所述用户的客户装置处呈现的视频帧。
在另一实施方案中,公开一种用于为在线游戏提供资源的方法。所述方法包括接收所述在线游戏的训练数据。所述训练数据识别用户输入、所述在线游戏的游戏状态和成功准则。所述方法还包括根据所述训练数据产生用于所述在线游戏的资源分配模型。所述产生的资源分配模型识别多个处理节点,所述多个处理节点被配置用于处理用于所述在线游戏的分布式游戏引擎的功能部分。所述多个处理节点中的选定处理节点被配置成提供处理资源以处理所述分布式游戏引擎的特定功能部分。根据由所述资源分配模型指定的资源分配来分配所述多个处理节点以处理所述在线游戏的所述功能部分,其中每个功能部分识别特定的游戏引擎任务。所述分配包括:对指派选定处理节点以处理所述在线游戏的与所述特定功能部分相关联的游戏引擎任务中的选定游戏引擎任务进行管理;将所述游戏引擎任务中的所述选定游戏引擎任务分布到所述选定处理节点进行处理;在所述选定处理节点与所述多个处理节点中的剩余处理节点之间以及在所述选定处理节点与用于为所述处理节点提供资源的配置代理之间路由经处理的结果;以及使对分布在所述多个处理节点间的所述游戏引擎任务的处理同步。
结合附图,从以下的详细描述将了解本公开的其他方面,所述详细描述借助于实例说明本公开的原理。
附图说明
通过结合附图参考以下描述可以最佳地理解本公开。
图1根据本公开的一种实现方式图示在提供资源时使用的游戏云系统的简化物理视图。
图2根据本公开的一种实现方式图示在用于为在线游戏提供资源的游戏云系统内所使用的分布式游戏引擎的简化框图。
图3根据本公开的一种实现方式图示在为在线游戏提供资源时使用的分布式游戏引擎的各种部件。
图3a根据本公开的一种实现方式图示在产生和训练在为在线游戏提供资源时使用的资源分配模型时使用的训练数据的分量。
图4a根据本公开的一种实现方式图示具有用于处理分布式游戏引擎的功能部分的资源的已分配处理节点的简化框图。
图4b根据本公开的一种实现方式图示分配用于处理分布式游戏引擎的功能部分的处理节点的替代实现方式。
图4c根据本公开的一种实现方式图示示出对用于处理分布式游戏引擎的功能部分的处理节点的配置的更新的简化框图。
图5根据本公开的一种实现方式图示游戏云系统的逻辑结构的简化框图,所述逻辑机构占用分布式游戏引擎以为在线游戏提供资源。
图6a到图6c根据本公开的一种实现方式图示用于提供用于处理在线游戏的分布式游戏引擎的功能部分的资源的各种类型的处理节点服务器。
图7根据本公开的一种实现方式图示能够用于提供资源的在数据中心内的服务器机架的简化框图。
图8根据本公开的一种实现方式图示用于执行在线游戏并且经由云游戏网络将游戏数据的帧提供到一个或多个客户装置的游戏云系统的系统图。
图9根据本公开的一种实现方式图示用于使用资源分配模型为在线游戏提供资源的方法的流程操作。
图10根据本公开的一种实现方式图示用于使用建模器构建和训练资源分配模型(人工智能(ai)模型)的示例计算装置的部件。
具体实施方式
尽管以下详细描述含有用于说明目的的许多特定细节,但是本领域的普通技术人员将了解,以下细节的许多变化和更改在本公开的范围内。相应地,在不损失在此描述后的权利要求的一般性并且不对所述权利要求强加限制的情况下,阐述下文所描述的本公开的方面。
一般来说,本公开的各种实施方案描述实现机器学习算法以使用由在线游戏提供的训练数据构建游戏应用的资源分配模型(即,ai模型)的系统和方法。训练数据包括由在线游戏的用户提供的输入、受用户的输入影响的游戏状态和针对在线游戏定义的成功准则。用户的输入是在不知道玩家的情况经由后端服务器(例如,游戏控制台、游戏服务器等)的网络收集,并且在使用利用基于人工智能(ai)的算法的机器学习构建和训练ai模型时使用。经过训练的ai模型用于学习在线游戏的繁琐细节,包括如何处理游戏数据。举例来说,分析来自用于给定游戏数据的经过训练的ai模型的输出以识别满足针对在线游戏定义的成功准则所需的资源。
在一些实现方式中,成功准则可以定义为提供充足资源用于处理游戏相关的数据,以便为用户提供最优游戏体验。成功准则可以基于用户输入、用户的类型(玩家、观众等)和正在玩的游戏的类型。举例来说,可以定义成功准则以包括最小等待时间,或高质量的图形或音频,或高效率内存管理,或更大的通信带宽等。在这些实现方式中,机器学习算法分析训练数据以找出与输入的给定集合相关的输出,以识别分配用于处理产生满足针对在线游戏定义的成功准则的输出的资源。所述算法因此将输出图案映射到所定义的成功准则的用户输入,以产生和/或训练ai模型。使用经过训练的ai模型的映射,可以关于在后续玩在线游期间所遇到的输入的集合确定对资源的预测需求。ai模型可以经过训练以提供不同输出到满足不同成功准则的用户的输入的映射,并且所述算法能够使用不同映射以预测与定义的成功准则有关的在线游戏的资源需求。
举例来说,对于高强度游戏,成功准则可以定义为游戏数据的更快处理和更高传输速率,使得玩在线游戏的用户将能够以实时方式接收游戏数据,以便筹划用户的下一个动作。游戏数据传输的任何迟滞可以严重地影响用户的游戏过程。在这个实例中,所述算法将使用经过训练的ai模型以识别达成帧到客户装置的所需处理和传输速度所需的资源的类型(即,规定的成功准则)。因此,使用经过训练的ai模型内的映射,所述算法可以能够识别使用具有更快cpu的处理资源中的某些处理资源的先前游戏过程中的一个或多个,所述处理资源处理游戏数据、对游戏数据编码并且以快速且高效率的方式将游戏数据汇编成帧。可以识别提供用于将帧传输到客户装置的更高带宽的额外资源。基于这个信息,所述算法可以识别处理资源,并且在玩游戏可能需要这些资源以在最小迟滞的情况下将游戏数据提供到客户装置的预料中时提供这些处理资源。可以由所述算法识别以提供到在线游戏的资源可以是先前指派给在线游戏的相同资源,或具有类似或更好的能力的资源。
机器学习算法使用分类器引擎以识别用于处理在线游戏的不同特征的游戏引擎的各种功能部分,学习定义所述特征与输出之间的关系的规则,并且构建具有安置在不同层中并且以阶层方式互连的多个节点的ai模型,其中一个或多个节点识别特征。节点还识别用于处理特征的资源。ai模型的节点中的每个特征可以与其他层中的其他节点的一个或多个特征链接,其中关系参数由规则定义。所产生的ai模型将通过基于在玩游戏期间从用户接收的输入而改进每个节点中的特征来进一步训练。经过训练的ai模型基于由成功准则定义的规则而将输入映射到不同输出。当后续玩游戏由用户起始时,经过训练的ai模型能够用于基于当前的游戏状态和针对在线游戏定义的成功准则而识别提供所要输出所需的资源。ai模型经过训练以识别满足不同成功准则的多种结果。ai模型因此能够用于预测对某些类型的资源的需求以便特定成功准则,使得在后续执行在线游戏期间能够快速地提供恰当类型和量的资源,以便满足成功准则。
在基于ai模型的对处理资源的初始分配之后,持续地从玩游戏连续地收集用户输入,并且在训练ai模型时使用所述用户输入。在调整分配到在线游戏的资源时使用经过训练的ai模型的节点中所提供的信息。举例来说,由于在线游戏的多个用户中的每一者以其自身的步调前进,因此对资源的预测需求可能改变。这可能由相应用户的输入和在线游戏的所得游戏状态所产生的游戏数据的变化引起。因此,改进的ai模型用于识别并且预测性地提供用于在线游戏的必要资源。
由于对各种实施方案的以上一般理解,现将参考各种图式来描述实施方案的示例细节。
图1是用于使用资源分配模型为在线游戏提供资源的系统的简化物理视图,使用机器学习算法来训练所述资源分配模型。所述系统包括与用户1到n相关联的多个客户装置100,所述用于经由例如互联网的网络200访问游戏云系统(gcs)300。根据本公开的一种实现方式,所述游戏云系统包括执行一个或多个在线游戏应用的实例(instance)的后端服务器的网络。所述后端服务器是被配置成执行一个或多个游戏的一个或多个实例的游戏服务器。游戏服务器可以是在所述游戏云系统中可用的任何类型的服务器计算装置。举例来说,游戏服务器可以管理主机上的支持执行用户的在线游戏的实例的游戏处理器的虚拟机。客户装置可以是任何计算装置,例如移动电话、平板计算机、个人计算机等,所述计算装置包括内存、处理器及用于通过访问网络200而与后端服务器互动的网络接口,或者可以是提供用于与提供计算功能的后端服务器互动的接口的瘦客户机。
在一些实现方式中,在线游戏可以由游戏云系统的多个服务器远程地执行,并且游戏数据经由网络200流到玩家的客户装置,其中玩家是参加玩游戏的用户。由玩家使用客户装置中所提供的控制选项或使用以通信方式连接到客户装置的控制器来控制玩在线游戏。在其他实现方式中,在线游戏可以在客户装置处本地执行,并且来自执行在线游戏的元数据将经由网络200传输到后端服务器,以用于影响游戏状态和用作用于产生和训练ai模型的目的的训练数据。
用于训练ai模型的训练数据包括游戏过程的特定点处的在线游戏的游戏状态。游戏状态提供玩在线游戏的繁琐细节。因此,游戏状态例如可以包括游戏角色、游戏对象、游戏对象属性、游戏属性、游戏对象状态、图形叠加等。游戏状态还包括在线游戏的实例在执行时所使用的服务器的网络的每个装置或模块或部件的状态,例如用于产生和呈现玩游戏数据的cpu、gpu、内存、寄存器值、程序计数器值、可编程dma状态、dma的缓存数据、音频芯片状态、cd-rom状态、可用通信带宽等。游戏状态还识别当前呈现的可执行代码的部分和需要加载以继续玩游戏的可执行代码的部分。玩家的包括在游戏状态中的用户保持的数据可以包括玩家的用户配置、游戏对象的用户定制、游戏类型、由玩家选择的游戏等级/难度、游戏工具/获胜/点/现金/奖励的量等。游戏状态还可以包括随机产生的特征或ai重叠或游戏繁琐细节,前述各者在理解与玩在线游戏相关联的游戏细节时有用。
在游戏云系统上执行的在线游戏可以是大型多玩家在线(mmo)游戏,并且游戏服务器可以包括多玩家分布式游戏引擎310,所述多玩家分布式游戏引擎与在线游戏的游戏逻辑通信以允许玩家(即,用户)与游戏逻辑的互动和在每个玩家的对应游戏环境内的玩家之间的互动。游戏逻辑被配置成在mmo游戏会话期间管理每个玩家的游戏状态。对于在线游戏,游戏状态包括每个玩家在特定点玩游戏的游戏状态,和每个玩家的保存数据,包括由玩家提供任何游戏定制。使用游戏状态,多玩家分布式游戏引擎310能够将物体和字符叠加/插入到参与mmo游戏会话的玩家的游戏环境中的每一者中。
分布式游戏引擎310与多个模块互动,仅举几个实例,所述模块例如用户帐号模块310a、游戏标题模块310b、用户度量模块310c和游戏状态度量310d。用户帐号模块310a用于针对玩在线游戏而鉴别访问gcs300的用户。游戏标题模块310b用于针对玩游戏确定在gcs300处可供与用户帐号相关联的用户使用的游戏标题,包括免费的游戏、用户已经购买的游戏等。分布式游戏引擎310响应于用户对要玩的游戏的选择而在gcs300内的多个服务器上执行游戏的实例。当用户玩在线游戏时,采集用户输入并且使用所述用户输入更新用户度量和游戏度量。用户输入由游戏逻辑处理以影响游戏的游戏状态并且产生用于传输到用户的客户装置的玩游戏数据。在线游戏的游戏状态经过分析以识别用户的用户度量和在线游戏的游戏状态度量。用用户的用户度量来更新用户度量模块310c。更新到用户度量模块310c的用户度量中的一些包括游戏识别符、用户访问在线游戏的时间、用户用来玩游戏的时间量、所玩的游戏等级、每个游戏等级所用的时间量、在每个游戏等级内战胜的挑战的数目、战胜每个挑战的尝试次数、游戏得分/胜利、用户的技能水平等。类似地,游戏状态度量模块310d从在线游戏的玩游戏数据提取在线游戏的游戏状态度量。
分布式游戏引擎310与资源分配代理315互动以识别提供游戏的最优游戏过程所需的资源320a到320m。资源分配代理315指的是使用机器学习算法产生的用于预测在线游戏的执行所需的资源的类型和每种类型的资源的量的资源分配模型。预测是基于在线游戏的状态、用户输入和针对在线游戏定义的成功准则。基于如成功准则所指定的对不同类型的资源的预测需求,资源分配代理向配置代理发信号以为在线游戏提供资源320到320m,因此在线游戏能够高效率地运行。
图2图示分布式游戏引擎的实现方式,响应于在玩游戏期间接收到的用户的输入,所述分布式游戏引擎将物理资源用于处理与针对在线游戏产生的游戏数据的特征有关的分布式游戏引擎的功能部分。在线游戏可以是被多个用户访问的大型多玩家在线(mmo)游戏。多个用户可以是队伍的部分或社会接触,或可以是正在跨越跨城市的地理区域或跨越多个城市或跨越国家或全球地访问在线游戏的独立用户。为了允许用户高效率地访问在线游戏,使用分布式游戏引擎来执行在线游戏,所述分布式游戏引擎使用跨地理区域分布的服务器/系统资源的网络以执行在线游戏的游戏引擎和游戏逻辑的实例。
一般来说,游戏引擎是用作例如mmo游戏的游戏的基础的软件层,并且提供用于开发在线游戏的框架。游戏引擎将进行每个游戏所需的共同相关任务(即,游戏引擎任务)的细节抽象化,而在线游戏开发者提供游戏逻辑,所述游戏逻辑提供如何玩在线游戏的细节。游戏引擎框架包括多个可再用部件,所述多个可再用部件用于处理使在线游戏变得生动的在线游戏的几个功能部分(即,核心特征)。由游戏引擎处理的基本核心特征可以包括物理(例如,冲突检测、冲突响应、轨迹、基于重力、摩擦的物体的移动等)、图形、音频、人工智能、脚本、动画、网络连接、流化、优化、内存管理、线程化、本地化支持,以及更多特征。可再用部件包括用于处理针对在线游戏识别的核心特征的处理引擎。在游戏运行期间,游戏引擎管理在线游戏的游戏逻辑,以最优方式管理用于处理游戏数据的游戏引擎的功能部分的分配和同步,并且产生传输回到客户装置以用于呈现的游戏数据的帧。目前可用的多种游戏引擎提供不同的核心功能性,并且恰当的游戏引擎可以基于可用于执行在线游戏的功能性来选择。
在图2中所图示的实现方式中,游戏引擎和游戏逻辑的实例跨多个服务器分布,其中每个服务器执行游戏引擎的特定功能部分。不同的服务器可以通过同时执行不同的实例来并行地处理游戏数据。用这种方式,分布式游戏引擎允许对游戏数据的更快并且高效的处理。游戏引擎可以被配置成处理用于使在线游戏变得生动所需的多个功能部分。在一些实现方式中,针对mmo游戏环境开发的每个在线游戏可以识别使在线游戏工作所需的游戏引擎的不同功能部分。在其他实现方式中,针对mmo游戏环境开发的在线游戏中的每一个游戏可能需要相同类型的功能部分以用于使在线游戏的相应在线游戏变得生动。在每一个在线游戏识别相同类型的功能部分的实现方式中,在线游戏中的特定者可以着重于所述功能部分的选择功能部分多于其他功能部分,并且所述重点可以基于访问在线游戏的用户的类型、游戏的类型、在线游戏的游戏状态和针对在线游戏定义的成功准则。举例来说,用户可以是玩家类型,或观众类型。因此,当在线游戏被玩家访问时,所述重点可以关于能够以快速并且高效的方式提供游戏数据的功能部分(即,与物理、汇编/编码和带宽有关的功能部分,以便以最小等待时间将游戏数据提供到客户装置)。当在线游戏被观众访问时,所述重点可以关于能够提供对观众选择跟随的特定玩家玩游戏或一般的在线游戏的访问的功能部分(例如,与物理、音频、脚本和场景图形有关的功能部分,以便提供高质量游戏数据)。替代地,在线游戏可以是高强度类型或低强度类型。因此,当在线游戏是高强度类型时,所述重点可以关于物理、更快的处理、汇编和传输,而对于低强度游戏,所述重点可以关于物理、肌理、暗影、动画、场景图形、脚本和/或声音。类似地,玩家可以是高等级玩家,或新手,或中级玩家。因此,当玩家是高等级玩家时,所述重点可以关于更快的处理、汇编/编码和带宽,而对于中等或新手等级玩家,所述重点可以关于不同的功能部分。在其他实现方式中,不同的mmo游戏可以着重于不同类型的功能部分。
功能部分可以由在线游戏的开发者识别,或可以通过分析在线游戏的游戏逻辑来确定。基于在线游戏的规范要求,游戏引擎和游戏逻辑的实例可以在多个服务器(即,处理节点)上执行,其中每个游戏引擎实例基于所定义的成功准则而在占用特定处理引擎的服务器上执行以处理与从玩在线游戏产生的游戏数据的特定特征有关的功能部分。在图2中图示的简化示例实现方式中,在线游戏-游戏1-的游戏引擎、游戏逻辑的实例在6个服务器(服务器1到6)上实例化,其中每个服务器用于处理与在线游戏-游戏1-的游戏数据的特定特征相关的游戏引擎的特定功能部分。举例来说,服务器1(即,处理节点1)可以用于占用物理引擎以处理在线游戏的游戏数据的游戏物理特征,服务器2(即,处理节点1)可以用于处理肌理,服务器3(即,处理节点1)用于处理暗影,诸如此类。游戏引擎的实例通过使来自第一服务器的输出(即,来自功能部分的处理的结果)充当到第二服务器的输入、使来自第二服务器的输出充当到第三服务器(或到第一服务器)的输入等来提供对游戏数据的迭代处理。在图2中图示的实现方式中,单个服务器(即,处理节点)被指派用于执行游戏引擎的实例和用于处理游戏引擎的特定功能部分的游戏逻辑。在其他实现方式中,基于如用户输入所指定的对此处理的预测需求和成功准则,各自执行游戏引擎的实例和游戏逻辑的多个服务器可以经指派以处理特定功能部分。由于游戏引擎和游戏逻辑是在用于处理使在线游戏变得生动所需的游戏引擎的不同功能部分的多个服务器上实例化,因此将游戏引擎称为“分布式”的。因此,本申请中对分布式游戏引擎的任何引用指代游戏引擎和游戏逻辑的对应部分将在多个服务器上实例化的这种配置。
从不同服务器输出的游戏数据经过同步、汇编、编码并且传输到客户装置的相应客户装置以用于呈现。游戏引擎还包括同步引擎(未示出),所述同步引擎用于将游戏引擎的各种功能部分的分布同步到不同服务器、同步指派到不同服务器的游戏引擎的不同功能部分的处理并且在服务器之间和在服务器与配置代理之间路由经处理的结果。分布式游戏引擎的配置代理(未示出)用于跟踪用于处理游戏引擎的特定类型的功能部分的服务器,和被指派用于处理特定类型的功能部分的服务器的类型和数目。基于针对在线游戏定义的成功准则,配置代理可以与分布式游戏引擎的资源分配代理315互动,以提供用于处理游戏引擎的特定类型的功能部分的额外服务器(即,处理资源320)。
对处理资源的分配可以在用户为了玩游戏而访问在线游戏之前进行,并且此分配是基于从使用机器学习算法开发的ai模型确定的对资源的预测需求。当用户为了玩游戏而访问在线游戏时,从客户装置接收的用户的输入受到监测并且用于影响在线游戏的游戏状态。用户的输入和在线游戏的游戏状态由分布式游戏引擎使用以产生ai模型并且使用来自ai模型的信息以确定是否需要提供额外处理资源以便提供对在线游戏的最优玩游戏体验。
图3图示识别用于为在线游戏提供资源的分布式游戏引擎的各种部件的示例实现方式。在线游戏可以是大型多玩家在线游戏,所述在线游戏可以在游戏云系统300的多个服务器上实例化,使得用户能够从不同的地理位置访问在线游戏。分布式游戏引擎310是游戏云系统300的部分并且包括使在线游戏变得生动所需的功能部分,其中所述功能部分能够在单独服务器上执行。分布式游戏引擎310在在线游戏(例如,游戏1)的玩游戏期间使用网络接口经由网络200与多个用户的客户装置100通信,并且接收在线游戏的用户输入。响应于用户的输入,产生游戏数据的视频帧、对所述视频帧编码并且将所述视频帧返回到客户装置100以用于呈现。分布式游戏引擎310包括胶连逻辑306,所述胶连逻辑从不同客户装置接收不同用户的输入,并且作为响应,识别将以每个客户装置为目标的游戏数据的帧,将游戏数据捆绑在一起并且将游戏数据的帧转发到用户的客户装置。
游戏引擎是在游戏云系统300的一个或多个后端服务器上执行。后端服务器提供例如机器学习引擎,以分析响应于从用户接收的输入所产生的游戏数据并且训练由用户选择用于玩游戏的在线游戏的资源分配模型(ai模型)315。ai模型最初从由处理由在线游戏的开发者提供输入产生的游戏数据产生。由开发者提供的输入可以来自由开发者执行的模拟玩游戏,或是从玩在线游戏的玩家的受控群获得的输入。接着使用来自不同用户玩游戏的输入持续地训练所产生的ai模型。用户的输入用于驱动在线游戏的游戏状态。ai模型是使用多层的互连节点产生,其中每个节点与游戏数据的不同特征有关。ai模型的节点被特征填充,并且建立相互关系以理解玩在线游戏的繁琐细节。基于针对在线游戏定义的不同成功准则,到ai模型的游戏输入输入识别各种资源配置输出,其中通过遵循ai模型的不同相互关系路径来识别不同成功准则的输出。举例来说,当提供特定成功准则、游戏输入和游戏状态作为输入时,ai模型能够用于识别达成在线游戏的游戏状态的特定成功准则所需的特定资源配置。
图3中图示的分布式游戏引擎包括多个管理节点302和用于处理针对在线游戏产生的游戏数据的多个处理节点308。来自经处理游戏数据的信息用于构建和训练ai模型,并且用于使用ai模型预测在线游戏所需的特定资源配置。多个管理节点302和多个处理节点308中的每一者执行游戏引擎的实例和在线游戏的游戏逻辑。每个处理节点或管理节点能够被视为被配置成执行游戏引擎的实例和在线游戏的游戏逻辑的不同的服务器。管理节点302参考ai模型315以:识别需要在不同处理节点上执行的游戏引擎任务;管理游戏引擎任务到提供处理所支配的游戏引擎任务所需的资源的恰当处理节点的指派;将游戏引擎任务分布到处理节点(即,服务器)以进行处理;使用来自经处理的游戏引擎任务的信息来构建ai模型;基于ai模型来管理用于各种处理节点的资源的分配;以及将经处理的结果从一个处理节点路由的另一处理节点。至少一个处理节点被配置成:汇编由各种处理节点输出的各种游戏引擎任务的结果;对来自处理节点的结果编码以产生流化游戏数据135的视频帧以向前传输到相应的客户装置以用于呈现。所述至少一个处理节点还被配置成格式化所述视频帧,使得所述视频帧具有用于用户的不同客户装置的兼容格式。在一些实现方式中,所述视频帧是基于由处理节点进行以确定用于传输视频帧的可用带宽和协议的测试而格式化。流化游戏数据135的视频帧由胶连逻辑306处理,以识别以客户装置中的每一者为目标的视频帧,以便相应地路由视频帧。额外节点(例如,主服务器节点304)可以设置在分布式游戏引擎310中以协调指派给不同处理节点(即,服务器)的游戏引擎任务的同步和/或管理游戏引擎任务的队列。当新用户加入游戏云系统时,分布式游戏引擎还被配置成将新用户路由到在游戏云系统的处理节点处执行的在线游戏的实例。
在一种实现方式中,多个管理节点302中的每一者用于执行特定的管理任务。举例来说,配备配置代理311的第一管理节点(节点m1)302-m1被配置成:从执行在线游戏的处理节点服务器接收系统输入;分析所述系统输入以识别当前资源配置;以及管理在线游戏的资源配置。所述系统输入提供系统配置信息以及由处理从用户玩游戏接收的游戏输入产生的在线游戏的游戏状态。配备数据收集引擎的第二管理节点(节点m2)302-m2被配置成:从玩在线游戏的多个用户(即,玩家)接收用户输入和来自配置代理311的系统输入;处理所述输入以产生游戏数据;以及从经处理的游戏数据产生用于训练资源分配模型(ai模型)的训练数据。配备资源分配代理313的第三管理节点(节点m3)302-m3被配置成优化在线游戏的资源分配。确切地,在需要向上自旋或向下资讯某些资源的情况下,资源分配代理313可以确定是否已为在线游戏提供最优量的资源,和在何时提供。使用所述资源分配代理来确定当前提供的用于在线游戏的资源的类型和量和达成成功准则所需的资源的类型和量,并且准则“弹性计算”概念以对所述配置代理发信号以上调或下调所述资源中的某些资源以满足在线游戏的变化需求。所述资源分配代理提供灵活性以通过在玩游戏期间的任何时间点基于游戏状态和成功准则而控制资源的提供和取消提供来适应工作负荷变化,使得系统具有充足资源可用于尽可能地匹配接近系统资源的当前需求。具有一个或多个分类器引擎314的第四管理节点(节点m4)302-m4被配置成使用训练数据根据针对在线游戏定义的成功准则来产生并且训练资源分配模型315,所述训练数据包括用户输入和系统输入。资源分配模型315由资源分配代理使用以对所述配置代理发信号以调整分配给在线游戏的资源。
图3a图示训练资源分配模型315时所使用的示例训练数据的各种分量。如所示,训练数据包括在玩游戏期间接收的来自多个用户的用户输入312a、受所述用户输入影响的多个用户中的每一者的在线游戏的游戏状态312b和成功准则312c。当然,训练数据的前述分量仅作为实例提供,并且也可以任务其他类型的输入用于训练资源分配模型315。提供输入的用户能够是玩家、观众和/或开发者,并且资源分配模型315被设计成识别用于每种类型的用户的恰当资源。
资源分配模型315使用机器学习算法以训练模型315。所述机器学习算法可在机器学习服务器(即,ml处理器)302-m4上提供,所述机器学习服务器可以被特别地配置成包括一个或多个分类器引擎以产生并且训练资源分配模型315。经过训练的模型315提供满足针对在线游戏定义的成功准则的输出到用户输入的映射,其中所述用户输入经处理以影响在线游戏的游戏状态。响应于用户的输入,所述机器学习算法分析由游戏逻辑参数的游戏数据,以识别用于处理游戏数据的特定特征的游戏引擎的各种功能部分和用于处理所述特定特征以达成在线游戏的不同成功准则的系统资源。游戏数据的特征可以包括物理、肌理、暗影、汇编/编码、音频处理、脚本、动画、内存管理、场景图形等,并且游戏引擎的功能部分可以识别为了处理所述特定特征的相应特征而占用的特定部件(即,引擎或模块)。经过训练的模型315由分布式游戏引擎使用,以确定处理游戏数据的不同特征所需的游戏引擎的不同功能部分,以及处理所述不同特征所需的资源的类型和每种类型的资源的量。资源的类型和每种类型的资源的量由针对在玩线游戏的不同时间点定义的成功准则驱动,并且所述成功准则反而取决于用户的类型、用户的用户度量中的某些用户度量、在线游戏的游戏状态等。举例来说,针对玩在线游戏的玩家定义的成功准则可以不同于针对跟随特定玩家玩游戏或大体上玩在线游戏的观众定义的成功准则。类似地,针对有经验或高度熟练的玩家定义的成功准则可以不同于针对新手或中等玩家定义的成功准则。
资源分配模型315是使用分类器引擎构建/训练,所述分类器引擎用于识别游戏数据的特征并且对所述特征分类,以便填充资源分配模型(ai模型)315的互连节点的网络内的各种节点。每个分类器引擎被预定义以识别游戏数据中的特征中的特定特征并且对所述特定特征分类。举例来说,如果资源分配模型315将针对规定在线游戏的最优性能的成功准则加以训练,则可以提供分类器引擎中的特定分类器引擎以识别影响性能的特征中的某些特征(例如,例如等待时间、图像质量、带宽等的特征)并且对所述某些特征分类。用于构建/训练ai模型的分类器引擎学习,以识别经处理游戏数据中的那些特征、分析使用游戏引擎的功能部分进行处理的游戏数据的那些特征(其中ai模型中所使用的游戏数据是通过处理历史用户输入和游戏状态而产生)、用从所述分析获得的信息更新多个层的互连节点内的节点并且使用互连导出特定成功准则的输出。成功准则可以包括可接受的等待时间,或每个服务器上的可接受负荷,或队列的优选长度,或队列计时,或游戏数据的质量,或传输速度等,或其任何组合。不同成功准则的前述列表已仅作为实例提供并且不应被视为详尽的。如早前所提及,由游戏引擎的功能部分处理的游戏数据的一些示例特征包括物理、肌理、暗影、汇编/编码、音频、脚本、动画、内存管理、场景图形,仅举几个实例。当然,可以存在针对游戏数据中的处理识别出的更小或更大数目个特征。相应地,游戏引擎的功能部分执行处理在游戏数据中识别出的特征的相关游戏引擎任务。因此,可以用于执行游戏数据的前述特征的游戏引擎的一些功能部分可以包括物理引擎、肌理模块/引擎、暗影模块/引擎、汇编模块、音频引擎、脚本引擎、动画引擎等。前述功能部分已仅作为实例提供并且不应被视为详尽的。
通过处理游戏数据和用从游戏数据提取的特征和用于处理所述特征的资源的细节填充ai模型的每个节点来构建ai模型。如所提及,用于填充ai模型的游戏数据是从玩游戏历史获得。接着用从当前或未来玩游戏会话获得的额外玩游戏数据实时地更新所述产生的ai模型。用来自游戏数据的处理的信息填充ai模型中的节点,并且在填充ai模型的节点时所遵循的序列可以遵循在由游戏引擎的功能部分处理游戏数据时所遵循的相同序列。也就是说,来自第一节点的经处理输出将与游戏数据一起传输到互连的第二节点以进行另外处理,其中第一和第二节点是基于在游戏数据的处理期间所遵循的序列而识别。举例来说,游戏数据首先可以经历由物理引擎进行的处理以处理物理分量。来自物理引擎处理的信息可以上传到第一节点,并且具有经处理物理分量的游戏数据可以作为输入提供到与肌理有关的已连接第二节点,并且具有物理和肌理分量的游戏数据可以提供到暗影的已连接第三节点,诸如此类。随着游戏数据前进通过互连节点的多个层,聚集来自每个经处理特征的知识并且产生输出。所产生的输出与特定成功准则有关。从输入节点到输出节点的道路可以由与特定成功准确相关的一个或多个预定义规则确定。资源分配模型315可以通过在输入节点与输出节点之间遵循ai模型的互连节点的不同路径来产生多个输出,其中每个输出由被定义成满足特定成功准则的对应预定义规则驱动。来自分类器引擎的输出可以提供确定输出(即,资源分配)是否满足针对在线游戏定义的预定义成功准则所必需的信息。举例来说,来自资源分配模型315的信息可以识别用户x正在玩游戏1的等级j,并且接收到x等级的性能、y等级的等待时间和z等级的质量。此外,成功准则可以定义成最小等待时间,这意味着必须对游戏数据进行快速处理、快速汇编和编码以及传输,以使得游戏数据是实时地提供到客户装置呈现。来自资源分配模型315的输出可以根据定义成功准则的预定义规则由资源分配代理进行分析,以确定用于满足所述成功定义的资源配置的类型。使用这个信息,基于特定游戏状态和针对在线游戏接收到的游戏输入而可以针对在线游戏作出对不同资源的预测,包括提供的或识别出的资源配置是否需要针对后续的玩游戏会话进行微调。所述微调可以包括确定“何时”和哪个(哪些)资源需要针对在线学习加以调整(即,弹性地增多或减少)以达成成功准则。
简单地说,机器学习用于通过使用资源分配模型(即,ai模型)解释用户的输入来理解来自用户的原始输入数据。举例来说,用户的输入用于识别用户的游戏状态度量和用户度量。用户的游戏状态度量和用户度量由机器学习算法使用以表征在玩游戏期间强加于各种资源上的应力,并且此应力能够基于在线游戏的游戏状态改变。所述机器学习算法产生具有节点的神经网络的ai模型,并且用在玩在线游戏的各种阶段所使用的资源填充这些节点,以学习:(a)游戏数据的不同特征如何彼此有关;和(b)通过使用分配的资源处理特定特征所产生的输出如何与针对在线游戏定义的成功准则有关。分类器引擎用于识别不同的引擎并且填充ai模型的不同节点。在使用分配的资源处理不同特征后,用游戏数据的特定特征的处理的输出更新对应的节点。机器学习分析来自对不同特征的处理的输出以识别根据所述处理出现的图案,并且将ai模型的输出关联到针对在线游戏定义的成功准则。使用定义成功准则的预定义规则来进行所述分析。基于所述分析,机器学习确定当前分配是否是最优的,或分配用于处理特征中的某些特征的资源的选择资源是否需要选择性地(向上或向下)缩放以改进总体性能并且将输出更好地对准到成功准则。
当当前资源分配示出为最优(即,基于游戏状态和用户的输入,输出与针对在线游戏定义的成功准则对准)时,系统可以选择维持当前资源分配。另一方面,可以从对ai模型的分析确定:输出满足成功准则,但是存在对保持闲置的资源中的某些资源存在过度分配。由于处理资源成本高昂,因此对为了玩在线游戏而提供每一个资源的优化是重要的。因此,资源分配代理可以使用分析的结果以将信号发送到配置代理,以减少示出为对于处理特定特征过度分配的资源中的某些资源。机器智能可以使用监督学习、无监督学习、半监督学习或任何其他机器学习,以产生并且训练用于将输出对准到成功准则的资源分配模型。
在一种实现方式中,所述预定义规则可以被定义成包括游戏数据的特征中的每一者以作为待考虑的参数,并且输出可以通过使用指派给游戏数据的每个参数的权重产生(即,哪个参数需要比其他参数权重更大)。根据所述预定义规则中的一个或多个预定义规则,资源分配代理可使用对ai模型输出的分析以确定资源的当前分配是否足以满足成功准则,并且当确定分配用于处理特征的一个或多个资源并非最优时,可以对所述配置代理发信号以前瞻性地调整系统资源。举例来说,成功准则可以规定游戏数据需要在在线游戏的后续玩游戏期间以最小等待时间提供到在线游戏的玩家(即,参加玩游戏的用户)。基于规定的成功准则,分析来自资源分配模型的不同输出以识别针对一组游戏输入定义的输出,其中系统资源配置先前满足游戏的游戏状态的规定成功准则。使用由资源分配模型提供的信息,资源分配代理确定在当前玩游戏期间的资源的分配是否足以满足规定的成功准则,或系统资源是否需要增多或减少。当确定用于当前玩游戏的资源分配不足以满足用于达成成功准则的预测需求时,信号可以由资源分配代理发送到配置代理,以前基于预测的资源需求而瞻性地增多或减少用于玩在线游戏的当前会话的系统资源中的特定系统资源。对于针对玩家的当前玩游戏会话的成功准则规定高等级玩家的最小等待时间而不管游戏数据的帧的质量如何的以上实例,满足匹配高等级玩家的游戏输入的游戏输入的最小等待时间的成功准则的输出是根据资源分配模型识别,并且用于确定当前的资源分配。在确定当前的资源分配后,所述机器学习算法还可以分析所述输出,以确定分配给在线游戏的资源(例如,分配给游戏的cpu资源的量和通信带宽)是否需要针对当前游戏过程加以调整,以满足相同的成功准则。类似地,如果成功准则规定返回到客户装置的游戏数据的质量,则对应于游戏数据的质量的输出可以用于确定指派给在线游戏的当前会话的资源中的某些资源是否需要增多或减少以满足成功准则。基于所述判定,资源分配代理产生信号并且将所述信号转发到配置代理以调整分配给在线游戏的资源。
为了确定是否需要作出任何调整,资源分配代理313可以与配置代理311互动,以确定当前的系统资源分配并且在当前的系统资源分配不匹配来自资源分配模型315的满足游戏的游戏状态的成功准则的资源分配时,发信号到配置代理311。到配置代理311的信号可以识别资源的类型和为了达成针对在线游戏定义的成功准则需要作出的调整的类型(放大、缩小、提供新资源、取消提供现有资源等)。配置代理311被配置成响应于来自资源分配代理313的信号而恰当地弹性地调整资源。
图3示出被指派用于处理来自当前游戏会话的游戏数据的特定特征的各种处理节点(节点p1到p8)308。每个处理节点包括游戏引擎的实例和用于处理游戏引擎的特定功能部分的游戏逻辑。处理节点可以是服务器,或游戏控制台,或被配置成提供用户处理游戏引擎的特定功能部分的所需资源的计算装置。为简单起见,图3所示的每个处理节点被配置成处理游戏引擎的特定功能部分,而实际上,可以占用多于一个的处理节点以处理特定功能部分,如将参考图4a到图4c更详细地讨论。
主节点304可以用于使对游戏数据的各种特征的处理同步。所述主节点的过程同步层304a提供所述多个处理节点中的每一者与所述多个管理节点中的每一者之间的通信接口,以对指派用于执行游戏引擎的游戏功能部分的资源以便处理游戏数据的各种特征进行管理。游戏引擎的每个功能部分表示游戏引擎任务,并且过程同步层304a充当虚拟总线以基于由管理节点的资源分配模型的信息来管理游戏引擎任务的功能部分。确切地,过程同步层304a管理游戏引擎任务到不同处理节点的指派,将游戏引擎任务中的特定游戏引擎任务分配到选定处理节点,在选定处理节点(即,互连节点)之间和选定处理节点与配置代理之间路由经处理的结果。提供到配置代理的结果用于弹性地缩放指派用于处理游戏引擎任务的资源,使得输出满足成功准则。弹性地缩放可以包括添加用于处理特定特征的额外处理节点(例如,额外服务),或增加所提供的处理节点内的资源(例如,添加或移除服务器节点的额外cpu核心)。游戏引擎任务的同步包括在考虑每个游戏引擎任务的过程时序的情况下管理任务队列。
图4a图示处理节点的一个示例实现方式,所述实现方式可以在分配用于处理游戏数据的资源以便满足针对在线游戏定义的成功准则时使用。所述处理节点中的每一者配备游戏引擎,并且包括处理特定游戏引擎任务的所需资源。图4a中图示的实现方式展示资源分配的非常基础形式,其中每个处理节点被指派特定的游戏引擎任务进行处理。因此,节点p1用于使用服务器1的资源来处理游戏数据的物理分量,节点p2用于使用服务器2的资源来处理游戏数据的肌理分量,节点p3用于使用服务器3的资源来处理暗影分量,节点p4用于使用服务器k的资源来汇编和编码从不同的处理节点接收的游戏数据,节点p5用于使用服务器m的资源来处理音频分量(即,声音),节点p6用于使用服务器m 1的资源来处理脚本分量,节点p7用于使用服务器m 2的资源来处理动画分量,节点p8用于使用服务器p的资源来执行内存管理,并且节点p9用于使用服务器p 1的资源来处理场景图形分量,仅举几个实例。图4a中识别出的游戏引擎任务的类型是出于说明目的提供并且不应被视为详尽的或限制性的。可以使用在不同服务器上执行的游戏引擎的实例来识别和处理更少或额外类型的游戏引擎任务。所述处理节点中的每一者可以与其他处理节点互动,并且这种互动可以经由将充当虚拟总线的过程同步层。类似地,每个管理节点可以经由虚拟总线或直接地彼此互动。而且,每个管理节点可以经由过程同步层与一个或多个处理节点互动。在图4a中图示的实例中,每个服务器被配置成仅执行一个游戏引擎任务。在替代实例中,多于一个的游戏引擎任务可以由单个服务器执行。沿着类似线路,可以占用多于一个的服务器以执行游戏引擎任务。
图4b图示一个这种实例。资源分配代理可能已指示,需要额外资源以用于处理游戏数据的特定特征,并且作为响应,配置代理311可能已提供用于处理特定特征的额外处理节点。因此,在图4b中图示的实例中,提供多个物理节点以提供用于处理游戏数据的物理分量的所需处理资源,提供多个肌理节点以提供用于处理肌理分量的所需处理资源,并且提供多个脚本节点以提供用于处理脚本的所需处理资源。所述处理节点中的每一者可以包括用于处理相应分量的单核心处理器或多核心处理器、限定带宽或单个子部件或多个子部件。游戏数据的剩余分量可以使用与相应的单个处理节点相关联的服务器的处理资源来处理。
图4c图示用于针对游戏的成功准则的可以在分析资源分配模型315的输出之后由资源分配代理产生的信号。成功准则可以由例如游戏类型、游戏的游戏状态、所产生的游戏数据的量等的一个或多个游戏状态度量和例如用户的类型(开发者、玩家或观众)、用户的经验等级的一个或多个用户度量来驱动。举例来说,对于专家玩家所玩的高强度游戏,成功准则可以定义为以最小等待时间提供游戏数据。对于观众,成功准则可以是提供为全部观众提供以用于观看玩在线游戏的共同观看窗口,或定制观看窗口以用于独立地导览游戏过程的游戏场景,或允许观众独立地跟随专家玩家的游戏过程的单独观看窗口,或允许专家玩家充当观众并且跟随新手玩家的游戏过程并且提供指导的观看窗口等。基于所述成功准则,从分配模型315识别出输出,并且调整系统的资源以为在线游戏的每个用户提供所要的玩游戏体验。在图4c中图示的实例中,资源分配代理可以分析资源分配模型315的输出,以获得在线游戏的当前配置370并且基于在线游戏的当前游戏状态和当前配置370而提供具有配置更新372的信号以便满足针对在线游戏定义的成功准则。如所示,由资源分配代理313传递到配置代理311的信号可以指示,用于处理物理分量、脚本分量、动画分量和汇编的处理节点需要再生更多,而分配用于暗影、声音、内存管理和场景图形的处理节点的量将维持在当前水平,用于处理肌理分量的处理节点的数目需要减小。由资源分配代理传输的信号是基于对基于成功准则从ai模型的分析识别出的不同资源的预测需求,并且用于确保在预期预测需求时以实时方式为在线游戏提供必要的资源,使得当用户与在线游戏互动时,游戏数据是根据针对用户的用户度量和在线游戏的游戏状态度量定义的成功准则使用分配的资源进行处理,并且返回到存在的用户的客户装置。
图5图示在基于对在在线游戏的先前玩游戏期间收集的训练数据的分析预测预期需求时用于为在线游戏提供资源的游戏云系统的示例逻辑结构。在线游戏是多个用户同时玩的大型多玩家在线(mmo)游戏。游戏在游戏云系统上执行并且经由例如互联网的网络200访问。访问在线游戏的用户将对照保持在用户账号310a中的对应用户设置进行验证。所述验证用于识别用户经授权访问的在线游戏的游戏标题310b。在成功验证后,允许用户访问在线游戏以玩游戏。用户可以从不同的地理位置访问在线游戏,并且游戏云系统通过在跨地理分布的服务器的网络上实例化在线游戏来提供对在线游戏的访问。分布式游戏引擎310用于执行在线游戏的游戏逻辑。实例化在线游戏包括在服务器网络的每个服务器上执行游戏引擎310e和游戏逻辑310f的实例。游戏引擎提供必要的引擎/模块以用于处理游戏引擎的不同功能部分,其中每个功能部分被配置成处理游戏数据的对应特征。举例来说,可以提供物理引擎以处理游戏数据的物理分量,可以提供暗影引擎以处理暗影分量,诸如此类。
在玩在线游戏期间的用户输入是从多个用户收集并且用于影响游戏的游戏状态和产生用于返回到客户装置以呈现的游戏数据。用户的输入用于更新用户的用户度量310c,并且游戏的游戏状态被更新到游戏状态度量310d。用户的用户度量310c和游戏状态度量310d由分布式游戏引擎310使用以产生资源分配模型315(ai模型)。资源分配模型315用于预测对用于在线游戏的资源的需求并且在预期资源将在玩在线游戏期间使用之前前瞻性地缩放必要资源。所述预测需求识别需要增加的资源和需要减少的资源。
如先前所提及,分布式游戏引擎管理游戏逻辑,所述游戏逻辑影响在游戏云系统上执行的游戏的结果并且提供多个可再用部件以用于处理用于使在线游戏变得生动的在线游戏的某些核心特征。由游戏引擎的可再用部件处理的核心特征包括图形、音频、物理、人工智能、脚本、动画、网络连接、流化、优化、内存管理、线程化、本地化支持,仅举几个实例。游戏逻辑基于从用户接收的输入而确定游戏的游戏状态(即,结果)。从在线游戏的执行产生的游戏数据包括使在线游戏变得生动的经处理特征以及游戏的结果。
除了处理在线游戏的核心特征之外,所述分布式游戏引擎还使用机器学习算法,以使用在线游戏的游戏数据更新ai模型315的节点的神经网络。所述机器学习算法包括用于提供输出以产生/改进资源分配模型的分类器。每个分类器具有引擎/模块,所述引擎/模块被配置成识别并且处理游戏数据的特定特征,并且用与对特征的处理及用于处理特征的资源相关的信息更新ai模型的对应节点。经处理信息将与游戏数据一起向下转发到其他分类器以进行进一步处理。举例来说,可以建造分类器以确定物理特征的质量。可以建造另一分类器以确定暗影的质量。可以建造又一分类器以管理线程化(即,识别处理存在的不同特征的游戏切片的数目、所述游戏切片如何互连、与不同特征相关联的游戏切片的处理时间、用于队列中的特定特征的游戏切片的数目等)。可以建造其他分类器以识别肌理、内存管理、脚本、场景图形、动画的质量,仅举几个实例。
神经网络包括具有经由边缘连接的两个连续节点的多个节点。节点能够经由不同边缘连接到其他节点。从输入节点起穿过一组互连节点通向输出节点的边缘限定路径。基于互连的边缘,输入节点与输出节点能够限定许多路径。使用ai模型,响应于用户在玩在线游戏期间的输入而产生的游戏数据将经由将输入节点连接到输出节点的互连节点(即,隐藏节点)的网络处理。每个节点用于分析游戏数据以确定处理游戏数据的特定特征的效率和确定根据处理游戏数据实现的图案的一致性。举例来说,所述图案可以指示:物理或肌理或暗影的质量是/不是最优的,音频是/不是始终清晰的,存在来自游戏切片的线程化的可接受/不可接受等待时间等。资源分配代理313使用一组预定义分析器规则313a来分析由ai模型的分析器提供的图案以导出输出。所述输出指示特定成功准则得到满足或未满足,和所提供的资源是充足的或需要增多/减少。ai模型通过跟随互连节点的不同路径和识别图案来提供游戏数据到不同输出的映射。来自不同路径的输出可以与关于游戏状态的得到满足或未满足的在线游戏的成功准则有关。此外,所述输出中的每一者识别为了处理沿着相应路径经处理的游戏数据的每个特征所提供的资源的类型和每种类型的资源的量。基于所述分析,资源分配代理产生信号到分布式游戏引擎配置代理311以将资源上调或下调。
所述配置代理可以占用资源管理服务330以管理用于在线游戏的资源的分配。资源管理服务330与硬件调度程序332互动以确定在游戏云系统中可用的硬件资源320中的每一者的状态。在硬件调度程序332内的调度程序缓存332a可以识别资源中的哪些资源目前被指派用于执行工作(即,游戏引擎任务)、哪些资源被调度以指派给工作、资源中的哪些资源是自由的、资源能力等。基于从硬件调度程序332获得的信息,资源管理服务330可以识别资源中的可供分配以执行游戏引擎任务的特定资源。使用由资源管理服务330共享的信息,配置代理311可以分配资源以用于处理在线游戏的游戏数据的特征中的特定特征。当新用户加入游戏会话时,在为新用户选择路由时使用所述分布式游戏引擎系统配置,因此,在线游戏的用户能够具有令人满意的玩游戏体验。
在一些示例实现方式中,图6a到图6c图示各种类型的服务器,可提供所述服务器以用于实例化游戏引擎和游戏逻辑并且用于处理关于在线游戏的产生的游戏数据的特征。如图6a所示,服务器能够是物理服务器308a。服务器308a可以是独立服务器,或可以是游戏云系统内的数据中心的部分。数据中心中的服务器可以是数据中心内的独立服务器,或可以是机架的部分,其中每个机架含有多个服务器计算装置。将参考图7讨论关于服务器机架的更多信息。物理服务器包括必要的资源,例如用于执行一个或多个应用和/或游戏引擎的一个或多个功能部分的操作系统、内存、微处理器。应用或游戏引擎的功能部分被存储在内存中,使用微处理器来处理并且由操作系统管理。
在游戏世界中,许多用户可以从任何地理位置访问和玩mmo游戏,但是可以在一个虚拟游戏空间中聚在一起。多个服务器可以被占用以为用户提供对在线游戏的更快访问以用于玩游戏。通过在不同服务器上执行的玩在线游戏产生的游戏状态必须以快速且高效率的方式在所述服务器间共享,使得以本质上实时地向处在虚拟游戏空间中或在虚拟游戏空间中观看玩游戏的用户提供其自身(即,每个用户自身)对游戏场景的视点。在一种实现方式中,为了提供对游戏数据的更快访问,分布式游戏引擎的实例可以在作为单个数据中心的部分的不同服务器上执行。这个配置高效率地工作,这是因为数据能够没有很多等待时间地在数据中心内的不同服务器之间交换。将参考图7更详细地讨论用于在单个数据中心的服务器之间交换数据的网络架构的细节。在一替代实现方式中,执行分布式游戏引擎和游戏逻辑的实例的多个服务器可以是在地理上分布的多个数据中心的部分。在这种实现方式中,在不同服务器中的服务器间交换通过玩在线游戏产生的游戏状态,使得用户能够具备其自身对游戏场景的视点。在游戏状态交换期间存在很小的相关等待时间,但是可以提供资源以减少等待时间。
如图6b中图示,服务器可以是作为游戏云系统的部分的虚拟机。所述游戏云系统可以包括在主体机器的超级监督器(hypervisor)上运行的多个虚拟机(vm)308b,其中一个或多个虚拟机被配置成支持利用主机的超级监督器可用的硬件资源执行在线游戏的实例的游戏处理器。当与多个虚拟机相关联的多个游戏处理器执行在线游戏的实例时,收集用户的输入,由游戏云系统的一个或多个后端服务器即,物理服务器或虚拟服务器)对所述输入进行组织并且进行处理以影响在线游戏的游戏状态。对由在线游戏响应于用户的输入产生的游戏数据进行汇编、编码并且作为游戏数据的流化帧转发到用户的客户装置以用于呈现。用户的输入还用于产生用于训练ai模型的训练数据,ai模型用于管理用于在线游戏的资源。虚拟机中的每一者可以包括使用主体机器的虚拟化层(即,超级监督器)可用的硬件资源由操作系统执行的一个或多个应用(例如,一个或多个在线游戏应用)。
在一种实现方式中,图6c图示能够用于为在线游戏提供资源的服务器的另一实例。所述服务器可以是云容器308c的部分,所述云容器允许例如在线游戏应用的应用及运行在线游戏应用需要的所述应用的全部依存件、库和配置文件一起捆绑到虚拟容器中,其中所述应用使用所述容器内的已分配资源来运行所述应用。所述容器在没有完整操作系统的情况下操作,由此提供操作系统层次的虚拟化。容器能够以最少量的资源操作以执行任务,例如执行游戏引擎的实例和在线游戏的游戏逻辑,其中资源(即,物理硬件资源)被虚拟化。云容器是便携式的,这是因为云容器能够完全部署到不同服务器。在一种实现方式中,所述容器通过与容器主体共享核心来提供经由过程和名字空间隔离技术的应用隔离。在一替代实现方式中,容器主体的核心不共享,由此通过运行来自虚拟机的容器化应用来提供增强的隔离。前述类型的服务器仅作为实例提供并且不应被视为限制性的。还可以使用提供用于实例化游戏引擎和游戏逻辑的资源的其他形式的服务器或计算装置。
在一种实现方式中,图7图示示例数据中心,用于运行在线游戏的服务器位于所述数据中心中。服务器可以是多个服务器(308-r11到308-r1m、308-r21到308-r2m、308-r31到308-r3m,诸如此类)的部分,所述多个服务器网络连接在一起以提供用于执行例如大型多玩家在线(mmo)游戏的在线应用的必要计算能力。所述数据中心包括多个多个机架(或塔)的服务器和/或存储设备。图7示出3个机架/塔(机架1到3)。然而,所述数据中心可包括多于三个的机架并且有时候包括几百个机架的服务器/存储设备。所述数据中心中的机架能够使用架顶式(top-of-rack;tor)设计和行末端(end-of-row;eor)设计网络连接。
在tor设计中,每个机架/塔包括放置在相应机架的顶部的机架式路由器(机架1的路由器350-a、机架2的路由器350-b、机架3的路由器350-c,诸如此类),并且每个机架的计算装置(即,服务器/存储设备)连接到相应的机架式路由器。所述机架式路由器中的每一者又连接到聚合开关360。在数据中心内的不同机架中的服务器之间交换的数据流经相应的机架式路由器(350-a到350-c),而数据中心内的服务器之间或在数据中心与数据中心外的另一计算装置之间交换的数据流经相应的机架式路由器(350-a到350-c)和对应的聚合开关360。举例来说,当对在线游戏的游戏数据的处理需要在数据中心内从机架1中的服务器1(308-r11)移动到机架3中的服务器3(308-r33)(由实心红色线示出)以便更接近通过玩在线游戏产生的其他数据时,转移过程如下所述地进行:(a)上调服务器308-r33,如果不在上部并且未运行;(b)将机架1的服务器1(308-r11)中的数据转移到机架3的服务器3(308-r33),并且在服务器1308-r11与服务器3308-r33之间同步数据,其中经由相应的顶架路由器350-a和350-c来处置数据的转移和同步;以及(c)将控制转交到服务器3(参见图7中的红色虚线)。使用顶架设计方法的一个优点是布线复杂性减到最小,这是因为特定机架的全部服务器连接到特定机架的对应架顶路由器,并且仅有限数目个缆线延伸超出以连接到其他机架和聚合开关。例如需要较少量的缆线、由于每个数据中心机架伴随内建缆线的数据中心机架的模块化部署等的其他优点能够由本领域的技术人员证明。
另一方面,在eor网络设计中,各个机架中的每个服务器直接连接到共同的eor聚合开关-即,连接是直接的,而不是经由相应机架啊的各个tor路由器。因此,数据流通过eor聚合开关。这个方法的某一优点是,数据中心中的服务器的扩展能够容易地进行并且服务器的放置能够独立地进行而无需考虑任何服务器机架约束,等待时间减到最小,这是因为数据通过较少数目的路由器/开关。本领域的技术人员能够想到这个设计实现方式的其他优点。
在一些实现方式中,用户可以从世界上的任何地点连接到云游戏系统的在线游戏应用。在线游戏应用通过在分布在世界上的不同数据中心的不同服务器上起始多个游戏实例来实现这种连接。在玩在线游戏期间在相应客户装置处产生的用户的输入数据是从服务器的网络收集,并且使用网络模型中的任何一个将游戏数据的帧返回到相应客户装置。本申请中所描述的可以用于在游戏云系统的服务器之间通信的网络模型的一些实例包括tcp/ip网络模型,或基于国际标准化组织(iso)的开放式系统互连(osi)网络架构。分布式服务器之间的数据处理和通信可以遵守多个现存协议中的任何一个。iso模型包括一组应用层(应用层、表示层、会话层)和数据流层(传输层、网络层、数据链路层和物理层)。所述应用层被配置成:识别传输和接收实体;以相应实体理解的方式在传输实体与接收实体之间转移例如在线游戏的应用的数据;以及以最小数据损失管理并且同步传输实体与接收实体之间的通信。所述数据流层被配置成确定是否应在顺序或平行路径中进行数据传输、将数据分组、将分组的数据汇编成帧和沿着优选路由传输数据的帧应遵守的协议。应注意,前述描述仅提供在经由用于在线游戏的服务器的网络传递数据时所使用的iso模型的概述,并且各种层的作用的更精细细节是本领域的技术人员了解的,并且因此不加以更详细地描述。
图8根据本公开的一种实现方式图示示例系统300a的概述,所述系统支持收集用户输入以更新训练数据并且使用经更新的训练数据构建和/或训练与玩在线游戏有关的资源分配模型。特别地,系统图300a实现存储在游戏云系统(gcs)300中的视频游戏的访问和玩游戏。一般来说,游戏云系统gcs300可以是经由网络200操作的云计算系统,以经由对应游戏过程支持玩在线游戏应用的多个玩家。可以提供与那些玩游戏有关的数据,以作为用于构建和/或训练与玩在线游戏应用有关的ai模型的训练数据。特别地,系统300a包括gcs300、一个或多个社交媒体提供者240和客户装置100,前述部件全部经由网络200(例如,互联网)连接。与多个用户相关联的多个客户装置可以连接到网络200以访问由gcs300和社交媒体提供者240提供的服务。用户可以是跟随特定玩家或玩在线游戏的玩家或观众。
在一个实施方案中,游戏云系统300包括游戏服务器205、录像机271、标签处理器273和包括用户配置管理器的账号管理器274、游戏选择引擎(即,游戏选择器)275、游戏会话管理器285、用户访问逻辑280、网络接口290和社交连接管理器295。gcs300还可以包括多个存储系统,例如游戏状态库、用户账号、用户数据库等,所述存储系统通常可以存储在数据库260中。其他游戏存储系统可以包括游戏代码库261、记录的游戏库262、标签数据库263、视频游戏标题库264和游戏网络用户库265。在一个实施方案中,gcs300是能够提供在线游戏应用、服务、游戏有关的数字内容和系统、应用、用户和社交网络间的互连性的系统。gcs300可以经由网络接口290经由社交连接管理器295与用户装置100和社交媒体提供者240通信。社交连接管理器295可以被配置成关联一个或多个朋友。在一个实施方案中,每个交媒体提供者240包括示出用户社交网络连接的至少一个社交图形245。
玩家(即,用户)能够经由游戏会话管理器285访问由gcs300提供的服务。举例来说,账号管理器274在gcs300上实现玩家对游戏标题的鉴别和访问。账号管理器274存储关于用户(玩家、观众)的信息并且管理每个用户的用户配置。用户信息能够被账号管理器274用于鉴别目的。另外地,用户拥有的游戏标题可以由账号管理器274来管理。举例来说,存储在游戏标题库264中的视频游戏可供拥有哪些视频游戏或被提供对哪些视频游戏的访问的用户。
在一个实施方案中,用户能够借助于客户装置100经由网络200上的连接访问由gcs300和社交媒体提供者240提供的服务。客户装置100能够包括任何类型的具有处理器和内存的装置,所述装置是有线或无线的,便携式的或非便携式的。在一个实施方案中,客户装置100能够呈智能电话、平板计算机或以便携式形状因子提供触摸屏能力的混合物的形式。一个示例性客户装置能够包括便携式电话装置,所述便携式电话装置运行操作系统并且具备可以经由网络200获得并且在本地便携式装置(例如,智能电话、平板、膝上装置、桌上装置等)上执行的各种应用(app)的访问。
客户装置100包括显示器132,所述显示器充当供用户用于发送输入命令236并且显示从gcs300和社交媒体提供者240接收的数据和/或信息135的接口。显示器132能够被配置为触摸屏,或通常平板显示器、阴极射线管(crt)或能够呈现显示的其他装置提供的显示器。替代地,客户装置100能够使其显示器132与所述装置分离,类似于桌上计算机或膝上计算机。
在一个实施方案中,客户装置100被配置成与gcs300通信以使用户(玩家)能够玩视频游戏举例来说,玩家可以经由游戏选择引擎275(例如,根据游戏标题等)选择在游戏标题数据库264中可获得的视频游戏。启用所述选择的视频游戏,并且加载视频游戏的实例以用于供gcs300上的游戏服务器205执行。在一个实施方案中,玩游戏主要在gcs300执行,使得客户装置100将从gcs300接收游戏视频帧135的流,并且将用于驱动游戏过程的用户输入命令236传输会到gcs300。来自流化游戏过程的接收到的视频帧135将在客户装置100的显示器132上呈现。
在一个实施方案中,在玩家选择要玩的可用游戏标题之后,所选择的游戏表达的游戏会话可以由玩家经由游戏会话管理器285起始。游戏会话管理器285首先访问数据库260中的游戏状态库以检索玩家玩过的最后会话的保持游戏状态(对于选中的游戏),如果存在的话,使得玩家能够从先前玩游戏停止点重新开始玩游戏。在识别出恢复或开始点后,游戏会话管理器285可以通知游戏服务器205中的游戏执行引擎,以执行来自游戏代码库261的所选择的游戏标题的游戏代码。在起始游戏会话之后,游戏会话管理器285可以经由网络接口290将游戏视频帧135(即,流化视频数据)传递到例如客户装置100的客户装置。
在玩游戏期间,游戏会话管理器285可以与游戏服务器205、录像机271中的记录引擎和标签处理器273通信,以产生或保存玩游戏或玩游戏会话的记录(例如,视频)。在一个实施方案中,玩游戏的视频记录能够包括在玩游戏期间键入或提供的标签内容,或其他游戏相关元数据。标签内容也可以经由快照保存。玩游戏的视频记录和与那个玩游戏相对应的的任何游戏度量一起可以保存在记录的游戏库262中。任何标签内容可以保存在标签数据库263中。
在玩游戏期间,游戏会话管理器285可以与游戏服务器205通信以递送和获得用户输入命令236,所述用户输入命令用于影响与玩视频游戏相对应的结果。由玩家键入的输入命令236可以从客户装置100传输到gcs300的游戏会话管理器285。输入命令(例如,控制器输入或用户输入)236包括用于驱动玩游戏的输入命令和用户互动输入,例如标签内容(例如,文本、图形、视频记录片段等)。游戏输入命令以及任何用户游戏度量(用户打游戏有多久等)可以存储在游戏网络用户库中。与玩视频游戏有关的选择信息可以用于实现可以供用户使用的多个特征。
相应地,在各种实施方案中,本公开描述系统和方法,所述系统和方法实现机器学习(也被称为深度学习)算法以使用训练数据建构ai模型并且用于使用经过训练的ai模型提供与在线游戏应用和/或玩在线游戏应用有关的各种功能性,所述训练数据是从执行支持一次或多次玩游戏的在线游戏应用的实例的服务器的网络收集。
如早前所提及,ai模型是使用互连节点的网络构建。每个节点从作为输入提供到ai模型的游戏输入学习一些信息。知识经由互连在网络内的不同节点之间交换。输入到ai模型的游戏数据激活网络中的节点的初始组。接下来,节点的这个初始组激活其他节点,由此将关于游戏输入的知识从一个节点传播到下一个节点。跨其他节点重复这个激活过程,由此根据知识构建,以提供输出。输出表示给定组的游戏数据的预期或预测结果,其中给定组的训练数据包括特定组的用户输入和在线游戏的游戏状态。在后续执行在线游戏期间,然后可将来自ai模型的输出用于改进处理节点的分配(即,用于处理游戏数据的特定特征的服务器资源),以便满足成功准则。由于用于训练ai模型的游戏数据与玩在线游戏有关,因此ai模型经过训练以学习可以用于获得与不同成功准则相关联的玩在线游戏的不同输出的资源的每一个可能配置。因此,当给予ai模型与后续玩在线游戏有关的一组游戏数据(例如,用户的输入、游戏状态等)时,ai模型能够提供与那个玩游戏的成功准则最对准的输出。ai模型可以经由各种机器学习(即,ai)算法产生,所述机器学习方法包括深度学习(即,机器学习)、强化学习、监督学习、非监督学习、半监督学习、增量学习、基于奖励的学习等。上文列出的ai算法的类型仅为了说明目的而给出,并且不是详尽或限制性的。分类器引擎用于识别ai模型的节点的特征,和规则将与节点相关联的特征的给定组链接到特定输出。举例来说,在监督学习环境中,给定组的特征的输出是预定的,并且深度学习引擎学习将所述组的特征链接到输出的规则,其中每个规则与输出相关联,并且应用成功准则以定义所述规则。在非监督学习环境中,不将给定组的特征自动地系结到输出,但是可以通过查找相似性或与特征的其他类似组有关的数据点的群集来学习所述规则。深度学习可以使用监督学习来构建初始ai模型和使用无监督学习来改进ai模型。将经过训练的ai模型用于确定在线游戏的当前资源分配、用于给定成功准则的预测资源分配,并且弹性地调整分配给在线游戏以便在玩在线游戏期间获得所要结果的资源。
图9根据一种实现方式图示用于为了玩在线游戏提供资源的方法的样本流程操作。所述方法从操作910开始,其中接收在线游戏的训练数据。在线游戏是有多个玩家访问在线游戏以参加玩游戏会话的多玩家游戏。玩家可以从任何位置访问在线游戏以进行玩游戏。因此,在多个服务器上执行在线游戏的多个实例,所述实例包括在线游戏的游戏引擎和游戏逻辑,并且将通过执行在线游戏产生的来自在线游戏的游戏数据转发到玩家的客户装置中的相应客户装置。除了玩家之外,多个观众也可以访问在线游戏以跟随特定玩家的游戏过程或在线游戏的游戏过程。从由游戏云系统的游戏服务器从所述多个玩家收集用户在玩游戏期间的输入,并且对所述输入进行处理以影响在线游戏的游戏状态并且产生游戏数据。训练数据包括用户的输入和在线游戏的游戏状态,以及针对在线游戏定义的成功准则。
使用所述训练数据产生资源分配模型,如操作920中所说明。使用采用机器学习算法的人工智能(ai)建模器来产生所述资源分配模型。所述建模器识别用于处理关于在线游戏所产生的游戏数据的特定特征的分布式游戏引擎的功能部分,并且将与所述功能部分有关的信息上传到所述ai模型的互连的多个节点中的特定节点。上传到节点的信息可以包括游戏引擎的功能部分,所述功能部分用于基于在线游戏的游戏状态和用户的输入以及针对在线游戏的游戏状态定义的成功准则得到满足或未被满足来处理游戏数据的特定特征、用于处理特定特征的资源的类型和量。
使用由资源分配模型提供的信息,分配资源以用于执行在线游戏的功能部分,如操作930中所说明。功能部分执行与游戏数据的特征中的特定特征有关的游戏引擎任务的选定游戏引擎任务。所分配的资源提供充分资源以用于处理相应的游戏引擎任务,并且分配用于执行功能部分的资源的类型和量是资源分配模型指定的。
资源的分配可以包括:对指派识别出的处理节点中的选定处理节点以处理特定游戏引擎任务进行管理;将所述特定游戏引擎任务分布到所述选定处理节点进行处理;在所述选定处理节点与所述多个处理节点中的剩余处理节点之间以及在所述选定处理节点与配置代理之间路由经处理的结果;以及使对分布在所述多个处理节点间的所述游戏引擎任务的处理同步。对处理节点进行分配以提供最优资源以成功地处理游戏数据,以满足针对在线游戏定义的成功准则,使得在线游戏的用户具有令人满意的玩游戏体验。
图10图示能够用于执行本公开的各种实施方案的方面的示例装置600的部件。举例来说,根据本公开的一个实施方案,图10图示适合训练ai模型的示例性硬件系统,所述ai模型能够执行与在线游戏和/或玩在线游戏有关的各种功能性。这个框图图示装置600,所述装置600能合并或能够是个人计算机、服务器计算机、游戏控制台、移动装置或其他数字装置,前述装置中的每一者适合实践本发明的实施方案。替代地,装置的功能性可以在物理服务器中或在虚拟机或容器服务器上实现。装置600包括用于运行软件应用和视情况的操作系统的中央处理单元(cpu)602。cpu602可以由一个或多个同质或异质的处理核心组成。
根据各种实施方案,cpu602是具有一个或多个处理核心的一个或多个通用微处理器。能够使用具有微处理器架构的一个或多个cpu来实现另外的实施方案,所述微处理器架构特别适应高度平行并且计算密集的应用,例如媒体和互动式娱乐应用,应用被配置用于深度学习、内容分类和用户分类。举例来说,cpu602可以被配置成包括ai引擎,ai引擎被配置成支持和/或执行关于提供与在线游戏和/或玩在线游戏有关的各种功能性(例如,预测)的学习操作。深度学习引擎可以包括配置用于构建和/或训练ai模型的建模器120,所述ai模型被配置成提供与在线游戏和/或玩在线游戏有关的各种功能性。此外,cpu602包括分析器140,所述分析器被配置用于产生和训练ai模型。经过训练的ai模型响应于特定组的用户的输入而提供输出,其中所述输出取决于经过训练的ai模型的预定义功能性。经过训练的ai模型可以用于确定资源分配,所述资源分配将在玩游戏期间实现以满足针对在线游戏定义的成功准则。分析器140被配置成执行与在线游戏和/或玩在线游戏有关的各种功能性并且提供响应,各种功能性包括分析针对给定输入(例如,控制器输入、游戏状态数据、成功准则)的来自经过训练的ai模型160的输出。
内存604存储供cpu602使用的应用和数据。存储器606提供应用和数据的非易失性存储器和其他计算机可读介质,并且可以包括固定磁碟驱动器、可移动磁碟驱动器、闪存、装置和cd-rom、dvd-rom、蓝光(blu-ray)、hd-dvd或其他光学存储装置,以及信号传输和存储介质。用户输入装置608将来自一个或多个用户的用户输入传达到装置600,装置600的实例可以包括键盘、鼠标、游戏杆、触摸板、触摸屏、静态或视频记录器/摄影机、游戏控制器和/或传声器。网络接口614允许装置600经由电子通信网络与其他计算机系统通信,并且可以包括局域网和例如互联网的广域网上的有线或无线通信。音频处理器612适合根据由cpu602、内存604和/或存储器606提供的指令和/或数据来产生模拟或数字音频输出。包括cpu602、内存604、数据存储器606、用户输入装置608、网络接口610和音频处理器612的装置600的部件经由一个或多个数据总线622连接。
图形子系统613另外与数据总线622和装置600的部件连接。图形子系统613包括图形处理单元(gpu)616和图形内存618。图形内存618包括用于存储输出图像的每个像素的像素数据的显示内存(例如,帧缓存器)。图形内存618能够和gpu616集成在同一个装置中,作为分开的装置与gpu616连接,和/或在内存604内实现。像素数据能够从cpu602直接提供到图形内存618。替代地,cpu602为gpu616提供定义所要输出图像的数据和/或指令,gpu616根据所述数据和/或指令产生一个或多个输出图像的像素数据。定义所要输出图像的数据和/或指令能够存储在内存604和/或图形内存618中。在一实施方案中,gpu616包括3d呈现能力,所述3d呈现能力用于根据定义场景的几何形状、照明、暗影、肌理、运动和/或相机参数的指令和数据来产生输出图像的像素数据。gpu616还可包括能够执行着色器(shader)程序的一个或多个可编程执行单元。在一个实施方案中,gpu616可以在ai引擎内实现以提供额外的处理能力,例如用于ai或深度学习功能性。
图形子系统613定期从图形内存618输出图像的像素数据,以在显示装置610上显示或由投影系统640投影。显示装置610能够是能够响应于来自装置600的信号而显示视觉信息的任何装置,包括crt、lcd、等离子和oled显示器。装置600能够为显示装置610提供例如模拟或数字信号。
应理解,本文中定义的各种实施方案可以使用本文中公开的各种特征组合或组装成特定实现方式。因此,所提供的实例只是一些可能的实例,但不限于通过组合各种元件以定义更多实现方式而有可能的各种实现方式。在一些实例中,在不背离公开或等效的实现方式的精神的情况下,一些实现方式可以包括更少的元件。
可以用各种计算机系统配置来实践本公开的实施方案,所述计算机系统配置包括手持式装置、微处理器系统、基于微处理器的或可编程的消费者电子设备、微型计算机、大型计算机以及类似装置。本公开的实施方案还能够在任务是由经由有线或无线网络链接的远程处理装置执行的分布式计算环境中实践。
记住以上实施方案,应理解,本公开的实施方案能够使用涉及存储在计算机系统中的数据的各种计算机实现的操作。这些操作是需要对物理量进行物理操控的操作。形成本公开的实施方案的本文中所描述的操作中的任一者是有用的机器操作。本公开的实施方案还涉及用于执行这些操作的装置或设备。可针对所需目的特别地构造所述设备,或所述设备可以是通过存储在计算机中的计算机程序选择性地启动或配置的通用计算机。特别地,各种通用机器能够与根据本文中的教示写出的计算机程序一起使用,或构造更专用的设备以执行所需操作可能更便利。
本公开还能够具体化成计算机可读介质上的计算机可读码。计算机可读介质是能够存储数据的任何数据存储装置,所述数据存储装置此后能用计算机系统来读取。计算机可读介质的实例包括硬盘驱动器、网络附接存储(nas)、只读内存、随机存取内存、cd-rom、cd-r、cd-rw、磁带和其他光学和非光学的数据存储装置。计算机可读介质可包括分布在网络耦合计算机系统上的计算机可读有形介质,因此将以分布式方式来储存并且执行计算机可读码。
尽管按特定次序描述了方法操作,但是应理解,可以在操作之间执行其他的家务操作,或可对操作进行调整,使得操作在稍微不同的时间发生,或可以分布在允许处理操作按与处理相关联的各种间隔发生的系统中,只要按所要方式执行对重叠操作的处理。
尽管出于理解清楚的目的,已相当详细地描述前述公开内容,但将了解,在附加的权利要求的范围内,能够实践某些变化和修改。相应地,本公开的实施方案被视为说明性的,而不是限制性的,并且本公开的实施方案不限于本文中给出的细节,但是可以在附加的权利要求的范围和等效物内进行修改。
1.一种用于为在线游戏提供资源的分布式游戏引擎,所述分布式游戏引擎包括:
多个管理节点,所述多个管理节点被配置用于将所述分布式游戏引擎的功能部分分布在多个处理节点上;
资源分配模型,所述资源分配模型是由玩游戏训练数据构造,所述玩游戏训练数据包括通过玩所述在线游戏而从用户接收的输入、所述在线游戏的游戏状态和成功准则;以及
资源分配代理,所述资源分配代理用于访问所述资源分配模型并且用于与配置代理通信以基于由所述资源分配模型指定的资源分配来识别处理所述在线游戏的所述功能部分中的特定功能部分所需的所述多个处理节点中的每一者的资源,
其中所述分布式游戏引擎包括过程同步层,所述过程同步层与所述多个处理节点中的每一者和所述多个管理节点中的每一者介接,以提供资源来执行所述在线游戏的所述功能部分,这产生用于在所述用户的客户装置处呈现的视频帧。
2.如权利要求1所述的分布式游戏引擎,其中所述资源分配模型识别处理所述分布式游戏引擎的所述功能部分中的所述特定功能部分所需的处理节点的类型和每种类型的处理节点的数目。
3.如权利要求2所述的分布式游戏引擎,其中所述输入是从所述用户的所述玩游戏连续地收集的,并且将基于所述收集到的输入和成功准则而实时地更新所述资源分配模型,其中所述更新包括基于所述在线游戏的游戏状态来调整处理所述分布式游戏引擎的所述功能部分中的特定功能部分所需的处理节点的所述类型和每种类型的处理节点的数目。
4.如权利要求1所述的分布式游戏引擎,其中每个功能部分识别所述分布式游戏引擎的特定游戏引擎任务,并且其中所述过程同步层包括虚拟总线以用于:
对指派所述多个处理节点中的选定处理节点以处理所述在线游戏的游戏引擎任务中的特定游戏引擎任务进行管理;
将所述游戏引擎任务中的所述特定游戏引擎任务分布到所述选定处理节点进行处理;
在所述选定处理节点与所述多个处理节点中的剩余处理节点之间以及在所述选定处理节点与所述配置代理之间路由经处理的结果;以及
使对分布在所述多个处理节点间的所述游戏引擎任务的处理同步,所述同步包括根据所述游戏引擎任务中的相应游戏引擎任务的过程时序来管理所述游戏引擎任务的队列。
5.如权利要求1所述的分布式游戏引擎,其中所述处理节点中的至少一者被配置成:汇编来自所述多个处理节点的所述游戏数据;处理所述游戏数据;压缩所述游戏数据;对所述游戏数据编码以产生用于传输到所述用户的客户装置的视频帧,
其中执行所述压缩和所述编码以将所述视频帧格式化成与所述视频帧被转发到的所述用户的所述客户装置中的相应客户装置兼容,所述视频帧的所述格式化是基于确定对所述客户装置中的所述相应客户装置进行传输所使用的可用带宽和传输协议而进行的测试来完成。
6.如权利要求1所述的分布式游戏引擎,其中所述多个管理节点中的每一者和所述多个处理节点中的每一者被指派给明显分开的服务器以供执行。
7.如权利要求6所述的分布式游戏引擎,所述服务器分布在单个数据中心内,或跨在地理上分布的多个数据中心而分布。
8.如权利要求6所述的分布式游戏引擎,其中所述服务器是独立的物理服务器,或作为一个或多个数据中心的部分的物理服务器,或虚拟服务器,或容器服务器,或其任何组合。
9.如权利要求1所述的分布式游戏引擎,其中从用户接收的输入包括从游戏开发者接收的输入和在玩游戏期间获得的从玩家接收的输入。
10.如权利要求1所述的分布式游戏引擎,其中所述资源分配模型是使用机器学习算法来构造。
11.如权利要求1所述的分布式游戏引擎,其中所述资源分配模型被构造成基于访问所述在线游戏的用户的类型来识别所述资源分配。
12.如权利要求11所述的分布式游戏引擎,其中用户的所述类型包括玩家、观众或玩家与观众的组合。
13.如权利要求1所述的分布式游戏引擎,其中所述分布式游戏引擎的所述功能部分包括与将在执行所述在线游戏期间执行的特定游戏引擎任务相对应的游戏逻辑。
14.一种用于为在线游戏提供资源的方法,所述方法包括:
接收所述在线游戏的训练数据,其中所述训练数据识别在玩所述在线游戏期间接收的用户输入、所述在线游戏的游戏状态和成功准则;
使用所述训练数据产生用于所述在线游戏的资源分配模型,所述资源分配模型识别被配置用于处理分布式游戏引擎的功能部分的多个处理节点,其中所述多个处理节点中的选定处理节点被配置成提供处理资源以处理所述分布式游戏引擎的特定功能部分;以及
根据由所述资源分配模型指定的资源分配来分配所述多个处理节点以处理所述在线游戏的所述功能部分,其中所述特定功能部分执行游戏引擎任务中的选定游戏引擎任务,所述分配包括弹性地调整所述分配的资源,
其中通过云游戏系统的服务器的处理器执行所述方法的操作。
15.如权利要求14所述的方法,其中所述分配包括,
对指派所述选定处理节点以处理与所述特定功能部分相关联的所述游戏引擎任务中的所述选定游戏引擎任务进行管理;
将所述游戏引擎任务中的所述选定游戏引擎任务分布到所述选定处理节点进行处理;
在所述选定处理节点与所述多个处理节点中的剩余处理节点之间以及在所述选定处理节点与用于弹性地调整为所述处理节点分配的所述资源的配置代理之间路由经处理的结果;以及
使对分布在所述多个处理节点间的所述游戏引擎任务的处理同步。
16.如权利要求15所述的方法,其中分配包括识别需要提供到选定处理节点以用于处理所述分布式游戏引擎的所述特定功能部分的资源的类型和所述类型的资源的量。
17.如权利要求15所述的方法,其中接收训练数据包括,
在玩所述在线游戏期间连续地从多个用户收集所述用户输入,所述用户输入更新所述训练数据;以及
基于所述更新的训练数据和所述成功准则来实时地更新所述资源分配模型,所述更新包括针对所述在线游戏动态地调整需要提供到所述选定处理节点以用于处理所述分布式游戏引擎的所述特定功能部分的资源的类型和所述类型的资源的量。
18.如权利要求14所述的方法,其中将所述多个处理节点中的每一者指派给不同的服务器,所述不同的服务器提供处理向其指派的对应的功能部分所需的资源。
19.如权利要求14所述的方法,其中用户输入包括来自所述在线游戏的开发者的输入,或来自所述在线游戏的玩家的输入,或来自观看玩所述在线游戏的观众的输入,或其任何组合。
20.如权利要求14所述的方法,其中所述资源分配模型基于访问所述在线游戏的用户的类型来识别资源分配,其中用户的所述类型包括玩家,或观众,或玩家与观众的组合。
技术总结