IP Library Granted Patent US 11,064,049
Granted Patent B2
US 11,064,049 · App. 16/401,490 · Granted Jul 13, 2021

Predictive cloud-based presimulation

Inventor: Joel Pritchett (Duvall, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L67/38G06F9/5044G06F9/5072H04L67/10H04L67/42A63F2300/407G06F16/9574G06F2209/509
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,064,049
App. No.
16/401,490
Granted
Jul 13, 2021
Kind
B2
Abstract

Embodiments related to predictive cloud-based presimulation are described herein. For example, one disclose embodiment provides, on a computing device, a method comprising receiving an input of state from a client device and executing a server simulation of a digital experience based on the input of state, the server simulation configured to run concurrently with, and ahead of, a client simulation on the client device. The method further comprises generating a plurality of simulation results from the server simulation, selecting one or more simulation results from the plurality of simulation results based on a likelihood the client simulation will utilize a particular simulation result, and sending the one or more simulation results to the client device.

Claims (41)

1. On a server computing device, a method comprising:

receiving an input from a client device;

executing a server simulation of a digital experience based on the input, the server simulation configured to run concurrently with, and ahead of, a client simulation of the digital experience being executed on the client device;

generating a plurality of simulation results from the server simulation based on a likelihood that the client simulation will utilize each of the plurality of simulation results, the likelihood determined based on data regarding how often a re-simulation produces a same or different result as a previous simulation;

sending the plurality of simulation results from the server computing device to the client device;

invalidating one or more simulation results of the plurality of simulation results based on further input from the client device, updating the likelihood that the client simulation will utilize each of the plurality of simulation results based on invalidated simulation results, and selecting one or more simulation results from the plurality of simulation results that have not been invalidated based on the further input from the client device; and

sending the one or more simulation results selected in the digital experience to the client device.

2. The method of claim 1 , wherein selecting the one or more simulation results comprises selecting the one or more simulation results based on an amount of time used by the server simulation to generate each of the one or more simulation results selected.

3. The method of claim 1 , wherein selecting the one or more simulation results comprises selecting the one or more simulation results based on an amount of data in a function output of each of the one or more simulation results selected.

4. The method of claim 1 , wherein each of the one or more simulation results sent to the client device comprises a representation of each of a function input, a corresponding function output generated by a function based on the function input and a function identifier.

5. The method of claim 4 , wherein each of the one or more simulation results sent to the client device further comprises an object identifier indicating an object acted on by the function.

6. The method of claim 1 , wherein the input from the client device comprises an input of state including a temporal identifier indicating a temporal location of the state within the client simulation.

7. The method of claim 6 , wherein the temporal location comprises a frame number.

8. The method of claim 7 , further comprising executing the simulation by reinitializing the server simulation at the temporal location.

9. The method of claim 1 , further comprising determining the likelihood based on one or more statistics regarding re-simulation of previous simulation results.

10. The method of claim 1 , further comprising executing the simulation at a higher quality than the client simulation on the client device, the higher quality comprising one or more of a higher frame rate, a higher resolution, or a lower compression.

11. A client computing device, comprising:

a logic subsystem; and

a data-storage subsystem comprising instructions executable by the logic subsystem to

receive an input during execution of a client simulation of a digital experience;

send the input to a server;

receive from the server a plurality of server simulation results;

receive further input during execution of the client simulation of the digital experience, the further input affecting the digital experience;

send the further input to the server; and

after sending the further input to the server, receive from the server one or more further server simulation results based on a resimulation that invalidated one or more of the plurality of server simulation results received previously, the one or more further server simulation results being selected from the plurality of server simulation results that have not been invalidated.

12. The client computing device of claim 11 , wherein each of the one or more server simulation results received by the client computing device comprises a representation of each of a function input, a corresponding function output generated by a function based on the function input and a function identifier.

13. The client computing device of claim 12 , wherein each of the one or more server simulation results received by the client computing device further comprises an object identifier indicating an object acted on by the function.

14. The client computing device of claim 11 , wherein the input sent to the server comprises an input of state including a temporal identifier indicating a temporal location of the state within the client simulation.

15. The client computing device of claim 14 , wherein the temporal location comprises a frame number.

16. The client computing device of claim 15 , wherein the instructions are executable to store server simulation results in a lookup structure.

17. The client computing device of claim 16 , wherein the instructions are further executable, upon occurrence of a function call while executing the client simulation of the digital experience, to determine whether a corresponding server simulation result is stored in the lookup structure.

18. The client computing device of claim 11 , wherein the plurality of server simulation results are configured to execute at a higher quality than the client simulation, the higher quality comprising one or more of a higher frame rate, a higher resolution, or a lower compression.

19. On a computing system, a method comprising:

receiving an input from a client device;

sending the input to a server from the client device;

executing one or more server simulations of a digital experience based on the input, the server simulation configured to run concurrently with, and ahead of, a client simulation of the digital experience being executed on the client device;

generating a plurality of simulation results from the server simulation based on a likelihood that the client simulation will utilize each of the plurality of simulation results, the likelihood determined based on data regarding how often a re-simulation produces a same or different result as a previous simulation;

receiving the plurality of simulation results from the server at the client device;

invalidating one or more simulation results of the plurality of simulation results based on further input from the client device, updating the likelihood that the client simulation will utilize each of the plurality of simulation results based on invalidated simulation results, and selecting one or more simulation results from the plurality of simulation results that have not been invalidated based on the further input from the client device; and

executing the one or more simulation results selected in the digital experience on the client device.

20. The method of claim 19 , wherein selecting the one or more simulation results comprises selecting the one or more simulation results based on an amount of time used by the server simulation to generate each of the one or more selected simulation results, or based on an amount of data in a function output of each of the one or more selected simulation results.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2019
From: PRITCHETT, JOEL
To: MICROSOFT CORPORATION
Reel/Frame 050362/0990 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 2, 2019
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 049062/0868 →
Continuity (3)
Continuation 14794623 · Jul 8, 2015
Continuation 13494806 · Jun 12, 2012
Related Publication 20190260852A1 · Aug 22, 2019
Cited By (1)
US 12,709,414