IP Library › Granted Patent US 10,924,525
Granted Patent B2
US 10,924,525 · App. 16/148,953 · Granted Feb 16, 2021

Inducing higher input latency in multiplayer programs

Inventors: Jonathan David Morrison (North Bend, WA); Eduardo A. Cuervo Laffaye (Redmond, WA); Hoi Huu Vo (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L65/602A63F13/355A63F13/358H04L41/20H04L65/607
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 10,924,525
App. No.
16/148,953
Granted
Feb 16, 2021
Kind
B2
Abstract

A server computing device for inducing latency on target input streams is provided. The server computing device includes a processor configured to receive a plurality of input streams from a respective plurality of client computing devices. Each input stream includes a plurality of inputs controlling actions of respective characters in a multiplayer online software program. The processor is further configured to determine a latency of each of the input streams, identify a higher latency input stream and a lower latency input stream among the plurality of input streams, and induce a higher latency in the lower latency input stream to narrow a difference in latency between the higher latency input stream and the lower latency input stream.

Claims (45)

1. A server computing device, comprising a processor configured to:

receive a plurality of input streams from a respective plurality of client computing devices, each input stream including a plurality of inputs controlling actions of respective characters in a multiplayer game session of a multiplayer online software program;

determine a latency of each of the input streams based at least on detecting whether inputs were received from each of the plurality of input streams at a target input frequency;

identify a higher latency input stream and a lower latency input stream among the plurality of input streams, wherein missed inputs not received at the target input frequency are used to identify the higher latency input stream; and

induce a higher latency in the lower latency input stream to narrow a difference in latency between the higher latency input stream and the lower latency input stream, to thereby accommodate the higher latency input stream and the lower latency input stream in the multiplayer game session.

2. The server computing device of claim 1 , wherein the higher latency is induced in each other input stream other than a highest latency input stream of the plurality of input streams.

3. The server computing device of claim 1 , wherein the processor is further configured to:

predict a long-term latency for each of the plurality of input streams; and

increase the induced higher latency in one or more lower latency input streams up to a highest predicted long-term latency of the plurality of input streams.

4. The server computing device of claim 1 , wherein the processor is configured to induce the higher latency by buffering inputs for each of the plurality of input streams.

5. The server computing device of claim 1 , wherein the processor is configured to:

render output frames for a software program state of the multiplayer online software program for each of the plurality of client computing device at a controllable framerate; and

send the rendered output frames in a plurality of output frame streams to the respective plurality of client computing devices.

6. The server computing device of claim 5 , wherein the processor is further configured to induce the higher latency by buffering output frames for each of the plurality of output frame streams.

7. The server computing device of claim 5 , wherein the processor is further configured to induce the higher latency by decreasing the controllable framerate to be less than a target framerate.

8. The server computing device of claim 7 , wherein the processor is configured to cause each client computing device to interpolate intermediate frames based on one or more output frames in the output frame streams to achieve the target framerate.

9. The server computing device of claim 1 , wherein the processor is configured to:

detect a missed input in the higher latency input stream based on the target input frequency; and

insert a predicted input into the higher latency input stream to fill the missed input.

10. The server computing device of claim 9 , wherein the predicted input is determined based on trained input data including a history of inputs in that input stream.

11. A method comprising:

at a server computing device including a processor,

receiving a plurality of input streams from a respective plurality of client computing devices, each input stream including a plurality of inputs controlling actions of respective characters in a multiplayer game session of a multiplayer online software program;

determining a latency of each of the input streams based at least on detecting whether inputs were received from each of the plurality of input streams at a target input frequency;

identifying a higher latency input stream and a lower latency input stream among the plurality of input streams, wherein missed inputs not received at the target input frequency are used to identify the higher latency input stream; and

inducing a higher latency in the lower latency input stream to narrow a difference in latency between the higher latency input stream and the lower latency input stream to thereby accommodate the higher latency input stream and the lower latency input stream in the multiplayer game session.

12. The method of claim 11 , wherein the higher latency is induced in each other input stream other than a highest latency input stream of the plurality of input streams.

13. The method of claim 11 , further comprising:

rendering output frames for a software program state of the multiplayer online software program for each of the plurality of client computing device at a controllable framerate; and

sending the rendered output frames in a plurality of output frame streams to the respective plurality of client computing devices.

14. The method of claim 13 , wherein inducing the higher latency includes buffering output frames for each of the plurality of output frame streams.

15. The method of claim 13 , wherein inducing the higher latency includes decreasing the controllable framerate to be less than a target framerate.

16. The method of claim 15 , further comprising causing each client computing device to interpolate intermediate frames based on one or more output frames in the output frame streams to achieve the target framerate.

17. A server computing device, comprising a processor configured to:

receive a plurality of input streams from a respective plurality of client computing devices, each input stream including a plurality of inputs controlling actions of respective characters in a multiplayer online software program;

determine a latency of each of the input streams including a highest predicted long-term latency;

identify a higher latency input stream and a lower latency input stream among the plurality of input streams;

induce a higher latency in the lower latency input stream up to the highest predicted long-term latency;

detect one or more missed inputs in the higher latency input stream based on a target input frequency;

if the one or more missed inputs is greater than a threshold amount of inputs, halt execution of the multiplayer online software program; and

if the one or more missed inputs is lower than the threshold amount of inputs, insert a predicted input into the higher latency input stream to fill the missed input.

18. The server computing device of claim 17 , wherein the predicted input is determined based on trained input data including a history of inputs in that input stream.

19. The server computing device of claim 17 , wherein the processor is configured to:

render output frames for a software program state of the multiplayer online software program for each of the plurality of client computing device at a controllable framerate; and

send the rendered output frames in a plurality of output frame streams to the respective plurality of client computing devices.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 24, 2019
From: MORRISON, JONATHAN DAVID; CUERVO LAFFAYE, EDUARDO A.; VO, HOI HUU
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 048127/0748 →
Continuity (1)
Related Publication 20200106819A1 · Apr 2, 2020
Cited By (1)
US 12,343,620