IP Library Granted Patent US 8,597,124
Granted Patent B2
US 8,597,124 · App. 12/885,814 · Granted Dec 3, 2013

Apparatus and method for fair message exchanges in distributed multi-player games

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 8,597,124
App. No.
12/885,814
Granted
Dec 3, 2013
Kind
B2
Abstract

The Fair-Ordering Service delivers action messages to the server as soon as it is feasible. Because action messages from different players exhibit different reaction times with respect to an update message, the Fair-Ordering Service executed at the server dynamically enforces a sufficient waiting period on each action message to guarantee the fair processing of all action messages. The Fair-Ordering Service takes into consideration delayed and out-of-order action messages. When action messages corresponding to multiple update messages are interleaved, the Fair-Ordering Service matches the action message to the appropriate update message by maintaining a window of update messages and using the reaction times for an action message for each of the update messages in the window. This enables state changes at the game server to be performed with fairness to all the players. The Fair-Ordering Service is based on a framework that uses a proxy architecture.

Claims (49)

1. A method of providing a fair exchanging of messages to players in a distributed multi-player game, the distributed multi-player game using a game server configured for generating update messages for the players and processing action messages from the players, the method comprising:

using a processor and a memory for:

propagating update messages toward players and receiving action messages from players; and

delivering the action messages for processing by the game server in an order of increasing reaction time without clock synchronization among the game server and the players, reaction time being indicative of a difference between reception of an update message by a player and sending of an action message by the player in response to the update message.

2. The method of claim 1 , wherein delivery of each action message is delayed until a computed delivery time is reached to ensure fair processing of the action messages of the players.

3. The method of claim 1 , wherein, for each of the update messages, a message number is associated with the update message for use in identifying the action message with which the update message is associated.

4. The method of claim 1 , wherein each action message comprises an update message number and a reaction time.

5. The method of claim 1 , wherein each of the action messages has a respective wait timeout period associated therewith, the method further comprising:

computing, for each received action message, a respective delivery time for use in delivering the action message for processing by the game server, wherein an appropriate delivery time formula for an action message is utilized depending on at least one of whether action messages arrive in order and whether action messages arrive within their wait timeout periods.

6. The method of claim 5 , wherein:

a first delivery time formula is utilized when action messages arrive in order and within their wait timeout periods;

a second delivery time formula is utilized when action messages arrive out of order and within their wait timeout periods; and

a third delivery time formula is utilized when action messages arrive outside their wait timeout periods.

7. The method of claim 1 , wherein each of the action messages has a respective wait timeout period associated therewith, the method further comprising:

computing, for each received action message, a respective delivery time for use in delivering the action message for processing by the game server;

wherein the delivery time of an action message is calculated before being inserted to a delivery queue, and recalculated upon new action message arrival when action messages arrive in order or out of order but within their wait timeout periods;

wherein delivery time of an action message is calculated before being inserted to a delivery queue, and recalculated upon new action message arrival and action message delivery when action messages arrive outside of the wait timeout period.

8. The method of claim 1 , wherein each of the update messages has a respective update message number associated therewith, the method further comprising:

queuing the action messages for use in delivering the action messages for processing by the game server, wherein the queued action messages are arranged in an order of increasing update message number and are further arranged for each update message in an order of increasing reaction time.

9. The method of claim 1 , wherein delivering the action messages for processing by the game server comprises queuing the action messages, wherein:

for at least one of the action messages, queuing the action message for processing by the game server comprises executing a message splitting process in which the action message is queued a plurality of times based on the respective plurality of reaction times included within the received action message.

10. A method of providing a fair exchanging of messages to players in a distributed multi-player game, the distributed multi-player game using a game server configured for generating update messages for the players and receiving action messages from the players, the method comprising:

using a processor and a memory for:

propagating a plurality of update messages generated by the game server, wherein the update messages are intended for a player;

receiving an action message associated with the player, wherein the action message comprises a plurality of reaction times associated with the respective plurality of update messages intended for the player; and

queuing the action message for processing by the game server, wherein the action message is queued using the reaction times included within the action message.

11. The method of claim 10 , further comprising:

propagating, toward a player proxy associated with the player, an indication of a window of update messages for which the game server is still accepting action messages from the players.

12. The method of claim 10 , wherein queuing the action message for processing by the game server comprises:

executing a message splitting process in which the action message is queued a plurality of times based on the respective plurality of reaction times included within the received action message.

13. The method of claim 12 , wherein executing the message splitting process comprises:

queuing the action message in each of a plurality of queues associated with the respective plurality of update messages with which the plurality of reaction times are associated, wherein the action message is queued within the plurality of queues using the respective reaction times associated with the update messages.

14. The method of claim 10 , wherein the action messages are queued such that the action messages are arranged in an order of increasing update message number and are further arranged for each update message in an order of increasing reaction time.

15. The method of claim 10 , further comprising:

computing, for each received action message, a respective delivery time for use in delivering the action message for processing by the game server, wherein an appropriate delivery time formula for an action message is utilized depending on at least one of whether action messages arrive in order and whether action messages arrive within their wait timeout periods.

16. A method of providing a fair exchange of messages to players of a distributed multi-player game, the distributed multi-player game using a game server configured for generating update messages for the players and processing action messages from the players, the method comprising:

using a processor and a memory for:

receiving a plurality of update messages generated by the game server and intended for a player;

receiving an action message generated by the player and intended for the game server;

updating the action message to include a plurality of reaction times associated with the respective update messages; and

propagating, toward the game server, the updated action message including the reaction times for the respective update messages.

17. The method of claim 16 , wherein the updated action message comprises a plurality of tuples associated with the respective plurality of reaction times, wherein each tuple comprises an identification of an update message and an associated reaction time calculated for the update message.

18. The method of claim 16 , further comprising:

calculating the reactions times for the update messages, wherein calculating the reactions times for the update messages comprises:

determining, for each of the update messages, a reception time of the update message at the player;

determining a transmission time of the action message by the player; and

for each of the update messages, calculating the reaction time for the update message using a difference between the transmission time of the action message and the reception time of the update message.

19. The method of claim 16 , wherein the plurality of received update messages comprise a subset of update messages from a set of update messages generated for the player since an action message was last received from the player.

20. The method of claim 19 , wherein the update messages in the subset of update messages are identified using a window of update messages, wherein the window of update messages identifies update messages for which the game server is still accepting action messages from the players.

Assignments (13)
PATENT SECURITY AGREEMENT Recorded Apr 22, 2023
From: RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 063429/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2021
From: PROVENANCE ASSET GROUP LLC
To: RPX CORPORATION
Reel/Frame 059352/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 30, 2021
From: NOKIA US HOLDINGS INC.
To: PROVENANCE ASSET GROUP HOLDINGS LLC; PROVENANCE ASSET GROUP LLC
Reel/Frame 058363/0723 →
RELEASE OF SECURITY INTEREST Recorded Nov 30, 2021
From: CORTLAND CAPITAL MARKETS SERVICES LLC
To: PROVENANCE ASSET GROUP HOLDINGS LLC; PROVENANCE ASSET GROUP LLC
Reel/Frame 058983/0104 →
ASSIGNMENT AND ASSUMPTION AGREEMENT Recorded Feb 14, 2019
From: NOKIA USA INC.
To: NOKIA US HOLDINGS INC.
Reel/Frame 048370/0682 →
SECURITY INTEREST Recorded Sep 13, 2017
From: PROVENANCE ASSET GROUP HOLDINGS, LLC; PROVENANCE ASSET GROUP LLC
To: NOKIA USA INC.
Reel/Frame 043879/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2017
From: NOKIA TECHNOLOGIES OY; NOKIA SOLUTIONS AND NETWORKS BV; ALCATEL LUCENT SAS
To: PROVENANCE ASSET GROUP LLC
Reel/Frame 043877/0001 →
SECURITY INTEREST Recorded Sep 13, 2017
From: PROVENANCE ASSET GROUP HOLDINGS, LLC; PROVENANCE ASSET GROUP, LLC
To: CORTLAND CAPITAL MARKET SERVICES, LLC
Reel/Frame 043967/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2014
From: CREDIT SUISSE AG
To: ALCATEL-LUCENT USA INC.
Reel/Frame 033949/0016 →
MERGER Recorded May 15, 2013
From: LUCENT TECHNOLOGIES INC.
To: ALCATEL-LUCENT USA INC.
Reel/Frame 030417/0472 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2013
From: GUO, KATHERINE H.; MUKHERJEE, SARIT; PAUL, SANJOY; RANGARAJAN, SAMPATH
To: LUCENT TECHNOLOGIES INC.
Reel/Frame 030389/0431 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2013
From: ALCATEL-LUCENT USA INC.
To: ALCATEL LUCENT
Reel/Frame 030381/0084 →
SECURITY INTEREST Recorded Mar 7, 2013
From: ALCATEL-LUCENT USA INC.
To: CREDIT SUISSE AG
Reel/Frame 030510/0627 →