IP Library › Granted Patent US 12,472,427
Granted Patent B2
US 12,472,427 · App. 18/439,418 · Granted Nov 18, 2025

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 12,472,427
App. No.
18/439,418
Granted
Nov 18, 2025
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 (49)

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

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

executing a game session of a game application, wherein a plurality of client computing devices are connected to the game session, wherein each client computing device is associated with a user, wherein each client computing device is configured to execute a simulation engine and a presentation engine within a local execution of 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 presentation engine is configured to generate and render frames for output on a display;

receiving user input from each of the plurality of client computing devices during a simulation cycle resulting in a plurality of user inputs, wherein each of the plurality of client computing devices are synchronized to the same simulation cycle;

providing the plurality of user inputs to each of the plurality of client computing devices during the simulation cycle;

wherein, for individual client computing devices, during the simulation cycle,

generating, by the simulation engine, simulation state data based at least in part on the plurality of user inputs provided during the simulation cycle;

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

updating, by the presentation engine, a graphical state of the virtual environment corresponding to the virtual environment associated with the individual client computing device during a rendering cycle; and

rendering, by the presentation engine, a frame based at least in part on the graphical state data during the rendering cycle.

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 , wherein a plurality of rendering cycles occur for each simulation cycle, the method further comprising interpolating, by the presentation engine, the graphical state data;

generating a plurality of frames based on the interpolation; and

rendering the plurality of frames.

4 . The computer-implemented method of claim 1 , further comprising

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

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.

5 . The computer-implemented method of claim 1 further comprising waiting until each of the plurality of client computing devices has provided user input during a simulation cycle prior to providing the plurality of user inputs to each of the plurality of client computing devices.

6 . The computer-implemented method of claim 1 further comprising, wherein, during each simulation cycle, the individual simulation engines wait to generate simulation state data until receiving the plurality of user inputs.

7 . The computer-implemented method of claim 1 , wherein length of a simulation cycle can vary based on a rate at which user input is received from the plurality of client computing devices, wherein the rate can be based at least in part on network latency associated with individual client computing devices.

8 . The computer-implemented method of claim 7 further comprising removing a first client computing device from the game session if the network latency of the client computing device satisfies a network latency threshold.

9 . A computing system comprising:

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

execute a game session of a game application, wherein a plurality of client computing devices are connected to the game session, wherein each client computing device is associated with a user, wherein each client computing device is configured to execute a simulation engine and a presentation engine within a local execution of 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 presentation engine is configured to generate and render frames for output on a display;

receive user input from each of the plurality of client computing devices during a simulation cycle resulting in a plurality of user inputs, wherein each of the plurality of client computing devices are synchronized to the same simulation cycle;

provide the plurality of user inputs to each of the plurality of client computing devices during the simulation cycle;

wherein for individual client computing devices during the simulation cycle,

generating, by the simulation engine, simulation state data based at least in part on the plurality of user inputs provided during the simulation cycle;

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

updating, by the presentation engine, a graphical state of the virtual environment corresponding to the virtual environment associated with the individual client computing device during a rendering cycle; and

rendering, by the presentation engine, a frame based at least in part on the graphical state data during the rendering cycle.

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

11 . The system of claim 10 , wherein a plurality of rendering cycles occur for each simulation cycle.

12 . The system of claim 9 , wherein, during each simulation cycle, the individual simulation engines wait to generate simulation state data until receiving the plurality of user inputs.

13 . The system of claim 9 , wherein length of a simulation cycle can vary based on a rate at which user input is received from the plurality of client computing devices, wherein the rate can be based at least in part on network latency associated with individual client computing devices.

14 . The system of claim 13 , wherein the one or more processors are configured with computer-executable instructions to remove a first client computing device of the plurality of client computing devices from the game session if the network latency of the client computing device satisfies a network latency threshold.

15 . The system of claim 9 , wherein each of the plurality of client computing devices are synchronized to the same simulation cycle.

16 . A non-transitory computer-readable storage medium having stored thereon instructions that, when executed, cause one or more processors to:

execute a game session of a game application, wherein a plurality of client computing devices are connected to the game session, wherein each client computing device is associated with a user, wherein each client computing device is configured to execute a simulation engine and a presentation engine within a local execution of 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 presentation engine is configured to generate and render frames for output on a display;

receive user input from each of the plurality of client computing devices during a simulation cycle resulting in a plurality of user inputs, wherein each of the plurality of client computing devices are synchronized to the same simulation cycle;

provide the plurality of user inputs to each of the plurality of client computing devices during the simulation cycle;

wherein for individual client computing devices during the simulation cycle,

generating, by the simulation engine, simulation state data based at least in part on the plurality of user inputs provided during the simulation cycle;

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

updating, by the presentation engine, a graphical state of the virtual environment corresponding to the virtual environment associated with the individual client computing device during a rendering cycle; and

rendering, by the presentation engine, a frame based at least in part on the graphical state data during the rendering cycle.

17 . The non-transitory computer-readable storage medium of claim 16 , wherein length of a simulation cycle can vary based on a rate at which user input is received from the plurality of client computing devices, wherein the rate can be based at least in part on network latency associated with individual client computing devices.

18 . The non-transitory computer-readable storage medium of claim 17 , wherein the one or more processors are configured with computer-executable instructions to remove a first client computing device of the plurality of client computing devices from the game session if the network latency of the client computing device satisfies a network latency threshold.

19 . The non-transitory computer-readable storage medium of claim 16 , wherein the simulation cycle and the rendering cycle are different lengths of time.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2025
From: KARLSSON, PER HENRIK BENNY
To: ELECTRONIC ARTS INC.
Reel/Frame 072645/0431 →
Continuity (3)
Continuation 17645440 · Dec 21, 2021
Continuation 16369514 · Mar 29, 2019
Related Publication 20240261674A1 · Aug 8, 2024
References Cited (29)
US 7458894B2 · Danieli et al. · 2008 [cited by applicant]
US 7632186B2 · Spanton · 2009 [cited by applicant]
US 8069258B1 · Howell · 2011 [cited by applicant]
US 8678929B1 · Nishimura et al. · 2014 [cited by applicant]
US 8874661B2 · Wild et al. · 2014 [cited by applicant]
US 9526995B2 · Brunstetter · 2016 [cited by applicant]
US 10044800B2 · Anastasi · 2018 [cited by applicant]
US 10105598B2 · Furumoto et al. · 2018 [cited by applicant]
US 10148978B2 · Kopietz · 2018 [cited by applicant]
US 10176278B2 · Belmans · 2019 [cited by applicant]
US 10549204B2 · Perry · 2020 [cited by applicant]
US 11207594B2 · Karlsson · 2021 [cited by applicant]
US 20030038805A1 · Wong et al. · 2003 [cited by applicant]
US 20070117617A1 · Spanton et al. · 2007 [cited by applicant]
US 20170011554A1 · Burba et al. · 2017 [cited by applicant]
US 20170072307A1 · Perry · 2017 [cited by applicant]
US 20170104819A1 · Anastasi et al. · 2017 [cited by applicant]
US 20170246544A1 · Agarwal et al. · 2017 [cited by applicant]
US 20170269685A1 · Marks · 2017 [cited by applicant]
US 20190308099A1 · Lalonde · 2019 [cited by examiner]
CN 1787422A · 2006 [cited by applicant]
CN 107741898 · 2018 [cited by applicant]
“Advances in FPS Netcode,” by U/Kovaak. Published Jan. 9, 2015. Source: https://www.reddit.com/r/truegaming/comments/2ruqba/advances_in_fps_netcode/ (Year: 2015). [cited by applicant]
“Interpolation—When should I extrapolate and when should I interpolate?” by J Leong, published Mar. 10, 2016. Source: https://gamedev.stackexchange.com/questions/118006/when-should-i-extrapolate-and-when-should-i-interp… [cited by applicant]
“Rollback Networking in Inversus,” by Ryan Juckett. Published Dec. 8, 2016. Source: https://www.gamasutra.com/blogs/RyanJuckett/20161208/287162/Rollback_Networking_in_INVERSUS.php (Year: 2016). [cited by applicant]
“Snapshot Interpolation,” by Glenn Fiedler. Published Nov. 30, 2014. Source: https://gafferongames.com/post/snapshot_interpolation/ (Year: 2014). [cited by applicant]
“Spectator Games: A New Entertainment Modality for Networked Multiplayer Games,” by Steven Drucker, Li-Wei He-, Michael Cohen, Curtis Wong, Anoop Gupta for Microsoft Research. Published Jan. 2003. (Year: 2003). [cited by applicant]
“Supporting Spectators in Online Multiplayer Games,” by Ashwin Bharambe, Venkata Padmanabhan and Srinivasan Seshan. Published Jan. 2004. (Year: 2004). [cited by applicant]
“Snapshot Interpolation,” by Glen Fiedler, published Nov. 30, 2014 in Networked Physics. Source: https://gafferongames.com/post/snapshot_interpolation/ (Year: 2014). [cited by applicant]