CN115605277A - 基于值的游戏会话放置 - Google Patents
基于值的游戏会话放置 Download PDFInfo
- Publication number
- CN115605277A CN115605277A CN202180024157.6A CN202180024157A CN115605277A CN 115605277 A CN115605277 A CN 115605277A CN 202180024157 A CN202180024157 A CN 202180024157A CN 115605277 A CN115605277 A CN 115605277A
- Authority
- CN
- China
- Prior art keywords
- game
- player
- value
- instance
- attributes
- 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.)
- Pending
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/79—Game security or game management aspects involving player-related data, e.g. identities, accounts, preferences or play histories
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/30—Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
- A63F13/35—Details of game servers
- A63F13/352—Details 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
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1023—Server selection for load balancing based on a hash applied to IP addresses or costs
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/85—Providing additional services to players
- A63F13/86—Watching games played by other players
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
服务提供商网络的游戏托管服务被配置为使用基于值的方法将游戏会话放置在虚拟机(VM)实例编队上。为了将游戏会话放置在编队上,该游戏托管服务可确定该游戏会话请求的一个或多个属性,诸如玩家属性和/或游戏属性。该游戏托管服务还可确定分配给与该游戏会话请求相关联的订户的可用VM实例编队,这些编队可位于不同的地理区域。可基于该游戏会话请求的属性来确定值,并且该值可用于选择可用编队中的编队来托管该游戏会话。
Description
相关申请的交叉引用
本PCT专利申请要求2020年3月30日提交的名称为“VALUE-BASED GAME SESSIONPLACEMENTS”的共同拥有的美国专利申请序列号16/834,528和2020年3月30日提交的名称为“VALUE-BASED STREAMING INSTANCE ASSIGNMENT”的美国专利申请序列号16/834,743的优先权,这两个专利申请全部据此全文以引用方式并入本文。
背景技术
服务提供商提供基于云的服务以履行用户的计算服务需求,而不用用户不得不对实现服务所需要的计算基础设施进行投资和维护。这些服务提供商维护受管理的计算资源和功能性的网络以实现各种类型的按需服务,诸如存储服务、计算能力服务、数据库管理服务、联网服务等。以这种方式,服务提供商维护服务提供商网络,这些服务提供商网络为用户提供计算能力、数据库存储、应用和其他资源的按需交付,而无需用户对硬件投入前期投资和耗费时间和资源来管理硬件。
通常,用户订阅服务提供商以使用服务提供商网络中的计算资源来自己的客户提供产品或服务。例如,服务提供商网络可向游戏开发方提供游戏托管服务,该游戏托管服务部署、操作和缩放服务提供商网络中的基于会话的游戏服务器,以用于游戏开发方的客户。以这种方式,已经开发了在线游戏的游戏开发方可使用在服务提供商网络的服务器上运行的虚拟机(VM)实例来托管其基于会话的在线游戏,游戏开发方的客户在玩游戏时可访问这些服务器。
当游戏托管服务接收到新的游戏会话请求时,该服务负责在分配给订户的VM实例编队上放置对应的游戏会话。通常,游戏托管服务选择订户编队中的为游戏会话的玩家提供最低平均延迟的编队,然后将游戏会话放置在该编队内的最低成本VM实例上。
附图说明
在下面参考附图阐述详细描述。在图中,附图标记的最左边的一个或多个数字识别附图标记首次出现的图。在不同图中使用相同的附图标记指示类似或相同的项目。附图中描绘的系统不按比例绘制,并且图内的组件可能被描绘为彼此不按比例绘制。
图1示出了示例性环境的系统架构图,其中服务提供商网络的游戏托管服务可使用基于值的方法将游戏会话放置在虚拟机(VM)实例编队上。
图2示出了提供游戏托管服务的示例性服务提供商网络的部件图,其中游戏托管服务被配置为使用基于值的方法将游戏会话放置在VM实例编队上。
图3示出了由游戏托管服务实现的示例性技术的示意图,该技术用于使用基于值的方法将游戏会话放置在VM实例编队上。
图4示出了服务提供商网络的订户可以如何提供用于定制由游戏托管服务用于游戏会话放置的会话放置算法的数据的示意图。
图5示出了用于使用基于值的方法将游戏会话放置在VM实例编队上的示例性过程的流程图。
图6示出了用于为服务提供商网络的订户创建定制的会话放置算法的示例性过程的流程图。
图7是示出了包括服务提供商网络的例示性操作环境的系统和网络图,其中服务提供商网络可被配置为实现本文所述的功能性的各方面。
图8是示出了用于可被利用来实现本文公开的技术的各方面的数据中心的配置的计算系统图。
图9是示出了例示性计算机硬件架构的计算机架构图,该计算机硬件架构用于实现能够被利用来实现本文呈现的各种技术的各方面的计算装置。
图10示出了示例性环境的系统架构图,该环境中服务提供商网络的游戏流送服务可使用基于值的方法来将VM实例分配给游戏流送请求。
图11示出了由游戏流送服务实现的示例性技术的示意图,该技术用于使用基于值的方法来将VM实例分配给游戏流送请求。
图12示出了用于使用基于值的方法来将VM实例分配给游戏流送请求的示例性过程的流程图。
具体实施方式
服务提供商向用户提供各种基于网络的(或“基于云的”)服务以履行用户的计算需要。这些服务提供商可以运营服务提供商网络,服务提供商网络包括存储在跨不同地理区域定位的数据中心中的受管理服务器集群。以这种方式,已订阅了基于网络的服务的使用的用户(或“订户”)不需要对实现他们可能需要的各种服务所需要的计算基础设施进行投资和维护。另外,订户及其客户能够在不同地理区域访问这些基于网络的服务。为了跨地理区域提供这些基于网络的服务,服务提供商运营和维护服务提供商网络(例如,基于云的计算环境、基于网络的服务架构、基于网络的服务基础设施等)。以这种方式,服务提供商网络可在广大的地理区域上向订户提供可扩展、按需和网络可访问计算平台,使得订户有办法容易地获得VM实例。这些服务提供商网络允许订户立即拥有覆盖广大地理区域的计算基础设施,从而满足订户的各种计算需求,并且还提供计算资源来支持提供给订户的客户的服务。
例如,服务提供商网络的订户可以是游戏开发方(例如,个体、公司和/或其他组织),该游戏开发方开发了在线游戏,想要把该在线游戏提供给希望玩该在线游戏的客户。然而,游戏开发方可能希望在广大地理区域向客户以及大量用户提供对其在线游戏的访问。为了在不同地理区域上支持和维护在线游戏平台从而为客户托管游戏会话,可能需要数量非常大的计算基础设施(例如,计算能力、存储器、存储装置、联网、安全性等),以至于游戏开发方、特别是新兴或初露头角的游戏开发方要自己购买和维护这些基础设施的话并不现实。
因此,服务提供商网络可提供作为完全或至少部分受管理的在线游戏平台的游戏托管服务。该游戏托管服务可代表游戏开发方在服务提供商网络中部署、运营和缩放基于会话的在线游戏服务器。该游戏托管服务可提供在服务提供商网络的计算资源上执行并且为订阅游戏开发方的客户托管游戏会话的虚拟机实例(例如,VM实例、实例等)群组或“编队”。在游戏构建体中包括的游戏软件可被提供给实例编队,并且游戏托管服务可运行该实例编队,其中该编队中的每个实例执行要托管游戏会话的至少一个进程。当游戏开发方的客户想玩由游戏托管服务托管的游戏时,该游戏托管服务可负责将新的游戏会话放置在分配给订阅游戏开发方的多个VM实例编队中的编队上。
本公开描述了用于使用基于值的方法将游戏会话放置在VM实例编队上、并且最终放置在所选编队的VM实例上的技术和系统。本文所述的技术和系统可以由服务提供商网络的游戏托管服务实现,其中该游戏托管服务被配置为将一个或多个传入游戏会话请求放置在队列中,并且处理该队列中的单个请求以便达到将对应的游戏会话放置在VM实例编队上的目的。为了将游戏会话放置在编队上,游戏托管服务可确定游戏会话请求的一个或多个属性,诸如与游戏会话请求相关联的玩家的玩家属性(或关于玩家的信息)、对应于游戏会话请求的游戏的游戏属性(或关于游戏的信息),以及游戏会话请求的可能的其他类型的属性。该游戏托管服务还可确定分配给与该游戏会话请求相关联的订户的可用VM实例编队,这些编队可位于不同的地理区域。可基于游戏会话请求的一个或多个属性来确定(例如,估算、计算等)值,并且该值可用于选择可用编队中的编队来托管游戏会话。为了托管游戏会话,可使在所选编队的VM实例上执行的空闲服务器进程运行以托管游戏会话的服务器组件。
通常,用于选择进行游戏会话放置的VM实例编队的值(有时在本文中称为“放置值”)可指示用于将游戏会话放置在特定VM实例编队(例如,执行特定类型的VM实例的编队)上的偏好。在一些实施方案中,从游戏会话请求的属性确定的单个值(例如,分数、度量等)可表示在可能值范围内的可用来设置变量的值,其中该范围的最大值可指示高值游戏会话请求和/或用于将游戏会话放置在特定的VM实例编队上的强偏好,该范围的最小值可指示低值游戏会话请求和/或用于将游戏会话放置在特定的VM实例编队上的弱偏好。在一些实施方案中,从游戏会话请求的属性确定的单个放置值可表示美元值,该美元值可指示可归因于将从托管特定VM实例编队上的游戏会话获益的实体(例如,游戏开发方)的货币值。
在一些实施方案中,游戏会话请求的属性可用于确定多个值,其中该多个值中的每个值对应于可用于放置对应的游戏会话的多个编队中的单个编队。例如,可为第一编队确定第一值,该第一值指示用于将游戏会话放置在第一编队上的偏好,可为第二编队确定第二值,该第二值指示用于将游戏会话放置在第二编队上的偏好,以此类推,具体取决于可能可用于放置游戏会话的编队的数量。在确定多个放置值的情况下,这些值可表示任何合适类型的值。例如,该多个值可包括多个布尔值(例如,真或假,是或否),该多个布尔值指示是否优选地将游戏会话放置在给定编队上(例如,编队1:是,编队2:否等)。在其他示例中,这些值可以是在限定的值范围(例如,[0,100]的范围,[0,1]的归一化范围等)内的数值,其中该范围可指示用于将游戏会话放置在分配有值的给定编队上的弱到强偏好。
如所提及的,用于确定放置值的游戏会话请求的属性可包括但不限于与游戏会话请求相关联的玩家的玩家属性和/或对应于游戏会话请求的游戏的游戏属性。使用这些类型的属性来确定放置值是基于玩家和游戏两者可跨传入游戏会话请求变化的概念,这意味着策略性地将第一游戏会话放置在第一编队上并且将不同的第二游戏会话放置在第二编队上是有益的,即使第一编队将为两组玩家提供较低的平均玩家延迟。换句话说,将一些新的游戏会话放置在可能在游戏期间不提供最高性能的玩家体验、但是可优化其他度量(诸如托管订户的游戏会话的总成本)的VM实例编队上可能有是益的。
与游戏会话请求相关联的单个玩家的玩家属性可包括但不限于玩家标识符(ID),在一段时间内玩的游戏的数量,玩家是否是付费玩家(与只玩免费游戏的玩家相反),以及如果是付费玩家,则玩家在这段时间内花费的金钱量,花在玩游戏上的时间量,一天中玩游戏的时间,共同参加比赛的其他玩家,玩家ID是否是已知的玩家ID(例如,著名/职业的玩家、知名的博客作者,游戏评论员,社交媒体关注人数超过阈值的人等),玩家是否购买了可下载内容(DLC),这是为已经发布的视频游戏创建的附加内容,等等。游戏属性可指示游戏模式、游戏情境、游戏背景等。游戏属性可包括但不限于是以锦标赛模式还是休闲模式玩游戏,并且如果将以锦标赛模式玩游戏,则锦标赛的阶段(例如,总共5个阶段中的阶段3),游戏是否要实时流送(即,广播到一个或多个观看用户),并且如果要实时流送,则观众中预计的观看用户数量,等等。这些仅仅是可用于确定放置值的玩家属性和游戏属性的示例,如本文所述,放置值用于将游戏会话放置在VM实例编队上。
由用于将游戏会话放置在VM实例编队上的游戏托管服务的一个或多个计算装置实现的示例性过程可包括:确定与游戏会话请求相关联的玩家的一个或多个玩家属性,该一个或多个玩家属性至少部分地基于玩家的先前玩法,并且该游戏会话请求与服务提供商网络的订户相关联;确定分配给订户的第一VM实例编队;确定分配给订户的第二VM实例编队;以及至少部分地基于该一个或多个玩家属性来确定值。该过程还可包括:至少部分地基于该值,选择第一编队或第二编队作为所选编队;以及在所选编队的VM实例上托管对应于游戏会话请求的游戏会话。
本文还公开了用于使用基于值的方法来将VM实例分配给游戏流送请求的技术和系统,该游戏流送请求用于使用该VM实例将游戏流送到与游戏流送请求相关联的玩家的客户端装置。本文所述的技术和系统可由服务提供商网络的游戏流送服务实现,其中该游戏流送服务被配置为将一个或多个传入游戏流送请求放置在队列中,并且处理该队列中的单个请求以便达到根据游戏流送请求来分配VM实例的目的,使得游戏可被流送到与游戏流送请求相关联的玩家的客户端装置。所分配的VM实例可通过在游戏会话(例如,多玩家游戏会话)期间渲染帧并且将所渲染的帧发送到客户端装置(例如,通过网络)来将游戏流送到客户端装置。为了选择用于将游戏流送到给定客户端装置的VM实例,游戏流送服务可确定游戏流送请求的一个或多个属性,诸如与游戏流送请求相关联的玩家的玩家属性(或关于玩家的信息)、对应于游戏流送请求的游戏的游戏属性(或关于游戏的信息),以及游戏流送请求的可能的其他类型的属性。游戏流送服务还可确定分配给与游戏流送请求相关联的订户的可用VM实例,这些实例可位于不同的地理区域。可基于游戏流送请求的一个或多个属性来确定(例如,估算、计算等)值,并且该值可用于选择可用VM实例中的VM实例来将游戏流送到给定客户端装置。
通常,用于选择用于流送游戏的VM实例的值(有时在本文中被称为“实例分配值”)可指示用于使用特定VM实例(例如,特定类型的VM实例)将游戏流送到客户端装置的偏好。类似于本文所述的用于游戏会话放置的逻辑,从游戏流送请求的属性确定的单个值(例如,分数、度量等)可表示在可能值范围内的可用来设置变量的值,其中该范围的最大值可指示高值游戏流送请求和/或用于使用特定的VM实例将游戏流送到客户端装置的强偏好,该范围的最小值可指示低值游戏流送请求和/或用于使用特定的VM实例将游戏流送到客户端装置的弱偏好。在一些实施方案中,从游戏流送请求的属性确定的单个放置值可表示美元值,该美元值可指示可归因于将从使用特定VM实例将游戏流送到与游戏流送请求相关联的玩家的给定客户端装置获益的实体(例如,游戏开发方)的货币值。
类似于本文中所描述的用于游戏会话放置的逻辑,游戏流送请求的属性可用于确定多个值,其中该多个值中的每个值对应于可用于将游戏流送到给定客户端装置的多个VM实例中的单个VM实例。例如,可为第一VM实例确定第一值,该第一值指示用于使用第一VM实例将游戏流送到客户端装置的偏好,可为第二VM实例确定第二值,该第二值指示用于使用第二VM实例将游戏流送到客户端装置的偏好,以此类推,具体取决于可能可用于将游戏流送到与游戏流送请求相关联的客户端装置的实例的数量。
由用于根据游戏流送请求来分配VM实例的游戏流送服务的一个或多个计算装置实现的示例性过程可包括:确定与游戏流送请求相关联的玩家的一个或多个玩家属性,该一个或多个玩家属性至少部分地基于玩家的先前玩法,并且该游戏流送请求与服务提供商网络的订户相关联;确定分配给订户的用于将游戏流送到玩家的客户端装置的第一VM实例;确定分配给订户的第二VM实例;以及至少部分地基于一个或多个玩家属性来确定值。该过程还可包括至少部分地基于该值来选择第一VM实例或第二VM实例作为用于将游戏流送到客户端装置的所选VM实例。在一些实施方案中,所选VM实例的选择是多阶段过程的第一阶段,并且用于游戏会话放置的编队的选择是该多阶段过程的第二阶段。这样,一旦将所选VM实例被分配给与玩家相关联的游戏流送请求,并且一旦涉及该玩家的游戏会话被放置在所选VM实例编队上,该游戏会话就可被托管在所选编队的VM实例上,并且该游戏可使用用于游戏流送的所选VM实例来流送到玩家的客户端装置。
本文所述的用于游戏会话放置的基于值的方法考虑了游戏会话请求的属性,诸如玩家属性和/或游戏属性。通过这样做,游戏托管服务可优化游戏会话跨部署在服务提供商网络内的可用VM实例编队的放置。这部分地基于与将所有游戏会话均匀地放置到可用的最低延迟编队的方法相比,将某些玩家和/或某些游戏放置在某些类型的VM实例编队上存在某种固有值的概念,而无论玩家的属性和/或与游戏会话请求相关联的游戏的属性如何。例如,在相对高性能的编队上放置涉及过去在一段时间内玩过超过阈值数量游戏的玩家和/或在过去经由游戏托管服务玩游戏花费超过阈值金额的玩家的游戏会话可能存在固有值。此类高性能编队可被识别为可在游戏期间提供低延迟性能的编队(例如,在具有高性能/更高质量硬件的服务器上实例化的编队,具有足够容量来在VM实例上运行和执行新服务器进程的编队等)。又如,在相对高性能的编队上放置涉及竞争性锦标赛(例如,处于锦标赛的后一阶段的游戏)和/或将实时流送给观看观众的游戏会话可能存在固有值。另外,在一些实施方案中,游戏托管服务可选择高性能配置来托管高值游戏会话,诸如通过选择相对高的帧速率(如,每秒30帧(FPS),与较低的15FPS帧速率相反)、相对高的分辨率(4K,与较低的1080P分辨率相反)。另一方面,具有不能满足在高性能编队上放置游戏会话的标准的属性(例如,玩家属性和/或游戏属性)的游戏会话请求可替代地被放置在相对低性能的编队上,并且/或者此类游戏会话可利用相对低性能的配置来托管,这可允许将更多的游戏会话打包到单个服务器进程和/或单个VM实例上,从而降低(订阅游戏开发方的)托管游戏会话的成本。因此,本文所述的技术和系统可使某些原本不可行的游戏可行,这对于游戏行业和经由游戏托管服务玩视频游戏的玩家都是有益的。
本文所述的用于根据游戏流送请求来分配流送实例的基于值的方法还考虑了游戏流送请求的属性,诸如玩家属性和/或游戏属性。通过这样做,游戏流送服务(可被实现为游戏托管服务的一部分)可优化部署在服务提供商网络内的VM实例的分配以将游戏流送到各个客户端装置。这部分地基于使用某些VM实例将游戏流送到客户端装置存在某种固有值的概念。例如,使用相对高性能的VM实例将游戏流送到过去在一段时间内玩过超过阈值数量游戏的玩家和/或在过去经由游戏流送服务玩游戏花费超过阈值金额的玩家的客户端装置可能存在固有值。另外,在一些实施方案中,游戏流送服务可选择高性能配置来将游戏流送到这样的玩家,诸如通过选择相对高的帧速率(如,每秒30帧(FPS),与较低的15FPS帧速率相反)、相对高的分辨率(4K,与较低的1080P分辨率相反)。
另外,本文所述的技术和系统将更多控制权放在订阅游戏开发方的手中,至少在允许游戏开发方控制服务提供商网络的资源(例如,VM实例编队)如何在其客户(例如,订阅游戏开发方的视频游戏的玩家)之间分配的方面。例如,订户可能够创建其自己的由游戏托管服务用于游戏会话放置的定制会话放置算法,和/或创建其自己的由游戏托管服务用于分配VM实例以将游戏流送到给定客户端装置的定制流送实例分配算法。附加地或另选地,订户可主动提供其自身的属性(例如,玩家属性、游戏属性等),这些属性可由游戏托管服务用来使用本文所述的基于值的方法来确定将游戏会话放置在何处和/或使用哪些VM实例用于游戏流送,从而优化订户的游戏会话放置。附加地或另选地,订户可指定特定属性(例如,玩家属性、游戏属性等)的定制权重,这些权重可由游戏托管服务在游戏会话放置期间确定不同可用编队的放置值和/或在将实例分配给游戏流送请求期间确定不同的可用VM实例的实例分配值时考虑。本文所述的这些和其他方面为提供商网络的订户提供了在如何在服务提供商网络内的可用资源(例如,VM实例编队)上分散其玩家方面更多的控制权和更高的自主性。
虽然本文将一些技术描述为在服务提供商的服务提供商网络中执行,但是这些技术可类似地应用于其他计算网络中,诸如由游戏开发方本身管理的本地服务器。将在下面参考附图更充分地描述本公开的某些具体实施和实施方案,其中示出了各个方面。然而,各个方面可以被以许多不同的形式实现,而不应该被解释为限于本文阐述的具体实施。本公开包含如本文所描述的实施方案的变化。贯穿全文以相似的数字指代相似的要素。
图1示出了示例性环境100的系统架构图,其中服务提供商网络102的游戏托管服务可使用基于值的方法将游戏会话放置在虚拟机(VM)实例编队上。
如图所示,服务提供商网络102可由服务提供商104运营和/或管理。服务提供商网络102可向用户提供各种服务以满足其计算资源需求,诸如基于云的计算资源。例如,服务提供商网络102可以提供基于云的、可扩展的且网络可访问的计算能力服务、存储服务、数据库服务和/或其他服务。如图所示,服务提供商网络102还可提供游戏托管服务106,该游戏托管服务是用于在线游戏(包括基于会话的多玩家游戏)的可扩展的基于云的运行环境。游戏托管服务106可由服务提供商104完全管理,并且部署、操作和缩放基于云或基于网络的环境中的基于会话的多玩家游戏服务器。例如,游戏托管服务106可不仅提供用以托管游戏会话的硬件,而且管理持续的活动、安全性、存储和性能跟踪。另外,游戏托管服务106可提供自动缩放能力,使得支持游戏会话的实例可基于玩家需求而运行或停止。
为了利用游戏托管服务106,开发者110可利用开发者装置108来注册游戏托管服务106的账户(例如,用户账户、订户账户等)。这可允许开发者110(在本文中有时被称为“订户”110)订阅游戏托管服务106,为其在线游戏提供游戏构建体,并且向其客户112提供经由其客户端装置114对在线游戏的访问,而开发者110不必投资于为其客户112托管在线游戏会话所需的计算资源(例如本地资源)。为了利用游戏托管服务106,开发者110可经由一个或多个开发者门户116向游戏托管服务106提供游戏构建体118。开发者门户116可包括基于网络的控制台、软件开发套件(SDK)、命令行接口(CLI)、应用编程接口(API)和/或开发者110可用来向游戏托管服务106指定和/或提供游戏构建体118的任何其他装置中的一者或多者。
游戏构建体118可对应于可为一个或多个客户112(在本文中有时称为“玩家”112)托管游戏会话的任何类型的在线游戏。例如,游戏构建体118可对应于基于会话的单玩家在线游戏或基于会话的多玩家在线游戏。该游戏构建体可表示任何类型的在线游戏,诸如实时策略(RTS)游戏、第一人称射手(FPS)游戏、多玩家在线战场(MOBA)游戏、角色扮演(RPG)游戏、大型多玩家在线(MMO)游戏、大型多玩家在线角色扮演游戏(MMORPG)、虚拟棋盘游戏(例如,国际象棋、跳棋等)、动作冒险游戏、模拟游戏、策略游戏、体育游戏、虚拟现实游戏和/或可在在线环境中玩的任何其他游戏。
通常,客户端装置114可包括可用于在线游戏的任何类型的计算装置。例如,客户端装置114可包括膝上型计算装置、台式计算装置、移动电话、游戏系统、基于控制器的装置、虚拟现实和/或增强现实装置(例如,头戴式显示器(HMD))、其他可穿戴装置、生物特征传感器、投影仪、电视机和/或其本身可使用或可与其他装置结合使用的任何计算装置。在一些示例中,在线游戏的至少一部分可在客户端装置114上本地执行和/或存储。
游戏构建体118可包括用于在线游戏的游戏软件,并且还可包括服务器可执行文件、支持资产、库和依赖项,它们都用于在实例上托管和/或执行游戏软件。开发者110可通过开发者门户116提供游戏构建体118,诸如通过一个或多个网络120(例如,互联网、无线广域网(WAN)、个人区域网络(PAN)、有线和/或无线局域网(LAN)等)上传游戏构建体118。网络120可包括任何类型的网络或网络的组合,包括有线和/或无线网络。一旦开发者110已上传其游戏构建体118,游戏托管服务106就可将游戏软件130部署到计算资源网络122中的一个或多个游戏服务器124。例如,游戏软件130可安装在至少部分地由本地代理128(例如,脚本、程序、应用程序等)管理的一个或多个虚拟机(VM)实例126上。
计算资源网络122可包括数据中心,每个数据中心包括一个或多个计算资源,诸如VM实例126(1)至126(N),其中“N”是大于或等于2的任何整数(在本文中统称为“VM实例126””或简称为“实例126”)。数据中心可容纳游戏服务器124并且可以位于不同地理区域上,使得计算资源可用于支持由服务提供商网络102提供的基于云的服务的功能。计算资源可包括基于硬件的组件的各种组合,诸如中央处理单元(CPU)、图形处理单元(GPU)、存储器、存储装置、网络容量、安全性和/或用以支持基于云的服务(诸如游戏托管服务106)的任何其他类型的基于硬件的资源。在一些示例中,计算资源网络122还可包括存储各种基于固件和/或基于软件的资源的相应存储器,这些资源提供服务的功能,诸如实例126,代理128、游戏软件130以及一个或多个进程132在该实例上执行以支持游戏会话。
通常,代理128可负责在实例126上处理各种进程,诸如运行实例126、停止实例126、处理实例126的使用寿命进程、检索在实例126上执行的进程132的游戏会话分配、在实例126上执行进程132以托管游戏会话、管理实例126的资源、在实例126上安装补丁和/或其他软件,和/或用于管理实例126的各种其他动作。数据存储库134可记录游戏会话136在VM实例126的特定编队138上的放置。应该领会,除了编队分配之外,数据存储库134还可跟踪用于游戏会话放置的更细粒度的数据,诸如放置了游戏会话136的VM实例126的实例ID、分配为托管游戏会话136的服务器进程132等。数据存储库134可跟踪另外的数据,诸如在跨订户110编队138上执行的VM实例126上执行的进程132,这些进程132的所有情况,具体取决于它们是否可用(例如,在没有所有者的情况下以空闲模式执行),或者是否已分配给游戏会话136(或游戏会话请求),编队138所在的区域等。
在一些示例中,在实例126上执行的每个进程132(有时称为“服务器进程”132)可支持经由一个或多个客户112经由其客户端装置114参与的游戏会话136。也就是说,每个进程132可支持一个游戏会话136。例如,进程132可各自运行游戏软件130以支持用于一个或多个客户112的游戏会话136。通常,进程132支持用于多个客户112的游戏会话136(例如,与多玩家游戏一样)。游戏会话136是在服务器上运行的游戏软件130的实例,客户112可连接到该服务器并与其交互。游戏定义了游戏会话136的基本特性,诸如寿命或所涉及的玩家112的数量。尽管本文所述的许多示例涉及支持单个游戏会话136的单个进程132,但是应该领会,取决于游戏(例如,游戏的大小、游戏的复杂性、参与单个游戏会话136的客户112的数量,和/或其他因素),进程132可处理多个游戏会话(例如,用于“较轻量”的移动游戏),和/或除了托管游戏会话136以外还执行其他任务以帮助管理游戏会话,与客户端装置114和/或游戏托管服务106交互,管理实例126,和/或执行其他动作。进程132可以是在VM实例126上运行的二元进程132、可执行进程132等,其消耗或利用底层硬件资源和/或其他资源。
为了在游戏会话中玩,客户端装置114可直接与游戏托管服务106交互,和/或通过各种后端游戏服务来检索当前游戏会话136的信息以请求新的游戏会话136,和/或预定游戏会话136中的时隙。例如,客户端装置114可通过一个或多个网络120与游戏服务140交互,该游戏服务可处理客户端装置114与游戏托管服务106之间的通信。此外,游戏服务140可处理另外的任务或提供另外的服务,诸如玩家认证和授权、团队建设和配对,以及库存控制。例如,当客户112想要启动新游戏时,客户端装置114可调用认证服务来首先验证客户112的身份,然后将游戏会话请求发送到游戏托管服务106。
又如,开发者110的在线游戏可依赖于或利用一个或多个附加外部服务142,诸如用于验证订阅会员和/或确定客户的账户的权限。如图所示,来自外部服务142的信息可经由游戏服务140和游戏托管服务106传递到游戏服务器124,而无需经过客户端装置114。
为了建立或加入游戏会话,客户112可利用其客户端装置114(例如,其上执行的应用程序、软件或其他程序)来请求(例如,经由API调用)游戏托管服务106将他们放置在游戏会话136中。为了创建游戏会话136,匹配通常作为初始步骤形成或进行,然后是放置该匹配的步骤。在一些实施方案中,游戏服务140可执行配对逻辑以在匹配中将玩家112匹配在一起。例如,如果玩家112通过网络120连接到游戏服务140以便玩多玩家游戏,则玩家112的客户端装置114可呈现列出其他在线玩家112以供选择的屏幕,并且玩家112可从该列表中选择另一个玩家112来与之对战。也可以考虑其他配对因素,或者将其作为替代方案,诸如技能水平(例如,将玩家112与相称的技能水平匹配)。在一些实施方案中,游戏托管服务106可代表游戏开发方110执行配对逻辑。
在形成匹配之后,游戏托管服务106可负责放置该匹配(或用于该匹配的游戏会话136)。应该领会,在一些实施方案中,在不形成新的游戏会话136的情况下,游戏托管服务106可识别正在托管游戏会话136的已经运行的进程132,并且如果活动游戏会话136具有可在其中放入与游戏会话请求相关联的玩家112的开放玩家时隙,则游戏托管服务106可在活动游戏会话136中将玩家112分配给开放玩家时隙,而不必形成新游戏会话136的单独匹配。否则,游戏托管服务106可能已经运行了在为服务提供商网络102的各种订户110分配的编队138中的VM实例126,并且每个运行的VM实例126可具有在空闲模式下在其上执行的服务器进程132,直到进程132根据用于在游戏会话136结束之前托管对应的游戏会话136(与匹配相关联)的游戏会话请求被分配为止。除了加载用于托管特定游戏会话136的地图和其他数据之外,这些空闲进程132可准备好一旦根据游戏会话请求被分配就开始托管游戏会话136。游戏托管服务106可负责将新的游戏会话136放置在分配给订户110的可用编队138上,以及识别在所选编队138的VM实例126上执行的服务器进程132,该服务器进程将为已被匹配在一起以玩多玩家游戏的一组(例如2、10、100个等)玩家112中的多个玩家112提供服务。因此,对于传入游戏会话请求,游戏托管服务106可通过调用路由服务来解析编队别名,加载编队数据以确定VM实例126的可用编队138,选择用于放置游戏会话136的编队138,以及识别可用于托管对应于传入游戏会话请求的游戏会话136的可用的(例如空闲的)进程132。应该领会,出于效率原因,游戏托管服务106可尽可能紧地“打包”服务器进程132以避免资源的过度利用。也就是说,游戏托管服务106可尝试最小化在空闲模式中同时执行的进程132的数量以便获得足够数量的进程132,同时还避免可用于其他目的的不必要的计算资源消耗。
当创建游戏会话136时,可指示在订户的编队138的VM实例126上执行的已分配进程132为与游戏会话136相关联的订户110的一个或多个客户112托管(或支持)所创建的游戏会话136。在与游戏会话相关联的客户端装置114上运行的客户端应用程序可接收连接信息(例如,服务器124的端口、IP地址等),并且可通过使用玩家会话ID通过网络120直接连接到开放的游戏服务器124来创建游戏连接144。然后,服务器进程132可将玩家ID接受为有效ID,并且接受或拒绝游戏连接144。如果连接,则玩家会话被设置为活动,并且客户112使用其客户端装置114和游戏连接144开始玩游戏,该游戏连接具有实例126的游戏服务器124与执行以托管选择游戏会话136的进程132之间建立。一旦游戏会话136已经结束(例如,客户112退出、游戏接触、超时等),在每个所涉及的客户端装置114上的客户端应用程序可从进程132断开连接,并且游戏托管服务106可改变游戏会话136以使其终止,上传游戏会话日志到存储装置,以及更新编队利用率来指示游戏服务器124少了一个执行中的进程132。
如所提及的,游戏托管服务106可在游戏服务器124上部署一组实例126,通常称为实例126的“编队”138。在各种示例中,实例126的编队138可全部支持同一游戏构建体118或同一在线游戏。编队138中的每个实例126可同时运行多个进程132,具体取决于硬件能力,并且每个服务器进程132可托管至少一个游戏会话136。由于游戏构建体118可具有一个或多个可执行文件,因此开发者110和/或服务提供商104可配置编队138运行每个实例126上的每个可执行文件的多个服务器进程132。为了配置实例126的编队138运行一个或多个进程132,开发者110和/或服务提供商104可生成配置数据146,该配置数据描述在编队138中的每个实例126上运行哪些进程132。编队138中的每个实例126启动在配置数据146中指定的服务器进程132,并且在现有进程132结束时启动新进程。每个实例126可定期检查更新的配置数据146并且遵循新的指令。
本文所述的基于值的游戏会话放置技术可至少部分地由游戏托管服务106的队列组件148实现。队列组件148可接收与请求与其他玩家匹配以便玩多玩家游戏的玩家112相关联的传入游戏会话请求。队列组件148可将这些传入游戏会话请求放置在队列中,并且可处理每个游戏会话请求以识别要在上面放置对应的游戏会话136的编队138。当处理排队的游戏会话请求用于游戏会话放置时,队列组件148可确定该游戏会话请求的属性,这些属性用于确定(例如,估算、计算)用于游戏会话放置的一个或多个值150。值150在本文中有时被称为“放置值150”,因为值150指示游戏会话将被放置在服务提供商网络102内的何处。用于确定值150的游戏会话请求的属性可包括但不限于玩家属性。与游戏会话请求相关联的单个玩家112的玩家属性可包括但不限于玩家标识符(ID),在一段时间内玩的游戏的数量,玩家112是否是付费玩家(与只玩免费游戏的玩家相反),以及如果是付费玩家,则玩家112在这段时间内花费的金钱量,花在玩游戏上的时间量,一天中玩游戏的时间,共同参加比赛的其他玩家112,玩家ID是否是已知的玩家ID(例如,著名/职业的玩家、知名的博客作者,游戏评论员,社交媒体关注人数超过阈值的人等),玩家是否购买了可下载内容(DLC),这是为已经发布的视频游戏创建的附加内容,等等。在一些情况下,服务提供商104可基于代表服务提供商网络102内的订户110运行订户110的游戏来隐含地导出玩家属性中的至少一些属性。然而,至少一些玩家属性可附加地或另选地由与游戏会话请求相关联的订户110提供。订户110对玩家属性的此类自愿提交可帮助优化游戏会话放置,因此可能存在使订户110这样做的激励。
用于确定值150的游戏会话请求的属性可附加地或另选地包括游戏属性,游戏属性可指示游戏模式、游戏情境、游戏背景等。游戏属性可包括但不限于是以锦标赛模式还是休闲模式玩游戏,并且如果将以锦标赛模式玩游戏,则锦标赛的阶段(例如,总共5个阶段中的阶段3),游戏是否要实时流送(即,广播到一个或多个观看用户),并且如果要实时流送,则观众中预计的观看用户数量,等等。在一些情况下,服务提供商104可基于代表服务提供商网络102内的订户110运行订户110的游戏来隐含地导出游戏属性中的至少一些属性。然而,至少一些游戏属性可附加地或另选地由与游戏会话请求相关联的订户110提供。同样,订户110对游戏属性的此类自愿提交可帮助优化游戏会话放置,因此可能存在使订户110这样做的激励。
队列组件148还可确定分配给与游戏会话请求相关联的订户110的VM实例126的可用编队138,并且可利用会话放置算法152来确定(例如,估算、计算等)用于游戏会话放置的值150。可用编队138可位于不同的地理区域上,并且每个可用编队可基于区域和/或基于特定硬件和/或那些编队138上的VM实例126的配置而具有不同的性能特性。例如,平均玩家延迟可在用于游戏会话放置的一组可用编队138中变化,使得第一编队138(1)提供相对较低的延迟(与游戏会话请求相关联的所有玩家112的平均值),并且第二编队138(2)提供相对较高的延迟(与游戏会话请求相关联的所有玩家112的平均值),或反之亦然。如所提及的,这可基于各种因素。在一些情况下,可用编队138的VM实例126可在可用容量和/或当前资源利用率方面变化。例如,第一编队138(1)可包括运行一个进程的VM实例126,并且第二编队138(2)可包括运行多个(例如,四个)进程的VM实例126。这可意味着不同的编队138的不同实例126可具有不同的容量,其中运行单个进程的VM实例126可能够在游戏期间提供具有相对较少抖动的最敏捷响应,并且同时运行多个进程的VM实例126可具有较少的容量来托管新的游戏会话,但可能够提供较低的成本来托管游戏会话(例如,以相对较低的帧速率)。
针对游戏会话请求确定的值150用于选择用于游戏会话放置的VM实例126的编队138。在一些实施方案中,从游戏会话请求的属性确定的单个值150(例如,分数、度量等)可表示在可能值范围内的可用来设置变量的值,其中该范围的最大值可指示高值游戏会话请求和/或用于将游戏会话放置在特定的VM实例编队上的强偏好,该范围的最小值可指示低值游戏会话请求和/或用于将游戏会话放置在特定的VM实例编队上的弱偏好。在一些实施方案中,从游戏会话请求的属性确定的单个放置值150可表示美元值(例如,$0.50、$1.50等),该美元值可指示可归因于将从托管特定VM实例编队上的游戏会话获益的实体(例如,游戏开发方)的货币值。
在一些实施方案中,游戏会话请求的属性可用于确定多个值150,其中该多个值150中的每个值150对应于可用于放置对应的游戏会话136的多个编队138中的单个编队138。例如,可为第一编队138(1)确定第一值150,该第一值150指示用于将游戏会话136放置在第一编队上138(1)的偏好,可为第二编队138(2)确定第二值150,该第二值150指示用于将游戏会话136放置在第二编队138(2)上的偏好,以此类推,具体取决于可能可用于放置游戏会话136的编队138的数量“P”,“P”是大于或等于2的任何合适整数。在确定多个放置值150的情况下,这些值150可表示任何合适类型的值。例如,该多个值150可包括多个布尔值(例如,真或假,是或否),该多个布尔值指示是否优选地将游戏会话136放置在给定编队138上(例如,编队1:是,编队2:否等)。在其他示例中,这些值150可以是在限定的值范围(例如,[0,100]的范围,[0,1]的归一化范围等)内的数值,其中该范围可指示用于将游戏会话放置在分配有值150的给定编队138上的弱到强偏好。
例如,对于任何数量的P个可用编队138(1)-(P),可为第一编队138(1)确定1(在[0,1]的范围内)的第一放置值150,可为第二编队138(2)等确定0.5(在[0,1]的范围内)的第二放置值150,以此类推。在该示例中,用于第一编队138(1)的1的值150可表示用于将游戏会话136放置在第一编队138(1)上的强偏好。同时,用于第二编队138(2)的0.5的值150可表示用于将游戏会话136放置在第二编队138(2)上的相对较弱的偏好。在该示例中,队列组件148可基于为可用编队138(1)和138(2)确定的放置值150来选择第一编队138(1),并且游戏会话136可通过识别VM实例126上的空闲服务器进程132并指示服务器进程132托管游戏会话136来被托管在所选第一编队138(1)的VM实例126上。当放置游戏会话136时,游戏会话放置可存储在数据存储库134中,至少直到游戏会话136终止,如图1所示。例如,图1示出了这样的示例,其中第一游戏会话136(1)已被放置在第一编队138(1)上,第二游戏会话136(2)已被放置在第二编队138(2)上,并且第Q游戏会话136(Q)已被放置在第P编队138(P)上,其中“Q”是任何合适的整数。应该领会,由于每个编队138实例化多个VM实例126,并且每个VM实例126可执行一个或多个服务器进程132,因此考虑到每个进程132可以托管一个或多个游戏会话136,可将多个游戏会话136放置在同一编队138上。参考以下附图进一步详细描述了可由用于基于值的游戏会话放置的队列组件148使用的会话放置算法152的示例性细节。通常,会话放置算法152在确定用于游戏会话放置的值150时考虑游戏会话请求的属性。
在例示性示例中,传入游戏会话请求可与指示与游戏会话请求相关联的玩家112中的至少一位玩家在一段时间内(例如,在过去6个月内)玩过超过阈值数量的游戏(例如,超过1000个)的玩家属性相关联。在该示例中,会话放置算法152(使用基于规则的方法、机器学习模型等)可确定用于该游戏会话请求的相对高的放置值150,以便将对应的游戏会话放置在可向游戏会话请求的玩家112的客户端装置114提供相对高的性能(例如,低延迟或换句话讲“敏捷的”游戏体验)的编队138上。在另一个例示性示例中,另一个传入游戏会话请求可与指示游戏将被实时流送给观众的游戏属性相关联,并且会话放置算法152(使用基于规则的方法、机器学习模型等)可确定用于该游戏会话请求的相对高的放置值150,以便将对应的游戏会话136放置在可向游戏会话请求的玩家112的客户端装置114提供相对高的性能(例如,低延迟或换句话讲“敏捷的”游戏体验)的编队138上。相比之下,又一个传入游戏会话请求可与全都是休闲免费游戏的非付费玩家的玩家112相关联。考虑到游戏会话请求的这些玩家属性和游戏属性,会话放置算法152(使用基于规则的方法、机器学习模型等)可根据将对应的游戏会话136放置在高性能编队138上来为该游戏会话请求确定相对低的放置值150,和/或值150可包括用于低性能编队138的相对高的放置值150,该放置值指示用于将对应的游戏会话136放置在提供相对低性能(例如,与其他可用编队138相比更高的延迟)的编队138上的强偏好,(对于订户110)这可能具有较低的托管游戏会话136的成本。将游戏会话136放置在低性能编队138上和/或利用低性能配置(例如,相对低的帧速率、相对低的分辨率等)来托管游戏会话136可允许将更多的游戏会话打包到单个服务器进程132和/或单个VM实例126上,以降低(对于订阅游戏开发方110)托管游戏会话136的成本,从而为开发者110提供费用节省。
在一些实施方案中,可在游戏会话136期间重新计算值150,因为属性306会在游戏会话136开始之后改变。基于重新计算的值150,可将游戏会话136替换到不同的编队138上,诸如通过将游戏会话136从第一编队138(1)上的托管进程132转移到第二编队138(2)上的不同进程132,其中游戏会话136在第二编队138(2)的VM实例126上恢复。为了避免提供给玩家112的服务中断,可采用实时数据迁移过程来在几乎没有中断的情况下转移游戏会话136。
图2示出了提供游戏托管服务106的示例性服务提供商网络102的部件图200,其中该游戏托管服务被配置为使用基于值的方法将游戏会话136放置在VM实例126的编队138上。如图所示,服务提供商网络102可包括被配置为执行一个或多个存储的指令的一个或多个硬件处理器202(处理器)。处理器202可以包括一个或多个核心。此外,服务提供商网络102可包括被配置为提供服务提供商网络102与其他装置(诸如开发者装置108和/或客户端装置114)之间的通信的一个或多个网络接口204。网络接口204可包括被配置为耦接到PAN、有线和无线LAN、有线和无线WAN等的装置。例如,网络接口204可包括与以太网、Wi-FiTM等兼容的装置。
服务提供商网络102也可以包括存储各种可执行组件(例如,基于软件的组件、基于固件的组件等)的计算机可读介质206。除了图1中讨论的各种组件之外,计算机可读介质206还可以进一步存储用于实现本文描述的功能性的组件。虽然未图示,但是计算机可读介质206可以存储被利用来控制包括服务提供商网络102的一个或多个装置的操作的一个或多个操作系统。根据一个实施方案,操作系统包括LINUX操作系统。根据另一实施方案,操作系统包括来自华盛顿雷德蒙德的微软公司的SERVER操作系统。根据另外的实施方案,操作系统能够包括UNIX操作系统或其变体之一。应该领会,也能够利用其他操作系统。
计算机可读介质206可以存储本文所述的游戏托管服务106的部分或组件。例如,计算机可读介质206可存储开发者门户116,开发者110可通过该门户提供其游戏构建体118和/或用于管理其在线游戏和/或用于管理游戏会话136在服务提供商网络102内的VM实例126的编队138上的放置的其他输入。另外,计算机可读介质206可存储用户界面组件208,该用户界面组件被配置为提供客户112和/或订户110可用来与信息(例如,账户设置)和/或由游戏托管服务106托管的在线游戏交互的门户、用户界面和/或其他途径。在一些实施方案中,用户界面组件208可提供交互式元素,这些元素允许订户110定制用于游戏会话放置的会话放置算法152,如本文所述,和/或提供属性数据212(例如其玩家112的玩家属性、其游戏的游戏属性等)和/或与其相关联的用于游戏会话放置的权重。
计算机可读介质206还可存储配对组件210,该配对组件被配置为当由处理器202执行时提供用于游戏托管服务106的各种配对功能。通常,配对组件210可包括可定制的规则引擎,该引擎允许开发者110基于适用于在线游戏的玩家属性和游戏模式来设计如何将客户112(或玩家112)匹配在一起。配对组件210还可管理用于形成游戏会话136的玩家组以及将玩家组放置到活动或最近创建/启动的游戏会话136中的细节。如所提及的,游戏服务140可包括其自身的配对逻辑。在一些实施方案中,一些配对由游戏服务140执行,而另外的配对逻辑可由服务提供商网络102的匹配组件210执行以增强配对过程。
计算机可读介质206还可存储图1中引入的队列组件148。队列组件148可被配置为当由处理器202执行时管理队列用于将VM实例分配给游戏流送请求和/或用于将新的游戏会话136跨编队138和/或地理区域放置在适当或可用的托管资源(例如,实例126)上。通常,队列组件148搜索用于将游戏流送到给定客户端装置114的VM实例上的可用流送资源(例如,可用进程132),已经使用本文所述的基于值的方法选择了该VM实例(参见图10至图12)。对于涉及多个玩家112的传入游戏会话请求,配对组件210建立在队列组件148上,因为一旦创建匹配,配对组件210就可将匹配细节传递或发送到由队列组件148管理的队列。然后,队列组件148可搜索实例126的编队138中的可用托管资源(例如,可用进程132),已经使用本文所述的基于值的方法选择了该编队138。队列组件148可利用流送实例分配算法215,该算法被配置为确定(例如,输出)用于根据排队的游戏流式请求来分配流送实例的一个或多个值238,实例分配值238指示与游戏流送请求相关联的值和/或用于使用特定VM实例来将游戏流送到与游戏流送请求相关联的玩家112的给定客户端装置114的偏好。因此,队列组件148可提供游戏流送请求的属性来作为流送实例分配算法215的输入,以确定用于选择用于游戏流送的VM实例的值238。另外,如所提及的,队列组件148可利用会话放置算法152,该算法被配置为确定(例如,输出)用于将游戏会话136放置在可用编队138上的一个或多个放置值150,值150指示游戏会话136的值和/或用于将游戏会话136放置在特定编队138上的偏好。因此,队列组件148可提供游戏会话请求的属性来作为会话放置算法152的输入,以确定用于选择用于游戏会话放置的编队138的值150。
计算机可读介质206还可存储会话组件216,该会话组件被配置为当由处理器202执行时查询在所选编队138的VM实例126上执行的空闲进程132的数据存储库134,以及将排队的游戏会话请求分配给将托管游戏会话136的空闲进程132。进程132向游戏会话136的分配可以各种方式发生。通常,会话组件216可逐个遍历在查询结果中返回的可用进程132的列表,尝试根据游戏会话请求来分配该列表中的第一进程132,并且如果分配失败,则在列表中下移,直到根据游戏会话请求成功地分配了列表中的进程132为止。如果并行分配一批进程132,则该分配过程可针对每个游戏会话请求迭代,直到分配所有游戏会话请求,直到所有游戏会话请求都被分配了至少一个进程132。可采用任何合适的方式来对该这种分配过程的可用进程132列表的遍历排序。例如,数据存储库134可记录执行的进程132的“年龄”,并且因此可基于年龄来对查询结果排序(例如,从最老的进程132到最年轻的进程132,从最年轻的进程132到最老的进程132等)。这样,通过从顶部到底部遍历可用进程132的列表,会话组件216可利用基于进程132的年龄分配进程132的偏好来扫描该列表。在一些实施方案中,数据存储库134中的可用进程132可根据年龄相关标准来筛选(例如,返回在最后N天创建的可用进程132,N是任何合适的数字)以生成包括满足该标准的一组经筛选的进程132的查询结果。数据存储库134被示出为存储进程132、属性数据212(例如,玩家属性、游戏属性等)和放置值150,以及其他数据。
计算机可读介质206还可存储监视组件222,该监视组件在由处理器202执行时收集关于游戏会话136的信息并且将该信息记录存储位置中以便开发者110使用。例如,监视组件222可识别和收集关于在实例126上托管的游戏会话136的度量,诸如游戏会话的长度、涉及的玩家、游戏类型、在游戏中发生的事件、硬件利用度量、玩家离开游戏和/或进入游戏,和/或开发者110可能感兴趣的关于游戏会话136的各种其他元数据。
计算机可读介质206还可存储自动缩放组件224,该自动缩放组件在由处理器202执行时增加或减少可用于托管游戏会话或其他进程132的实例126的数量。例如,自动缩放组件224可提供一种快速、高效且准确的方式来使编队容量与玩家使用相匹配。在一些示例中,自动缩放组件224可跟踪编队138的托管度量并且基于称作策略的一组准则(可由开发者110定义)来确定何时添加或移除实例126。自动缩放组件224可响应于需求变化而调整容量以帮助确保实例126的编队对于新玩家具有可用性,而不用维护过量的空闲资源。
为了利用由服务提供商网络102提供的服务,客户112和开发者110可向服务提供商网络102注册账户。例如,客户112和开发者110可利用装置来与身份和访问管理(IAM)组件226交互,该IAM组件允许客户112和开发者110向服务提供商网络102创建账户。通常,IAM组件226可使客户112和开发者110能够安全地管理对其基于云的服务和计算资源的访问。使用IAM组件226,开发者110可管理其游戏构建体118和/或实例126的编队138,如本文所述。另外,客户112可与其账户交互,例如,以更改其游戏体验、管理付款和/或其他功能的设置。
数据存储库134(例如,对象存储装置)可表示在服务提供商网络102中的一个或多个位置处存储本文所述的各种数据的一个或多个数据存储库。数据存储库134可跟踪当前在服务提供商网络102的VM实例126上执行的进程132。关于这些进程132的记录可包括附加数据/元数据,包括但不限于所有者(例如,进程是空闲并且可用的,还是被分配给游戏会话136(或游戏会话请求)作为所有者)、VM实例126、编队138、订户110的标识符等。数据存储库134还可包括开发者110的游戏构建体118,该游戏构建体包括游戏软件130和配置数据146,可由开发者110或其他人员在任何合适的时间更新,以及本文所述的其他数据。数据存储库134还可存储属性数据212,属性数据指定与游戏会话请求相关联的属性,诸如与游戏会话请求相关联的玩家112的玩家属性、与游戏会话请求的游戏相关联的游戏属性,以及类似属性。数据存储库134还可存储由用于游戏会话放置的会话放置算法152确定的放置值150、新玩家组或游戏组(即,游戏会话请求)在被放置到实例126中(例如,并且被分配在该实例上执行的进程132)之前在其中排队的队列228、客户112和/或开发者110的用户账户230、订户参数值232,其可规定游戏会话请求的属性和/或分配给属性的权重以用于基于值的游戏会话放置,以及编队数据234,其可包含有关编队138的数据,诸如编队138的区域、在编队138上运行的VM实例126和/或进程132的数量、实例126的类型、VM实例126的成本,以及其他类似的编队属性。数据存储库134还可存储流送实例数据236,其可包含有关可用于将游戏流送到客户端装置114的VM实例的数据。该数据可作为编队数据234的一部分或作为单独的数据被包括在内。数据存储库134还可存储由用于游戏流送的流送实例分配算法215确定的实例分配值238。
计算机可读介质206可以用于存储并检索信息,诸如程序模块、数据结构或其他数据。本领域的技术人员应该领会,计算机可读存储介质是提供数据的非暂时性存储并且能够由服务提供商网络102访问的任何可用介质。在一些示例中,由服务提供商网络102和或包括在其中的任何组件执行的操作可由一个或多个服务器装置支持。换句话说,由服务提供商网络102和或包括在其中的任何组件执行的操作中的一些或全部可由在基于云的布置中操作的一个或多个计算机装置执行。
作为实施例而非限制,计算机可读存储介质206能够包括在任何方法或技术中实现的易失性和非易失性、可移动和不可移动介质。计算机可读存储介质包括但不限于RAM、ROM、可擦除可编程ROM(“EPROM”)、电可擦除可编程ROM(“EEPROM”)、闪速存储器或其他固态存储器技术、紧致盘ROM(“CD-ROM”)、数字通用盘(“DVD”)、高清晰度DVD(“HD-DVD”)、蓝光或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁存储装置,或能够用于以非临时方式存储期望信息的任何其他介质。本文描述的各种组件的具体实施是依赖于计算系统的性能和其他要求的选择的问题。因此,本文描述的逻辑操作被不同地称为操作、结构装置、行为或模块。这些操作、结构装置、行为和模块能够用软件、用固件、用专用数字逻辑以及它们的任何组合加以实现。
图3示出了由游戏托管服务106实现的示例性技术的示意图300,该技术用于使用基于值的方法将游戏会话136放置在VM实例126的编队138上。最初,游戏托管服务106可引起VM实例126运行并且执行相关联的进程132,其中至少一些进程在空闲模式下执行,以便可用于托管新的游戏会话136。因此,多个第一服务器进程132可在VM实例126的编队138上执行。实例126的编队可被分配给服务提供商网络102的特定订户110,并且可在服务提供商网络102的计算资源上运行。
因为由游戏托管服务106接收R个传入游戏会话请求302(1)-(R),所以游戏托管服务106可通过(例如,经由队列组件148)使请求302在队列228中排队304来执行操作以处理请求302。对于队列228中的给定游戏会话请求302(1),队列组件148可进行调用(例如,API调用)以获得游戏会话请求302(1)的属性306。属性306可被保持在数据存储库134的属性数据212中,该属性数据可填充有由订户110提供的属性306和/或由游戏托管服务106基于代表订户110托管游戏会话确定的属性306。图3示出了属性306包括玩家属性306(1)和游戏属性306(2)的示例。玩家属性306(1)可表示与第一游戏会话请求302(1)相关联的一组玩家112(1)-(S)的属性,其中“S”是大于或等于2的任何整数。玩家属性306(1)可至少部分地基于先前的玩法(例如,玩家112(1)-(S)的先前玩法)。考虑其中玩家112(1)-(S)在比赛中组成一组的示例。在该示例中,各个玩家112的玩家属性306(1)可包括但不限于玩家标识符(ID)308、在一段时间内玩的游戏的数量310,以及在这段时间内花费的金钱量312。如玩家属性306(1)表右侧的省略号所示,玩家属性306(1)可包括附加的属性,诸如但不限于玩游戏的时间量,一天中玩游戏的时间,与给定玩家112共同参加比赛的其他玩家112,玩家ID是否是已知的玩家ID(例如,著名/职业的玩家、知名的博客作者,游戏评论员,社交媒体关注人数超过阈值的人等),玩家112是否已购买DLC,等等。在图3的示例中,第一个玩家112(1)在一段时间内玩了1000个游戏,而另一个玩家112(S)在这段时间内玩了50个游戏。另外,第一个玩家112(1)在这段时间内或另一时间段内花费了$xxx,而另一个玩家112(S)花费了$yyy,其中“xxx”和“yyy”可以是任何合适的数字。
游戏属性306(2)可表示与游戏会话请求302(1)相关联的游戏的属性。考虑一个示例,其中玩家112(1)-(S)请求玩锦标赛游戏,并且该锦标赛游戏包括多个(例如,5个)顺序阶段,玩家112经历从阶段1到阶段5的每个阶段。在该示例中,该游戏的游戏属性306(2)可包括但不限于游戏模式314,诸如是以锦标赛模式还是休闲模式还是某种其他模式玩该游戏,并且如果将以锦标赛模式玩该游戏,则该游戏的阶段316,以及该游戏是否要实时流送318(即,广播到一个或多个观看用户)。如游戏属性306(2)表右侧的省略号所示,游戏属性306(2)可包括附加的玩家属性,诸如但不限于要实时流送的游戏的观众中的预计观看用户数量,等等。在图3的示例中,与游戏会话请求302(1)相关联的游戏恰好是玩家112(1)-(S)已前进到总共5个阶段中的阶段3的游戏,并且该游戏也将被实时流送到观看观众。
应该领会,除了玩家属性306(1)和游戏属性306(2)之外,还可确定其他类型的属性306。例如,属性306还可包括由与游戏会话请求302(1)相关联的玩家112使用的计算装置114的属性,诸如硬件配置(例如,图形处理单元(GPU)的型号和/或版本)和/或软件配置(例如,图形驱动程序的版本等)。属性306还可包括订户110(例如,游戏的开发者)的属性,诸如开发并经由游戏托管服务106部署的游戏的数量、订户110的用户群中客户112的数量等。
除了属性306之外,游戏托管服务106可(例如,经由队列组件148)进行调用(例如,API调用)以获得分配给与游戏会话请求302(1)相关联的订户110的可用编队138。如图3所示,编队数据234可保持在数据存储库134中以确定用于放置对应于游戏会话请求302(1)的游戏会话136(1)的可用编队。可通过编队ID 320识别编队138,并且每个编队138可包括具有相同特性的一组相同的VM实例126。例如,假设编队138可按区域322变化,以及按性能度量变化,诸如但不限于平均玩家延迟324、容量326(例如,同时运行的进程132的数量,或一些其他利用度量)等。编队138也可按编队138中的各个实例126的成本327而变化。如在可用编队138表右侧的省略号所示,描述可用的编队138的特性的编队数据234除了图3中指定的特性之外还可包括附加的特性。在一些情况下,编队138可通过分层排序系统(例如,低层、中层、高层)来表征。高层编队138可以是具有高于阈值的容量的编队138,或者可提供低于阈值平均玩家延迟的用户体验的编队。可基于任何合适的特性(例如,性能度量)将编队138分类为低层、中层或高层,以指示哪些编队被认为是较高性能的或较高质量(和/或较高成本)的编队138,以及哪些编队被认为是较低性能或较低质量(和/或较低成本)的编队138。因此,玩家112的用户体验可根据游戏会话136(1)放置的位置和/或根据用来托管游戏会话136(1)的配置而变化(例如,用来托管游戏的帧速率和/或分辨率等)。
在确定了属性306和可用编队138的情况下,游戏托管服务106可基于属性306(例如,经由队列组件148)确定用于游戏会话请求302(1)的一个或多个值150(例如,多个值150,每个值对应于单个编队138)。例如,属性306可作为输入328提供到会话放置算法152,并且会话放置算法152的输出330可包括一个或多个值150,其指示游戏会话请求302(1)的值和/或用于将对应的游戏会话136(1)放置在特定编队138上的偏好。在图3的示例中,为P个可用编队138确定了P个值150。
在一些实施方案中,会话放置算法152可利用一个或多个规则332来基于作为输入提供到会话放置算法152的属性306确定放置值150。例如,规则332可规定,如果玩家属性306(1)指示玩家112已经在一段时间内玩了超过阈值的游戏数量(例如,1000个游戏或更多),则可将用于高层编队138的放置值150设置为最大值(例如,范围[0,1]中的值1)。相同的规则332或不同的规则332可规定,如果玩家属性306(1)指示玩家112全都已经在这段时间内玩了低于阈值的游戏数量,则可将用于低层编队138的放置值150设置为最大值(例如,范围[0,1]中的值1),和/或将用于高层编队138的放置值150设置为该范围中的相对较低的值。在一些实施方案中,规则332可被表示为函数(例如,数学函数,诸如线性或非线性方程),该函数基于作为输入提供到该函数的可定量属性306来计算值150。此类可定量属性306可包括例如玩过的游戏的数量、花掉的金钱量等。在一些实施方案中,可为每个可用编队138定义不同函数,以便计算特定于每个编队138的值150。例如,可将可定量属性306作为输入提供到计算用于第一编队138(1)的第一值150的第一函数,可将可定量属性306作为输入提供到计算用于第二编队138(2)的第二值150的第二函数,以此类推,具体取决于可用编队138的数量。这样,会话放置算法152可确定规定游戏会话136(1)将放置在何处的一个或多个值150。例如,队列组件148可选择具有图3中所示的“P”个值中的最高值150的编队138(1)作为将放置游戏会话136(1)的编队138(1),并且在所选编队138(1)的VM实例126上执行的空闲服务器进程132可被分配给游戏会话136(1)用于托管游戏会话136(1)的服务器组件。
在一些实施方案中,会话放置算法152可表示机器学习模型334,该机器学习模型被配置为接收属性306作为输入328并且生成输出330,该输出将分数分配给可用编队138。机器学习通常涉及处理一组实例(称为“训练数据”),以便训练机器学习模型。一旦被训练,机器学习模型是可接收新数据作为输入并估计或预测结果作为输出的已学习机制。例如,经训练的机器学习模型可以包括分类器,该分类器的任务是将未知输入(例如,未知图像)分类为多个类别标签之一(例如,将图像标记为猫或狗)。在某些情况下,经训练的机器学习模型配置为实施多标签分类任务(例如,将图像标签为“猫”、“狗”、“鸭”、“企鹅”等)。附加地或另选地,可训练经训练的机器学习模型以基于作为输入接收的未知数据来推断分类任务的概率或一组概率。在本公开的上下文中,未知输入328可以是属性306(或属性数据212),如本文所述,它与游戏会话请求302相关联,并且经训练的机器学习模型334可负责输出一组值(例如,一个、两个或更多个值、分数、度量),在本文中称为放置值150,其中由机器学习模型334输出的每个放置值150指示将用于游戏会话136放置在编队138上(例如,放置在对应于放置值150的编队138上)的偏好。在一些实施方案中,放置值150可被视为编队138是游戏会话136的最佳放置的概率。在两个或更多个编队138具有相同的放置值150的情况下,可通过考虑其他因素来打破束缚,诸如通过选择具有最低平均玩家延迟的编队138,和/或选择具有运行空闲服务器进程132的最低成本VM实例126的编队138。
在会话放置算法152被实现为经训练的机器学习模型334的示例中,这种经训练的机器学习模型334可表示单个模型或基础级机器学习模型的组合体,并且可被实现为任何类型的机器学习模型。例如,与本文所述的技术和系统一起使用的合适的机器学习模型包括但不限于神经网络、树型模型、支持向量机(SVM)、核方法、随机森林、样条曲线(例如,多元自适应回归样条曲线)、隐马尔可夫模型(HMM)、卡尔曼滤波器(或增强型卡尔曼滤波器)、贝叶斯网络(或贝叶斯信念网络)、期望最大化、遗传算法、线性回归算法、非线性回归算法、基于逻辑回归的分类模型,或其集成。“集成(ensemble)”可以包括机器学习模型的集合,其输出(预测)被组合,例如通过使用加权平均或投票。集成的单个机器学习模型可以在其专业知识上有所不同,并且该集成可以作为单个机器学习模型的委员会来运行,该委员会总体上比该集成的任何单个机器学习模型“更智能”。
用于训练机器学习模型334的训练数据可包括各种类型的数据。通常,用于机器学习的训练数据可以包括两个组件:特征和标签。然而,在一些实施方案中,用于训练机器学习模型的训练数据可以是未标记的。因此,机器学习模型可使用任何适当的学习技术来训练,诸如监督式学习、非监督式学习、半监督式学习、强化学习等等。训练数据中包括的特征以由一组特征来表示,诸如以关于训练数据的属性的可量化信息的n维特征向量的形式,诸如本文所述的属性306中的任何一个,和/或VM实例编队138的属性。
图4示出了服务提供商网络102的订户110可以如何提供用于定制由游戏托管服务106(例如,经由队列组件148)用于游戏会话放置的会话放置算法152的数据的示意图400。如所提及的,开发者110可通过开发者门户116向游戏托管服务106提供数据,诸如通过一个或多个网络120来上传数据。
图4描绘了第一订户110(1)使用第一订户装置108(1)将属性306发送到游戏托管服务106,诸如他们的玩家112的玩家属性306(1)和/或他们的游戏的游戏属性306(2)。这些属性306可作为属性数据212存储并且由用于订户110(1)的会话放置算法152在游戏会话放置期间确定放置值150。在一些实施方案中,订户提供的属性306可用于训练用作会话放置算法152的机器学习模型334。图4还描绘了第二订户110(2)使用第二订户装置108(2)将定制的会话放置算法402发送到游戏托管服务106。该定制算法402可被指定为定制的一组规则332,诸如定义用于评估处于特定放置值150的游戏会话请求302的标准的规则332。定制算法402可附加地或另选地定义一种类型的机器学习模型334,其用于通过在订户110的自身数据的样本集上训练机器学习模型334来进行游戏会话放置。图4还描绘了第三订户110(3)使用第三订户装置108(3)将权重404发送到游戏托管服务106。这些权重404可被分配给用于游戏会话放置的特定属性306。例如,订户110(3)可选择为“玩过的游戏数量310”属性分配比“花费的金钱量312”属性更重的权重。利用这些权重404,会话放置算法152可针根据订户110(3)偏好定制,以便将更多控制权放在订户110的手中以用于游戏会话放置。图4中的由游戏托管服务106接收的任何或所有数据可用于更新数据存储库134中的订户参数值232,使得可为订户110创建定制的会话放置算法152。
本文所述的过程被展示为逻辑流程图中的框的集合,其表示可以在硬件、软件或其组合中实施的操作的序列。在软件的上下文中,块表示在由一个或多个处理器执行时执行所述操作的计算机可执行指令。通常,计算机可执行指令包含执行特定功能或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。所描述的操作顺序不旨在被解释为是限制性的,并且任何数量的所描述的框可以以任何顺序和/或并行组合以实施过程。
图5示出了用于使用基于值的方法将游戏会话136放置在VM实例126的编队138上的示例性过程500的流程图。出于讨论的目的,参考前面的图描述了过程500。
在502处,游戏托管服务106的队列组件148可使游戏会话请求302在队列228中排队304。换句话说,可将游戏会话请求302放置在队列228中。这在图3中示意性地描绘。游戏会话请求302可与服务提供商网络102的订户110相关联。订户110可表示在线多玩家视频游戏(或游戏)的游戏开发方。因此,游戏会话请求302可对应于订户110的游戏。此外,游戏会话请求302可与可已经基于配对算法匹配在一起的一组多个玩家112(1)-(S)相关联。因此,游戏会话请求302还可针对包括在请求302中的每个玩家112请求玩家会话。
在504处,队列组件148可确定在框502处排队的游戏会话请求302的一个或多个属性306。队列组件148可(例如,从数据存储库134)访问属性数据212,以便在框504处确定属性306。在一些实施方案中,队列组件148可进行调用(例如,API调用)以在框504处获得属性306。在一些示例中,属性数据212中的至少一些属性数据可能已经由订户110自愿提供。在一些示例中,属性数据212中的至少一些属性数据可能已经由游戏托管服务106从代表订户110托管过去的游戏会话136中导出。如子框506和508所示,属性306可包括但不限于玩家属性306(1)和/或游戏属性306(2)。
因此,在506处,队列组件148可确定与游戏会话请求302相关联的玩家112的玩家属性306(1)。如本文所述,用于一组玩家112(1)-(S)中的单个玩家112的玩家属性306(1)可至少部分地基于玩家112的先前玩法,并且可包括但不限于玩家ID 308(例如,账户名称、账号、玩家别名等),在一段时间内玩的游戏的数量310,玩家112是否是付费玩家(与只玩免费游戏的玩家相反),以及如果是付费玩家,则玩家112在这段时间内花费的金钱量312,花在玩游戏上的时间量,一天中玩游戏的时间,共同参加比赛的其他玩家112,玩家ID是否是已知的玩家ID(例如,著名/职业的玩家、知名的博客作者,游戏评论员,社交媒体关注人数超过阈值的人等),玩家是否购买了DLC,等等。
附加地或另选地,在508处,队列组件148可确定对应于游戏会话请求302的游戏的游戏属性306(2)。游戏属性306(2)可指示游戏情境、游戏背景等,并且可包括但不限于游戏模式314(例如,是以锦标赛模式还是休闲模式玩游戏),并且如果将以锦标赛模式玩游戏,则锦标赛的阶段316(例如,总共5个阶段中的阶段3),游戏是否要实时流送318(即,广播到一个或多个观看用户),并且如果要实时流送,则观众中预计的观看用户数量,等等。
在510处,队列组件148可确定分配给订户110的VM实例126的可用编队138。队列组件148可(例如,从数据存储库134)访问编队数据234,以便在框510处确定可用编队138。在一些实施方案中,在框510处,队列组件148可进行调用(例如,API调用)以获得可用编队138(或与其有关的编队数据234)。如本文所述,可为订户110分配位于不同区域的VM实例126的多个编队138作为对服务提供商网络102的游戏托管服务106的订阅的一部分。因此,在框510处执行的操作可包括至少确定分配给订户110的VM实例126的第一编队138(1)(在第一区域中),并且确定分配给订户110的VM实例126的第二编队138(2)(在第二区域中)。另外,在框510处识别的各种编队可通过不同的性能度量来表征,诸如延迟、容量、当前利用率等。例如,第一编队138(1)(或其上的可用实例126)可向与请求302相关联的玩家112提供第一平均延迟,第二编队138(2)(或其上的可用实例126)可向玩家112提供第二平均延迟,以此类推,具体取决于可用编队138的数量P。又如,在框510处确定的可用编队138的VM实例126可根据可用容量和/或当前资源利用率而变化。例如,第一编队138(1)可包括运行一个进程的VM实例126,并且第二编队138(2)可包括运行多个(例如,四个)进程的VM实例126。这可意味着不同的编队138的不同实例126可具有不同的容量,其中运行单个进程的VM实例126可能够在游戏期间提供具有相对较少抖动的最敏捷响应,并且同时运行多个进程的VM实例126可具有较少的容量来托管新的游戏会话,但可能够提供较低的成本来托管游戏会话(例如,以相对较低的帧速率,相对较低的分辨率等)。
在512处,队列组件148可至少部分地基于在框504处确定的游戏会话请求302的属性306来确定值150。在一些实施方案中,在框512处可使用会话放置算法152来确定值150,如本文所述。会话放置算法152可以是评估一个或多个规则332的基于规则的算法。例如,基于规则的算法152可评估玩家112(1)-(S)中的任何一者是否经由游戏托管服务106在一段时间内玩了超过阈值的游戏数量,以及/或者玩家112(1)-(S)中的任何一者是否经由游戏托管服务在这段时间内花费了超过阈值的金钱量,和类似的规则。因此,可在框512处基于属性306来评估一个或多个规则。附加地或另选地,会话放置算法152可以是基于机器学习的算法,其将属性306作为输入328提供给经训练的机器学习模型334,如本文所述。经训练的机器学习模型334的输出330可以是框512处的一个或多个值150。在一些实施方案中,在框512处,可至少部分地基于在编队数据234中指定的可用编队138的特性来确定值150,诸如包括但不限于可用编队138的平均玩家延迟324、可用编队138的容量326(例如,同时运行的进程132的数量,或一些其他利用度量)、可用编队138中的实例126的成本327等的特性。
在514处,队列组件148可确定多个值150,在框510处确定的多个可用编队138中的每个编队138对应一个值150。例如,队列组件148可基于属性306确定与第一编队138(1)相关联的第一值150、与第二编队138(2)相关联的第二值150,以及可能用于附加的编队138的附加的值150。这里,第一值150可指示用于将对应的游戏会话136放置在第一编队138(1)上的第一偏好,并且第二值150可指示用于将游戏会话136放置在第二编队138(2)上的第二偏好,其中第二偏好可以是更强或更弱的偏好,或者与第一偏好相同的偏好(如果多个值150相等的话)。
在516处,队列组件148可至少部分地基于在框512处确定的值150来选择编队138(例如,第一编队138(1)或第二编队138(2))作为所选编队138。框516处的选择可至少部分地基于在框514处确定的多个值之间的比较(例如,用于第一编队138(1)的第一值150与用于第二编队138(2)的第二值150之间的比较)。例如,如果第一值150大于第二值150,则队列组件148可选择与较大的第一值150相关联的编队138。框516处的选择可基于可用编队138的编队特性(例如,性能度量)之间的比较(例如,第一编队138(1)向玩家112提供的第一平均延迟与第二编队138(2)向玩家112提供的第二平均延迟之间的比较)。因此,在框516处,队列组件148可确定多个编队138的平均延迟(和/或其他编队/实例特性,诸如容量(和/或其他性能度量)、成本等),诸如第一编队138(1)向玩家112提供的第一平均延迟,第二编队138(2)向玩家112提供的第二平均延迟,以及可能的附加平均延迟,具体取决于所评估的编队138的数量。如果第一平均延迟小于第二平均延迟,则队列组件148可选择与较低平均延迟(或较高平均延迟,具体取决于基于值的会话放置如何配置)相关联的编队138。在一些实施方案中,在框512处确定的值150可至少部分地基于指定每个可用编队138的编队/实例特性的编队数据234。以这种方式,在框516处的编队138的选择可基于值150,该值又基于可用编队138的特性(例如,平均延迟、容量、成本等)。
在518处,队列组件148可至少部分地基于值150来选择多个可用配置中的配置作为所选配置。例如,队列组件148可在以不同帧速率(例如,30FPS、15FPS等)和/或以不同分辨率(例如,1080P、4K等)托管游戏会话136之间进行选择。因此,框518处的选择可涉及选择多个可用帧速率中的帧速率作为所选帧速率,和/或选择多个可用分辨率中的分辨率作为所选分辨率,等等。
在520处,队列组件148可在所选编队138的VM实例126上托管对应于游戏会话请求302的游戏会话136,并且可利用所选配置(例如,以所选帧速率)托管游戏会话136。为了在框520处托管游戏会话136,可将在VM实例126上运行的可用进程132分配给游戏会话请求302,并且可指示所分配的进程132在VM实例126上托管游戏会话136。
图6示出了用于为服务提供商网络102的订户110创建定制的会话放置算法152的示例性过程600的流程图。出于讨论的目的,参考前面的图描述了过程600。
在602处,游戏托管服务106可从与订户110相关联的订户装置108接收用于定制用于放置游戏会话136的会话放置算法152的数据。图4中描绘了示出可在框602处提供的数据的示例的示意图。因此,子块604-608涉及可在框602处接收的用于定制会话放置算法152的示例类型的数据。
在604处,游戏托管服务106可接收一个或多个定制的会话放置规则332。定制的规则332可指定要满足的一个或多个标准,并且如果满足该一个或多个标准,则指定要为相关联的游戏会话请求302确定的值150。因此,定制的规则332可被设计成评估传入游戏会话请求302的属性306以确定是否满足该一个或多个标准。示例性规则可指定:如果至少一个玩家112在一段时间内玩了超过阈值的游戏数量(例如,超过1000个游戏),则满足标准。该示例性规则还可指定:如果满足该标准,则用于游戏会话请求302的值150将被设置为特定值(例如,范围[0,1]中的值1)。
在606处,游戏托管服务106可接收定制的机器学习模型334。例如,订户110可选择订户110希望游戏托管服务106在基于值的游戏会话放置期间利用的机器学习模型的类型或模型的组合体,如本文所述。
在608处,游戏托管服务106可接收分配给多个属性306中的各个属性的一个或多个权重,该属性可在游戏会话放置期间由会话放置算法152评估。例如,订户110可将权重分配给特定玩家属性306(1)以指示它们希望哪些玩家属性306(1)影响会话放置算法152,以及他们希望这些属性306(1)影响算法152放置确定的程度。订户110可除此之外或另选地为特定游戏属性306(2)分配权重。
在610处,游戏托管服务106可至少部分地基于在框602处接收到的数据来为订户110创建定制的会话放置算法152。例如,游戏托管服务106可(例如,经由队列组件148)将定制的会话放置规则实现为定制的会话放置算法152以在过程500的框512处确定值150,并且/或者游戏托管服务106可训练由订户110使用订户110的样本数据(或服务提供商网络102的另一订户110的样本数据)选择的机器学习模型334。又如,游戏托管服务106可创建加权的数学函数(例如,加权求和),或者可利用权重404以使用属性306作为训练数据的特征来训练机器学习模型。
图7是示出了包括服务提供商网络的例示性操作环境702的系统和网络图,其中服务提供商网络102可被配置为实现本文所述的功能性的各方面。服务提供商网络102能够在永久或按需基础上提供计算资源,例如VM实例和存储。在其他类型的功能性当中,可利用由服务提供商网络102提供的计算资源122来实现上述各种服务。如上同样讨论的,由服务提供商网络102提供的计算资源能够包括各种类型的计算资源,诸如像VM实例、数据存储资源、联网资源、数据通信资源、网络服务等一样的数据处理资源。
由服务提供商网络102提供的每种类型的计算资源可以是通用的或者可以在许多特定配置中可用。例如,数据处理资源能够在许多不同配置中作为物理计算机或VM实例可用。VM实例能够被配置为执行应用,包括web服务器、应用服务器、媒体服务器、数据库服务器、游戏应用、上述网络服务中的一些或全部和/或其他类型的程序。数据存储资源能够包括文件存储装置、块存储装置等。服务提供商网络102也能够被配置为提供本文未具体地提及的其他类型的计算资源。
在一个实施方案中,由服务提供商网络102提供的计算资源可由一个或多个数据中心704A-704N(其可能在本文中被单数地称为“数据中心704”或复数地称为“数据中心704”)启用。数据中心704是被用来容纳并操作计算机系统和相关组件的设施。数据中心704通常包括冗余和备用电源、通信、冷却和安全系统。数据中心704也可位于地理上不同的位置或区域706中。将在下面参照图8描述可用来实现本文公开的技术的数据中心704的一个例示性实施方案。
利用服务提供商网络102的客户112和开发者110可通过任何有线和/或无线网络120访问由服务提供商网络102提供的计算资源,所述网络可以是广域通信网络(“WAN”)(诸如因特网)、内联网或因特网服务提供商(“ISP”)网络或此类网络的组合。例如但不限于,由服务提供商网络102的客户112操作的客户端装置114可用于通过网络120访问服务提供商网络102。应该领会,能够利用局域网(“LAN”)、因特网、或本领域中已知的将数据中心704连接到远程客户端和其他用户的任何其他联网拓扑。也应该领会,也能够利用此类网络的组合。
如图所示,当接收到与客户112相关联的游戏会话请求302时,队列组件148可使传入请求302排队并且处理个别请求302以使用基于值的方法来放置对应的游戏会话136。例如,队列组件148可利用会话放置算法152,如本文参考各种实施方案所述。
图8是图示了用于实现本文公开的技术的各方面的数据中心704的一种配置的计算系统图800。图8所示的实施例数据中心704包括用于提供计算资源804A-804E的若干服务器计算机802A-802F(其在本文中可以被单数地称为“服务器计算机802”或复数地称为“服务器计算机802”)。在一些示例中,资源804和/或服务器计算机802可包括本文所述的计算资源网络122,被包括在该计算资源网络中,或者对应于该计算资源网络。
服务器计算机802可以是被适当地配置以用于提供本文描述的计算资源(在图8中被图示为计算资源804A-804E)的标准塔式、机架安装式或刀片式服务器计算机。如上面提及的,由服务提供商网络102提供的计算资源可以是数据处理资源,诸如VM实例或硬件计算系统、数据库聚类、计算聚类、存储聚类、数据存储资源、数据库资源、联网资源和其他的。服务器802中的一些也能够被配置为执行能够实例化和/或管理计算资源的资源管理器806。在VM实例的情况下,例如,资源管理器806可以是被配置为使得能够在单个服务器计算机802上执行多个VM实例的管理程序或其他类型的程序。数据中心704中的服务器计算机802也能够被配置为提供网络服务和其他类型的服务。
在图8所示的实施例数据中心704中,也利用适当的LAN 808来互连服务器计算机802A-802F。应该领会,本文描述的配置和网络拓扑已被大大地简化,并且能够利用更多的计算系统、软件组件、网络和联网装置来互连本文公开的各种计算系统并且提供上述功能性。也能够利用适当的负载均衡装置或其他类型的网络基础设施组件来均衡数据中心704A-704N中的每一个数据中心之间、每个数据中心704中的服务器计算机802A-802F中的每一个服务器计算机之间以及可能服务器计算机802中的每一个服务器计算机中的计算资源之间的负载。应该领会,参考图8描述的数据中心704的配置仅仅是例示性的并且能够利用其他具体实施。
图8所示的数据中心704也包括能够执行上述软件组件中的一些或全部的服务器计算机802F。例如但不限于,服务器计算机802F(和另一个服务器计算机802)通常可对应于被配置为执行游戏托管服务106的组件的服务器,包括但不限于实现会话放置算法152的队列组件148和/或上述其他软件组件。服务器计算机802F也能够被配置为执行其他组件和/或存储用于提供本文描述的功能性中的一些或全部的数据。在这方面,应该领会,在各种实施方案中在图8中图示为在服务器计算机802F上执行的服务能够在数据中心704中的许多其他物理或虚拟服务器上执行。因此,图8中的数据中心704还可包括执行VM实例126的编队138的多个服务器计算机802,这些实例执行进程132以托管用于在线游戏的游戏会话136。
图9示出了能够执行用于实现上述功能性的程序组件的计算机900的示例性计算机架构。图9所示的计算机架构图示了服务器计算机、工作站、台式计算机、膝上型电脑、平板电脑、网络家电、电子阅读器、智能电话或其他计算装置,并且能够被利用来执行本文呈现的软件组件中的任一个。在一些示例中,服务器计算机900可对应于实现图1中描述的游戏托管服务106的一个或多个计算装置。
计算机900包括基板902或“母板”,该基板是多个组件或装置可通过系统总线或其他电通信路径连接的印刷电路板。在一种例示性配置中,一个或多个中央处理单元(“CPU”)904与芯片组906结合地操作。CPU 904可以是执行计算机900的操作所必需的算术和逻辑运算的标准可编程处理器。
CPU 904通过从一种离散物理状态转变到下一个离散物理状态经由对在这些状态之间区分和改变的开关元件的操纵来执行操作。开关元件通常包括维持两种二进制状态之一的电子电路,诸如触发器;以及基于一个或多个其他开关元件的状态的逻辑组合提供输出状态的电子电路,诸如逻辑门。能够组合这些基本开关元件以创建更复杂的逻辑电路,包括寄存器、加减法器、算术逻辑单元、浮点单元等。
芯片组906提供CPU 904与基板902上的组件和装置的剩余部分之间的接口。芯片组906能够提供到用作计算机900中的主存储器的RAM 908的接口。芯片组906能够进一步提供到诸如用于存储帮助启动计算机900并且在各种组件与装置之间传输信息的基本例程的只读存储器(“ROM”)910或非易失性RAM(“NVRAM”)的计算机可读存储介质的接口。依照本文所述的配置,ROM 910或NVRAM也能够存储计算机900的操作所必需的其他软件组件。
计算机900能够使用通过诸如网络908的网络到远程计算装置和计算机系统的逻辑连接来在联网环境中操作。芯片组906可包括用于通过诸如千兆位以太网适配器的NIC912提供网络连接的功能。NIC 912能够通过网络808(或120)将计算机900连接到其他计算装置。应该领会,在计算机900中可存在多个NIC 912,从而将计算机连接到其他类型的网络和远程计算机系统。
计算机900可连接到为该计算机提供非易失性存储的大容量存储装置918。大容量存储装置918可存储操作系统、程序(例如,游戏托管服务106及其子组件,包括但不限于利用会话放置算法152的队列组件148)和已在本文中更详细地描述的数据。大容量存储装置918可通过连接到芯片组906的存储控制器914连接到计算机900。大容量存储装置918可由一个或多个物理存储单元组成。存储控制器914可通过串行连接的SCSI(“SAS”)接口、串行高级技术附件(“SATA”)接口、光纤通道(“FC”)接口或其他类型的接口与物理存储单元接口,用于在计算机和物理存储单元之间物理连接和传输数据。
计算机900可通过变换物理存储单元的物理状态以反映正在存储的信息来将数据存储在大容量存储装置918上。在本说明书的不同实施方案中,物理状态的特定变换可取决于各种因素。此类因素的示例可包括但不限于用于实现物理存储单元的技术,无论大容量存储装置918被表征为主存储装置还是辅助存储装置等。
例如,计算机900可经由存储控制器914发布指令来改变磁盘驱动单元内特定位置的磁特性,光学存储单元中特定位置的反射或折射特性,或固态存储单元中特定电容器、晶体管或其他分立组件的电气特性,从而将信息存储到大容量存储装置918。在不脱离本公开的范围和精神的情况下,物理介质的其他变换是可能的,同时前面的实施例被仅提供来促进本描述。计算机900能够通过检测物理存储单元内的一个或多个特定位置的物理状态或特性来进一步从大容量存储装置918读取信息。
除了上述大容量存储装置918之外,计算机900还可具有对其他计算机可读存储介质的访问权限以存储并检索信息,诸如程序模块、数据结构或其他数据。本领域的技术人员应该领会,计算机可读存储介质是提供数据的非暂时性存储并且能够由计算机900访问的任何可用介质。在一些示例中,由基于网络的服务平台102和或包括在其中的任何组件执行的操作可由与计算机900类似的一个或多个装置支持。换句话说,由服务提供商网络102和或包括在其中的任何组件执行的操作中的一些或全部可由在基于网络的布置中操作的一个或多个计算机装置900执行。
作为实施例而非限制,计算机可读存储介质能够包括在任何方法或技术中实现的易失性和非易失性、可移动和不可移动介质。计算机可读存储介质包括但不限于RAM、ROM、可擦除可编程ROM(“EPROM”)、电可擦除可编程ROM(“EEPROM”)、闪速存储器或其他固态存储器技术、紧致盘ROM(“CD-ROM”)、数字通用盘(“DVD”)、高清晰度DVD(“HD-DVD”)、蓝光或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁存储装置,或能够用于以非临时方式存储期望信息的任何其他介质。
如上文简要提及的,大容量存储装置918可存储用来控制计算机900的操作的操作系统。根据一个实施方案,操作系统包括LINUX操作系统。根据另一实施方案,操作系统包括来自华盛顿雷德蒙德的微软公司的SERVER操作系统。根据另外的实施方案,操作系统能够包括UNIX操作系统或其变体之一。应该领会,也能够利用其他操作系统。大容量存储装置918可存储由计算机900使用的其他系统或应用程序和数据。
在一个实施方案中,用计算机可执行指令对大容量存储装置918或其他计算机可读存储介质进行编码,所述计算机可执行指令在被加载到计算机900中时将计算机从通用计算系统转换为能够实现本文描述的实施方案的专用计算机。如上所述,这些计算机可执行指令通过指定CPU 904如何在状态之间转变来使计算机900转换。根据一个实施方案,计算机900具有对存储计算机可执行指令的计算机可读存储介质的访问权限,该计算机可执行指令当由计算机900执行时,执行上文参照图1至图6所述的各种过程。计算机900还可包括计算机可读存储介质,在该计算机可读存储介质上存储有用于执行本文所述的其他计算机实现的操作中的任一个的指令。
计算机900还可包括用于接收并处理来自诸如键盘、鼠标、触摸板、触摸屏、电子触笔或其他类型的输入装置的许多输入装置的输入的一个或多个输入/输出控制器916。类似地,输入/输出控制器916可将输出提供给显示器,诸如计算机监视器、平板显示器、数字投影仪、打印机或其他类型的输出装置。应该领会,计算机900可能不包括图9所示的所有组件,能够包括图9中未明确地示出的其他组件,或者可能利用与图9所示的完全不同的架构。如图9所示,队列组件148可利用用于游戏会话放置的会话放置算法152,如本文所述。
图10示出了示例性环境1000的系统架构图,该环境中服务提供商网络1002的游戏流送服务1006可使用基于值的方法来将VM实例分配给游戏流送请求。如图所示,服务提供商网络1002可由服务提供商104运营和/或管理。图10的服务提供商网络1002可类似于参考图1描述的服务提供商网络102,因为它可向用户提供各种服务以满足其计算资源需求,诸如基于云的计算资源。在这个意义上,服务提供商网络1002可包括本文其他地方描述的服务提供商网络102的一些或全部组件和/或功能。此外,如图10所示,服务提供商网络1002还可以提供游戏流送服务1006,该游戏流送服务是用于将游戏流送到玩家112的客户端装置114的可扩展的基于云的运行环境。游戏流送服务1006可被实现为图1的游戏托管服务106的一部分或与之结合,以便在基于云或基于网络的环境中部署、操作和缩放流送服务器和基于会话的多玩家游戏服务器。例如,游戏流送服务1006可提供用于将游戏流送到客户端装置114,用于为游戏会话中涉及的多个玩家托管游戏会话,以及用于管理持续的活动、安全性、存储和性能跟踪的硬件。另外,游戏流送服务106可提供自动缩放能力,使得支持游戏流送的实例和/或支持游戏会话的实例可基于玩家需求而运行或停止。
一旦订户/开发者110经由开发者门户116上传了其游戏构建体118,游戏流送服务1006就可将用于订户的游戏的游戏软件(例如,图1中所示的游戏软件130)部署到计算资源网络122中的一个或多个游戏服务器124。可参考图1了解一个或多个游戏服务器124及其用于托管游戏会话136的操作。
图10还描绘了计算资源网络1022(1)-(V),其中“V”是大于或等于2的任何整数(在本文中统称为“计算资源网络1022”)。这些计算资源网络1022可包括数据中心,数据中心各自包括一个或多个计算资源,诸如VM实例1026。尽管在图10中单独示出了计算资源网络1022(1)-(V),但是应该领会,计算资源网络1022(1)-(V)可表示一个或多个计算资源网络1022。计算资源网络1022(1)被示出为包括一个或多个VM实例1026(1)(1)至1026(1)(N),其中“N”是任何合适的整数,计算资源网络1022(2)被示出为包括一个或多个VM实例1026(2)(1)至1026(2)(P),其中“P”是任何合适的整数,计算资源网络1022(V)被示出为包括一个或多个VM实例1026(V)(1)至1026(V)(Q),其中“Q”是任何合适的整数。计算资源网络1022(1)-(V)中的数据中心可容纳游戏服务器1024(1)-(V)并且可以位于不同地理区域上,使得计算资源可用于支持由服务提供商网络1002提供的基于云的服务的功能。服务器1024可用于将游戏流送到玩家112的客户端装置114,诸如通过执行VM实例1026来渲染帧并将其发送到客户端装置114,以及基于玩家112将用户输入提供给客户端装置114来从客户端装置114接收控制数据。计算资源网络1022的计算资源可包括基于硬件的组件的各种组合,诸如CPU、GPU、存储器、存储装置、网络容量、安全性和/或用以支持基于云的服务(诸如游戏流送服务1006)的任何其他类型的基于硬件的资源。在一些示例中,计算资源网络1022还可包括存储提供服务的功能的各种基于固件和/或基于软件的资源(诸如实例1026)的相应存储器。类似于图1的描述,VM实例1026可执行代理128、订户110的游戏的游戏软件130和/或一个或多个进程132以支持将游戏流送到客户端装置114。代理128可负责在实例1026上处理各种进程,诸如运行实例1026、停止实例1026、处理实例1026的使用寿命进程、检索在实例1026上执行的进程132的游戏流送分配、在实例1026上执行进程132以将游戏流送到客户端装置114、管理实例1026的资源、在实例1026上安装补丁和/或其他软件,和/或用于管理实例126的各种其他动作。
图10还描绘了图1中描述的数据存储库134。数据存储库134还可记录VM实例1026到游戏流送请求的分配。为了请求流送游戏,玩家112可利用其客户端装置114(例如,或其上执行的应用程序、软件其他程序)来(例如,经由API调用)请求游戏流送服务1006为它们分配VM实例1026以用于将游戏流送到它们的客户端装置114。因此,在接收到游戏流送请求时,游戏流送服务1006可负责识别和选择VM实例1026用作“流送实例”,其用于将游戏流送到与传入游戏流送请求相关联的玩家112的客户端装置114。游戏流送服务1006可能已经运行了为服务提供商网络1002的各种订户110分配的VM实例1026,并且每个运行的VM实例1026可具有在空闲模式下在其上执行的服务器进程132,直到进程132被分配给用于在对应的游戏会话136结束之前将游戏流送到客户端装置114的游戏流送请求为止。除了加载用于流送特定游戏的地图和其他数据之外,这些空闲进程132可准备好一旦被分配给游戏会话请求就开始流送游戏。游戏流送服务1006可负责分配已分配给订户110的可用VM实例1026,并且识别在所选VM实例1026上执行的服务器进程132,该服务器进程将服务于向他/她的客户端装置114流送游戏的玩家112。
将VM实例1026分配到游戏流送请求可以是两阶段过程的第一阶段。该两阶段过程的第二阶段可以是将对应的游戏会话136(例如,用于多个玩家112,包括正在流送游戏的玩家112)放置在游戏服务器124的编队138上,如本文所述。当创建游戏会话136时,可指示在所选编队138的VM实例126上执行的已分配进程132为与游戏会话136相关联的订户110的一个或多个客户112托管(或支持)所创建的游戏会话136,并且该游戏可被流送到参与游戏会话136的客户112的客户端装置114中的一个或多个。在与游戏会话相关联的客户端装置114上运行的客户端应用程序可接收连接信息(例如,服务器1024的端口、IP地址等),并且可通过使用玩家会话ID通过网络120直接连接到开放的游戏流送服务器1024来创建游戏流送连接1044。用于流送游戏的VM实例1026然后可接收连接信息(例如,服务器124的端口、IP地址等),并且可通过使用玩家会话ID直接连接到开放的游戏服务器124来创建连接。如果连接,则玩家会话被设置为活动,并且客户112开始玩正被流送到其客户端装置114的游戏,和在其与具有实例1026的游戏流送服务器1024之间建立的游戏流送连接1044,该实例具有执行以流送游戏(例如,渲染帧,将帧发送到客户端装置114、接收控制数据等)的进程132。图10描绘了分别用于客户端装置114(1)、114(2)和114(R)的单独的游戏流送连接1044(1)、1044(2)和1044(R),这些连接可将每个客户端装置114连接到其自己的专用流送VM实例1026。同时,在游戏服务器124的实例126上执行的服务器进程132可托管用于多个玩家的游戏会话136。一旦游戏会话136已经结束(例如,客户112退出、游戏接触、超时等),在每个所涉及的客户端装置114上的客户端应用程序可从进程132断开连接,并且游戏流送服务1006可改变游戏会话136以使其终止,上传游戏会话日志到存储装置,以及更新编队利用率来指示游戏服务器1024少了一个执行中的进程132。
本文所述的基于值的流送实例分配技术可至少部分地由本文所述的队列组件148和/或可能由游戏流送服务1006的另一组件实现。队列组件148可接收与请求将游戏流送到他/她的客户端装置114的玩家112相关联的传入游戏流送请求。该玩家112还可请求与其他玩家匹配以在多玩家模式中玩该游戏。队列组件148可将传入游戏流送请求放置在队列中,并且可处理每个游戏流送请求以识别要分配给该游戏流送请求的VM实例1026。当处理排队的游戏流送请求以向其分配VM实例1026时,队列组件148可确定游戏流送请求的属性,该属性用于确定(例如,估算、计算)用于流送实例分配的一个或多个值238。值238在本文中有时被称为“实例分配值238”,因为值238指示要从哪里将游戏流送到客户端装置114。用于确定值238的游戏会话请求的属性可包括但不限于玩家属性306(1)、游戏属性306(2)和/或其他类型的属性,这些属性在本文中详细描述。
队列组件148还可确定分配给与游戏流送请求相关联的订户110的可用VM实例1026,并且可利用流送实例分配算法215来确定(例如,估算、计算等)用于流送实例分配的值238。可用VM实例1026可位于不同的地理区域上,并且每个可用VM实例可基于区域和/或基于特定硬件和/或VM实例1026的配置而具有不同的性能特性。例如,延迟可跨用于游戏流送的一组可用VM实例1026变化,使得第一VM实例1026(1)(1)向客户端装置114(1)提供相对较低的延迟并且第二VM实例1026(2)(1)向客户端装置114(1)提供相对较高的延迟,或反之亦然。如所提及的,这可基于各种因素。在一些情况下,可用VM实例1026(1)(1)至1026(V)(Q)可在可用容量和/或当前资源利用率方面变化。例如,第一VM实例1026(1)(1)可运行一个进程,并且第二VM实例1026(2)(1)可运行多个(例如,四个)进程。这可意味着不同的实例1026可具有不同的容量,其中运行单个进程的VM实例1026可能够在游戏流送期间提供具有相对较少抖动的最敏捷响应,并且同时运行多个进程的VM实例1026可具有较少的容量来将游戏流送到客户端装置114(1),但它可能够提供较低的成本来用于流送该游戏(例如,以相对较低的帧速率)。应该领会,流送实例分配算法215可由订户110采用与本文参考图4和图6描述的会话放置算法152的定制类似的方式定制。
值238用于选择用于将游戏流送到与游戏流送请求相关联的给定客户端装置114的VM实例1026。在一些实施方案中,从游戏流送请求的属性确定的单个值238(例如,分数、度量等)可表示在可能值范围内的可用来设置变量的值,其中该范围的最大值可指示高值游戏流送请求和/或用于使用特定的VM实例1026来流送游戏的强偏好,该范围的最小值可指示低值游戏流送请求和/或用于使用特定的VM实例1026来流送游戏的弱偏好。在一些实施方案中,从游戏流送请求的属性确定的单个值238可表示美元值(例如,$0.50、$1.50等),该美元值可指示可归因于使用特定VM实例1026将游戏流送到给定客户端装置114的实体(例如,游戏开发方)的货币值。
在一些实施方案中,游戏流送请求的属性可用于确定多个值238,其中多个值238的每个值238对应于可用于游戏流送的多个VM实例1026中的单个VM实例1026。例如,可为第一VM实例1026(1)(1)确定第一值238,该第一值238指示用于使用第一VM实例1026(1)(1)将游戏流送到客户端装置114的偏好,可为第二VM实例1026(2)(1)确定第二值238,该第二值238指示用于使用第二VM实例1026(2)(1)将游戏流送到客户端装置114的偏好,以此类推,具体取决于可能可用于游戏流送的实例1026的数量。在确定多个放置值238的情况下,这些值238可表示任何合适类型的值。例如,多个值238可包括多个布尔值(例如,真或假,是或否),该多个布尔值指示是否优选地使用给定的VM实例(VMI)1026(例如,VMI 1:是,VMI 2:否等)将游戏流送到客户端装置114。在其他示例中,值238可以是在限定的值范围(例如,[0,100]的范围,[0,1]的归一化范围等)内的数值,其中该范围可指示用于使用分配有值238的VM实例1026将游戏流送到客户端装置114的弱到强偏好。
如所提及的,流送实例1026的分配可以是多阶段过程的第一阶段。在该示例中,作为第二阶段的一部分,队列组件148可基于为可用编队138确定的放置值150来选择编队138,并且对应的游戏会话136可通过识别VM实例126上的空闲服务器进程132并指示服务器进程132托管游戏会话136来被托管在所选第一编队138(1)的VM实例126上。当游戏会话136被放置并且当流送实例1026被分配以将游戏流送到特定客户端装置114,该分配和放置可被存储在数据存储库134中,至少直到游戏会话136终止。例如,图10示出了其中第一VM实例(VMI)1026(1)(1)已被分配给第一游戏流送请求1028(1)的示例。如图10的数据存储库134表中的省略号所示,数据存储库134可保持已经进行的附加流送实例分配。参考以下附图进一步详细描述了可由用于基于值的游戏流送实例分配的队列组件148使用的流送实例分配算法215的示例性细节。通常,流送实例分配算法215在确定用于流送实例分配的值238时考虑游戏流送请求的属性。
在例示性示例中,传入游戏流送请求1028可与指示与游戏流送请求1028相关联的玩家112在一段时间内(例如,在过去6个月内)玩过超过阈值数量的游戏(例如,超过1000个)的玩家属性相关联。在该示例中,流送实例分配算法215(使用基于规则的方法、机器学习模型等)可确定用于该游戏流送请求1028的相对高的值238,以便向游戏流送请求1028分配可向该游戏流送请求的玩家112的客户端装置114提供相对高的性能(例如,低延迟或换句话讲“敏捷的”流送体验)的VM实例1026。在另一例示性示例中,另一传入游戏流送请求1028可与指示游戏将被实时流送给观众的游戏属性相关联,并且流送实例分配算法215(使用基于规则的方法、机器学习模型等)可确定用于该游戏流送请求1028的相对高的值238,以便向游戏流送请求1028分配可向该游戏流送请求的玩家112的客户端装置114提供相对高的性能(例如,低延迟或换句话讲“敏捷的”流送体验)的VM实例1026。相比之下,又一个传入游戏流送请求可与作为休闲免费游戏的非付费玩家的玩家112相关联。考虑到游戏流送请求1028的这些玩家属性和游戏属性,流送实例分配算法215(使用基于规则的方法、机器学习模型等)可根据将游戏流送请求1028分配到高性能1026来为该游戏流送请求1028确定相对低的值238,并且/或者值238可包括用于低性能VM实例1026的相对高的实例分配值238,该实例分配值指示用于向游戏流送请求1028分配提供相对低性能(例如,与其他可用VM实例1026相比更高的延迟)的VM实例1026的强偏好,(对于订户110)这可能具有较低的将游戏流送到给定的客户端装置114的成本。向游戏流送请求1028分配低性能VM实例1026和/或利用低性能配置(例如,相对低的帧速率、相对低的分辨率等)来流送游戏可允许使用单个服务器进程132和/或单个VM实例1026来流送到更多客户端设备114,以降低(对于订阅游戏开发方110)将游戏流送到其客户112的客户端设备114的成本,从而为开发者110提供费用节省。
在一些实施方案中,可在游戏会话136期间重新计算值238,因为属性306会在游戏会话136开始之后改变。基于重新计算的值238,可使用不同的VM实例1026来流送游戏,诸如通过将流从第一VM实例1026(1)(1)上的流送进程132转移到第二VM实例1026(2)(1)上的不同流送进程132,其中游戏流送在第二VM实例1026(2)(1)上恢复。为了避免提供给玩家112的服务中断,可采用实时数据迁移过程来在几乎没有中断的情况下转移游戏的流送。
图11示出了由游戏流送服务1006实现的示例性技术的示意图1100,该技术用于使用基于值的方法来将VM实例1026分配给游戏流送请求1028。最初,游戏流送服务1006可引起VM实例1026运行并且执行相关联的进程132,其中至少一些进程在空闲模式下执行,以便可用于将游戏流送到客户端装置114作为游戏会话136的一部分。因此,多个第一服务器进程132可在VM实例1026上执行。VM实例1026的编队可被分配给服务提供商网络1002的特定订户110,并且可在服务提供商网络1002的计算资源上运行。
因为由游戏流送服务1006接收R个传入游戏流送请求1028(1)-(R),所以游戏流送服务1006可通过(例如,经由队列组件148)使请求1028在队列228中排队1104来执行操作以处理请求1028。对于队列228中的给定游戏流送请求1028(1),队列组件148可进行调用(例如,API调用)以获得游戏流送请求1028(1)的属性306。属性306可包括但不限于玩家属性306(1)(例如,至少部分地基于玩家112(1)的先前玩法的玩家属性306(1))和游戏属性306(2)。由于参考至少图3详细描述了这些属性,因此为了简洁起见,这里将不会进一步详细地描述属性306。在一些实施方案中,游戏流送请求1028(1)可与单个玩家112(1)相关联,并且在这些实施方案中,玩家属性306(1)可表示与游戏流送请求1028(1)相关联的单个玩家112(1)的属性。在一些实施方案中,可在玩家112(1)与一个或多个其他玩家112在比赛中组成一组之前确定属性306。
除了属性306之外,游戏流送服务1006可(例如,经由队列组件148)进行调用(例如,API调用)以获得可用的VM实例1026(有时称为“流送实例1026”)用于将对应的游戏流送到与游戏流送请求1028(1)相关联的玩家112(1)的客户端装置114(1)。可用的VM实例1026可被分配给与游戏流送请求1028(1)相关联的订户110。如图11所示,流送实例数据236可保持在数据存储库134中以确定用于将游戏流送到客户端装置114的可用VM实例1026。可通过实例ID 1108识别VM实例(VMI)1026,并且该组可用的VM实例1026(1)(1)至1026(V)(Q)中的每个VM实例1026可按区域322变化,以及按性能度量变化,诸如但不限于相对于客户端装置114的延迟324、容量326(例如,同时运行的进程132的数量,或某种其他利用度量),等等。VM实例1026还可按实例1026的成本327变化。如在可用流送实例1026表右侧的省略号所示,描述可用VM实例1026的特性的流送实例数据236除了图11中指定的特性之外还可包括附加的特性。在一些情况下,VM实例1026可通过分层排序系统(例如,低层、中层、高层)来表征。高层VM实例1026可以是具有高于阈值容量的VM实例1026,或者可提供到客户端装置114的低于阈值延迟的用户体验的VM实例。可基于任何合适的特性(例如,性能度量)将VM实例1026分类为低层、中层或高层,以指示哪些编队被认为是较高性能的或较高质量(和/或较高成本)的VM实例1026,以及哪些编队被认为是较低性能或较低质量(和/或较低成本)的VM实例1026。因此,玩家112的用户体验可根据哪些VM实例1026被选择用于将游戏流送到玩家112的客户端装置114和/或根据用来流送游戏的配置(例如,用来流送游戏的帧速率和/或分辨率等)而变化。
在确定了属性306和可用VM实例1026的情况下,游戏流送服务1006可基于属性306(例如,经由队列组件148)确定用于游戏流送请求1028(1)的一个或多个值238(例如,多个值238,每个值对应于单个VM实例1026)。例如,属性306可作为输入1128提供到流送实例分配算法215,并且流送实例分配算法215的输出1130可包括一个或多个值238,其指示游戏流送请求1028(1)的值和/或用于使用特定VM实例1026将游戏流送到玩家112(1)的客户端装置114(1)的偏好。在图11的示例中,为多个可用VM实例1026确定相等数量的多个值238。
在一些实施方案中,流送实例分配算法215可利用一个或多个规则1132来基于作为输入提供到流送实例分配算法215的属性306来确定实例分配值238。例如,规则1132可规定,如果玩家属性306(1)指示与游戏流送请求1028(1)相关联的玩家112(1)已经在一段时间内玩了超过阈值的游戏数量(例如,1000个游戏或更多),则可将用于高层VM实例1026的实例分配值238设置为最大值(例如,范围[0,1]中的值1)。相同的规则1132或不同的规则1132可规定,如果玩家属性306(1)指示玩家112(1)已经在这段时间内玩了低于阈值的游戏数量,则可将用于低层VM实例1026的实例分配值238设置为最大值(例如,范围[0,1]中的值1),和/或将用于高层VM实例1026的实例分配值238设置为该范围中的相对较低的值。在一些实施方案中,规则1132可被表示为函数(例如,数学函数,诸如线性或非线性方程),该函数基于作为输入提供到该函数的可定量属性306来计算值238。此类可定量属性306可包括例如玩家112(1)玩过的游戏的数量、玩家112(1)花掉的金钱量等。在一些实施方案中,可为每个可用VM实例1026定义不同函数,以便计算特定于每个VM实例1026的值238。例如,可将可定量属性306作为输入提供到计算用于第一VM实例1026(1)(1)的第一值238的第一函数,可将可定量属性306作为输入提供到计算用于第二VM实例1026(2)(1)的第二值238的第二函数,以此类推,具体取决于可用VM实例1026的数量。这样,流送实例分配算法215可确定一个或多个值238,这些值指示哪个VM实例1026将把游戏流送到玩家112(1)的客户端装置114(1)。例如,队列组件148可选择具有图11中所示的一组值中的最高值238的VM实例1026(1)(1)作为将把游戏流送到玩家112(1)的客户端装置114(1)(作为对应的游戏会话136(1)的一部分)的VM实例1026(1)(1),可分配在所选的VM实例1026(1)(1)上执行的空闲服务器进程132来通过渲染帧、将帧发送到客户端装置114(1)帧以及从客户端装置114(1)接收控制输入数据而流送游戏。
在一些实施方案中,流送实例分配算法215可表示机器学习模型1134,该机器学习模型被配置为接收属性306作为输入1128并且生成输出1130,该输出将分数分配给可用VM实例1026。本文其他地方详细描述了机器学习,并且为了简洁起见,将不会进一步详细地描述机器学习。最终,选择VM实例1026(1)(1)中的一个作为用于将游戏流送到与游戏流送请求1028(1)相关联的玩家112(1)的客户端装置114(1)的所选VM实例1026(1)(1)。因此,如图11所示,可至少部分地基于使用流送实例分配算法215确定的值238将所选VM实例1026(1)(1)分配给游戏流送请求1028(1)。
图12示出了用于使用基于值的方法来将VM实例1026分配给游戏流送请求1028的示例性过程1200的流程图。出于讨论的目的,参考前面的图描述了过程1200。
在1202处,游戏流送服务1006的队列组件148可使游戏流送请求1028在队列228中排队1104。换句话说,可将游戏流送请求1028放置在队列228中。这在图11中示意性地描绘。游戏流送请求1028可与服务提供商网络1002的订户110相关联。订户110可表示在线多玩家视频游戏(或游戏)的游戏开发方。因此,游戏流送请求1028可对应于订户110的游戏。此外,游戏流送请求1028可与可能希望将游戏流送到他/她的客户端装置114的至少一个玩家112相关联,该客户端装置可以是连接到WiFi或蜂窝网络的移动装置。
在1204处,队列组件148可确定在框1202处排队的游戏流送请求1208的一个或多个属性306。队列组件148可(例如,从数据存储库134)访问属性数据212,以便在框1204处确定属性306。在一些实施方案中,队列组件148可进行调用(例如,API调用)以在框1204处获得属性306。在一些示例中,属性数据212中的至少一些属性数据可能已经由订户110自愿提供。在一些示例中,属性数据212中的至少一些属性数据可能已经由游戏流送服务1006从代表订户110托管过去的游戏会话136中导出。如子框1206和1208所示,属性306可包括但不限于玩家属性306(1)和/或游戏属性306(2)。
因此,在1206处,队列组件148可确定与游戏流送请求1028相关联的玩家112的玩家属性306(1)。如本文所述,玩家属性306(1)可至少部分地基于玩家112的先前玩法,并且可包括但不限于玩家ID 308(例如,账户名称、账号、玩家别名等),在一段时间内玩的游戏的数量310,玩家112是否是付费玩家(与只玩免费游戏的玩家相反),以及如果是付费玩家,则玩家112在这段时间内花费的金钱量312,花在玩游戏上的时间量,一天中玩游戏的时间,共同参加比赛的其他玩家112,玩家ID是否是已知的玩家ID(例如,著名/职业的玩家、知名的博客作者,游戏评论员,社交媒体关注人数超过阈值的人等),玩家是否购买了DLC,等等。
附加地或另选地,在1208处,队列组件148可确定对应于游戏流送请求1208的游戏的游戏属性306(2)。游戏属性306(2)可指示游戏情境、游戏背景等,并且可包括但不限于游戏模式314(例如,是以锦标赛模式还是休闲模式玩游戏),并且如果将以锦标赛模式玩游戏,则锦标赛的阶段316(例如,总共5个阶段中的阶段3),游戏是否要实时流送318(即,广播到一个或多个观看用户),并且如果要实时流送,则观众中预计的观看用户数量,等等。
在1210处,队列组件148可确定分配给订户110用于将游戏流送到玩家112的客户端装置114的可用VM实例1026。队列组件148可(例如,从数据存储库134)访问流送实例数据236,以便在框1210处确定可用VM实例1026。在一些实施方案中,在框1210处,队列组件148可进行调用(例如,API调用)以获得可用流送实例1026(或与其有关的流送实例数据236)。如本文所述,可为订户110分配位于不同区域的多个VM实例1026作为对服务提供商网络1002的游戏流送服务1006的订阅的一部分。因此,在框1210处执行的操作可包括至少确定分配给订户110的第一VM实例1026(1)(1)(在第一区域中),并且确定分配给订户110的第二VM实例1026(2)(1)(在第二区域中)。另外,在框1210处识别的各种VM实例1026可通过不同的性能度量来表征,诸如延迟、容量、当前利用率等。例如,第一VM实例1026(1)(1)可向与请求1028相关联的玩家112的客户端装置114提供第一延迟,第二VM实例1026(2)(2)可向与请求1028相关联的玩家112的客户端装置114提供第二延迟,以此类推,具体取决于可用流送实例1026的数量。又如,在框1210处确定的可用VM实例1026可根据可用容量和/或当前资源利用率而变化。例如,第一VM实例1026(1)(1)可运行一个进程,并且第二VM实例1026(2)(1)可运行多个(例如,四个)进程。这可意味着不同的实例1026可具有不同的容量,其中运行单个进程的VM实例1026(1)(1)可能够在游戏流送期间提供具有相对较少抖动的最敏捷响应,并且同时运行多个进程的VM实例1026(2)(1)可具有较少的容量来将游戏流送到客户端装置114,但它可能够提供较低的成本来用于作为对应的游戏会话的一部分而流送该游戏(例如,以相对较低的帧速率、相对较低的分辨率等)。
在1212处,队列组件148可至少部分地基于在框1204处确定的游戏流送请求1028的属性306来确定值238。在一些实施方案中,在框1212处可使用流送实例分配算法215来确定值238,如本文所述。流送实例分配算法215可以是评估一个或多个规则1132的基于规则的算法。例如,基于规则的算法215可评估玩家112是否经由游戏流送服务1006在一段时间内玩了超过阈值的游戏数量,以及/或者玩家112中的任何一者是否经由游戏流送服务1006在这段时间内花费了超过阈值的金钱量,和类似的规则。因此,可在框1212处基于属性306来评估一个或多个规则。附加地或另选地,流送实例分配算法215可以是基于机器学习的算法,其将属性306作为输入1128提供给经训练的机器学习模型1134,如本文所述。经训练的机器学习模型1134的输出1130可以是框1212处的一个或多个值238。在一些实施方案中,在框1212处,可至少部分地基于在流送实例数据236中指定的可用流送实例1026的特性来确定值238,诸如包括但不限于可用VM实例1026相对于玩家112的客户端装置114的延迟324、可用VM实例1026的容量326(例如,同时运行的进程132的数量,或一些其他利用度量)、可用VM实例1026的成本327等的特性。
在1214处,队列组件148可确定多个值238,在框1210处确定的每个可用VM实例1026对应一个值238。例如,队列组件148可基于属性306确定与第一VM实例1026(1)(1)相关联的第一值238、与第二VM实例1026(2)(1)相关联的第二值238,以及可能用于附加的VM实例1026的附加的值238。这里,第一值238可指示用于将第一VM实例1026(1)(1)分配给游戏流送请求1028的第一偏好,并且第二值238可指示用于将第二VM实例1026(2)(1)分配给游戏流送请求1028的第二偏好,其中第二偏好可以是更强或更弱的偏好,或者与第一偏好相同的偏好(如果多个值238相等的话)。
在1216处,队列组件148可至少部分地基于在框1212处确定的值238来选择VM实例1026(例如,第一VM实例1026(1)(1)或第二VM实例1026(2)(1))作为所选VM实例1026。框1216处的选择可至少部分地基于在框1214处确定的多个值之间的比较(例如,用于第一VM实例1026(1)(1)的第一值238与用于第二VM实例(2)(1)的第二值238之间的比较)。例如,如果第一值238大于第二值238,则队列组件148可选择与较大的第一值238相关联的VM实例1026。框1216处的选择可基于可用VM实例102的编队特性(例如,性能度量)之间的比较(例如,第一VM实例1026(1)(1)向玩家112的客户端装置114提供的第一延迟与第二VM实例1026(2)(1)向玩家112的客户端装置114提供的第二延迟之间的比较)。因此,在框1216处,队列组件148可确定多个VM实例1026的延迟(和/或其他编队/实例特性,诸如容量(和/或其他性能度量)、成本等),诸如第一VM实例1026(1)(1)向玩家112的客户端装置114提供的第一延迟,第二VM实例1026(2)(1)向玩家112的客户端装置114提供的第二延迟,以及可能的附加延迟,具体取决于所评估的VM实例1026的数量。如果第一延迟小于第二延迟,则队列组件148可选择与较低延迟(或较高延迟,具体取决于基于值的流送实例分配算法215如何配置)相关联的VM实例1026。在一些实施方案中,在框1212处确定的值238可至少部分地基于指定每个可用VM实例1026的实例特性的流送实例数据236。以这种方式,在框1216处的VM实例1026的选择可基于值238,该值又基于可用VM实例1026的特性(例如,延迟、容量、成本等)。
在1218处,队列组件148可至少部分地基于值238来选择多个可用配置中的配置作为所选配置。例如,队列组件148可在以不同帧速率(例如,30FPS、15FPS等)和/或以不同分辨率(例如,1080P、4K等)将游戏流送到客户端装置114之间进行选择。因此,框1218处的选择可涉及选择多个可用帧速率中的帧速率作为所选帧速率,和/或选择多个可用分辨率中的分辨率作为所选分辨率,等等。
如图5和图12中的页面外标记“A”所示,过程1200可从框1218继续到过程500的框502,在该处使传入游戏会话请求排队。换句话说,过程1200的框1202到1218可表示多阶段过程的第一阶段,其中流送实例1026被分配给游戏流送请求1028,随后,过程500可表示该多阶段过程的第二阶段,其中涉及与游戏流送请求1028相关联的玩家112的游戏会话136被放置用于托管与一个或多个其他玩家112的多玩家游戏会话。一旦所选编队138的VM实例开始执行以托管游戏会话136,过程500就可从框520继续到过程1200的框1220,如图5和图12中的页面外标记“B”所示。
在1220处,作为涉及玩家112和一个或多个其他玩家112的游戏会话136的一部分,游戏流送服务1006可将游戏流送到玩家112的客户端装置114。框1220处的流送可包括执行所选VM实例1026以渲染帧,利用所选配置(例如,以所选帧速率、所选分辨率等)将该帧发送到客户端装置114,以及从客户端装置114接收控制输入数据。同时,可使用选择用于游戏会话放置的所选编队138的VM实例126来托管对应的游戏会话136,如本文所述。
鉴于以下条项,还可以理解前述内容:
1.一种方法,包括:
将游戏会话请求放置在队列中,所述游戏会话请求与服务提供商网络的订户相关联;
访问属性数据以确定:
与所述游戏会话请求相关联的玩家的玩家属性,其中所述玩家属性至少部分地基于所述玩家的先前玩法;和
对应于所述游戏会话请求的游戏的游戏属性,其中所述游戏属性包括游戏模式、游戏情境或游戏背景中的至少一者;
访问编队数据以确定被分配给所述订户的虚拟机(VM)实例的可用编队,所述可用编队至少包括第一区域中的第一编队和第二区域中的第二编队,所述第一编队向所述玩家提供第一平均延迟并且所述第二编队向所述玩家提供第二平均延迟;
基于所述玩家属性和所述游戏属性确定:
与所述第一编队相关联的第一值,所述第一值指示用于将对应于所述游戏会话请求的游戏会话放置在所述第一编队上的第一偏好;和
与所述第二编队相关联的第二值,所述第二值指示用于将所述游戏会话放置在所述第二编队上的第二偏好;
基于所述第一值大于所述第二值,选择所述第一编队作为所选编队;以及
引起所述游戏会话被托管在所述所选编队的VM实例上。
2.根据条项1所述的方法,还包括:
基于所述第一值或所述第二值中的至少一者选择以下中的至少一者:
多个可用帧速率中的帧速率作为所选帧速率;或
多个可用分辨率中的分辨率作为所选分辨率,
其中所述游戏会话被托管的所述引起包括引起所述游戏会话以所述所选帧速率或所述所选分辨率被托管。
3.根据条项1或2所述的方法,还包括:
从与所述订户相关联的订户装置接收用于定制用于放置游戏会话的会话放置算法的数据;以及
基于所述数据为所述订户创建定制的会话放置算法,
其中所述第一值和所述第二值的所述确定基于所述定制的会话放置算法。
4.根据条项1至3中任一项所述的方法,其中所述第一值和所述第二值的所述确定包括通过以下操作来基于所述玩家属性评估一个或多个规则:
将所述玩家属性作为输入提供给计算所述第一值的第一函数;以及
将所述玩家属性作为输入提供给计算所述第二值的第二函数。
5.一种方法,包括:
确定与游戏会话请求相关联的玩家的一个或多个玩家属性,所述一个或多个玩家属性至少部分地基于所述玩家的先前玩法,并且所述游戏会话请求与服务提供商网络的订户相关联;
确定分配给所述订户的第一虚拟机(VM)实例编队;
确定分配给所述订户的第二VM实例编队;
至少部分地基于所述一个或多个玩家属性来确定值;
至少部分地基于所述值,选择所述第一编队或所述第二编队作为所选编队;以及
引起对应于所述游戏会话请求的游戏会话被托管在所述所选编队的VM实例上。
6.根据条项5所述的方法,其中所述值的所述确定包括确定多个值,所述多个值包括:
与所述第一编队相关联的第一值,所述第一值指示用于将所述游戏会话放置在所述第一编队上的第一偏好;和
与所述第二编队相关联的第二值,所述第二值指示用于将所述游戏会话放置在所述第二编队上的第二偏好,
其中所述选择至少部分地基于所述第一值与所述第二值之间的比较。
7.根据条项5或6所述的方法,还包括:
至少部分地基于所述值,选择以下中的至少一者:
多个可用帧速率中的帧速率作为所选帧速率;或
多个可用分辨率中的分辨率作为所选分辨率,
其中所述游戏会话被托管的所述引起包括引起所述游戏会话以所述所选帧速率或所述所选分辨率被托管。
8.根据条项5至7中任一项所述的方法,其中对于所述玩家中的各个玩家,所述一个或多个玩家属性包括以下中的至少一者:
玩家标识符(ID);
在一段时间内玩过的游戏的数量;
所述玩家是否是付费玩家;
所述玩家在所述一段时间内花费的金钱量;
玩游戏花费的时间量;或
一天中玩游戏的一个或多个时间。
9.根据条项5至8中任一项所述的方法,还包括确定对应于所述游戏会话请求的游戏的一个或多个游戏属性,并且其中:
所述值的所述确定还至少部分地基于所述一个或多个游戏属性;并且
所述一个或多个游戏属性包括以下中的至少一者:
是以锦标赛模式还是以休闲模式玩游戏;
锦标赛的阶段,或
所述游戏是否要实时流送。
10.根据条项5至9中任一项所述的方法,其中所述值的所述确定包括以下中的至少一者:
将所述一个或多个玩家属性作为输入提供给计算所述值的函数;或者
将所述一个或多个玩家属性作为输入提供给生成所述值作为输出的经训练的机器学习模型。
11.根据条项5至10中任一项所述的方法,还包括:
从与所述订户相关联的订户装置接收用于定制用于放置游戏会话的会话放置算法的数据;以及
至少部分地基于所述数据为所述订户创建定制的会话放置算法,
其中所述值的所述确定至少部分地基于所述定制的会话放置算法。
12.根据条项11所述的方法,其中所述数据包括以下中的至少一者:
一个或多个定制的会话放置规则;
定制的机器学习模型;或
分配给所述一个或多个玩家属性中的各个玩家属性的一个或多个权重。
13.根据条项5至12中任一项所述的方法,还包括:
确定所述第一编队向与所述游戏会话请求相关联的玩家提供的第一平均延迟;以及
确定所述第二编队向所述玩家提供的第二平均延迟,
其中所述选择至少部分地基于所述第一平均延迟与所述第二平均延迟之间的比较。
14.根据条项5至13中任一项所述的方法,还包括:
确定所述第一编队的第一容量;以及
确定所述第二编队的第二容量,
其中所述选择至少部分地基于所述第一容量与所述第二容量之间的比较。
15.根据条项5至14中任一项所述的方法,还包括:
确定所述第一编队的所述VM实例的第一成本;以及
确定所述第二编队的所述VM实例的第二成本,
其中所述选择至少部分地基于所述第一成本与所述第二成本之间的比较。
16.一种系统,包括:
一个或多个处理器;和
非暂态计算机可读介质,所述非暂态计算机可读介质存储计算机可执行指令,所述指令在由所述一个或多个处理器执行时使所述系统:
确定与游戏会话请求相关联的玩家的一个或多个玩家属性,所述一个或多个玩家属性至少部分地基于所述玩家的先前玩法,并且所述游戏会话请求与服务提供商网络的订户相关联;
确定分配给所述订户的第一虚拟机(VM)实例编队;
确定分配给所述订户的第二VM实例编队;
至少部分地基于所述一个或多个玩家属性来确定值;
至少部分地基于所述值,选择所述第一编队或所述第二编队作为所选编队;以及
引起对应于所述游戏会话请求的游戏会话被托管在所述所选编队的VM实例上。
17.根据条项16所述的系统,其中确定所述值包括确定多个值,所述多个值包括:
与所述第一编队相关联的第一值,所述第一值指示用于将所述游戏会话放置在所述第一编队上的第一偏好;和
与所述第二编队相关联的第二值,所述第二值指示用于将所述游戏会话放置在所述第二编队上的第二偏好,
其中选择所述第一编队或所述第二编队作为所述所选编队至少部分地基于所述第一值与所述第二值之间的比较。
18.根据条项16或17所述的系统,其中对于所述玩家中的各个玩家,所述一个或多个玩家属性包括以下中的至少一者:
玩家标识符(ID);
在一段时间内玩过的游戏的数量;
所述玩家是否是付费玩家;
所述玩家在所述一段时间内花费的金钱量;
玩游戏花费的时间量;或
一天中玩游戏的一个或多个时间。
19.根据条项16至18中任一项所述的系统,其中所述计算机可执行指令在由所述一个或多个处理器执行时进一步使所述系统:
至少部分地基于所述值,选择多个可用配置中的配置作为所选配置,
其中引起所述游戏会话被托管包括引起所述游戏会话利用所述所选配置被托管。
20.根据条项16至19中任一项所述的系统,其中所述所选配置包括多个可用帧速率中的所选帧速率,并且其中所述游戏会话被托管的所述引起包括引起所述游戏会话以所述所选帧速率被托管。
21.一种方法,包括:
将对应于游戏的游戏流送请求放置在队列中,所述游戏流送请求与服务提供商网络的订户相关联;
访问属性数据以确定:
与所述游戏流送请求相关联的玩家的玩家属性,其中所述玩家属性至少部分地基于所述玩家的先前玩法;和
所述游戏的游戏属性,其中所述游戏属性包括游戏模式、游戏情境或游戏背景中的至少一者;
访问流送实例数据以确定分配给所述订户的用于将所述游戏流送到所述玩家的客户端装置的可用虚拟机(VM)实例,所述可用VM实例至少包括向所述客户端装置提供第一延迟的第一VM实例和向所述客户端装置提供第二延迟的第二VM实例;
基于所述玩家属性和所述游戏属性确定:
与所述第一VM实例相关联的第一值,所述第一值指示用于将所述第一VM实例分配给所述游戏流送请求的第一偏好;和
与所述第二VM实例相关联的第二值,所述第二值指示用于将所述第二VM实例分配给所述游戏流送请求的第二偏好;以及
基于所述第一值大于所述第二值,选择所述第一VM实例作为用于将所述游戏流送到所述客户端装置的所选VM实例。
22.根据条项21所述的方法,还包括:
确定与游戏会话请求相关联的附加玩家的附加玩家属性,所述游戏会话请求与所述订户和所述玩家相关联;
确定分配给所述订户的第一VM实例编队;
确定分配给所述订户的第二VM实例编队;
至少部分地基于所述玩家属性和所述附加玩家属性来确定第三值;
基于所述第三值,选择所述第一编队或所述第二编队作为所选编队;以及
引起对应于所述游戏会话请求的游戏会话被托管在所述所选编队的VM实例上。
23.根据条项22所述的方法,还包括通过执行所述所选VM实例以渲染帧并将所述帧发送到所述客户端装置来将所述游戏流送到所述客户端装置。
24.根据条项21至23中任一项所述的方法,其中所述第一值和所述第二值的所述确定包括通过以下操作来基于所述玩家属性评估一个或多个规则:
将所述玩家属性作为输入提供给计算所述第一值的第一函数;以及
将所述玩家属性作为输入提供给计算所述第二值的第二函数。
25.一种方法,包括:
确定与对应于游戏的游戏流送请求相关联的玩家的一个或多个玩家属性,所述一个或多个玩家属性至少部分地基于所述玩家的先前玩法,并且所述游戏流送请求与服务提供商网络的订户相关联;
确定分配给所述订户的用于将所述游戏流送到所述玩家的客户端装置的第一虚拟机(VM)实例;
确定分配给所述订户的用于将所述游戏流送到所述客户端设备的第二VM实例;
至少部分地基于所述一个或多个玩家属性来确定值;以及
至少部分地基于所述值,选择所述第一VM实例或所述第二VM实例作为用于将所述游戏流送到所述客户端装置的所选VM实例。
26.根据条项25所述的方法,还包括通过执行所述所选VM实例以渲染帧并将所述帧发送到所述客户端装置来将所述游戏流送到所述客户端装置。
27.根据条项26所述的方法,还包括至少部分地基于所述值,选择以下中的至少一者:
多个可用帧速率中的帧速率作为所选帧速率;或
多个可用分辨率中的分辨率作为所选分辨率,
其中所述游戏到所述客户端装置的所述流送包括以所述所选帧速率或所述所选分辨率流送所述游戏。
28.根据条项25至27中任一项所述的方法,还包括:
确定与游戏会话请求相关联的附加玩家的一个或多个附加玩家属性,所述游戏会话请求与所述订户和所述玩家相关联;
确定分配给所述订户的第一VM实例编队;
确定分配给所述订户的第二VM实例编队;
至少部分地基于所述一个或多个玩家属性和所述一个或多个附加玩家属性来确定第二值;
至少部分地基于所述第二值,选择所述第一编队或所述第二编队作为所选编队;以及
引起对应于所述游戏会话请求的游戏会话被托管在所述所选编队的VM实例上。
29.根据条项25至28中任一项所述的方法,其中所述值的所述确定包括确定多个值,所述多个值包括:
与所述第一VM实例相关联的第一值,所述第一值指示用于将所述第一VM实例分配给所述游戏流送请求的第一偏好;和
与所述第二VM实例相关联的第二值,所述第二值指示用于将所述第二VM实例分配给所述游戏流送请求的第二偏好,
其中所述选择至少部分地基于所述第一值与所述第二值之间的比较。
30.根据条项25至29中任一项所述的方法,其中所述一个或多个玩家属性包括以下中的至少一者:
玩家标识符(ID);
在一段时间内玩过的游戏的数量;
所述玩家是否是付费玩家;
所述玩家在所述一段时间内花费的金钱量;
玩游戏花费的时间量;或
一天中玩游戏的一个或多个时间。
31.根据条项25至30中任一项所述的方法,还包括确定所述游戏的一个或多个游戏属性,并且其中:
所述值的所述确定还至少部分地基于所述一个或多个游戏属性;并且
所述一个或多个游戏属性包括以下中的至少一者:
是以锦标赛模式还是以休闲模式玩所述游戏;
锦标赛的阶段,或
所述游戏是否要实时流送。
32.根据条项25至31中任一项所述的方法,其中所述值的所述确定包括以下中的至少一者:
将所述一个或多个玩家属性作为输入提供给计算所述值的函数;或者
将所述一个或多个玩家属性作为输入提供给生成所述值作为输出的经训练的机器学习模型。
33.根据条项25至32中任一项所述的方法,还包括:
确定所述第一VM实例向所述客户端装置提供的第一延迟;
以及
确定所述第二VM实例向所述客户端装置提供的第二延迟,
其中所述选择至少部分地基于所述第一延迟与所述第二延迟之间的比较。
34.根据条项25至33中任一项所述的方法,还包括:
确定所述第一VM实例的第一容量;以及
确定所述第二VM实例的第二容量,
其中所述选择至少部分地基于所述第一容量与所述第二容量之间的比较。
35.根据条项25至34中任一项所述的方法,还包括:
确定所述第一VM实例的第一成本;以及
确定所述第二VM实例的第二成本,
其中所述选择至少部分地基于所述第一成本与所述第二成本之间的比较。
36.一种系统,包括:
一个或多个处理器;和
非暂态计算机可读介质,所述非暂态计算机可读介质存储计算机可执行指令,所述指令在由所述一个或多个处理器执行时使所述系统:
确定与对应于游戏的游戏流送请求相关联的玩家的一个或多个玩家属性,所述一个或多个玩家属性至少部分地基于所述玩家的先前玩法,并且所述游戏流送请求与服务提供商网络的订户相关联;
确定分配给所述订户的用于将所述游戏流送到所述玩家的客户端装置的第一虚拟机(VM)实例;
确定分配给所述订户的用于将所述游戏流送到所述客户端设备的第二VM实例;
至少部分地基于所述一个或多个玩家属性来确定值;以及
至少部分地基于所述值,选择所述第一VM实例或所述第二VM实例作为用于将所述游戏流送到所述客户端装置的所选VM实例。
37.根据条项36所述的系统,所述计算机可执行指令在由所述一个或多个处理器执行时进一步使所述系统通过执行所述所选VM实例以渲染帧并将所述帧发送到所述客户端装置来将所述游戏流送到所述客户端装置。
38.根据条项37所述的系统,其中所述计算机可执行指令在由所述一个或多个处理器执行时进一步使所述系统:
至少部分地基于所述值,选择多个可用配置中的配置作为所选配置,
其中将所述游戏流送到所述客户端装置包括利用所述所选配置流送所述游戏。
39.根据条项36至38中任一项所述的系统,所述计算机可执行指令在由所述一个或多个处理器执行时进一步使所述系统:
确定与游戏会话请求相关联的附加玩家的一个或多个附加玩家属性,所述游戏会话请求与所述订户和所述玩家相关联;
确定分配给所述订户的第一VM实例编队;
确定分配给所述订户的第二VM实例编队;
至少部分地基于所述一个或多个玩家属性和所述一个或多个附加玩家属性来确定第二值;
至少部分地基于所述第二值,选择所述第一编队或所述第二编队作为所选编队;以及
引起对应于所述游戏会话请求的游戏会话被托管在所述所选编队的VM实例上。
40.根据条项36至39中任一项所述的系统,其中所述一个或多个玩家属性包括以下中的至少一者:
玩家标识符(ID);
在一段时间内玩过的游戏的数量;
所述玩家是否是付费玩家;
所述玩家在所述一段时间内花费的金钱量;
玩游戏花费的时间量;或
一天中玩游戏的一个或多个时间。
虽然相对于特定实施例描述了前面的发明,但是应当理解,本发明的范围不限于这些特定实施例。由于为适应特定的操作要求和环境而改变的其它修改和改变对本领域技术人员将是显而易见的,因此本发明不被认为限于为公开目的而选择的实例,并且涵盖了不构成偏离本发明的真实精神和范围的所有改变和修改。
尽管本申请描述了具有特定结构特征和/或方法动作的实施方案,但是应当理解,权利要求书不一定限于所描述的特定特征或动作。相反,特定特征和行为仅仅说明落在本申请的权利要求的范围内的一些实施方案。
Claims (15)
1.一种方法,包括:
确定与游戏会话请求相关联的玩家的一个或多个玩家属性,所述一个或多个玩家属性至少部分地基于所述玩家的先前玩法,并且所述游戏会话请求与服务提供商网络的订户相关联;
确定分配给所述订户的虚拟机(VM)实例的第一编队;
确定分配给所述订户的VM实例的第二编队;
至少部分地基于所述一个或多个玩家属性来确定值;
至少部分地基于所述值,选择所述第一编队或所述第二编队作为所选编队;以及
使得对应于所述游戏会话请求的游戏会话被托管在所述所选编队的VM实例上。
2.根据权利要求1所述的方法,其中确定所述值包括:确定多个值,所述多个值包括:
与所述第一编队相关联的第一值,所述第一值指示用于将所述游戏会话放置在所述第一编队上的第一偏好;和
与所述第二编队相关联的第二值,所述第二值指示用于将所述游戏会话放置在所述第二编队上的第二偏好,
其中所述选择至少部分地基于所述第一值与所述第二值之间的比较。
3.根据权利要求1或2所述的方法,还包括:
至少部分地基于所述值,选择以下中的至少一者:
多个可用帧速率中的帧速率作为所选帧速率;或
多个可用分辨率中的分辨率作为所选分辨率,
其中使得所述游戏会话被托管包括:使得所述游戏会话以所述所选帧速率或所述所选分辨率被托管。
4.根据权利要求1至3中任一项所述的方法,其中对于所述玩家中的各个玩家,所述一个或多个玩家属性包括以下中的至少一者:
玩家标识符(ID);
在一段时间内玩过的游戏的数量;
所述玩家是否是付费玩家;
所述玩家在所述一段时间内花费的金钱量;
玩游戏花费的时间量;或
一天中玩游戏的一个或多个时间。
5.根据权利要求1至4中任一项所述的方法,还包括:确定对应于所述游戏会话请求的游戏的一个或多个游戏属性,并且其中:
确定所述值还至少部分地基于所述一个或多个游戏属性;并且
所述一个或多个游戏属性包括以下中的至少一者:
是以锦标赛模式还是以休闲模式玩游戏;
锦标赛的阶段,或
所述游戏是否要实况流送。
6.根据权利要求1至5中任一项所述的方法,其中确定所述值包括以下中的至少一者:
将所述一个或多个玩家属性作为输入提供给计算所述值的函数;或
将所述一个或多个玩家属性作为输入提供给生成所述值作为输出的经训练的机器学习模型。
7.根据权利要求1至6中任一项所述的方法,还包括:
从与所述订户相关联的订户设备接收用于定制用于放置游戏会话的会话放置算法的数据;以及
至少部分地基于所述数据为所述订户创建定制的会话放置算法,
其中确定所述值至少部分地基于所述定制的会话放置算法。
8.根据权利要求1至7中任一项所述的方法,还包括:
确定所述第一编队向与所述游戏会话请求相关联的玩家提供的第一平均延迟;以及
确定所述第二编队向所述玩家提供的第二平均延迟,
其中所述选择至少部分地基于所述第一平均延迟与所述第二平均延迟之间的比较。
9.一种方法,包括:
确定与对应于游戏的游戏流送请求相关联的玩家的一个或多个玩家属性,所述一个或多个玩家属性至少部分地基于所述玩家的先前玩法,并且所述游戏流送请求与服务提供商网络的订户相关联;
确定分配给所述订户的用于将所述游戏流送到所述玩家的客户端设备的第一虚拟机(VM)实例;
确定分配给所述订户的用于将所述游戏流送到所述客户端设备的第二VM实例;
至少部分地基于所述一个或多个玩家属性来确定值;以及
至少部分地基于所述值,选择所述第一VM实例或所述第二VM实例作为用于将所述游戏流送到所述客户端设备的所选VM实例。
10.根据权利要求9所述的方法,还包括:通过执行所述所选VM实例以渲染帧并将所述帧发送到所述客户端设备来将所述游戏流送到所述客户端设备。
11.根据权利要求10所述的方法,还包括:至少部分地基于所述值,选择以下中的至少一者:
多个可用帧速率中的帧速率作为所选帧速率;或
多个可用分辨率中的分辨率作为所选分辨率,
其中将所述游戏流送到所述客户端设备包括:以所述所选帧速率或所述所选分辨率流送所述游戏。
12.根据权利要求9至11中任一项所述的方法,还包括:
确定与游戏会话请求相关联的附加玩家的一个或多个附加玩家属性,所述游戏会话请求与所述订户和所述玩家相关联;
确定分配给所述订户的VM实例的第一编队;
确定分配给所述订户的VM实例的第二编队;
至少部分地基于所述一个或多个玩家属性和所述一个或多个附加玩家属性来确定第二值;
至少部分地基于所述第二值,选择所述第一编队或所述第二编队作为所选编队;以及
使得对应于所述游戏会话请求的游戏会话被托管在所述所选编队的VM实例上。
13.根据权利要求9至12中任一项所述的方法,其中确定所述值包括确定多个值,所述多个值包括:
与所述第一VM实例相关联的第一值,所述第一值指示用于将所述第一VM实例分配给所述游戏流送请求的第一偏好;和
与所述第二VM实例相关联的第二值,所述第二值指示用于将所述第二VM实例分配给所述游戏流送请求的第二偏好,
其中所述选择至少部分地基于所述第一值与所述第二值之间的比较。
14.根据权利要求9至13中任一项所述的方法,其中所述一个或多个玩家属性包括以下中的至少一者:
玩家标识符(ID);
在一段时间内玩过的游戏的数量;
所述玩家是否是付费玩家;
所述玩家在所述一段时间内花费的金钱量;
玩游戏花费的时间量;或
一天中玩游戏的一个或多个时间。
15.根据权利要求9至14中任一项所述的方法,还包括:确定所述游戏的一个或多个游戏属性,并且其中:
确定所述值还至少部分地基于所述一个或多个游戏属性;并且
所述一个或多个游戏属性包括以下中的至少一者:
是以锦标赛模式还是以休闲模式玩所述游戏;
锦标赛的阶段,或
所述游戏是否要实况流送。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/834,743 US11504617B2 (en) | 2020-03-30 | 2020-03-30 | Value-based streaming instance assignment |
US16/834,743 | 2020-03-30 | ||
US16/834,528 US11583778B2 (en) | 2020-03-30 | 2020-03-30 | Value-based game session placements |
US16/834,528 | 2020-03-30 | ||
PCT/US2021/024679 WO2021202396A1 (en) | 2020-03-30 | 2021-03-29 | Value-based game session placements |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115605277A true CN115605277A (zh) | 2023-01-13 |
Family
ID=75562869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180024157.6A Pending CN115605277A (zh) | 2020-03-30 | 2021-03-29 | 基于值的游戏会话放置 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4126275A1 (zh) |
CN (1) | CN115605277A (zh) |
WO (1) | WO2021202396A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115776507A (zh) * | 2023-02-09 | 2023-03-10 | 广州三七极耀网络科技有限公司 | 一种基于会话链路的信息分发方法、装置、设备及介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8924560B2 (en) * | 2010-11-29 | 2014-12-30 | At&T Intellectual Property I, L.P. | Optimized game server relocation environment |
US10296391B2 (en) * | 2014-06-30 | 2019-05-21 | Microsoft Technology Licensing, Llc | Assigning a player to a machine |
US10456673B1 (en) * | 2017-11-17 | 2019-10-29 | Amazon Technologies, Inc. | Resource selection for hosted game sessions |
-
2021
- 2021-03-29 WO PCT/US2021/024679 patent/WO2021202396A1/en unknown
- 2021-03-29 EP EP21719814.2A patent/EP4126275A1/en active Pending
- 2021-03-29 CN CN202180024157.6A patent/CN115605277A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115776507A (zh) * | 2023-02-09 | 2023-03-10 | 广州三七极耀网络科技有限公司 | 一种基于会话链路的信息分发方法、装置、设备及介质 |
CN115776507B (zh) * | 2023-02-09 | 2023-05-26 | 广州三七极耀网络科技有限公司 | 一种基于会话链路的信息分发方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2021202396A1 (en) | 2021-10-07 |
EP4126275A1 (en) | 2023-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11504617B2 (en) | Value-based streaming instance assignment | |
US11583778B2 (en) | Value-based game session placements | |
US10296391B2 (en) | Assigning a player to a machine | |
US20210362049A1 (en) | Machine learning driven resource allocation | |
US20190373015A1 (en) | Blockchain tracking of virtual universe traversal results | |
Nae et al. | Dynamic resource provisioning in massively multiplayer online games | |
JP2021536324A (ja) | プレーヤーの対戦カード決定のための機械学習ベースの信頼スコア付け | |
US10967274B1 (en) | Dynamic management of processes executing on computing instances | |
US10688391B1 (en) | Massive multi-player compute | |
WO2014194695A1 (en) | Method and server for pvp team matching in computer games | |
US10894215B1 (en) | Matching players for networked gaming applications | |
US11307885B1 (en) | Identifying optimized computing resources for running workloads | |
US20220280867A1 (en) | Server load prediction and advanced performance measures | |
US10953328B1 (en) | Dynamic batching interval adjustment for game session creation | |
WO2023107283A1 (en) | Network storage game allocation based on artificial intelligence | |
CN115605277A (zh) | 基于值的游戏会话放置 | |
US11016816B1 (en) | Compute capacity allocation based on multi-factor analysis | |
US20140357374A1 (en) | Method and server for pvp team matching in computer games | |
US11504632B1 (en) | Dynamic adjustment of shard count for player matchmaking | |
Désiré et al. | QoS and QoE aware multi objective resource allocation algorithm for cloud gaming | |
US11465045B1 (en) | Maintaining session state using redundant servers | |
Jaya | Resource allocation in cloud gaming | |
US11956163B1 (en) | Dynamically allocating network resources according to workload prioritization based on engagement and resource requirements |
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 |