Server load prediction and advanced performance metrics

文档序号:310115 发布日期:2021-11-26 浏览:15次 中文

阅读说明:本技术 服务器负载预测和高级性能度量 (Server load prediction and advanced performance metrics ) 是由 G.诺顿 于 2020-03-12 设计创作,主要内容包括:用于为由云游戏系统执行的游戏调配资源的方法和系统包括访问多个用户关于游戏的在线互动。处理所述在线互动以对从在线社交交流中获得的讨论特征进行分类。使用所述经过分类的讨论特征生成预测游戏使用的模型。利用接收到的在线互动随时间推移更新所述模型。在数据中心调配用于所述游戏的资源。通过访问所述模型并识别所述调配中的调整来完成所述调配,所述调整是针对基于当前在线互动多个用户将出现的预期的使用率尖峰。(Methods and systems for provisioning resources for a game executed by a cloud gaming system include accessing online interactions of a plurality of users with respect to the game. The online interactions are processed to classify discussion features obtained from online social communications. Generating a model that predicts game usage using the classified discussion features. The model is updated over time with the received online interactions. Resources for the game are provisioned at a data center. The fitting is accomplished by accessing the model and identifying adjustments in the fitting that are directed to expected usage spikes that will occur for multiple users based on current online interactions.)

1. A method for provisioning resources for a game executed by a cloud gaming system, comprising,

accessing online interactions of a plurality of users with respect to a game, the online interactions being related to a social topic that includes the game, wherein one or more of the plurality of users access online interactions from an online social communication;

processing the online interaction to classify discussion features obtained from the online social communication;

generating a model of predicted game usage using the classified discussion features, the model updated over time based on the accessing of online interactions and processing of the online interactions; and

deploying resources for the game at a data center, the deploying comprising accessing the model to identify an adjustment in the resource deployment, the adjustment comprising increasing an amount of resources for the game at the data center when the model indicates that an expected usage spike will occur for the plurality of users based on current online interactions.

2. The method of claim 1, wherein the online social communication comprises an in-game interaction or an out-of-game interaction, the out-of-game interaction comprising a social media interaction or other interaction provided outside of the game.

3. The method of claim 1, wherein the social topic is identified using keywords in the online interaction.

4. The method of claim 1, wherein classifying the discussion feature comprises,

performing keyword analysis on the user-generated online interactions to identify keywords related to social topics;

identifying a distribution of the keywords in the online interaction, the keyword distribution defining the discussion feature;

determining an activity performed by the user in the game after the online interaction; and

classifying the discussion feature based on the distribution of the keywords and the activity performed in the game, the classification for determining a usage spike for the game.

5. The method of claim 1, wherein the online interaction is provided by the plurality of users prior to accessing the game, and the model is updated using the discussion features identified from the online interaction and activities related to the game performed by the plurality of users after the online interaction.

6. The method of claim 1, wherein provisioning resources for the game comprises identifying a geographic location where the usage spike will occur and provisioning the resources for the game at the data center associated with the geographic location.

7. The method of claim 1, wherein adapting resources for the game comprises,

identifying a particular subsystem of the resource required at the data center for the expected usage spike; and

deploying the particular subsystem at the data center in proportion to the expected usage spike.

8. The method of claim 1, wherein resources are provisioned according to a number of instances of the game to be executed, wherein the number of instances is proportional to the expected usage spike.

9. The method of claim 1, wherein predicting game usage of the game comprises associating patterns of occurrence of the discussion features in the current online interaction with corresponding patterns in the model, the patterns in the model used to map the discussion features to output of predicted game usage.

10. A resource usage prediction engine executing on a cloud gaming system for deploying gaming resources, comprising:

an interaction analyzer configured to access online interactions from online social communications of a plurality of users and process the online interactions in relation to a game to classify discussion features obtained from the online social communications;

a model trainer configured to generate a model of predicted game usage using the classified discussion features, the model trainer updating the model based on online interactions accessed and processed over time;

a usage spike predictor configured to access the model and predict game usage using the classified discussion features of the model; and

a resource allocation agent configured to provision resources for the game at a data center, the resource allocation agent configured to access the model to identify an adjustment in the resource provision, wherein the adjustment identifies an increase in an amount of resources for the game at the data center when the model indicates that an expected usage spike may occur based on a current online interaction.

11. The resource usage prediction engine of claim 10, in which the model trainer is configured to update the model using the current online interaction.

12. The resource usage prediction engine of claim 10, wherein the online social communication includes online interactions and offline interactions, the offline interactions including social media interactions and other interactions provided outside of the game.

13. The resource usage prediction engine of claim 12, wherein the interaction analyzer is configured to obtain and process the online interaction and the offline interaction to identify discussion features.

14. The resource usage prediction engine of claim 10, further comprising a usage identifier configured to identify a geographic location where the expected usage spike occurs and to generate a signal to the resource allocation agent to allocate the resource at the identified geographic location.

15. The resource usage prediction engine of claim 14, in which the usage identifier is further configured to identify particular resource subsystems within each of the geographic locations to be provisioned in proportion to the expected usage spikes.

Technical Field

The present disclosure relates to allocating resources for online gaming, and more particularly, to building an Artificial Intelligence (AI) model using information from user interactions and using the AI model to predict resource usage and allocate resources for online gaming.

Background

Online games, and in particular Massively Multiplayer Online (MMO) games, are accessed simultaneously by a large number of users via computer networks distributed over a wide geographic area. Accordingly, MMO games require a significant amount of resource coordination to execute the gaming logic of the MMO game in order to provide a satisfactory game playing experience for the user. To ensure that users located in different geographic locations access the online game, the online game is executed on the game cloud using the resources of the cloud gaming system. The user can connect to an online game executing on one or more servers of the cloud gaming system. An advantage of executing an online game on the game cloud is that the resources required to execute the game are centralized. However, as the number of users simultaneously playing online games increases, cloud gaming system resources are increasingly strained, thereby making it difficult to provide satisfactory quality of service to online game users.

To prevent resource strain and ensure that the user has the best game playing experience, cloud gaming systems may over-allocate more resources than actually needed. These resources are expensive and in large demand. Therefore, over-allocating resources results in unnecessary waste of resources and unnecessary costs due to some resources remaining idle and not being fully utilized. Allocating resources in an optimal manner on a cloud gaming system is extremely complex, as it is difficult to determine the need for such resources.

It is in this case that embodiments of the present disclosure arise.

Disclosure of Invention

Embodiments of the present disclosure relate to systems and methods for deploying system resources for games executed by a cloud gaming system. System resources are identified and deployed through the use of resource allocation models that provide information about when to launch instances of particular games and when to scale up or down resources to allow execution of instances of particular games. A resource allocation model is established and trained by adopting a machine learning algorithm. A server of the cloud game system processes online interactions received from multiple users of different games to generate and train a resource allocation model. Online interactions may include in-game interactions and out-of-game (i.e., out-of-game) interactions, such as social media interactions and the like. A resource usage prediction engine executing within a server of the cloud gaming system processes online interactions to identify social topics related to a game discussed therein, determines an order and frequency of occurrence of different social topics in the online interactions to identify discussion features, and classifies the discussion features identified from the online interactions, and generates a model of predicted game usage. A resource usage prediction engine (referred to herein simply as a "prediction engine") identifies and deploys resources based on predicted game usage. When a current online interaction is received, a resource usage prediction engine processes the current online interaction to identify discussion features, predicts game usage using the discussion features, and provides resources in proportion to the predicted game usage.

The model is updated with the current online interaction. When subsequent online interactions are received, the model is accessed to identify adjustments to the resource allocation and actively scale up or down the amount of resources of the game in proportion to the expected usage spikes.

Online interactions include in-game interactions and out-of-game interactions, such as social media interactions of users outside of a game. In addition to determining the usage requirements of the game, the prediction engine also determines the geographic location where the usage spikes are expected to occur and/or the particular subsystems that may be needed to meet the expected usage spikes. For example, the resource allocation model may be used to determine whether processing cores, graphics processors, memory, storage, communication bandwidth, etc., need to be scaled up or down to meet expected spikes.

A machine learning algorithm within the prediction engine generates a resource allocation model using online interactions of multiple users of multiple games collected from in-game interactions and out-of-game interactions of the cloud gaming system. The resource allocation model predicts game usage so that appropriate resources for the game may be provisioned at one or more data centers in one or more geographic locations. When additional online interactions are received, the prediction engine processes the additional online interactions and updates the resource allocation model. The updated resource allocation model identifies adjustments to the predicted game usage that are associated with adjusting the resource allocation in proportion to the expected usage spikes.

In one embodiment, a method for provisioning resources for a game executed by a cloud gaming system is disclosed. The method includes accessing online interactions of a plurality of users. The online interaction is related to a social topic that includes the game. One or more of the plurality of users access online interactions from an online social communication. The online interactions are processed to classify discussion features obtained from the online social communication. A model of predicted game usage is generated using the classified discussion features. The model is updated over time based on the accessed and processed online interactions. Deploying resources for the game at the data center, wherein deploying includes identifying an adjustment in deployment of the resources via the access model. The adjustment includes increasing an amount of resources for the game at the data center when the model indicates that an expected usage spike will occur for a plurality of users based on current online interactions. The deployment of resources is proportional to the expected usage spike.

In some implementations, the online social communication includes in-game interactions or out-of-game interactions. Out-of-game interactions include social media interactions or other interactions provided outside of the game.

In some implementations, social topics are identified using keywords in online interactions.

In some implementations, classifying the discussion features includes performing keyword analysis on the user-generated online interactions to identify keywords related to social topics. The distribution of keywords in the online interaction is used to define discussion features. Game-related activities performed by the user after the online interaction are determined, and discussion features are classified based on the distribution of keywords and the activities performed in the game. The classification is used to determine a usage spike for the game.

In some implementations, the online interaction is provided by multiple users prior to accessing the game. The model is updated using discussion features identified from the online interaction and activities associated with a game executed by a plurality of users after the online interaction.

In some implementations, the gaming resources are provisioned by identifying a geographic location where a usage spike will occur and provisioning the gaming resources at a data center associated with the geographic location.

In some embodiments, a particular subsystem of resources required at the data center for an expected usage spike is identified, and the particular subsystem is provisioned at the data center in proportion to the expected usage spike.

In some embodiments, the resources are allocated according to the number of game instances to be executed, where the number of instances is proportional to the expected usage spike.

In some embodiments, predicting game use includes associating patterns of occurrence of discussion features in the current online interaction with corresponding patterns in the model. The patterns in the model are used to map discussion features to output of predicted game usage.

In another embodiment, a resource usage prediction engine executing on a cloud gaming system for deploying gaming resources is disclosed. The resource usage prediction engine includes an interaction analyzer, a model trainer, a usage spike predictor, and a resource allocation agent. The interaction analyzer is configured to access online interactions from online social communications of a plurality of users and process the online interactions in relation to the game to classify discussion features obtained from the online social interactions. The model trainer is configured to generate a model of predicted game usage using the classified discussion features. The model trainer is further configured to update the model based on online interactions accessed and processed over time. The usage spike predictor is configured to access the model and predict game usage using the categorized discussion features of the model. The resource allocation agent is configured to provision resources for the game at the data center by accessing the model to identify an adjustment in the resource provisioning. The adjustment identifies increasing an amount of resources for the game at the data center when the model indicates that an expected usage spike may occur based on the current online interaction. The resource allocation agent is configured to allocate resources for the game in proportion to the expected usage spikes.

Other aspects of the disclosure will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the disclosure.

Drawings

The disclosure may best be understood by referring to the following description in conjunction with the accompanying drawings.

Fig. 1 illustrates a simplified physical view of a cloud gaming system for provisioning resources, according to one embodiment of the present disclosure.

FIG. 2 illustrates a simplified block diagram of a resource usage prediction engine executing within a cloud gaming server for deploying gaming resources according to one embodiment of the present disclosure.

FIG. 3 illustrates a graph of usage demand over time for a game or games according to one embodiment of the present disclosure.

Fig. 4 illustrates a system diagram of a cloud gaming system for executing an online game and providing game data frames to one or more client devices over a cloud gaming network, according to one embodiment of the present disclosure.

FIG. 5 illustrates the flow operations of a method for deploying online gaming resources using a resource allocation model according to one embodiment of the present disclosure.

FIG. 6 illustrates components of an example server computing device for building and training a resource allocation model (artificial intelligence (AI) model) using a model trainer, according to one embodiment of the disclosure.

Detailed Description

Although the following detailed description contains many specific details for the purpose of illustration, one of ordinary skill in the art will appreciate that many variations and modifications of the following details are within the scope of the disclosure. Accordingly, the statements made in the various aspects of the present disclosure as described below do not impose limitations, nor do they imply a loss of generality, to the claims that follow the specification.

In general, various embodiments of the present disclosure describe systems and methods for implementing machine learning algorithms to build resource allocation models (i.e., artificial intelligence models) using online interactions obtained from multiple users accessing different games executing on a cloud gaming system. A resource allocation model is used to predict game usage and determine that multiple users will experience expected usage spikes and allocate resources in time to successfully execute a game instance. The online interactions include in-game interactions and out-of-game interactions. In some implementations, the in-game interaction may include an interaction provided by the user when accessing the game from the cloud gaming system. For example, in-game interaction may be provided during gameplay of a game or during gameplay of different games available in a cloud gaming system. The out-of-game interaction may be provided outside of the game, in some embodiments outside of the cloud gaming system, and may include social media interaction or other forms of interaction, including but not limited to weblogs, emails, text messages, etc., provided using any interactive tools (e.g., applications, etc.) available to the user.

A user may set up their user account on a cloud gaming system to enable the user to access various applications and/or games available therein. The cloud gaming system may provide one or more interactive tools, such as in-game or inter-game messaging tools, etc., for users to interact with each other during play of one or more games or during viewing of game play by one or more players. In some implementations, the interaction tool may provide the user with the option to selectively share interactions with members of the user community or their social contacts or all users accessing the cloud gaming system. During or after setting up the user account, in some implementations, the user may link their one or more social media accounts and/or other interactive application accounts to their user account on the cloud gaming system so that the user may interact with other users using the interaction tool when accessing the cloud gaming system to play or view a game. Through the link, the cloud gaming system may access user online interactions provided through a social media application or other interactive application.

Online interactions generated by a plurality of users are stored in a post-social history data store that is accessible by the cloud gaming system and used to generate a resource allocation model. The resource allocation model provides information for identifying different topics discussed in each of the online interactions, identifying games associated with the online interactions, determining patterns of occurrence of the different topics in the online interactions of the different games to define discussion features, and categorizing the discussion features obtained from the online interactions. When a current online interaction is obtained from a plurality of users, the resource allocation model is used to relate discussion features defined by patterns of occurrence of social topics in the current online interaction to corresponding patterns in the resource allocation model. Relevance maps discussion features corresponding to relevant patterns of social topics in the resource allocation model to output that predicts game usage of the game. In some cases, the user's online interaction may spike when an event occurs or is scheduled for a game (e.g., release of a new version of a popular game, promotion, competition, etc.). These interactions are provided prior to accessing the game for gameplay. Some users may access the game for gameplay after the online interaction. Such interaction spikes and user activity related to the game after interaction are processed and a resource allocation model is generated. The information provided in the resource allocation model may be used to predict game usage. When a current online interaction is received from some users (i.e., users that have not accessed the game), the current online interaction is processed to identify discussion features defined by the order and distribution of social topics among the online interaction. The resource allocation model is accessed to determine predicted game usage such that game resources can be deployed in the data center in proportion to the predicted game usage. When the current online interaction indicates an expected usage spike, the resources committed for the game are adjusted by increasing the amount of resources for the game in proportion to the expected usage spike at the data center.

For example, online interactions may be related to new versions of games being published or scheduled to be published to a cloud gaming system, and the social topics discussed may be related to published events associated with a particular game. Discussion features may correspond to social topics, the frequency and order of distribution of social topics, the context of social topics, and the like. As the date of the release event approaches, a spike in the online interaction may be detected. Based on the discussion features identified in the current online interaction and based on the interaction spikes, a resource allocation model may be used to predict the likelihood of an expected usage spike of the game occurring. Resources may be provisioned in proportion to expected usage spikes such that sufficient resources are available to service access requests in the event that users providing online interaction access to game play.

The predicted game usage is determined based on online interactions provided by a plurality of users and game selection activities detected from some of the plurality of users subsequent to the online interactions. The expected usage spike is determined from current online interactions of the ones of the plurality of users using a resource allocation model prior to receiving a request from the ones of the plurality of users to select game play. The prediction engine actively allocates resources in proportion to the number of instances of the game being executed in anticipation that some of the plurality of users will select a game for gameplay. Additionally, in response to expressed interests from some of the plurality of users, the resource allocation model is further trained using current online interactions to adjust the predicted game usage.

Conventional approaches to system resource deployment result in either over-allocation or under-allocation of system resources by a Cloud Gaming System (CGS) because resources are being deployed when a need for such resources is detected at the CGS. This results in wasted resources or unnecessary delay for the user because the system resources are allocated according to the current demand. By predicting the usage requirements of a game based on the number of users currently representing interest in the game (determined by the current online interactions provided by some of the plurality of users for the game) and information provided in a resource allocation model generated using interactions from the plurality of users, and allocating resources for the game in a timely manner, optimal utilization of system resources and enrichment of user experience may be achieved. For example, based on information provided in the resource allocation model and based on current online interactions collected for a game, the cloud gaming system may predict when a usage spike for the game is expected and responsively advance provisioning of resources before a user is expected to access the game for gameplay.

The resource allocation model may also be used to determine a particular geographic location of expected usage spikes, such that multiple instances of a particular game may be instantiated in a data center located at or associated with the particular geographic location, and such instantiation is completed before any request to use game play is received.

With a general understanding of embodiments of the present invention, example details of various embodiments will now be described with reference to various figures.

FIG. 1 provides an overview of a cloud gaming system 300 for fitting instances and resources for a particular game, according to one embodiment. A plurality of user devices 100 access a Cloud Gaming System (CGS)300, social media applications, and other interactive applications over a network 200, such as the internet. A user device may be accessing CGS300 from a different geographic location. As shown in fig. 1, user device UD11、UD12、UD13Etc. are starting from geographic location 1, UD21From geographic location 2, UD31、UD32、UD33、UD34Etc. access the CGS300 from geographic location 3, and so on. The user device (i.e., client device) may be of any type having a processor, memory, LAN, wired, wireless, or 5G communication capability, and being portable or non-portableA client computing device of the type. For example, the client device may be a smartphone, mobile device, tablet computer, desktop computer, personal computer, or hybrid or other digital device that includes a monitor or touch screen having a portable appearance.

A client device with 5G communication capabilities may include a mobile device capable of connecting to a 5G network. In one embodiment, the 5G network is a digital cellular network in which the service area is divided into a plurality of "cells" (i.e., small geographic areas). Analog data generated at a mobile device is digitized and transmitted as radio waves to local antennas within the cell using frequency channels that can be reused in geographically separated cells. The local antenna is connected to the internet and telephone network by high bandwidth fiber or other similar wireless communication. 5G networks are capable of transmitting data at higher data rates because they communicate using higher frequency radio waves, thereby providing lower network latency.

The client device may run an operating system and include a network interface that provides access to various application programs (apps) available on servers in CGS300 over network 200, or may be a thin client having a network interface to communicate with servers that provide computing functionality. A user may access CGS300 using a user account and select an online game available at CGS300 for gameplay, where gameplay is controlled by the user using control options provided in the client device or using a controller communicatively connected to the client device.

In some implementations, various applications (e.g., online games) can be executed remotely on one or more servers of the cloud gaming system, and data from the executing application is streamed to the client device over the network 200. In other embodiments, the online game may be executed locally on the client device, and metadata from the executing online game is transmitted over the network 200 to the server to affect the game state. User-provided online interactions are used as training data for generating and training Artificial Intelligence (AI) models for predicting game usage and for providing instances and resources for online games prior to receiving a request to access online games for gameplay.

Cloud Gaming System (CGS)300 includes a network of backend servers 302 distributed over different geographic locations and configured to execute one or more instances of an online gaming application and/or other interactive applications. The back-end server 302 may be a game or application server configured to execute one or more instances of one or more game/interactive applications. For simplicity, reference will be made to a game server executing an online game application, but the embodiments disclosed herein may be extended to any other interactive application. The game server may be any type of server computing device available in a cloud gaming system, including but not limited to a stand-alone server, a server that is part of a server farm or data center, and the like. In addition, the game server may manage one or more virtual machines that support game processors that execute online game instances for users on the host.

The online game executed by the cloud gaming server 302 may be a Massively Multiplayer Online (MMO) game, and the cloud gaming server 302 may include a multiplayer distributed game engine communicatively connected to the game logic of the online game. In general, the game engine is a software layer that serves as the basis for games (e.g., MMO games) and provides a framework for developing online games. The game engine abstracts the details of the commonly relevant tasks required to execute each game (i.e., game engine tasks), while the online game developer provides the game logic that provides the details of how the online game is played. The game engine framework includes a plurality of reusable components for processing a plurality of functional portions (i.e., core features) of the online game that animate the online game. The basic core features processed by the game engine may include physics (e.g., collision detection, collision response, trajectory, gravity-based object movement, friction, etc.), graphics, audio, artificial intelligence, scripts, animations, networks, streaming media, optimizations, memory management, threads, localization support, and so forth. The reusable components include a process engine for processing core features identified for online gaming.

During gameplay of an online game, a game engine manages game logic for the online game, collects and transmits user inputs received from different client devices to the game logic, manages allocation and synchronization of functional parts of the game engine to optimally process game data generated by the game logic and generate game data frames, which are transmitted back to the client devices for rendering. The various game engines currently available provide different core functionality, and an appropriate game engine may be selected based on the functionality available to execute the online game.

The game logic analyzes the user input, affects game state of the online game based on the user input, manages saved data for each user playing the online game, and generates game data that is processed by the distributed game engine prior to being streamed to different client devices of the users during the MMO game session. The game state identifies the overall state of the online game at a particular point and is affected by the complexity of the gameplay of each player (i.e., the user participating in the gameplay of the game). The data saved by each user includes any game customizations that the user provides for online gaming. A multiplayer distributed game engine using game states provided by game logic can overlay/plug objects and characters into each game environment of players participating in an MMO game session. In some implementations, the game logic for each instance of the game may be executed on a server or multiple servers based on the configuration of the game logic.

In addition to providing user input to the MMO game, users can also communicate with each other during gameplay of the MMO game. The distributed game engine manages the online interaction of multiple users in addition to managing the allocation of core features during game play of the game. The online interaction is generated using interactive tools available to the online game and/or distributed game engine based on the way the user sets up their game account and interactive application account. The distributed game engine stores the online interactions in a different data repository and makes them available for use in generating and training AI models.

In some embodiments, the interaction tools are provided by a game engine, or game logic or game server, to allow users to interact with each other in each user's online game environment. In alternative embodiments, the game engine or game server may provide access to interactive tools or other interactive applications of social media to allow users playing or viewing an MMO game to interact with each other and/or other users playing or not playing the MMO game outside of the online game environment. Gameplay data for online interactions provided through different interactive tools/applications and for different games that affect game states for the different games is collected by a distributed game engine and stored in different data repositories.

For example, a distributed game engine executing on cloud game server 302 may store and retrieve different data related to game play and user interactions in different data stores, such as social media interaction data store 304, online interaction data store 306, user data history data store 308, to name a few. The distributed game engine may interact with social media interaction data store 304 to store and retrieve out-of-game interactions generated by multiple users (e.g., players or non-players) using interaction tools. The out-of-game interactions include social media interactions (i.e., interactions generated outside of the gaming environment using social media application tools) between players (i.e., users playing online games available in the cloud gaming system) and the players' social contacts, which may be other players or non-players (e.g., spectators or other users) playing the same game, playing different games. In some implementations, the out-of-game interactions can include other interactions generated by interaction tools other than social media tools. For example, an out-of-game interaction may be generated as an email, text message, web log, etc. between a player playing/spectator viewing the game play of the game and other users that are part of the community of users, where the interaction is generated using other interaction tools. In some implementations, a user can provide access to the user's social media and other online interactions by linking the user's social media account or other interaction account to their user account in the cloud game system.

Further, the distributed game engine may store and retrieve from the online interaction data store 306 in-game interactions generated by the user in the game environment when the user accesses the online game for viewing or playing. If a user (i.e., spectator) is watching a player's game play, the interaction may be an interaction between the spectator and the player. Such in-game interactions are generated using interactive tools provided in the game.

In some embodiments, the game engine and game logic instances are distributed across multiple servers in different geographic locations. The distributed game engine may process locally and concurrently game data generated by the game logic and online interactions generated by the user at the respective geographic locations, and synchronize the game data and online interactions with other servers within the cloud gaming system 300. In this manner, the distributed game engine allows for faster and efficient processing of game data and online interactions. In response to user input provided during gameplay of the game, game data output from the game logic and processed by the game engine instance is synchronized, assembled, encoded, and streamed to different client devices for rendering. A synchronization engine within the game engine may be used to synchronize the distribution of game data to different servers for processing and to manage the routing of processed game data between the servers. The processed online interactions are used to train a resource allocation model for predicting game usage. The generated resource allocation model may be maintained on a first server and trained using updates received from different servers.

The distributed game engine or game logic may store game play data and game states for all games played by different users at different geographic locations in the user data history data store 308. When a user plays an online game at CGS300, the game logic of the online game uses user input provided by the user during game play to affect the game state of the online game. Game state provides the complexity of game play for online games and is used to identify user metrics and game state metrics. In response to the user input, the game state for the online game is determined and updated to the user data history data store 308 so that the game state for the online game may be used by the distributed game engine at a central location. In some implementations, the game state can include a game ID, a game name, a game character, a game attribute, a game object attribute, a game object state, a graphic overlay, and the like. The game state of the game may also include the state of each device or module or system component of each server in the server network that is used to execute the game instance and communicate game data, where the state of a device or module or system component may include a CPU, GPU, state of memory, register values, program counter values, programmable DMA states, DMA buffer data, audio chip state, CD-ROM state, communication bandwidth used, allocated communication bandwidth, and the like.

In addition to game related data included in the game state, the game state may also include user saved data for users playing or viewing different online games. For example, the user-saved data for a user (i.e., a player or a non-player (i.e., a spectator)) may include the user's user profile and user-related information, the user's customization of the gaming objects, expertise level, player type, game instruments/bonus/credit/cash/amount of prizes won, amount of time to play or watch an online game, number of times to overcome challenges, number of attempts to overcome each challenge, and so forth. The game state may also include randomly generated features or AI overlaps or game complexity that are helpful in understanding game details associated with gameplay of the online game.

In addition, the distributed game engine may interact with game title data store 310, game event data store 312, and the like to retrieve game related data provided by different game title handlers, such as game developers, game promoters, game organizers, and the like. The distributed game engine may store the titles and game logic of all games available to users accessing the CGS300 in the game title data store 310. The game logic included in the game title data store 310 may be used to execute game instances of a game at one or more data centers in different geographic locations.

Game event data store 312 may be a store that: different events that have occurred for each game, events that have occurred for different game plans, details of such events, such as the number of days and times that such events have occurred or are scheduled to occur, the frequency of such events, and the like are recorded. Information related to game events may be updated based on information obtained from game developers, game promoters, event organizers, or from users (i.e., players or non-players), or from any other source. Some example events that may be planned for an online game may include newly released events, new (version) releases, promotions, competitions, and the like. Examples of events are provided as examples only and should not be considered limiting.

The game engine retrieves and uses information from the different data repositories to determine the number of online interactions provided by the user in relation to the game, the social topics discussed therein, determine the frequency and distribution patterns of the social topics in the online interactions to define discussion characteristics, and generate a resource allocation model using the discussion characteristics. Online social communications generated from one or more users access online interactions prior to the one or more users accessing the online game for play. When one or more users select a game for a gameplay activity after an online interaction, the resource allocation model is updated with data corresponding to the gameplay activity. The information provided in the resource allocation model may be used to predict game usage. For example, the resource allocation model may be used to determine which discussion features in the online interaction (i.e., the presence and pattern of presence of social topics) end up with the user accessing the game for gameplay. When a current online interaction is received from another user, a resource usage prediction engine (or simply "prediction engine") 302A within the game engine is used to identify discussion features occurring in the current online interaction and associate them with corresponding discussion features in the resource allocation model to determine whether the discussion features of the current online interaction translate into game play for the game. Based on the determination from the resource allocation model, prediction engine 302A may readily predict an expected usage spike for a game from users providing current online interaction in advance of the user's selection of the game for gameplay. Determining an expected usage spike using a resource allocation model may be used to scale up or down resources allocated for a game.

In addition to predicting usage spikes, prediction engine 302A also identifies particular geographic locations where such usage spikes are predicted to occur. Based on the predicted usage spike information, the resource allocation agent 302B sends a signal to a data center in a respective one of the geographic locations to responsively provision the online game instance in the corresponding one or more servers and dynamically adjust the relevant resources at the one or more servers or in the data center to achieve successful execution of the online game instance. The signal generated by the prediction engine 302A assists the resource allocation agent 302B in localizing the instantiation of the online game instance and deploying the resource to a particular geographic location of the predicted usage demand spike. In addition, the prediction engine may also indicate which subsystems of the resource need to be provisioned at a particular geographic location, such that only the indicated resource subsystems are provisioned at the particular geographic location, rather than all resources, which may result in a waste of expensive resources. The localized deployment of particular ones of the resources is completed in advance prior to receiving any request by the user for gameplay of the online game, thereby ensuring optimal use of the resources and timely deployment of the resources for use by the user.

Fig. 2 illustrates different modular engines/logic within a resource usage prediction engine (i.e., prediction engine) 302A for predicting usage spikes of available games within a cloud gaming system and responsively providing sufficient game instances and system resources in advance of receiving a game play request for a game. The deployment of instances and the adjustment of system resources is accomplished by anticipating a peak in usage of the game by a set of users based on current online interactions received from the set of users and information provided in a resource allocation model. It is contemplated that game instances and system resources will be deployed by the set of users for gameplay after the online interaction.

The resource allocation model is built using discussion features identified from in-game and out-of-game interactions accessed from online social communications of different games provided by different users. Some of the engines within prediction engine 302A include interaction analyzer 314, model trainer 316, usage spike prediction engine 318, and usage recognizer engine 320.

The distributed game engine collects the online social communications of multiple users and provides them to the interaction analyzer 314. The online social communication may include, for example, out-of-game interactions provided using social media tools. The interaction analyzer 314 analyzes the online interactions provided by the distributed game engine to define discussion features. The online interactions are maintained in one or more repositories and provided to interaction analyzer 314 to define discussion features. During analysis, interaction analyzer 314 identifies social topics discussed therein and defines discussion features using the frequency and distribution of the social topics. The discussion features are used to build a resource allocation model. In some implementations, the online social communication can include in-game interactions generated within the gaming environment using game logic of one or more games, or one or more interactive tools provided by a game server or game engine. In other implementations, the online social communication may include out-of-game interactions provided outside of the gaming environment using interaction tools, such as social media tools, email tools, weblog tools, text messaging tools, and the like. A user may provide access to an interaction tool for generating out-of-game interactions and access to online social communications that provide out-of-game interactions by linking their social media account or interactive application account to a corresponding user account on the cloud game system.

Interaction analyzer 314 identifies the social topics and context of the online interactions by performing keyword analysis on the content of each online interaction generated by the user. The online interaction may be associated with a single game or multiple games. The context may identify one or more events (e.g., new releases, promotions, competitions, etc.) occurring in the game. The frequency and distribution of social topics within the online interaction is used to identify discussion features that may be used to measure the user's explicit or implicit interest in the corresponding game. The context of the discussion and the identified discussion characteristics may be used to determine whether the interaction is favorable for the game. For example, an interaction that includes positive comments on the game may indicate that the respective user expresses interest in the game. In alternative examples, the interaction may include a discussion indicating a particular action that the user intends to perform for the game, such as an express intent to access or load a particular game application on their client device, etc., and such express intent may be related to a particular event (e.g., a new release, a new promotion, competition, etc.) scheduled to occur in the game.

Interaction analyzer 314 uses discussion features to predict active users and resource usage for the game. For example, the active user features may be based on the number of users expressing an interest in playing a game or discussing a game or accessing CGS300 to load a client version of a game application. The users expressing interest in the game may be determined by the goodness/comment provided by the respective users. Thus, by analyzing the context of the online interaction and discussion features, interaction analyzer 314 is able to properly weigh the active users. Interaction analyzer 314 uses the various social topic and discussion features identified from the online interactions to generate a vector, which is then used to build a resource allocation model.

The number of active users determined from the online interaction and the game type of the game may be used to determine a resource usage characteristic of the game. Resource usage may depend on the type of game and the type of active users expressing interest in the game. For example, for MMO games and/or high intensity games and/or graphics intensive games, resource usage is higher than for single player games and/or low intensity games. The high resource usage may be due to the amount of data to be generated and transmitted to the client device. Similarly, games that are in high demand (MMO games or single-user games) based on expressing the number of active users interested in game play may have a high resource usage, as opposed to games that are not in high demand. Further, the resource usage rate of a user expressing interest in game play of a game may be different than the resource usage rate of an audience expressing interest in subsequent game play of a player. Thus, resource usage may be determined based on the number and type of users expressing interest in the game and the type of game, and the interaction analyzer 314 has sufficient built-in logic to easily measure resource usage by analyzing online interactions.

In some implementations, the interaction analyzer 314 can assign a weight to each social topic and each discussion feature (e.g., frequency and distribution of social topics) identified from the online interactions and generate a game vector taking into account the respective weights of the social topic and discussion features that identify the context of the social topic included in the respective online interaction. In some implementations, the vector generated from the online interaction may include a bundle of zeros and ones, where each zero or one corresponds to a social topic or discussion feature identified in the online interaction. For example, interaction analyzer 314 may assign a weight of one to discussion features related to a particular action initiated by a user related to an online game (e.g., download an online game, launch a game console, discuss an issue event, etc.). Along similar lines, the interaction analyzer 314 may assign a one to a particular game type (e.g., an MMO game, or a high intensity game, or a computationally intensive game, or a game with a large number of graphics, etc.) when the game is discussed in online interaction, and assign a zero to a different game type (e.g., a single player game (e.g., a first person shooter game) or a lower intensity game or a game containing fewer graphics, etc.). Similarly, interaction analyzer 314 may also include activities and times at which respective users performed such activities after online interactions that included particular ones of the discussion features. For example, the interaction analyzer 314 may assign a one when a user selects a game to play at a peak time, a zero when a user selects a game to play at a non-peak time, a one when a user selects a game to play, and a zero when a user selects a game to view game play of other users, and so on. These expected or expressed user interests identified from the discussion features of the online interaction are used to determine the active users and resource usage (i.e., usage requirements) for a particular game. The vector generated by the online interactions of the plurality of users identifies patterns of occurrence of social topics (i.e., keywords) within the discussion features identified from the online interactions. It should be noted that online interactions may be generated by players, social contacts of players, a community of players, spectators, or other users, some of which may be generated during use of the game, while other online interactions may be generated prior to use of the game.

In addition to identifying various features from the online interactions, the interaction analyzer 314 may also identify an activity state 314B for each online game based on the activities performed by the user after generating the online interaction in response to the occurrence of certain events in the respective online game and the time range for performing such activities. These activities include selecting a game for gameplay, selecting a game to follow a player's gameplay, continuing gameplay of the game, and so forth. For example, when a user generates an online interaction for a game and then selects the game for gameplay or follows the gameplay of another user, the interaction analyzer 314 detects such activities of the user and uses the activities to generate and associate an activity state 314B for the game with the online interaction of the user. The active state 314B of the game may be based on the online interaction generated by the user and may include a game identifier of the game, a user identifier of a user providing the online interaction for the game, a user identifier of a user selecting the game for gameplay after the online interaction, a time at which the game for gameplay is selected after the online interaction, and a time interval between the online interaction and the gameplay activity.

Interaction analyzer 314 also specifies one or more predefined resource allocation criteria 314C. In some implementations, the predefined resource allocation criteria can specify when an adjustment to the number of instances of a particular game and/or a particular subsystem of system resources is needed, up or down. For example, the resource allocation criteria may specify an acceptable predefined percentage of usage spikes before resources should be provisioned, an acceptable load on each resource before resources may be scaled up or down, an acceptable speed of provisioning resources, and so on. Thus, when the predicted usage spike exceeds the existing usage demand by a predefined percentage, the number of instances and/or system resources of the game may need to be adjusted up or down. Features associated with active users and resource usage 314A, activity state 314B of the game, and resource allocation criteria 314C together form training data that is used by model trainer 316 to generate and train resource allocation models. The above-described data components of training data are provided as examples only, and other types of game-related data components may also be considered for training resource allocation model 316B.

Model trainer 316 within prediction engine 302A uses machine language algorithms (with artificial intelligence) to generate resource allocation models for predicting game usage of games in CGS 300. The generated resource allocation model is trained using discussion features from online interactions received from users over time. In some embodiments, the online interaction for generating and training the resource allocation model is associated with a game. In other embodiments, the online interactions used to generate and train the resource allocation model come from multiple games. The generated resource allocation model is used to predict the usage of each game so that appropriate signals can be transmitted to the resource allocation agent to responsively scale up or down the number of instances of the respective game and the different types of resources so that the game instances can be efficiently executed at the CGS 300. Further, the resource allocation model may be used to identify particular geographic locations where resources need to be allocated and/or particular resource subsystems that need to be scaled up or down in response to usage requirements, and the signal transmitted to the resource allocation agent may allocate resources/instances or particular resource subsystems in proportion to predicted game usage in the particular geographic locations.

The machine learning algorithm uses a classifier engine (i.e., classifier) 316A to generate and train a resource allocation model 316B. The classifier 316A is used to populate various nodes within the interconnected network of nodes of the resource allocation model 316B, where each node is associated with a different discussion feature identified from a vector generated for online interaction. The interrelationships between nodes are established to understand the complexity of the social topic patterns included in the game discussion feature to identify different usage outputs that satisfy the resource allocation criteria defined for each online game. The different outputs follow different relationship paths of the resource allocation model.

The classifiers are predefined to identify and classify particular discussion features of the online interaction to satisfy resource allocation criteria of the online game. The classifier used to build and train the resource allocation model learns to identify the complexity of discussion features (i.e., frequency and pattern of occurrence of social topics) and determines the impact of these discussion features on the results that satisfy the resource allocation criteria defined for the online game. The classifier can use online interactions associated with an online game or with multiple games to understand the complexity of the discussion feature. Thus, the discussion feature is updated to the nodes within the interconnect node layer, and the interconnect nodes are used to identify outputs that meet the resource allocation criteria. For simplicity, various embodiments of the discussion feature will be discussed with respect to populating nodes of the resource allocation model with the discussion feature of the game. However, embodiments may be extended to include discussion features of multiple games when populating nodes of a resource allocation model. The classifier uses cumulative discussions from multiple users to develop and train models.

As previously described, the resource allocation criteria may specify an acceptable percentage of usage demand for the provisioned resource, an acceptable load on each resource before the resource may be scaled up or down, an acceptable speed of provisioning the resource, and so forth. The resource allocation model may identify different outputs for different resource allocation criteria. The output identified from the resource allocation model is a social topic pattern defined for discussion features identified in the game online interaction. The theme patterns and the number of interactions for a particular game indicate the user's explicit or implicit interest in the particular game, which can be used to predict the usage spikes of the game.

The machine learning algorithm uses various discussion features identified from online interactions as inputs to the resource allocation model nodes, gradually updates the nodes using the discussion features identified from online interactions received from different users over time, and adjusts the outputs to meet the resource allocation criteria. Thus, the machine learning algorithm uses a reinforcement learning enhancement model by constructing the model using an initial set of online interactions of a plurality of users, learns the complexity of discussion features identified from the online interactions and how to use them to predict game usage, and uses the user's continuous online interactions received over time to reinforce the learning and enhancement model. The augmented model is used to adjust the prediction of game usage. The adjusted output indicates that over time, an expected usage spike is likely to occur for a game that provides users with online interaction. The adjusted output relates to an adjustment of a resource to be provisioned for the game, where the adjustment of the resource is proportional to an expected usage spike determined from online interactions received over time.

Each classifier 316A is predefined to identify and classify particular ones of the discussion features identified from the online interactions of different users. The classifier is configured to classify discussion features based on frequency and distribution of social topics, tune the model with persistent online interactions obtained from social communications provided over time to determine how the distribution (i.e., appearance pattern) of social topics relates to user selection of games for game play after persistent online interactions, identify a time span between user-provided game online interactions and user selection of games for game play activities. The correlation between discussion features and game selections for game play determines the predicted usage requirements of the game.

It should be noted that changes in usage requirements of a game may be event based, or may be based on usage rates, which may be topical, temporal, based on popularity of the game, or may be based on any other criteria. It should be noted that not all usage demand forecasts require an increase in the amount of resources deployed for the game. In some embodiments, the resources required to predict game usage may be less than the resources already deployed. In such embodiments, the predicted usage demand will indicate such a change, enabling the resource allocation agent 302B to scale down the provisioned resources in proportion to the predicted usage demand. Changes in usage requirements can be predicted from user-generated online interactions. The resource usage to meet the predicted usage demand may be determined based on the number of active users that have expressed an interest in the game, the type of game, the amount of game data to generate and/or transmit, the type of activity, and the like. For example, the type and amount of resources required to allow a player to play a game may be different than the type and amount of resources required to allow a user to view or track a player's gameplay. When a player plays a high-intensity game, the player may wish to provide game data with minimal delay and high resolution for the player to develop further action strategies and provide input. Thus, the resources that may be required to provide the player with game data may include fast processors, high resolution GPUs, fast communication connections and high bandwidth communications for streaming game data, and the like. On the other hand, low-intensity games or spectators do not require such resources for their resource usage potential rate.

When a current online interaction of the game is received from a plurality of users who have not accessed the game, the model trainer 316 uses discussion features of the current online interaction included in the training data and associates the discussion features with corresponding discussion features in the resource allocation model to identify corresponding outputs that satisfy the resource allocation criteria. The output of the resource allocation model is then used to consider current online interactions received from users (i.e., cumulative interactions from users) to determine whether the user providing the current online interaction is likely to expect a usage spike in the game. It should be noted that the current online interaction by the user received via the online social communication is provided by the user prior to receiving any selection activity from the user. Based on the expected usage spikes, the required resources (i.e., particular subsystems) may be deployed in time, and such deployment is completed based on predicted game usage before the user accesses the game for gameplay. The resource allocation model is then further trained using the current online interaction. Training enhances the resource allocation model through reinforcement learning.

The expected usage spikes may only occur at certain geographic locations. To determine which geographic location is likely to expect a usage spike to occur, training data identified from the current online interaction of the game is forwarded to a usage spike predictor 318 within prediction engine 302A to predict game usage requirements. The usage spike predictor 318 determines potential causes of predicted game usage for the game using predicted game usage for the current online interaction identified in the game training data determined according to the resource allocation model. If the predicted game usage corresponds to an event that occurs for a game plan, an event-based predictor 318A within the usage spike predictor 318 is used to identify an output in the resource allocation model 316B that corresponds to the event, where the identified output satisfies the resource allocation criteria 314C defined for the game. The predicted game usage is determined by associating patterns of occurrence of social topics in the discussion features with corresponding discussion features related to the event in the resource allocation model. As previously described, the resource allocation criteria 314C may indicate when resources need to be allocated for predicted game usage (i.e., usage demand). The output from the resource allocation model may indicate that a user providing a current online indication is likely to experience a usage spike for an event and indicate an amount of resources that need to be provisioned to service the usage spike of the event. The prediction engine may allocate an amount of resources in proportion to the usage spike.

On the other hand, if the predicted game usage does not correspond to an event, the predicted game usage may be associated with a usage-based demand. Usage-based predictor 318B is used to match discussion features obtained from the current online interaction generated for the game with corresponding discussion features in the assignment model. The usage-based predictor 318B uses a mapping of the matching discussion features in the allocation model 316B to corresponding predicted usage outputs that satisfy the resource allocation criteria 314C for the game. The predicted usage output identified from the assignment model 316B is used to predict usage spikes for the game. Based on the usage spikes predicted for the game, the prediction engine allocates the necessary resources in proportion to the predicted usage spikes.

Thus, the usage spike predictor predicts the usage requirements of a particular game using information from the historical online interactions of multiple games available to CGS300 and the current online interactions of the particular game. Historical online interactions and current online interactions include both in-game interactions and out-of-game interactions. In addition to predicting usage requirements for a particular game, the usage spike predictor may also identify a period of time in which instances and resources need to be deployed for use by a user when the user accesses the particular game for gameplay activities.

FIG. 3 illustrates a time-based graph identifying resource usage requirements determined from user online interactions obtained from online social communications available to CGS 300. The time-based graph shown in FIG. 3 illustrates the time variation of resource usage requirements of a game in one geographic location identified from a resource allocation model using user-provided game online interactions. Time-based graphics may also be generated by online interaction of different games over different time ranges. Since usage requirements of a game may change over time based on user interests, predicting spikes in game usage and adjusting system resources in advance of such predicted spikes in anticipation that the user will use the system resources allows the cloud gaming system to efficiently manage resources while enriching the user's game playing experience. When predicting spikes in game usage and deploying resources to meet the predicted spikes, prediction engine 302A considers the number of game instances currently being executed, the number of instances currently available for game play, the current state of various system resources in the geographic location where the usage spikes are predicted to occur, and deploys the instances and resources appropriately so that enough instances and resources are available to effectively run the game instances.

Referring to FIG. 3, in graph T1, the usage demand of the game is shown to remain at a normal level until a peaked point A is reached based on online interactions collected from in-game and out-of-game interactions of multiple users of the game, and then the usage demand drops to the normal level. Although reference is made to a single game, it should be noted that the usage demand for resources may be determined based on multiple games, and thus the graph may be generated taking into account the online interaction of multiple games. In graph T2, the usage demand is shown to spike at point B, after which the usage demand is shown to drop to a normal level, then shown to rise again at point C and continue to point D, after which the usage demand is shown to drop to a normal level. The decline and increase in usage demand may be due to a certain event occurring in the game or may be due simply to an increase in the number of users accessing the game. The increase in usage requirements requires a significant amount of resources. The graph of fig. 3 shows a spike in system resource usage demand at different times and the time interval between the spikes in usage demand (e.g., the time interval between points B and C). In graph T3, the usage demand is shown to spike first at point E, then the usage demand is shown to drop to a normal level, then the usage demand is shown to spike from point F to point G, then the usage demand is shown to drop to a normal level. Similarly, in Tn, the usage demand is shown to spike at point H and stay until point I, then shown to drop to a normal level, only spike again at point J and continue to point K, after which the usage demand gradually decreases. The different spikes identified in the graph of fig. 3 may be due to a single activity (e.g., game play activity) or different activities (e.g., game play activity, game viewing activity, etc.) performed by different users (i.e., players, spectators) in the game. Interaction analyzer 314 uses the online interactions to identify discussion features of the game and generate a corresponding vector for the game that identifies the discussion features and, in some embodiments, uses weights for the different discussion features. The identified vectors of the game are used to generate an allocation model that is used to predict game usage of the game. The resource allocation model is tuned and the output adjusted by the continuous online interaction received from the user. The adjusted output may indicate an expected usage spike for the game by a user providing continuous online interaction.

Predicted game usage is expected to translate into actual game usage by the user, and such predicted game usage can be used to allocate instances and resources for the game in a timely manner. This type of deployment, performed by: game usage of the game is predicted by matching discussion features identifying social topic patterns from current online interactions with corresponding discussion features in the resource allocation model. Timely deployment provides the user with the best game playing experience while ensuring that expensive system resources are not idle.

The usage identifier 320 within the prediction engine 302A is used to further ensure that the correct type and amount of system resources are allocated when and where needed within the CGS 300. Usage identifier 320 receives predicted usage information from usage spike predictor 318 and extracts resource usage specificity of the game. For example, usage identifier 320 may identify one or more geographic locations where expected usage spikes will occur and/or may identify particular subsystems needed to meet expected usage spikes. Identifying geographic locations ensures that system resources are only deployed at geographic locations where a peak in usage will occur, rather than at all, which can result in a waste of expensive resources. Similarly, identifying subsystems ensures that the required type and amount of system resources are provisioned to meet the usage spike, rather than provisioning all subsystems, which may also result in wasted resources. For example, for computationally intensive games, a powerful CPU is required instead of a GPU. For graphics intensive games, a powerful GPU is required instead of a CPU. Geographic location identifier 320A within usage identifier 320 is used to identify the geographic location of the predicted usage demand. Similarly, subsystem identifier 320B is used to identify the subsystems needed to meet the usage requirements. Information from the usage identifier 320 is provided to the resource allocation agent 302B.

The resource allocation agent 302B uses the information provided by the usage identifier 320 to identify the geographic location and the type and amount of system resources (including particular subsystems) needed at the identified geographic location to meet the usage spike predicted for the game. The resource allocation agent 302B then queries the resource scheduler to obtain the current state of the system resources, including the current state of the subsystems, at the identified geographic location of the predicted usage demand. Resource allocation agent 302B sends a signal to one or more data centers associated with the identified geographic location to execute the game instance and allocate a particular subsystem of the system resource based on the expected usage spike identified by usage spike predictor 318. The resource allocation agent 302B may follow the concept of "elastic computing" when sending signals to the data center, where the signals may scale up or down certain of the system resources to meet the predicted usage requirements of the game. The deployment of instances and system resources is performed when a user is expected to use the instances and/or system resources by accessing the game, and is completed before any selection activity for the particular game is received.

In some example embodiments, various types of servers may be used on which game engines may be instantiated to build resource allocation models for predicting usage requirements of a particular game. The server may be a physical server. The physical server may be a stand-alone server or may be part of a data center within the cloud gaming system. The servers in a data center may be individual servers within the data center or part of racks, where each rack contains multiple server computing devices. The physical server includes the necessary resources for executing the game engine, such as an operating system, memory, microprocessor. The functional parts of the game engine are stored in memory, processed using a microprocessor, and managed by the operating system.

In one embodiment, to more quickly handle online interactions, instances of the distributed game engine may be executed in parallel on different servers that are part of a single data center within CGS 300. This configuration works efficiently because data can be exchanged between different servers within the data center without much delay. In an alternative embodiment, the plurality of servers executing the CGS300 of the distributed game engine instance may be part of a plurality of data centers that are geographically distributed. In such embodiments, the usage characteristics resulting from the analysis of the online interaction are exchanged between servers in different servers to enable the analysis to be performed in a fast and efficient manner. In some embodiments, the resource allocation model may be maintained in a central server within CGS300, even if instances of the game engine are distributed among different data centers, to provide consistency in training the resource allocation model.

In some implementations, the server may be a virtual machine within the cloud gaming system configured to support online interaction using multiple games to train the resource allocation model, utilizing hardware resources available to a virtual layer of the host. The virtual machine may also include one or more applications (e.g., one or more online gaming applications) that may be executed by the operating system using hardware resources available to a virtualization layer (i.e., virtual layer) of the host machine.

In some other implementations, the server used to generate and train the resource allocation model may be part of a cloud container that allows applications, such as online gaming applications, and all of their dependencies, libraries, and configuration files needed to run the online gaming applications, to be bundled with the applications into a virtual container using the resources allocated in the container to run the applications. The container runs without a complete operating system, thus providing operating system level virtualization.

In some implementations, a user can connect to an online gaming application of a cloud gaming system from anywhere in the world. The online gaming application enables this connection by launching multiple game instances on different servers distributed in different data centers around the world. The distributed game engine collects user input data generated at respective client devices during gameplay of the online game from the server network and returns frames of game data to the respective client devices using any of the network models. Some examples of network models that may be used for communication between servers of the cloud gaming system described in this application include the TCP/IP network model or the international organization for standardization (ISO) based Open Systems Interconnection (OSI) network architecture. Data processing and communication between distributed servers may follow any of a number of existing protocols. The ISO model includes a set of application layers (application layer, presentation layer, session layer) and data flow layers (transport layer, network layer, data link layer, and physical layer). The application layer is configured to identify the transmitting and receiving entities, to communicate data of an application, such as an online game, between the transmitting and receiving entities in a manner understood by the respective entities, and to manage and synchronize communications between the transmitting and receiving entities with minimal loss of data. The data flow layer is configured to determine whether data transmission should be performed in a sequential or parallel path, which is the protocol followed by packetizing the data, assembling the packetized data into frames, and transmitting the data frames along a preferred route. It should be noted that the above mentioned description only provides an overview of the ISO model for communicating data over a server network for online gaming, and that a person skilled in the art understands finer details of the role of the various layers and therefore does not describe in more detail.

FIG. 4 illustrates an overview of an example CGS 300A that supports collecting user interactions to update training data and using the updated training data to build and/or train a resource allocation model for predicting usage requirements of an online game according to one embodiment of the present disclosure. In particular, system diagram 300A enables access to and play of a video game stored in Cloud Gaming System (CGS) 300. In general, cloud gaming system CGS300 may be a cloud computing system operating over network 200 to support multiple players playing online gaming applications with corresponding game play. Online interactions between players and/or users provided in online games (in-game interactions) or out-of-game (out-of-game interactions) are used as training data to build and/or train resource allocation models. The online interaction may be provided using an interactive tool provided in an online game, or may be provided using an interactive tool provided by an interactive application, such as a social media application, an email application, a text messaging application, and so forth. The online interaction may be a conversation or discussion that includes social topics related to the online game, and may be in the form of messages, weblogs, emails, social media interactions, and the like.

In particular, system 300A includes CGS300, one or more social media providers 240, and client device 100, all connected via network 200 (e.g., the internet). A plurality of client devices associated with a plurality of users may be connected to network 200 to access services provided by CGS300 and social media providers 240. The user may be a player or spectator that tracks the game play of a particular player or online game.

In one embodiment, cloud gaming system 300 includes game server 205, video recorder 271, tag processor 273, and account manager 274 including a user profile manager, game selection engine (i.e., game selector) 275, game session manager 285, user access logic 280, network interface 290, and social connection manager 295. CGS300 may also include a plurality of storage systems, such as a game state repository, user accounts, user data history data repository, etc., which may generally be stored in data repository 260. Other game storage systems may include a game code store 261, a recorded game store 262, a tag data store 263, a video game title store 264 (which is similar to the game title data store 310 of fig. 1 and 2), a game event data store (312 in fig. 1 and 2), an online interaction data store (306 in fig. 1 and 2), a social media and other out-of-game interaction data store (304 in fig. 1 and 2), and a game network user store 265. In one embodiment, CGS300 is a system that may provide online gaming applications, services, game related digital content, and interconnectivity between systems, applications, users, and social networks. CGS300 may communicate with user devices 100 and social media providers 240 through social contact manager 295 via network interface 290. The social connection manager 295 may be configured to associate one or more friends. In one embodiment, each social media provider 240 includes at least one social graph 245 that displays the user's social network connections.

Players (i.e., users) can access services provided by CGS300 via game session manager 285. For example, account manager 274 allows a player to authenticate and access a game title on CGS 300. The account manager 274 stores information about users (players, spectators) and manages user profiles for each user. The user information may be used by the account manager 274 for authentication purposes. In addition, game titles owned by the user may be managed by the account manager 274. For example, video games stored in the game title store 264 may be available to users who own or are provided access to the video games.

In one embodiment, a user may access services provided by CGS300 and social media provider 240 via client device 100 through a connection on network 200. Client device 100 may comprise any type of device having a processor and memory, wired or wireless, portable or non-portable. In one implementation, the client device 100 may be in the form of a smartphone, tablet computer, or hybrid that provides touch screen functionality in a portable form factor. One example client device may include a portable handset device running an operating system and provided with access to various application programs (apps) that may be obtained over the network 200 and executed on a local portable device (e.g., a smartphone, tablet, laptop, desktop computer, etc.).

The client device 100 includes a display 132 that serves as an interface for a user to send input commands 236 and to display data and/or information 135 received from the CGS300 and social media providers 240. The display 132 may be configured as a touch screen, or a display typically provided by a flat panel display, Cathode Ray Tube (CRT), or other device capable of rendering a display. Alternatively, the client device 100 may have its display 132 separate from the device, similar to a desktop or laptop computer.

In one implementation, the client device 100 is configured to communicate with the CGS300 to enable a user (player) to play a video game. For example, a player may select (e.g., by game title, etc.) a video game available in game title data store 264 via game selection engine 275. The selected video game is enabled and an instance of the video game is loaded for execution on CGS300 by game server 205. In one embodiment, game play is primarily performed in the CGS300 such that the client device 100 will receive a stream of game video frames 135 from the CGS300 and user input commands 236 for driving game play are transmitted back to the CGS 300. Video frames 135 received from the streaming game play are rendered on the display 132 of the client device 100.

In one embodiment, after a player selects an available game title to play, the player may initiate a game session for the selected game title through game session manager 285. The game session manager 285 first accesses the game state store in the data store 260 to retrieve the saved game state (if any) of the last session played by the player (for the selected game) so that the player can resume game play from the previous game play stop point. Once the recovery or start point is identified, game session manager 285 may notify the game execution engine in game server 205 to execute the game code for the selected game title from game code store 261. Upon initiating a game session, game session manager 285 may communicate game video frames 135 (i.e., streaming video data) to a client device, such as client device 100, via network interface 290.

During game play, game session manager 285 may communicate with game server 205, a recording engine in video recorder 271, and tag processor 273 to generate or maintain a record (e.g., video) of game play or game play sessions. In one embodiment, a video recording of game play may include tag content entered or provided during game play as well as other game related metadata. The tag content may also be saved via a snapshot. A video record of game play and any game metrics corresponding to the game play may be saved in a recorded game store 262. Any tag content may be stored in tag data store 263.

During game play, game session manager 285 may communicate with game server 205 to communicate and retrieve user input commands 236 for affecting a corresponding game play outcome for a video game. The input commands 236 entered by the player may be transmitted from the client device 100 to the game session manager 285 of the CGS 300. Input commands (e.g., controller inputs or user inputs) 236 include input commands to drive game play and user interaction inputs, such as tag content (e.g., text, images, video recording clips, etc.). Game input commands, as well as any user game play metrics (user duration of game play, etc.), may be stored in a game network user store. Selecting information related to gameplay of a video game may be used to enable a number of features available to a user.

Accordingly, in various embodiments, the present disclosure describes systems and methods that implement machine learning (also referred to as deep learning) algorithms to build resource allocation models using training data collected from a network of servers executing online gaming application instances that support one or more game plays, and to provide various functions related to online gaming applications and/or game play of online gaming applications using trained resource allocation models.

As previously mentioned, the resource allocation model is constructed using a network of interconnected nodes. Each node learns some information from discussion features identified in the online interaction provided as input to the resource allocation model. Knowledge is exchanged between different nodes within the network via the interconnect. Discussion of resource allocation model feature input activates an initial set of nodes in the network. The initial set of nodes in turn activates other nodes to propagate knowledge of game input learned from one node to the next. This activation process is repeated on other nodes, building on the basis of knowledge to provide an output. The output represents an expected or predicted result for a given set of discussion features provided as training data that further includes activity states for the game and resource allocation criteria, the training data being used for training input to obtain output that satisfies different resource allocation criteria. The output of the resource allocation model is then used with the current online interactions received from the users to predict game usage of the game so that resources can be deployed in advance in anticipation of the resources that will be used by the users who provide the online interactions by selecting the game. The resource allocation model is trained to learn the usage requirements of different resource allocation criteria using different discussion features and to identify each possible resource configuration that may be needed to meet the game usage requirements. Thus, when the resource allocation model is provided with a set of discussion features (e.g., social topics, clusters of social topics, frequency of social topics, etc.) from online interactions obtained from online social interactions of multiple users of the game, the resource allocation model may provide output that best meets the resource allocation criteria defined for the game.

The resource allocation model may be generated by various machine learning (i.e., AI) algorithms, including deep learning (i.e., machine learning), reinforcement learning, supervised learning, unsupervised learning, semi-supervised learning, incremental learning, reward-based learning, and the like. The above listed AI algorithm types are given by way of illustration only and are not exhaustive or limiting. In some embodiments, the resource allocation model is generated using a neural network, wherein the network is composed of multiple layers of interconnected nodes. Each edge of the network is given a weight and a set of calculation rules are applied when the input data (i.e. the discussion feature) passes from the input layer to the output layer. An optimization algorithm (e.g., a gradient descent algorithm, etc.) within the machine learning algorithm may use different portions of the feature in question as variable parameters of the model and tune the variable parameters in a manner that minimizes the loss in the variable parameters. Thus, machine learning algorithms use discussion features in a multi-layer neural network of resource allocation models to learn the complexity of the discussion features and their impact on the output.

The classifier is used to identify different portions of the discussion feature to populate different nodes of the resource allocation model and to link a given set of discussion features associated with the input nodes to a particular output. The trained resource allocation model is used to determine the current resource allocation for the game, and the usage requirements (i.e., game usage) for the game are predicted based on the current online interactions obtained from the plurality of users by obtaining the output of the resource allocation model given success criteria and applying the current online interactions to determine whether a user providing the current online interactions is likely to expect a usage spike. Based on the determination, the resources allocated for the game may be elastically scaled to provide sufficient resources for the game to be expected to be used when users providing online interaction access the game for gameplay.

FIG. 5 illustrates example flow operations of a method of adapting resources for an online game, according to one embodiment. The method begins at operation 510, where online interactions of a plurality of users associated with a game are accessed. The online interaction includes a social theme related to the game. Online interactions are accessed from online social communications that include in-game interactions and out-of-game interactions. The online interaction may be provided by the user before the user selects the game. The out-of-game interactions may include social media interactions or other types of online interactions provided using interactive tools. The online interaction is processed, as shown in operation 520. The processing includes performing keyword analysis on the content of the online interaction to identify social topics and define discussion features. The discussion features are categorized based on the order and/or context of the social topic. The discussion features are defined based on social topics, frequency of occurrence of social topics, patterns of occurrence of social topics, number of interactions in discussing social topics, context of social topics (e.g., good or bad comments related to social topics, etc.), and the like. The discussion features are classified based on the social topics of the discussion and the appearance patterns of the social topics in the online interaction.

The resource allocation model is generated using the classified discussion features, as shown in operation 530. The model includes a plurality of interconnected nodes, and different ones of the discussion features are used to populate different nodes. The interrelationships between nodes are used to understand the complexity of the social topic patterns included in the game discussion feature to identify different usage outputs that satisfy resource allocation criteria defined for the game. Social topics and patterns of occurrence of social topics are used to predict game usage. The game usage is continuously trained using online interactions received over time.

Resources for the game are provisioned at the data center, as shown in operation 540. The deployment of the resource includes accessing a resource allocation model to identify any adjustments to the resource deployment. Based on the adjustment to the deployment, the amount of game resources deployed at the data center may be increased. The deployment may be adjusted when the model indicates that the actions of the plurality of users will experience expected usage spikes and that the indication may be based on current online interactions received from the plurality of users. The increase in the amount of resources that need to be deployed is determined by correlating the discussion features of the current online interaction with the corresponding discussion features in the resource allocation model. Using the relevant discussion features, resource usage outputs that map to the relevant discussion features are identified. This resource usage output indicates the amount by which the resources to be provisioned need to be increased to meet the expected usage spike.

The deployment of resources may include deploying multiple instances of the game and scaling up resources for executing the instances in proportion to a usage spike expected from a current online interaction. The deployment of instances and resources is completed prior to receiving any selection requests for games from the user, and in anticipation that the user will use the instances and resources when the user accesses the game to perform an activity (e.g., a game play activity). Once the resources are deployed, the current online interaction is used to further train the resource allocation model. When additional online interactions are received from the user, the trained resource allocation model is used to predict game usage for the game.

The prediction engine may be provided in software, hardware, firmware, or any combination thereof. The prediction engine is configured to monitor activities of the plurality of users using online interactions provided through online social communications of the plurality of users, and predict spikes in user activities. By predicting spikes in user activity and associated server load, resources may be scaled up ahead of time. The prediction engine is also configured to examine different spike triggers (e.g., game events such as new releases, promotions, competitions, etc. of a game, or predict game usage such as identifying previous load spikes to predict current load, predicting users will group loads, social discussions, etc.) and scale resources up proportionally to expected resource load requirements. Expected resource load requirements may be collected from in-game activities and out-of-game activities. For example, social media signals and communications between users (in-game and out-of-game) may be used to predict spikes. The established model helps predict the type of resources needed to meet the expected spike.

Fig. 6 illustrates components of an example server apparatus 600 that may be used to perform aspects of various embodiments of the present disclosure. For example, fig. 6 illustrates an example server system having hardware components adapted to train AI models capable of performing various functions related to online gaming and/or gameplay of online gaming, according to one embodiment of the present disclosure. This block diagram illustrates an apparatus 600 that may include or be a personal computer, server computer, game console, mobile device, or other digital device, each of which is suitable for practicing embodiments of the present invention. Alternatively, the functionality of the apparatus may be implemented in a physical server or a virtual machine or container server. The apparatus 600 includes a Central Processing Unit (CPU)602 and optionally an operating system for running software applications. The CPU 602 may be comprised of one or more homogeneous or heterogeneous processing cores.

According to various embodiments, the CPU 602 is one or more general purpose microprocessors having one or more processing cores. Other embodiments may be implemented using one or more CPUs having a microprocessor architecture specifically adapted for highly parallel and computationally intensive applications, such as media and interactive entertainment applications, configured for deep learning, content classification, and user classification. For example, the CPU 602 may be configured to include an AI engine configured to support and/or perform learning operations with respect to providing various functions (e.g., predictions) related to online games and/or gameplay of online games. The deep learning engine may include a modeler 120 configured to build and/or train an AI model configured to provide various functions related to an online game and/or gameplay of an online game. Further, the CPU 602 includes an analyzer 140 configured to generate and train AI models. The trained AI model provides output in response to input from a particular set of users, where the output is dependent on a predefined function of the trained AI model. The trained AI model may be used to determine resource allocations to be implemented during gameplay to meet success criteria defined for online gaming. The analyzer 140 is configured to perform various functions related to the online game and/or game play of the online game, including analyzing the output from the trained AI model 160 for given inputs (e.g., controller inputs, game state data, success criteria), and providing a response.

Memory 604 stores applications and data for use by the CPU 602. The memory 606 provides non-volatile storage and other computer-readable media for applications and data, and may include fixed disk drives, removable disk drives, flash memory devices, and CD-ROM, DVD-ROM, Blu-ray, HD-DVD, or other optical storage devices, as well as signal transmission and storage media. User input device 608 communicates user input from one or more users to device 600, examples of which may include a keyboard, mouse, joystick, touchpad, touch screen, picture or video recorder/camera, game controller, and/or microphone, to device 600. Network interface 614 allows device 600 to communicate with other computer systems via an electronic communications network, and may include wired or wireless communications over local area networks and wide area networks such as the internet. The audio processor 612 is adapted to generate analog or digital audio output from instructions and/or data provided by the CPU 602, memory 604, and/or storage 606. The components of the device 600, including the CPU 602, memory 604, data storage 606, user input device 608, network interface 610, and audio processor 612 are connected via one or more data buses 622.

Graphics subsystem 613 is further connected to data bus 622 and components of device 600. Graphics subsystem 613 includes a Graphics Processing Unit (GPU)616 and a graphics memory 618. Graphics memory 618 includes display memory (e.g., a frame buffer) for storing pixel data for each pixel of an output image. Graphics memory 618 may be integrated in the same device as GPU 616, connected as a separate device with GPU 616, and/or implemented within memory 604. Pixel data may be provided directly from CPU 602 to graphics memory 618. Alternatively, CPU 602 provides GPU 616 with data and/or instructions defining the desired output images, from which GPU 616 generates pixel data for one or more output images. Data and/or instructions defining the desired output image may be stored in memory 604 and/or graphics memory 618. In one embodiment, GPU 616 includes 3D rendering functionality for generating pixel data for output images from instructions and data defining geometry, lighting, shading, texture, motion, and/or camera parameters for a scene. GPU 616 may further include one or more programmable execution units capable of executing shader programs. In one embodiment, GPU 616 may be implemented within an AI engine to provide additional processing power, e.g., for AI or deep learning functions.

Graphics subsystem 613 periodically outputs pixel data for an image from graphics memory 618 for display on display device 610 or for projection by projection system 640. Display device 610 may be any device capable of displaying visual information in response to signals from device 600, including CRT, LCD, plasma, and OLED displays. For example, the device 600 may provide an analog or digital signal to the display device 610.

It is to be understood that various embodiments defined herein may be combined or assembled into specific embodiments using various features disclosed herein. Thus, the examples provided are only a few of the possible examples and are not limited to the various embodiments possible by combining various elements to define further embodiments. In some instances, some embodiments can include fewer elements without departing from the spirit of the disclosed or equivalent embodiments.

Embodiments of the present disclosure may be practiced with various computer system configurations, including hand-held devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like. Embodiments of the present disclosure may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a wired or wireless network.

In view of the above-described embodiments, it should be appreciated that embodiments of the present disclosure may employ various computer-implemented operations involving data stored in computer systems. The operations are those requiring physical manipulations of physical quantities. Any of the operations described herein that form part of the disclosed embodiments are useful machine operations. Embodiments of the present disclosure also relate to apparatuses or devices for performing these operations. The apparatus may be specially constructed for the required purposes, or it may be a general-purpose computer selectively activated or configured by a computer program stored in the computer. In particular, various general-purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations.

The present disclosure may also be embodied as computer readable code on a computer readable medium. The computer readable medium is any data storage device that can store data, which can thereafter be read by a computer system. Examples of computer readable media include hard disk drives, Network Attached Storage (NAS), read-only memory, random-access memory, CD-ROMs, CD-R, CD-RWs, magnetic tapes, and other optical and non-optical data storage devices. The computer readable medium may include computer readable tangible media distributed over a network coupled computer system for storing and executing computer readable code in a distributed fashion.

Although the method operations are described in a particular order, it should be understood that other secondary management operations may be performed between the operations, or the operations may be adjusted to be performed at slightly different times, or the operations may be distributed in a system that allows processing operations to be performed at various intervals associated with processing, so long as the processing of overlapping operations is performed in a desired manner.

Although the foregoing disclosure has been described in some detail for purposes of clarity of understanding, it will be apparent that certain changes and modifications may be practiced within the scope of the appended claims. Accordingly, the present embodiments are to be considered as illustrative and not restrictive, and the embodiments of the disclosure are not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.

30页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:媒体-活动绑定和内容阻止

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类