WO1998014882A1 - Synchronization of interactions between objects distributed over a network in the presence of latency - Google Patents

Synchronization of interactions between objects distributed over a network in the presence of latency Download PDF

Info

Publication number
WO1998014882A1
WO1998014882A1 PCT/US1997/017660 US9717660W WO9814882A1 WO 1998014882 A1 WO1998014882 A1 WO 1998014882A1 US 9717660 W US9717660 W US 9717660W WO 9814882 A1 WO9814882 A1 WO 9814882A1
Authority
WO
WIPO (PCT)
Prior art keywords
objects
timeline
time
player
computer
Prior art date
Application number
PCT/US1997/017660
Other languages
French (fr)
Inventor
William D. Harvey
H. Scott Roy
Original Assignee
Sandcastle, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sandcastle, Inc. filed Critical Sandcastle, Inc.
Priority to AU46615/97A priority Critical patent/AU4661597A/en
Publication of WO1998014882A1 publication Critical patent/WO1998014882A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Definitions

  • the present invention pertains to the field of computer networking. More particularly, the present invention relates to synchronizing interactions between objects distributed over a network in the presence of network latency. BACKGROUND OF THE INVENTION
  • Another game which is sensitive to event ordering is a "shootout," or a contest of who is the quickest to draw and fire a weapon.
  • Internet delays create difficulty in determining the correct order of events, such as a player finishing a task, because those events occur on different computers.
  • This problem is most serious when the time differences between events are close to the network latency in magnitude. For example, if one player beats another by one-half of a second in a race, and the network latency between the two players is a full second, then in a naive implementation, the players may see different outcomes, and each may think he won the race .
  • a technique is needed for determining an order for events occurring in a network environment subject to substantial and unpredictable delays and for showing those events occurring in the same order on all machines.
  • a technique is needed for determining an order for events occurring in a multi- player game environment on the Internet .
  • a method is provided of representing an interaction between a number of objects.
  • the method is implemented in a system which maintains the objects and which further maintains a timeline for each object.
  • Each timeline represents states of the corresponding object during a time interval.
  • the progress of one of the objects along its timeline is altered, such that the objects which are to interact simultaneously arrive at the points in time on their respective timelines corresponding to the interaction.
  • Figure 1 illustrates a number of computer systems connected over the Internet .
  • Figure 2 illustrates a computer system in which the presented invention can be implemented.
  • Figure 3 illustrates a display showing a number of objects .
  • Figure 4 is a representation of two timelines corresponding to two objects.
  • Figure 5 is snapshot showing a moment in time on one player's computer at which two objects are represented at different points on their timelines.
  • Figure 6 is snapshot showing a moment in time on one player' s computer with respect to several different objects maintained by that computer.
  • Figure 7 illustrates a display corresponding to a computer-implemented pong game.
  • Figure 8 is a representation of a timeline of a ball in a pong game.
  • Figure 9 is a representation of the ball in a pong game being displaced along its timeline.
  • Figure 10A illustrates the display screens associated with two players of a pong game running over the Internet at the same moment in time.
  • Figures 10B and IOC are snapshots showing the same moment in time on each of the displays shown in Figure 10A.
  • Figure 10D illustrates the display screens associated with two players of a pong game running over the Internet at the same moment in time.
  • Figures 10E and 10F are snapshots showing the same moment in time on each of the displays shown in Figure 10D.
  • Figure 10G illustrates the display screens associated with two players of a pong game running over the Internet at the same moment in time.
  • Figures 10H and 101 are snapshots showing the same moment in time on each of the displays shown in Figure 10G.
  • Figures 11A and 11B are representations of altering the progression of an object along its timeline.
  • Figures 12 is a flow diagram illustrating a routine for synchronizing two objects according to one embodiment .
  • Figure 13 is a representation of a timeline of a ball in a computer-implemented football game running on the Internet .
  • Figure 14 is a representation of the ball in a football game being displaced along its timeline.
  • Figures 15 is a flow diagram illustrating a routine for synchronizing two objects according to an alternative embodiment.
  • Figure 16 is a representation of timelines associated with two game characters in a computer- implemented racing game.
  • Figure 17A is a representation of the timelines of Figure 16 as perceived by a first player of the racing game in the absence of the present invention.
  • Figure 17B is a representation of timelines of Figure 16 as perceived by a second player of the racing game in the absence of the present invention.
  • Figure 18A is a representation of the timelines of Figure 16 as perceived by a first player of the racing game using the present invention.
  • Figure 18B is a representation of timelines of Figure 16 as perceived by a second player of the racing game using the present invention.
  • Figures 19 is a flow diagram illustrating a routine for determining the order of two events occurring in a network-implemented computer game.
  • Figures 20 is a flow diagram illustrating a routine for determining the order of two events occurring in a network-implemented racing game.
  • Figure 21A illustrates a computer-implemented racing game.
  • Figure 21B illustrates the computer-implemented racing game of Figure 21A, as perceived by two players, in the absence of event synchronization.
  • Figure 21C illustrates the computer- implemented racing game of Figure 21A, as perceived by two players, with event synchronization.
  • a method is described of representing interactions between objects distributed over a network in the presence of network latency.
  • numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be evident, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate description of the present invention.
  • To implement a computer game over a network that has significant communications latency, such as the Internet it is necessary to synchronize interactions between objects that are controlled from different computers, so that the interactions look correct to all players. It is further necessary to determine the correct order of events that occur on different computers, such that the same order is determined for those events by each computer on the network. As will be described below, the present invention includes techniques for achieving these results.
  • FIG. 1 a network configuration 1 is illustrated in which the present invention can be implemented.
  • a number of computer systems 2A, 2B, and 2C are in communication with each other over the Internet 3.
  • Each of the computers 2A, 2B, and 2C is used by a different person (player) in playing a multi-player computer game over the Internet 3.
  • Figure 2 illustrates one possible architecture for any of the computer systems 2A, 2B, and 2C. Note that the architecture of Figure 2 is provided only for purposes of illustration- -a computer system used in conjunction with the present invention is not limited to any particular architecture.
  • the computer system 2 of Figure 2 includes a central processing unit (CPU) 10, random access memory (RAM) 11, a mass storage device 12, a modem 13, a visual display device 14, a game controller 15, and read-only memory (ROM) 16.
  • Mass storage device 12 includes an optical, magnetic, or other similar storage medium suitable for use with a personal computer system.
  • the game controller 15 may include a joystick, a mouse, a trackball, a keyboard, a special-purpose game controller designed for use with certain games, or any combination of these devices.
  • the present invention is carried out in each computer system participating in the game in response to its CPU 10 executing sequences of instructions contained in memory, such as RAM 11. That is, execution of the sequences of instructions contained in memory causes the CPU 10 to synchronize interactions between objects, as will be described below.
  • the instructions may be loaded into memory from a persistent store, such as mass storage device 12, and/or from one or more of the other computer systems (collectively referred to as a "host computer system") over the Internet 3.
  • a host computer system may transmit a sequence of instructions to the participating computer system in response to a message transmitted to the host computer system over a network by the participating computer system.
  • the computer system 2 stores the instructions in memory.
  • the computer system 2 may store the instructions for later execution or execute the instructions as they arrive over the network connection.
  • the host computer system may be one of the computer systems participating in the game .
  • the downloaded instructions may be directly supported by the CPU 10. Consequently, execution of the instructions may be performed directly by the CPU 10. In other cases, the instructions may not be directly executable by the CPU 10. Under these circumstances, the instructions may be executed by causing the CPU 10 to execute an interpreter that interprets the instructions, or by causing the CPU 10 to execute instructions which convert the received instructions to instructions which can be directly executed by the CPU 10.
  • hardwired circuitry may be used in place of, or in combination with, software instructions to implement the present invention.
  • the present invention is not limited to any specific combination of hardware circuitry and software, nor to any particular source for the instructions executed by a computer system.
  • each computer system participating in the game includes software for generating the multi-player computer game (the "game software"), including software embodying the present invention.
  • the game software may be stored in mass storage device 12, RAM 11, ROM 16, or any combination of these devices.
  • the game software may be distributed between two or more of the participating computer systems 2.
  • each object in the game has one or more "timelines.”
  • a timeline is a function that gives the state of an object at different points in time throughout a given time interval.
  • the "state” can include information about an object's position, size, color, or orientation as displayed on the display device 14, or any other characteristic of the object, regardless of whether or not that characteristic can be perceived by a person.
  • a timeline may be thought of as a history of an object with respect to all of the information included in the object's state.
  • each computer system participating in the game maintains a timeline for each object that is capable of interacting with another object. For each such object, each computer system may actually maintain more than one timeline, where each timeline represents a different characteristic.
  • each computer maintains only one timeline for each object, and that the object's timeline includes all of the information about that object.
  • a computer system maintains information on the present state of all objects that are controlled from that (local) computer system.
  • the computer system does not have knowledge of the present state of objects controlled from other (remote) computer systems. Rather, information on the present state of objects that are controlled from remote computer systems only becomes available after some delay. Nonetheless, each computer system can represent an object at any point on the object's timeline that corresponds to a point in time in the past, present, or future.
  • the local computer When displaying an object at a point on its timeline for which complete information is not available, the local computer will determine the most likely state of the object. In a technique known as "dead-reckoning, "the most likely state of an object at a given point in time is estimated based on a known state of the object at an earlier point in time. For example, the object's current position might be estimated based on a known position, speed, and/or direction of the object at an earlier time. In any event, it is imperative that when two objects interact, they are both shown simultaneously arriving at the points on their respective timelines at which the interaction occurs .
  • Figure 3 illustrates a computer display 25 on which a number of different objects 31-37 are rendered during execution of a computer game.
  • two or more of the objects 31-37 may interact in various different ways.
  • Figure 4 illustrates two timelines 41 and 42 associated with two objects.
  • the timelines 41 and 42 describe the position of each respective object with respect to time.
  • the state of the object is defined by a point on its timeline, as represented by points 43 and 44 in Figure 4.
  • the timelines 41 and 42 intersect, as represented by point 45 in Figure 4.
  • each object has a point on its timeline that corresponds to the time of interaction, namely point 45 in the example of Figure 4.
  • FIG 5 shows a "snapshot" showing a moment in time on one player's (local) computer at which two objects are represented at different points on their timelines.
  • two timelines 47 and 48 correspond to two different objects. Each of the two objects is displayed on at least two computers, a local computer and one or more remote computers.
  • Timeline 48 corresponds to an object that is controlled by one player from the local computer.
  • Timeline 47 corresponds to an object controlled by another player from a remote computer.
  • Point 50 corresponds to the present time t A .
  • the object controlled from the remote computer is displayed at point 49, corresponding to an earlier point in time t B .
  • the difference t A - t B between the present time t A and time t B is equal to the delay in communications between the local computer and the remote computer.
  • Figure 6 shows a snapshot of objects 31-37 (in Figure 3) at a moment in time on a local computer. That is, Figure 6 represents the states of objects 31-37 as they are displayed by the local computer at the moment of the snapshot.
  • Timelines 31A-37A correspond to objects 31-37, respectively. To simplify explanation, the position coordinate for timelines 31A-37A are not shown- -only the time coordinate is shown.
  • objects 31-33 and object 37 are controlled by a first player from the local computer; objects 34 and 35 are controlled by a second player from a first remote computer; and, object 36 is controlled by a third player from a second remote computer.
  • An "X" denotes the point at which computer system 2A is displaying each object on its timeline at the moment of the snapshot .
  • Objects 31-33 and 37 are represented at the present point in time t A on their respective timelines, because these objects are all controlled from the local computer system 2A.
  • objects 34-36 are all controlled from a remote computer and are therefore represented at earlier points t E on their respective timelines compared to objects 31-33 and 37.
  • This time lag is necessitated by network latency, because there is a delay in the local computer's receiving state information for objects 34-36 .
  • object 36 is controlled from a different computer than objects 34 and 35 and is subject to a greater network delay than those objects.
  • a computer system determines the point on an object's timeline at which to display the object, based on the network latency and interactions that object has with other objects. That is, based on this information, the computer system will select which state of the object to presently display from any of the states the object will actually have or that the computer predicts the object might have during a particular time interval. The selected state will not necessarily correspond to either the present time or to the most recent time for which state information about an object has been received. This technique will be described below in detail .
  • Player A' s paddle 62 is capable of movement only along line 65, while player B's paddle
  • 63 is capable of movement only along line 66.
  • the ball travels at a constant speed, which will be referred to as its "normal" speed.
  • a player scores a point when his opponent misses the ball 64.
  • Figure 8 shows a representation of a timeline 69 of the ball 64.
  • the timeline 69 represents the position of the ball 64 at each point in time from time 0 to time 600. (Note that the units of time are unimportant and that the time values mentioned herein are only given for purposes of explanation.)
  • Line 65A in Figure 8 corresponds to line 65 in Figure 7, while line 66A in Figure 8 corresponds to line 66 in Figure 7.
  • Player A hits the ball 64 with his paddle 62 at time 100, sending the ball 64 across the display 61 toward the paddle 63 of Player B.
  • the point of impact (interaction) between Player A' s paddle 62 and the ball 64 is represented in Figure 8 by point 70.
  • Player B strikes the ball 64 with his paddle 63, sending it back across the display 61 towards Player A.
  • the point of interaction between Player B's paddle 63 and the ball 64 is represented by point 71 in Figure 8.
  • Player A' s computer always has current knowledge of the position of Player A' s paddle 62
  • Player A' s computer never has current knowledge of Player B's paddle 63, as a result of network latency.
  • the problem therefore, is how to represent a contact between the ball 64 and Player B's paddle 63 on Player A' s computer, given that the position of Player B's paddle 63 is not known until after the interaction has occurred.
  • Player A' s computer could only guess at the position of Player B's paddle at the time of interaction.
  • Player A' s computer does not dead-reckon the position of Player B's paddle, but instead shows it at a time delay.
  • the progression of the ball 64 along its timeline is altered at various points in time, based on the measured network latency, in order to synchronize the ball's interactions with both players' paddles when it hits the paddles.
  • the rate at which the ball 64 progresses along its timeline on Player A's computer is altered immediately after Player A hits the ball to a speed slower than the normal speed.
  • the ball 64 appears to slow down as it travels across the display of Player A's computer. The change in speed can be made gradually to make it less apparent to the user.
  • the ball 64 when the ball 64 appears to reach Player B's paddle 63 on Player A's computer, it will be running at the same time delay as Player B's paddle, so that the interaction between the ball 64 and Player B's paddle 63 will look correct, and so that the new trajectory of the ball 64 can be determined.
  • the extent to which the speed of the ball is decreased will depend upon the measured communications delay between Player A' s computer and Player B's computer.
  • the speed of the ball 64 can be decreased slightly more than is necessary to allow Player A's computer to receive the interaction-time position of Player B's paddle 63 before the ball 64 is shown reaching Player B's paddle 63 on Player A's display 61.
  • the latency is measured periodically during the game .
  • the above technique is also independently used by Player B's computer system. That is, (in the above embodiment) the rate at which the ball 64 progresses along its timeline on Player B's computer is altered immediately after Player B hits the ball to a speed slower than the normal speed. As a result, when the ball 64 appears to reach Player A's paddle 62 on Player B's computer, it will be running at the same time delay as Player A's paddle 62, so that the interaction between the ball 64 and Player A's paddle 62 will look correct on Player B's computer.
  • the rate of progress of the ball 64 along its timeline is increased to slightly faster than the normal rate of speed until the ball 64 contacts Player B's paddle 62, so that the ball 64 is back in the present time when it reaches Player B's paddle 63 on Player B's computer.
  • a player sees the ball move away from him slower than normal and toward him faster than normal.
  • the enjoyment of the game is not diminished for either player, because each player must react to the ball with at least the same degree of skill and quickness as if both player's were using the same computer (i.e., as if there were no delay) .
  • Figure 9 illustrates the position of the pong ball 64 over time, as displayed on Player A's display 61, according to one embodiment.
  • the ball 64 is traveling toward Player A's paddle 62, as represented by line 69A in Figure 9.
  • Player A's paddle 62 strikes the ball 64, sending the ball 64 back toward Player B's paddle 63.
  • the speed of the ball along its timeline is decreased based on the measured one-way latency ⁇ t between Player A's computer and Player B's computer, as shown by line 72.
  • the speed of the ball 64 is consequently reduced when traveling away from Player A' s paddle 62 so that the ball 64 reaches line 66 on the display 61 at a time no sooner than the time at which Player A's computer receives the position of Player B's paddle 63 at the time of interaction.
  • the ball 64 is shown as reaching line 66 (see Figure 7) at a time 200 + ⁇ t on Player A's display 61.
  • the speed of the ball 64 is increased, as displayed on Player A's display 61, so that the ball 64 is displayed at the present point on its timeline when it reaches Player A's paddle 62. This process is then repeated as long as Player A and Player B continue to strike the ball 64 with their paddles.
  • Figures 10A through 101 further illustrate the technique of altering the progression of the ball 64 along its timeline to compensate for network latency.
  • Figure 10A illustrates computer displays 61A and 61B of Players A and B, respectively, at a time t- L .
  • Figure 10B shows the position on Player A's display 61A of the ball 64, Player A's paddle 62, and Player B's paddle 63 at time t .
  • Figure 10C shows the position on Player B's display 61B of the ball 64, Player A's paddle 62, and Player B's paddle 63 at time t 1 .
  • the ball is traveling toward Player B's paddle 63.
  • Player A's paddle 62 is displayed at the present time t on its timeline.
  • Player B's paddle 63 is shown at a different time, t - ⁇ t , on its timeline, where ⁇ t is the one-way network latency.
  • Player A's computer is shifting the ball 64 back in time along its timeline . Therefore, at time t x the ball 64 is displayed on Player A's display 61A at a point on its timeline that is earlier than the present time t .
  • the ball 64 is displayed at a point on its timeline that is slightly later than t x - ⁇ t , because the ball 64 has almost reached Player B's paddle 63.
  • the ball 64 appears to reach Player B's paddle 63 on Player A's display (at some time later than t ⁇ ) , it will have been shifted along its timeline back to the same point in time at which Player B's paddle 63 is displayed.
  • Player B's computer always has current information regarding the location of Player B's paddle 63, but not regarding the location of Player A's paddle 62.
  • Player B's paddle 63 is displayed at the present time t 1 on its timeline
  • Player A' s paddle 62 is displayed at time t 1 - ⁇ t on its timeline.
  • Player B's computer is shifting the ball 64 forward on its timeline, so that it will be displayed on Player B's display 61B at the (then) present time when it reaches Player B's paddle.
  • FIG. 10D illustrates displays 61A and 61B at time t 2 .
  • the ball 64 has already struck Player B's paddle 63 and is traveling back toward Player A's paddle 62.
  • Player A's paddle 62 is displayed on his display 61A at the present time t 2 on its timeline, while Player B's paddle 63 is displayed at time t 2 - ⁇ t on its timeline.
  • Player A's paddle 62 is displayed at time t 2 - ⁇ t on its timeline
  • Player B's paddle 63 is displayed at the current time t 2 on its timeline.
  • the ball 64 is being shifted forward along its timeline on Player A's computer and backward along its timeline on Player B's computer.
  • the ball 64 is approximately half-way between Player A's paddle 62 and Player B's paddle 63. Consequently, the ball 64 is displayed on Player A's display 61A approximately halfway between the present time t 2 and time t 2 - ⁇ t on its timeline, as illustrated in Figure 10E.
  • the ball 64 is also displayed on Player B's display 61B approximately half-way between the present time t 2 and time t 2 - ⁇ t on its timeline, as illustrated in Figure 10F.
  • Figures 10G through 101 correspond to a third point in time t 3 that is later than time t 2 .
  • the ball has just struck Player A's paddle 62, as shown in Figure 10G.
  • Player B's computer has not yet received an indication from Player A' s computer that the contact has occurred. Therefore, at time t3 the ball 64 is being shifted backward along its timeline on Player A's computer; however, it is also still being shifted backward along its timeline on Player B's computer, since the contact with Player B's paddle 63 has not yet been displayed on Player B's display 61B.
  • Player B's computer will begin to shift the ball 64 backward along its timeline.
  • Player A's display 61A shows the ball 64 at a point on its timeline slightly earlier than the present time t 3 , since the ball has just left Player A' s paddle 62 and is now moving backward along its timeline.
  • Player B's display 61B shows the ball essentially at point t 3 - ⁇ t on its timeline, because the interaction is just about to occur on Player B's display 61B.
  • the ball is paused on the display 61 at a convenient point, such as at the point at which the ball 64 reaches line 66 ( Figure 7) .
  • the pause is long enough to allow Player A' s computer to receive the position of Player B's paddle 63 at the time the ball reached line 66.
  • the displayed speed of the ball may be varied as it travels from one end of the display to the other.
  • Figure 12 illustrates a routine performed by a local computer for synchronizing two interacting objects. Either or both of these objects may be running on a remote computer.
  • the local computer measures the one-way communications delay ⁇ t between itself and the remote computers on which the objects are running (step 1201) .
  • the local computer uses this latency to set the time delay according to which certain objects will be displayed (such as the remote player's paddle in the pong game) (step 2102) . Latency measurements may be made on a periodic basis.
  • the local computer computes the time and location of the next interaction (step 1204) .
  • An example of a trigger event is the striking of the pong ball by a player's paddle.
  • the local computer shifts one of the objects along its timeline to bring the two interacting objects into synchronization (step 1205) .
  • the amount by which the object is shifted is dependent upon the difference in time delay between the two objects and the time at which the interaction will occur. Note that this shifting can be gradual or instantaneous. A gradual shifting will occur if the progress of an object along its timeline slows down or speeds up. The user might perceive this as a change in the speed of movement of the object. Conversely, an instantaneous shifting of the object along its timeline might appear as the object's jumping ( " teleporting" ) from one point to another on the display.
  • Teleporting results from the transferring of the object directly from a first point in time on its timeline to a second point in time on its timeline, such that the object does not pass through the points in time that are between the first and second points in time, as it advances along its timeline.
  • the particular method chosen (gradual or instantaneous) for shifting an object along its timeline is at the discretion of the game designer.
  • Figure 11A illustrates the relationship between real time on a local computer and the displayed point in time of the ball 64 on the local computer, according to one embodiment of the pong game. If the ball 64 were always displayed with no time delay, as if both players were using the same computer, then the relationship could be represented by line 74. However, the relationship in this embodiment of the present invention is instead given by line 75.
  • times 200 and 400 are the times on the local computer at which the ball 64 strikes the remote player's paddle 62.
  • Time 300 represents the time at which the ball 64 strikes the local player's paddle 62.
  • the speed of the ball along its timeline is varied according to the direction in which it is traveling in order to compensate for network latency.
  • Figure 11B relates to a different embodiment of the pong game, in which the ball is "jumped" to a different point in time on its timeline, rather than altering the rate at which the ball progresses along its timeline.
  • the ball 64 is shown on the local computer's display moving at a speed slower than normal when traveling away from the local player's paddle 62 and at the normal speed when traveling toward the local player's paddle 62.
  • the ball 64 is immediately moved forward on its timeline to the local computer's time frame as soon as the local computer receives confirmation that the ball hit the remote player's paddle, as indicated by the discontinuities in line 76 at times 200 + ⁇ t and 400 + ⁇ t .
  • the local player will see the ball instantly teleport from one point on the display to another in this embodiment.
  • the present invention can be implemented in various other types of network-implemented computer games to accurately represent interactions between objects. For example, in game involving hand-to-hand combat between two characters, a contact between one character's fist and part of the other character's body is a common interaction. The fist of the character throwing the punch (the local character) can be shifted back along its timeline by showing a slow, dramatic back swing while the event message indicating the punch is sent to the remote computer system. The (local) player initiating the punch will see the contact made after it has occurred on his opponent's computer and after a message confirming the contact has been received by his local computer.
  • the present invention can be applied to many "throw-and-catch" computer games (e.g., football, baseball, etc.) to represent an interaction between a thrown ball and a receiving character.
  • "throw-and-catch type of game is now discussed with respect to Figures 13-15.
  • the game comprises two game characters moving about the screen, throwing a ball back and forth. Each time the ball is thrown, the receiving player must maneuver his character to intercept the ball.
  • the precise trajectory of the ball is not known (unlike the pong game) , because the ball can be intercepted by the receiving character at any point along its flight path. That is, the ball is essentially a missile. Therefore, in this embodiment the ball must be synchronized with the receiving player's character immediately upon being released by the throwing player.
  • each player controls a character on his local computer in a throw-and-catch game like the one just described.
  • ⁇ t time delay
  • Figure 13 illustrates the actual position (as opposed to the displayed position) of the ball, as maintained on both computers.
  • the position of the ball with respect to time is given by lines 70.
  • the ball reaches line 71 corresponding to
  • Figure 14 illustrates the displayed (not actual) position of the ball with respect to time on Player A's computer.
  • the path of the ball, as displayed on Player A's computer, is denoted by line 70A.
  • Player A receives the ball and immediately enters a "throw” input, causing the "throw” event message to be immediately sent to Player B's computer.
  • Player A' s computer also pauses the ball on its timeline for a time ⁇ t to synchronize the ball with Player B's character.
  • both the ball and Player B's character are running at the same time delay, so that when Player B's character catches the ball, it will look correct on Player A's computer.
  • Player A by an appropriate visual effect .
  • An example of a masking visual effect is to show a very long "wind-up" (e.g., pre-throw arm movement) by Player A's character before the character is shown releasing the ball at time 100 + 2 ⁇ t.
  • a very long "wind-up" e.g., pre-throw arm movement
  • Figure 15 illustrates a routine performed by a local computer system to represent an interaction between two game objects, according to the embodiment described in Figures 13 and 14.
  • the latency between participating computer systems is periodically measured until a trigger event is detected (step 1501) .
  • a trigger event is detected (step 1502)
  • an event message is transmitted by the local computer system to the remote computer system (step 1503) .
  • the object is then paused on its timeline for a time equal to ⁇ t while an appropriate visual effect is executed to mask this pause (step 1504) .
  • progression of the object along its timeline is initiated while continuing the masking visual effect (step 1505) .
  • the local computer system begins displaying progress of the object along its timeline at its normal rate. Note that at this time, the displayed state (i.e., position) of the object lags behind its actual state by a time of ⁇ t . While displaying the progress of the object, the local computer system also waits for a response to the event message
  • the local computer receives the response (step 1507) .
  • the local computer system then processes the response while displaying an appropriate visual effect (step 1508) .
  • Another problem associated with implementing a multi-player game over the Internet is determining the order of events that occur on different computers and ensuring that each computer represents those events occurring in the same order and with the same outcome .
  • This problem may arise in any game in which two or more players using different computers each try to accomplish some task before the other.
  • One example of a game which is sensitive to event ordering is a "shootout", i.e., a contest of who is the quickest to draw and fire a weapon.
  • a racing game in which each player controls a game character' s progress through a race course to a finish line. The speed of each player's character might be based on the rapidity with which the player presses keys on a keyboard or a game controller.
  • Figure 21A shows the display for the game in which one player controls character 91 while another player controls character 92, and each player attempts to be the first to move his character to the finish line 93.
  • Figures 21A through 21C are discussed further below.
  • communications delays of the Internet make it difficult to determine the correct order of events, such as a character finishing a race, because those events occur on different computers.
  • the present invention therefore provides a technique for determining a correct order of events in a game implemented over the Internet, and for showing these events occurring in the same (correct) order and with the same outcome on each computer participating in the game. This technique shall be referred to herein as "event synchronization" .
  • Figure 16 represents timelines 81 and 82 of two players involved in a computer-implemented racing game.
  • Timelines 81 and 82 represent positions of the players A and B, respectively, with respect to time.
  • the race begins at a starting line represented by line 83 and ends at a finish line represented by line 84. It can be seen from Figure 16 that Player B wins the race (he reaches the finish line 84 at an earlier time than Player A) .
  • the difference between the finishing times of Players A and B is the margin of victory MV. Without the event synchronization of the present invention, if this game were played over the Internet by Players A and B using different computers, each player would see a different result.
  • Figure 17A represents the race as it is displayed on Player A's computer.
  • Figures 18A and 18B illustrate a solution to the above problem according to a simple embodiment of the present invention.
  • the remote player's game character is shown on the local computer moving at a constant speed until a time T after the start of the race. It may be preferable to make the time T somewhat greater than the one-way latency ⁇ t, to account for variations in latency during the game. For purposes of this description, therefore, it is assumed that T is greater than the one-way latency ⁇ t .
  • the constant speed at which the remote player's game character is shown may be based upon an average player's performance, either from empirical data or a guess, or it may be based on any other reasonable criterion.
  • the remote player's game character is shown directly according to the inputs received from the remote computer.
  • a buffer zone is added to the end of the race course. More specifically, the race course is modified so that the buffer zone begins where the race formally ended, and the finish line is moved to the end of the buffer zone. While the local player's character passes through the buffer zone at the end of the race, his character no longer responds to inputs from the local player. Instead, the local player's character is moved through the buffer zone automatically, according to the same assumption applied to the remote player's character at the start of the race.
  • the length of the buffer zone is computed so that it takes the local player's character a time T to pass through the buffer zone (i.e., the same amount of time that the remote player's character was moved automatically at the start of the race) . As the local player's character passes through the buffer zone, the remote player' s input is allowed to catch up to that of the local player.
  • the addition of the buffer zone can be masked from the user so that it appears to be a part of the race course. Furthermore, the fact that the local player's character is not responding to input while moving through this buffer zone can also be hidden from the local player by generating an appropriate masking visual and/or audio effect. For example, in the racing game the local player's character is shown moving forward, even though it is not doing so in response to the local player's inputs .
  • Figures 18A and 18B represent the racing game as it is displayed on Player A's computer and Player B's computer, respectively, using the present invention.
  • timelines 81A and 82A represent the position over time of Players A and B, respectively.
  • line 84A On Player A's computer, the previous end of the race course is denoted by line 84A.
  • a buffer zone 87A has been added to the end of the race course, so that the finish line now appears to Player A at a location indicated by line 85A.
  • the buffer zone 87A is computed before the start of the race, so that it will take Player A's character exactly T to pass through it at the predetermined speed, S.
  • Player B's character is moved automatically for a time T from the start of the race at a predetermined speed, S.
  • Player A's character responds to Player A's inputs immediately.
  • Player B's character only begins moving according to actual input from the remote computer at a time T after the start of the race.
  • line 84A the former finish line
  • the buffer zone 87B is computed before the start of the race, so that it will take Player B's character exactly T to pass through it at the predetermined speed, S.
  • Player B's character immediately responds to input while Player A's character is moved automatically at speed S for a time T.
  • Player B's character reaches the beginning of the buffer zone at line 84B, then his character is moved automatically until the end of the race.
  • Player B perceives that he wins the race by MV.
  • the above-described event synchronization technique can be summarized as follows.
  • the players control various objects in an effort to achieve a goal first (e.g., to complete a race first) .
  • the objects progress through a sequence of events (e.g., the race) .
  • each object advances through a total of N + M states in response to an input sequence from one of the players (where N and M are integers) .
  • a local computer generates, for each object, N states for that object in response to the object's input sequence.
  • the local computer generates M states for the object independent of the object's input sequence (e.g., the automatic movement of a character) .
  • a local computer can select and alter the distribution of the N input - based states and the M input-independent states within the sequence of events for a given object, based on the latency.
  • some of the automatic movement (i.e., a subset of the M states) for a given character can be performed at the beginning of the race, while the rest of the automatic movement (a different subset of the M states) for that character is performed in the middle or at the end of the race.
  • the N + M states for each object in the sequence of events may not be the same for each object.
  • the game may require the local player to complete one task before the remote player completes a completely different task.
  • Figure 19 is a flow diagram illustrating an overall routine performed by a local computer for determining an order of events (event synchronization) occurring over a network and for displaying the result consistently on all participating computers.
  • the one-way latency ⁇ t over the network is measured (step 1901) .
  • an appropriate masking visual effect is determined based upon this latency (step 1902) .
  • the masking visual effect is to automatically move the remote player's character.
  • one possible masking visual effect is to show the remote player's character drawing his weapon. This action would be shown at a speed chosen to allow time for a message to be received from the remote computer.
  • the game sequence is initiated on the local computer (step 1903) .
  • the local player's game character L is then shown progressing according to input
  • the remote player' s game character R is shown progressing independent of any input and according to a masking visual effect (step 1904) .
  • This routine continues until input is received for the remote computer (step 1905) .
  • both L and R are advanced through the game sequence according to their respective inputs. Note, however, that R is displayed according to inputs that are older than L's inputs by a time equal to ⁇ t (step 1906) .
  • L finishes the game sequence (step 1907)
  • L is advanced through the sequence independent of the local player's inputs and according to an appropriate masking visual effect, while R continues to be shown progressing according to input (step 1908) .
  • an end-of-event signal is received from the remote player (step 1909)
  • both L and R are shown ending the game sequence with the correct outcome and time differential (step 1910) .
  • the local computer determines that R wins the race; otherwise, the local computer determines that L wins the race .
  • Figure 20 is a flow diagram illustrating an event synchronization routine performed by a local computer for the racing game example described above.
  • the latency ⁇ t is measured just before the start of the race (step 2001) .
  • a race course is generated by the game software, including a start buffer zone and finish buffer zone, each of which is computed based on the measured latency (step 2002) .
  • the start buffer zone is included as a part of the normal race course, whereas the finish buffer zone is added to the end of the normal race course to create a new finish line.
  • step 2003 When a start signal is received (step 2003,) the local player's character L is displayed according to input, which is queued, while the remote player's character R is displayed moving at a constant predetermined speed, S (step 2004) .
  • R reaches the end of the start buffer zone (step 2005)
  • the local computer determines whether any input has been received from the remote computer (step 2006) . If not, R is paused in place until such input is received (step 2007) . If input has been received from the remote player, however, then each player's character is then displayed based upon queued input (step 2008) . Note again that R will be displayed according to input that is older than that of L.
  • L When L reaches the beginning of the finish buffer zone (step 2009), then L is displayed at the constant predetermined speed, S, while R is displayed according to queued input (step 2010) .
  • the remote player's input is allowed to catch up to that of the local player.
  • L or R reaches the end of the finish buffer zone (step 2011) , whether in response to actual input (R) or to automatic movement (L) , then the player whose character reached the end of the finished buffer zone first is determined to be the winner of the race (step 2012) .
  • the margin of victory (MV) is computed to be the difference in finish times between the two game characters .
  • Figures 21A through 21C illustrate the above- described racing game, as it would appear to the players, with the use of event synchronization and without the use of event synchronization.
  • Player A controls game character 91 while Player B controls game character 92, each in an effort to reach the finish line 93 first.
  • Figure 21A shows the true outcome of the game (i.e., the outcome if no network latency were present) . The true outcome is that the race ends in a tie. Without the present invention, each player would see a different outcome of the race due to network latency, as shown in Figure 21B.
  • Player A would see outcome 94A, in which his character 91 appears to win the race; however, Player B would see outcome 94B, in which his character 92 appears to win the race.
  • Figure 21C shows what each player would see when event synchronization is applied.
  • a buffer zone is added to the end of the race course, as represented by the area between line 93 and line 95.
  • the finish line is moved to the end of the buffer zone (i.e., line 95) .

Abstract

A method of visually representing interaction between objects in computer game is implemented in any computers (61A, 61B) communicating over a network (3). The method compensates for delays experienced in network communications when one object (62) is controlled from one computer (61A) and another object is controlled from second computer (61B). Each computer system (61A, 61B) maintains the objects and a timeline for each object. A timeline represents state of the object thoughout time interval. The progression of one object (64) along its timeline is altered, based on detected network latency, such that the objects which are to interact simultaneously arrive at the interaction point on their respective timelines. Altering may include altering the rate at which the object progresses, pausing the object, or jumping the object from one point in time to another on its timeline. Such altering may be visible to the user, or it may be masked from the user using appropriate disguising visual effects.

Description

SYNCHRONIZATION OF INTERACTIONS BETWEEN OBJECTS DISTRIBUTED OVER A NETWORK IN THE PRESENCE OF LATENCY
FIELD OF THE INVENTION The present invention pertains to the field of computer networking. More particularly, the present invention relates to synchronizing interactions between objects distributed over a network in the presence of network latency. BACKGROUND OF THE INVENTION
Use of the Internet has increased rapidly in recent years. Of the many possible uses of the Internet, one which has generated particular interest for many users is the use of the Internet to play computer games. Current technology allows two players at different geographic locations to play a game together using a direct telephone or ISDN connection, and it also allows more than two players to play a game over local area networks (LANs) in which each player uses a different computer. There are unique problems, however, associated with implementing a multi-player computer game across a wide area network (WAN) , particularly one as expansive as the Internet .
One such problem results from the communications delays of the Internet, which can be substantial and unpredictable. In computer games, players enter inputs to control various objects represented on a display device. In a network-implemented game, different objects may run on different machines. Because inputs from a human being tend to be unpredictable in a game situation, objects running on a remote computer must be represented on a local computer at a time delay. The problem is that it is common in computer games for two or more objects to interact (i.e., to appear to come into contact) . For example, two game characters might contact each other, or a game character might strike a ball. If an interaction occurs between two objects, the interaction should be accurately depicted on the display device of each participating computer. However, if a computer game is played over the Internet, the inherent delays of the Internet can make it difficult to achieve this result. In particular, if two objects are shown with different amounts of time delay, then their interactions will not appear to be correct.
Consider the well-known pong game, in which two players, Player A and Player B, manipulate their respective game controllers to hit a ball back and forth across a screen using paddles. If the game is played over the Internet, then Player A' s paddle will be shown on Player B's computer at a time delay, while Player B's paddle will not be shown at a time delay. Similarly, on Player A' s computer, Player B's paddle will be shown at a time delay, while Player A' s paddle will not be shown at a time delay. If Player A hits the ball, then his paddle must be shown on Player B's computer as actually hitting the ball. However, because of the time delay, Player B's computer will not have the position of Player A' s paddle at the time of contact until some time after the contact has occurred. Hence, there is a problem of synchronizing interactions between objects that are distributed across a network.
Therefore, what is needed is a technique for synchronizing computer- implemented objects that must interact in a network environment subject to substantial and unpredictable delays. What is further needed is a technique for synchronizing computer-implemented objects that interact in a multi-player game environment implemented on the Internet . Another problem associated with implementing a multi -player game over the Internet is determining the order of events that occur on different computers and ensuring that each player sees these events occur in the same order. This problem may arise in any game in which two or more players using different computers each try to complete some task first. For example, in a game simulating a race, each player might control a game character's progress through a race course to a finish line. Another game which is sensitive to event ordering is a "shootout," or a contest of who is the quickest to draw and fire a weapon. Internet delays create difficulty in determining the correct order of events, such as a player finishing a task, because those events occur on different computers. This problem is most serious when the time differences between events are close to the network latency in magnitude. For example, if one player beats another by one-half of a second in a race, and the network latency between the two players is a full second, then in a naive implementation, the players may see different outcomes, and each may think he won the race .
Therefore, a technique is needed for determining an order for events occurring in a network environment subject to substantial and unpredictable delays and for showing those events occurring in the same order on all machines. In particular, a technique is needed for determining an order for events occurring in a multi- player game environment on the Internet .
SUMMARY OF THE INVENTION
A method is provided of representing an interaction between a number of objects. The method is implemented in a system which maintains the objects and which further maintains a timeline for each object. Each timeline represents states of the corresponding object during a time interval. In the method, the progress of one of the objects along its timeline is altered, such that the objects which are to interact simultaneously arrive at the points in time on their respective timelines corresponding to the interaction.
Other features of the present invention will be apparent from the accompanying drawings and from the detailed description which follows.
BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
Figure 1 illustrates a number of computer systems connected over the Internet .
Figure 2 illustrates a computer system in which the presented invention can be implemented. Figure 3 illustrates a display showing a number of objects .
Figure 4 is a representation of two timelines corresponding to two objects.
Figure 5 is snapshot showing a moment in time on one player's computer at which two objects are represented at different points on their timelines.
Figure 6 is snapshot showing a moment in time on one player' s computer with respect to several different objects maintained by that computer. Figure 7 illustrates a display corresponding to a computer-implemented pong game.
Figure 8 is a representation of a timeline of a ball in a pong game.
Figure 9 is a representation of the ball in a pong game being displaced along its timeline.
Figure 10A illustrates the display screens associated with two players of a pong game running over the Internet at the same moment in time.
Figures 10B and IOC are snapshots showing the same moment in time on each of the displays shown in Figure 10A.
Figure 10D illustrates the display screens associated with two players of a pong game running over the Internet at the same moment in time. Figures 10E and 10F are snapshots showing the same moment in time on each of the displays shown in Figure 10D.
Figure 10G illustrates the display screens associated with two players of a pong game running over the Internet at the same moment in time.
Figures 10H and 101 are snapshots showing the same moment in time on each of the displays shown in Figure 10G. Figures 11A and 11B are representations of altering the progression of an object along its timeline.
Figures 12 is a flow diagram illustrating a routine for synchronizing two objects according to one embodiment . Figure 13 is a representation of a timeline of a ball in a computer-implemented football game running on the Internet .
Figure 14 is a representation of the ball in a football game being displaced along its timeline. Figures 15 is a flow diagram illustrating a routine for synchronizing two objects according to an alternative embodiment.
Figure 16 is a representation of timelines associated with two game characters in a computer- implemented racing game.
Figure 17A is a representation of the timelines of Figure 16 as perceived by a first player of the racing game in the absence of the present invention.
Figure 17B is a representation of timelines of Figure 16 as perceived by a second player of the racing game in the absence of the present invention.
Figure 18A is a representation of the timelines of Figure 16 as perceived by a first player of the racing game using the present invention. Figure 18B is a representation of timelines of Figure 16 as perceived by a second player of the racing game using the present invention.
Figures 19 is a flow diagram illustrating a routine for determining the order of two events occurring in a network-implemented computer game.
Figures 20 is a flow diagram illustrating a routine for determining the order of two events occurring in a network-implemented racing game. Figure 21A illustrates a computer-implemented racing game.
Figure 21B illustrates the computer-implemented racing game of Figure 21A, as perceived by two players, in the absence of event synchronization. Figure 21C illustrates the computer- implemented racing game of Figure 21A, as perceived by two players, with event synchronization.
DETAILED DESCRIPTION
A method is described of representing interactions between objects distributed over a network in the presence of network latency. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be evident, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate description of the present invention. To implement a computer game over a network that has significant communications latency, such as the Internet, it is necessary to synchronize interactions between objects that are controlled from different computers, so that the interactions look correct to all players. It is further necessary to determine the correct order of events that occur on different computers, such that the same order is determined for those events by each computer on the network. As will be described below, the present invention includes techniques for achieving these results.
Referring now to Figure 1, a network configuration 1 is illustrated in which the present invention can be implemented. A number of computer systems 2A, 2B, and 2C are in communication with each other over the Internet 3. Each of the computers 2A, 2B, and 2C is used by a different person (player) in playing a multi-player computer game over the Internet 3. Figure 2 illustrates one possible architecture for any of the computer systems 2A, 2B, and 2C. Note that the architecture of Figure 2 is provided only for purposes of illustration- -a computer system used in conjunction with the present invention is not limited to any particular architecture. The computer system 2 of Figure 2 includes a central processing unit (CPU) 10, random access memory (RAM) 11, a mass storage device 12, a modem 13, a visual display device 14, a game controller 15, and read-only memory (ROM) 16. Mass storage device 12 includes an optical, magnetic, or other similar storage medium suitable for use with a personal computer system. The game controller 15 may include a joystick, a mouse, a trackball, a keyboard, a special-purpose game controller designed for use with certain games, or any combination of these devices.
In one embodiment, the present invention is carried out in each computer system participating in the game in response to its CPU 10 executing sequences of instructions contained in memory, such as RAM 11. That is, execution of the sequences of instructions contained in memory causes the CPU 10 to synchronize interactions between objects, as will be described below. The instructions may be loaded into memory from a persistent store, such as mass storage device 12, and/or from one or more of the other computer systems (collectively referred to as a "host computer system") over the Internet 3. For example, a host computer system may transmit a sequence of instructions to the participating computer system in response to a message transmitted to the host computer system over a network by the participating computer system. As the participating computer system receives the instructions via a network connection, such as modem 13, the computer system 2 stores the instructions in memory. The computer system 2 may store the instructions for later execution or execute the instructions as they arrive over the network connection. The host computer system may be one of the computer systems participating in the game .
In some cases, the downloaded instructions may be directly supported by the CPU 10. Consequently, execution of the instructions may be performed directly by the CPU 10. In other cases, the instructions may not be directly executable by the CPU 10. Under these circumstances, the instructions may be executed by causing the CPU 10 to execute an interpreter that interprets the instructions, or by causing the CPU 10 to execute instructions which convert the received instructions to instructions which can be directly executed by the CPU 10. In alternative embodiments, hardwired circuitry may be used in place of, or in combination with, software instructions to implement the present invention. Thus, the present invention is not limited to any specific combination of hardware circuitry and software, nor to any particular source for the instructions executed by a computer system.
In one embodiment, each computer system participating in the game includes software for generating the multi-player computer game (the "game software"), including software embodying the present invention. The game software may be stored in mass storage device 12, RAM 11, ROM 16, or any combination of these devices. In addition, the game software may be distributed between two or more of the participating computer systems 2.
I. Synchronization of Interactions Between Objects
In accordance with the present invention, each object in the game has one or more "timelines." A timeline is a function that gives the state of an object at different points in time throughout a given time interval. The "state" can include information about an object's position, size, color, or orientation as displayed on the display device 14, or any other characteristic of the object, regardless of whether or not that characteristic can be perceived by a person. A timeline may be thought of as a history of an object with respect to all of the information included in the object's state. In one embodiment, each computer system participating in the game maintains a timeline for each object that is capable of interacting with another object. For each such object, each computer system may actually maintain more than one timeline, where each timeline represents a different characteristic. However, in order to simplify description, it is henceforth assumed that each computer maintains only one timeline for each object, and that the object's timeline includes all of the information about that object. At any point in time, a computer system maintains information on the present state of all objects that are controlled from that (local) computer system. However, because of the substantial delays on the Internet, the computer system does not have knowledge of the present state of objects controlled from other (remote) computer systems. Rather, information on the present state of objects that are controlled from remote computer systems only becomes available after some delay. Nonetheless, each computer system can represent an object at any point on the object's timeline that corresponds to a point in time in the past, present, or future. When displaying an object at a point on its timeline for which complete information is not available, the local computer will determine the most likely state of the object. In a technique known as "dead-reckoning, " the most likely state of an object at a given point in time is estimated based on a known state of the object at an earlier point in time. For example, the object's current position might be estimated based on a known position, speed, and/or direction of the object at an earlier time. In any event, it is imperative that when two objects interact, they are both shown simultaneously arriving at the points on their respective timelines at which the interaction occurs .
Figure 3 illustrates a computer display 25 on which a number of different objects 31-37 are rendered during execution of a computer game. At various points in time, two or more of the objects 31-37 may interact in various different ways. Figure 4 illustrates two timelines 41 and 42 associated with two objects. The timelines 41 and 42 describe the position of each respective object with respect to time. At any given point in time, the state of the object is defined by a point on its timeline, as represented by points 43 and 44 in Figure 4. At a point in time when the objects come into contact as depicted on a display device, the timelines 41 and 42 intersect, as represented by point 45 in Figure 4. Hence, each object has a point on its timeline that corresponds to the time of interaction, namely point 45 in the example of Figure 4.
As mentioned above, a local computer does not have information on the present state of objects that are controlled from remote computers until after some delay. This effect is illustrated in Figure 5. Figure 5 shows a "snapshot" showing a moment in time on one player's (local) computer at which two objects are represented at different points on their timelines. In Figure 5, two timelines 47 and 48 correspond to two different objects. Each of the two objects is displayed on at least two computers, a local computer and one or more remote computers. Timeline 48 corresponds to an object that is controlled by one player from the local computer. Timeline 47 corresponds to an object controlled by another player from a remote computer. At the moment the snapshot is taken, the object controlled from the local computer is displayed at a point 50 on its timeline 48. Point 50 corresponds to the present time tA. In contrast, the object controlled from the remote computer is displayed at point 49, corresponding to an earlier point in time tB. The difference tA - tB between the present time tA and time tB is equal to the delay in communications between the local computer and the remote computer.
Refer now to Figure 6, which shows a snapshot of objects 31-37 (in Figure 3) at a moment in time on a local computer. That is, Figure 6 represents the states of objects 31-37 as they are displayed by the local computer at the moment of the snapshot. Timelines 31A-37A correspond to objects 31-37, respectively. To simplify explanation, the position coordinate for timelines 31A-37A are not shown- -only the time coordinate is shown. In the example of Figure 6, objects 31-33 and object 37 are controlled by a first player from the local computer; objects 34 and 35 are controlled by a second player from a first remote computer; and, object 36 is controlled by a third player from a second remote computer. An "X" denotes the point at which computer system 2A is displaying each object on its timeline at the moment of the snapshot . Objects 31-33 and 37 are represented at the present point in time tA on their respective timelines, because these objects are all controlled from the local computer system 2A. In contrast, objects 34-36 are all controlled from a remote computer and are therefore represented at earlier points tE on their respective timelines compared to objects 31-33 and 37. This time lag is necessitated by network latency, because there is a delay in the local computer's receiving state information for objects 34-36 . In this example, object 36 is controlled from a different computer than objects 34 and 35 and is subject to a greater network delay than those objects. Hence, object 36 is displayed at an earlier point in time tc than are objects 34 and 35. In accordance with the present invention, a computer system determines the point on an object's timeline at which to display the object, based on the network latency and interactions that object has with other objects. That is, based on this information, the computer system will select which state of the object to presently display from any of the states the object will actually have or that the computer predicts the object might have during a particular time interval. The selected state will not necessarily correspond to either the present time or to the most recent time for which state information about an object has been received. This technique will be described below in detail .
Refer now to Figure 7, which illustrates a display
61 associated with the well-known pong video game. In the pong game, two players control two different paddles
62 and 63, respectively, to hit a ball 64 back and forth across the display 61. Player A' s paddle 62 is capable of movement only along line 65, while player B's paddle
63 is capable of movement only along line 66. In this simple example, the ball travels at a constant speed, which will be referred to as its "normal" speed. A player scores a point when his opponent misses the ball 64.
Figure 8 shows a representation of a timeline 69 of the ball 64. The timeline 69 represents the position of the ball 64 at each point in time from time 0 to time 600. (Note that the units of time are unimportant and that the time values mentioned herein are only given for purposes of explanation.) Line 65A in Figure 8 corresponds to line 65 in Figure 7, while line 66A in Figure 8 corresponds to line 66 in Figure 7.
During the game, Player A hits the ball 64 with his paddle 62 at time 100, sending the ball 64 across the display 61 toward the paddle 63 of Player B. The point of impact (interaction) between Player A' s paddle 62 and the ball 64 is represented in Figure 8 by point 70. At time 200, Player B strikes the ball 64 with his paddle 63, sending it back across the display 61 towards Player A. The point of interaction between Player B's paddle 63 and the ball 64 is represented by point 71 in Figure 8.
A problem occurs when the pong game is implemented over the Internet . Although Player A' s computer always has current knowledge of the position of Player A' s paddle 62, Player A' s computer never has current knowledge of Player B's paddle 63, as a result of network latency. The problem, therefore, is how to represent a contact between the ball 64 and Player B's paddle 63 on Player A' s computer, given that the position of Player B's paddle 63 is not known until after the interaction has occurred. Using dead-reckoning, Player A' s computer could only guess at the position of Player B's paddle at the time of interaction. Using the present invention, Player A' s computer does not dead-reckon the position of Player B's paddle, but instead shows it at a time delay. In addition, the progression of the ball 64 along its timeline is altered at various points in time, based on the measured network latency, in order to synchronize the ball's interactions with both players' paddles when it hits the paddles. In one embodiment, the rate at which the ball 64 progresses along its timeline on Player A's computer is altered immediately after Player A hits the ball to a speed slower than the normal speed. Visually, the ball 64 appears to slow down as it travels across the display of Player A's computer. The change in speed can be made gradually to make it less apparent to the user. As a result, when the ball 64 appears to reach Player B's paddle 63 on Player A's computer, it will be running at the same time delay as Player B's paddle, so that the interaction between the ball 64 and Player B's paddle 63 will look correct, and so that the new trajectory of the ball 64 can be determined. The extent to which the speed of the ball is decreased will depend upon the measured communications delay between Player A' s computer and Player B's computer. The speed of the ball 64 can be decreased slightly more than is necessary to allow Player A's computer to receive the interaction-time position of Player B's paddle 63 before the ball 64 is shown reaching Player B's paddle 63 on Player A's display 61. In one embodiment , the latency is measured periodically during the game .
Once the ball 64 is shown on Player A's display 61 as contacting Player B's paddle 63, the rate of its progress along its timeline is increased to slightly faster than the normal rate of speed until the ball 64 contacts Player A's paddle 62, so the ball 64 is back in the present time when it appears to reach Player A' s paddle 62 on Player A's computer. Again, these changes in speed can be made gradually to make them less apparent to the user.
The above technique is also independently used by Player B's computer system. That is, (in the above embodiment) the rate at which the ball 64 progresses along its timeline on Player B's computer is altered immediately after Player B hits the ball to a speed slower than the normal speed. As a result, when the ball 64 appears to reach Player A's paddle 62 on Player B's computer, it will be running at the same time delay as Player A's paddle 62, so that the interaction between the ball 64 and Player A's paddle 62 will look correct on Player B's computer. Once the ball 64 is shown on Player B's computer as contacting Player A's paddle 62, the rate of progress of the ball 64 along its timeline is increased to slightly faster than the normal rate of speed until the ball 64 contacts Player B's paddle 62, so that the ball 64 is back in the present time when it reaches Player B's paddle 63 on Player B's computer. As compared to a situation with no latency, a player sees the ball move away from him slower than normal and toward him faster than normal. Thus, with the above technique, the enjoyment of the game is not diminished for either player, because each player must react to the ball with at least the same degree of skill and quickness as if both player's were using the same computer (i.e., as if there were no delay) .
Figure 9 illustrates the position of the pong ball 64 over time, as displayed on Player A's display 61, according to one embodiment. At a time just before time 100, the ball 64 is traveling toward Player A's paddle 62, as represented by line 69A in Figure 9. At time 100, Player A's paddle 62 strikes the ball 64, sending the ball 64 back toward Player B's paddle 63. At the moment of interaction between the ball 64 and Player A' s paddle 62, the speed of the ball along its timeline is decreased based on the measured one-way latency Δt between Player A's computer and Player B's computer, as shown by line 72. As seen by Player A, the speed of the ball 64 is consequently reduced when traveling away from Player A' s paddle 62 so that the ball 64 reaches line 66 on the display 61 at a time no sooner than the time at which Player A's computer receives the position of Player B's paddle 63 at the time of interaction. Thus, the ball 64 is shown as reaching line 66 (see Figure 7) at a time 200 + Δt on Player A's display 61. Upon striking Player B's paddle 63 at time 200 + Δt, the speed of the ball 64 is increased, as displayed on Player A's display 61, so that the ball 64 is displayed at the present point on its timeline when it reaches Player A's paddle 62. This process is then repeated as long as Player A and Player B continue to strike the ball 64 with their paddles.
Figures 10A through 101 further illustrate the technique of altering the progression of the ball 64 along its timeline to compensate for network latency. Figure 10A illustrates computer displays 61A and 61B of Players A and B, respectively, at a time t-L. Figure 10B shows the position on Player A's display 61A of the ball 64, Player A's paddle 62, and Player B's paddle 63 at time t . Figure 10C shows the position on Player B's display 61B of the ball 64, Player A's paddle 62, and Player B's paddle 63 at time t1 .
At time tl r the ball is traveling toward Player B's paddle 63. On Player A's display 61A, Player A's paddle 62 is displayed at the present time t on its timeline. However, Player B's paddle 63 is shown at a different time, t - Δt , on its timeline, where Δt is the one-way network latency. According to the present invention, at time t Player A's computer is shifting the ball 64 back in time along its timeline . Therefore, at time tx the ball 64 is displayed on Player A's display 61A at a point on its timeline that is earlier than the present time t . Specifically, the ball 64 is displayed at a point on its timeline that is slightly later than tx - Δt , because the ball 64 has almost reached Player B's paddle 63. By the time the ball 64 appears to reach Player B's paddle 63 on Player A's display (at some time later than tλ) , it will have been shifted along its timeline back to the same point in time at which Player B's paddle 63 is displayed.
In contrast, Player B's computer always has current information regarding the location of Player B's paddle 63, but not regarding the location of Player A's paddle 62. Hence, at time tx Player B's paddle 63 is displayed at the present time t1 on its timeline, while Player A' s paddle 62 is displayed at time t1 - Δt on its timeline. Further, since the ball 64 is traveling toward Player B's paddle 63 at time t-,., Player B's computer is shifting the ball 64 forward on its timeline, so that it will be displayed on Player B's display 61B at the (then) present time when it reaches Player B's paddle. Since the ball 64 has nearly reached Player B's paddle 63 at time t1# the ball 64 is displayed on Player B's display 61B close to the (current) present time t . Refer now to Figures 10D through 10F, which illustrate a second point in time t2 that is later than time t . Figure 10D illustrates displays 61A and 61B at time t2. At time t2, the ball 64 has already struck Player B's paddle 63 and is traveling back toward Player A's paddle 62. Player A's paddle 62 is displayed on his display 61A at the present time t2 on its timeline, while Player B's paddle 63 is displayed at time t2 - Δt on its timeline. Conversely, on Player B's display 61B at time t2, Player A's paddle 62 is displayed at time t2 - Δt on its timeline, while Player B's paddle 63 is displayed at the current time t2 on its timeline.
At time t2 the ball is being shifted forward along its timeline on Player A's computer and backward along its timeline on Player B's computer. The ball 64 is approximately half-way between Player A's paddle 62 and Player B's paddle 63. Consequently, the ball 64 is displayed on Player A's display 61A approximately halfway between the present time t2 and time t2 - Δt on its timeline, as illustrated in Figure 10E. Similarly, the ball 64 is also displayed on Player B's display 61B approximately half-way between the present time t2 and time t2 - Δt on its timeline, as illustrated in Figure 10F.
Figures 10G through 101 correspond to a third point in time t3 that is later than time t2. At time t3, the ball has just struck Player A's paddle 62, as shown in Figure 10G. However, Player B's computer has not yet received an indication from Player A' s computer that the contact has occurred. Therefore, at time t3 the ball 64 is being shifted backward along its timeline on Player A's computer; however, it is also still being shifted backward along its timeline on Player B's computer, since the contact with Player B's paddle 63 has not yet been displayed on Player B's display 61B. As soon as Player B's computer receives an indication that the interaction has occurred (which may be simply the position of Player A's paddle 62 at the time of interaction), Player B's computer will begin to shift the ball 64 backward along its timeline. Hence, at time t3, Player A's display 61A shows the ball 64 at a point on its timeline slightly earlier than the present time t3, since the ball has just left Player A' s paddle 62 and is now moving backward along its timeline. Player B's display 61B shows the ball essentially at point t3 - Δt on its timeline, because the interaction is just about to occur on Player B's display 61B.
In an alternative embodiment, instead of altering the speed of the ball as displayed on Player A' s computer, the ball is paused on the display 61 at a convenient point, such as at the point at which the ball 64 reaches line 66 (Figure 7) . The pause is long enough to allow Player A' s computer to receive the position of Player B's paddle 63 at the time the ball reached line 66. In another embodiment, the displayed speed of the ball may be varied as it travels from one end of the display to the other.
Figure 12 illustrates a routine performed by a local computer for synchronizing two interacting objects. Either or both of these objects may be running on a remote computer. Initially, the local computer measures the one-way communications delay Δt between itself and the remote computers on which the objects are running (step 1201) . The local computer uses this latency to set the time delay according to which certain objects will be displayed (such as the remote player's paddle in the pong game) (step 2102) . Latency measurements may be made on a periodic basis. Upon the occurrence of a trigger event (step 1203), the local computer computes the time and location of the next interaction (step 1204) . An example of a trigger event is the striking of the pong ball by a player's paddle. Next, the local computer shifts one of the objects along its timeline to bring the two interacting objects into synchronization (step 1205) . The amount by which the object is shifted is dependent upon the difference in time delay between the two objects and the time at which the interaction will occur. Note that this shifting can be gradual or instantaneous. A gradual shifting will occur if the progress of an object along its timeline slows down or speeds up. The user might perceive this as a change in the speed of movement of the object. Conversely, an instantaneous shifting of the object along its timeline might appear as the object's jumping ( " teleporting" ) from one point to another on the display. Teleporting results from the transferring of the object directly from a first point in time on its timeline to a second point in time on its timeline, such that the object does not pass through the points in time that are between the first and second points in time, as it advances along its timeline. The particular method chosen (gradual or instantaneous) for shifting an object along its timeline is at the discretion of the game designer.
Figure 11A illustrates the relationship between real time on a local computer and the displayed point in time of the ball 64 on the local computer, according to one embodiment of the pong game. If the ball 64 were always displayed with no time delay, as if both players were using the same computer, then the relationship could be represented by line 74. However, the relationship in this embodiment of the present invention is instead given by line 75. In Figures 11A and 11B, times 200 and 400 are the times on the local computer at which the ball 64 strikes the remote player's paddle 62. Time 300 represents the time at which the ball 64 strikes the local player's paddle 62. In the embodiment of Figure 11A, the speed of the ball along its timeline is varied according to the direction in which it is traveling in order to compensate for network latency.
Figure 11B relates to a different embodiment of the pong game, in which the ball is "jumped" to a different point in time on its timeline, rather than altering the rate at which the ball progresses along its timeline. In this embodiment, the ball 64 is shown on the local computer's display moving at a speed slower than normal when traveling away from the local player's paddle 62 and at the normal speed when traveling toward the local player's paddle 62. However, the ball 64 is immediately moved forward on its timeline to the local computer's time frame as soon as the local computer receives confirmation that the ball hit the remote player's paddle, as indicated by the discontinuities in line 76 at times 200 + Δt and 400 + Δt . The local player will see the ball instantly teleport from one point on the display to another in this embodiment. The present invention can be implemented in various other types of network-implemented computer games to accurately represent interactions between objects. For example, in game involving hand-to-hand combat between two characters, a contact between one character's fist and part of the other character's body is a common interaction. The fist of the character throwing the punch (the local character) can be shifted back along its timeline by showing a slow, dramatic back swing while the event message indicating the punch is sent to the remote computer system. The (local) player initiating the punch will see the contact made after it has occurred on his opponent's computer and after a message confirming the contact has been received by his local computer. Conversely, a punch initiated by his opponent will appear as a quick jab with little or no back swing. Alternatively, the present invention can be applied to many "throw-and-catch" computer games (e.g., football, baseball, etc.) to represent an interaction between a thrown ball and a receiving character. An example of such a throw-and-catch type of game is now discussed with respect to Figures 13-15. Assume that the game comprises two game characters moving about the screen, throwing a ball back and forth. Each time the ball is thrown, the receiving player must maneuver his character to intercept the ball. In this game example, the precise trajectory of the ball is not known (unlike the pong game) , because the ball can be intercepted by the receiving character at any point along its flight path. That is, the ball is essentially a missile. Therefore, in this embodiment the ball must be synchronized with the receiving player's character immediately upon being released by the throwing player.
In the following discussion, each player controls a character on his local computer in a throw-and-catch game like the one just described. There is a one-way latency Δt between the two computers, so that each player sees the other's character running at a time delay Δt . To simplify explanation, it is assumed that neither player moves and that each player releases the ball immediately upon receiving it from the other player. Figure 13 illustrates the actual position (as opposed to the displayed position) of the ball, as maintained on both computers. In Figure 13, the position of the ball with respect to time is given by lines 70. At time 100, the ball reaches line 71 corresponding to
Player A's character. At this point, the ball remains motionless for a time Δt while a "throw" event message is sent over the network to Player B's computer. At time 200, the ball reaches Player B's character, the position of which is indicated by line 72. Again, the ball remains motionless for a time Δt while a "throw" event message is sent over the network, this time to Player A's computer.
In contrast with Figure 13, Figure 14 illustrates the displayed (not actual) position of the ball with respect to time on Player A's computer. The path of the ball, as displayed on Player A's computer, is denoted by line 70A. At time 100, Player A receives the ball and immediately enters a "throw" input, causing the "throw" event message to be immediately sent to Player B's computer. As soon as the "throw" input is entered, Player A' s computer also pauses the ball on its timeline for a time Δt to synchronize the ball with Player B's character. After Δt , both the ball and Player B's character are running at the same time delay, so that when Player B's character catches the ball, it will look correct on Player A's computer.
Note that when Player A' s character throws the ball, the ball is first displayed motionless on Player A' s computer for a total time of 2Δt after the throw event is sent, where 2Δt is the round-trip latency. Half of this time 2Δt is for Player A' s throw event to reach Player B's computer; the other half is for Player A's computer to shift the ball back into the time frame of Player B. This entire delay 2Δt can be masked from
Player A by an appropriate visual effect . An example of a masking visual effect is to show a very long "wind-up" (e.g., pre-throw arm movement) by Player A's character before the character is shown releasing the ball at time 100 + 2Δt. When the ball is shown on Player A's computer as reaching Player B's character at time 200 + Δt, it appears to be caught by Player B and then immediately thrown back by Player B with no delay.
Figure 15 illustrates a routine performed by a local computer system to represent an interaction between two game objects, according to the embodiment described in Figures 13 and 14. Initially, the latency between participating computer systems is periodically measured until a trigger event is detected (step 1501) . When a trigger event is detected (step 1502) , an event message is transmitted by the local computer system to the remote computer system (step 1503) . The object is then paused on its timeline for a time equal to Δt while an appropriate visual effect is executed to mask this pause (step 1504) . At a time equal to Δt after transmission of the event message, progression of the object along its timeline is initiated while continuing the masking visual effect (step 1505) . Next, at a time equal to 2Δt after transmission of the event message, the local computer system begins displaying progress of the object along its timeline at its normal rate. Note that at this time, the displayed state (i.e., position) of the object lags behind its actual state by a time of Δt . While displaying the progress of the object, the local computer system also waits for a response to the event message
(such as a message indicating that the ball was received and thrown) . At a time Δt after the remote computer system has sent the response, the local computer receives the response (step 1507) . The local computer system then processes the response while displaying an appropriate visual effect (step 1508) .
II. Synchronization of Events
Another problem associated with implementing a multi-player game over the Internet is determining the order of events that occur on different computers and ensuring that each computer represents those events occurring in the same order and with the same outcome . This problem may arise in any game in which two or more players using different computers each try to accomplish some task before the other. One example of a game which is sensitive to event ordering is a "shootout", i.e., a contest of who is the quickest to draw and fire a weapon. Another example is a racing game, in which each player controls a game character' s progress through a race course to a finish line. The speed of each player's character might be based on the rapidity with which the player presses keys on a keyboard or a game controller. One such racing game is depicted in Figures 21A through 21C. Figure 21A shows the display for the game in which one player controls character 91 while another player controls character 92, and each player attempts to be the first to move his character to the finish line 93. Figures 21A through 21C are discussed further below. In games such as these, communications delays of the Internet make it difficult to determine the correct order of events, such as a character finishing a race, because those events occur on different computers. The present invention therefore provides a technique for determining a correct order of events in a game implemented over the Internet, and for showing these events occurring in the same (correct) order and with the same outcome on each computer participating in the game. This technique shall be referred to herein as "event synchronization" .
Figure 16 represents timelines 81 and 82 of two players involved in a computer-implemented racing game. Timelines 81 and 82 represent positions of the players A and B, respectively, with respect to time. The race begins at a starting line represented by line 83 and ends at a finish line represented by line 84. It can be seen from Figure 16 that Player B wins the race (he reaches the finish line 84 at an earlier time than Player A) . The difference between the finishing times of Players A and B is the margin of victory MV. Without the event synchronization of the present invention, if this game were played over the Internet by Players A and B using different computers, each player would see a different result. Refer to Figures 17A and 17B. Figure 17A represents the race as it is displayed on Player A's computer. Assume now that the one-way network latency Δt happens to be slightly greater than the actual margin of victory (MV) . The race then appears on A's computer according to timelines 81A and 82A, which represent the movements of Players A and B, respectively. Thus, Player A perceives that he finishes the race before Player B. In contrast, Figure 17B represents the race as it is perceived by Player B. In particular, timelines 81B and 82B represent the positions of Player A and Player B, respectively, as displayed by Player B's computer. Hence, Player B perceives that he finishes the race before Player A. Such inconsistent results are unacceptable in a game of this nature . The present invention therefore provides a technique for determining the order of events and ensuring that Players A and B see the same outcome.
Figures 18A and 18B illustrate a solution to the above problem according to a simple embodiment of the present invention. In this embodiment, the remote player's game character is shown on the local computer moving at a constant speed until a time T after the start of the race. It may be preferable to make the time T somewhat greater than the one-way latency Δt, to account for variations in latency during the game. For purposes of this description, therefore, it is assumed that T is greater than the one-way latency Δt . The constant speed at which the remote player's game character is shown may be based upon an average player's performance, either from empirical data or a guess, or it may be based on any other reasonable criterion. Thus, at some time before time T after the start of the race, the actual inputs from the remote player begin to be received by the local computer. Therefore, from time T forward, the remote player's game character is shown directly according to the inputs received from the remote computer.
In order to accurately display the result of the race to both players, this initial automatic movement of the remote player's character is compensated for by a corresponding automatic movement of the local player's character. Therefore, a buffer zone is added to the end of the race course. More specifically, the race course is modified so that the buffer zone begins where the race formally ended, and the finish line is moved to the end of the buffer zone. While the local player's character passes through the buffer zone at the end of the race, his character no longer responds to inputs from the local player. Instead, the local player's character is moved through the buffer zone automatically, according to the same assumption applied to the remote player's character at the start of the race. The length of the buffer zone is computed so that it takes the local player's character a time T to pass through the buffer zone (i.e., the same amount of time that the remote player's character was moved automatically at the start of the race) . As the local player's character passes through the buffer zone, the remote player' s input is allowed to catch up to that of the local player.
The addition of the buffer zone can be masked from the user so that it appears to be a part of the race course. Furthermore, the fact that the local player's character is not responding to input while moving through this buffer zone can also be hidden from the local player by generating an appropriate masking visual and/or audio effect. For example, in the racing game the local player's character is shown moving forward, even though it is not doing so in response to the local player's inputs .
According to this technique, each player will perceive the same result in the race, although not necessarily at the same instant, as shown in Figures 18A and 18B. Figures 18A and 18B represent the racing game as it is displayed on Player A's computer and Player B's computer, respectively, using the present invention. In Figure 18A, timelines 81A and 82A represent the position over time of Players A and B, respectively. On Player A's computer, the previous end of the race course is denoted by line 84A. A buffer zone 87A has been added to the end of the race course, so that the finish line now appears to Player A at a location indicated by line 85A. The buffer zone 87A is computed before the start of the race, so that it will take Player A's character exactly T to pass through it at the predetermined speed, S. On Player A's computer, Player B's character is moved automatically for a time T from the start of the race at a predetermined speed, S. In contrast, Player A's character responds to Player A's inputs immediately. Hence, Player B's character only begins moving according to actual input from the remote computer at a time T after the start of the race. When Player A's character reaches line 84A (the former finish line) , his character begins to move automatically until the end of the race. Therefore, Player A perceives that he loses the race to Player B by a time of MV.
Similarly, as shown in Figure 18B, Player B will perceive the race slightly differently, although the end of the race will appear the same as it did to Player A. That is, Player B will perceive that he wins the race by a time of MV. In Figure 18B, timeline 81B represents Player A's game character as displayed to Player B, while line 82B represents Player B's game character as displayed to Player B. On Player B's computer, the previous end of the race course is denoted by line 84B. A buffer zone 87B has been added to the end of the race course, so that the finish line now appears to Player B at a location indicated by line 85B. The buffer zone 87B is computed before the start of the race, so that it will take Player B's character exactly T to pass through it at the predetermined speed, S. At the start of the race, Player B's character immediately responds to input while Player A's character is moved automatically at speed S for a time T. When Player B's character reaches the beginning of the buffer zone at line 84B, then his character is moved automatically until the end of the race. Thus, Player B perceives that he wins the race by MV.
Thus, the above-described event synchronization technique can be summarized as follows. During a game, the players control various objects in an effort to achieve a goal first (e.g., to complete a race first) . In response to the players' control inputs, the objects progress through a sequence of events (e.g., the race) . During the sequence of events, each object advances through a total of N + M states in response to an input sequence from one of the players (where N and M are integers) . In accordance with the present invention, a local computer generates, for each object, N states for that object in response to the object's input sequence. Further, the local computer generates M states for the object independent of the object's input sequence (e.g., the automatic movement of a character) .
Note that a number of variations on the above technique are possible. For example, a local computer can select and alter the distribution of the N input - based states and the M input-independent states within the sequence of events for a given object, based on the latency. In particular, some of the automatic movement (i.e., a subset of the M states) for a given character can be performed at the beginning of the race, while the rest of the automatic movement (a different subset of the M states) for that character is performed in the middle or at the end of the race. In addition, the N + M states for each object in the sequence of events may not be the same for each object. For example, the game may require the local player to complete one task before the remote player completes a completely different task.
Figure 19 is a flow diagram illustrating an overall routine performed by a local computer for determining an order of events (event synchronization) occurring over a network and for displaying the result consistently on all participating computers. Initially, the one-way latency Δt over the network is measured (step 1901) . Next, an appropriate masking visual effect is determined based upon this latency (step 1902) . In the racing game example, the masking visual effect is to automatically move the remote player's character. In the shootout game example, one possible masking visual effect is to show the remote player's character drawing his weapon. This action would be shown at a speed chosen to allow time for a message to be received from the remote computer.
After the appropriate masking visual effect is determined, the game sequence is initiated on the local computer (step 1903) . The local player's game character L is then shown progressing according to input, while the remote player' s game character R is shown progressing independent of any input and according to a masking visual effect (step 1904) . This routine continues until input is received for the remote computer (step 1905) . When input is received from the remote computer, then both L and R are advanced through the game sequence according to their respective inputs. Note, however, that R is displayed according to inputs that are older than L's inputs by a time equal to Δt (step 1906) . When L finishes the game sequence (step 1907) , then L is advanced through the sequence independent of the local player's inputs and according to an appropriate masking visual effect, while R continues to be shown progressing according to input (step 1908) . When an end-of-event signal is received from the remote player (step 1909) , then both L and R are shown ending the game sequence with the correct outcome and time differential (step 1910) . For example, in the racing game described above, if an end-of-race signal is received from the remote computer before L reaches the end of the buffer zone on the local computer, then the local computer determines that R wins the race; otherwise, the local computer determines that L wins the race .
Figure 20 is a flow diagram illustrating an event synchronization routine performed by a local computer for the racing game example described above. Initially, the latency Δt is measured just before the start of the race (step 2001) . Next, a race course is generated by the game software, including a start buffer zone and finish buffer zone, each of which is computed based on the measured latency (step 2002) . Note that the start buffer zone is included as a part of the normal race course, whereas the finish buffer zone is added to the end of the normal race course to create a new finish line. When a start signal is received (step 2003,) the local player's character L is displayed according to input, which is queued, while the remote player's character R is displayed moving at a constant predetermined speed, S (step 2004) . When R reaches the end of the start buffer zone (step 2005) , the local computer determines whether any input has been received from the remote computer (step 2006) . If not, R is paused in place until such input is received (step 2007) . If input has been received from the remote player, however, then each player's character is then displayed based upon queued input (step 2008) . Note again that R will be displayed according to input that is older than that of L. When L reaches the beginning of the finish buffer zone (step 2009), then L is displayed at the constant predetermined speed, S, while R is displayed according to queued input (step 2010) . As L passes through the finish buffer zone, the remote player's input is allowed to catch up to that of the local player. When either L or R reaches the end of the finish buffer zone (step 2011) , whether in response to actual input (R) or to automatic movement (L) , then the player whose character reached the end of the finished buffer zone first is determined to be the winner of the race (step 2012) . On a given local computer, the margin of victory (MV) is computed to be the difference in finish times between the two game characters .
Figures 21A through 21C illustrate the above- described racing game, as it would appear to the players, with the use of event synchronization and without the use of event synchronization. Player A controls game character 91 while Player B controls game character 92, each in an effort to reach the finish line 93 first. Figure 21A shows the true outcome of the game (i.e., the outcome if no network latency were present) . The true outcome is that the race ends in a tie. Without the present invention, each player would see a different outcome of the race due to network latency, as shown in Figure 21B. Player A would see outcome 94A, in which his character 91 appears to win the race; however, Player B would see outcome 94B, in which his character 92 appears to win the race. In contrast, Figure 21C shows what each player would see when event synchronization is applied. A buffer zone is added to the end of the race course, as represented by the area between line 93 and line 95. The finish line is moved to the end of the buffer zone (i.e., line 95) . As a result of the technique described above, Player A and Player B each see the race end in a tie, which is the correct outcome.
Thus, a method has been described of representing interactions between objects distributed over a network, and of determining an order of events occurring over the network, in the presence of network latency. Although the present invention has been described with reference to specific exemplary embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the invention as set forth in the claims. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.

Claims

CLAIMSWhat is claimed is:
1. In a system maintaining a plurality of objects, a method of representing an interaction between the objects, the system further maintaining a timeline for each of the objects, each timeline representing states of a corresponding one of the objects during a time interval, the method comprising the step of altering a progression of one of the objects along its timeline such that each object simultaneously arrives a point on its timeline corresponding to the interaction.
2. A method according to claim 1, wherein the altering step is based on a communications latency of the system.
3. A method according to claim 1, further comprising the step of determining a point in time on each object's timeline at which the interaction is to occur.
4. A method according to claim 1, further comprising the step of computing an actual time at which the interaction is to occur, wherein the altering step is based on the estimating step.
5. A method according to claim 1, wherein the system comprises a display device, and wherein the method further comprises the step of displaying the objects on the display device in accordance with the altering step.
6. A method according to claim 1, wherein the altering step comprises the step of causing a progression of the object along its timeline to vary from a natural progression.
7. A method according to claim 1, wherein the altering step comprises the step of adjusting the rate at which said one of the objects progresses along its timeline.
8. A method according to claim 1, wherein the altering step comprises the step of transferring said one of the objects from a first point in time on its timeline to a second point in time on its timeline, such that said object does not pass through points in time between the first point in time and the second point in time.
9. A method according to claim 1, wherein the altering step comprises the step of pausing progress of said one of the objects along its timeline.
10. A method according to claim 1, wherein the system comprises a network including a plurality of interconnected nodes, and wherein each of the objects is represented on each of the nodes .
11. A method according to claim 10, wherein a first one of the objects is controlled from a first one of the nodes, and wherein a second one of the objects is controlled from a second one of the nodes different from the first one of the nodes .
12. A method of enabling a target computer to represent a synchronized interaction between a plurality of objects, the method comprising the step of transmitting sequences of instructions from a host computer to a target computer, the sequences of instructions including instructions which, when executed on the target computer, cause the target computer to perform the method recited in claim 1.
13. In a processing system maintaining a plurality of objects, each of the objects having a timeline corresponding to a characteristic of the object with respect to time, a method of representing an interaction between the objects, the method comprising the steps of: measuring a latency associated with the system; and displacing one of the objects along its timeline based on the latency.
14. A method according to claim 13, wherein the processing system comprises a network including a plurality of nodes, and wherein the latency is a communications latency between the nodes.
15. A method according to claim 13, wherein further comprising the step of computing a timeline for said one of the objects.
16. A method according to claim 14, wherein the step of displacing comprises the step of altering a rate of movement of said one of the objects, as displayed by one of the nodes, based on the latency.
17. A method according to claim 14, wherein the step of displacing comprises the step of pausing movement of said one of the objects along its timeline based on the latency.
18. A method according to claim 14, wherein the step of displacing comprises the step of transferring said one of the objects from a first point in time on its timeline to a second point in time on its timeline, such that said object does not pass through points in time between the first point in time and the second point in time while advancing along its timeline.
19. A method according to claim 14, wherein the step of displacing comprises the step of determining, based on the latency, an amount of time to elapse from a first event until the interaction between the objects.
20. A method of enabling a target computer to represent an interaction between a plurality of objects maintained in a processing system, the method comprising the step of transmitting sequences of instructions from a host computer to a target computer, the sequences of instructions including instructions which, when executed on the target computer, cause the target computer to perform the method recited in claim 13.
21. In a computer network including a first node in communication with a second node, the first node including a display device for displaying a first object and a second object, wherein the second object is controlled from the second node, a method of displaying on the first node an interaction between the first object and the second object in the presence of latency between the first and second nodes, the method comprising: measuring the latency; determining a timeline for the first object, the timeline representing a displayable characteristic of the first object throughout a time interval; and adjusting the characteristic of the first object, as displayed on the first node, along the timeline based on the latency.
22. A method according to claim 21, wherein the step of adjusting the characteristic of the first object along the timeline comprises the step of adjusting a rate of movement of the first object, as displayed by the first node, based on the latency.
23. A method according to claim 21, wherein the step of adjusting the characteristic of the first object along the timeline comprises the step of pausing movement of the first object, as displayed by the first node, based on the latency.
24. A method according to claim 21, wherein the altering step comprises the step of transferring said one of the objects from a first point in time on its timeline to a second point in time on its timeline, such that said object does not pass through points in time between the first point in time and the second point in time while advancing along its timeline.
25. A method of enabling a target computer to represent an interaction between a plurality of objects, the method comprising the step of transmitting sequences of instructions from a host computer to a target computer, the sequences of instructions including instructions which, when executed on the target computer, cause the target computer to perform the method recited in claim 21.
26. In a first node in communication with a second node in a network, the first node maintaining a first object and a second object and including a display device displaying the first object and the second object, wherein the second object is controlled from the second node, a method of processing an interaction between the first object and the second object in the presence of latency between the first node and the second node, the method comprising: receiving an input from a user; in response to the input from the user, transmitting an event message to the second node; waiting for a response to the event message from the second node, the response for indicating a result of the interaction; and displaying a first visual effect on the first object to conceal the waiting step from the user.
27. A method according to claim 26, wherein the step of displaying the first visual effect comprises displaying an animation sequence.
28. A method according to claim 26, further comprising the steps of: receiving the response from the second node; and displaying a second visual effect based on the response from the second node.
29. A method of enabling a target computer to process an interaction between a plurality of objects, the method comprising the step of transmitting sequences of instructions from a host computer to a target computer, the sequences of instructions including instructions which, when executed on the target computer, cause the target computer to perform the method recited in claim 26.
30. In a first node in communication with a second node in a network, the first node including a display device displaying a first object and a second object, wherein the second object is controlled from the second node, a method of representing an interaction between the first object and the second object in the presence of latency between the first and second nodes, the method comprising: receiving an input from a user, the input for initiating a trigger event with respect to said first and second objects; in response to the input from the user, transmitting an event message representing the trigger event to the second node; waiting for a response to the event message from the second node, the response for indicating a result of the trigger event; and displaying a first visual effect on the first object during the waiting step to conceal the waiting step from the user; and after receiving the response to the event message, displaying a second visual effect on the first object to depict the trigger event.
31. A method according to claim 30, wherein further comprising the step of displaying a third visual effect on the second object after displaying the second visual effect, the third visual effect depicting the result of the trigger event .
32. A method according to claim 30, wherein the first object is a character, and wherein the step of displaying the first visual effect comprises displaying an action of the character.
33. A method of enabling a target computer to represent an interaction between a plurality of objects, the method comprising the step of transmitting sequences of instructions from a host computer to a target computer, the sequences of instructions including instructions which, when executed on the target computer, cause the target computer to perform the method recited in claim 30.
34. A machine-readable program storage medium tangibly embodying a program of instructions, the instructions executable on a first computer system to perform method steps for representing an interaction between a plurality of objects maintained by the first computer system, the first computer system further maintaining a timeline for each of the objects, each timeline representing a state of a corresponding one of the objects throughout a time interval, the method steps comprising the step of altering a progression of one of the objects along its timeline such that the objects simultaneously arrive at points on their timelines corresponding to the interaction.
35. A program storage medium according to claim 34, wherein the altering step is based on a communications latency between the first computer system and a second computer system in communication with the first computer system.
36. A program storage medium according to claim 34, further comprising the step of determining a point in time on each object's timeline at which the interaction is to occur.
37. A program storage medium according to claim 34, further comprising the step of estimating an actual time at which the interaction is to occur, wherein the altering step is based on the estimating step.
38. A program storage medium according to claim 34, wherein the system comprises a display device, and wherein the method further comprises the step of displaying the objects on the display device in accordance with the altering step.
39. A program storage medium according to claim 34, wherein the altering step comprises the step of causing a progression of the object along its timeline to vary from a natural progression of the object along its timeline.
40. A program storage medium according to claim 39, wherein the altering step comprises the step of adjusting the rate at which said one of the objects progresses along its timeline.
41. A program storage medium according to claim 39, wherein the altering step comprises the step of transferring said one of the objects from a first point in time on its timeline to a second point in time on its timeline, such that said object does not pass through points in time between the first point in time and the second point in time.
42. A program storage medium according to claim 39, wherein the altering step comprises the step of pausing progress of said one of the objects along its timeline.
43. A program storage medium according to claim 34, wherein a first one of the objects is controlled from the first computer system, and wherein a second one of the objects is controlled from the second computer system.
PCT/US1997/017660 1996-09-30 1997-09-30 Synchronization of interactions between objects distributed over a network in the presence of latency WO1998014882A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU46615/97A AU4661597A (en) 1996-09-30 1997-09-30 Synchronization of interactions between objects distributed over a network in the presence of latency

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US72229796A 1996-09-30 1996-09-30
US08/722,297 1996-09-30

Publications (1)

Publication Number Publication Date
WO1998014882A1 true WO1998014882A1 (en) 1998-04-09

Family

ID=24901259

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1997/017660 WO1998014882A1 (en) 1996-09-30 1997-09-30 Synchronization of interactions between objects distributed over a network in the presence of latency

Country Status (2)

Country Link
AU (1) AU4661597A (en)
WO (1) WO1998014882A1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6475090B2 (en) 2001-03-29 2002-11-05 Koninklijke Philips Electronics N.V. Compensating for network latency in a multi-player game
GB2386501A (en) * 2002-03-14 2003-09-17 Manuel Oliveira Network performance indicators
US20110118033A1 (en) * 2009-11-18 2011-05-19 Sony Computer Entertainment America Inc. Synchronizing mission progress in peer-to-peer cooperative games
WO2015042048A3 (en) * 2013-09-17 2015-05-28 Amazon Technologies, Inc. Approaches for three-dimensional object display
US10067634B2 (en) 2013-09-17 2018-09-04 Amazon Technologies, Inc. Approaches for three-dimensional object display
US10592064B2 (en) 2013-09-17 2020-03-17 Amazon Technologies, Inc. Approaches for three-dimensional object display used in content navigation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4570930A (en) * 1983-10-03 1986-02-18 At&T Bell Laboratories System, method, and station interface arrangement for playing video game over telephone lines
US5292125A (en) * 1991-05-31 1994-03-08 Hochstein Peter A Apparatus and method for electrically connecting remotely located video games
US5558339A (en) * 1994-05-05 1996-09-24 Perlman; Stephen G. Network architecture to support recording and playback of real-time video games

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4570930A (en) * 1983-10-03 1986-02-18 At&T Bell Laboratories System, method, and station interface arrangement for playing video game over telephone lines
US5292125A (en) * 1991-05-31 1994-03-08 Hochstein Peter A Apparatus and method for electrically connecting remotely located video games
US5558339A (en) * 1994-05-05 1996-09-24 Perlman; Stephen G. Network architecture to support recording and playback of real-time video games

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6475090B2 (en) 2001-03-29 2002-11-05 Koninklijke Philips Electronics N.V. Compensating for network latency in a multi-player game
GB2386501A (en) * 2002-03-14 2003-09-17 Manuel Oliveira Network performance indicators
GB2386501B (en) * 2002-03-14 2005-03-16 Manuel Oliveira Network performance indicators
US20110118033A1 (en) * 2009-11-18 2011-05-19 Sony Computer Entertainment America Inc. Synchronizing mission progress in peer-to-peer cooperative games
US8308570B2 (en) * 2009-11-18 2012-11-13 Sony Computer Entertainment America Inc. Synchronizing mission progress in peer-to-peer cooperative games
US8480498B2 (en) 2009-11-18 2013-07-09 Sony Computer Entertainment America Llc Synchronizing mission progress in cooperative games
WO2015042048A3 (en) * 2013-09-17 2015-05-28 Amazon Technologies, Inc. Approaches for three-dimensional object display
US10067634B2 (en) 2013-09-17 2018-09-04 Amazon Technologies, Inc. Approaches for three-dimensional object display
US10592064B2 (en) 2013-09-17 2020-03-17 Amazon Technologies, Inc. Approaches for three-dimensional object display used in content navigation

Also Published As

Publication number Publication date
AU4661597A (en) 1998-04-24

Similar Documents

Publication Publication Date Title
US10960308B2 (en) Restoring gameplay by replaying past inputs
WO1998014886A1 (en) Synchronization of events occurring over a network in the presence of latency
US10912998B2 (en) Network game system for executing event in network game
KR101707639B1 (en) Methods and apparatus for hiding latency in network multiplayer games
US11439903B2 (en) Information processing system, storage medium storing information processing program, information processing apparatus, and information processing method
CN108144303A (en) Exchange method and device, storage medium and electronic device between account number of playing
CN113993600A (en) Delay elimination
WO1998014882A1 (en) Synchronization of interactions between objects distributed over a network in the presence of latency
JP2001149658A (en) Game device
US20230191253A1 (en) Information processing system, non-transitory computer-readable storage medium having stored therein program, information processing apparatus, and information processing method
WO2004050204A1 (en) Game system
JP6810456B2 (en) Game systems, game controls, and programs
CN112569593B (en) Virtual office-matching control method, device, equipment and medium
US9814967B1 (en) System and method for time flow adjustment in multiplayer games
JP6498732B2 (en) GAME PROGRAM, METHOD, AND INFORMATION PROCESSING DEVICE
WO2018091860A1 (en) Latency-tolerant responsive real-time multiplayer networking for racing videogames
KR100883929B1 (en) Method and system for creating skill actions of a game character
JP6683346B2 (en) Game system, game control device, and program
CN113893545A (en) Game display control method and device, electronic equipment and storage medium
JP2023106952A (en) Game program and game system
JP2021037369A (en) Game system
KR20050029931A (en) Method of online penalty game service based on online games that a winner and a loser must be determinded

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AU CA JP KR

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FI FR GB GR IE IT LU MC NL PT SE

121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: CA

NENP Non-entry into the national phase

Ref country code: JP

Ref document number: 1998516817

Format of ref document f/p: F

122 Ep: pct application non-entry in european phase