This application is related to U.S. patent application Ser. No. 15/599,408, titled “Methods and Systems for Facilitating Participation in a Game Session,” filed May 18, 2017, which is incorporated by reference herein in its entirety.
This application relates generally to computer technology, including but not limited to methods and systems for simulating network impairments for testing network-enabled applications.
Streaming media systems have evolved techniques for addressing network impairments caused by congestion, physics, and various physical layer protocol idiosyncrasies. Examples of such techniques include buffering, dynamic bitrate adaptation, and other congestion management techniques. Real time interactive streaming, for fields such as cloud gaming, introduces various constraints that differ from those caused by streaming for passive consumption. As such, determining the efficacy of congestion management techniques for real time interactive streaming applications is extremely difficult due to the many variables at play, both with the various network impairments as well as the interactive nature of the application.
One technique for testing streaming media systems involves the use of simulated networks. However, not only is it very difficult to accurately simulate real-world communication networks, it is also challenging to design simulations that yield reproducible results.
The implementations described in this specification are directed to developing real time interactive streaming applications by using a simulated test network embodying dynamic real-world impairments.
In some implementations, a network simulator is presented, governed by a set of simulation scenarios. A traffic generator emulates a real-time encoder with controls for emulating target bitrates, error correction and related variables to create traffic similar to what would be generated by an equivalent real time video encoder. A developer client receives traffic generated from the traffic generator. The traffic traverses the network simulator on its way to the developer client. The developer client participates in a protocol to actively record the traffic. A congestion management algorithm interfaces to the traffic generator, modulating its behavior based on the feedback from the developer client.
The described implementations allow developers of real time streaming applications to predict how a particular application will perform over varying types of real world network conditions. The described implementations have an advantage of providing accurate performance evaluations by reproducing real world network impairments, but with the convenience of a lab environment.
In accordance with some implementations, a method is performed at an electronic device having one or more processors and memory storing one or more programs for execution by the one or more processors. The method includes: obtaining a first network simulation scenario selected from a plurality of predefined network simulation scenarios, each of the network simulation scenarios embodying a specific combination of dynamic network parameters, wherein the dynamic network parameters for a respective predefined simulation scenario are based on measurements of a real world communication environment corresponding to the respective simulation scenario; executing a network-enabled test application; encoding a video stream associated with a plurality of specific operations of the network-enabled test application; simulating transmission of the encoded video stream in a simulated test network for the first network simulation scenario with associated first dynamic network parameters; generating a filtered data stream that reflects simulated real time effects of the simulated test network on transmission of the encoded data stream based on the first dynamic network parameters; and determining a plurality of time-varying quality metrics for the filtered data stream.
In accordance with some implementations, a method is performed at an electronic device having one or more processors and memory storing one or more programs for execution by the one or more processors. The method includes: obtaining a network-enabled test application; displaying, in a first user interface of the computing system, a plurality of affordances associated with a respective one of a plurality of predefined network simulation scenarios, each of the network simulation scenarios embodying a specific combination of dynamic network parameters, wherein the dynamic network parameters for a respective predefined simulation scenario are based on measurements of a real world communication environment corresponding to the respective simulation scenario; receiving a user selection of a first affordance associated with a first network simulation scenario; and in response to the user selection of the first affordance: encoding a video stream associated with a plurality of specific operations of the network-enabled test application; simulating transmission of the encoded video stream in a simulated test network for the first network simulation scenario with associated first dynamic network parameters; determining one or more performance aspects of the network-enabled test application based on a plurality of time-varying quality metrics for the filtered data stream; and associating the one or more performance aspects of the network-enabled test application with the first simulation scenario.
In accordance with some implementations, an electronic device includes one or more processors and memory storing one or more programs to be executed by the one or more processors. The one or more programs include instructions for performing any of the methods described above. In accordance with some implementations, a non-transitory computer-readable storage medium stores one or more programs, the one or more programs include instructions, which, when executed by an electronic device with one or more processors, cause the electronic device to perform any of the methods described above.
Like reference numerals refer to corresponding parts throughout the drawings.
In various implementations described in this application, a testing environment includes a network simulator including a plurality of simulation scenarios. Each simulation scenario embodies a specific combination of dynamic network parameters, and the dynamic network parameters for a respective simulation scenario are based on measurements of a real world communication environment corresponding to the respective simulation scenario. When a network-enabled test application is executed in the test environment, an output data stream from the test application is transmitted through the network simulator, where it is exposed to impairments associated with the dynamic network parameters. A developer client receives the resulting impaired data stream and determines a plurality of time-varying quality metrics for the test application, where the quality metrics are specific to a respective simulation scenario. In this manner, a simulated user experience can be determined based on real world network conditions, in the convenience of a lab environment.
In some implementations, the client device 102 and the media device 106 are communicatively coupled. The client device 102 and the media device 106 may communicate with each other through the local network 110 and/or directly (e.g., via Bluetooth or other wireless communications). In some implementations, the client device 102 and the media device 106 are local to each other (e.g., in the same room, in the same house, etc.). The media device 106 is coupled to one or more output devices 108 that output visual and/or audio content (e.g., a television, a display monitor, a sound system, speakers, etc.). In some implementations, the media device 106 is a casting device (e.g., CHROMECAST by Google Inc.) or a device that otherwise includes casting functionality.
The client device 102 is a device that includes, and can run, one or more applications. In some implementations, the client device 102 is a smartphone, tablet device, a laptop or notebook computer, a desktop computer, or a multimedia device.
In some implementations, the client device 102 includes one or more applications that are configured to operate in conjunction with the media device 106. In some implementations, the applications include a media device application for pairing the client device 102 with the media device 106 and configuring the media device 106. The applications also include one or more applications that cast associated content to the media device 106. In some implementations, an application casts data and/or content to the media device 106 by sending the data/content directly to the media device 106 (e.g., via the local network 110) and/or by directing the media device 106 to a remote location (e.g., a Universal Resource Locator (“URL”) or other link to a location at a server system) from which the media device 106 can stream or otherwise receive data/content. The media device 106 receives data/content from the application and/or the remote location and outputs visual and/or audio content corresponding to the received data/content to the output device 108.
In the interactive streaming environment 100, a user of the client device 102 (hereinafter “user”) starts a streaming session (e.g., a game) by launching a streaming application (e.g., a game application) for execution at the client device 102. The executing streaming application communicates with a server 114 to establish a session. In some implementations, the user instructs the streaming application to communicate with the media device 106 to direct the media device 106 to receive data associated with the streaming session for outputting. For these implementations, a session is established between the streaming application, the remote server 114, and the media device 106.
The user of the client device 102 optionally invites additional users to join the session (e.g., the first player invites other players to join the game). An identifier of the session is presented to users of one or more client devices 104. In some implementations, the session identifier is or otherwise includes an internet link (e.g., a Universal Resource Locator (“URL”)) in a notification. If an additional user opens the notification, the user may access the session identifier directly from the notification or activate an affordance to display the session identifier (e.g., in another application). The additional user(s) then join the session upon accessing the session identifier. Specifically, when the session identifier is used at a client 104 (e.g., the session identifier link is activated), the client 104 communicates with the server 114 in order to join the session. After the client 104 joins the session, the users at clients 102 and 104 can participate in the streaming session (e.g., play the game) by, for example, making inputs that affect the output of the session.
In some implementations, if the additional client 104 is already on the local network 110 of the first client 102, communications between the server 114 and the additional client 104 go through the local network 110. If the additional client 104 is not on the local network 110, communications between the server 114 and the additional client 104 go through a different connection (e.g., through communication network(s) 112).
In some implementations, as part of the process of a client 102/104 joining the session, the server 114 accesses the capabilities of the client 102/104 and/or a quality of the communicative connection between the server 114 and the client 102/104. In some implementations, the server 114 measures network latency between the client 102/104 and the server 114. If the measured latency is above a threshold and a lower-latency connection is available, the server 114 suggests that the client 102/104 change to the lower latency connection, or invite the user of the client 102/104 to change the client 102/104 to the lower latency connection. For example, if the client 104 is on a cellular wireless connection 112, and the local network 110 is available, the server 114 suggests that the client 104 should connect through the local network 110.
In some implementations, the latency threshold requirements differ between streaming applications. For example, some streaming applications (e.g., action games) are best experienced on lower latency connections, and some other streaming applications (e.g., online board games or card games) are not as demanding with respect to latency, and the server 114 may make connection recommendations in view of these different requirements.
In some implementations, a streaming application requires a companion application associated with the streaming application. For implementations in which the streaming application is a game application, a companion application is a virtual game controller application for controlling gameplay. In some implementations, the server 114 communicates with the client 102/104 to set up a virtual game controller on the player client 102/104. In some implementations, the server 114 assesses whether the client 102/104 has the needed resources for the virtual game controller (e.g., whether the client 102/104 has an application needed to implement the virtual game controller and/or whether the communicative connection between the client 102/104 and the server 114 has a latency that is appropriate for the game session). Depending on the available resources at the client 102/104, the connection quality, and the requirements for the game, the virtual game controller may be implemented differently at the client 102/104 (e.g., for situations in which connection quality is low the virtual game controller is implemented as a streamlined version including fewer features).
In some implementations, the client 102/104 accesses the streaming application and/or the companion application with a webpage-based interface. For example, a virtual game controller interface for a game may be embedded in a webpage, and the webpage is rendered in a web browser on the client 102/104. If a webpage-based controller interface is the controller of choice for the session, the server 114 transmits the control interface webpage to the client 102/104 when the client 102/104 joins the session.
In some implementations, the developer console 210 includes an input/output (I/O) interface 220, which includes input device(s) 222 (e.g., a keyboard and/or mouse) and output device(s) 224 (e.g., a display) for facilitating interaction between the developer console 210 and a developer (or any other user of the developer console 210). The developer console 210 further includes memory 216, one or more processors 214 (referred to herein as central processing units (CPUs)), and a communication interface 212 for interfacing with the simulation environment 230 (e.g., through channel 213). In some implementations, the simulation environment 230 includes a communication interface 232 for interfacing with the developer console 210, one or more CPUs 234, memory 236, and a simulation module 240. The simulation module 240 includes a client module 242, a test application (“test app”) module 244, and a network simulator 246.
The client module 242 supplies a stream 243 of input data (e.g., simulating input data generated by a user of client device 102,
Memory 216 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM, or other random access solid state memory devices; and, optionally, includes non-volatile memory, such as one or more magnetic disk storage devices, one or more optical disk storage devices, one or more flash memory devices, or one or more other non-volatile solid state storage devices. Memory 216, optionally, includes one or more storage devices remotely located from one or more processing units 214. Memory 216, or alternatively the non-volatile memory within memory 216, includes a non-transitory computer readable storage medium. In some implementations, memory 216, or the non-transitory computer readable storage medium of memory 216, stores the following programs, modules, and data structures, or a subset or superset thereof:
Each of the above identified elements may be stored in one or more of the previously mentioned memory devices, and corresponds to a set of instructions for performing a function described above. The above identified modules or programs (i.e., sets of instructions) need not be implemented as separate software programs, procedures, modules or data structures, and thus various subsets of these modules may be combined or otherwise re-arranged in various implementations. In some implementations, memory 216, optionally, stores a subset of the modules and data structures identified above. Furthermore, memory 216, optionally, stores additional modules and data structures not described above.
Memory 236 includes high-speed random access memory, such as DRAM, SRAM, DDR RAM, or other random access solid state memory devices; and, optionally, includes non-volatile memory, such as one or more magnetic disk storage devices, one or more optical disk storage devices, one or more flash memory devices, or one or more other non-volatile solid state storage devices. Memory 236, optionally, includes one or more storage devices remotely located from one or more processing units 234. Memory 236, or alternatively the non-volatile memory within memory 236, includes a non-transitory computer readable storage medium. In some implementations, memory 236, or the non-transitory computer readable storage medium of memory 236, stores the following programs, modules, and data structures, or a subset or superset thereof:
The various network impairments are modeled off of real world network scenarios. For instance, impairment 510 may result from a person closing a door at time t3, thereby impeding a WiFi signal for as long as the door remains closed; impairment 520 may result from a person turning on a microwave at time t5, thereby impeding a WiFi signal until the microwave turns off at time t7, at which time the impairment introduced by the microwave's interference completely goes away; and impairment 530 may result from a person continuously walking away from a wireless router, thereby experiencing a decreased signal strength. By modeling the various impairments in each simulation scenario to simulate real world network scenarios with real world impairments (as described above), the simulation scenarios more realistically emulate real world environments. Further, by capturing the dynamic impairment changes in a static command recipe, each simulation scenario provides a reproducible sequence of dynamically changing impairments, thereby allowing for repeatable tests and reliable results when comparing different versions of the same test application. In other words, a developer testing an interactive network-enabled application (e.g., a cloud-based game) can be reassured that changes in results between tests are due to updates in the application itself, instead of variations in the testing environment.
The various affordances, elements, and areas displayed in the example user interfaces 600, 610, 620, and 630 are merely exemplary; a person of ordinary skill in the art would recognize that the specific means for loading and selecting files and displaying results that are depicted in the figures are not meant to be limiting in the context of interacting with an electronic device in a test environment.
An electronic device (e.g., simulation environment 230,
The electronic device executes (704) the test application (e.g., 432-1,
The network simulator simulates (706) transmission of the output data stream, or the encoded output data stream, of the test application in a simulated test network for the first network simulation scenario (e.g., 442-1,
The filtered data stream is recorded (708) in memory (e.g., 444-1(v),
The electronic device determines (710) one or more time-varying quality metrics for the filtered data stream. Examples of quality metrics include latency measurements, jitter measurements, dropped packets, channel noise levels, and channel bandwidth levels. In some implementations, the quality metrics are determined with respect to running time of the test application, or with respect to specific portions of the test application. In some implementations, one or more performance aspects of the test application are determined based on the quality metrics (e.g., percentage of dropped packets, average/high/low latency and/or bandwidth levels, and so forth). In some implementations, a simulated user experience value is determined and associated with the simulation scenario for the test application (e.g., “User Experience Score” in Summary 624,
In some embodiments, the electronic device adjusts (712) one or more congestion management algorithms (e.g., 432-1(iii),
An electronic device (e.g., developer console 210,
The electronic device displays (802) a plurality of simulation scenarios (e.g., 442,
The electronic device receives (803) a selection of a first simulation scenario (e.g., through selection of an affordance 605). In some implementations, a developer selects an available simulation scenario by selecting an affordance or other user interface element that corresponds to a desired simulation scenario for a particular test. Alternatively, a simulation scenario is automatically selected as part of a testing script. For example, a particular testing script may be associated with DSL testing, and include simulation scenarios 442-6 through 442-10 (
In some implementations, the electronic device also receives a selection of a client program or script (e.g., 422,
Upon selection of a test application and a simulation scenario (and optionally, a client program), the electronic device runs a simulation. In some implementations, the simulation is run upon selection of an affordance (e.g., 608,
In order to run a simulation, the electronic device executes (804) the test application. Upon execution of the test application, an encoder (e.g., 434,
While the test application is being executed and the encoder is encoding a data stream, the electronic device simulates (806) transmission of the encoded data stream through the selected simulation scenario (e.g., with the associated dynamic network parameters). In some implementations, the electronic device simulates the transmission in accordance with features discussed above with reference to step 706.
The electronic device records (808) the filtered data stream in memory in accordance with features discussed above with reference to step 708, and determines (810) quality metrics of the filtered data stream in accordance with features discussed above with reference to step 710. In some implementations, the electronic device determines one or more performance aspects of the network-enabled test application based on a plurality of the quality metrics for the filtered data stream (as described above), and associates one or more of the performance aspects with the current simulation scenario of the test application being tested.
In some implementations, testing and evaluation ends (812: yes) upon completion of the current simulation scenario, and in some implementations, the electronic device adjusts (814) one or more congestion management algorithms of the test application in accordance with features discussed above with reference to step 712.
Alternatively, testing and evaluation does not end (812: no) upon completion of the current simulation scenario, and in some implementations, the electronic device proceeds to step 802, at which one or more simulation scenarios are displayed for a subsequent simulation of the test application. For example, the electronic devices receives (803) a selection of a second affordance associated with a second network simulation scenario, and in response, the electronic device executes (804) the test application, simulates (806) transmission of the encoded data stream of the test application in a simulated test network for the second simulation scenario, records (808) the resulting filtered data stream, determines (810) quality metrics and performance aspects of the filtered data stream, and associates the performance aspects with the second simulation scenario.
In some implementations, after a plurality of simulations, the electronic device displays (e.g., on output device 224), on a results user interface (e.g., 630,
An electronic device transmits (902) a first data stream including a first portion of content associated with a network-enabled test application to a user device through a real world communication environment (e.g., a Wi-Fi network set up in a real apartment, or a DSL network set up in a real office building, etc.).
The electronic device produces (904) first performance data for the transmission in step 902 by characterizing performance of the test application in the real world communication environment at the user device (e.g., by measuring various quality metrics and/or performance aspects as described above).
The electronic device generates (906) a test network based on the first performance data in order to approximate the real world communication network (e.g., programs a command recipe as described above with reference to
The electronic device transmits (908) a second data stream including the first portion of content associated with the network-enabled test application to the client device through the test network generated in step 906 (e.g., subjects the data stream to impairments corresponding with the commands in the command recipe).
The electronic device produces (910) second performance data for the transmission in step 908 by characterizing performance of the test application in the test network at the user device (e.g., by measuring various quality metrics and/or performance aspects as described above).
The electronic device compares (912) the first performance data (associated with the real world network) with the second performance data (associated with the simulated test network).
If the first and second performance data are not equivalent to a predetermined degree (e.g., less than 90% similar), then the derivation of the parameters for the current simulation scenario is determined to be incomplete (914: no). In some implementations, upon the determination that the derivation of the parameters for the current simulation scenario is incomplete, one or more of the test network parameters for the current simulation scenario are adjusted (916), and the process continues at step 908.
However, if the first and second performance data are equivalent to a predetermined degree (e.g., at least 90% similar), then the derivation of the parameters for the current simulation scenario is determined to be complete (914: yes). In some implementations, upon the determination that the derivation of the parameters for the current simulation scenario is complete, the real world network is adjusted (918), or a new real world network is introduced, and the process repeats for the new real world network (and a new simulation scenario associated with the new real world network), beginning at step 902.
References have been made in detail to various implementations, examples of which are illustrated in the accompanying drawings. In the above detailed description, numerous specific details are set forth in order to provide a thorough understanding of the invention and the described implementations. However, the invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the implementations.
It will be understood that, although the terms “first,” “second,” etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first device could be termed a second device, and, similarly, a second device could be termed a first device, without changing the meaning of the description, so long as all occurrences of the first device are renamed consistently and all occurrences of the second device are renamed consistently. The first device and the second device are both device, but they are not the same device.
The terminology used herein is for the purpose of describing particular implementations only and is not intended to be limiting of the claims. As used in the description of the implementations and the appended claims, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will also be understood that the term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
As used herein, the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in accordance with a determination” or “in response to detecting,” that a stated condition precedent is true, depending on the context. Similarly, the phrase “if it is determined [that a stated condition precedent is true]” or “if [a stated condition precedent is true]” or “when [a stated condition precedent is true]” may be construed to mean “upon determining” or “in response to determining” or “in accordance with a determination” or “upon detecting” or “in response to detecting” that the stated condition precedent is true, depending on the context.
The foregoing description, for purpose of explanation, has been described with reference to specific implementations. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The implementations were chosen and described in order to best explain the principles of the invention and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various implementations with various modifications as are suited to the particular use contemplated.
Number | Name | Date | Kind |
---|---|---|---|
6855058 | Kubota et al. | Feb 2005 | B2 |
7401150 | Shea et al. | Jul 2008 | B2 |
7774440 | Bagrodia | Aug 2010 | B1 |
8171145 | Allen et al. | May 2012 | B2 |
8619588 | Karacali-Akyamac | Dec 2013 | B2 |
8621585 | Danieli et al. | Dec 2013 | B2 |
8641531 | Patil | Feb 2014 | B2 |
9208642 | Merari | Dec 2015 | B2 |
9339733 | Boudville | May 2016 | B2 |
9393486 | George | Jul 2016 | B2 |
9396702 | Colenbrander | Jul 2016 | B2 |
9498711 | Assa | Nov 2016 | B2 |
9526989 | Oh | Dec 2016 | B2 |
9592446 | Bono et al. | Mar 2017 | B2 |
9675874 | Park | Jun 2017 | B1 |
9912562 | Callahan et al. | Mar 2018 | B2 |
10166471 | Vincent et al. | Jan 2019 | B2 |
10255765 | Washington et al. | Apr 2019 | B2 |
10456672 | Champy | Oct 2019 | B2 |
10486066 | Perry et al. | Nov 2019 | B2 |
20040198403 | Pedersen et al. | Oct 2004 | A1 |
20050074063 | Nair et al. | Apr 2005 | A1 |
20060154710 | Serafat | Jul 2006 | A1 |
20060287096 | O'Kelley et al. | Dec 2006 | A1 |
20060287099 | Shaw et al. | Dec 2006 | A1 |
20070018980 | Berteig et al. | Jan 2007 | A1 |
20070203768 | Adra | Aug 2007 | A1 |
20070293319 | Stamper et al. | Dec 2007 | A1 |
20080220878 | Michaelis | Sep 2008 | A1 |
20090008404 | Kim et al. | Jan 2009 | A1 |
20090125961 | Perlman et al. | May 2009 | A1 |
20090271656 | Yokota et al. | Oct 2009 | A1 |
20100167809 | Perlman et al. | Jul 2010 | A1 |
20100203952 | Zalewski | Aug 2010 | A1 |
20100306813 | Perry et al. | Dec 2010 | A1 |
20110124417 | Baynes et al. | May 2011 | A1 |
20110145635 | Buckler et al. | Jun 2011 | A1 |
20120004042 | Perry et al. | Jan 2012 | A1 |
20120079080 | Pishevar | Mar 2012 | A1 |
20120209571 | Peterson et al. | Aug 2012 | A1 |
20120270644 | Buhr | Oct 2012 | A1 |
20120306877 | Rosasco | Dec 2012 | A1 |
20130017443 | Yamazaki | Jan 2013 | A1 |
20130034160 | Schmit | Feb 2013 | A1 |
20130198642 | Carney et al. | Aug 2013 | A1 |
20130221923 | Robertson | Aug 2013 | A1 |
20130274000 | Novotny et al. | Oct 2013 | A1 |
20140006517 | Hsiao et al. | Jan 2014 | A1 |
20140019582 | Kim | Jan 2014 | A1 |
20140032670 | Ellingson et al. | Jan 2014 | A1 |
20140043333 | Narayanan et al. | Feb 2014 | A1 |
20140179426 | Perry et al. | Jun 2014 | A1 |
20140179434 | Xu | Jun 2014 | A1 |
20140221087 | Huang et al. | Aug 2014 | A1 |
20140274380 | Kazama | Sep 2014 | A1 |
20140274384 | Boswell et al. | Sep 2014 | A1 |
20140342819 | Bruno, Jr. et al. | Nov 2014 | A1 |
20150009222 | Diard et al. | Jan 2015 | A1 |
20150024842 | Imai et al. | Jan 2015 | A1 |
20150087414 | Chen et al. | Mar 2015 | A1 |
20150109185 | Shimamura et al. | Apr 2015 | A1 |
20150297998 | Karamfilov et al. | Oct 2015 | A1 |
20160001184 | Sepulveda et al. | Jan 2016 | A1 |
20160028854 | Leeb | Jan 2016 | A1 |
20160171757 | Panneer et al. | Jun 2016 | A1 |
20160279523 | Altagar et al. | Sep 2016 | A1 |
20160293134 | Fortin | Oct 2016 | A1 |
20160317921 | Schmitz et al. | Nov 2016 | A1 |
20170034234 | Zimring et al. | Feb 2017 | A1 |
20170083396 | Bishop et al. | Mar 2017 | A1 |
20170097816 | Joshi | Apr 2017 | A1 |
20170124812 | Washington et al. | May 2017 | A1 |
20170142201 | Holmes | May 2017 | A1 |
20170185464 | Lipinski et al. | Jun 2017 | A1 |
20170246544 | Agarwal et al. | Aug 2017 | A1 |
20170354878 | Posin | Dec 2017 | A1 |
20170354893 | Benedetto et al. | Dec 2017 | A1 |
20180176282 | Benguerah | Jun 2018 | A1 |
20180229128 | Chandrasekaran et al. | Aug 2018 | A1 |
20180250591 | Prado Rojas et al. | Sep 2018 | A1 |
20180256981 | Enomoto | Sep 2018 | A1 |
20190272707 | Washington et al. | Sep 2019 | A1 |
20190308099 | Lalonde et al. | Oct 2019 | A1 |
20190321725 | Zimring et al. | Oct 2019 | A1 |
20190321727 | Rodgers | Oct 2019 | A1 |
20190321732 | Zimring et al. | Oct 2019 | A1 |
20200001177 | Champy | Jan 2020 | A1 |
20200111317 | Oberberger et al. | Apr 2020 | A1 |
Number | Date | Country |
---|---|---|
101068258 | Nov 2007 | CN |
106328855 | Jan 2017 | CN |
107050858 | Aug 2017 | CN |
107666943 | Feb 2018 | CN |
1374959 | Jan 2004 | EP |
2546811 | Jan 2013 | EP |
3610933 | Feb 2020 | EP |
2525437 | Oct 2015 | GB |
2014130589 | Jul 2014 | JP |
2015139565 | Aug 2015 | JP |
20070082395 | Aug 2007 | KR |
2005010680 | Feb 2005 | WO |
2007044908 | Apr 2007 | WO |
2008104221 | Apr 2008 | WO |
2012161102 | Nov 2012 | WO |
2012170437 | Dec 2012 | WO |
2014085717 | Jun 2014 | WO |
2014120369 | Aug 2014 | WO |
2014186858 | Nov 2014 | WO |
2015191965 | Dec 2015 | WO |
2016183253 | Nov 2016 | WO |
2017007659 | Jan 2017 | WO |
2017201472 | Nov 2017 | WO |
2019074952 | Apr 2019 | WO |
2019182752 | Sep 2019 | WO |
2019195300 | Oct 2019 | WO |
2020102493 | May 2020 | WO |
Entry |
---|
Google LLC, International Search Report and Written Opinion, PCT/US2018/066844, dated Feb. 26, 2019, 10 pgs. |
A Dynamic Network Scenario Emulation Tool, Daniel Herrscher, Kurt Rothermel University of Stuttgart, Institute of Parallel and Distributed High-Performance Systems (IPVR) Breitwiesenstr. pp. 20-22, 70565 Stuttgart, Germany. |
Trace-Based Mobile Network Emulation Brian D. Noble, M. Satyanarayanan, Giao T. Nguyen, Randy H. Katz to appear in Proceedings of ACM SIGCOMM '97, Cannes, France, Sep. 1997. |
Extended European Search Report dated Jan. 3, 2020 for EP Application No. EP 19199853.3, 10 pages. |
Notice of Grant dated Nov. 5, 2019 for JP Application No. JP 2019220516, 7 pages. English machine translation included. |
English Translation of Korean Notice of Allowance dated Jan. 28, 2020 for KR Application No. KR 10-2018-7023961, 3 pages. |
English Translation of Korean Office Action dated Apr. 15, 2019 for KR Application No. KR 10-2018-7023961, 2 pages. |
English Translation of Korean Office Action dated Aug. 18, 2018 for KR Application No. KR 10-2020-7002403, 5 pages. |
International Preliminary Report on Patentability dated May 9, 2018 for International Application No. PCT/US2017/033642, 13 pages. |
International Search Report and Written Opinion dated Apr. 24, 2018 for International Application No. PCT/US2017/033642, 28 pages. |
First Action Interview Office Action Summary dated Feb. 26, 2019 for U.S. Appl. No. 15/599,408, 3 pages. |
First Action Interview Pilot Program Pre-Interview Communication dated Jan. 8, 2019 for U.S. Appl. No. 15/599,408, 4 pages. |
Notice of Allowance dated Jun. 19, 2019 for U.S. Appl. No. 15/599,408, 6 pages. |
Non-Final Office Action dated Jun. 12, 2020 for U.S. Appl. No. 16/566,607, 23 pages. |
Final Office Action dated Oct. 16, 2020 for U.S. Appl. No. 16/566,607, 18 pages. |
International Search Report and Written Opinion dated Feb. 26, 2019 for International Application No. PCT/US2018/066844, 13 pages. |
International Search Report and Written Opinion dated Feb. 24, 2020 for International Application No. PCT/US2019/061407, 13 pages. |
International Preliminary Report on Patentability dated Apr. 14, 2020 for International Application No. PCT/US2018/055055, 13 pages. |
International Search Report and Written Opinion dated Apr. 26, 2019 for International Application No. PCT/US2018/055055, 21 pages. |
International Search Report and Written Opinion dated Oct. 4, 2019 for International Application No. PCT/US2019/025182, 23 pages. |
International Preliminary Report on Patentability dated Oct. 15, 2020 for International Application No. PCT/US2019/025182, 18 pages. |
First Action Interview Pilot Program Pre-Interview Communication dated Apr. 9, 2020 for U.S. Appl. No. 16/368,801, 4 pages. |
Notice of Allowance dated Jun. 10, 2020 for U.S. Appl. No. 16/368,801, 12 pages. |
International Search Report and Written Opinion dated Jun. 18, 2019 for International Application No. PCT/US2019/025185, 11 pages. |
International Preliminary Report on Patentability dated Oct. 15, 2020 for International Application No. PCT/US2019/025185, 7 pages. |
Notice of Allowance dated May 5, 2020 for U.S. Appl. No. 16/368,806, 8 pages. |
International Search Report and Written Opinion dated Jun. 18, 2019 for International Application No. PCT/US2019/022472, 13 pages. |
International Preliminary Report on Patentability dated Oct. 15, 2020 for International Application No. PCT/US2019/022472, 8 pages. |
Non-Final Office Action dated Jun. 22, 2020 for U.S. Appl. No. 16/373,558, 6 pages. |
Notice of Allowance dated Sep. 17, 2020 for U.S. Appl. No. 16/373,558, 9 pages. |
International Search Report and Written Opinion dated Sep. 20, 2019 for International Application No. PCT/US2019/026611, 26 pages. |
First Action Interview Pilot Program Pre-Interview Communication dated May 21, 2020 for U.S. Appl. No. 16/380,831, 4 pages. |
First Action Interview Office Action dated Sep. 2, 2020 for U.S. Appl. No. 16/380,831, 4 pages. |
International Search Report and Written Opinion dated Aug. 1, 2019 for International Application No. PCT/US2019/020935, 23 pages. |
International Search Report and Written Opinion dated Oct. 7, 2019 for International Application No. PCT/US2019/025400, 13 pages. |
Bernier, Yahn W., “Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization”, Game Developers Conference Proceedings, Mar. 20, 2001, 13 pages. |
Ra-Qin, “Ra-Qin Review of the Activision Decathlon—Gamespot,” Sep. 2, 2006; XP055625157; retrieved from www.gamespot.com/the-activision-decathlon/user-reviews/2200-128501/ on Sep. 23, 2019; 3 pages. |
SLIVAR, Ivan et al., “Empirical QoE Study of In-Home Streaming of Online Games”, 2014 13th Annual Workshop on Network and Systems Support for Games, IEEE, Dec. 4, 2014, 6 pages. |
Yoneda, Satoshi, “Completed Understanding of Windows 8 as a Game Environment (6) Windows Store App Version Game and Xbox Smart Glass,” Oct. 30, 2012; 22 pages; accessed on Aug. 5, 2020 from https://www.4gamer.net/games/126/G012689/20121029010/. |
Notice of Allowance dated Dec. 30, 2020 for U.S. Appl. No. 16/380,831, 72 pages. |
Non-Final Office Action dated Mar. 31, 2021 for U.S. Appl. No. 16/566,607, 19 pages. |
Office Action dated Feb. 19, 2021 for European Patent Application No. 18797260.9, 6 pages. |
Yadav, Himanshu, et al., “Adaptive GPU Resource Scheduling on Virtualized Servers in Cloud Gaming”, Conference on Information and Communication Technology, Nov. 2017, 6 pages. |
First Examination Report dated Jun. 26, 2021 for Indian Application No. 202047027952, 6 pages. |
English Translation of Japanese Office Action dated May 18, 2021 for JP Application No. 2019-220516, 7 pages. |
Extended European Search Report dated May 21, 2021 for EP Application No. EP 21169156.3, 9 pages. |
IT Media News, “Google launches new ”Chromecast“ and ”Chromecast Audio“ in Japan for JPY4,980”], Feb. 18, 2016, search date Apr. 30, 2021, URL https://www.itmedia.co.jp/news/articles/1602/18/news101.html. |
Weekly ASCII, “Angry Birds Friends, a smartphone game to compete for high score with Facebook friends”, May 31, 2013, URL https://weekly.ascii.jp/elem/000/002/615/2615748/. |
English Translation of Chinese Office Action dated May 21, 2021 for CN Application No. 20198029685.3, 15 pages. |
Number | Date | Country | |
---|---|---|---|
20190199772 A1 | Jun 2019 | US |