The present specification is related generally to the field of multiplayer online video games. More specifically, the present specification relates to improved systems and methods for dynamically adapting the streaming of gaming content in a multi-player online gaming system/environment.
Massively multiplayer online video games are responsible for a substantial share of the digital entertainment industry. By their very nature, multiplayer online video games allow many player computing devices to connect to at least one game server over a network. Since gaming content is provisioned by the at least one game server to multiple player computing devices over a network, a player's experience of the game is greatly dependent on the quality or stability of the network connection between the player computing device and the at least one game server. Consequently, it is desirable to manage delivery of gaming content in a way that is responsive to the variability of quality or stability of the network connection across geographical locations.
Accordingly, there is a need for improved systems and methods that enable real-time modulation of one or more parameters of streaming gaming content in response to the variability of the quality or stability of a network connection between a gaming server and a player's client device in a multiplayer online video game environment.
The following embodiments and aspects thereof are described and illustrated in conjunction with systems, tools and methods, which are meant to be exemplary and illustrative, and not limiting in scope. The present application discloses numerous embodiments.
The present specification discloses a computer-implemented method for dynamically adapting a streaming of content during a video gameplay session in a multi-player gaming network, wherein the multi-player gaming network comprises at least one host computer and a plurality of client devices in data communication and located remote from each other, wherein each of the plurality of client devices is configured to execute the video gameplay session, and wherein a first game module is configured to execute in the at least one host computer and a second game module is configured to execute in each of the plurality of client devices, the method being executed by the first and second game modules and comprising: transmitting, by the second game module of one of the plurality of client devices to the first game module, a request to download the content during the gameplay session, wherein a maximum streaming speed is associated with the content; streaming, by the first game module to the second game module in response to the request, the content at a streaming speed that is less than the maximum streaming speed, wherein the content is streamed for a predefined threshold time duration; determining, by the first game module at an end of the predefined threshold time duration, a first level of stability of a network connection between the first and second game modules, wherein the first level of stability is determined based on at least a first connection parameter, a second connection parameter or a third connection parameter; and increasing the streaming speed, by the first game module if the network connection is determined to be stable, in a plurality of incremental value steps until the maximum streaming speed is achieved, wherein each of the plurality of incremental value steps increases the streaming speed by a predefined amount.
Optionally, the method of further comprises: decreasing the streaming speed, by the first game module if the network connection is determined to have a first level of instability, in a plurality of decrementing value steps until the network connection is determined to be stable, wherein each of the plurality of decrementing value steps decreases the streaming speed and wherein a consecutive next of the plurality of steps is implemented only if the network connection is determined to have the first level of instability at an end of the predefined threshold time duration of an immediate previous of the plurality of steps.
Optionally, the method further comprises: stopping streaming of the content, by the first game module if the network connection is determined to have a second level of instability, for a predetermined cooling time period; determining, by the first game module at an end of the predefined cooling time period and over a predetermined evaluation time period, a second level of stability of the network connection based on at least one of the first connection parameter or second connection parameter; and restarting streaming of the content, by the first game module, if the network connection is determined to have the second level of stability at the end of the predetermined evaluation time period, wherein streaming of the content is restarted at the streaming speed and the maximum streaming speed.
Optionally, the streaming speed is 128 kbps, and the maximum streaming speed is 1500 kbps.
Optionally, the predefined threshold time duration is 500 milliseconds.
Optionally, the first connection parameter is indicative of a ping time, the second connection parameter is indicative of a packet loss and the third connection parameter is indicative of an amount of the content downloaded in the second game module.
Optionally, the network connection is determined to have the first level of stability if the first connection parameter is less than a predetermined threshold ping time, the second connection parameter is less than a predetermined threshold packet loss and the third connection parameter is substantially equal to an amount of the content streamed by the first game module at the streaming speed during the predefined threshold time duration.
Optionally, the network connection is determined to have the second level of stability if the first connection parameter is less than a predetermined threshold ping time and the second connection parameter is less than a predetermined threshold packet loss.
Optionally, the network connection is determined to have the first level of instability if the first connection parameter increases more than a predetermined threshold ping time but does not increase by more than 15% of the predetermined threshold ping time, the second connection parameter increases more than a predetermined threshold packet loss but does not increase by more than 15% of the predetermined threshold packet loss and the third connection parameter is substantially less than an amount of the content streamed by the first game module at the streaming
Optionally, the network connection is determined to have the second level of instability if the first connection parameter increases more than 15% of the predetermined threshold ping time, and the second connection parameter increases more than 15% of the predetermined threshold packet loss.
Optionally, while increasing the streaming speed, periodically determining, by the first game module a second level of stability of the network connection between the first and second game modules, wherein the second level of stability is determined based on at least the first connection parameter, the second connection parameter or the third connection parameter.
Optionally, the predetermined threshold ping time is 50 milliseconds and the predetermined threshold packet loss is 1%.
The present specification also discloses a computer readable non-transitory medium comprising a plurality of executable programmatic instructions wherein, when said plurality of executable programmatic instructions are executed by a processor in a computing device, a process for dynamically adapting streaming of content during a video gameplay session in a multi-player gaming network is executed, wherein the process for dynamically adapting streaming of content is executed at least partially by at least one host computer in data communication with a plurality of remotely located client devices, the plurality of executable programmatic instructions comprising: transmitting, by one of the plurality of client devices to the at least one host computer, a request to download the content during the gameplay session; streaming, by the at least one host computer to said one of the plurality of client devices, the content at a streaming speed and an associated maximum streaming speed, wherein the content is streamed for a predefined threshold time duration; determining, by the at least one host computer at an end of the predefined threshold time duration, a first level of stability of a network connection between the at least one host computer and said one of the plurality of client devices on the multi-player gaming network, wherein the first level of stability is determined based on first, second and third connection parameters; and increasing the streaming speed, by the at least one host computer if the network connection is determined to be stable, in a plurality of steps of a predetermined incremental speed value till the maximum streaming speed is achieved, wherein each of the plurality of steps has a corresponding increased streaming speed at which the content is streamed for the predefined threshold time duration, and wherein a consecutive next of the plurality of steps is implemented only if the network connection is determined to be stable at an end of the predefined threshold time duration of an immediate previous of the plurality of steps.
Optionally, the plurality of executable programmatic instructions further comprises: decreasing the streaming speed, by the at least one host computer if the network connection is determined to have a first level of instability, in a plurality of steps of a predetermined decrement speed value till the network connection is determined to be stable, wherein each of the plurality of steps has a corresponding decreased streaming speed at which the content is streamed for the predefined threshold time duration, and wherein a consecutive next of the plurality of steps is implemented only if the network connection is determined to have the first level of instability at an end of the predefined threshold time duration of an immediate previous of the plurality of steps.
Optionally, the plurality of executable programmatic instructions further comprises: stopping streaming of the content, by the at least one host computer if the network connection is determined to have a second level of instability, for a predetermined cooling time period; determining, by the at least one host computer at an end of the predefined cooling time period and over a predetermined evaluation time period, a second level of stability of the network connection based on the first and second connection parameters; and restarting streaming of the content, by the at least one host computer, if the network connection is determined to have the second level of stability at the end of the predetermined evaluation time period, wherein streaming of the content is restarted at the streaming speed and the maximum streaming speed.
Optionally, the streaming speed is 128 kbps, and the maximum streaming speed is 1500 kbps.
Optionally, the predefined threshold time duration is 500 milliseconds.
Optionally, the first connection parameter is indicative of a ping time, the second connection parameter is indicative of a packet loss and the third connection parameter is indicative of an amount of the content downloaded in the second game module.
Optionally, the network connection is determined to have the first level of stability if the first connection parameter is less than a predetermined threshold ping time, the second connection parameter is less than a predetermined threshold packet loss and the third connection parameter is substantially equal to an amount of the content streamed by the first game module at the streaming
Optionally, the network connection is determined to have the second level of stability if the first connection parameter is less than a predetermined threshold ping time and the second connection parameter is less than a predetermined threshold packet loss.
Optionally, the network connection is determined to have the first level of instability if the first connection parameter increases more than a predetermined threshold ping time but does not increase by more than 15% of the predetermined threshold ping time, the second connection parameter increases more than a predetermined threshold packet loss but does not increase by more than 15% of the predetermined threshold packet loss and the third connection parameter is substantially less than an amount of the content streamed by the first game module at the streaming speed during the predefined threshold time duration.
Optionally, the network connection is determined to have the second level of instability if the first connection parameter increases more than 15% of the predetermined threshold ping time, and the second connection parameter increases more than 15% of the predetermined threshold packet loss.
The present specification also discloses a computer-implemented method for dynamically adapting streaming of content during a video gameplay session in a multi-player gaming network, wherein the multi-player gaming network comprises at least one host computer and a plurality of client devices in data communication and located remote from each other, wherein each of the plurality of client devices is configured to execute the video gameplay session, and wherein a first game module is stored in the at least one host computer and a second game module is stored in each of the plurality of client devices, the method being executed by the first and second game modules and comprising: transmitting, by the second game module of one of the plurality of client devices to the first game module, a request to download the content during the gameplay session; streaming, by the first game module to the second game module in response to the request, the content at a streaming speed and an associated maximum streaming speed, wherein the content is streamed for a predefined threshold time duration; determining, by the first game module at an end of the predefined threshold time duration, a first level of stability of a network connection between the first and second game modules on the multi-player gaming network, wherein the first level of stability is determined based on first, second and third connection parameters; increasing the streaming speed, by the first game module if the network connection is determined to be stable, in a plurality of steps of a predetermined incremental speed value till the maximum streaming speed is achieved, wherein each of the plurality of steps has a corresponding increased streaming speed at which the content is streamed for the predefined threshold time duration, and wherein a consecutive next of the plurality of steps is implemented only if the network connection is determined to be stable at an end of the predefined threshold time duration of an immediate previous of the plurality of steps; decreasing the streaming speed, by the first game module if the network connection is determined to have a first level of instability, in a plurality of steps of a predetermined decrement speed value till the network connection is determined to be stable, wherein each of the plurality of steps has a corresponding decreased streaming speed at which the content is streamed for the predefined threshold time duration, and wherein a consecutive next of the plurality of steps is implemented only if the network connection is determined to have the first level of instability at an end of the predefined threshold time duration of an immediate previous of the plurality of steps; stopping streaming of the content, by the first game module if the network connection is determined to have a second level of instability, for a predetermined cooling time period; determining, by the first game module at an end of the predefined cooling time period and over a predetermined evaluation time period, a second level of stability of the network connection based on the first and second connection parameters; and restarting streaming of the content, by the first game module, if the network connection is determined to have the second level of stability at the end of the predetermined evaluation time period, wherein streaming of the content is restarted at the streaming speed and the maximum streaming speed.
Optionally, the streaming speed is 128 kbps, and the maximum streaming speed is 1500 kbps.
Optionally, the predefined threshold time duration is 500 milliseconds.
Optionally, the first connection parameter is indicative of a ping time, the second connection parameter is indicative of a packet loss and the third connection parameter is indicative of an amount of the content downloaded in the second game module.
Optionally, the network connection is determined to have the first level of stability if the first connection parameter is less than a predetermined threshold ping time, the second connection parameter is less than a predetermined threshold packet loss and the third connection parameter is substantially equal to an amount of the content streamed by the first game module at the streaming
Optionally, the network connection is determined to have the second level of stability if the first connection parameter is less than a predetermined threshold ping time and the second connection parameter is less than a predetermined threshold packet loss.
Optionally, the network connection is determined to have the first level of instability if the first connection parameter increases more than a predetermined threshold ping time but does not increase by more than 15% of the predetermined threshold ping time, the second connection parameter increases more than a predetermined threshold packet loss but does not increase by more than 15% of the predetermined threshold packet loss and the third connection parameter is substantially less than an amount of the content streamed by the first game module at the streaming speed during the predefined threshold time duration.
Optionally, the network connection is determined to have the second level of instability if the first connection parameter increases more than 15% of the predetermined threshold ping time, and the second connection parameter increases more than 15% of the predetermined threshold packet loss.
Optionally, the predetermined threshold ping time is 50 milliseconds and the predetermined threshold packet loss is 1%.
The aforementioned and other embodiments of the present specification shall be described in greater depth in the drawings and detailed description provided below.
The accompanying drawings illustrate various embodiments of systems, methods, and embodiments of various other aspects of the disclosure. Any person with ordinary skills in the art will appreciate that the illustrated element boundaries (e.g., boxes, groups of boxes, or other shapes) in the figures represent one example of the boundaries. It may be that in some examples one element may be designed as multiple elements or that multiple elements may be designed as one element. In some examples, an element shown as an internal component of one element may be implemented as an external component in another and vice versa. Furthermore, elements may not be drawn to scale. Non-limiting and non-exhaustive descriptions are described with reference to the following drawings. The components in the figures are not necessarily to scale, emphasis instead being placed upon illustrating principles.
The present specification is directed towards multiple embodiments. The following disclosure is provided in order to enable a person having ordinary skill in the art to practice the invention. Language used in this specification should not be interpreted as a general disavowal of any one specific embodiment or used to limit the claims beyond the meaning of the terms used therein. The general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the invention. Also, the terminology and phrascology used is for the purpose of describing exemplary embodiments and should not be considered limiting. Thus, the present invention is to be accorded the widest scope encompassing numerous alternatives, modifications and equivalents consistent with the principles and features disclosed. For purpose of clarity, details relating to technical material that is known in the technical fields related to the invention have not been described in detail so as not to unnecessarily obscure the present invention.
The term “a multi-player online gaming environment” or “massively multiplayer online game” may be construed to mean a specific hardware architecture in which one or more servers electronically communicate with, and concurrently support game interactions with, a plurality of client devices, thereby enabling each of the client devices to simultaneously play in the same instance of the same game. Preferably the plurality of client devices number in the dozens, preferably hundreds, preferably thousands. In one embodiment, the number of concurrently supported client devices ranges from 10 to 5,000,000 and every whole number increment or range therein. Accordingly, a multi-player gaming environment or massively multi-player online game is a computer-related technology, a non-generic technological environment, and should not be abstractly considered a generic method of organizing human activity divorced from its specific technology environment.
In various embodiments, a computing device includes an input/output controller, at least one communications interface and system memory. The system memory includes at least one random access memory (RAM) and at least one read-only memory (ROM). These elements are in communication with a central processing unit (CPU) to enable operation of the computing device. In various embodiments, the computing device may be a conventional standalone computer or alternatively, the functions of the computing device may be distributed across multiple computer systems and architectures.
In some embodiments, execution of a plurality of sequences of programmatic instructions or code configure, enable, or cause the CPU of the computing device to perform various functions and processes. In alternate embodiments, hard-wired circuitry may be used in place of, or in combination with, software instructions for implementation of the processes of systems and methods described in this application. Thus, the systems and methods described are not limited to any specific combination of hardware and software.
The term “module”, “application” or “engine” used in this disclosure may refer to computer logic utilized to provide a desired functionality, service or operation by programming or controlling a general purpose processor. Stated differently, in some embodiments, a module, application or engine implements a plurality of instructions or programmatic code to cause a general purpose processor to perform one or more functions. In various embodiments, a module, application or engine can be implemented in hardware, firmware, software or any combination thereof. The module, application or engine may be interchangeably used with unit, logic, logical block, component, or circuit, for example. The module, application or engine may be the minimum unit, or part thereof, which performs one or more particular functions.
The term “gaming content” used in this specification may refer to a game's audio-visual content or media, including the visual appearances of its characters, and corresponding in-game data that is rendered and made available to users or viewers of the game. Thus, “gaming content” includes data indicative of textures, non-player characters (NPCs), as well as content such as in-game sounds and videos. “Textures” may refer to the actual colors and minute details that are used to enable gaming landscapes and items. In some embodiments, “textures” are images that are used in 3D games to render 3D objects, 2D planes in 3D space, or other graphical user interface elements)
In the description and claims of the application, each of the words “comprise”, “include”, “have”, “contain”, and forms thereof, are not necessarily limited to members in a list with which the words may be associated. Thus, they are intended to be equivalent in meaning and be open-ended in that an item or items following any one of these words is not meant to be an exhaustive listing of such item or items, or meant to be limited to only the listed item or items. It should be noted herein that any feature or component described in association with a specific embodiment may be used and implemented with any other embodiment unless clearly indicated otherwise.
It must also be noted that as used herein and in the appended claims, the singular forms “a,” “an,” and “the” include plural references unless the context dictates otherwise. Although any systems and methods similar or equivalent to those described herein can be used in the practice or testing of embodiments of the present disclosure, the preferred, systems and methods are now described.
The one or more game servers 105 may be any computing device having one or more processors and one or more computer-readable storage media such as RAM, hard disk, or any other optical or magnetic media. The one or more game servers 105 include a plurality of modules operating to provide or implement a plurality of functional, operational, or service-oriented methods of the present specification. In some embodiments, the one or more game servers 105 include or are in communication with at least one database system 120. The database system 120 stores a plurality of game data associated with at least one game that is served or provided to the client devices 110 over the network 115. In some embodiments, the one or more game servers 105 may be implemented by a cloud of computing platforms operating together as game servers 105.
In accordance with aspects of the present specification, the one or more game servers 105 are configured to provide or implement a plurality of modules or engines such as, but not limited to, a master game module or engine 130 and an adaptive content streaming (ACS) module or engine 132. In some embodiments, the one or more client devices 110 are configured to implement or execute one or more of a plurality of client-side modules some of which may be the same as or similar to the modules of the one or more game servers 105. For example, in some embodiments each of the player and non-player client devices 110 is configured to execute a client-side game module, engine or application 130′ (also referred to as—client game module 130′) that integrates a client-side ACS module, engine or application 132′. Stated differently, in some embodiments, the functionalities of the ACS module 132 is at least partially integrated in and executed by the client-side game module 130′ in data communication with the one or more game servers 105.
While various aspects of the present specification are being described with reference to functionalities or programming distributed across multiple modules or engines 130, 130′ and 132, 132′, it should be appreciated that, in some embodiments, some or all of the functionalities or programming associated with these modules or engines may be integrated within fewer modules or in a single module—such as, for example, in the master game module 130 itself on the server side and in the client gaming module 130′ on the client side. It should also be noted that the computing devices, servers, and/or modules described herein are configured to perform various functions and execute various programs in accordance with the requirements of the present specification.
In embodiments, the master game module 130 is configured to execute an instance of an online game to facilitate interaction of the players with and within the game. In embodiments, the instance of the game executed may be synchronous, asynchronous, and/or semi-synchronous. The master game module 130 is configured to control aspects of the game for all players and receives and processes each player's input in the game. In other words, the master game module 130 is configured to host the online game for all players, receive game data from the client devices 110 and transmit updates to all client devices 110 based on the received game data so that the game, on each of the client devices 110, represents the most updated or current status with reference to interactions of all players with the game. Thus, the master game module 130 is configured to transmit game data over the network 115 to the client devices 110 for use and rendering by the game module 130′ to provide local versions and current status of the game to the players.
On the client-side, each of the one or more player client devices 110 is configured to implement the game module 130′ such that it operates as a gaming application to provide a player with an interface between the player and the game. The game module 130′ is configured to generate the interface to render a virtual environment, virtual space, or virtual world associated with the game and enables the player to interact in the virtual environment to perform a plurality of game and other tasks and objectives. The game module 130′ is configured to access game data received from the game server 105 to provide an accurate representation of the game to the player. The game module 130′ is also configured to capture and process player inputs and interactions within the virtual world or environment and provide updates to the game server 110 over the network 115.
The database system 120 described herein may be, include, or interface to, for example, an Oracle™ relational database sold commercially by Oracle Corporation. Other databases, such as Informix™, DB2 (Database 2) or other data storage, including file-based, or query formats, platforms, or resources such as OLAP (On Line Analytical Processing), SQL (Structured Query Language), a SAN (storage area network), Microsoft Access™ or others may also be used, incorporated, or accessed. The database system 120 may comprise one or more such databases that reside in one or more physical devices and in one or more physical locations.
In accordance with some aspects of the present specification, the client-side ACS module 132′ is configured to download gaming content in real-time as a player moves through the game (that is, during gameplay). Consequently, the server-side ACS module 132 is configured to stream the gaming content in real-time as and when desired or requested by the client-side ACS module 132′ during gameplay. In an embodiment, the streaming of the gaming content in considered “on-demand” when a player encounters a texture that they have not yet downloaded but wish to display it. The player will queue downloading the texture. This avoids the need to download large amounts of data indicative of gaming content upfront into a client device 110. Operationally, the client-side ACS module 132′, in data communication with the server-side ACS module 132, is configured to detect whether a specific portion of data indicative of gaming content has been stripped or removed from the initial download as a player reaches that portion of the game and, in real-time, downloads the missing texture or content. In some embodiments, a standard base game package, provided to the player at the time of initial download, is stripped out of the gaming content that is downloaded in real-time so that the base game package (for initial download) is smaller. In embodiments, players may select which components of the standard base game package they wish to install.
In accordance with aspects of the present specification, the server-side ACS module 132 is configured to implement a plurality of instructions or programmatic code to, dynamically or in real-time, adapt or modulate streaming of gaming content to the client-side player ACS module 132′ based on a continued assessment of the quality or stability of the connection of the network 110.
In various embodiments, instead of simply downloading missing gaming content at a preset speed regardless of the circumstance, the present specification is directed towards a more responsive or adaptive content streaming system that sets an initial content streaming speed and, if the download reaches that streaming speed, the system gradually increases the speed while periodically checking for issues or problems related to the network connection used for streaming the gaming content. If the system does not identify any issues or problems, it is configured to gradually increase the speed. However, if the system does identify one or more issue or problems, the system incrementally throttles the speed back until there is stability of the network connection.
At step 202, based on a determined need for downloading gaming content in real-time during gameplay, the client-side ACS module 132′ is configured to send a request to the server-side ACS module 132 to download the required gaming content. The need for downloading gaming content in real-time is driven from a player interacting with a portion of the gaming content, for example, an image that is not found in their base game package (provided to the player at the time of initial download, for example) or already downloaded in the CDN (Content Delivery Network) storage.
At step 204, based on the received request, the appropriately configured server-side ACS module 132 streams, in real-time, the required gaming content (to the client-side ACS module 132′ which is configured to receive) at a predetermined streaming parameter(s)—that is, at a desired minimum streaming speed and an associated desired maximum streaming speed. In some embodiments, the desired streaming parameters correspond to predetermined, yet modifiable base streaming parameters that include a minimum streaming speed and a maximum streaming speed. In some embodiments, the base minimum streaming speed is 128 kbps and the base maximum streaming speed is 1500 kbps. However, in various other embodiments, the base minimum streaming speed and the base maximum streaming speed may be customized to other values. In some embodiments, the desired streaming parameters are set to the base streaming parameters at an initiation of a streaming session of the gaming content. In some embodiments, the desired streaming parameters correspond to modulated streaming parameters that are customized dynamically or in real-time based on the quality/stability of connection of the network 115 between the server-side and client-side ACS modules 132, 132′. The modulated streaming parameters include a modulated minimum streaming speed and a modulated maximum streaming speed.
At step 206, the server-side ACS module 132 is configured to determine if the time duration of streaming the gaming content is equal to a predefined threshold time duration. In some embodiments, the predefined threshold time duration is on the order of 400 to 600 milliseconds, preferably 425 to 575 milliseconds, preferably 450 to 550 milliseconds, and most preferably 500 milliseconds. The predefined threshold time duration may vary in alternate embodiments. If the time duration for streaming the gaming content is less than the predefined threshold time duration, the flow moves back to step 204, that is, the server-side ACS module 132 is configured to continue to stream the gaming content to the client-side ACS module 132′ (or the client device 110).
However, if the time duration of streaming the gaming content is equal to the predefined threshold time duration, the flow proceeds to step 208. At step 208, the server-side ACS module 132 is configured to determine if the quality or stability of the network connection (between the server-side and client-side ACS modules 132, 132′) is robust. In some embodiments, the quality or stability of the network connection is deemed as robust if the connection complies with a first connection parameter, a second connection parameter, and a third connection parameter, which may be ping time, packet loss, and amount of gaming content downloaded at the ACS module 132′ during the predefined threshold time duration, respectively. Stated differently, on a continual basis, at the end of the predefined threshold time duration, the server-side ACS module 132 is configured to determine or evaluate the quality or stability of the network connection. In some embodiments, the amount of gaming content downloaded (that is, the third connection parameter) is determined cither by the player setting a GB limit per day, such as a 1 GB minimum with no maximum or the download limit set by the player's gaming console (such as, for example, 5 GB per 20 minutes for PS5® and 1 GB per 5 minutes for Xbox® Series X/S).
In some embodiments, the quality or stability of the network connection is considered robust if: a) the first connection parameter, specifically ping (Packet Internet or Inter-Network Groper) time, is less than a predefined threshold ping time. In some embodiments, the predefined ping time is 50 milliseconds. In some embodiments, an increase of 15% over the predefined threshold ping time is considered as a deterioration of the quality of the network connection (that is, a slowing down of the gaming CDN) and an increase of 50% is an immediate stopping of the CDN, b) the second connection parameter, specifically packet loss, is less than a predefined threshold packet loss. In some embodiments, the predefined threshold packet loss is 1%, 5%, 10%, 15%, 20%, 25%, 30% or any whole number increment between 1% and 30%, and c) the third connection parameter, which may be at least one of i) the amount of gaming content downloaded at the ACS module 132′, being substantially equal to an amount of gaming content streamed (by the ACS module 132) at the streaming speed (of step 204) in the predefined threshold time duration or ii) the amount of gaming content downloaded at the ACS module 132′ being substantially equal to a data size limit per day set by the player and/or the download limit set by the player's gaming console, such as 5 gigabytes per 20 minutes or 1 gigabyte per 5 minutes. If the above conditions for the first, second and third connection parameters are not met then the network connection is determined to be unstable and therefore not robust and vice versa.
If, at step 208, it is determined that the quality or stability of the network connection is robust, then the flow proceeds to step 210. At step 210, the server-side ACS module 132 is configured to check if the current streaming speed is equal to the maximum streaming speed. If yes, then the flow reverts to step 204. In other words, if the gaming content is being streamed at the maximum streaming speed, then streaming is continued without any further modulation of the streaming speed. In some embodiments, the maximum streaming speed is 1500 kbps. However, if the current streaming speed is less than the maximum streaming speed then, at step 214, the streaming speed is modulated upwards (or increased) to a modulated streaming speed. Thereafter, the flow moves back to step 204. In some embodiments, the streaming speed is increased by a predetermined incremental speed value. In some embodiments, the predetermined incremental speed value is, for example, 128 kbps. Thus, the streaming speed is increased incrementally by 128 kbps until the maximum streaming speed is achieved. In some embodiments, the maximum streaming speed may be the base maximum streaming speed or a modulated maximum streaming speed depending upon the quality or stability of the network connection. In various embodiments, the predetermined incremental speed value may be higher or lower than 128 kbps.
If, at step 208, it is determined that the quality or stability of the network connection is not robust (i.e. packet loss or an increase in latency from a small connection bandwidth), then the flow proceeds to step 216. A network connection may be determined to not be robust if a degree of data packet loss is above a predefined value, if a rate of increase in data packet loss is above a predefined value, if a degree of network latency is above a predefined value, and/or if a rate of increase in network latency is above a predefined value At step 216, the server-side ACS module 132 is configured to determine if the first and/or second connection parameters have degraded severely resulting in substantial degradation of quality or stability of the network connection. In some embodiments, the quality or stability of the network connection is determined to be substantially or severely degraded if one or both of the following conditions are met: a) the first connection parameter of ping time increases by more than X % of the predefined threshold ping time, b) the second connection parameter of packet loss increases by more than Y % of the predefined threshold packet loss. In some embodiments, X %=Y %=15%. However, in some embodiments, X %≠Y % and the values of X % and Y % may range from 10% to 25%.
If, at step 216, it is determined that the quality or stability of the network connection has substantially or severely degraded then the flow moves to step 218. At step 218, the server-side ACS module 132 is configured to stop streaming of the gaming content. In other words, the network connection is interrupted for a predetermined cooling off time-period. In some embodiments, the predetermined cooling time-period is 20 seconds. In some embodiments, the predetermined cooling time period ranges from 10 seconds to 30 seconds. In embodiments, the cooling-off period is employed so that the network pressure, congestion, and/or data transmission delays are reduced for an extended amount of time, resulting in improved network quality or stability.
At the end of the predetermined cooling time period, at step 220, the server-side ACS module 132 is configured to evaluate if the first connection parameter of ping time is less than the predetermined threshold ping time and the second connection parameter of packet loss is less than the predetermined threshold packet loss. In some embodiments, the evaluation of step 220 is performed over a predetermined evaluation time period. In some embodiments, the predetermined evaluation time period is 10 seconds. In some embodiments, the predetermined evaluation time period ranges from 5 seconds to 15 seconds.
At the end of the predetermined evaluation time period, if the first connection parameter and/or second connection parameters are found to be less than the respective predetermined threshold ping time and packet loss then, at step 222, the streaming speed is reset to the base minimum streaming speed and the maximum streaming speed is reset to the base maximum streaming speed. Thereafter, the flow moves back to step 204. However, if the first and/or second connection parameters are still found to be greater than the respective predetermined threshold ping time and packet loss then the flow moves back to step 218.
On the other hand, if, at step 216, it is determined that the quality or stability of the network connection has not degraded substantially or severely then the flow proceeds to step 224. That is, the flow proceeds to step 224 if a) at step 208, it is determined that the quality or stability of the network connection is not robust (or has degraded) and b) at step 216, it is determined that the quality or stability of the network connection has not degraded substantially or severely. Stated differently, the flow moves to step 224 if the first connection parameter of ping time increases more than the predefined threshold ping time but does not increase by more than X % of the predefined threshold ping time, the second connection parameter of packet loss increases more than the predefined threshold packet loss but does not increase by more than Y % of the predefined threshold packet loss and the third connection parameter of the amount of gaming content downloaded at the ACS module 132′ is substantially less than the amount of the content streamed by the ACS module 132. In some embodiments, substantially less is defined as being less than 99% of the amount of the content streamed by the ACS module 132.
At step 224, the streaming speed is modulated downward (or decreased/reduced) to a modulated streaming speed and the maximum streaming speed is also lowered by a predefined lower value to a modulated maximum streaming speed. In some embodiments, the predefined lower value is 256 KB/sec that may be successively applied. For example, if the streaming speed is 1200 KB/sec and a network connection issue is detected then the streaming speed is reduced to 950 KB/sec (or a reduction by 256 KB/sec). If the connection still does not stabilize then the streaming speed is further reduced to 700 KB/sec (that is, a further reduction of 256 KB/sec) and so forth until the connection stabilizes or the streaming speed reaches 0 (that is, the content streaming is stopped). Thereafter, the flow moves back to step 204. In some embodiments, the streaming speed is decreased by a predetermined decrement speed value. In some embodiments, the predetermined decrement speed value is, say, 256 kbps. Thus, the streaming speed is decremented in steps of 256 kbps until the network connection is determined to be stable. In various embodiments, the predetermined decrement speed value may be higher or lower than 256 kbps.
The above examples are merely illustrative of the many applications of the systems and methods of the present specification. Although only a few embodiments of the present invention have been described herein, it should be understood that the present invention might be embodied in many other specific forms without departing from the spirit or scope of the invention. Therefore, the present examples and embodiments are to be considered as illustrative and not restrictive, and the invention may be modified within the scope of the appended claims.
The present application relies on U.S. Patent Provisional Application No. 63/477,897, titled “Methods and Systems for Real-Time Adaptive Streaming of Gaming Content in an Online Video Game” and filed on Dec. 30, 2022, for priority, which is herein incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
63477897 | Dec 2022 | US |