Method for allocating resources for online games

Through the dynamic allocation of computing resources through distributed game engines, traditional technologies cannot handle a large number of multi -player online game input load, and realize efficient game quality maintenance.

CN119367749AActive Publication Date: 2025-01-28SONY INTERACTIVE ENTERTAINMENT LLC
View PDF 7 Cites 0 Cited by

Patent Information

Application Number
CN202411298815.2
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2018-12-20
Filing Date
2019-11-18
Publication Date
2025-01-28
Estimated Expiration
2039-11-18

AI Technical Summary

Technical Problem

Traditional client-server settings cannot effectively handle the processing load generated by inputs provided by multiple users in a large number of multiplayer online games, resulting in a degradation in game quality.

Method used

The distributed game engine is used to identify multiple virtual locations in online games to dynamically allocate and adjust computing resources to process the processing load of each virtual position.

Benefits of technology

With the participation of a large number of players, ensure the maintenance of the quality of the game, and effectively adjust the computing resources through dynamic adjustment, effectively process the load and reduce delay.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119367749A_ABST
    Figure CN119367749A_ABST
Patent Text Reader

Abstract

A method for allocating resources for an online game is described. A method includes executing an online game for a plurality of users, each user being provided with access to a virtual location of a game world in which one or more users are present; identifying one or more virtual locations of the game world; allocating one or more computing resources to each virtual location identified in the game world for processing game interactions provided therein by one or more users, where the number of computing resources allocated to each virtual location is based on the processing load required to process the game interactions; monitoring a processing load of each of the one or more computing resources allocated to each virtual location identified in the game world; and dynamically adjusting the number of computing resources allocated to each virtual location in order to process the processing load of each virtual location.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of the Chinese invention patent application with application date of November 18, 2019 and application number 201980089637.3. Technical Field

[0002] The present disclosure relates to allocating resources for online gaming, and more particularly to a deterministic way of allocating computations when a large number of players enter a particular virtual gaming area. Background Art

[0003] Online games are becoming more and more popular in the game world. Traditionally, games use client-server settings or peer-to-peer settings to execute games for game play. In a typical client-server setting, the server needs to provide enough computing power to handle the physics, audio, transmission, etc. of the game data generated during the game play of the game. With the increasing popularity of massive multiplayer online games (MMOs), traditional client-server settings cannot handle the processing load (i.e., game data) generated by the input provided by multiple users (e.g., thousands of players) during the game play. In MMO games, during the game play, it is necessary to provide each of the multiple players with their own perception of the game world. For example, the first player may approach a challenge from the right side of the game world, the second player may approach the same challenge from the left side of the game world, and the third player may approach the challenge from the front side of the game world. Each of these players can provide input to overcome that challenge. The server needs to determine which player's input needs to be processed first and generate the overall game state of the game. The server also needs to be able to generate different game data for each of the players in order to provide their own perception of the game world. Servers have limited resources and can only support a certain number of players (i.e. users), and when the number of players exceeds this certain number, the server's resources may be stretched too thin, resulting in less than ideal game play. In a peer-to-peer setting, there is more processing burden on the network used to exchange game data, and the processing is distributed among the peers. In addition, one of the peers acts as a "server" and takes on the additional processing load, which increases the resource pressure of that peer.

[0004] In a typical MMO game, there may be hundreds or thousands of players who can access the online game at any given time. In order to allow players to have the best gaming experience, multiple servers can be used to support the game play of hundreds or thousands of players, and players can be organized into logical groups, each of which is assigned to a server domain. However, as in the above client-server setting, the server domain has a limit on the number of users (i.e., game characters). When a new user initiates a request to access the game play in a specific server domain, if the number of users in the server domain has reached the server limit, the new user may be placed in the queue of the server domain, resulting in unnecessary delays in the new user starting the game play. In addition, if the new user requests to join a specific server domain located in a different time zone, the new user can be assigned to a specific server domain based on the user's current geographic location, even if the specific server domain may not be the best option. This is especially a problem when the new user wants to participate in the game play of an online game with his friends and wants to start from a certain level of game play. Assigning a new user to a specific server domain will cause the new user to experience delays, which may result in a poor experience for the new user.

[0005] It is against this background that embodiments of the present disclosure emerge. Summary of the invention

[0006] Embodiments of the present disclosure relate to systems and methods for supplying resources for online games. Online games are executed using a distributed game engine to provide video frames of game data, which includes a view of the game world of the game for rendering on the client device of the user who is playing or watching the online game. The distributed game engine includes multiple components to track the scenario (i.e., game state) of the online game, the position of each user within the online game, and actively supply the necessary computing / computing resources to assist in processing user input provided by the user to generate game data for each user of the online game. The components of the distributed game engine are configured to identify multiple virtual locations within the online game, identify the processing load on one or more calculations (i.e., computing devices) assigned to users present in each virtual location of the online game, and actively increase or decrease the calculation assigned to each virtual location in order to handle the processing load in each virtual location.

[0007] First, the distributed game engine may first allocate calculations to users present in each virtual location identified in the online game, and monitor the processing load on the allocated calculations associated with the online game. The processing load may be affected by the user moving into or out of the area defined within the virtual location of the online game. Based on the monitoring, the distributed game engine may adjust the calculations allocated to each virtual location of the online game so that the allocated calculations are configured to handle the processing load at the corresponding virtual location. The adjustment to the calculation may include allocating additional calculations to handle the increase in the processing load at a specific virtual location, or canceling the allocation of one or more calculations allocated to a specific virtual location based on the reduction in the processing load. In order to add additional calculations, the distributed game engine monitors the number of users in the area of ​​the specific virtual location, and determines whether the number of users exceeds the limit predefined for the calculations allocated to the specific virtual location. When the number of users in the area exceeds the predefined number for the allocated calculations, the distributed game engine may subdivide the area within the specific virtual location into multiple sub-areas, and allocate additional calculations to process the user inputs defining the game interactions provided by the users in the area. In some implementations, different calculations may be allocated to process the user inputs of the users in each sub-area. In some implementations, a computation assigned to a region or a particular virtual location may be assigned to one of the sub-regions defined within the region. In another implementation, a computation assigned to a particular virtual location or region may be used to coordinate the processing of game interactions handled by different computations assigned to various sub-regions generated within the region of the particular virtual location.

[0008] Alternatively, the distributed game engine can optimize the amount of computation allocated to the online game by de-allocating some of the computations allocated to the online game. To de-allocate some of the computations, the distributed game engine can first allocate it for processing the game interactions generated at the first virtual location to similarly handle the game interactions (i.e., processing load) of the first virtual location and the second virtual location, and de-allocate the second computation allocated for processing the game interactions in the second virtual location. In this case, the computation allocated to the second virtual location is de-allocated after synchronizing the game data generated by processing the game interactions between the first computation and the second computation. The distributed game engine continues to monitor the number of users in each area of ​​each of the virtual locations and actively manages the computations allocated to the online game.

[0009] In one implementation, a method for managing processing resources for an online game presenting a game world is disclosed. The method includes executing an online game for one or more users. Access to one or more virtual locations of the game world is provided to each of the one or more users. Computations are allocated to the one or more users to process game interactions in the game world. When the number of users accessing an area within a virtual location identified in the online game exceeds a predefined limit on the computations allocated to the users, the area is divided into a plurality of sub-areas. Additional computations are allocated to the area so that the computations and the additional computations are configured to process game interactions in the game world for users in each of the sub-areas.

[0010] In some implementations, the number of sub-regions created in a region is based on the number of users present in the region. Each sub-region created in a region includes at least one user of the region.

[0011] In some implementations, the game interactions received in the zone correspond to user input provided by one or more users in the zone. The one or more users are players or spectators.

[0012] In some implementations, each sub-region created within a region is assigned a different computation to process user input representing game interactions directed to the sub-region.

[0013] In some implementations, processing of the game interactions includes determining an optimal processing order for the game interactions in each sub-region based on the relative context of the game interactions provided by each user. The game interactions are processed in each sub-region according to the optimal processing order, which determines the order in which game video data is provided to each user for rendering at his client device.

[0014] In some implementations, the optimal processing order of game video data for each user is determined based on priority, or importance, or criticality, or need, or any combination of two or more thereof.

[0015] In some implementations, the optimal processing order is based on the timing of game interactions that occur during game play.

[0016] In some implementations, the movement of users within each sub-region of a region is tracked to determine the number of users that have visited the region. The movement of users is used to adjust the calculations assigned to the region.

[0017] In some implementations, adjusting the computation includes de-allocating additional computations allocated to the region when a number of users in the region falls below a predefined limit on the computation based on movement of one or more users.

[0018] In some implementations, the computations allocated to the zone are adjusted by detecting that one or more users have moved out of the zone and, in response, de-allocating the computations or additional computations allocated to the zone. The de-allocation is performed after successfully synchronizing game-related data of the game world between the computations and the additional computations. The game-related data is generated based on the game interaction processing of the users in the zone.

[0019] In some implementations, the adjustments are done based on the resource capabilities of the computation and additional computation and the resource requirements of the region.

[0020] In some implementations, each sub-region of a region is defined by a boundary and is assigned a different computation to process game interactions of users in the corresponding sub-region. Movement of users in the region is tracked, and when it is determined that a user from a sub-region of the region has moved to a boundary between two consecutive sub-regions, communications are managed between the computations assigned to each of the two consecutive sub-regions to enable processing of the user's game interactions. Processing of game interactions is synchronized between the computations.

[0021] In some implementations, movement of users in a region within the virtual location is tracked and sub-regions within the region are adjusted based on the number of users visiting the region. The adjustment includes merging one or more sub-regions within the region or creating additional sub-regions within the region. The adjustment of the sub-regions results in an adjustment to the calculations allocated to the region.

[0022] In an alternative implementation, a method for managing resources of an online game is disclosed. The method includes executing an online game in response to user input received from a plurality of users. Execution of the online game provides access to virtual locations within a game world of the online game. Computations are assigned to one or more users present at each virtual location. The computations are configured to process user inputs of one or more users present at the corresponding virtual location to generate game video data for each of the users. Movements of each user are tracked within the game world to determine when a certain number of users visit an area within one of the virtual locations. When the number of users exceeds a predefined limit on the computations assigned to users in the area, the area is subdivided into a plurality of sub-areas. Additional computations are assigned to the area so that the computations and the additional computations process user inputs provided by each of the users in the area to generate corresponding video game data for each of the users.

[0023] In one implementation, a method is disclosed, comprising: executing an online game for a plurality of users, each of the plurality of users being provided access to a virtual location of a game world provided by the online game; identifying one or more virtual locations of the game world in which one or more of the plurality of users are present; allocating one or more computing resources to each virtual location identified in the game world for processing game interactions provided by the one or more users in each virtual location, wherein the number of computing resources allocated to each virtual location is based on a processing load required to process the game interactions; monitoring the processing load of each of the one or more computing resources allocated to each of the virtual locations identified in the game world; and dynamically adjusting the number of computing resources allocated to each of the virtual locations in order to process the processing load of each of the virtual locations.

[0024] In one implementation, a method is disclosed, comprising: executing an online game for a plurality of users, each of the plurality of users being provided access to a virtual location of a game world provided by the online game; identifying one or more virtual locations of the game world in which one or more of the plurality of users are located; allocating one or more computing resources to each virtual location identified in the game world for processing game interactions provided by the one or more users in the virtual location, wherein the amount of computing resources allocated to each virtual location is based on a processing load required to process game interactions originating from the virtual location; monitoring movement of the one or more users in each virtual location, wherein the monitoring includes identifying one or more users that have entered or left each virtual location; and dynamically adjusting the amount of computing resources allocated to each virtual location based on the monitored movement so as to handle the processing load at each virtual location.

[0025] 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. BRIEF DESCRIPTION OF THE DRAWINGS

[0026] The present disclosure may be best understood by reference to the following description taken in conjunction with the accompanying drawings.

[0027] Figure 1 A simplified block diagram of a distributed game engine executed on a game cloud system for supplying resources for online games according to one implementation of the present disclosure is illustrated.

[0028] Figure 2 Illustrated is a simplified block diagram of a distributed gaming engine identifying some of the components used to provision resources for an online game, according to one implementation of the present disclosure.

[0029] Figure 3A Illustrated is a simplified block diagram identifying details of some components of a compute region manager module of a distributed game engine for provisioning resources for online games, according to one implementation of the present disclosure.

[0030] Figure 3B Illustrated is a simplified block diagram identifying details of some components of a compute region manager module within a distributed game engine for provisioning resources for online games in accordance with an alternative implementation of the present disclosure.

[0031] Figure 4A-4C Illustrated are different ways in which sub-regions may be generated for virtual locations within a game world of an online game according to one implementation of the present disclosure.

[0032] Figure 5 A system diagram of a cloud gaming system for executing an online game to provide game data frames to one or more client devices over a cloud gaming network is illustrated according to one implementation of the present disclosure.

[0033] Figure 6 The flowchart of the method for provisioning resources for an online game using a resource allocation model according to one implementation of the present disclosure is illustrated.

[0034] Figure 7 Components of an example computing device for building and training a resource allocation model (artificial intelligence (AI) model) using a modeler are illustrated according to one implementation of the present disclosure. DETAILED DESCRIPTION

[0035] Although the following detailed description contains many specific details for illustrative purposes, those skilled in the art will appreciate that many variations and modifications of the following details are within the scope of the present disclosure. Therefore, the claims preceding this specification set forth the various aspects of the present disclosure described below without any loss of generality and without imposing limitations thereon.

[0036] In general, various embodiments of the present disclosure describe systems and methods that provide ways to understand the resource requirements of online games, the resource capabilities of each calculation allocated to online games, and dynamically adjust the calculations allocated to online games during game play to provide optimal resource allocation for online games. Online games can be massively multiplayer online (MMO) games accessed by multiple users. Multiple users can be players who are accessing online games to play games, or can be spectators who are accessing online games to view game play or pay attention to specific one or more players playing online games, or a combination of players and spectators. MMO games provide game data based on user input received from multiple users via game interactions. Game data generated for players and spectators who pay attention to players include game states of online games associated with players. Game data generated for multiple players include game world views of online games.

[0037] A plurality of virtual locations are identified in a game world. Each virtual location is an area in the game world with defined boundaries within which one or more users (players and / or spectators) of an online game exist. Game interactions in the form of user inputs in each virtual location are monitored to determine the amount of game interactions generated at each virtual location. Computations are assigned to users of the online game to handle the processing of game interactions generated in the game world. The computations assigned to the online game are identified based on processing resources that can be used to serve the processing load defined for the game interactions. As each user advances in the online game, the user's position in the game world can change from a first virtual location to a second virtual location. A distributed game engine monitors the movement of each user in the game world to determine when a certain number of users visit an area within a particular virtual location. The number of users in an area can result in an increase in game interactions in an area within a particular virtual location. Each computation has a predefined limit on the number of users of game interactions that it can handle. If the number of users in an area exceeds the predefined limit for the assigned computation, the area in the particular virtual location is dynamically subdivided into a plurality of sub-areas, each of which has at least one user from the area. Additional computations are assigned to the area to handle the processing load generated by the game interactions of the users in the game world, and game video data is generated for each user in each sub-area. In some implementations, different computations are assigned to each sub-region to handle the game interactions of users in the corresponding sub-region. The computations assigned to each sub-region are identified based on the resources required to handle the processing load generated by the game interactions at the sub-region.

[0038] After the computations are allocated, the movement of the users is monitored to determine when one or more users move out of one area to a different area. In response to the monitoring, the computations allocated to the online game can be evaluated to determine whether some of the computations can be de-allocated or reallocated to handle the game interactions of the users of different virtual environments within the online game. The de-allocation or reallocation of the computations is performed after the game data generated based on the processing of the game interactions of the users is successfully migrated from the computations being de-allocated to the computations allocated to handle the game interactions of the online game.

[0039] With the above general understanding of various embodiments, example details of the embodiments will now be described with reference to the various figures.

[0040] Figure 1 A simplified block diagram of a distributed game engine 100 for executing an MMO game (i.e., an online game) accessed by multiple users from different geographic locations in a game cloud system in one implementation is illustrated. The distributed game engine 100 includes functional components for processing specific features of online games. An instance of the distributed game engine 100, together with the game logic of the online game, can be executed on one or more servers (i.e., computing 102a to 102n) of the game cloud system, wherein one or more of the instances can be used to process specific features of the online game. The functional components include engines / modules for processing specific features of online games. Some features of online games that can be processed by different functional components of the distributed game engine can include physics, audio, shading, texturing, assembly / coding, scripting, artificial intelligence (AI), memory management, scripting, animation, scene graphs, to name a few.

[0041] According to an implementation of the present disclosure, the game cloud system includes a network of back-end servers (e.g., computing 1-n) that execute one or more instances of online game applications. One or more client devices (not shown) are used to access online games executed on the game server of the game cloud system through a network 200 (such as the Internet). The client device can be any computing device (such as a mobile phone, a tablet computer, a personal computer, etc.) that at least includes a memory, a processor, and a network interface to interact with the back-end server via the network 200, or can be a thin client that provides an interface to interact with the back-end server that provides computing functions. The back-end server is a game server configured to execute one or more instances of one or more games. The game server can be any type of server computing device available in the game cloud system. In an example implementation, the game server can be a virtual machine that supports a game processor, and the game processor uses the resources of the host to execute online game instances for users. In another example implementation, the game server can be an independent physical server or a physical server that is part of a single data center or part of multiple data centers. In one implementation, a central server (i.e., central computing) 102 executing an instance of a distributed game engine 100 and game logic may coordinate inputs and outputs to different servers (i.e., computing) 102a-102n via a network 200, assemble outputs from different servers, and encode outputs of online games for onward transmission to one or more client devices via the network 200. The network 200 may be any type of network, including the Internet, a wide area network, a local area network, a private network, a gaming network, etc.

[0042] The online game can be remotely executed by multiple servers (i.e., computers 102a-102n) of the game cloud system, and the game data is streamed to the client device of the user (player or spectator) through the network 200. The player is a user who participates in the game play of the game by providing game interactions (user input) to affect the game state of the online game. The spectator is a user who pays attention to the general game play of the online game including game interactions (user input) from multiple players or pays attention to the game play of a specific player. The game play of the online game is controlled by the player using the control options provided in the client device or using a controller connected to the client device in a communicative manner. In other implementations, the online game can be executed locally on the client device, and the metadata from the online game being executed is transmitted to the back-end server of the game cloud system through the network 200 to affect the game state.

[0043] Figure 2A block diagram of a distributed game engine 100 for supplying computing and computing resources to handle game interactions generated during the game play of an online game in one implementation is illustrated. The online game may be an MMO game played or accessed by multiple users. Multiple users may access the online game from one geographic location or from different geographic locations. The algorithm included in the distributed game engine constantly tracks the movement of users within the game world of the online game, and allocates different calculations to the online game to handle the game interactions generated in the game world of the online game. The algorithm provides users with access to different virtual locations of the game world and manages the processing of game interactions generated in each virtual location. In order to process the game interactions of online game users in a fast and efficient manner, instances of the distributed game engine and the game logic of the online game are executed on different calculations (i.e., servers), and the calculations are used to process the game interactions generated in each virtual location identified in the game world. In addition, one of the calculations executing the game engine instance (e.g., a central server) can be used to manage the input and output of each calculation allocated to the online game, assemble the outputs from all calculations, and generate game video data including the game state of the online game for each user playing or following the online game. The calculations allocated to the online game can be a single data center or part of multiple data centers. The distributed game engine uses parallel processing to process the ever-changing game video data generated by game interactions (user inputs) provided by different users, and provides game video data frames to corresponding client devices associated with different users.

[0044] Distributed game engine 100 includes multiple components for managing calculations and computing resources, which are allocated to process game interactions generated in different virtual locations identified in the game world of online games. Some components of distributed game engine 100 include user position tracker 105, position load analyzer 107, calculation distributor 109, game scenario processor 111 and dynamic calculation area manager 120. User position tracker 105 is used to monitor the movement of each user in the game world and identify the virtual location where each user exists in the game world. As part of tracking, user position tracker 105 can determine when a certain number of users of online games visit a region in a specific virtual location. The number of users in a region can be a subset of users who visit online games. As more and more users visit a region, a region may experience an increase in game interactions of users in the region. The increase in game interactions leads to an increase in game video data (also referred to as game data herein) generated in the region, because each user in the region must be provided with online games from their own perspective. Users can be players or spectators. The game data of a player includes the game state of the player's online game. The game data generated for the audience includes the game state of the online game of the player in the area of ​​the online game that the audience is paying attention to. In some implementations, the calculation can define separate predefined limits for the number of players and the number of spectators that it can handle. The predefined limits can be specific to the player types (e.g., expert players, intermediate players, or novice players) who visit the area or virtual location in the game world. In such implementations, the user location tracker 105 can determine the type of users and the number of users of each type who visit the area in a specific virtual location of the game world, and generate a signal to the location load analyzer 107 to evaluate the calculation assigned to the online game and determine whether the calculation assigned to the online game is configured to handle the number of users in the area.

[0045] In some implementations, multiple computations may be allocated to an online game such that a different computation is allocated to users at each virtual location identified in the game world of the online game to process game interactions generated by users in the corresponding virtual location. Each computation allocated to the online game may have a predefined limit on the number of users that the computation can handle. As described above, each computation may have a predefined limit for each type of user accessing the online game. The location load analyzer 107 evaluates the types of users in the area and the number of users of each type in response to a signal from the user location tracker 105. When the number of users of each type exceeds the corresponding predefined limit, the location load analyzer 107 interacts with the computation allocator 109 to adjust the computation for the area.

[0046] The calculation distributor 109 determines the capacity of the calculation assigned to each virtual location in the game world based on the information exchanged by the location load analyzer 107, and identifies the additional calculation for assigning to the area in the specific virtual location. The calculation distributor 109 dynamically supplies the identified additional calculation so that the calculation and the additional calculation can handle the game interaction in the area of ​​the specific virtual location. The calculation distributor 109 can supply additional calculations (such as additional CPU cores) to existing calculations at a micro level, or supply additional calculations (such as additional one or more servers (i.e., calculations)) to a specific virtual location at a macro level. The allocation of additional calculations includes migrating the game interactions of certain users in the area of ​​the specific virtual location to additional calculations so as to allow the additional calculations to handle the processing of the game interactions generated in the area. The calculations and additional calculations assigned to users in a specific virtual location work together to process the game interactions of users in the area and in the specific virtual location, and generate game data for each user in the specific virtual location.

[0047] After allocating additional computation to the online game to handle the processing load generated by the game interactions of the users in the online game, the distributed game engine uses the dynamic computation region manager 120 to continuously monitor the movement of the users within the game world and manage the computations allocated to the online game. The monitoring may result in adjusting the computations allocated to the online game. For example, during the game, the amount of game interaction in a virtual location may be affected by the movement of the users into or out of the virtual location or the increased interaction between any two users within a virtual location or within two different virtual locations, etc. The computation region manager 120 tracks the movement of the users and the game interactions within the different virtual locations identified in the game world, evaluates the number of users, the game interactions of the users in the different virtual locations, and dynamically adjusts the computations allocated to the online game by scaling up or down the computations allocated to process the game interactions of the users in each different virtual location of the online game.

[0048] When a certain number of users visit a specific area within a virtual location at a given time, the number of users is verified according to a predefined limit defined for the calculations assigned to handle user game interactions in the virtual location. When it is determined that the number of users in a specific area exceeds the capacity of one or more calculations assigned to the virtual location, the calculation area manager 120 divides the specific area into multiple sub-areas in some implementations. Each sub-area is defined by a sub-boundary. The number of sub-areas created is based on the type of users and the number of users of each type present in the specific area. In some implementations, segmentation criteria for identifying user types (e.g., players or spectators) and the number of users of each type can be used to determine the number of sub-areas to be created within a specific area. The sub-areas created within the area can have the same size or different sizes. Each sub-area includes at least one user from the area.

[0049] Figure 4A-4C Various scenarios of how sub-areas can be defined within an area of ​​a virtual location identified in a game world are illustrated. As described above, a virtual location can include areas, each of which can be subdivided into multiple sub-areas, and the number of sub-areas is based on the density of users in a specific area of ​​the virtual location. When a user selects an online game to play, the user is provided with access to a virtual location of the game world defined in the online game. As users move around in the game world, a certain number of users can enter a specific area within a specific virtual location at a given time. A specific area is defined as a portion of a specific virtual location. When the number of users in a specific area exceeds a predefined limit defined for the calculations assigned to the online game, the area can be divided into multiple sub-areas, each of which is assigned a different calculation, so as to distribute the processing load to the specific area of ​​the specific virtual location. The processing load on the calculations assigned to a specific virtual location corresponds to the amount of game interaction provided by the users in the specific virtual location. The number of sub-areas is based on the density of users in the area. In some implementations, the sub-areas can cover the entire area of ​​the area based on the distribution of users in the area. In alternative implementations, the sub-areas can cover only a portion of the area based on the distribution of users in the area.

[0050] Figure 4A A representation is illustrated in which an area (area A) representing a portion of a particular virtual location (location 1) is visited by a certain number of users at a given time. It is determined that the number of users in area A exceeds a predefined limit on the computation allocated to process game interactions for users in location 1. As a result, area A is subdivided into four different sub-areas - sub-areas A1, A2, A3, and A4. Figure 4A In the example illustration of , the number of sub-areas is based on the number of users in virtual location 1. The sub-areas have the same size, and each sub-area includes one or more users from area A. The number of users in each sub-area may be the same or may be different. The users in each sub-area include players and / or spectators of the online game. It should be noted that even when the user is a spectator who does not provide game interaction (i.e., user input) to affect the game state of the online game, each spectator who pays attention to the player may also have to be presented with the online game from the perspective of the corresponding player. Alternatively, each spectator may generally pay attention to the overall flow of the online game and may be provided with a view of the game world.

[0051] Each created sub-region is assigned a different compute to process the game interactions generated therein, thereby providing game data for each user in the corresponding sub-region. For example, CPU 1 is assigned to sub-region A1, CPU 2 is assigned to sub-region A2, CPU 3 is assigned to sub-region A3, and CPU 4 is assigned to sub-region A4, where each of the computes (CPU 1, CPU 2, CPU 3, and CPU 4) assigned to sub-regions A1, A2, A3, and A4, respectively, is identified based on the resources available to handle the processing load generated by the game interactions generated in the corresponding sub-region. Figure 4A In the example shown, one computation is assigned to each sub-region. In other examples, multiple computations may be assigned to each sub-region to handle the processing load generated therein.

[0052] Figure 4B An implementation is illustrated where a virtual location 1 includes multiple regions (regions AC) to each of which a different compute (respectively CPU 1-3) is assigned to handle the game interactions generated within each region. Since a certain number of users from other regions within virtual location 1 or from other virtual locations in the game world visit region A of virtual location 1 at a given time, region A is divided into multiple sub-regions based on the number of users visiting region A. Each sub-region includes one or more users of region A and is assigned different compute to handle the processing load within the corresponding sub-region. The number of sub-regions generated within virtual location 1 is only an example, and a fewer or greater number of sub-regions may be generated within virtual location 1. Figure 4B-1 , Figure 4B-2 and Figure 4B-3 Different ways of dividing area A are shown. Figure 4B-1 As shown, by dividing the region A along the vertical axis, the region A is divided into three additional sub-regions A-1, A-2 and A-3. Figure 4B-2 As shown, by dividing the region A along the horizontal axis, the region A is divided into three additional sub-regions A'-1, A'-2 and A'-3. Figure 4B-3 An example is shown in which area A is subdivided into 6 sub-areas (A"-1 to A"-6). The number of sub-areas created according to the division of area A may vary based on the number of users within area A.

[0053] exist Figure 4B-1 , Figure 4B-2 and Figure 4B-3 In the example shown, the sub-areas created by dividing area A are equal in size, and each sub-area includes one or more users of area A. Figure 4B-1 to Figure 4B-3An example is shown when dividing an area within a virtual location into sub-areas. The same example can be extended to dividing a virtual location or sub-areas defined within an area of ​​a virtual location. The number of sub-areas and the direction in which the areas are divided are provided as examples only, and each area can be subdivided vertically, horizontally, diagonally, or in any other manner into a fewer or greater number of sub-areas and the number of sub-areas is based on user density and predefined limits on the computations assigned to the areas. Different computations are assigned to each newly created sub-area, which are separate from the computations assigned to area A. For example, in Figure 4B-1 , CPUs 4-6 are respectively allocated to sub-areas A-1 to A-3 created in area A, wherein CPUs 1-3 are allocated to area AC created in virtual location 1 (see Figure 4B ). Similarly, in Figure 4B-2 In the example, CPUs 4 to 6 are allocated to sub-areas A'-1 to A'-3, respectively, and Figure 4B-3 In FIG. 4 , CPUs 4 to 9 are respectively allocated to sub-areas A”-1 to A”-6.

[0054] exist Figure 4B-1 , Figure 4B-2 and Figure 4B-3 In the example scenario shown, the computation assigned to region A can coordinate all sub-regions created within region A ( Figure 4B-1 Sub-areas A-1 to A-3, Figure 4B-2 Sub-areas A'-1 to A'-3, or Figure 4B-3 In an alternative implementation, a different computation is assigned to each sub-region within region A to process game interactions generated by one or more users in the corresponding sub-region, and the computation assigned to one of the sub-regions within region A can coordinate the processing of game interactions within the sub-regions of region A. Coordination includes managing the inputs and outputs of the different computations within region A, and providing the outputs of the coordinated computations to the computations assigned to region A. As previously discussed, the number of regions created within the virtual location and within the sub-regions of the virtual location, and the number of computations assigned to each created sub-region are provided by way of example only and should not be considered limiting.

[0055] In alternative implementations, sub-areas may be created within a particular portion of the area of ​​the virtual location, or additional sub-areas may be created within a particular portion of a sub-area based on the number of users that visit a particular portion of the area or sub-area during game play. Figure 4COne such implementation is illustrated, where the portion of area A identified within virtual location 1 is further divided into three additional sub-areas A"'-1 to A"'-3 based on the user density within the portion of area A. In this implementation, the remaining portion of area A is considered to be a fourth sub-area A"'-4. The 3 sub-areas A"'-1 to A"'-3 are the same size, and the size of the fourth sub-area A"'-4 is different from the 3 sub-areas created within the portion of area A. Figure 4C In the example shown, each of sub-regions A"'-1 to A"'-3 includes one or more users from region A, while sub-region A"'-4 may or may not include any users from region A. This may be the case where the users of region A are all accessing the portion of region A in which the sub-region is created, while there are no users in the remainder of region A. As the game progresses, one or more users may move to sub-region A"'-4 from one or more of sub-regions A"'-1 to A"'-3 or from other regions of a particular virtual location or from other virtual locations. As a result, in one implementation, when the sub-regions are created, different computations are assigned to each of sub-regions A"'-1 to A"'-4 (CPU 4-7, respectively). In another implementation, different computations are assigned to each of sub-regions A"'-1 to A"'-3 (CPU 4-6), while sub-region A"'-4 is assigned computations for region A (CPU 3). Although Figure 4C The example shown in shows one calculation assigned to each of sub-areas A"'-1 to A"'-4, but there may be multiple calculations assigned to each sub-area, depending on the processing load detected at each sub-area.

[0056] After assigning one or more computations to each sub-region created within sub-region A of region A of virtual location 1, the computation region manager 120 migrates the relevant game interactions of each user within region A to a corresponding one of the computations assigned to the newly created sub-region. As long as users continue to visit one or more regions or virtual locations and participate in game interactions of online games, the process of managing virtual locations by generating regions, sub-regions and assigning computations to different virtual locations, regions and / or sub-regions will continue to supply sufficient resources for the online game to handle game interactions.

[0057] As input, the game scenario processor 111 receives the processing load information (i.e., the amount of game interaction) of the calculation assigned to different virtual locations from the location load analyzer 107 and the movement of users in the game world (including information related to users who visit specific areas or sub-areas created in one or more virtual locations) from the calculation area manager 120, and uses the information to optimize the processing of each user's game interaction to generate the user's game data. The optimization of game data can include determining the processing order of game interactions provided by different users and for different parts of each user's game interaction based on the importance of data to each user, and processing the user input representing each user's game interaction accordingly. The processing order allows some parts of each user's user input to be processed first, and then the remaining parts are processed. Since only some parts of each user's user input need to be processed immediately, optimizing the game interaction processing helps to reduce the computing pressure. It should be noted that in the present application, game interaction and user input can be used interchangeably to refer to the input provided by the user during the game progress of the online game. The input provided by the player can be the game state of the game that controls the player, and the input provided by the audience can be the game progress of which player the audience wants to focus on.

[0058] For example, considering that the virtual position of 3 areas is identified in the virtual position, the first group of users in the first area may face or approach from the right side of the game world and see / interact with the second group of users or game objects in the second area arranged on the right and adjacent to the first area. Similarly, the second group of users in the second area may face or approach from the left side of the game world and see / interact with the first group of users or game objects in the first area arranged on the left side of the second area. In this scenario, the processing order of processing the game interaction of the first group of users in the first area is defined so that the part of the interaction pointing to the right side of the first group of users (i.e., the game data related to the direction facing the user in the first sub-area) is processed first, and the interaction pointing to the left side of the first group of users (i.e., the game data related to the direction opposite to the direction facing the user in the first sub-area) is processed again or later. This is because the first group of users in the first sub-area are more interested in what happens on their right side (i.e., the direction they are facing) than on their left side (i.e., the direction behind them-the direction opposite to the direction they are facing). The order of interaction processing for each user can be based on the field of view of the corresponding user.

[0059] Similarly, the processing order of the interaction of the second group of users in the second area is defined so that the interaction to the left of the second group of users (i.e., the game data related to the direction facing the user) is processed first, and the interaction to the right of the second group of users (i.e., the game data related to the direction opposite to the direction facing the user) is processed later. Alternatively, the processing order can be based on the timing associated with the interaction. For example, the first user in area A fires at the second user in area B, and the second user is injured. In response, the third user in area B fires at the first or fourth user in area A, and the first or fourth user is injured. The game scenario processor 111 determines which interaction needs to be processed first by utilizing the activity timing of each user and processing the interaction of different users accordingly to reach the game state of the online game, so that the game data suitable for the user can be presented to each of the users (the first, second, third and fourth users). The computing area manager manages the input (interaction) from the user, which is located in different virtual locations and different areas, sub-areas within one or more virtual locations, and shares the game state between different virtual locations, areas and sub-areas within one or more virtual locations. Information from the computational region manager 120 is used to assign users to different sub-regions within the virtual location and / or different virtual locations. Game data with each user's game state generated by the computational region manager is forwarded to the user's corresponding client device for rendering.

[0060] Figure 3A Some components for supplying resources for online games in one implementation are illustrated. Distributed game engine 100 includes multiple components, which are used to process user inputs of multiple users to generate game data for each user, identify the virtual position of the user in the game world, detect when the user visits the area within a specific virtual position at a given time, and in response to supply computing resources for the area so that the game interaction of the user in the area can be processed in a timely manner. When multiple users access online games (such as MMO games executed on a game cloud system) to play games, distributed game engine 100 uses user position tracker 105 to follow them as the user advances in the online game. The user input provided by the game interaction is used to generate game data for the corresponding user. The virtual position in the online game can be defined as an area in the game world, and the area includes game objects and challenges of a specific level of the online game. For example, in an interstellar space game, a virtual position can be defined as an area within a galaxy, such as an area covered by the space between any two astronomical objects (such as planets, stars, asteroids, spaceships, etc.) or a user can visit. Similarly, in an international war game covering the world, virtual locations may be defined as countries or continents, and regions may be defined as states or cities or towns or mountains or rivers or dams within countries, etc.

[0061] When a user selects an online game to play, the user is provided with access to one or more virtual locations within the game world of the online game. The user location tracker 105 is used to identify the current virtual location of each user in the game. The information provided by the user location tracker 105 can be used to determine when a certain number of users visit an area within a specific virtual location. Multiple users may have gathered in an area of ​​a specific virtual location at a given time while trying to overcome challenges in the game. The number of users in a region may lead to an increase in user input (i.e., game interaction) in the region, resulting in an increase in game data generated in the region.

[0062] At least one calculation is assigned to the users of each virtual location within the game world to handle their game interactions and generate game data for each user. In some implementations, each calculation may have a predefined limit on the number of users it can handle. The location load analyzer 107 is used to determine whether the number of users accessing the virtual location area can be handled by the calculation assigned to the virtual location or exceeds the predefined limit defined for the calculation. When the number of users exceeds the computing capacity, the location load analyzer 107 signals the calculation distributor 109 to supply additional calculations to assist the existing calculations in processing the game interactions in the virtual location. The calculation distributor 109 determines whether the increase in game interactions can be handled only by increasing the computing resources of the existing calculations, or whether new calculations need to be assigned to the virtual location. Based on this determination, the calculation distributor either supplies additional resources to the existing calculations or signals the dynamic area creation engine 121 to provide additional calculations to the virtual location.

[0063] The dynamic region creation engine 121 analyzes the type of game being played (e.g., graphics intensive or computationally intensive), the type of user who has visited the region within a particular virtual location of the game world (e.g., advanced players, intermediate players, novice players, or spectators), and determines whether the existing calculations allocated to the online game are sufficient to handle the number of users who have visited the region of the virtual location. Each calculation allocated to the online game may have a predefined limit on the number of users it can handle, and the predefined limit may be based on the type and number of resources available in the calculation. In order to assist in providing game data to each of the multiple users playing the online game, one or more calculations may be provided to each virtual location in the game world where one or more users exist. Based on the analysis, when the number of users in the region within a particular virtual location exceeds the predefined limit for the allocated calculation, the dynamic region creation engine 121 may divide the region in the particular virtual location into multiple sub-regions. Each sub-region is defined by a boundary, and at least one user of the region exists within the boundary. The dynamic region creation engine 121 then interacts with the calculation distributor 109 to allocate additional calculations to the region to assist in processing the game interaction of the region. In some implementations, each sub-region is assigned different one or more calculations to process the game interactions of users in the sub-region and generate game data for each user in the corresponding sub-region. The game data for each user includes the game state of the user's online game based on the interaction provided by the user. The game data generated by the calculation assigned to the sub-region is assembled by one of the calculations of the sub-region or by the calculations assigned to the region or a specific virtual location. The assembled game data is used to generate the game state of the online game. The dynamic region creation engine 121 uses a game state coordinator 121a to coordinate the game data of different calculations and generate a game state for the online game.

[0064] The game state information and user location information are forwarded by the dynamic zone creation engine 121 to the user zone allocation manager 125. The user zone allocation manager 125 stores the user's current location for the online game locally and shares the location information with the user data migration agent 127. The user data migration agent 127 uses the location information of each user to determine the order of game data that needs to be provided to each user and forwards the game data frames to the client device of the corresponding user accordingly. The order of the game data is determined by the game scenario processor 111.

[0065] The game scenario processor 111 processes the user input in each virtual position by determining the current scenario of the online game and the processing order of the game data for each user. For example, the processing order of each user can be determined by the data prioritizer 111a based on the vision of each user, the criticality of the different parts of the game data, the timing associated with the game data, etc. The data prioritizer 111a can determine the vision of each user by checking the direction each user faces during the game and / or the direction in which the user advances in the online game. If the user advances from the left side of the game world to the right side, the vision will be the side (i.e. the right side) that the user faces in the game world. As a result, at the time when the user faces the right side, the game data related to the game world on the right side of the user will be given a higher priority compared with the game world behind the user (i.e. the left side of the game world). If the user jumps around to cope with the challenge on the left side of the game world after overcoming the challenge on the right side, the left side of the game world in the user's vision during the time when the user faces the left side is given a higher priority, and at the same time, the right side of the game world behind the user is given a lower priority. The game scenario processor 111 uses the processing order information provided by the data prioritizer 111a to process the game interaction of each user. Because online games receive input from multiple players (i.e., hundreds or thousands of players) at any given time, prioritizing each user's game interactions and processing portions of the game interactions will reduce the amount of game data being generated by each computation assigned to a virtual location, thereby efficiently utilizing the allocated processing resources while ensuring that appropriate game data is presented to users in a timely manner to enrich their gaming experience.

[0066] The processed game data of each user is forwarded to the user data migration agent 127 to assemble the game data of each user, encode the game data and stream the game data frame to the corresponding client device of the user. The game data of each user is received at the user migration agent 127, assembled and transmitted according to the processing order determined for each user. The processed game data is also stored in the data storage area 260 for determining the user metric and game data metric of the online game, which can be used for classifying the user and determining the calculation type that needs to be assigned to the online game. As the user continues to interact with the online game, more users may move into the area in the specific virtual location, or existing users may move out of the area in the specific virtual location. The dynamic area creation engine 121 and the game scenario processor 111 work together to ensure that the calculation of the game interaction of the user assigned to process each virtual location and each sub-area in the given virtual location has enough resources to handle the processing load of the online game.

[0067] Figure 3BVarious components of a compute region manager 120 of a distributed game engine 100 in an alternative implementation are illustrated for tracking a user's virtual location within a game world of an online game, managing computations assigned to virtual locations within the game world, and migrating a user's game data to different computations. In this implementation, a dynamic region creation engine 121 can interact with additional components within the compute region manager 120 to coordinate the processing of a user's game interactions within an online game by generating sub-regions and by generating signals to spin up or spin down computations / computational resources at different virtual locations of the online game. Some components within the compute region manager 120 include a dynamic region creation engine 121, a region boundary coordinator 123, a user region allocation manager 125, a user data migration agent 127, a data synchronizer 129, and a spin up / spin down director 131, to name a few.

[0068] The distributed game engine executes the game logic of the MMO game (i.e., online game) that processes the game interactions received from multiple users and generates game data for the online game. Since the online game is accessed by multiple users distributed between various geographical locations, the distributed game engine and the instance of the game logic are executed on multiple servers in the game cloud system and accessed by the user through a network 200 (such as the Internet). The user location tracker 105 in the distributed game engine is used to monitor the movement of the user in the virtual location of the game world of the online game. The user can be identified in the virtual location of the game world using a game object or an avatar. Different virtual locations can be defined for different levels of game play, and users can be identified in different virtual locations based on the level of game play and the progress made in the online game. The user location tracker 105 can analyze the game data generated during the game play to determine the virtual location of each user of the online game and detect when a certain number of users visit an area in a virtual location of the game world.

[0069] Upon detecting the number of users in the area of ​​a particular virtual location, the location load analyzer 107 of the distributed gaming engine 100 is operable to determine whether the number of users in the area exceeds a predefined limit defined for computations allocated to process interactions generated within the virtual location identified in the gaming world. As each user moves around within the gaming world during gameplay, the number of users accessing the area of ​​a particular virtual location may vary. As a result, the location load analyzer 107 continually monitors the number of users present in the area of ​​a particular virtual location to determine whether the number of users exceeds a predefined limit for computations allocated to the particular virtual location.

[0070] The calculation distributor 109 uses information from the location load analyzer 107 and the user location tracker 105 to determine the amount of calculation required to handle the game data processing load in a specific virtual location. The calculation distributor 109 can also determine the type and amount of calculations that have been allocated to the online game to process the game data generated at different virtual locations identified in the game world. Using information related to the amount of calculations that have been allocated and the amount of calculations required for the online game and the number of users who visit the area at a given time during the game, the calculation distributor can determine whether the calculations allocated to the online game are sufficient to handle the interaction of the area of ​​the virtual location, and therefore handle the online game, or whether any adjustments need to be made to the calculations allocated to the online game. For example, the currently allocated calculations may not be enough to handle the interaction of multiple users gathered in the area of ​​the specific virtual location, and additional calculations may need to be allocated to handle the interaction of multiple users in the specific virtual location. In such cases, the location load analyzer 107 can send a signal to the dynamic area creation engine 121 within the calculation area manager 120 to allocate additional calculations to the specific virtual location.

[0071] Alternatively, the computation currently allocated to a particular virtual location of an online game may exceed the computation required to handle the number of users that have gathered in the area. As a result, it may be necessary to de-allocate some of the computations allocated to the virtual location and migrate the user's interactions to other computations allocated to the online game. The location load analyzer 107 may send a signal to the dynamic region creation engine 121 within the computation region manager 120 to allocate additional computations to a particular virtual location. The user location information from the user location tracker 105, the computation information provided by the computation allocator 109, and the location load information provided by the location load analyzer 107 are shared with the dynamic region creation engine 121.

[0072] The dynamic region creation engine 121 uses the signal from the position load analyzer 107 to adjust the calculation assigned to a specific virtual position of the online game. Since the online game is an MMO game with multiple players (i.e., users) accessing and playing the online game, each player may advance in the online game at their own speed. As a result, each player may be in a different virtual position of the online game. Therefore, different calculations are assigned to the online game to allow different calculations to handle the interaction of users in the corresponding virtual position. When multiple users visit a specific area within a specific virtual position, there is an increase in the interaction in the area that the assigned calculation may or may not be able to handle. When the currently assigned calculation cannot handle the number of users in the area of ​​the specific virtual position, the dynamic region creation engine 121 divides the area into multiple sub-areas, each sub-area having at least one user of the area. Each sub-area is defined as having a boundary, and there are users of the sub-area within the boundary. The dynamic region creation engine then interacts with the spin-up / spin-down guide 131 to allocate additional calculations to the area. In some implementations, the spin-up / spin-down guide 131 can allocate additional calculations at the micro level or the macro level.

[0073] The user can be a player or an audience. The player can be further classified into a novice, intermediate or expert category. Similarly, the audience can be classified into an audience that pays attention to the general game progress of the online game, or an audience that pays attention to one of the player types (expert, intermediate or novice). The dynamic area creation engine 121 can determine whether the number of users gathered in the area within a specific virtual location is within the predefined limit for the calculation assigned to the specific virtual location. If the number of users exceeds the predefined limit within a threshold percentage (e.g., 5% or 10%), the dynamic area creation engine 121 can send a signal to the spin-up / spin-down guide 131 to adjust the calculation at the micro level. However, if the number of users in the area of ​​the specific virtual location exceeds the predefined limit of the calculation by more than the threshold percentage, the dynamic area creation engine 121 can send a signal to the spin-up / spin-down guide 131 to adjust the calculation at the macro level. It should be noted that the dynamic area creation engine 121 can determine the type of user and the number of each type of user that has been gathered in the area when adjusting the calculation of the specific virtual location assigned to the online game.

[0074] In one implementation, micro-level adjustments may include adding additional CPU cores, GPU bandwidth (if the GPU is shared), memory, or other computing resource components to an existing computation to allow the additional computing resources to assist in handling game data at a particular virtual location. The above-described micro-level adjustments are one example, and other forms of micro-level adjustments may also be performed. In one implementation, macro-level adjustments may include adding additional servers or server clusters to a particular virtual location to assist in processing game data generated therein. The additional servers may be physical servers, virtual servers executed using the computing resources of the host, container servers, or any combination thereof. The above-described macro-level adjustments are one example, and other forms of macro-level adjustments may also be performed.

[0075] Once the sub-regions are created, information related to the sub-regions (such as virtual sub-borders for defining the sub-regions) is shared with the region boundary coordinator 123. The region boundary coordinator 123 uses the boundary definition logic 123a and the region stitcher 123b to identify and manage users in each sub-region created in the region of a specific virtual location. The boundary definition logic 123a uses the boundaries of the sub-regions created in the region, the boundaries of the region in the virtual location, and the boundaries of the virtual location identified in the game world to determine whether one or more users exist on the boundary separating two consecutive sub-regions or two consecutive regions or two consecutive virtual locations by interacting with the region stitcher 123b. The region stitcher 123b stitches the sub-regions in each region, the regions in each virtual location, and the virtual locations in the game world by coordinating the game states of each user in the sub-regions, regions, and virtual locations together to provide a seamless virtual world view of the game world of the online game. The region boundary coordinator 123 uses information from the seamless virtual world view of the game world to determine whether any user is located on the boundary between any two sub-regions created in a specific virtual location or on the boundary between any two consecutive defined regions in the virtual location. For example, when creating sub-regions, the dynamic region creation engine 121 attempts to subdivide regions within a particular virtual location so that most users within the region are included within the boundaries of each sub-region. However, one or more of the users may fall on the boundary that separates two consecutively defined sub-regions. Therefore, the region boundary coordinator 123 identifies those users that fall on the boundary between any two consecutive sub-regions and coordinates the synchronization of the game states of those users between the calculations assigned to the corresponding sub-regions so that the appropriate game state of the online game is provided to the users that exist on the boundary.

[0076] The user region allocation manager 125 uses information from the virtual world view provided by the region boundary coordinator 123 to identify the sub-region and / or virtual position to which each user belongs, and stores this information locally for use during the game. As the user moves around in the game world, the user's position changes continuously, and when changes related to each user are detected, the region allocation manager 125 updates the changes. The user's current position is also shared by the user region allocation manager 125 with the user data migration agent 127 and the spin-up / spin-down guide 131. The spin-up / spin-down guide 131 obtains the current position of each user in the game world, identifies the calculation assigned to the corresponding virtual position / sub-region by querying the calculation distributor 109, and sends a signal to the calculation distributor 109 to spin up additional calculations for each sub-region. The additional calculations supplied to a specific virtual position are used together with the previously supplied calculations to process the game interactions generated by the users in each sub-region.

[0077] In other implementations, some of the sub-areas and / or virtual locations can be reset by merging them together to form improved sub-areas / virtual locations. For example, an area within a specific virtual location of a game world may be subdivided into multiple sub-areas, wherein different calculations are assigned to each sub-area to handle game interactions generated by users present in the sub-areas. During the game, when one or more users in a first sub-area move out of the first sub-area to a second sub-area or move out to a different area or a different virtual location, the calculation assigned to the first sub-area may be underutilized or idle. In order to optimize the computing resources assigned to the online game, the calculation assigned to one or more sub-areas can be reallocated by resetting one or more sub-areas of a specific virtual location. The reset of one or more sub-areas can include merging the first sub-area with the second sub-area to generate a combined sub-area and assigning the calculation assigned to the first sub-area to the combined sub-area, and reallocating the calculation assigned to the second sub-area to some other sub-area, virtual location, or another online game. Similarly, when an area within a specific virtual location is subdivided into multiple sub-areas, wherein only some sub-areas have users during the game, the calculation is allocated so that the calculation assigned to one of the sub-areas including the user is also assigned to the sub-area that does not include any user. For example, in Figure 4C In the example shown, each of the first three sub-regions including one or more users is assigned a different calculation, and the fourth sub-region that does not include any users is assigned a calculation of the virtual location or one of the sub-regions.

[0078] When one or more of the users from the first sub-area move out of the first sub-area into the second sub-area, the calculations allocated to the second sub-area can be allocated to handle the excess processing load generated by the one or more users moving into the second sub-area. As the user moves from the first sub-area, the first calculation may become idle or underutilized. As a result, the first calculation can be reallocated to a different virtual location or online game by merging the first sub-area with the second sub-area and allowing the second calculation to handle the processing load generated by the game interaction at the combined sub-area. The spin-up / spin-down guide 131 is used to determine the processing load that each calculation can handle, to what extent each computing resource of the calculation can be stretched, and which calculation / computing resource needs to be actively put into use, and which calculation / computing resource needs to be reduced or inactive. In some implementations, the spin-up / spin-down guide 131 can signal to increase or reduce the calculations allocated to the online game based on cost or demand. For example, the spin-up / spin-down guide 131 can interact with the power manager scheduler 133 to determine which calculations remain active and which calculations are inactive and can make such determinations based on power costs. For example, if at a certain time, the cost of electricity is high, the power manager scheduler 133 can signal the spin up / spin down director 131 to maintain the computations assigned to the virtual location or sub-region and place more emphasis on the assigned computations, rather than allocating additional computations to handle the processing load of the virtual location or sub-region. Similarly, if at other times the cost of electricity is low, the power manager scheduler 133 can signal the spin up / spin down director 131 to add additional computations to provide more processing power to handle the processing load of the virtual location or sub-region. Thus, the power manager scheduler 133 is used to ensure that the computations provided to the different virtual locations of the game world of the online game are optimally supplied and utilized so that the allocated resources can efficiently handle the processing load while being cost-effective.

[0079] Once the calculation is assigned to different sub-areas and / or virtual locations, the user data migration agent 127 is used to migrate the relevant game interactions associated with different users to the corresponding calculations in the calculations assigned to the corresponding sub-areas / virtual locations. Migrating the game interactions of different users includes migrating the game state of the user's online game to the corresponding calculations assigned to the sub-areas or virtual locations where the user is located. Migrating the game state of the online game includes migrating the physical state, rendering state, any damage information connected in the game world, and any other game progress data of one or more users' online games from one calculation to another. For example, if a sub-area has been created in an area of ​​a specific virtual location, it is necessary to migrate the game state and game interactions of the users present in the corresponding sub-area from the calculations assigned to the area or specific virtual location to the corresponding calculations assigned to different sub-areas. By migrating the parts based on the priority assigned to each part of the interaction, the game interaction can be migrated to the appropriate calculation, wherein the priority assigned to a part can be based on the timing, importance, criticality, need, each user's field of view, etc. associated with the interaction. For example, when the game world includes a large explosion of a game object caused by the interaction of a user with a game object, it is necessary to first migrate the user's interactive part related to the explosion so as to first process the user's interaction and present the game data related to the explosion to the user. Other interactions may be migrated later based on the priority given to other interactions of the user. Information related to the processing priority given to different game interactions of each user may be provided by the game context processor 111. The processing priority is used to optimize the data processing of the calculation so that the computing resources are used in an efficient manner while ensuring that the appropriate game data is presented to each user in a timely manner.

[0080] The game scenario processor 111 receives the user's position information and the virtual position defined in the game world of the online game from the area boundary coordinator 123, and processes the interaction of each user. In some implementations, the game scenario processor 111 uses a data prioritizer 111a to prioritize the processing of each user's interaction. The data prioritizer 111a can process the interaction related to the game world based on the relative scenario, so that the game data provided to the user includes the game content presented in the order of relevance to the user. For example, the part of the game data related to the game world in the user's field of view (such as the explosion of the game object from the above example) can be provided first, and other game content outside the user's field of view can be provided later. The game scenario processor 111 processes the different parts of the game data associated with each user in the order of relevance, and provides it to the user data migration agent 127, so that the user data migration agent 127 can encode and forward the different parts of the game data to the corresponding client device of each user in the order of relevance.

[0081] In the case where a user exists on the boundary between two continuous sub-areas or on the boundary between two continuous areas within a virtual location, the data synchronizer 129 is used to synchronize data between two or more calculations of the two continuous sub-areas / areas assigned to the user. For example, if the first calculation is assigned to the first sub-area and the second calculation is assigned to the second sub-area, the game data (including game state) of the user existing on the boundary of the first sub-area and the second sub-area is synchronized between the first calculation and the second calculation. The data synchronizer 129 identifies the first calculation and the second calculation assigned to the two continuous sub-areas / areas and generates a synchronization signal to the first calculation and the second calculation to allow them to synchronize the game data associated with the user. The synchronization of the user's game data follows the priority given to different parts of the game data, and the synchronized data is forwarded to the user's client device by the user data migration agent 127.

[0082] User location information and compute allocations are stored in a user profile for each user accessing the online game. When a new user accesses the online game and enters a specific virtual location within the game world of the online game, the distributed game engine 100 uses the user profile information along with the compute allocations to assign the new user to the appropriate compute to handle the game data generated by the new user.

[0083] In some implementations, the distributed game engine can train an artificial intelligence (AI) model to determine the type and amount of computing required for different levels of online games and for different users based on the game status of different users' online games, the type and amount of input provided by users in different virtual locations, the users' expertise level, etc., and the computing area manager 120 of the distributed game engine can use the information included in the AI ​​model to identify and supply the required computing resources for different virtual locations in the game world, where the computing resources can be supplied at a micro level or a macro level.

[0084] The game state provides the complexity of the game progress of the online game at a specific point in time. For example, the game state may include game characters, game objects, game object attributes, game attributes, game object states, graphic overlays, etc. The game state also includes the state of each device or module or component of the server network used in the execution of the online game instance, such as CPU, GPU, memory, register value, program counter value, programmable DMA state, DMA buffer data, audio chip state, CD-ROM state, available communication bandwidth, etc., for generating and processing game progress data for rendering. The game state also identifies the part of the executable code of the online game currently being executed and the part of the executable code that needs to be loaded to continue the game progress. The game state may also include the saved data of each user, including the player's user profile, the user's customization of the game object, the game type, the game level / difficulty selected by the player, the number of game tools, bonuses, points, cash, rewards, etc. The game state may also include randomly generated features or AI overlays or game complexity, which help to understand the game details associated with the game progress of the online game. The game state and other relevant game-related data provide comprehensive details from which the processing load of the online game can be easily estimated.

[0085] The online game executed on the game cloud system may be a massively multiplayer online (MMO) game, and the game server assigned to the online game may include an instance of a multiplayer distributed game engine that communicates with the game logic of the online game to capture the activities of players (i.e., users) and use the activities of the players to generate game data for the online game for each player. The game logic is configured to manage the game state of each player during the MMO game session and provide the game state to the distributed game engine, which provides functional components for processing different features of the online game, such as game physics, shading, scripting, texturing, audio, animation, memory management, scene graphs, assembly, encoding, etc., for the game data generated by each player or spectator participating in the MMO game session.

[0086] The distributed game engine 100 includes multiple processing engines or components to enable parallel processing of different features of game data generated in response to user input provided during the game play of the online game. Therefore, during the game play session of the online game, the instance of the distributed game engine 100 together with the instance of the game logic is executed on multiple servers in the game cloud system (GCS) to allow the distributed game engine to process game data in a fast and efficient manner. When the user plays the online game, the user's input is collected and processed to affect the game state of the game and generate game play data to be transmitted to the client device of the user. The game state of the online game is analyzed to identify the user's user metrics and the game state metrics of the online game. The user metrics are updated to the user data of the user. Similarly, the game state metrics of the online game are updated to the game data of the online game. The user metrics and the game state metrics are used to prioritize the game data generated by different users during the game play and forwarded to the client device of the corresponding user.

[0087] The various components of the distributed game engine 100 are used to determine the resource types and the quantity of each type of resource required to process the game data generated in each virtual location of the game world of the online game. The determination is based on the game state of each user's online game, user input, and the processing criteria defined for the online game. For example, the processing criteria may indicate that certain parts of the player's game data must be prioritized over certain other parts of the game data. Based on the determination, the game scenario processor 111 processes different parts of the game data, and the spin-up / spin-down director supplies computing resources or calculations to different virtual locations identified in the game world of the online game, so as to process the game of the online game in a fast and efficient manner for each player.

[0088] In general, a game engine is a software layer that serves as the basis for games (such as MMO games) and provides a framework for developing online games. The game engine abstracts the execution details of the common related tasks (i.e., game engine tasks) required for each online game, and the game logic of the corresponding online game provides the details of how to play each online game. The game engine framework includes a plurality of reusable functional components for processing the core features of online games that make online games lifelike. The basic core features processed by the game engine can include physics (e.g., for collision detection, collision response, trajectory, object motion based on gravity, friction, etc.), graphics, audio, artificial intelligence, scripting, animation, networking, streaming, optimization, memory management, threading, localization support, etc. The reusable components include a processing engine for processing the core features identified for online games. During the game runtime, the game engine manages the game logic of the online game, manages the allocation and synchronization of the functional parts of the game engine to process the game data in the best way, and generates a game data frame, which is transmitted back to the client device for rendering. The various game engines currently available provide different core functions, and a suitable game engine can be selected based on the functions that can be used to execute online games.

[0089] In some implementations, instances of the game engine and game logic are distributed across multiple servers, with each server executing a certain functional portion of the game engine. Different servers can process game data in parallel by executing different instances simultaneously. In this way, a distributed game engine allows for faster and more efficient processing of game data. The game engine is configured to handle multiple functional portions required to bring online games to life. Each online game developed for an MMO gaming environment can identify different functional portions of the game engine that are required for the online game to run.

[0090] The functional part can be identified by the developer of the online game, or can be determined by analyzing the game logic of the online game. Based on the specification requirements of the online game, each game engine instance executed on the server (i.e., interchangeably referred to as "computation") uses a specific processing engine of a distributed game engine to process the functional part related to the specific characteristics of the game data generated according to the game progress of the online game. The instance of the game engine provides iterative processing of game data by using the output from the first server (i.e., the result of the functional part processing) as the input of the second server, the output from the second server as the input of the third server (or the first server), and so on. In some implementations, a single server can be allocated to execute an instance of the game engine and game logic for processing the specific functional part of the game engine. In other implementations, multiple servers (each server executing an instance of the game engine and game logic) can be allocated to process the specific functional part. Multiple servers can be identified and allocated based on the amount of processed data generated at the virtual location. Since the game engine and game logic are instantiated on multiple servers to process the different functional parts of the game engine required to make the online game lifelike, the game engine is called "distributed". Therefore, any reference to a distributed game engine used in this application refers to a configuration in which the game engine and corresponding portions of the game logic are instantiated on multiple servers.

[0091] The game data output from different servers is synchronized, assembled, encoded and transmitted to the corresponding client devices in the client devices for rendering. To assist in the assembly of the game data, the game engine may include a synchronization engine to synchronize the distribution of the various functional parts of the game engine to the different servers, synchronize the processing of the different functional parts of the game engine assigned to the different servers, and route the processed results between the servers and between the servers and the user migration agent. The user data migration agent of the distributed game engine is used to track the servers (i.e., calculations) used to process the game data of a specific user, and collect the output game data from different servers / calculations, assemble the output game data for each user, encode and forward the encoded game data to different client devices for rendering.

[0092] When the distributed game engine uses the AI ​​model to determine the type of computing / computing resources required to process game data, the distributed game engine can use a machine learning algorithm to fill the neural network of the nodes of the AI ​​model with information from the game data of the online game generated during the previous game play session. The machine learning algorithm may include a classifier for providing output to generate / improve the AI ​​model. Each classifier may have an engine / module that is configured to identify and process specific features of the game data generated at a specific virtual location or sub-area identified in the game world, and update the nodes of the AI ​​model with information related to the processing load and type, and the amount of resources used to process specific features. The processed information is forwarded downstream to other classifiers together with the game data for further processing. The output from the AI ​​model is used to supply computing / computing resources for online games, determine whether the existing computing resources or server computing are sufficient to process the game data, or whether the server / server resources need to be adjusted to optimally process the game data of the online game.

[0093] The spin-up / spin-down director 131 is used to dynamically adjust the calculation / computing resources assigned to each virtual location of the game world of the online game, and allocate the game interactions related to different users to the appropriate calculation / computing resources so that the interactions of each user can be efficiently processed, and the generated game data is transmitted to the user's client device in a timely manner for rendering. The game data provided to each user includes the corresponding user's own perception of the game world. For users who are spectators, the game data provided to the audience may include their own perception of the online game or the perception of the players that the audience is concerned about. When a new user joins a game session, the distributed game engine system is configured to route the new user so that users of the online game (i.e., existing users and new users) can obtain a satisfactory game experience.

[0094] In some example implementations, various types of servers may be supplied to execute instances of the game logic of the distributed game engine and the online game, and to process the game data generated for the online game. The server may be a physical server. A physical server (or simply a "server") may be an independent server, or may be part of a data center within a game cloud system. The server in the data center may be an independent server within the data center, or may be part of a rack, each rack containing multiple server computing devices. The physical server includes necessary resources, such as an operating system, memory, and a microprocessor for executing one or more applications and / or one or more functional parts of the game engine. The application or functional part of the game engine is stored in the memory, processed using a microprocessor, and managed by the operating system.

[0095] Alternatively, the server can be a virtual machine as part of a game cloud system. The game cloud system may include multiple virtual machines (VMs) running on the host's hypervisor, wherein one or more virtual machines are configured to support game processors that utilize the hardware resources available to the host's hypervisor to execute online game instances. When multiple game processors associated with multiple virtual machines execute instances of online games, the user's input is collected, organized, and processed by one or more back-end servers (i.e., physical servers or virtual servers) of the game cloud system to affect the game state of the online game. The game data generated for the online game in response to the user input is assembled, encoded, and forwarded to the user's client device as a streaming frame of the game data for rendering. In the case where the distributed game engine uses AI models to supply computing and computing resources, user input is also used to generate training data to train the AI ​​model. Each virtual machine may include one or more applications (e.g., one or more online game applications), which are executed by the operating system using the hardware resources available to the virtualization layer (i.e., hypervisor) of the host.

[0096] In another alternative implementation, the server can be part of a cloud container that allows applications (such as online game applications) and all their dependencies, libraries, and configuration files required to run online game applications to be bundled together into a virtual container (or hereinafter referred to as a "container"), where the application uses the resources allocated in the container to run the application. The container runs without a complete operating system, thereby providing operating system-level virtualization. The container can run with a minimum amount of resources to perform tasks, such as instances of game engines and game logic for online games, where resources (i.e., physical hardware resources) are virtualized. The cloud container is portable because it can be fully deployed to different servers. In one implementation, the container provides application isolation through process and namespace isolation technology by sharing the kernel with the container host. In an alternative implementation, the kernel of the container host is not shared, thereby providing enhanced isolation by running containerized applications from a virtual machine. The above-mentioned types of computing (i.e., servers) are provided only as examples and should not be considered restrictive. Other forms of servers or computing (i.e., computing devices) that provide resources for instantiating game engines and game logic can also be used.

[0097] In some implementations, users can connect to the online game application of the cloud game system from anywhere in the world. The online game application realizes such connection by starting multiple game instances on different servers distributed in different data centers around the world. The user input generated at the corresponding client device during the game of the online game is collected from the server network and game data is generated. The game data is returned to the corresponding client device as a game data frame using any network model. Some examples of network models that can be used to communicate between servers of the game cloud system described in this application include TCP / UDP network models or open systems interconnection (OSI) network architecture based on the International Organization for Standardization (ISO). Data processing and communication between distributed servers can follow any of a variety of existing protocols. The ISO model includes a set of application layers (application layer, presentation layer, session layer) and data stream layers (transport layer, network layer, data link layer and physical layer). The application layer is configured to identify the sending entity and the receiving entity, transmit the data of the application (such as an online game) between the sending entity and the receiving entity in a manner understood by the corresponding entity, and manage and synchronize the communication between the sending entity and the receiving entity with minimal data loss. The data stream layer is configured to determine whether data transmission should be performed in a sequential path or a parallel path, determine a protocol to be followed for packetizing data, assembling the packetized data into frames, and transmitting the data frames along a preferred route. It should be noted that the above description only provides an overview of the ISO model for communicating data through a server network of an online game, and the more detailed details of the role of each layer are understood by those skilled in the art and are therefore not described in more detail.

[0098] Figure 5 An overview of an example system 300A according to an implementation of the present disclosure is illustrated, the system supports collecting user input to update game data and using the updated game data to build and / or train AI models associated with game play of online games. In particular, the system 300A enables access to and play of video games stored in a game cloud system (GCS) 300. In general, the game cloud system GCS 300 can be a cloud computing system operated through a network 200 to support multiple players to play online game applications through corresponding game play. Data associated with those game plays can be used to build and / or train AI models associated with game play of online game applications. In particular, the system 300A includes a GCS 300, one or more social media providers 240, and multiple client devices 101, all of which are connected via a network 200 (e.g., the Internet). Multiple client devices associated with multiple users can be connected to the network 200 to access services provided by the GCS 300 and the social media provider 240. Users can be players or spectators who follow a particular player or game play of an online game.

[0099] In one embodiment, the game cloud system 300 includes a game server 205, a video recorder 271, a tag processor 273 and an account manager 274 (the account manager includes a user profile manager), a game selection engine (i.e., a game selector) 275, a game session manager 285, a user access logic 280, a network interface 290, and a social connection manager 295. The GCS 300 may also include multiple storage systems, such as a game state storage area, a user account, a user data storage area, etc., which may generally be stored in the data storage area 260. Other game storage systems may include a game code storage area 261, a recorded game storage area 262, a tag data storage area 263, a video game name storage area 264, and a game network user storage area 265. In one embodiment, the GCS 300 is a system that can provide online game applications, services, game-related digital content, and interconnectivity between systems, applications, users, and social networks. The GCS 300 can communicate with the user's client device 101 and social media provider 240 via the network interface 290 through the social connection manager 295. 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 illustrates a user's social network connections.

[0100] Players (i.e., users) are able to access services provided by GCS 300 via game session manager 285. For example, account manager 274 enables authentication and access to game titles for players on GCS 300. Account manager 274 stores information about users (players, spectators) and manages user profiles for each user. Account manager 274 can use user information for authentication purposes. In addition, game titles owned by users can be managed by account manager 274. For example, video games stored in game title storage area 264 are available to users who own those video games or have the ability to access them.

[0101] In one embodiment, a user may access services provided by the GCS 300 and social media providers 240 through a connection over the network 200 through a client device 101. The client device 101 may include any type of device having a processor and a memory, whether wired or wireless, portable or non-portable. In one embodiment, the client device 101 may be in the form of a smartphone, a tablet computer, or a hybrid device that provides touch screen functionality in a portable form factor. An exemplary client device may include a portable telephone device that runs an operating system and has the ability to access various applications (apps) that may be obtained through the network 200 and executed on a local portable device (e.g., a smartphone, tablet computer, laptop computer, desktop computer, etc.).

[0102] The client device 101 includes a display 132 that acts as an interface for a user to send input commands 236 and to display data and / or information 135 received from the GCS 300 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 providing a display. Alternatively, the client device 100 may have its display 132 separate from the device, similar to a desktop computer or laptop computer.

[0103] In one embodiment, the client device 101 is configured to communicate with the GCS 300 to enable a user (player) to play a video game. For example, a player can select a video game available in the game name data store 264 via the game selection engine 275 (e.g., by game name, etc.). The selected video game is launched and an instance of the video game is loaded for execution by the game server 205 on the GCS 300. In one embodiment, the game play is primarily performed in the GCS 300, so that the client device 101 will receive a stream of game video frames 135 from the GCS 300, and transmit user input commands 236 for driving the game play back to the GCS 300. The video frames 135 received from the streaming game play are rendered on the display 132 of the client device 101.

[0104] In one embodiment, after the player selects an available game title to play, the player may initiate a game session for the selected game title through the game session manager 285. The game session manager 285 first accesses the game state storage area in the data storage area 260 to retrieve the saved game state (if any) of the last session (for the selected game) played by the player, so that the player can restart the game play from the previous game stop point. Once the resume point or start point is identified, the game session manager 285 can tell the game execution engine in the game server 205 to execute the game code of the selected game title from the game code storage area 261. After the game session is initiated, the game session manager 285 can transmit the game video frames 135 (i.e., streaming video data) to the client device (e.g., client device 100) via the network interface 290.

[0105] During the game, the game session manager 285 can communicate with the recording engine and the tag processor 273 in the game server 205, the video recorder 271, to generate or save a record (e.g., video) of the game or the game session. In one embodiment, the video recording of the game can include the tag content and other game-related metadata entered or provided during the game. The tag content can also be saved via snapshots. The video recording of the game can be saved in the record game storage area 262 together with any game metrics corresponding to the game. Any tag content can be saved in the tag data storage area 263.

[0106] During game play, the game session manager 285 can communicate with the game server 205 to pass and obtain user input commands 236 for affecting the outcome of the corresponding game play of the video game. The input commands 236 entered by the player can be transmitted from the client device 101 to the game session manager 285 of the GCS 300. Input commands (e.g., controller input or user input) 236, including input commands for driving game play and user interaction input, such as label content (e.g., text, images, video recording clips, etc.). Game input commands and any user game metrics (how long the user plays the game, etc.) can be stored in the game network user storage area. Selection information related to the game play of the video game can be used to enable multiple features available to the user.

[0107] Accordingly, the present disclosure describes systems and methods for implementing algorithms to identify virtual locations within a game world of an online game, and provisioning computational and computing resources to handle the processing load at each virtual location to ensure efficient processing of the online game.

[0108] Figure 6An example operational flow of a method for managing processing resources for an online game presenting a game world according to one implementation is illustrated. The method begins at operation 610, where an online game is executed for one or more users. One or more instances of the online game may be executed in response to multiple users accessing the online game to play the game. Access to a virtual location defined in the game world of the online game is provided to each of the one or more users. As shown in operation 620, computations are allocated to process game interactions of one or more users in the game world. Different computations may be allocated to process game interactions generated by users in each virtual location present in the game world. The computations allocated to each virtual location may include a predefined limit on the number of users that the allocated computations may handle. The predefined limit may be based on the amount of game interactions generated by the users, wherein the game interactions include user input provided by users (such as players) during game play.

[0109] Monitor the movement of users in online games, and determine the number of users who visit the area in a specific virtual location in the online game. When the number of users in the area exceeds the predefined limit (as shown in operation 630) for the calculation assigned to the specific virtual location, the area is dynamically divided into multiple sub-areas (as shown in operation 640). The number of sub-areas created for the area can be based on the user density in the area and the division standard used by the distributed game engine. Sub-areas are created with defined boundaries so that each sub-area includes at least one user of the area. In some implementations, the entire part of the area is divided into sub-areas. In other implementations, depending on the gathering position of the users in the area, a part of the area in the specific virtual location is subdivided into sub-areas, and the remaining part of the area is regarded as a separate sub-area. In such implementations, the sub-areas created in a part of a specific virtual location can each have one or more users of a specific virtual location, and the remaining part may or may not include any user.

[0110] After the region is divided into sub-regions, additional calculations are assigned to the regions so that the assigned calculations and the additional calculations process the game interactions of the users in each sub-region, as shown in operation 650. In some implementations, different calculations are assigned to each sub-region, and each different calculation is configured to process the game interactions of the users in the sub-region. The processing of the calculations assigned to the region and the additional calculations is coordinated to generate a game state for the game for each user. The game state of the game is forwarded to the corresponding client device of each user along with the game data of each user. The game data of each user includes the user's perception of the game world of the online game, and this perception is determined based on the game state of the online game.

[0111] Thus, the distributed game engine provides a method for tracking the movement of users within the game world and proactively taking action in real time to supply computing / computing resources to handle the processing load of each virtual location / area within each virtual location during the online game, so as to ensure that the required computing / computing resources are provided to each virtual location / area within each virtual location to handle the processing load generated therein. The action may include generating sub-areas within an area or sub-areas within a sub-area, or resetting two or more sub-areas based on the number of users in the sub-area / area within the virtual location, and allocating / de-allocating computing / computing resources accordingly. The dynamic allocation / de-allocation of computing / computing resources to online games ensures optimal use of computing / computing resources while generating game data for each user in a fast and efficient manner.

[0112] Active tracking and provisioning allow users from one time zone to join the game play of an online game in a seamless manner with other users in another time zone (such as their circle of friends), without the need for users to queue or wait. The game play of an online game is served by different computing / computing resources assigned to different virtual locations identified in the game world, so as to provide game data including each user's own perception of the game world to each user. The computing / computing resources assigned to the virtual locations can be supplied from different data centers, and the game data can be synchronized, processed, assembled and transmitted with minimal delay. Of course, the processing and transmission of game data between computing and computing and client devices in different time zones must take into account the time delay caused by the transmission distance of computing and client devices, and may have to provide additional bandwidth for transmission or prioritize game data according to available bandwidth so that the game data appears to be presented to the user in real time.

[0113] Information related to user locations can be obtained from the user area allocation manager and used by the spin-up / spin-down guide 131 to supply computing / computing resources, and by the data synchronizer 129 to synchronize the user's data. The data synchronizer 129 prioritizes the user's interaction in the virtual location to generate game data based on the scenario of the game and based on the information provided by the data prioritizer 111a, so as to provide users with online games from their own perspectives in a timely manner. Since each player needs their own perception of the online game, it is more efficient to supply separate computing / computing resources to handle the processing data generated in each virtual location so that the computing / computing resources are not stretched too thin. The sub-areas created in the area of ​​the virtual location are defined so that most users are within the boundaries of each sub-area. The calculations assigned to the virtual location are configured to parallelly process game data generated for users in a constantly changing space.

[0114] The various implementations described herein describe a deterministic way to deploy computations when a large number of players enter the same virtual location within the game world of an online game at a given time. Computations / computing resources allocated to different virtual locations are elastically increased or decreased based on the processing demand at the corresponding virtual location, thereby ensuring that computations / computing resources are efficiently utilized. The subdivision of virtual locations and distribution of computations / computing resources is based on the density of users (represented by characters / game objects / avatars) within each virtual location in the game world.

[0115] Figure 7 Components of an example apparatus 700 that may be used to perform aspects of various embodiments of the present disclosure are illustrated. For example, Figure 7 An exemplary hardware system suitable for training an AI model capable of performing various functions related to online gaming and / or game play of online gaming according to one embodiment of the present disclosure is illustrated. The block diagram illustrates a device 700, which may be incorporated into or may be a personal computer, server computer, game console, mobile device, or other digital device each suitable for practicing an embodiment of the present disclosure. Alternatively, the functions of the device may be implemented on a physical server or a virtual machine or container server. The device 700 includes a central processing unit (CPU) 702 for running software applications and optionally an operating system. The CPU 702 may be composed of one or more homogeneous or heterogeneous processing cores.

[0116] According to various embodiments, CPU 702 is one or more general-purpose microprocessors with one or more processing cores. Further embodiments can be implemented using one or more CPUs with a microprocessor architecture that is particularly suitable for highly parallel and computationally intensive applications configured for deep learning, content classification, and user classification, such as media and interactive entertainment applications. For example, CPU 702 can be configured to include a deep learning (AI) engine 701, which is configured to support and / or perform learning operations on providing various functions (e.g., predictions) related to online games and / or online game play. Deep learning engine 701 may include a modeler 720, which is configured to build and / or train an AI model, which is configured to provide various functions related to online games and / or online game play. In addition, CPU 702 includes an analyzer 740 configured to generate and train an AI model. The trained AI model provides an output in response to a set of specific user inputs, wherein the output depends on the predefined functions of the trained AI model. The trained AI model can be used to determine the resource allocation to be implemented during the game to meet the success criteria defined for the online game. The analyzer 740 is configured to perform various functions related to online gaming and / or game play of online gaming, including analyzing output from a trained AI model for given inputs (e.g., controller inputs, game state data, success criteria), and provide responses.

[0117] Memory 704 stores applications and data for use by CPU 702. Storage device 706 provides non-volatile storage devices 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 discs, HD-DVD or other optical storage devices, as well as signal transmission and storage media. User input device 708 conveys user input from one or more users to device 700, examples of which may include keyboard, mouse, joystick, touch pad, touch screen, static or video recorder / camera, game controller and / or microphone. Network interface 714 allows device 700 to communicate with other computer systems via an electronic communication network, and may include wired or wireless communications on a local area network and a wide area network such as the Internet. Audio processor 712 is suitable for generating analog or digital audio output from instructions and / or data provided by CPU 702, memory 704 and / or storage device 706. The components of device 700 , including CPU 702 , memory 704 , data storage device 706 , user input device 708 , network interface 710 , and audio processor 712 , are connected via one or more data buses 722 .

[0118] The graphics subsystem 713 is also connected to the data bus 722 and the components of the device 700. The graphics subsystem 713 includes a graphics processing unit (GPU) 716 and a graphics memory 718. The graphics memory 718 includes a display memory (e.g., a frame buffer) for storing pixel data for each pixel of an output image. The graphics memory 718 can be integrated with the GPU 716 in the same device, connected to the GPU 716 as a separate device, and / or implemented in the memory 704. The pixel data can be provided directly from the CPU 702 to the graphics memory 718. Alternatively, the CPU 702 provides the GPU 716 with data and / or instructions defining the desired output image, and the GPU 716 generates pixel data for one or more output images according to the data and / or instructions. The data and / or instructions defining the desired output image can be stored in the memory 704 and / or the graphics memory 718. In an embodiment, GPU 716 includes 3D rendering capabilities for generating pixel data for an output image based on instructions and data that define the geometry, lighting, shading, texturing, motion, and / or camera parameters of a scene. GPU 716 may also include one or more programmable execution units capable of executing shader programs. In one embodiment, GPU 716 may be implemented within an AI engine to provide additional processing capabilities such as for AI or deep learning functions.

[0119] Graphics subsystem 713 periodically outputs pixel data of an image from graphics memory 718 for display on display device 710 or for projection by projection system 740. Display device 710 may be any device capable of displaying visual information in response to a signal from apparatus 700, including CRT, LCD, plasma, and OLED displays. Apparatus 700 may provide, for example, an analog or digital signal to display device 710.

[0120] It should be understood that the various embodiments defined herein may be combined or assembled into specific implementations using the various features disclosed herein. Therefore, the examples provided are merely some possible examples, rather than limitations on the various implementations that are possible by combining various elements to define more implementations. In some examples, some implementations may include fewer elements without departing from the spirit of the disclosed or equivalent implementations.

[0121] Embodiments of the present disclosure may be practiced with various computer system configurations including handheld devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, etc. Embodiments of the present disclosure may also be practiced in distributed computing environments where tasks are performed by remote processing devices over wired or wireless network links.

[0122] In view of the above embodiments, it should be understood that the embodiments of the present disclosure may employ various computer-implemented operations involving data stored in a computer system. These operations are those operations that require physical manipulation of physical quantities. Any operation described herein that forms a part of the embodiments of the present disclosure is a useful machine operation. The embodiments of the present disclosure also relate to devices or equipment for performing these operations. The equipment may be specially constructed for the desired purpose, or the equipment may be a general-purpose computer selectively activated or configured by a computer program stored in a computer. Specifically, various general-purpose machines may be used together with computer programs written according to the teachings of this article, or it may be more convenient to construct more specialized equipment to perform the desired operations.

[0123] The present disclosure may also be embodied as computer-readable code on a computer-readable medium. A computer-readable medium is any data storage device that can store data, which can then be read by a computer system. Examples of computer-readable media include hard drives, network attached storage devices (NAS), read-only memories, random access memories, CD-ROMs, CD-Rs, CD-RWs, magnetic tapes, and other optical and non-optical data storage devices. The computer-readable medium may include a computer-readable tangible medium distributed on a network-coupled computer system so that the computer-readable code is stored and executed in a distributed manner.

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

[0125] Although the foregoing disclosure has been described in considerable detail for purposes of clarity of understanding, it is apparent that certain changes and modifications may be practiced within the scope of the appended claims. Therefore, the embodiments of the present invention are considered to be illustrative rather than restrictive, and the embodiments of the present disclosure are not limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.

Claims

1. A method comprising: executing an online game for a plurality of users, each of the plurality of users being provided access to a virtual location of a game world provided by the online game; identifying one or more virtual locations of the game world in which one or more of the plurality of users are present; allocating one or more computing resources to each virtual location identified in the game world for processing game interactions provided by the one or more users in each virtual location, wherein the amount of computing resources allocated to each virtual location is based on a processing load required to process the game interactions; monitoring a processing load of each of one or more computing resources allocated to each of said virtual locations identified in said game world; as well as The amount of computing resources allocated to each of the virtual locations is dynamically adjusted to handle the processing load of each of the virtual locations.

2. The method of claim 1, wherein: Monitoring includes verifying that the processing load allocated to each computing resource of a virtual location identified in the game world is within predefined limits established for the computing resource.

3. The method of claim 1, wherein: Dynamic adjustments also include: Based on the processing load detected at the virtual location, one or more additional computing resources are allocated to the virtual location, or one or more computing resources allocated to the virtual location are de-allocated, wherein the processing load is distributed among multiple computing resources allocated to the virtual location.

4. The method of claim 1, wherein monitoring further comprises: identifying an area within the virtual location identified in the game world in which a certain number of users provide game interactions in the area, wherein the number of users in the area is associated with one or more computing resources for processing game interactions provided by the number of users in the area; and verifying that the number of the users accessing the area of ​​the virtual location is below a predefined limit of the allocated one or more computing resources, Wherein the gaming interactions provided by each of the number of users affect the processing load in the area of ​​the virtual location.

5. The method of claim 4, wherein dynamically adjusting further comprises: responsive to detecting that the number of users exceeds a predefined limit, dividing the area into a plurality of sub-areas, wherein each sub-area of ​​the plurality of sub-areas includes at least one user of the area; as well as One or more additional computing resources are allocated to the zone such that the one or more computing resources and the one or more additional computing resources allocated to the zone are configured to process game interactions provided by users in each sub-zone of the zone.

6. The method of claim 5, wherein: The number of the plurality of sub-areas created in the area is based on the number of the users existing in the area.

7. The method of claim 5, wherein: Allocating one or more additional computing resources includes allocating different computing resources for processing user input representing game interactions associated with each sub-region.

8. The method of claim 5, wherein: Identifying the number of users visiting the area includes tracking movement of each of the one or more users into or out of each of a plurality of sub-areas, the movement of each of the one or more users being used to dynamically adjust computing resources allocated to the area.

9. The method of claim 8, wherein: Dynamically adjusting the number of computing resources includes de-allocating one or more additional computing resources allocated to the zone when the number of users within the zone falls below a predefined limit based on movement of the one or more users.

10. The method of claim 9, wherein: De-allocating the one or more additional computing resources is performed after successfully synchronizing game-related data of the game world between the one or more computing resources allocated to the zone and the additional computing resources and the one or more additional computing resources being de-allocated, wherein the game-related data is generated from game interactions of the one or more users in the zone.

11. The method of claim 8, wherein: Dynamically adjusting is accomplished based on resource capabilities of the one or more computations, one or more additional computations allocated to the region, and resource requirements of the region.

12. The method of claim 8, wherein: Each sub-region of the plurality of sub-regions is defined by a boundary and is assigned one or more different computing resources for processing game interactions originating from users present in the sub-region; and Wherein, tracking the movement of each of the one or more users comprises: detecting movement of a user from a first sub-region to a boundary defined between a first sub-region and a continuous second sub-region of a plurality of sub-regions defined in the region; and In response to detecting the user on the boundary, managing communications between computing resources allocated to each of the first sub-area and the second sub-area to enable processing of gaming interactions of the user, the processing of gaming interactions being synchronized between the computing resources allocated to the first sub-area and the second sub-area.

13. The method of claim 8, wherein: Tracking the movement of each of the one or more users includes: tracking the movement of each of the one or more users within the area; and The number of sub-regions within the region is adjusted based on the number of users accessing the region, wherein the adjusting includes merging two or more sub-regions within the region or creating additional sub-regions within the region, wherein adjusting the sub-regions includes adjusting computing resources allocated to the region.

14. The method of claim 1, wherein: Game interactions in the area correspond to user input provided by the one or more users during play of the online game, wherein the one or more users include one of a player or a spectator.

15. A method comprising: executing an online game for a plurality of users, each of the plurality of users being provided access to a virtual location of a game world provided by the online game; identifying one or more virtual locations of the game world in which one or more of the plurality of users are present; allocating one or more computing resources to each virtual location identified in the game world for processing game interactions provided by the one or more users in the virtual location, wherein the amount of computing resources allocated to each virtual location is based on a processing load required to process game interactions originating from the virtual location; monitoring the movement of the one or more users in each virtual location, wherein the monitoring includes identifying one or more users that have entered or left each virtual location; as well as Based on the monitored movement, the amount of computing resources allocated to each of the virtual locations is dynamically adjusted to handle the processing load at each of the virtual locations.

16. The method of claim 15, wherein: Monitoring includes verifying that a processing load of each computing resource allocated to a virtual location identified in the game world is within predefined limits established for the computing resource.

17. The method of claim 15, wherein: Each virtual location is defined by boundaries and is assigned one or more different computing resources for processing game interactions originating from users present in the virtual location, and Monitoring movement also includes: detecting movement of a user from a first virtual location to a boundary defined between the first virtual location and a consecutive second virtual location; and In response to detecting that the user moves to the boundary, managing communications between computing resources assigned to each of the first virtual location and the second virtual location to enable processing of gaming interactions of the user, the processing of gaming interactions being synchronized between the computing resources assigned to the first virtual location and the second virtual location.

18. The method of claim 15, wherein: Monitoring the movement of each of the one or more users includes: tracking the movement of each of the one or more users within the virtual location; and In response to detecting that the number of users in the virtual location exceeds a predefined limit, dividing the virtual location into a plurality of zones, wherein each zone includes at least one user of the virtual location, and each zone is associated with one or more different computing resources for processing game interactions originating from the zone.

Citation Information

Patent Citations

  • Seamless super large scale dummy game world platform

    CN101266633A

  • Virtual and location-based multiplayer gaming

    CN102958573A

  • System And Method For Augmented And Virtual Reality

    CN104011788A

  • Method and system for establishing location-based leaderboard

    US20130013094A1

  • Method for authenticating a wager using a system and method for interacting with virtual geographic zones

    US20140194192A1