Gaming platform using zero-copy data transfer
By adopting zero-copy transmission technology between game programs and platform nodes, the game platform manages hardware resources and instantiates new platform nodes, solving the problem of hardware limitations, achieving more complex game operations and lower latency, and improving user experience.
Patent Information
- Application Number
- CN202080104256.0
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2020-08-03
- Publication Date
- 2025-09-16
- Estimated Expiration
- 2040-08-03
AI Technical Summary
Existing game programs are limited by the fixed nature of hardware when performing complex physical calculations, artificial intelligence operations, and player messaging operations, making it difficult to provide a satisfactory user experience. Data transmission delays also cause delays, affecting the gaming experience.
Zero-copy transmission technology is used to transmit data between game programs and platform nodes. Hardware resources are managed through the game platform, new platform nodes are instantiated to support complex game operations, and communication delays are reduced through zero-copy transmission.
It achieves scalability and flexibility in hardware resources, reduces data transmission delay, and improves the complexity of game programs and user experience.
Smart Images

Figure CN116018188B_ABST
Abstract
Description
Background Art
[0001] Video game systems such as game consoles, desktop computers or smart phones execute game programs, which allow users to interact with gaming environments (such as virtual worlds) via their execution. In order to provide immersion and provide satisfactory user experience in gaming environments, game programs have become increasingly sophisticated, realizing operations such as: complicated physical calculations to represent the real movement of game objects; Artificial intelligence operations to dominate the behavior of game characters; Player messaging operations to allow different game players to communicate, etc. However, the sophistication of these operations is generally limited by the fixed nature of the hardware executing the game program. For example, the game program may be executed by a video game system with relatively old hardware, or may be executed by hardware that is not designed to support sophisticated game operations. Therefore, it may be difficult to realize these sophisticated game operations while still providing satisfactory user experience. Summary of the Invention
[0002] The proposed solution specifically relates to a method comprising: receiving a first message from an executing game program, the first message comprising first game data; and providing the first data to a first node of a gaming platform via a first zero-copy (data) transmission, the first node being associated with a first gaming operation. In some embodiments, the gaming platform can therefore use a zero-copy transmission technique to transmit the first data between the gaming program and the first platform node, thereby transmitting the data with relatively low latency.
[0003] In this context, the proposed solution can allow for the implementation of an improved gaming platform that manages platform nodes for performing gaming operations (such as physics operations, artificial intelligence operations, and player messaging operations) on behalf of the gaming program, and can also efficiently coordinate different operations at distributed hardware resources. Physics operations can involve operations associated with a physics engine, such as simulations of fluid dynamics, rigid body dynamics, soft body dynamics, or other physical systems, or any combination thereof. For example, AI operations can involve employing one or more machine learning models to generate various aspects of gaming behavior, such as dialogue responses, non-player character behavior, simulated behavior of human players, and the like, and player messaging operations can, for example, involve operations associated with an in-game player chat system (e.g., a voice chat system), an in-game text messaging system, and the like, or a combination thereof.
[0004] Via the game platform, the game program can implement relatively sophisticated and complex game operations, thereby improving the user experience of the game program itself. Specifically, the game platform can implement each game operation at the corresponding platform node (including the first node of the game platform and therefore the first platform node), wherein the platform node adopts associated hardware to perform the game operation. The game platform can distribute the platform nodes at different hardware resource collections, and different hardware resource collections are such as different servers, different hardware accelerators, etc., thereby realizing more sophisticated game operations than the game program can directly implement. In addition, as the game program grows in demand for game operations (for example, such as when a new player is added to a game session), the game platform can instantiate new platform nodes to support additional demands, thereby expanding the hardware resources used by the game program according to the game requirements. Using the proposed zero-copy transmission technology, the game platform provides a scalable way for the game program to adopt more sophisticated game operations, without the need for the game program management to effectively implement the relatively high overhead required for these more sophisticated operations.
[0005] To illustrate, a game program may require relatively complex physical calculations to implement parts of the corresponding game. Typically, a game program implements physical calculations via a software library called a physics engine. A physics engine is typically a part of the game program itself, or a library with functions called by the game program itself. The physics engine is configured to execute at a specified hardware resource set. Therefore, the sophistication of the physical calculations, such as the number of calculations, the complexity of each calculation, etc., is limited by the hardware resource set that the physics engine has been designed for. These limitations, in turn, limit various aspects of the game program itself, such as the number of players the game program can support, the number of objects the game program can draw for the display frame, the complexity of the rules that the game program can implement, etc. In contrast, a game platform using the technology described herein can implement the physics engine as a platform node, and the platform node can be implemented via an extensible hardware resource set (such as at one or more servers dedicated to the game platform). Therefore, the game platform supports more complex physical operations than can be implemented traditionally. Further, the game platform manages platform nodes, including configuring and expanding platform nodes according to program requirements, thereby unloading the management of game operations associated with the physics engine from the game program.
[0006] The implementation of game operation is distributed among different hardware resources (such as different servers) and may cause delay, which has a negative impact on user experience. For example, the delay generated by transmitting data between the game program and the platform node at the distributed hardware resource may delay the generation of the image frame associated with the game, and these delays may be noticed by the user, thereby having a negative impact on the user's gaming experience. In order to reduce this delay, the game platform can use zero copy transmission technology to transmit data between the game program and the platform node. Using this technology, data is provided to the recipient (for example, the first platform node) from the sender (for example, the game program) without creating a separate data copy for the recipient. Therefore, data can be transmitted with a relatively small delay (for example, with a subframe delay), thereby preventing the delay of frame generation and improving user experience.
[0007] In an exemplary embodiment, the game platform can assign ownership to the first node to access the first buffer so as to transmit data via zero-copy transmission. In order to initiate zero-copy transmission, the data to be transmitted can be previously stored in the first buffer. In addition, the game platform can prevent the game program from accessing the first buffer while the (first) node to which the data is to be transmitted uses the first game data to perform the first game operation. The game platform can therefore, for example, change the owner of the first buffer to the first platform node and prevent the game program from writing any further data to the first buffer when the first buffer is owned by the first platform node. The first message data is thus transmitted to the first platform node without making a separate copy of the first data, thereby reducing communication latency.
[0008] In an exemplary embodiment, the method may further include providing the first data to a second node of the gaming platform via a second zero-copy transmission, the second node being associated with a second gaming operation different from the first gaming operation. In this context, the second zero-copy transmission may include the gaming platform assigning ownership to the second node to access the first buffer. Thus, embodiments of the proposed solution may allow data to be transmitted between different nodes of the gaming platform (e.g., the first node and the second node) via zero-copy transmission to provide data distribution among the nodes with minimal latency.
[0009] The second message from the game program being executed can, for example, include second game data, wherein the second data is then provided to a second node of the game platform via a second zero-copy transmission, and the second node is associated with the second game operation. In such an embodiment, the game platform can transmit different data to different platform nodes via zero data copy and a very small delay depending on the game operation to be performed. Each platform node can, for example, be configured to perform different categories of game operations, such as physics engine operations, artificial intelligence, and player messaging operations.
[0010] One aspect of the claimed solution involves instantiating a plurality of game operation nodes at a game platform including a first node, each of the plurality of game operation nodes being associated with a different game operation; and, in response to receiving a first message including first data from a game program at the game platform, transmitting the first data to a first node of the plurality of game operation nodes via a first zero-copy transmission.
[0011] In an exemplary embodiment, a second node of the plurality of game operation nodes may be instantiated only in response to the first message.
[0012] The proposed solution further relates to a non-transitory computer-readable medium containing a set of executable instructions manipulating at least one processor to perform the proposed method.
[0013] Furthermore, the proposed solution relates to a gaming platform comprising at least one processor and at least one memory, the at least one memory containing a set of executable instructions that operate the at least one processor to perform the proposed method. In an exemplary embodiment, a gaming platform is proposed that supports execution of a gaming program and manages communication between the gaming program and platform nodes associated with the gaming platform, wherein the gaming platform is configured to receive a first message from the executing gaming program, the first message including first gaming data, and the gaming platform is configured to provide the first data to a first platform node of the platform nodes via a first zero-copy transmission, the first platform node being associated with a first gaming operation of the gaming program. BRIEF DESCRIPTION OF THE DRAWINGS
[0014] The present disclosure may be better understood, and its numerous features and advantages made apparent to those skilled in the art, by referencing the accompanying drawings. The use of the same reference numerals in different drawings indicates similar or identical items.
[0015] Figure 1 is a block diagram of a game streaming system including a gaming platform that manages platform nodes to execute gaming operations, wherein the gaming platform supports low-latency data transmission via zero-copy transport, according to some embodiments.
[0016] Figure 2 According to some embodiments Figure 1 Block diagram of a gaming platform and associated platform nodes for executing gaming operations.
[0017] Figure 3 is a diagram illustrating a method according to some embodiments Figure 1 A block diagram of an example of a game platform that distributes game nodes across different hardware resources.
[0018] Figure 4 is a diagram illustrating a method according to some embodiments Figure 1 Block diagram of a gaming platform instantiating additional gaming nodes in response to messages from a gaming program.
[0019] Figure 5 is a diagram illustrating a method according to some embodiments Figure 1 Block diagram of an example of a gaming platform transferring data from a gaming program to a platform node via a zero-copy transfer operation.
[0020] Figure 6 is a flow chart of a method for transferring data between a game program and a platform node of a game platform via zero-copy transfer according to some embodiments. DETAILED DESCRIPTION
[0021] Figures 1 to 6 Illustrated is technology for implementing a gaming platform that manages platform nodes for performing gaming operations (such as physics operations, artificial intelligence operations, and player messaging operations) on behalf of a gaming program. Figure 1 A block diagram of a game streaming system 100 is illustrated in accordance with some embodiments. In the depicted example, the game streaming system 100 is generally configured to enable a gaming session of a video game by streaming a collection of frames (designated as streaming frames 115) from a server 102 to a client 104 via a network 110. The network 110 is a packet-switched network or any other type of network that can connect servers and client devices. For example, in some embodiments, the network 110 is a wide area network, such as the Internet, that includes one or more routers, communication towers (e.g., cellular communication towers), and other communication infrastructure to route packets between the server 102 and one or more clients, such as the client 104. In other embodiments, the network 110 represents a combination of networks, such as one or more wide area networks, one or more local area networks, or any combination thereof.
[0022] The client 104 is an electronic device configured to receive and display the streaming frames 115. Thus, the client 104 can be any of a variety of electronic devices, such as a desktop or laptop computer, a video streaming device (e.g., a streaming dongle), a game console, a smartphone, etc. Thus, the client 104 includes components configured to support receiving and displaying the streaming frames 115, such as one or more central processing units (CPUs), one or more graphics processing units (GPUs), one or more display panels, one or more network interfaces connected to the network 110, etc.
[0023] Server 102 is a computer device that is typically configured to provide computing services to one or more clients (including client 104) via network 110. Figure 1Although shown as a single server, it should be understood that in other embodiments, server 102 represents multiple servers and associated computing resources. For example, in some embodiments, server 102 represents an edge data center comprising multiple servers connected via a high-speed communication framework. Furthermore, in some embodiments, server 102 includes devices and components that support the implementation of computing services, such as one or more data stores, one or more accelerator devices, one or more high-speed communication networks, and the like.
[0024] Server 102 and client 104 are collectively configured to implement a game streaming session for a video game associated with game program 109. In some embodiments, a game streaming session is initiated via a request from client 104 to server 102. For example, to initiate a game streaming session, a user of client 104 may enter a request via an input device such as a keyboard, game controller, etc. Client 104 transmits the session initiation request to server 102 via network 110. In response to the session initiation request, server 102 initiates execution of game program 109.
[0025] During execution, and based on a set of data, generally referred to as a game state, the game program 109 employs the hardware of the server 102 to generate one or more image frames representing a virtual environment, such as a game world. The server 102 transmits the image frames as streaming frames 115 to the client 104 via the network 110. The client 104 displays the streaming frames 115 to the user via a display device, such as a display panel. In response to viewing the displayed frames, the user can enter additional input via an input device (or other input device) at the client 104, which transmits the input to the game program 109 executing on the server 102. Based on the user input and based on a set of rules associated with the video game, the game program 109 updates the game state and generates additional frames for streaming to the client 104 based on the updated game state, thereby allowing the user to enter additional input based on the additional streaming frames. In this manner, the user continues to interact with the game program 109, thereby participating in the game session.
[0026] To support the execution of the game program 109, the server 102 executes the game platform 106 and associated platform nodes (e.g., platform nodes 120 and 121). In some embodiments, the game platform 106 is a set of application program interfaces (APIs), libraries, and other software executed at the server 102, and is configured to provide game operation services to game programs such as the game program 109. Each of the platform nodes associated with the game program 109 is configured to perform one or more services on behalf of the game program, referred to herein as game operations. In various embodiments, examples of game operations implemented by the platform nodes can include physics engine calculations, artificial intelligence (AI) operations, player messaging operations, etc., or any combination thereof.
[0027] The game platform 106 performs at least two functions to provide services to the game program: 1) managing communications (e.g., messages and message data) between the game program 109 and the platform nodes; and 2) instantiating new platform nodes based on requests from the game program 109. The game platform 106 thus provides a configurable and extensible set of resources for executing game operations of the game program 109.
[0028] For illustration, in some cases, game program 109 requires specified game operations, such as physical calculations to determine the movement of objects in the game. In order to initiate game operations, game program 109 sends a request to game platform 106. In response, game platform 106 determines whether there are available platform nodes to perform the requested game operations. If so, game platform 106 sends an indication of the request and associated data to the corresponding platform node to perform the game operations, as further described below. In response to determining that there are no available platform nodes to perform the requested game operations, game platform 106 instantiates a new platform node by providing the hardware resources of server 102 to perform the requested operations, and instantiates one or more programs to perform the operations at the configured hardware.
[0029] Because platform node is managed by game platform 106 rather than game program 109 itself, game program 109 is isolated from the specific resource for performing given game operation and does not directly manage this specific resource.This allows to scale or otherwise adjust the resource that is adopted in specific game operation on behalf of game program 109, without the need to redesign or adjust game program 109 itself.For example, the hardware resource that is used to realize specific platform node and its associated game operation can be distributed among the multiple servers connected via high-speed data network, thereby need to coordinate the different operations at distributed hardware resource place.This coordination, if directly realized by game program 109, will bring a large amount of overhead to program, thereby undesirably increase game development time and resource.In addition, if the specific server or other hardware that is used to realize platform node changes, then game program 109 will need to be redesigned or adjusted to illustrate each hardware change, thereby undesirably increase development and maintenance game program 109 required resource again. Instead, by employing the game platform 106 to manage functions such as provisioning platform nodes, instantiating new platform nodes, and communications between the game program 109 and the platform nodes, the resources available to the game program 109 for performing operations can be scaled, adjusted, and otherwise changed without requiring expensive or burdensome development or redesign of the game program 109.
[0030] Furthermore, in some embodiments, the gaming platform 106 is configured to respond to requests (e.g., function calls) formatted or otherwise configured for an API associated with a non-distributed set of computer hardware. For example, in some cases, the gaming platform 106 is configured to respond to function calls formatted for a smartphone operating system, a gaming console operating system, etc. This allows the gaming platform 106 to provide sophisticated operations implemented by distributed gaming hardware to gaming programs designed to be executed in non-distributed systems such as smartphones and gaming consoles.
[0031] As described above, the game platform 106 is configured to manage communications between the game program 109 and the platform nodes 120 and 121. In order to reduce communication latency and improve the user's experience with the game, in some embodiments, the game platform 106 manages these communications using zero-copy transmission technology to transfer data between the game program 109 and the platform nodes. As used herein, zero-copy transmission technology refers to a data transmission technology in which a source transmits data to a recipient without the recipient making a separate copy of the data being transmitted. By employing this zero-copy transmission technology, the game platform 106 reduces the total communication overhead of transmitting data and, therefore, reduces communication latency.
[0032] For illustration, in operation, the game program 109 communicates with the platform node via a message (e.g., message 112). Examples of messages may include function calls, node configuration requests, status requests, etc., or any combination thereof. Each message includes data (e.g., message data 114) to be transmitted to one of the platform nodes 120, 121. The platform 106 receives the message 112, determines the platform node to which the message 112 is to go, and performs a zero-copy transfer to transfer the data to the identified platform node. In some embodiments, the game platform 106 performs a zero-copy transfer by changing the permissions associated with the buffer storing the data.
[0033] For example, in some embodiments, the game platform initially assigns ownership of the buffer to the game program 109. The game program 109 writes data to the buffer and notifies the game platform 106 via message 112 that message data 114 will be transmitted to the platform node 120 to perform game operations. In response, the game platform 106 changes the owner of the buffer to the platform node 120 and prevents the game program 109 from writing any data to the buffer while the buffer is owned by the platform node 120. Message data 114 is thus transmitted to the platform node 120 without making a separate copy of the data, thereby reducing communication latency.
[0034] The platform node uses the message data 114 at the buffer to perform the operation requested by the message 112. After completing the operation (including any modifications to the data stored at the buffer), the platform node 120 notifies the game platform 106 that the operation is complete. In response, the game platform 106 returns ownership of the buffer to the game program 109 and notifies the game program 109 that the requested operation is complete. The game platform 106 thus performs a zero-copy transfer of data back to the game program 109, thereby further reducing data communication latency.
[0035] As described above, the game platform 106 uses different platform nodes to perform different types of game operations on behalf of the game program 109. Figure 2 An example is illustrated at In the depicted example, the gaming platform has instantiated three different platform nodes, designated as platform node 120, platform node 121, and platform node 222. Each of platform nodes 120, 121, and 222 is configured to perform a different category of gaming operations.
[0036] For example, in the illustrated embodiment, platform node 120 is configured to perform player messaging operations, such as operations associated with an in-game player chat system (e.g., a voice chat system), an in-game text messaging system, etc., or a combination thereof. Platform node 121 is configured to perform AI operations, such as employing one or more machine learning models to generate various aspects of game behavior, such as dialogue responses, non-player character behavior, simulated behavior of human players, etc. Platform node 222 is configured to perform operations associated with a physics engine, such as simulation of fluid dynamics, rigid body dynamics, soft body dynamics, or other physical systems, or any combination thereof.
[0037] In response to receiving a request for a game operation from the game program 109, the game platform 106 identifies the platform node designated to perform the requested operation and transmits data associated with the requested operation from the game program 109 to the identified platform node. The game platform manages other aspects of data transmission and communication between the game program 109 and the identified platform node, such as the passing of parameters, the configuration of the platform node to perform the requested operation, and the handling of exceptions or other error indications from the platform node. The game platform 106 thus provides an abstraction layer between the game program 109 and the platform node. Among other functions, the abstraction layer provided by the game platform 106 allows different platform nodes to be adjusted and redesigned without requiring a corresponding redesign of the game program 109. For example, with respect to the platform node 121, a specific machine learning model implemented by the platform node can be modified and adjusted, including changes to required parameters, changes to model input parameters and output parameters, and corresponding data formats, without requiring corresponding adjustments to the game program 109. Thus, the operation of the gaming program 109 and the user's corresponding gaming experience can be improved or changed over time without requiring expensive redesign or reconfiguration of the gaming program 109 itself.
[0038] Furthermore, by isolating the platform nodes from the game program 109, the game platform 106 can support distributed execution of operations associated with the platform nodes (i.e., execution of operations via distributed hardware resources), even if such distributed operations are not directly supported by the game program 109 itself. Figure 3, an example according to some embodiments is illustrated. In the depicted example, both platform node 120 and platform node 121 are implemented at server 302. That is, operations associated with platform nodes 120 and 121 are performed using hardware resources, including a processor, input / output unit, memory management unit, etc. of server 302. In contrast, platform node 222 is implemented at a different server 303. That is, operations associated with the physics engine implemented by platform node 222 are performed at the hardware resources of server 303. Furthermore, in some embodiments, server 303 is a physics engine accelerator, which includes hardware resources such as a processing unit, a memory management unit, an input / output unit, etc., which have been specifically designed or configured to perform the physics engine operations of platform node 222. Therefore, in the example shown, different platform nodes can be assigned to the hardware resources that are best suited to perform the corresponding operations.
[0039] Furthermore, because the hardware implementing the different platform nodes is managed by the game platform 106, rather than by the game program 109, the hardware resources assigned to a given platform node can be modified over time without requiring corresponding modifications or redesign of the game program 109 itself. For example, in some embodiments, a platform node 121 can be reassigned to be implemented at a new server (not shown), thereby further distributing the overall operation of the platform node among the different servers. Because the game program 109 communicates with the game platform 106, rather than directly with the platform node, the reassignment of the platform node 121 is invisible to the game program 109, and in particular does not require the game program 109 to be modified or redesigned.
[0040] It should be understood that in some embodiments, the operation of a given platform node can be distributed across multiple servers, including across multiple hardware accelerators. For example, in some embodiments, the operation of AI platform node 121 is distributed among multiple AI accelerators, where each AI accelerator is configured to execute a different neural network or machine learning model.
[0041] In some embodiments, the game platform 106 is configured to instantiate additional platform nodes based on the changing needs of the game program 109. Figure 4An example according to some embodiments is shown in . In the example shown, the game platform 106 has previously instantiated two platform nodes: platform node 222, to perform physics engine operations; and platform node 121, to perform AI operations. The game program 109 sends a message 430 to the game platform 106 requesting a physics engine operation. In response to message 430, the game platform 106 determines that platform node 222 is not available to perform the requested physics engine operation. For example, in some embodiments, the game platform 106 determines that platform node 222 is busy performing other physics engine operations and will not be able to perform the operation requested by message 430 within a threshold time period. In other embodiments, the game platform 106 determines that the physics operation requested by message 430 is an operation associated with a physics model that is not implemented by the physics engine of platform node 222.
[0042] In response to determining that platform node 222 cannot perform the operation requested by message 430, game platform 106 performs instantiate node operation 432. To perform instantiate node operation 432, game platform 106 first provides hardware at server 102 or other server device to perform the operation of new platform node 425. For example, in some embodiments, server 102 includes resources such as processor cores, processor cycles, processing units, memory locations, etc., or any combination thereof, which can be assigned by game platform 106 or by the operating system to different platform nodes in platform nodes 222, 121, and other platform nodes. To provide hardware for additional platform node 425, game platform 106 reserves a specified number of these resources to perform the corresponding operation. For example, game platform 106 can reserve a specified number of processor core cycles of a given processing unit to perform the operation of platform node 425. Game platform 106 then begins to perform game operations for platform node 425, thereby instantiating the node.
[0043] Therefore, in Figure 4 In the example of FIG, game platform 106 secures additional resources to execute game operations of game program 109 based on the program's changing needs. This allows game program 109 to perform sophisticated game operations without implementing the corresponding overhead of managing sophisticated game operations. For example, as new players are added to a game session of a video game associated with game program 109, game platform 106 can secure additional hardware resources to accommodate the game operations associated with the additional players and can manage the provisioning and deprovisioning of these hardware resources, thereby allowing game program 109 to adapt to the increased number of players while maintaining relatively low game management overhead, thereby improving the gaming experience.
[0044] As described above, in some embodiments, in order to provide a satisfactory user experience, it is desirable for the game platform 106 to transmit data between the game program 109 and the platform node with a relatively small amount of latency. This allows the game platform node to quickly respond to messages from the game program 109, which may be beneficial in many situations, such as for games that require a quick response to player input, such as games that require a quick response to player input in order to allow players to be competitive within the game. Therefore, in order to support low-latency communications, in some embodiments, the game platform 106 employs a zero-copy transmission technique to transmit data between the game program 109 and the platform node. Figure 5 An example according to some embodiments is illustrated.
[0045] In the example shown, the game program 109 sends a message 112 to the game platform 106 requesting the platform node 120 to perform a game operation. For example, in some embodiments, the message 112 requests the platform node 120 to perform physics calculations associated with the physics engine. Figure 5 For purposes of this example, assume that the game operation requested by message 112 requires access to specified data designated as message data 114. For example, in some embodiments, message data 114 represents coordinates and other characteristics associated with an object for which physics calculations are to be performed.
[0046] To transmit message data 114, game program 109 stores message data 114 in buffer 540. In some embodiments, buffer 540 is a dedicated buffer for transmitting data to the platform node. In other embodiments, buffer 540 is a designated memory area that game program 109 has already used to store data corresponding to message data 114. For example, in some embodiments, buffer 540 is a memory area used by game program 109 to store coordinates and other object features for physics calculations and is not a dedicated data communication buffer.
[0047] In order to transmit message data 114 in response to message 112, game platform 106 changes the owner of buffer 540 to platform node 120. Although platform node 120 is the owner of buffer 540, game program 109 is not allowed to access any data stored at buffer 540. For example, in response to a request from game program 109 to game platform 106 to modify or write data to buffer 540 while platform node 120 is the owner of buffer 540, game platform 106 indicates to game program 109 that modifying or writing data to buffer 540 is not allowed, and game platform 106 does not execute the request to write or modify data.
[0048] The platform node 120 accesses the message data at the buffer 540 to perform the operation requested by the message 112. For example, in some embodiments, the game platform node 120 performs the physics calculations requested by the message 112. After completing the requested operation, the platform node 120 notifies the game platform 106. In response, the game platform 106 returns ownership of the buffer 540 to the game program 109 and notifies the game program 109 that the calculation is complete. The game program 109 can then access the message data 114 at the buffer 540 as modified by the operation of the platform node 120.
[0049] Therefore, in Figure 5 In the example of , zero-copy technology is used to transfer data between the game program 109 and the platform node 120, that is, data is transferred without creating separate data copies for the game program 109 and the platform node 120. In contrast, traditional game data transmission technology is usually performed through the network stack of the operating system, wherein the network stack needs to make one or more data copies before performing data transmission. For example, in many cases, data must be copied to a buffer associated with the network stack before the data is transmitted. The related data copy operation will increase communication latency, which can have a negative impact on the gaming experience. In contrast, by using zero-copy transmission technology, the game platform 106 can transfer data between the game program 109 and the platform node 120 with relatively small latency, thereby improving the user experience.
[0050] Figure 6 A flow chart illustrating a method 600 for transferring data between a gaming platform and one or more gaming platform nodes using zero copy technology according to some embodiments is shown. Figure 1 Method 600 is described with reference to an example implementation at the game streaming system 100 of FIG. 1 . At block 602 , the game program 109 writes data to be transmitted into a buffer, such as Figure 5 At block 604, the game program 109 sends a message (such as message 112) to the game platform 106 requesting a specified game operation (such as a player messaging operation, an AI operation, or a physics engine operation). It is assumed that the requested game operation is to use the data stored at the buffer 540 at block 602 above.
[0051] At block 606, the game platform 106 identifies the type of game operation requested. For example, the game platform 106 determines whether the game operation requested by the message 112 is a physics engine operation, an AI operation, or a player messaging operation. At block 608, the game platform 106 sends a command to the game platform node corresponding to the type of game operation requested identified at block 606. In addition, the game platform 106 assigns ownership of the buffer 540 to the selected game platform node.
[0052] At block 610, the selected platform node performs the requested game operation and, in the process of performing the game operation, modifies the data in the buffer 540. At block 612, upon completion of the requested game operation, the selected platform node notifies the game platform 106. In response, the game platform 106 returns ownership of the buffer 540 to the game program 109. At block 614, the game program 109 uses the modified data stored in the buffer 540 to generate one or more streaming frames 115 for streaming to the client 104.
[0053] In some embodiments, certain aspects of the above-described technology can be implemented by one or more processors of a processing system that executes software. The software includes one or more sets of executable instructions stored or otherwise tangibly contained on a non-transitory computer-readable storage medium. The software may include instructions and certain data that, when executed by one or more processors, manipulate the one or more processors to perform one or more aspects of the above-described technology. The non-transitory computer-readable storage medium may include, for example, a magnetic or optical disk storage device, a solid-state storage device such as flash memory, a cache, a random access memory (RAM), or other one or more non-volatile storage devices, etc. The executable instructions stored on the non-transitory computer-readable storage medium may be in source code, assembly language code, object code, or other instruction formats that are interpreted or otherwise executable by one or more processors.
[0054] Computer-readable storage media may include any storage medium or combination of storage media that is accessible by a computer system during use to provide instructions and / or data to the computer system. Such storage media may include, but are not limited to, optical media (e.g., compact discs (CDs), digital versatile discs (DVDs), Blu-ray discs), magnetic media (e.g., floppy disks, magnetic tapes, or magnetic hard drives), volatile memory (e.g., random access memory (RAM) or cache memory), non-volatile memory (e.g., read-only memory (ROM) or flash memory), or microelectromechanical systems (MEMS)-based storage media. Computer-readable storage media may be embedded in a computing system (e.g., system RAM or ROM), fixedly attached to a computing system (e.g., a magnetic hard drive), removably attached to a computing system (e.g., an optical disc or flash memory based on a universal serial bus (USB), or coupled to a computer system via a wired or wireless network (e.g., network accessible storage (NAS)).
[0055] Note that not all of the activities or elements described above in the general description are required, a particular activity or part of a device may not be required, and one or more other activities may be performed or elements may be included in addition to those described above. Furthermore, the order in which the activities are listed is not necessarily the order in which they are performed. Moreover, the concepts have been described with reference to specific embodiments. However, it will be understood by those skilled in the art that various modifications and changes may be made without departing from the scope of the present disclosure as set forth in the appended claims. Accordingly, the specification and drawings should be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within the scope of the present disclosure.
[0056] Benefits, other advantages and solutions to problems have been described above with respect to specific embodiments. However, benefits, advantages, solutions to problems, and any features that may cause any benefit, advantage, or solution to a problem to appear or become more apparent should not be construed as key, required, or essential features of any or all of the claims. Furthermore, the specific embodiments disclosed above are illustrative only, as the disclosed subject matter may be modified and practiced in different but equivalent manners that will be apparent to those skilled in the art having the benefit of the teachings herein. There is no intention to be limited to the details of construction or design shown herein, except as described in the appended claims. It is therefore apparent that the specific embodiments disclosed above may be altered or modified, and all such variations are considered to be within the scope of the disclosed subject matter. Accordingly, the protection sought herein is as described in the appended claims.
Claims
1. A method for transmitting game data, comprising: Instantiating a plurality of game play nodes at a game platform including the first node, each game play node in the plurality of game play nodes being associated with a different game play; receiving a first message from the game program being executed, the first message including first game data; as well as providing the first game data to the first node of the gaming platform for execution of a first gaming operation via a first zero-copy transfer, the first node being associated with the first gaming operation, The first zero-copy transfer includes the game platform assigning ownership to the first node to access a first buffer, and the ownership of the first buffer is returned to the game program after the first game operation at the first node is completed.
2. The method according to claim 1, further comprising: The first game data is stored at the first buffer for the first zero-copy transfer.
3. The method according to claim 1, further comprising: When the first node performs the first game operation using the first game data, the game platform prevents the game program from accessing the first buffer.
4. The method according to claim 1, further comprising: The first game data is provided to a second node of the gaming platform via a second zero-copy transfer, the second node being associated with a second gaming operation different from the first gaming operation.
5. The method according to claim 4, wherein The second zero-copy transmission includes: The gaming platform assigns ownership to the second node to access the first buffer.
6. The method according to claim 1, wherein The first node includes a hardware accelerator configured to perform the first gaming operation.
7. The method according to claim 1, wherein The first game operation is one of a physics engine operation, an artificial intelligence operation, and a game message passing operation.
8. The method according to claim 1, further comprising: receiving a second message from the game program being executed, the second message including second game data; as well as The second game data is provided to a second node of the gaming platform via a second zero-copy transfer, the second node being associated with a second gaming operation.
9. The method according to any one of claims 1 to 8, further comprising: In response to receiving the first message including the first game data from the game program at the game platform, the first game data is transmitted to the first node of the plurality of game operation nodes via the first zero-copy transmission.
10. A method for transmitting game data, comprising: Instantiating a plurality of game operation nodes at the game platform, each game operation node in the plurality of game operation nodes being associated with a different game operation; In response to receiving, at the gaming platform, from a gaming program, a first message including first gaming data for execution of a first gaming operation of the plurality of gaming operations, transmitting the first gaming data to a first gaming operation node of the plurality of gaming operations via a zero-copy transfer, The zero-copy transfer includes the game platform assigning ownership to the first node to access a first buffer, and the ownership of the first buffer is returned to the game program after the first game operation at the first node is completed.
11. The method according to claim 10, further comprising: A second node of the plurality of game play nodes is instantiated in response to the first message.
12. A non-transitory computer-readable medium comprising a set of executable instructions that operate at least one processor to: Instantiating a plurality of game play nodes at a game platform including the first node, each game play node in the plurality of game play nodes being associated with a different game play; receiving a first message from the game program being executed, the first message including first game data; as well as providing the first game data to the first node of the gaming platform for execution of a first gaming operation via a first zero-copy transfer, the first node being associated with the first gaming operation, The first zero-copy transfer includes the game platform assigning ownership to the first node to access a first buffer, and the ownership of access to the first buffer is returned to the game program after the first game operation at the first node is completed.
13. The computer-readable medium of claim 12, wherein: The set of executable instructions operates the processor to: The first game data is stored at the first buffer for the first zero-copy transfer.
14. The computer-readable medium of claim 12, wherein: The set of executable instructions operates the processor to: The game program is prevented from accessing the first buffer when the first node performs the first game operation using the first game data.
15. The computer-readable medium of claim 12, wherein: The set of executable instructions operates the processor to: The first game data is provided to a second node of the gaming platform via a second zero-copy transfer, the second node being associated with a second gaming operation different from the first gaming operation.
16. The computer-readable medium of claim 15, wherein: The second zero-copy transmission includes: The gaming platform assigns permission to the second node to access the first buffer.
17. The computer-readable medium of claim 12, wherein: The first node includes a hardware accelerator configured to perform the first gaming operation.
18. The computer-readable medium of claim 12, wherein: The first game operation is one of a physics engine operation, an artificial intelligence operation, and a game message passing operation.
19. The computer-readable medium of any one of claims 12 to 18, wherein: The set of executable instructions operates the processor to: receiving a second message from the game program being executed, the second message including second game data; as well as The second game data is provided to a second node of the gaming platform via a second zero-copy transfer, the second node being associated with a second gaming operation.
20. A gaming platform comprising at least one processor and at least one memory, the at least one memory containing a set of executable instructions, the set of executable instructions manipulating the at least one processor to perform the method of any one of claims 1 to 11.
Citation Information
Patent Citations
Sharing memory between virtual appliances
US20140149981A1