# US 11,077,362 B2 · Machine learning driven resource allocation

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,077,362 B2
- Document ID: US11077362B2
- Status: Granted
- Kind: B2
- Application number: 16/208,461
- Filed: 2018-12-03
- Published: 2020-06-04
- Granted: 2021-08-03
- Earliest claimed: 2018-12-03
- Assignees: Sony Interactive Entertainment Inc.
- Applicants: Sony Interactive Entertainment LLC
- Inventors: Steve Agoston
- Web page: https://patentgrep.com/patent/US11077362B2

## CPC

- A63F 13/355: Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an encoded video stream for transmitting to a mobile phone or a thin client
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- A63F 13/335: using Internet
- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- A63F 2300/407: Data transfer via internet
- A63F 2300/531: Server assignment
- A63F 2300/538: for performing operations on behalf of the game client, e.g. rendering
- G06F 2209/5019: Workload prediction
- A63F: CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A distributed game engine for provisioning resources for an online game includes a plurality of management nodes and a plurality of processing nodes. The management nodes are configured to distribute functional portions of the distributed game engine over the plurality of processing nodes. A resource allocation mode is constructed from user inputs game states of the online game and success criteria included in game play training data. A resource allocation agent is used to access the resource allocation model and to communicate with a configuration agent to identify the processing nodes required for processing specific ones of the functional portions for the online game, based on the resource allocation dictated by the resource allocation model. A process synchronization layer interfaces with the processing nodes and the management nodes to provision the resources for executing the functional portions for the online game in order to produce video frames for rendering at client devices of the users.

## Claims

### Claim 1

A computing system having a memory to store a distributed game engine and a processor to execute the distributed game engine, the distributed game engine, when executed by the processor, is configured for provisioning resources for an online game, the distributed game engine comprising:
a plurality of management nodes configured for distributing functional portions of the distributed game engine over a plurality of processing nodes;
a resource allocation model constructed from game play training data, the game play training data includes inputs received from users from game play of the online game, game states of the online game, and success criteria; and
a resource allocation agent for accessing the resource allocation model and for communicating with a configuration agent to identify resources of each of the plurality of processing nodes required for processing specific ones of the functional portions for the online game, based on resource allocation dictated by the resource allocation model,
wherein the distributed game engine includes a process synchronization layer that interfaces with each of the plurality of processing nodes and each of the plurality of management nodes to provide resources for executing the functional portions for the online game that produces video frames for rendering at client devices of the users.

### Claim 2 (depends on 1)

The computing system of claim 1, wherein the resource allocation model identifies a type and a number of processing nodes of each type required for processing the specific ones of the functional portions of the distributed game engine.

### Claim 3 (depends on 2)

The computing system of claim 2, wherein the inputs are collected continuously from the game play of the users and the resource allocation model is updated in real-time based on the collected inputs and success criteria, wherein the updating includes adjusting the type and the number of processing nodes of each type required for processing specific ones of the functional portions of the distributed game engine, based on game state of the online game.

### Claim 4 (depends on 1)

The computing system of claim 1, wherein each functional portion identifies a specific game engine task of the distributed game engine, and wherein the process synchronization layer includes a virtual bus to,
manage assignment of select processing nodes of the plurality of processing nodes to process specific ones of game engine tasks for the online game;
distribute the specific ones of the game engine tasks to the select processing nodes for processing;
route processed results between the select processing nodes and remaining ones of the plurality of processing nodes and between the select processing nodes and the configuration agent; and
synchronize processing of the game engine tasks distributed amongst the plurality of processing nodes, the synchronization includes managing queues of the game engine tasks in accordance to process timings of the respective ones of the game engine tasks.

### Claim 5 (depends on 1)

The computing system of claim 1, wherein at least one of the processing nodes is configured to assemble the game data from the plurality of processing nodes, process the game data, compress the game data, encode the game data to generate video frames for transmitting to client devices of the users,
wherein the compression and encoding is performed to format the video frames to be compatible with respective ones of the client devices of the users to which the video frames are being forwarded, the formatting of the video frames is done based on a test conducted to determine available bandwidth and transmission protocol used to transmit to the respective ones of the client devices.

### Claim 6 (depends on 1)

The computing system of claim 1, wherein each of the plurality of management nodes and each of the plurality of processing nodes are assigned to distinctly separate servers for execution.

### Claim 7 (depends on 6)

The computing system of claim 6, the servers are distributed within a single data center or across a plurality of data centers distributed geographically.

### Claim 8 (depends on 6)

The computing system of claim 6, wherein the servers are stand-alone physical servers, or physical servers that are part of one or more data centers, or virtual servers, or container servers, or any combinations thereof.

### Claim 9 (depends on 1)

The computing system of claim 1, wherein inputs received from users include inputs received from game developers and inputs received from players obtained during game play.

### Claim 10 (depends on 1)

The computing system of claim 1, wherein the resource allocation model is constructed using a machine learning algorithm.

### Claim 11 (depends on 1)

The computing system of claim 1, wherein the resource allocation model is constructed to identify the resource allocation based on type of users accessing the online game.

### Claim 12 (depends on 11)

The computing system of claim 11, wherein the type of users includes players, spectators, or a combination of players and spectators.

### Claim 13 (depends on 1)

The computing system of claim 1, wherein the functional portions of the distributed game engine include game logic corresponding to specific game engine tasks to be performed during execution of the online game.

### Claim 14

A method for provisioning resources for an online game, comprising:
receiving training data for the online game, wherein the training data identifies user inputs received during game play of the online game, game states and success criteria for the online game;
generating a resource allocation model for the online game using the training data, the resource allocation model identifying a plurality of processing nodes that are configured for processing functional portions of a distributed game engine, wherein select processing nodes of the plurality of processing nodes are configured to provide processing resources to process a specific functional portion of the distributed game engine; and
allocating the plurality of processing nodes to process the functional portions for the online game, in accordance to resource allocation dictated by the resource allocation model, wherein the specific functional portion executes select ones of game engine tasks, the allocating includes elastically adjusting the allocated resources,
wherein operations of the method are performed by a processor of a server of a cloud game system.

### Claim 15 (depends on 14)

The method of claim 14, wherein the allocating includes,
managing assignment of the select processing nodes to process the select ones of the game engine tasks associated with the specific functional portion;
distributing the select ones of the game engine tasks to the select processing nodes for processing;
routing processed results between the select processing nodes and remaining ones of the plurality of processing nodes and between the select processing nodes and a configuration agent used for elastically adjusting the resources allocated for the processing nodes; and
synchronizing processing of the game engine tasks distributed amongst the plurality of processing nodes.

### Claim 16 (depends on 15)

The method of claim 15, wherein allocating includes identifying a type and amount of resources of the type that needs to be provisioned to select processing nodes for processing the specific functional portion of the distributed game engine.

### Claim 17 (depends on 15)

The method of claim 15, wherein receiving training data includes,
collecting the user inputs from the plurality of users continuously during game play of the online game, the user inputs updating the training data; and
updating the resource allocation model in real-time based on the updated training data and the success criteria, the updating includes dynamically adjusting a type and amount of resources of the type that needs to be provisioned to the select processing nodes for processing the specific functional portion of the distributed game engine, for the online game.

### Claim 18 (depends on 14)

The method of claim 14, wherein each of the plurality of processing nodes is assigned to a distinct server, the distinct server providing resources required for processing the corresponding functional portion assigned thereto.

### Claim 19 (depends on 14)

The method of claim 14, wherein user inputs includes inputs from developers of the online game, or inputs from players of the online game, or inputs from spectators that are observing game play of the online game, or any combination thereof.

### Claim 20 (depends on 14)

The method of claim 14, wherein the resource allocation model identifies resource allocation based on type of users accessing the online game, wherein the type of users includes players, or spectators, or a combination of players and spectators.
