IP Library › Granted Patent US 11,207,594
Granted Patent B2
US 11,207,594 · App. 16/369,514 · Granted Dec 28, 2021

State stream game engine

Inventor: Per Henrik Benny Karlsson (North Vancouver, CA)
Assignee: ELECTRONIC ARTS INC.
A63F13/355A63F13/352A63F2300/538
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,207,594
App. No.
16/369,514
Granted
Dec 28, 2021
Kind
B2
Abstract

The present disclosure provides a state stream game engine for a video game application. The state stream game engines can decouple the simulation of a video game application from the rendering of the video game application. The simulation of the video game is handled by a simulation engine. The rendering of the video game is handled by a presentation engine. The data generated by the simulation engine can be communicated to the presentation engine 124 using a state stream.

Claims (52)

1. A computer-implemented method for executing a game application on a user computing system:

by one or more hardware processor configured with computer executable instructions,

executing a game application;

executing a plurality of simulation engines within the game application, wherein each simulation engine is configured to execute game logic that is configured to control simulation of a virtual environment within the game application, wherein each simulation engine is configured to control simulation of a different virtual environment, wherein each virtual environment comprises a plurality of virtual objects registered to the corresponding simulation engine;

for each simulation engine,

generating simulation state data for each virtual object registered to the simulation engine during a simulation cycle;

generating graphical state data based at least in part on the simulation state data generated for the simulation cycle;

writing the graphical state data for a least a subset of the virtual objects to a state data package during the simulation cycle;

after the graphical state data for each virtual object has been written to the state data package, writing the state data package to a state stream during the simulation cycle, wherein the state stream is a portion of volatile memory allocated to receive the state data package;

executing a presentation engine within the game application, wherein the presentation engine is configured to generate and render frames for output on a display;

selecting, by the presentation engine, at least a first state data package of a plurality of state data packages during a rendering cycle;

reading, by the presentation engine, at least the first state data package from the state stream during the rendering cycle;

updating, by the presentation engine, a graphical state of a first virtual environment corresponding to the virtual environment associated with the first state data package,

generating, by the presentation engine, a frame based at least in part on the updated graphical state of the first virtual environment and a second state data package, wherein the second state data package was generated by the same simulation engine that generated the first state data package; and

rendering, by the presentation engine, the frame based at least in part on the graphical state data included in the first state data package and the second state data package during the rendering cycle, wherein the presentation engine executes the rendering cycles without further input from the simulation engines after receiving the state data packages.

2. The computer-implemented method of claim 1 , wherein the simulation cycle and the rendering cycle are different lengths of time.

3. The computer-implemented method of claim 2 further comprising interpolating the graphical state data included in the first state data package and the second state data package;

generating a plurality of frames based on the interpolation; and

rendering the plurality of frames.

4. The computer-implemented method of claim 1 , wherein simulation cycles for each simulation engine are different lengths of time relative to each other.

5. The computer-implemented method of claim 1 , wherein the each of the plurality of simulation engines execute independent of each other and the presentation engine, wherein the presentation engine generates and renders frames independent of the execution of simulation engine that generated the state data package.

6. The computer-implemented method of claim 1 further comprising executing one or more simulation engines on different user computing systems and writing state data packages to the state stream on the user computing system over a network.

7. The computer-implemented method of claim 1 further comprising, by each simulation engine, writing state data package to a location in non-volatile storage simultaneously with writing the state data package to the state stream.

8. The computer-implemented method of claim 1 , wherein each simulation engine writes to a different state stream, and each state stream is allocated a different portion of volatile memory to receive the state data package.

9. The computer-implemented method of claim 1 further comprising:

determining, by the presentation engine, an state data package is ready for disposal; and

deleting the state data packages from the state stream that are ready for disposal.

10. The computer-implemented method of claim 1 , wherein the graphical state data of a state data package comprises state data necessary to recreate a graphical scene within the respective virtual environment of the corresponding simulation engine at a point in time.

11. The computer-implemented method of claim 1 , wherein the state data package is generated in less time than a length of the simulation cycle, wherein there is a period of time between writing the state data package to the state stream and initiation of a subsequent simulation cycle.

12. A computing system comprising:

one or more hardware processors configured with computer-executable instructions that configure the computing system to:

execute a game application;

execute a plurality of simulation engines within the game application, wherein each simulation engine is configured to execute game logic that is configured to control simulation of a virtual environment within the game application, wherein each simulation engine is configured to control simulation of a different virtual environment, wherein each virtual environment comprises a plurality of virtual objects registered to the corresponding simulation engine;

for each simulation engine,

generate simulation state data for each virtual object registered to the simulation engine during a simulation cycle;

generate graphical state data based at least in part on the simulation state data generated for the simulation cycle;

write the graphical state data for a least a subset of the virtual objects to a state data package during the simulation cycle;

after the graphical state data for each virtual object has been written to the state data package, write the state data package to a state stream during the simulation cycle, wherein the state stream is a portion of volatile memory allocated to receive the state data package;

execute a presentation engine within the game application, wherein the presentation engine is configured to generate and render frames for output on a display;

select, by the presentation engine, at least a first state data package of a plurality of state data packages during a rendering cycle;

read, by the presentation engine, at least the first state data package from the state stream during the rendering cycle;

update, by the presentation engine, a graphical state of a first virtual environment corresponding to the virtual environment associated with the first state data package,

generate, by the presentation engine, a frame based at least in part on the updated graphical state of the first virtual environment and a second state data package, wherein the second state data package was generated by the same simulation engine that generated the first state data package; and

render, by the presentation engine, the frame based at least in part on the graphical state data included in the first state data package and the second state data package during the rendering cycle, wherein the presentation engine executes the rendering cycles without further input from the simulation engines after receiving the state data packages.

13. The system of claim 12 , wherein the simulation cycle and the rendering cycle are different lengths of time.

14. The system of claim 13 wherein the one or more hardware processors are configured with computer-executable instructions that further configure the presentation engine to interpolate the graphical state data included in the first state data package and the second state data package, generate a plurality of frames based on the interpolation, and render the plurality of frames.

15. The system of claim 12 , wherein simulation cycles for each simulation engine are different lengths of time relative to each other.

16. The system of claim 12 , wherein the one or more hardware processors are configured with computer-executable instructions that further configure each of the plurality of simulation engines to execute independent of each other and the presentation engine, the presentation engine to generate and render frames independent of the execution of simulation engine that generated the state data package.

17. The system of claim 12 , wherein the one or more hardware processors are configured with computer-executable instructions that further configure each simulation engine to write the state data package to a location in non-volatile storage simultaneously with writing the state data package to the state stream.

18. The system of claim 12 , wherein the one or more hardware processors are configured with computer-executable instructions that further configure each simulation engine writes to a different state stream, and each state stream is allocated a different portion of volatile memory to receive the state data package.

19. The system of claim 12 , wherein the graphical state data of a state data package comprises state data necessary to recreate a graphical scene within the respective virtual environment of the corresponding simulation engine at a point in time.

20. The system of claim 12 , wherein the state data package is generated in less time than a length of the simulation cycle, wherein there is a period of time between writing the state data package to the state stream and initiation of a subsequent simulation cycle.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2021
From: KARLSSON, PER HENRIK BENNY
To: ELECTRONIC ARTS INC.
Reel/Frame 056567/0134 →
Continuity (1)
Related Publication 20200306630A1 · Oct 1, 2020
Cited By (1)
US 12,472,427