EP-4252875-B1 - SYSTEMS AND METHODS FOR USING A DISTRIBUTED GAME ENGINE
Inventors
- COLENBRANDER, Roelof Roderick
Dates
- Publication Date
- 20260506
- Application Date
- 20180320
Claims (15)
- A method for using a plurality of hardware server nodes for a play of a game, comprising: receiving a request to play the game via a computer network from a client device; determining an amount of processing power for execution of a game engine for the game when the request is received; assigning the plurality of the hardware server nodes to achieve the processing power for the execution of the game engine, wherein the plurality of hardware server nodes include a first hardware server node and a second hardware server node; providing an internal communication protocol to the plurality of hardware server nodes to facilitate a transfer of the game engine between the plurality of hardware server nodes, wherein the game engine is transferred between the plurality of hardware server nodes for execution of the game engine by the plurality of hardware server nodes to facilitate the play of the game; executing, by the first hardware server node, the game engine to generate a game state of the game; and transferring, using the internal communication protocol, the game state from the first hardware server node to the second hardware server node for generating a first frame of the game.
- The method of claim 1, further comprising: generating, by the first hardware server node, video frame information, wherein the video frame information includes the game state; generating, by the second hardware server node, one or more video frames based on the video frame information, wherein the one or more video frames include the first frame; encoding, by the second hardware server node, the one or more video frames to output one or more encoded video frames; and sending the one or more encoded video frames via the computer network to the client device.
- The method of claim 1, wherein the amount of processing power is used to determine a number of the plurality of hardware server nodes to facilitate the play of the game.
- The method of claim 3, wherein each of the plurality of hardware server nodes includes a central processing unit (CPU) and a graphical processing unit (GPU), wherein the amount of processing power is used to determine a number of the CPUs and a number of the GPUs to facilitate the play of the game.
- The method of claim 4, wherein said assigning the plurality of hardware server nodes includes assigning the CPUs and GPUs to facilitate the play of the game.
- The method of claim 1, wherein said providing the internal communication protocol includes transferring a software development kit to the plurality of hardware server nodes to enable communication between the plurality of hardware server nodes during the play of the game.
- The method of claim 1, further comprising: executing, by the first hardware server node, the game engine to generate a second frame of the game, wherein the second frame is generated based on the game state; encoding, by the first hardware server node, the second frame with a third frame to generate a first encoded frame; encoding, by the second hardware server node, the first frame with a fourth frame to generate a second encoded frame; and sending the first encoded frame and the second encoded frame via the computer network to the client device for display of the first, second, third, and fourth frames in a consecutive order.
- The method of claim 1, wherein the game state includes a plurality of positions and a plurality of orientations for generating a virtual scene of the first frame of the game, wherein the first hardware server node is coupled to the second hardware server node via a peripheral component interconnect-express (PCIe) communication bus to directly access to a memory device of the second hardware server node.
- A non-transitory computer-readable medium for having stored thereon computer executable instructions, the computer executable instructions when executed by a processor of a computer perform method operations from any one of claims 1 to 8.
- A system comprising: a cloud gaming server configured to receive a request to play a game via a computer network from a client device, wherein the cloud gaming server is configured to output a signal based on a determination that a user account is to be allowed access to a game engine; a node assembly server coupled to the cloud gaming server; and a plurality of hardware server nodes coupled to the node assembly server, wherein the plurality of hardware server nodes include a first hardware server node and a second hardware server node, wherein the node assembly server is configured to receive the signal output from the cloud gaming server, wherein upon receiving the signal, the node assembly is configured to: determine an amount of processing power for execution of the game engine for the game; assign the plurality of hardware server nodes to achieve the processing power for the execution of the game engine; and provide an internal communication protocol to the plurality of hardware server nodes to facilitate a transfer of the game engine between the plurality of hardware server nodes, wherein the game engine is configured to be transferred between the plurality of hardware server nodes for execution of the game engine by the plurality of hardware server nodes to facilitate the play of the game, wherein the first hardware server node is configured to execute the game engine to generate a game state of the game, and wherein the first hardware server node is configured to transfer, using the internal communication protocol, the game state to the second hardware server node for generating a first frame of the game.
- The system of claim 10, wherein the first hardware server node is configured to generate video frame information, wherein the video frame information includes the game state, wherein the first hardware server node is configured to apply the internal communication protocol for transferring the video frame information to the second hardware server node, wherein the second hardware server node is configured to generate a plurality of video frames based on the video frame information, wherein the plurality of video frames include the first frame, wherein the second hardware server node is configured to encode the plurality of video frames to output encoded video frames, wherein the second hardware server node is configured to send the encoded video frames via the computer network to the client device.
- The system of claim 10, wherein the node assembly server is configured to use the amount of processing power to determine a number of the plurality of hardware server nodes to facilitate the play of the game.
- The system of claim 12, wherein each of the plurality of hardware server nodes includes a central processing unit (CPU) and a graphical processing unit (GPU), wherein the node assembly server is configured to use the amount of processing power to determine a number of the CPUs and a number of the GPUs to facilitate the play of the game.
- The system of claim 13, wherein to assign the plurality of hardware server nodes, the node assembly server is configured to assign the CPUs and GPUs to facilitate the play of the game.
- The system of claim 10, wherein to provide the internal communication protocol, the node assembly server is configured to transfer a software development kit to the plurality of hardware server nodes to enable communication between the plurality of hardware server nodes during the play of the game.
Description
FIELD The present disclosure relates to systems and methods for using a distributed game engine. BACKGROUND A variety of devices have been developed for game play. For example, various gaming companies have created gaming consoles to provide a user with a unique gaming experience. To illustrate, the user can play war games, kungfu games, dancing games, etc. Some gaming companies have developed a display device that goes over a head of the user and provides the user with a display of a game. The user feels as if he/she is in a game during use of such display device to play the game. However, with an increase in graphics associated with a game and processing associated with the game, processing power of the gaming consoles cannot be increased. Previously proposed arrangements are disclosed by WO 2017/030771 A1, US 2010/146128 A1 and US 2016/294921 A1. SUMMARY The invention is defined by the appended claims. Embodiments of the present disclosure provide systems and methods for using a distributed game engine. Other aspects of the present disclosure will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of embodiments described in the present disclosure. For gaming and scientific computations, there is always a hunger for an increasing amount of compute power. The compute power of a single server is limited by the computer parts available at time of assembly from chip manufacturers. For a given computer generation, computer chip manufacturers are constrained to a certain number of central processing unit (CPU) or graphical processing unit (GPU) cores per chip due to technical limitations in transistor count and power. These technical barriers are moved up every few years by Moore's Law. However, sometimes, a higher amount of compute power is required instantaneously. One way to obtain more compute power is to use within a single server multiple CPU sockets and add more GPU boards. However, space within the single server becomes limited as more CPU sockets and more GPU boards are added. Another way to obtain more compute power is to use additional servers and spread workload across multiple servers. In one embodiment, a high-speed, low latency system in which multiple servers optionally composed out of game consoles are interconnected is described. This technology is the building block for an elastic compute architecture, which, for example, is utilized for gaming purposes including cloud gaming. The embodiment allows clustering of compute nodes, e.g., game consoles, virtual machines, servers, etc., to obtain a larger amount of compute capacity otherwise available. The way the compute nodes are tied together allows for ways of writing game engines, where for example a game, either a single-player game or multiplayer game, runs across many compute nodes. The system provides a clustering technology that allows for different types of games. Given the hardware architecture for elastic compute, various applications are described to leverage the compute capability. One use case is to offer the compute capability of multiple compute nodes to a single user. For example, a game engine spans multiple compute nodes. This could be done in several ways. To illustrate, each compute node renders a different frame, e.g., a node 1 renders a frame 1 + n and a node 2 renders a frame 2 + n, where n is the number of nodes. Some game engines share frame information from physics and GPU buffers. For example, each node reads the frame information from the other nodes memory when given a notification with memory addresses on data availability or so. To illustrate, a node sends an interrupt to another node and reads the frame information from a shared register within the other node. This is orders of magnitude faster than network packets. As another example of sharing frame information, universal datagram protocol/transmission control protocol (UDP/TCP) network packets are used to read the frame information. As yet another illustration, each compute node renders a portion of a frame, e.g., a quarter or a pre-determined number of lines. As yet another illustration, in a master-slave architecture, one node is master and delegates compute tasks among compute nodes. As another example, a node sends an interrupt to another node and writes the frame information to a shared register within the other node. This can be orders of magnitude faster than network packets. As another example of sharing frame information, UDP/TCP protocol is used to write the frame information. Some tasks utilize more or less time than others, so the master is a scheduler. Some physics calculations are be done on the master and states of a game are broadcasted to slaves. If a single user configuration as described above is used for cloud gaming, there are challenges on how to manage an input received via an input device, e.g., a gamepad, or a keyboard, or a mouse, a