WO1996025989A2 - Method and apparatus for minimizing the impact of network delays - Google Patents

Method and apparatus for minimizing the impact of network delays Download PDF

Info

Publication number
WO1996025989A2
WO1996025989A2 PCT/US1996/002348 US9602348W WO9625989A2 WO 1996025989 A2 WO1996025989 A2 WO 1996025989A2 US 9602348 W US9602348 W US 9602348W WO 9625989 A2 WO9625989 A2 WO 9625989A2
Authority
WO
WIPO (PCT)
Prior art keywords
die
computer
time
game
target object
Prior art date
Application number
PCT/US1996/002348
Other languages
French (fr)
Other versions
WO1996025989A3 (en
Inventor
Moses Ma
Stan Kaplan
Robert J. Weldon
Original Assignee
Velocity, 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 Velocity, Inc. filed Critical Velocity, Inc.
Priority to AU49290/96A priority Critical patent/AU4929096A/en
Publication of WO1996025989A2 publication Critical patent/WO1996025989A2/en
Publication of WO1996025989A3 publication Critical patent/WO1996025989A3/en

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/358Adapting the game course according to the network or server load, e.g. for reducing latency due to different connection speeds between clients
    • A63F13/12
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
    • A63F13/573Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using trajectories of game objects, e.g. of a golf ball according to the point of impact
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/57Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
    • A63F13/577Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using determination of contact between game characters or objects, e.g. to avoid collision between virtual racing cars
    • 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/10Protocols in which an application is distributed across nodes in the network
    • 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
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/837Shooting of targets
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/50Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers
    • A63F2300/53Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing
    • A63F2300/534Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by details of game servers details of basic data processing for network load management, e.g. bandwidth optimization, latency reduction
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/64Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/64Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car
    • A63F2300/643Methods for processing data by generating or executing the game program for computing dynamical parameters of game objects, e.g. motion determination or computation of frictional forces for a virtual car by determining the impact between objects, e.g. collision detection
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/80Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game specially adapted for executing a specific type of game
    • A63F2300/8076Shooting
    • 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
    • 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 relates to interactive networks and, more particularly, to a method and apparatus for implementing computer programs, including games, over a network.
  • Certain types of communication networks introduce non-negligible delays in the transmission of information and program implementation over a network must account for these delays to synchronize the users' actions. For example, in the case of games, one player may have a space ship moving at a constant velocity and another player may shoot at that ship. The network delays the data containing the shot, and, by the time the computer playing the game receives the data, the targeted space ship may have moved substantially from the position at which the shooting player last viewed the ship. Thus, the shooting player may believe that he has hit the spaceship but the other player's computer does not register a hit. This difference between the two players' perceptions will significantly derogate from their ability to enjoy the game. Network delays may similarly affect a variety of interactive programs.
  • T e present invention overcomes the limitations of the prior art and provides a method ' and apparatus that allows interactive programs implemented over networks with finite delays to proceed quickly and with much less distortion than that introduced by any known prior art method.
  • the methods and apparatus of the present invention determine expected network delays and alter game parameters based upon the determined delays.
  • signals are periodically sent from a central computer to the particular terminal.
  • the delay for a particular signal is measured and a statistical analysis is performed on the delay times to determine an expected delay for a given time.
  • program parameters are adjusted based upon the expected delay and the program is not halted between transmission times.
  • the zone around which a game object is determined to be "hit" is expanded to account for the game object's motion during the delay period.
  • the effect of the network delay is minimized by not implementing a player's input on the player's computer until a specified time has elapsed.
  • a central computer controls a game in which the winner may be predetermined by the central computer.
  • the central computer sends a notification message to the winner without receiving any input from users. In this manner, a class of games may be played over a network with very long delays.
  • FIGURE 1 is an overview of a typical system for game play over a computer network.
  • FIGURE 2 is an example of a typical distribution of delays over a computer network.
  • FIGURE 3 illustrates different expected delay distributions for different times of the day and different days of the week.
  • FIGURE 4 is a series of frames that illustrate the divergence in game play caused by network delays.
  • FIGURE 5 is a series of frames that illustrate the implementation of "collision zone” expansion to eliminate the divergence caused by network delays.
  • FIGURE 6 is a flow chart of the present invention's delay method to eliminate the divergence caused by network delays.
  • FIGURE 7 is a flow chart of the present invention's "collision zone" expansion method to eliminate the divergence caused by network delays.
  • the manipulations performed are often referred to in terms, such as adding or comparing, which are commonly associated with mental operations performed by a human operator. No such capability of a human operator is necessary, or desirable in most cases, in any of the operations described herein which form part of the present invention; the operations are machine operations.
  • Useful machines for performing the operations of the present invention include general purpose digital computers or other similar digital devices. In all cases there should be borne in mind the distinction between the method operations in operating a computer and the method of computation itself.
  • the present invention relates to method steps for operating a computer in processing electrical or other (e.g., mechanical, chemical) physical signals to generate other desired physical signals.
  • the present invention also relates to apparatus for performing these operations.
  • This apparatus may be specially constructed for the required purposes or it may comprise a general purpose computer as selectively activated or reconfigured by a computer program stored in the computer.
  • the algorithms presented herein are not inherently related to a particular computer or other apparatus.
  • various general purpose machines may be used with programs written in accordance with the teachings herein, or it may prove more convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these machines will appear from the description given below.
  • the present invention discloses methods and apparatus for implementing interactive computer programs over a network.
  • the present invention is described with reference to specific block diagrams, and signals, etc., it will be appreciated by one of ordinary skill in the art that such details are disclosed simply to provide a more thorough understanding of the present invention. It will therefore be apparent to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well known circuits are shown in block diagram form in order not to obscure the present invention unnecessarily.
  • Figure 1 illustrates a typical system for interactive program implementation over a computer network that includes a central computer (also known as a server) 17 coupled to a plurality of individual users' terminals 8, 9 and 11 over a communications medium.
  • the computer network comprises various nodes 10 - 26 and each user may communicate with the computer network through a different series of nodes.
  • the delay between each terminal and the central computer may vary widely, depending upon various factors such as the number of nodes between the terminal and the central computer 17 and the volume of communication between those nodes.
  • Users may communicate over other types of well known network architectures.
  • the users' computers may communicate with each other over a peer to peer network.
  • the users may communicate with each other over a network with distributed servers.
  • the individual users implement programs on their respective terminals 8, 9 and 11.
  • the terminals receive data from the central computer 17, display the data on screen 28 and provide sound when appropriate.
  • the terminals 8, 9 and 11 accept user input through a joystick 36, keyboard 32, mouse 34 or other input device and transmit user input to the central computer 17.
  • the terminals 8, 9 and 11 do not merely display information provided by the central computer but must process program data.
  • the delay introduced by the network for data communication between the terminals 8, 9 and 11 and the central computer 17 presents a problem not inherent in interactive programs in an environment where there is practically no delay humanly perceptible between the users' input to the computer and die computer's reception of that input and no delay between the computer's output and the reception of the output data by the display device.
  • the network introduces a finite delay between the central computer 17 and the users' terminals 8, 9 and 11, and one user has a game object moving at a constant velocity.
  • Figure 4 illustrates the divergence in game play in a two player game, with players A and B, caused by the network delay.
  • Player A has a ship 62 and player B has a ship 64.
  • Blocks 60, 66, 68, 76, and 80 represent the display on player A's computer while blocks 70, 72, 74, 78 and 82 represent the display on player B's computer.
  • both players computers are synchronized, as shown in blocks 60 and 70, and it is assumed, without loss of generality, that both players' ships are stationary.
  • player A fires a shot 84 at player B's ship as shown in block 66.
  • player B moves his ship 64, as shown in block 72.
  • Player B does not receive the shot information until after time t_, where t--t, equals the network delay, as shown in block 78. Similarly, Player A does not receive the information regarding the movement of Player B's ship 64 until time t 3 , as shown in block 76. At time tj before time t 3 , however, player A perceives a "hit", as shown in block 68, while player B has not received the shot information at this time.
  • the method of die present invention allows the computers implementing a program to continuously run the program by adjusting aspects (eg. coordinates, sizes etc..) of program objects (e.g., spaceships, bombs etc..) to account for transmission delays from other users.
  • the method comprises two fundamental steps: 1) computing the delays of each player; and 2) adjusting the aspects of program objects based upon the computed delays. The Specification will describe these steps separately. The Specification will then describe other methods for moderating the effect of network delays.
  • interactive program implementation may involve a number of users at various nodes on a network.
  • the users communicate with the central computer through a number of intermediate nodes 10 - 26.
  • intermediate nodes 10 - 26 users that must communicate through a larger number of intermediate nodes experience longer delays man those users that communicate through a relatively smaller number of intermediate nodes.
  • the delay also depends upon the amount of data flow at the individual nodes, which may vary greatly between one intermediate node and another.
  • the delay further depends upon the efficiency of the intermediate nodes' computers. Thus, each user probably will have a different delay that may vary over the course of the game and the central computer 17 must determine each user's delay.
  • delays are inherent in the transmission of information in the form of packets.
  • a computer implementing a program over a network does not send a continuous bit stream to the other computers on the network. Instead, "routers" assemble information in packets and the routers send the packets.
  • the process of assembling a packet introduces a delay in the transmission of data. On current X.25 or TCP/IP communication systems, this process produces a noticeable delay.
  • the method of the present invention generates statistics for each node in a system. As previously described, different nodes will experience different delays. Each node corresponds to a local phone call access number to the central computer 17 in the network. Before any user may log on to the network, the present invention utilizes the central computer 17 to determine the delays for each node and repeats this process to generate statistics for the delays of each node at different times of the day and different days of the week. Once the central computer 17 has sufficient statistics, as tested by the method of the present invention, users may sign on to the network. The central computer 17 still samples delays even after users have signed on and updates each nodes' statistics accordingly.
  • the cost of generating the statistics is minimized.
  • the method of the present invention generates sufficient statistics while minimizing the amount of computer and communication time spent generating the statistics.
  • the time spent generating the statistics is directly proportional to the number of samples generated by the central computer 17.
  • a statistical analysis is employed to minimize the number of samples while preserving sufficient information concerning the delays for each node.
  • the central computer 17 If no users are logged on to the network, the central computer 17 generates delay samples by sending signals to each node. The nodes return the signal and the delay is proportional to the time elapsed between when the central computer 17 sent the signal and received the acknowledgement signal from a node. The delay from the central computer 17 to the node is assumed to be the same as the delay from the node to the central computer 17. Thus, the one way delay is measured by half the time elapsed between the sending and reception of signals by the central computer 17.
  • the central computer 17 measures delays by examining the packets sent by the users. Each user's computer periodically sends packets to the central computer 17 with a time stamp that indicates when the packet was sent. The central computer 17 determines the delay as the difference between the time the central computer 17 received the packet and the time the packet was sent.
  • the expected delay distributions for a node will be described.
  • the delay a user experiences is a function of the traffic on a particular node and that traffic may vary even over a short time interval, a user will not experience a constant delay. Instead, over a short interval, such as five minutes, a user will experience a distribution of delays, which will hereinafter be referred to as the actual delay distribution or ADD.
  • the method of the present invention uses analytic forms to "model" or approximate the ADD. The following explanation will use a two parameter family of log normal distributions 44, as shown in Figure 2. It will be appreciated that the methods and apparatus of the present invention are applicable to all types of distributions not just log normal.
  • the horizontal axis in Figure 2 represents the delay time and the vertical axis represents the probability density for each particular delay.
  • log normal delay distributions may be expressed in parametric form by the equations:
  • N(z) N(z)
  • the median
  • the "logarithmic standard deviation”
  • N(z) the standard normal curve
  • P(d) the fraction of the area under the curve in Figure 2, below the value d.
  • the distribution 44 as shown in Figure 2 will tend to change over time.
  • a user will experience longer delays during those times where data flow over the network is high. For example, a user will probably experience longer delays on Monday at 5:00 p.m. than on Sunday at 1 1 :00 p.m.
  • Figure 3 illustrates possible distributions for a particular user at different times.
  • the distributions 48 and 50 with longer delays than distribution 46 represent those times where network traffic is relatively high.
  • the method of the present invention Before a player signs on, the method of the present invention generates a delay distribution, such as those shown in Figures 2 and 3, appropriate for that particular player at that particular time.
  • the central computer 17 Before the method of the present invention is implemented, the central computer 17 has no information with regard to the distributions for each node. Upon implementation, the central computer 17 generates appropriate delay distributions for each node for each time interval within the period of a week. After one week has elapsed, each node has an "expected" distribution for each interval in a week. Let ⁇ ' and ⁇ ' denote the parameters of the expected distribution.
  • the following algorithm updates each node's expected distribution for any time of any day and determines when sufficient statistics have been taken for a node before a player may sign on through that node.
  • the following algorithm also generates the delay time that the central computer 17 will use to adjust game parameters.
  • each node will have a distribution of delays, such as that shown in Figure 2, for each time interval. For example, between 4:55 p.m. and 5:05 p.m. on a Monday, each node will have its own distribution.
  • the interval may be labelled by its mid- point, which in this example is 5:00 p.m. on Monday.
  • the method of the present invention employs a five minute period before and after the specific time for a total sampling interval of 10 minutes. A person of ordinary skill in the art will recognize that other intervals may be chosen.
  • a user will have an expected distribution for a particular time of a particular day.
  • the method of the present invention compares the user's expected distribution for a particular time with current samples of the delay for that time. If the current samples are sufficiently close to the expected distribution, it is considered that the expected distribution is confirmed and no more samples need be taken. Otherwise, more samples are taken until a new distribution, a modification of the expected distribution, has been adequately identified.
  • each node has a typical distribution characterized by a median delay ⁇ and a logarithmic standard deviation ⁇ . A probability distribution for these two parameters will be established by sampling in each time interval.
  • t) denote the prior probability that ⁇ supervise and ⁇ m are the correct values of the parameters at the time t.
  • the distribution P.(n,m j t) is established by actual measurement of network delays.
  • t-1) is obtained by updating the prior with the sampling data taken in interval t. At the present interval, sampling has commenced at 5 minutes before the time t. A minimum number of P samples of the delay is taken.
  • the particular set of values of samples is denoted as follows:
  • the posterior distribution for the present interval is then obtained as follows:
  • distribution P f (n,m jt) contains information concerning the current distribution based upon a node's history at t updated with information from current samples ⁇ d,d 3 ...d. ⁇ .
  • t) is examined.
  • ⁇ ' and ⁇ ' denote the expected values of the parameters at this time. If P f is sufficiently narrow around ⁇ ' and ⁇ ', e.g. if P f ( ⁇ ', ⁇ ') ⁇ .90, then the sampling is considered to have confirmed ⁇ ' and ⁇ 'as the correct distribution for this time, and no more sampling need be done.
  • other threshold criteria may be chosen. If this threshold is not met, more samples are taken until P f converges to a (possibly new) ⁇ , ⁇ pair.
  • the average delay for this node at this interval is:
  • the central computer 17 After a sufficient number of distributions have been generated for each node, the expected distributions are sufficiently stable to allow users to sign on. That is, the central computer 17 has sufficient statistics at each node to predict the delays for future intervals at that node. When a player signs on, the central computer 17 checks the delay distribution for that particular node at this time. If this distribution does not meet certain criteria, for example if the average delay exceeds a certain threshold, the user will not be allowed to participate in an interactive program. Otherwise, during each interval, the computer implementing the program uses the delay distributions for that interval to control program parameters, as will be discussed below.
  • the delay distributions are continually updated after the users first sign on, using the method as previously described. This method of updating does not interfere with the program. Using the above algorithm ensures that the delay distributions are properly updated while minimizing computer and communications time without disturbing the flow of the program.
  • the central computer 17 or the users' computers 8, 9 and 11 will use a particular delay, whether calculated from the delay algorithm described or derived by a different method.
  • the system may prompt the users for expected delays.
  • delays introduced by computer networks interfere with the implementation of interactive programs over these networks.
  • the method of the present invention adjusts program parameters to account for the network delay.
  • two players are playing a game over a network.
  • the player that sends a fired object at the other player is hereafter defined as the
  • a game object may comprise any type of object that has a state that may be affected by an opposing player and a fired object may comprise any type of object, visible or invisible to the players, that may affect the state of an opposing player's game object.
  • a computer game with ships and fired shots illustrates an implementation of one aspect of the present invention. It will be appreciated that the present invention may be used in conjunction with any interactive program, including programs other than games, where the effect of users' input is time dependent. It will also be appreciated that the method of the present invention is applicable to networks with any number of users and over any type of network architecture.
  • network delays cause the results of a game to diverge between the firing player and receiving player.
  • This divergence occurs because the receiving player's computer continues to run the game while the data from the firing player is transmitted to the receiving player's computer.
  • the receiving player's computer may have altered the receiving player's game object, for example a ship, from the position at which the firing player viewed the ship.
  • the "state" of the game differs between the two participants.
  • the receiving player's computer receives the information concerning the location of the shot
  • the receiving player's ship may have substantially moved from the location of the shot.
  • the firing player may have accurately fired the shot and thus the firing player's computer will register a hit.
  • the receiving player's computer will not register a hit, causing an apparent paradox.
  • a game parameter as used herein is any element of a game that may be adjusted to alter game play.
  • a program parameter is any element of a program that may be adjusted to alter the results of the program.
  • the extent of the alteration of program parameters depends upon the length of the delay. Shorter delays may require small adjustments while larger delays may require complicated adjustments. If the typical delay interval is multiplied with the typical velocity of the targeted player's vehicle, the resulting quantity is defined as the "collision scale.” If this collision scale is substantially smaller than the scale of the game object controlled by the user, then no correction is required. Any discrepancy will be hidden within acceptable limits, in terms of game play. However, should this collision scale be on the order or greater than the scale of the game object, additional corrections will be required.
  • the zone within which a "collision" is registered may be expanded. That is, to register that the receiving player's game object has been hit, instead of requiring an exact match between the current location of the receiving player's game object and the location of the fired object, die receiving player's computer may register a hit within a range of the location of the game object.
  • Figure 5 illustrates one embodiment of "collision zone" expansion in a two player game with players A and B.
  • blocks 100, 102, 104, 106 and 108 represent the display on player A's terminal while blocks 110, 112, 114, 116 and 118 represent the display on player B's terminal.
  • player A has a game object, which for purposes of illustration is shown as a ship 90
  • player B has a ship 92 positioned on player A's terminal as shown in block 100. It is assumed that player B has moved his ship 92 prior to time t o but before the move information has been received by player A's terminal.
  • player B's ship 92 at time t o as shown on player B's display is slightly different from the position on player A's terminal.
  • the position of B's ship at time t o is transmitted by player B's terminal and received by player A's terminal at time t,, where t,-t o constitutes the network delay.
  • player A's terminal calculates an expanded "collision zone" in the form of a circle 94 around player B's ship 92 at the position of player B's ship 92 on player B's display at time Lj which is now the position of player B's ship on player A's display at time t,.
  • player A fires a fired object which for purposes of illustration is shown as a shot and determines that player B's ship cannot escape the expanded collision zone 94.
  • the shot data is transmitted to player B's terminal at time t,.
  • player B's terminal shows that player B's ship has moved from its position at time t o as shown in block
  • player A's terminal displays the destruction 96 of player B's ship.
  • player B's terminal shows that player B's ship has moved from its position at time t, as shown in block 114.
  • player B's terminal receives the shot information and computes an expanded collision zone 95 around player B's ship in its position 98 on player
  • player B's display at time t o , as shown in block 116.
  • Player B's computer determines that the player A's shot falls within the expanded collision zone 94 and at time t 4 , player B's display shows the destruction 96 of player B's ship, as shown in block 118.
  • the destruction of player B's ship as shown on player A's terminal, as shown in blocks 104 and 106 may be delayed until time t 4 such that both players simultaneously perceive the destruction of player B's ship.
  • the expanded collision zones 94 and 95 as shown in blocks 102 and 116 respectively of Figure 5 are a function of the network delay and the velocity of player B's ship.
  • the radius of the circle 94 is expressed by the following formula:
  • speed is the speed of the relevant game object (e.g., player B's ship).
  • the speed of the object multiplied by the network delay represents the maximum distance the object could have travelled between the time t o , when the position of the object is transmitted to the terminal of the firing player, and the time t, when the shot is fired. If a shot is fired within the collision zone radius, the range within which the receiving player's ship could have moved between t o and t, then the shot fired within the zone will represent a hit. Otherwise, the shot will represent a miss.
  • FIG. 7 is a flow chart of one possible implementation of "collision zone" expansion in a two player game with players A and B.
  • Blocks 150, 152, 154, 156, 158 and 160 represent steps implemented on player A's computer while blocks 162, 164, 166, 168, 170 and 172 represent steps implemented on player B's computer.
  • player B's computer stores B's position and velocity at time t o and transmits this information to player A.
  • Player A receives the information at block 150 and displays player B's location.
  • the shot information is transmitted to player B's computer which computes the same collision zone at block 154.
  • computer A may determine at time tgue that the shot will hit or miss player B's ship and this information is provided to computer B.
  • the shot either enters or misses the collision zone. If the shot enters the collision zone, at blocks 156 and 168 respectively, computer A and computer B display a hit. If the shot fails to enter the collision zone, both computers show a miss in blocks 158 and 170 respectively.
  • the programs on each computer continue in blocks 160 and 172 respectively.
  • Figure 5 and the corresponding flow chart, Figure 7 illustrates one embodiment of collision zone expansion.
  • the collision zone may be expanded around player B's ship at a time other than t o -
  • a shot rather than a ship, may be expanded based upon the network delay.
  • Many other adaptations may be implemented in light of the foregoing description.
  • the expanded zone tends to cause more hits to register and the number of shots required to register complete victory may be increased to compensate for this effect. For example, if eight hits are required to destroy a game object absent a delay, 12 hits may be required to destroy a game object if the collision zone is expanded. As will be appreciated by one of ordinary skill in the art, the proper increase in the number of shots required to destroy a target will depend upon various game parameters.
  • the fired object may be expanded in size or otherwise modified.
  • a ship will be hit if the shot is within a certain range of the ship.
  • a ship may be hit by a shot that does not, to the receiving player, appear to actually hit the ship.
  • the size of the shot may be expanded.
  • the shot may appear to have an "electron cloud” zone around it and ships falling within the "cloud” will be hit.
  • the shot may break into fragments that scatter across a certain range when it is computed to be within the proximity of the target ship.
  • the trajectory of the fired object may be modified to hit or miss the game object.
  • the formula used for delays of approximately 200 to 300 milliseconds defines a circle within which a hit will be registered.
  • different geometrical shapes within which a hit may be registered may be employed to account for the velocity of the ship. If a ship is moving in a certain direction, it is more likely that ship will have been in a range along that direction. Thus, an ellipse rather than a circle may be used for intermediate delays for a ship with a velocity along the axis of the ellipse. If the players use a joystick, the damping control of the joystick, which increases the elapsed time between player action with the joystick and input from the joystick to the computer, may also affect the shape of the ellipse.
  • An ellipse will not adequately compensate for network delays longer than 600 milliseconds or for collision scales which are significantly greater than the scale of the vehicles, in excess of 600 milliseconds.
  • the first order present velocity multiplied by the delay is not a good estimate of the vehicle's position.
  • the longer delay allows the acceleration to become a significant determinant of the object's position.
  • more information such as the vehicle's velocity and acceleration, may be provided to the receiving computer to allow it to reconstruct the proper position of the object.
  • the methods and apparatus of the present invention may be employed to moderate or eliminate discrepancies not related to position caused by network delays. As previously described, position related discrepancies occur when terminals register different locations of the same program object at the same time. Other program parameters may diverge due to the presence of network delays.
  • any parameter dependant upon elapsed time or past events may diverge due to network delays.
  • two players, A and B are playing a boxing simulation and the ability of a boxer to withstand a punch depends upon the "power" each boxer possesses.
  • the "power" of a boxer depends upon an input such as the touch of a button on a joystick.
  • player A throws a punch that knocks down player B, according to player A's terminal.
  • player B depresses a joystick button and increases the power of his boxer.
  • player B's terminal receives the punch data, player B has sufficient power to withstand the punch and her boxer is not knocked down.
  • the players perceive different results.
  • non-position related parameters may be adjusted according to a range the parameter could have had within the delay period.
  • player B's computer calculates the power level range player B's boxer could have had during the delay interval. If the power level required to knock down the boxer falls within this range, then player B's terminal displays player B's boxer as being knocked down.
  • a game parameter changes as d(parameter)/dt
  • the derivative d(parameter)/dt evaluated at the time a terminal receives game data transmitted from a different terminal, multiplied by the delay time yields the change in the parameter value during the delay interval.
  • certain game parameters may change impulsively so the derivative is not necessarily an approximation of an idealized derivative but may be calculated statistically based upon the probabilities of a parameter change occurring in an interval and the effect of such a parameter change.
  • Certain applications may require a more accurate correlation between the area within which the computer registers a "collision" and the location of the receiving player's game object. As previously described, expanding the collision zone tends to cause a divergence between the actual trajectory of a ship and the span of trajectories the ship could have taken that will cause the ship to be hit. In certain applications, it may be desirable not to increase the zone within which a ship will be considered to have been hit. Alternatively, for these applications, the computer may store information concerning the past states of the system to recreate the sequence that would have occurred had the system not delayed data transfer.
  • One possible method for recreating the game play that would have occurred without any network delay comprises the steps of extrapolating the trajectory of a target object to determine whether a fired object will hit the target object.
  • the implementation of the sending player's control commands is delayed on the sending player's computer without stopping the game.
  • the sending player's computer does not implement the command until the receiving computer is anticipated to have received the control command. Instead, the sending player's computer determines, based upon the trajectory of the target object, whether the control command will result in a hit of the game object.
  • the game control command is transmitted to the receiving computer.
  • the receiving player's computer determines whether a hit will occur based upon the same trajectory information that the sending player's computer used to determine whether a hit will occur.
  • the sending player's computer delays implementation of the control command to allow for the receiving player to receive the control command.
  • the games remain synchronized, and any discrepancy can be eliminated by the two systems or a third controlling system.
  • Figure 6 is a flow chart of the delayed implementation method for a game played over a network.
  • Blocks 110, 112, 114, 116, 118, 120 and 122 correspond to steps implemented on one computer, computer A, while blocks 124, 126, 128, 130 and 132 correspond to steps implemented on another computer, computer B.
  • computer A's associated player, player A fires a shot at a ship controlled by computer B's associated player, player B.
  • computer B sends to computer A a time stamp and the location of player B's ship at this time.
  • computer A receives the time stamp and location of player B's ship at time t,.
  • block 112 which corresponds to time to, player A thereafter inputs a fire command and computer A sends to computer B data indicating that player A has fired at time t-.
  • Computer A does not implement the fire command at time t,. Instead, at a later time, t 3 , sound and animation that indicate that a shot has been initiated, but not the actual shot, are implemented on computer A. After a predetermined period, at time t 4 , computer A implements the traversal of the shot. The period t 4 - t 3 is selected to allow computer B to receive the shot command. The period t 4 - 1 3 may be increased to model the time required to release a shot. For example, in real world applications, there is frequently a short delay between when a shot is initiated and when it actually begins its traversal such because the weaponry must process the shot information and prepare for the traversal of the shot.
  • the period t - 1 3 may be selected to accurately model the delay of a real world weapon.
  • the period t 4 - t 3 may model the delay of a real world device or be chosen for a fictional weapon.
  • the traversal initiated in block 116 is transparent to computer B, which receives the fire command input at time t 2 after die network delay, as shown in block 126.
  • computer B determines whether the shot would have hit player B's ship based upon the position and velocity of player B's ship at time t,. In effect, any position changes input by player B after time t, are ignored.
  • block 128 branches to block 130 and computer B displays a hit of player B's ship.
  • block 128 branches to block 132 and a miss is displayed.
  • B's ship may not equal the position perceived by the receiving player at time t.
  • the computer registers a hit where the calculated positions of die receiving player's ship and the sending player's computer differ from the actual position perceived by the receiving player at t 4 , a strategy must be invoked to place the sending player's shot on the receiving player's computer such that the receiving player perceives a hit.
  • the receiving player perceives a hit when the missile is on the display in die same place as the receiving player's ship at the same time.
  • the computer calculates a miss, the receiving system should generate, and the player should perceive a miss.
  • the results are used to define the trajectory actually displayed on the receiving player's computer. If die receiving player's computer calculates a hit, regardless of where the computer calculated hit occurred, die trajectory of the missile that is displayed is adjusted to hit die receiving player's ship as it appears at time t 4 . Similarly, if the receiving computer calculates a miss at a location that the receiving player would perceive as a hit, the trajectory of the missile may be altered slightly to a different location at time t 4 such that the receiving player perceives a miss. As will be appreciated by a person of ordinary skill in the art, there are many methods for altering die trajectory of missiles to either hit or miss a particular game object.
  • Computer A also displays a hit or a miss based upon the position of player B's ship at time t,.
  • computer A determines whether the shot would have hit player B's ship based upon its position and velocity at time t,. If a hit would have occurred, block 118 branches to block 122 and computer A displays a hit of player B's ship. Alternatively, if the shot would not have hit player B's ship based upon its position and velocity at time t regard block 128 branches to block 132 and a miss is displayed. The shot may be adjusted on player A's display to make a hit or miss appear reasonable. Since both computers determine whether a hit would have occurred based upon the same time, position, velocity data, the computers obtain identical results and both display either a hit or a miss.
  • the sending players' computer does not implement the control signal, for example a fire command
  • the computer does not stop die game during this period.
  • the sending player perceives continuous game action except that there is a delay between die time die sending player inputs a control action and the time die results of that action appear on the sending player's display screen. If die expected delay is relatively small, the delay between the time that the sending player inputs the command to the computer and the time die computer implements the command on die display screen will not be perceived by die sending player.
  • Another strategy for synchronizing the timing of the hit or miss on the computers is to decrease die speed of die fired object on player A's display relative to the speed of die fired object on player B's display.
  • the trajectory of the fired object on player A's display may be modified to increase the amount of time required to hit or miss the fired object.
  • die speed or trajectory should be adjusted such mat die total traversal time on player A's computer equals the traversal time on player B's computer plus the network delay.
  • the delayed implementation method is not limited to die determination of whedier a ship has been hit by a fire command.
  • the delayed implementation mediod may be employed to correct for a network delay in any interactive network program where the effect of user input is time dependent.
  • Pseudo-Interactive Games For extremely long delays, or collision zones far in excess of the scale of the virtual vehicles, other, more drastic measures must be taken in order to insure apparently responsive game play. Certain games may be played by eliminating interactivity, but providing a sense of interactivity where a central computer controls game play.
  • the central computer stores all of the information required to determine a winner. For example, for Bingo, the central computer stores information concerning each players' card. The computer checks each card after it generates a new bingo slot to determine if a player has won. If so, the computer sends a message to iat die winning player or pre-al locates back channel in an unresponsive network system d at does not provide immediate messaging bandwidd to insure d at the winning player can announce her victory. Except in the case of more than one potential winning player, die computer never waits for input from die players' terminals, which greatly minimizes problems caused by network delays.
  • die central computer subtracts the known delays to and from a player's terminal from the total time from transmission of the notification to the receipt of a players' response. The player with die shortest response time is then deemed the actual winner.
  • This mediod is especially useful for diose networks with very long back channel delays (from die players to d e central computer) but relatively small forward delays.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

The methods and apparatus of the present invention determine expected network delays and alter program parameters based upon the determined delays. During the implementation of an interactive program, program parameters are adjusted based upon the expected delay and the program is not halted between transmission times. In one embodiment, with reference to computer games, the zone around which a game object is determined to be 'hit' is expanded to account for the game object's motion during the delay period. In another embodiment, the effect of the network delay is minimized by not implementing a player's input on the player's computer until a specified time has elapsed.

Description

METHOD AND APPARATUS FOR MINIMIZING THE IMPACT OF NETWORK DELAYS
BACKGROUND OF THE INVENTION 1. Field of the Invention:
The present invention relates to interactive networks and, more particularly, to a method and apparatus for implementing computer programs, including games, over a network.
2. Art Background:
The popularity of interactive computer programs such as electronic games and the availability of computer networks has induced a demand for programs that allow network users to interact with one another. This demand will intensify as computer networks become more abundant and the number of users on those networks correspondingly increases. Network users may wish to interact with a central computer or with other users, using the network as a communications medium.
Certain types of communication networks introduce non-negligible delays in the transmission of information and program implementation over a network must account for these delays to synchronize the users' actions. For example, in the case of games, one player may have a space ship moving at a constant velocity and another player may shoot at that ship. The network delays the data containing the shot, and, by the time the computer playing the game receives the data, the targeted space ship may have moved substantially from the position at which the shooting player last viewed the ship. Thus, the shooting player may believe that he has hit the spaceship but the other player's computer does not register a hit. This difference between the two players' perceptions will significantly derogate from their ability to enjoy the game. Network delays may similarly affect a variety of interactive programs.
One method of synchronizing the users' actions is to halt program implementation during the transmission of data between a computer and a user. U.S. patent number 4,570,930 employs this method for games played on individual players' computers. Applying this method to the above example, the space ship would not move until the computer receives the data transmitted by the shooting player. Halting game play, however, significantly decreases the speed of the game and distorts game play since the players will not perceive continuous action but will instead perceive frequently interrupted action. T e present invention overcomes the limitations of the prior art and provides a method ' and apparatus that allows interactive programs implemented over networks with finite delays to proceed quickly and with much less distortion than that introduced by any known prior art method.
SUMMARY OF THE INVENTION
The methods and apparatus of the present invention determine expected network delays and alter game parameters based upon the determined delays. To estimate the network delay at a given time for a particular terminal, signals are periodically sent from a central computer to the particular terminal. The delay for a particular signal is measured and a statistical analysis is performed on the delay times to determine an expected delay for a given time.
During the implementation of an interactive program, program parameters are adjusted based upon the expected delay and the program is not halted between transmission times. In one embodiment, with reference to computer games, the zone around which a game object is determined to be "hit" is expanded to account for the game object's motion during the delay period. In another embodiment, the effect of the network delay is minimized by not implementing a player's input on the player's computer until a specified time has elapsed.
In another aspect of the present invention, a central computer controls a game in which the winner may be predetermined by the central computer. The central computer sends a notification message to the winner without receiving any input from users. In this manner, a class of games may be played over a network with very long delays.
BRIEF DESCRIPTION OF THE DRAWINGS
FIGURE 1 is an overview of a typical system for game play over a computer network.
FIGURE 2 is an example of a typical distribution of delays over a computer network.
FIGURE 3 illustrates different expected delay distributions for different times of the day and different days of the week.
FIGURE 4 is a series of frames that illustrate the divergence in game play caused by network delays.
FIGURE 5 is a series of frames that illustrate the implementation of "collision zone" expansion to eliminate the divergence caused by network delays.
FIGURE 6 is a flow chart of the present invention's delay method to eliminate the divergence caused by network delays.
FIGURE 7 is a flow chart of the present invention's "collision zone" expansion method to eliminate the divergence caused by network delays.
NOTATION AND NOMENCLATURE
The detailed descriptions which follow are presented largely in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art.
An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. These steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It proves convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities.
Further, the manipulations performed are often referred to in terms, such as adding or comparing, which are commonly associated with mental operations performed by a human operator. No such capability of a human operator is necessary, or desirable in most cases, in any of the operations described herein which form part of the present invention; the operations are machine operations. Useful machines for performing the operations of the present invention include general purpose digital computers or other similar digital devices. In all cases there should be borne in mind the distinction between the method operations in operating a computer and the method of computation itself. The present invention relates to method steps for operating a computer in processing electrical or other (e.g., mechanical, chemical) physical signals to generate other desired physical signals.
The present invention also relates to apparatus for performing these operations. This apparatus may be specially constructed for the required purposes or it may comprise a general purpose computer as selectively activated or reconfigured by a computer program stored in the computer. The algorithms presented herein are not inherently related to a particular computer or other apparatus. In particular, various general purpose machines may be used with programs written in accordance with the teachings herein, or it may prove more convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these machines will appear from the description given below.
DETAILED DESCRIPTION OF THE INVENTION
The present invention discloses methods and apparatus for implementing interactive computer programs over a network. Although the present invention is described with reference to specific block diagrams, and signals, etc., it will be appreciated by one of ordinary skill in the art that such details are disclosed simply to provide a more thorough understanding of the present invention. It will therefore be apparent to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well known circuits are shown in block diagram form in order not to obscure the present invention unnecessarily.
Figure 1 illustrates a typical system for interactive program implementation over a computer network that includes a central computer (also known as a server) 17 coupled to a plurality of individual users' terminals 8, 9 and 11 over a communications medium. The computer network comprises various nodes 10 - 26 and each user may communicate with the computer network through a different series of nodes. Thus, the delay between each terminal and the central computer may vary widely, depending upon various factors such as the number of nodes between the terminal and the central computer 17 and the volume of communication between those nodes.
Users may communicate over other types of well known network architectures. For example, the users' computers may communicate with each other over a peer to peer network. Alternatively, the users may communicate with each other over a network with distributed servers.
The individual users implement programs on their respective terminals 8, 9 and 11. The terminals receive data from the central computer 17, display the data on screen 28 and provide sound when appropriate. The terminals 8, 9 and 11 accept user input through a joystick 36, keyboard 32, mouse 34 or other input device and transmit user input to the central computer 17. As will be fully described below, in the present invention, the terminals 8, 9 and 11 do not merely display information provided by the central computer but must process program data.
The delay introduced by the network for data communication between the terminals 8, 9 and 11 and the central computer 17 presents a problem not inherent in interactive programs in an environment where there is practically no delay humanly perceptible between the users' input to the computer and die computer's reception of that input and no delay between the computer's output and the reception of the output data by the display device. For example, assume that the network introduces a finite delay between the central computer 17 and the users' terminals 8, 9 and 11, and one user has a game object moving at a constant velocity.
Figure 4 illustrates the divergence in game play in a two player game, with players A and B, caused by the network delay.
As shown in block 60 of Figure 4, Player A has a ship 62 and player B has a ship 64. Blocks 60, 66, 68, 76, and 80 represent the display on player A's computer while blocks 70, 72, 74, 78 and 82 represent the display on player B's computer. At time to, both players computers are synchronized, as shown in blocks 60 and 70, and it is assumed, without loss of generality, that both players' ships are stationary. After time to, at time t,, player A fires a shot 84 at player B's ship as shown in block 66. At the same time, t,, player B moves his ship 64, as shown in block 72. Player B does not receive the shot information until after time t_, where t--t, equals the network delay, as shown in block 78. Similarly, Player A does not receive the information regarding the movement of Player B's ship 64 until time t3, as shown in block 76. At time tj before time t3, however, player A perceives a "hit", as shown in block 68, while player B has not received the shot information at this time.
At time t3, player B's ship has been destroyed as perceived by player A, as shown in block 76. Conversely, at time t„ player B's terminal has just received the shot information, as shown in block 78. Subsequently, at time t4 as shown in block 82, the position of the shot 84, which is identical to the position of the shot 84 as shown in block 68, is not identical with the position of Player B's ship 64, according to player B's terminal, as shown in block 82. At time t4, player A still perceives that player B's ship 64 has been destroyed. Thus, the network delay has caused a divergence in the results of game play. Network delays may cause many other types of divergences, apart from the example described with reference to Figure 4.
One prior art technique solved the divergence in interactive program implementation over networks by halting game play until the computer receives or should have received user input. This technique, however, significantly increases the amount of time required to implement a program. Further, this technique may distort the audio visual effect of the program, especially where the users have varying delays. The methods of the present invention provides a substantial improvement over the prior art by not halting program implementation in between data transmission periods. In one embodiment, the method of die present invention allows the computers implementing a program to continuously run the program by adjusting aspects (eg. coordinates, sizes etc..) of program objects (e.g., spaceships, bombs etc..) to account for transmission delays from other users. The method comprises two fundamental steps: 1) computing the delays of each player; and 2) adjusting the aspects of program objects based upon the computed delays. The Specification will describe these steps separately. The Specification will then describe other methods for moderating the effect of network delays.
COMPUTING DELAYS
As shown in Figure 1 , interactive program implementation may involve a number of users at various nodes on a network. The users communicate with the central computer through a number of intermediate nodes 10 - 26. Generally, users that must communicate through a larger number of intermediate nodes experience longer delays man those users that communicate through a relatively smaller number of intermediate nodes. The delay also depends upon the amount of data flow at the individual nodes, which may vary greatly between one intermediate node and another. The delay further depends upon the efficiency of the intermediate nodes' computers. Thus, each user probably will have a different delay that may vary over the course of the game and the central computer 17 must determine each user's delay.
Finally, delays are inherent in the transmission of information in the form of packets. A computer implementing a program over a network does not send a continuous bit stream to the other computers on the network. Instead, "routers" assemble information in packets and the routers send the packets. The process of assembling a packet introduces a delay in the transmission of data. On current X.25 or TCP/IP communication systems, this process produces a noticeable delay.
The method of the present invention generates statistics for each node in a system. As previously described, different nodes will experience different delays. Each node corresponds to a local phone call access number to the central computer 17 in the network. Before any user may log on to the network, the present invention utilizes the central computer 17 to determine the delays for each node and repeats this process to generate statistics for the delays of each node at different times of the day and different days of the week. Once the central computer 17 has sufficient statistics, as tested by the method of the present invention, users may sign on to the network. The central computer 17 still samples delays even after users have signed on and updates each nodes' statistics accordingly.
According to one aspect of the present invention, the cost of generating the statistics is minimized. Whatever the communications medium between the central computer 17 and the node, there is a attendant cost to using that medium. Since a network may have many hundreds of nodes, it is important to minimize the amount of communication time between the central computer 17 and the nodes. Further, there is a cost associated with operating a computer and it is desirable to minimize this cost by minimizing the amount of computer time spent in generating proper statistics.
The method of the present invention generates sufficient statistics while minimizing the amount of computer and communication time spent generating the statistics. The time spent generating the statistics is directly proportional to the number of samples generated by the central computer 17. A statistical analysis is employed to minimize the number of samples while preserving sufficient information concerning the delays for each node.
If no users are logged on to the network, the central computer 17 generates delay samples by sending signals to each node. The nodes return the signal and the delay is proportional to the time elapsed between when the central computer 17 sent the signal and received the acknowledgement signal from a node. The delay from the central computer 17 to the node is assumed to be the same as the delay from the node to the central computer 17. Thus, the one way delay is measured by half the time elapsed between the sending and reception of signals by the central computer 17.
If users are logged on, the central computer 17 measures delays by examining the packets sent by the users. Each user's computer periodically sends packets to the central computer 17 with a time stamp that indicates when the packet was sent. The central computer 17 determines the delay as the difference between the time the central computer 17 received the packet and the time the packet was sent.
Turning now to the specific method for determining the proper number of samples, the expected delay distributions for a node will be described. As previously stated, since the delay a user experiences is a function of the traffic on a particular node and that traffic may vary even over a short time interval, a user will not experience a constant delay. Instead, over a short interval, such as five minutes, a user will experience a distribution of delays, which will hereinafter be referred to as the actual delay distribution or ADD. The method of the present invention uses analytic forms to "model" or approximate the ADD. The following explanation will use a two parameter family of log normal distributions 44, as shown in Figure 2. It will be appreciated that the methods and apparatus of the present invention are applicable to all types of distributions not just log normal. The horizontal axis in Figure 2 represents the delay time and the vertical axis represents the probability density for each particular delay.
The log normal delay distributions may be expressed in parametric form by the equations:
-μe
and
P(d) = N(z), where μ is the median, and σ is the "logarithmic standard deviation," N(z) is the standard normal curve and P(d) is the fraction of the area under the curve in Figure 2, below the value d. This distribution, so expressed, may also be written as p(d) = LN(d,μ,σ).
The distribution 44 as shown in Figure 2 will tend to change over time. A user will experience longer delays during those times where data flow over the network is high. For example, a user will probably experience longer delays on Monday at 5:00 p.m. than on Sunday at 1 1 :00 p.m. Figure 3 illustrates possible distributions for a particular user at different times. The distributions 48 and 50 with longer delays than distribution 46 represent those times where network traffic is relatively high.
Before a player signs on, the method of the present invention generates a delay distribution, such as those shown in Figures 2 and 3, appropriate for that particular player at that particular time.
Before the method of the present invention is implemented, the central computer 17 has no information with regard to the distributions for each node. Upon implementation, the central computer 17 generates appropriate delay distributions for each node for each time interval within the period of a week. After one week has elapsed, each node has an "expected" distribution for each interval in a week. Let μ' and σ' denote the parameters of the expected distribution.
The following algorithm updates each node's expected distribution for any time of any day and determines when sufficient statistics have been taken for a node before a player may sign on through that node. The following algorithm also generates the delay time that the central computer 17 will use to adjust game parameters.
As previously described, each node will have a distribution of delays, such as that shown in Figure 2, for each time interval. For example, between 4:55 p.m. and 5:05 p.m. on a Monday, each node will have its own distribution. The interval may be labelled by its mid- point, which in this example is 5:00 p.m. on Monday. The method of the present invention employs a five minute period before and after the specific time for a total sampling interval of 10 minutes. A person of ordinary skill in the art will recognize that other intervals may be chosen.
As previously described, a user will have an expected distribution for a particular time of a particular day.
The method of the present invention compares the user's expected distribution for a particular time with current samples of the delay for that time. If the current samples are sufficiently close to the expected distribution, it is considered that the expected distribution is confirmed and no more samples need be taken. Otherwise, more samples are taken until a new distribution, a modification of the expected distribution, has been adequately identified.
The following is a mathematical treatment of the above algorithm. At each interval, each node has a typical distribution characterized by a median delay μ and a logarithmic standard deviation σ. A probability distribution for these two parameters will be established by sampling in each time interval.
Let P0(n.m | t) denote the prior probability that μ„ and σm are the correct values of the parameters at the time t. The distribution P.(n,m j t) is established by actual measurement of network delays. The posterior distribution Pf(n,m| t-1) is obtained by updating the prior with the sampling data taken in interval t. At the present interval, sampling has commenced at 5 minutes before the time t. A minimum number of P samples of the delay is taken. The particular set of values of samples is denoted as follows:
Let E=delay samples = {d,d2...dP}.
If the true parameters during this interval are μ and σ then the probability of obtaining evidence E is
Figure imgf000013_0001
The posterior distribution for the present interval is then obtained as follows:
Figure imgf000013_0002
At this point, distribution Pf(n,m jt) contains information concerning the current distribution based upon a node's history at t updated with information from current samples {d,d3...d.}.
To determine whether more samples for this interval must be taken, the distribution Pr(n,m |t) is examined. As previously described, μ' and σ' denote the expected values of the parameters at this time. If Pf is sufficiently narrow around μ' and σ', e.g. if Pf(μ', σ')≥ .90, then the sampling is considered to have confirmed μ' and σ'as the correct distribution for this time, and no more sampling need be done. As will be readily appreciated by one of ordinary skill in the art, other threshold criteria may be chosen. If this threshold is not met, more samples are taken until Pf converges to a (possibly new) μ, σ pair.
I t Next, from Pf the "updated" delay distribution for this time is calculated as a weighted function of the probability of achieving a particular distribution:
f { d\ t) -∑ Pf (n, m\ t) LN( d\ μn, om) n, m
The average delay for this node at this interval is:
d= x f (x\ t) dx
/
X'O
After a sufficient number of distributions have been generated for each node, the expected distributions are sufficiently stable to allow users to sign on. That is, the central computer 17 has sufficient statistics at each node to predict the delays for future intervals at that node. When a player signs on, the central computer 17 checks the delay distribution for that particular node at this time. If this distribution does not meet certain criteria, for example if the average delay exceeds a certain threshold, the user will not be allowed to participate in an interactive program. Otherwise, during each interval, the computer implementing the program uses the delay distributions for that interval to control program parameters, as will be discussed below.
The delay distributions are continually updated after the users first sign on, using the method as previously described. This method of updating does not interfere with the program. Using the above algorithm ensures that the delay distributions are properly updated while minimizing computer and communications time without disturbing the flow of the program.
Using the Estimated Delay to Adjust Game Parameters The following description assumes that the central computer 17 or the users' computers 8, 9 and 11 will use a particular delay, whether calculated from the delay algorithm described or derived by a different method. For example, the system may prompt the users for expected delays. As previously described, delays introduced by computer networks interfere with the implementation of interactive programs over these networks. The method of the present invention adjusts program parameters to account for the network delay. In the following discussion, for ease of explanation, it is assumed that two players are playing a game over a network. The player that sends a fired object at the other player is hereafter defined as the
"firing player" while the player whose game object is targeted is hereafter defined as the "receiving player." A game object may comprise any type of object that has a state that may be affected by an opposing player and a fired object may comprise any type of object, visible or invisible to the players, that may affect the state of an opposing player's game object.
A computer game with ships and fired shots illustrates an implementation of one aspect of the present invention. It will be appreciated that the present invention may be used in conjunction with any interactive program, including programs other than games, where the effect of users' input is time dependent. It will also be appreciated that the method of the present invention is applicable to networks with any number of users and over any type of network architecture.
As previously described, network delays cause the results of a game to diverge between the firing player and receiving player. This divergence occurs because the receiving player's computer continues to run the game while the data from the firing player is transmitted to the receiving player's computer. During this time, the receiving player's computer may have altered the receiving player's game object, for example a ship, from the position at which the firing player viewed the ship. In other words, the "state" of the game differs between the two participants. Thus, when the receiving player's computer receives the information concerning the location of the shot, the receiving player's ship may have substantially moved from the location of the shot. The firing player may have accurately fired the shot and thus the firing player's computer will register a hit. Conversely, the receiving player's computer will not register a hit, causing an apparent paradox.
The effects of this divergence may be eliminated by adjusting game parameters based upon the expected delay. A game parameter as used herein is any element of a game that may be adjusted to alter game play. More generally, a program parameter is any element of a program that may be adjusted to alter the results of the program. The extent of the alteration of program parameters depends upon the length of the delay. Shorter delays may require small adjustments while larger delays may require complicated adjustments. If the typical delay interval is multiplied with the typical velocity of the targeted player's vehicle, the resulting quantity is defined as the "collision scale." If this collision scale is substantially smaller than the scale of the game object controlled by the user, then no correction is required. Any discrepancy will be hidden within acceptable limits, in terms of game play. However, should this collision scale be on the order or greater than the scale of the game object, additional corrections will be required.
"Collision" Zone Expansion
Should the collision scale be approximately of the same order as the game object, which for many systems could typically be on the order of two hundred milliseconds, the zone within which a "collision" is registered may be expanded. That is, to register that the receiving player's game object has been hit, instead of requiring an exact match between the current location of the receiving player's game object and the location of the fired object, die receiving player's computer may register a hit within a range of the location of the game object. Figure 5 illustrates one embodiment of "collision zone" expansion in a two player game with players A and B.
In Figure 5, blocks 100, 102, 104, 106 and 108 represent the display on player A's terminal while blocks 110, 112, 114, 116 and 118 represent the display on player B's terminal. At time to, player A has a game object, which for purposes of illustration is shown as a ship 90, and player B has a ship 92 positioned on player A's terminal as shown in block 100. It is assumed that player B has moved his ship 92 prior to time to but before the move information has been received by player A's terminal. Thus, as shown in block 110, player B's ship 92 at time to as shown on player B's display is slightly different from the position on player A's terminal.
The position of B's ship at time to is transmitted by player B's terminal and received by player A's terminal at time t,, where t,-to constitutes the network delay. As shown in block 102, player A's terminal calculates an expanded "collision zone" in the form of a circle 94 around player B's ship 92 at the position of player B's ship 92 on player B's display at time Lj which is now the position of player B's ship on player A's display at time t,. As shown in block 102, at time t,, player A fires a fired object which for purposes of illustration is shown as a shot and determines that player B's ship cannot escape the expanded collision zone 94. The shot data is transmitted to player B's terminal at time t,. At time t,, player B's terminal shows that player B's ship has moved from its position at time to as shown in block At time t-, where tj-t, may be less than the network delay, player A's terminal displays the destruction 96 of player B's ship. At time t,, player B's terminal shows that player B's ship has moved from its position at time t, as shown in block 114. At time t3, where t3-t, is equal to the network delay, player B's terminal receives the shot information and computes an expanded collision zone 95 around player B's ship in its position 98 on player
B's display at time to, as shown in block 116. Player B's computer determines that the player A's shot falls within the expanded collision zone 94 and at time t4, player B's display shows the destruction 96 of player B's ship, as shown in block 118. In an alternative embodiment, the destruction of player B's ship as shown on player A's terminal, as shown in blocks 104 and 106, may be delayed until time t4 such that both players simultaneously perceive the destruction of player B's ship.
The expanded collision zones 94 and 95 as shown in blocks 102 and 116 respectively of Figure 5 are a function of the network delay and the velocity of player B's ship. The radius of the circle 94 is expressed by the following formula:
Radius = Speed X Network Transfer Delay
where speed is the speed of the relevant game object (e.g., player B's ship). The speed of the object multiplied by the network delay represents the maximum distance the object could have travelled between the time to, when the position of the object is transmitted to the terminal of the firing player, and the time t, when the shot is fired. If a shot is fired within the collision zone radius, the range within which the receiving player's ship could have moved between to and t,, then the shot fired within the zone will represent a hit. Otherwise, the shot will represent a miss.
Figure 7 is a flow chart of one possible implementation of "collision zone" expansion in a two player game with players A and B. Blocks 150, 152, 154, 156, 158 and 160 represent steps implemented on player A's computer while blocks 162, 164, 166, 168, 170 and 172 represent steps implemented on player B's computer. At block 162, player B's computer stores B's position and velocity at time to and transmits this information to player A. Player A receives the information at block 150 and displays player B's location. At block 152, player A fires and player A's computer computes an expanded collision zone around player B at time ^ where the collision zone radius = (B's Speed at time to) X Network
Transfer Delay. The shot information is transmitted to player B's computer which computes the same collision zone at block 154. In an alternate embodiment, computer A may determine at time t„ that the shot will hit or miss player B's ship and this information is provided to computer B. At blocks 154 and 166 respectively, the shot either enters or misses the collision zone. If the shot enters the collision zone, at blocks 156 and 168 respectively, computer A and computer B display a hit. If the shot fails to enter the collision zone, both computers show a miss in blocks 158 and 170 respectively. The programs on each computer continue in blocks 160 and 172 respectively.
It will be appreciated that Figure 5 and the corresponding flow chart, Figure 7, illustrates one embodiment of collision zone expansion. Numerous alternatives are possible. For example, the collision zone may be expanded around player B's ship at a time other than to- As another example, a shot, rather than a ship, may be expanded based upon the network delay. Many other adaptations may be implemented in light of the foregoing description.
The expanded zone tends to cause more hits to register and the number of shots required to register complete victory may be increased to compensate for this effect. For example, if eight hits are required to destroy a game object absent a delay, 12 hits may be required to destroy a game object if the collision zone is expanded. As will be appreciated by one of ordinary skill in the art, the proper increase in the number of shots required to destroy a target will depend upon various game parameters.
To make hits appear reasonable, the fired object may be expanded in size or otherwise modified. As previously described, a ship will be hit if the shot is within a certain range of the ship. Thus, a ship may be hit by a shot that does not, to the receiving player, appear to actually hit the ship. To make the shot appear to hit the ship, the size of the shot may be expanded. Alternatively, the shot may appear to have an "electron cloud" zone around it and ships falling within the "cloud" will be hit. Further, the shot may break into fragments that scatter across a certain range when it is computed to be within the proximity of the target ship. The trajectory of the fired object may be modified to hit or miss the game object. As will be appreciated by one of ordinary skill in the art, there are a variety of methods to expand the zone within which a ship appears to be hit. Alternatively, the speed of the vehicle or shots can be artificially reduced to compensate for delays. Thus the system ensures that the destruction of a ship appears reasonable to all of the players of the game.
For intermediate delays, between 300 and 600 milliseconds, further adjustments may be made. As previously described, the formula used for delays of approximately 200 to 300 milliseconds defines a circle within which a hit will be registered. For longer delays, different geometrical shapes within which a hit may be registered may be employed to account for the velocity of the ship. If a ship is moving in a certain direction, it is more likely that ship will have been in a range along that direction. Thus, an ellipse rather than a circle may be used for intermediate delays for a ship with a velocity along the axis of the ellipse. If the players use a joystick, the damping control of the joystick, which increases the elapsed time between player action with the joystick and input from the joystick to the computer, may also affect the shape of the ellipse.
An ellipse will not adequately compensate for network delays longer than 600 milliseconds or for collision scales which are significantly greater than the scale of the vehicles, in excess of 600 milliseconds. For such longer delays or excessive collision scales, if the object is accelerating, the first order present velocity multiplied by the delay is not a good estimate of the vehicle's position. The longer delay allows the acceleration to become a significant determinant of the object's position. For longer delays, more information, such as the vehicle's velocity and acceleration, may be provided to the receiving computer to allow it to reconstruct the proper position of the object.
Game Parameters Other than Position
The methods and apparatus of the present invention may be employed to moderate or eliminate discrepancies not related to position caused by network delays. As previously described, position related discrepancies occur when terminals register different locations of the same program object at the same time. Other program parameters may diverge due to the presence of network delays.
Any parameter dependant upon elapsed time or past events may diverge due to network delays. For example, assume that two players, A and B, are playing a boxing simulation and the ability of a boxer to withstand a punch depends upon the "power" each boxer possesses. Assume further that the "power" of a boxer depends upon an input such as the touch of a button on a joystick. At time to, player A throws a punch that knocks down player B, according to player A's terminal. Before player B receives the punch information, however, player B depresses a joystick button and increases the power of his boxer. When player B's terminal receives the punch data, player B has sufficient power to withstand the punch and her boxer is not knocked down. Thus, the players perceive different results.
Analogous to the methods related to position discrepancies, non-position related parameters may be adjusted according to a range the parameter could have had within the delay period. In the boxing example previously discussed, when player B receives the "punch" data, player B's computer calculates the power level range player B's boxer could have had during the delay interval. If the power level required to knock down the boxer falls within this range, then player B's terminal displays player B's boxer as being knocked down.
More formally, if a game parameter changes as d(parameter)/dt, then the derivative d(parameter)/dt evaluated at the time a terminal receives game data transmitted from a different terminal, multiplied by the delay time yields the change in the parameter value during the delay interval. Of course, certain game parameters may change impulsively so the derivative is not necessarily an approximation of an idealized derivative but may be calculated statistically based upon the probabilities of a parameter change occurring in an interval and the effect of such a parameter change. Thus, if within a specified period T, a series of n+ 1 actions each has a probability p, of occurring, and a given action is associated with a parameter change of x-„ then the expected parameter change for a delay d is:
( d/T) ∑ piXi
Game State Methods Certain applications may require a more accurate correlation between the area within which the computer registers a "collision" and the location of the receiving player's game object. As previously described, expanding the collision zone tends to cause a divergence between the actual trajectory of a ship and the span of trajectories the ship could have taken that will cause the ship to be hit. In certain applications, it may be desirable not to increase the zone within which a ship will be considered to have been hit. Alternatively, for these applications, the computer may store information concerning the past states of the system to recreate the sequence that would have occurred had the system not delayed data transfer.
Delayed Implementation Method
One possible method for recreating the game play that would have occurred without any network delay comprises the steps of extrapolating the trajectory of a target object to determine whether a fired object will hit the target object. In conjunction with extrapolation, the implementation of the sending player's control commands is delayed on the sending player's computer without stopping the game. In this case, when the sending player inputs a control command to the computer, the sending player's computer does not implement the command until the receiving computer is anticipated to have received the control command. Instead, the sending player's computer determines, based upon the trajectory of the target object, whether the control command will result in a hit of the game object. The game control command is transmitted to the receiving computer. The receiving player's computer determines whether a hit will occur based upon the same trajectory information that the sending player's computer used to determine whether a hit will occur. The sending player's computer delays implementation of the control command to allow for the receiving player to receive the control command. Thus, the games remain synchronized, and any discrepancy can be eliminated by the two systems or a third controlling system.
Figure 6 is a flow chart of the delayed implementation method for a game played over a network. Blocks 110, 112, 114, 116, 118, 120 and 122 correspond to steps implemented on one computer, computer A, while blocks 124, 126, 128, 130 and 132 correspond to steps implemented on another computer, computer B. Without loss of generality, it is assumed that computer A's associated player, player A, fires a shot at a ship controlled by computer B's associated player, player B. At block 124, which corresponds to time t,, computer B sends to computer A a time stamp and the location of player B's ship at this time. At block 110, computer A receives the time stamp and location of player B's ship at time t,. In block 112, which corresponds to time to, player A thereafter inputs a fire command and computer A sends to computer B data indicating that player A has fired at time t-.
Computer A does not implement the fire command at time t,. Instead, at a later time, t3, sound and animation that indicate that a shot has been initiated, but not the actual shot, are implemented on computer A. After a predetermined period, at time t4, computer A implements the traversal of the shot. The period t4 - t3 is selected to allow computer B to receive the shot command. The period t4 - 13 may be increased to model the time required to release a shot. For example, in real world applications, there is frequently a short delay between when a shot is initiated and when it actually begins its traversal such because the weaponry must process the shot information and prepare for the traversal of the shot. The period t - 13 may be selected to accurately model the delay of a real world weapon. As will be appreciated by one of ordinary skill in the art, the period t4 - t3 may model the delay of a real world device or be chosen for a fictional weapon. The traversal initiated in block 116 is transparent to computer B, which receives the fire command input at time t2 after die network delay, as shown in block 126. At block 128, computer B determines whether the shot would have hit player B's ship based upon the position and velocity of player B's ship at time t,. In effect, any position changes input by player B after time t, are ignored. If the shot would have hit player B's ship based upon its position and velocity at time t,, block 128 branches to block 130 and computer B displays a hit of player B's ship. Alternatively, if die shot would not have hit player B's ship based upon its position and velocity at time t,, block 128 branches to block 132 and a miss is displayed.
Since player B may have moved between t, and t4, the estimated position of the player
B's ship may not equal the position perceived by the receiving player at time t.. Thus, if the computer registers a hit where the calculated positions of die receiving player's ship and the sending player's computer differ from the actual position perceived by the receiving player at t4, a strategy must be invoked to place the sending player's shot on the receiving player's computer such that the receiving player perceives a hit. Of course, the receiving player perceives a hit when the missile is on the display in die same place as the receiving player's ship at the same time. Similarly, if the computer calculates a miss, the receiving system should generate, and the player should perceive a miss.
To adjust what occurs on the receiving player's computer to match the results calculated by the receiving player's computer, the results (e.g., a hit or a miss) are used to define the trajectory actually displayed on the receiving player's computer. If die receiving player's computer calculates a hit, regardless of where the computer calculated hit occurred, die trajectory of the missile that is displayed is adjusted to hit die receiving player's ship as it appears at time t4. Similarly, if the receiving computer calculates a miss at a location that the receiving player would perceive as a hit, the trajectory of the missile may be altered slightly to a different location at time t4 such that the receiving player perceives a miss. As will be appreciated by a person of ordinary skill in the art, there are many methods for altering die trajectory of missiles to either hit or miss a particular game object.
Computer A also displays a hit or a miss based upon the position of player B's ship at time t,. In block 118, computer A determines whether the shot would have hit player B's ship based upon its position and velocity at time t,. If a hit would have occurred, block 118 branches to block 122 and computer A displays a hit of player B's ship. Alternatively, if the shot would not have hit player B's ship based upon its position and velocity at time t„ block 128 branches to block 132 and a miss is displayed. The shot may be adjusted on player A's display to make a hit or miss appear reasonable. Since both computers determine whether a hit would have occurred based upon the same time, position, velocity data, the computers obtain identical results and both display either a hit or a miss.
Although the sending players' computer, computer A in die above example, does not implement the control signal, for example a fire command, until after the expected delay has elapsed, the computer does not stop die game during this period. Thus, the sending player perceives continuous game action except that there is a delay between die time die sending player inputs a control action and the time die results of that action appear on the sending player's display screen. If die expected delay is relatively small, the delay between the time that the sending player inputs the command to the computer and the time die computer implements the command on die display screen will not be perceived by die sending player.
Another strategy for synchronizing the timing of the hit or miss on the computers is to decrease die speed of die fired object on player A's display relative to the speed of die fired object on player B's display. Alternatively, the trajectory of the fired object on player A's display may be modified to increase the amount of time required to hit or miss the fired object. In eidier case, die speed or trajectory should be adjusted such mat die total traversal time on player A's computer equals the traversal time on player B's computer plus the network delay.
As will be appreciated by one of ordinary skill in die art, the delayed implementation method is not limited to die determination of whedier a ship has been hit by a fire command. The delayed implementation mediod may be employed to correct for a network delay in any interactive network program where the effect of user input is time dependent.
Pseudo-Interactive Games For extremely long delays, or collision zones far in excess of the scale of the virtual vehicles, other, more drastic measures must be taken in order to insure apparently responsive game play. Certain games may be played by eliminating interactivity, but providing a sense of interactivity where a central computer controls game play.
For example, delays of over several minutes would render traditional Bingo unplayable. According to one aspect of the present invention, the central computer stores all of the information required to determine a winner. For example, for Bingo, the central computer stores information concerning each players' card. The computer checks each card after it generates a new bingo slot to determine if a player has won. If so, the computer sends a message to iat die winning player or pre-al locates back channel in an unresponsive network system d at does not provide immediate messaging bandwidd to insure d at the winning player can announce her victory. Except in the case of more than one potential winning player, die computer never waits for input from die players' terminals, which greatly minimizes problems caused by network delays.
When diere is more tiian one potential winning player, the winner is determined based upon response time. The potential winning players are notified diat they have potentially won. This notification usually will not occur simultaneously since the delays from die central computer to the players' terminals are distinct. The potential winning players respond and the central computer receives die responses of the potential winning players. From the time die central computer sent out the notification that a player has potentially won, the central computer receives the responses after the delay from die central computer to a potential winning player in addition to die player's response time and in addition to die delay from die potential winning player to die central computer. Thus, to calculate the response time, die central computer subtracts the known delays to and from a player's terminal from the total time from transmission of the notification to the receipt of a players' response. The player with die shortest response time is then deemed the actual winner.
This mediod is especially useful for diose networks with very long back channel delays (from die players to d e central computer) but relatively small forward delays.
While the invention has been described in conjunction widi d e preferred embodiment, it is evident that numerous alternatives, modifications, variations and uses will be apparent to diose skilled in die art in light of the foregoing description. For example, the present invention may be implemented over an interactive television system where a television screen comprises the display screen for the interactive program. Many other adaptations of die present invention are possible.

Claims

Claims:
1. A method for minimizing die distortion in interactive programs over a computer network caused by transmission delays over the network, the interactive program involving input from at least two computers diat communicate widi one anodier over the network, die method including die steps of: transmitting command data from a first computer to a second computer; adjusting a program parameter on the second computer to compensate for an estimated transmission delay; and implementing die command on the second computer.
2. The method of claim 1 wherein the estimated transmission delay is die transmission delay between die first computer and the second computer.
3. The method of claim 1 wherein the estimated transmission delay is a multiple of die transmission delay between the first computer and die second computer.
4. The method of claim 1 wherein the program comprises a game in which a first game object may interact with a second game object widiin a collision zone.
5. The method of claim 4 wherein the step of adjusting a program parameter on die second computer further includes the step of altering die collision zone.
6. The mediod of claim 5 wherein the first game object comprises a target object and die second game object comprises a fired object capable of hitting die target object.
7. The method of claim 6 wherein die target objects may move.
8. The method of claim 7 wherein the step of altering die collision zone further includes the step of expanding the area around a target object within which die second computer will register a hit of the target object.
9. The method of claim 8 wherein the expanded area around die target object is a circle, the radius of the circle defined by the product of die estimated transmission delay and die speed of the target object.
10. The method of claim 9 further including the step of transmitting to die first computer from die second computer data including information whether the second computer registered a hit.
11. The method of claim 9 further including die step expanding d e collision zone around die target object within which die first computer will register a hit of the target object.
12. The method of claim 11 wherein the collision zone is expanded around die target object on the first and second computers based upon die target object's position at the same time.
13. The method of claim 9 wherein die fired object is modified on d e second computer.
14. The method of claim 13 wherein die fired object is modified in the form of an "electron cloud."
15. The method of claim 8 wherein die expanded area around die target object is an ellipse.
16. The mediod of claim 1 wherein die step of adjusting a program parameter on the second computer includes adjusting a program parameter mat is a function of time based upon a multiple of die estimated transmission delay and the derivative of the program parameter widi respect to time.
17. A method for minimizing the distortion in interactive programs over a computer network caused by transmission delays over the network, the interactive program involving input from at least two computers that communicate widi one another over die network, die mediod including die steps of: transmitting command data from a first computer to a second computer at a time to; receiving the command data on the second computer at a time t,; on the second computer, receiving response data at a time t,; on die second computer, determining the result of die response data and the command data; transmitting the determined result to the first computer; and implementing die determined result on the first computer and the second computer.
18. The mediod of claim 17 wherein die program is a game, die command data is position data of a game object and die response data is position data of a fired object.
19. The method of claim 18 wherein the step of determining the result of the response data and die command data further includes die step of determining whether the fired object will collide widi die target object based upon die trajectory of die target object.
20. The method of claim 19 further including die step of adjusting die trajectory of the fired object to collide widi a current position of the target object on the first computer.
21. A method for minimizing die distortion in interactive programs over a computer network caused by transmission delays over the network, the interactive program involving input from at least two computers that communicate widi one another over the network, the mediod including die steps of: receiving program control information on a first computer; transmitting the program control information from the first computer to a second computer; continuing at least one aspect of the program on die first computer before the second computer receives the program control information transmitted from the first computer; delaying implementation of die program control information on the first computer; and implementing the program control information on the first computer after a predetermined period.
22. The method of claim 21 wherein die program comprises a game in which a first game object may interact with a second game object widiin a collision zone and die program control information comprises game control information.
23. The method of claim 22 wherein the game control information comprises the shot of a fired object.
24. The mediod of claim 23 wherein the step of continuing at least one aspect of the program on the first computer includes implementing sound and animation of the shot on die first computer.
25. The method of claim 24 wherein die step of implementing d e program control information on the second computer after a predetermined period includes die step of initiating die traversal of the fired object.
26. The method of claim 23 further including the steps of: on die first computer, determining whedier die fired object collides wid the target object based upon die target object's position at a first time; and on die second computer, determining whether die fired object collides widi die target object based upon die target object's position at a second time.
27. The mediod of claim 26 wherein die first time is equal to the second time.
28. The method of claim 26 wherein the first time and die second time are before d e time die program control information is received on die first computer.
29. A method for determining a winning player in a multi-player game played over a computer network, die computer network including a central computer and a plurality of terminals in communication widi the central computer wherein there is a delay for signals diat are communicated between die central computer and die terminals, die mediod including die steps of: sending game data from the central computer to die plurality of terminals; predetermining a winning player; and sending a message from the central computer to die terminal of the winning player after the game is complete.
30. The method of claim 29 wherein the game is bingo.
31. A method for determining rank of responses from users in a multi-user communication system, the system having a central computer and a plurality of terminals in communication with the central computer wherein there is an output delay for signals that are communicated from the central computer and the plurality of terminals and an input delay for signals d at are communicated from the plurality of terminals to the central computer, the mediod including the steps of: sending a first signal to at least two of die plurality of terminals; receiving responses from at least two of the plurality of terminals; for each of at least two received responses, determining a rank for the received response by: determining a total time defined by die time d e first signal was sent and die time die received response was received; determining a delay time defined by die addition of die output delay to die terminal sending die response and d e input delay from the terminal sending die response; determining a response time by subtracting the delay time from the total time; and ranking die response according to the response time.
32. An apparatus for minimizing the distortion in interactive programs over a computer network caused by transmission delays over the network, including: a first computer; a second computer including means for adjusting a program parameter to compensate for an estimated transmission delay; and a computer network for transmitting between the first computer and die second computer.
33. The apparatus of claim 32 wherein the estimated transmission delay is die transmission delay between die first computer and the second computer.
34. The apparatus of claim 32 wherein the estimated transmission delay is a multiple of die transmission delay between the first computer and die second computer.
35. The apparatus of claim 32 wherein the first and second computers include means for implementing a program diat comprises a game in which a first game object may interact with a second game object within a collision zone.
36. The apparatus of claim 35 wherein the means for adjusting a program parameter on the second computer further includes means for of altering the collision zone.
37. The apparatus of claim 36 wherein the first game object comprises a target object and die second game object comprises a fired object capable of hitting the target object.
38. The apparatus of claim 37 wherein the target objects may move.
39. The apparatus of claim 38 wherein the means for altering the collision zone further includes means for expanding the area around a target object within which die second computer will register a hit of die target object.
40. The apparatus of claim 39 wherein die means for expanding die area around a target object include means for generating a circle, the radius of die circle defined by die product of die estimated transmission delay and die speed of die target object.
41. The apparatus of claim 39 wherein the first computer includes means for expanding die collision zone around die target object within which the first computer will register a hit of the target object.
42. The apparatus of claim 41 wherein the means for expanding die collision zone on die first and second computers further include means for expanding die collision zone around the target object on the first and second computers based upon die target object's position at the same time.
43. The apparatus of claim 39 wherein the second computer further includes means for modifying die fired object.
44. The apparatus of claim 43 wherein the means for modifying die fired object further include means for modifying die fired object in die form of an "electron cloud."
45. The apparatus of claim 39 wherein the means for expanding die area around die target object further include means for expanding the area in the form of an ellipse.
46. The apparatus of claim 32 wherein the means for adjusting a program parameter on the second computer includes means for adjusting a parameter that is a function of time based upon a multiple of the estimated transmission delay and die derivative of die parameter widi respect to time.
47. An apparatus for minimizing the distortion in interactive programs over a computer network caused by transmission delays over the network, including: a first computer including: means for sending command data; means for implementing results determined by a different computer; a second computer including: means for receiving command data sent by die first computer; means for receiving response data input by a user; means for determining die result of the response data and die command data; means for sending die determined result to the first computer; means for implementing the determined result; and a computer network for transmitting data between die first computer and die second computer.
48. The apparatus of claim 47 wherein die program is a game, die command data is position data of a game object and die response data is position data of a fired object.
49. The apparatus of claim 48 wherein die means for determining die result of die response data and die command data further includes means for determining whether the fired object will collide widi die target object based upon the trajectory of die target object.
50. The apparatus of claim 49 wherein the first computer further includes means for adjusting the trajectory of the fired object to collide widi a current position of the target object on die first computer.
51. An apparatus for minimizing the distortion in interactive programs over a computer network caused by transmission delays over the network, including: a first computer; a second computer including: means for receiving program control information; means for sending the program control information to the first computer; means for continuing at least one aspect of the program on the first computer before the first computer receives the program control information; means for delaying implementation of the program control information; and means for implementing the program control information after a predetermined period; and a computer network for transmitting data between the first computer and die second computer.
52. The apparatus of claim 51 wherein the program comprises a game in which a first game object may interact with a second game object widiin a collision zone and die program control information comprises game control information.
53. The apparatus of claim 52 wherein the game control information comprises the shot of a fired object.
54. The apparatus of claim 53 wherein die means for continuing at least one aspect of the program includes means for implementing sound and animation of die shot.
55. The apparatus of claim 53 wherein the means for implementing the program control information after a predetermined period further includes means for initiating die traversal of the fired object.
56. The apparatus of claim 53 wherein: the first computer further includes means for determining whether the fired object collides widi die target object based upon the target object's position at a first time; and the second computer further includes means for determining whether the fired object collides widi die target object based upon the target object's position at a second time.
57. The apparatus of claim 56 wherein the first time is equal to the second time.
PCT/US1996/002348 1995-02-24 1996-02-23 Method and apparatus for minimizing the impact of network delays WO1996025989A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU49290/96A AU4929096A (en) 1995-02-24 1996-02-23 Method and apparatus for minimizing the impact of network dlays

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US39413695A 1995-02-24 1995-02-24
US08/394,136 1995-02-24

Publications (2)

Publication Number Publication Date
WO1996025989A2 true WO1996025989A2 (en) 1996-08-29
WO1996025989A3 WO1996025989A3 (en) 1996-09-26

Family

ID=23557706

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1996/002348 WO1996025989A2 (en) 1995-02-24 1996-02-23 Method and apparatus for minimizing the impact of network delays

Country Status (2)

Country Link
AU (1) AU4929096A (en)
WO (1) WO1996025989A2 (en)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998014898A2 (en) * 1996-10-01 1998-04-09 Philips Electronics N.V. Latency effect in multi-player video game reduced by surrogate agent
WO1998014897A3 (en) * 1996-10-01 1998-06-18 Philips Electronics Nv Video game with local updates mitigates latency effects in wide area network
WO1998019746A3 (en) * 1996-11-06 1998-08-20 Tectrix Fitness Equipment Inc Interactive exercise apparatus
US5890995A (en) * 1993-02-02 1999-04-06 Tectrix Fitness Equipment, Inc. Interactive exercise apparatus
EP0920891A1 (en) * 1997-12-02 1999-06-09 Two Way TV Limited Method and apparatus for input of data
WO1999032990A2 (en) * 1997-12-22 1999-07-01 Koninklijke Philips Electronics N.V. Diversion agent uses cinematographic techniques to mask latency
EP1086731A2 (en) * 1999-09-14 2001-03-28 Sega Enterprises, Ltd. Data processing method
WO2002037790A2 (en) * 2000-11-01 2002-05-10 Eyeball Networks Inc. Method and apparatus for improving interactive animation over a computer network
WO2002078808A1 (en) * 2001-03-29 2002-10-10 Koninklijke Philips Electronics N.V. Compensating for network latency in a multi-player game
EP1270052A2 (en) * 2001-06-28 2003-01-02 Konami Computer Entertainment Osaka, Inc. Network game progress control system, network game progress control method, network game progress control program, and recording medium storing network game progress control program
EP1457239A1 (en) * 2003-03-14 2004-09-15 Mitsumi Electric Co., Ltd. Communication game system, communication system, communication apparatus, and communication state indication method
EP1287863A3 (en) * 2001-08-10 2005-06-29 Konami Corporation Gun shooting game device, method of controlling computer program
EP1599012A1 (en) * 2000-01-12 2005-11-23 There, Inc. Method and apparatus for distributed simulation
JP2007037973A (en) * 2005-06-29 2007-02-15 Konami Digital Entertainment:Kk Network game system, controlling method for network game system, game device, controlling method for game device, and program
JP2007037970A (en) * 2005-06-29 2007-02-15 Konami Digital Entertainment:Kk Network game system, controlling method for network game system, game device, controlling method for game device, and program
EP1961468A1 (en) * 2005-12-16 2008-08-27 Konami Digital Entertainment Co., Ltd. Game machine, game machine control method, information storage medium, and network game system
WO2008104221A1 (en) * 2007-02-27 2008-09-04 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for use in multiplayer server-based gaming
FR2922463A1 (en) * 2007-10-19 2009-04-24 F4 Sa Electronic gaming e.g. vehicle race, system, has game computer emitting call towards server, and remote computer executing proper action while delay of network propagation is not exceeding value of given time
JP2017148476A (en) * 2016-08-30 2017-08-31 株式会社 ディー・エヌ・エー Communication game system, host terminal, game program, and method
CN110266611A (en) * 2019-07-08 2019-09-20 腾讯科技(深圳)有限公司 Processing method, the device and system of buffered data

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992022967A1 (en) * 1991-06-12 1992-12-23 Hewlett Packard Company Method and apparatus for testing a packet-based network
EP0661859A2 (en) * 1993-10-19 1995-07-05 Telia Ab Testing of a digital communication system
WO1995022233A1 (en) * 1994-02-11 1995-08-17 Newbridge Networks Corporation Method of dynamically compensating for variable transmission delays in packet networks
WO1995026596A1 (en) * 1994-03-29 1995-10-05 Scientific-Atlanta, Inc. Method for preserving the original timebase of a program in a multiplexed communications system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1992022967A1 (en) * 1991-06-12 1992-12-23 Hewlett Packard Company Method and apparatus for testing a packet-based network
EP0661859A2 (en) * 1993-10-19 1995-07-05 Telia Ab Testing of a digital communication system
WO1995022233A1 (en) * 1994-02-11 1995-08-17 Newbridge Networks Corporation Method of dynamically compensating for variable transmission delays in packet networks
WO1995026596A1 (en) * 1994-03-29 1995-10-05 Scientific-Atlanta, Inc. Method for preserving the original timebase of a program in a multiplexed communications system

Cited By (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5890995A (en) * 1993-02-02 1999-04-06 Tectrix Fitness Equipment, Inc. Interactive exercise apparatus
WO1998014898A3 (en) * 1996-10-01 1998-06-18 Philips Electronics Nv Latency effect in multi-player video game reduced by surrogate agent
WO1998014897A3 (en) * 1996-10-01 1998-06-18 Philips Electronics Nv Video game with local updates mitigates latency effects in wide area network
WO1998014898A2 (en) * 1996-10-01 1998-04-09 Philips Electronics N.V. Latency effect in multi-player video game reduced by surrogate agent
WO1998019746A3 (en) * 1996-11-06 1998-08-20 Tectrix Fitness Equipment Inc Interactive exercise apparatus
US6515992B1 (en) 1997-12-02 2003-02-04 Two Way Tv Limited Method and apparatus for input of data
EP0920891A1 (en) * 1997-12-02 1999-06-09 Two Way TV Limited Method and apparatus for input of data
WO1999032990A2 (en) * 1997-12-22 1999-07-01 Koninklijke Philips Electronics N.V. Diversion agent uses cinematographic techniques to mask latency
WO1999032990A3 (en) * 1997-12-22 1999-09-02 Koninkl Philips Electronics Nv Diversion agent uses cinematographic techniques to mask latency
KR100727511B1 (en) * 1999-09-14 2007-06-14 가부시키가이샤 세가 Data processing method
EP1739920A3 (en) * 1999-09-14 2007-03-21 Sega Corporation Data processing method
EP1738811A3 (en) * 1999-09-14 2007-03-21 Sega Corporation Data processing method
EP1739920A2 (en) * 1999-09-14 2007-01-03 Sega Corporation Data processing method
EP1738811A2 (en) * 1999-09-14 2007-01-03 Sega Corporation Data processing method
EP1086731A2 (en) * 1999-09-14 2001-03-28 Sega Enterprises, Ltd. Data processing method
EP1086731A3 (en) * 1999-09-14 2003-10-29 Sega Corporation Data processing method
US7431651B2 (en) 1999-09-14 2008-10-07 Sega Enterprises, Ltd. Data processing method
EP1599012A1 (en) * 2000-01-12 2005-11-23 There, Inc. Method and apparatus for distributed simulation
WO2002037790A3 (en) * 2000-11-01 2002-06-27 Eyeball Networks Inc Method and apparatus for improving interactive animation over a computer network
WO2002037790A2 (en) * 2000-11-01 2002-05-10 Eyeball Networks Inc. Method and apparatus for improving interactive animation over a computer network
WO2002078808A1 (en) * 2001-03-29 2002-10-10 Koninklijke Philips Electronics N.V. Compensating for network latency in a multi-player game
US6884164B2 (en) 2001-06-28 2005-04-26 Konami Computer Entertainment Osaka, Inc. Network game progress control system, network game progress control method, network game progress control program, and recording medium storing network game progress control program
EP1270052A3 (en) * 2001-06-28 2003-03-26 Konami Computer Entertainment Osaka, Inc. Network game progress control system, network game progress control method, network game progress control program, and recording medium storing network game progress control program
EP1270052A2 (en) * 2001-06-28 2003-01-02 Konami Computer Entertainment Osaka, Inc. Network game progress control system, network game progress control method, network game progress control program, and recording medium storing network game progress control program
US7059962B2 (en) 2001-08-10 2006-06-13 Konami Corporation Gun shooting game device, method of controlling computer and program
EP1287863A3 (en) * 2001-08-10 2005-06-29 Konami Corporation Gun shooting game device, method of controlling computer program
EP1457239A1 (en) * 2003-03-14 2004-09-15 Mitsumi Electric Co., Ltd. Communication game system, communication system, communication apparatus, and communication state indication method
US7785203B2 (en) 2003-03-14 2010-08-31 Nintendo Co., Ltd. Communication game system, communication system, communication apparatus, and communication state indication method
EP1905494A4 (en) * 2005-06-29 2009-07-01 Konami Digital Entertainment Network game system, network game system control method, game machine, game machine control method, and information storage medium
EP1905494A1 (en) * 2005-06-29 2008-04-02 Konami Digital Entertainment Co., Ltd. Network game system, network game system control method, game machine, game machine control method, and information storage medium
JP2007037970A (en) * 2005-06-29 2007-02-15 Konami Digital Entertainment:Kk Network game system, controlling method for network game system, game device, controlling method for game device, and program
JP2007037973A (en) * 2005-06-29 2007-02-15 Konami Digital Entertainment:Kk Network game system, controlling method for network game system, game device, controlling method for game device, and program
EP1961468A4 (en) * 2005-12-16 2009-09-30 Konami Digital Entertainment Game machine, game machine control method, information storage medium, and network game system
EP1961468A1 (en) * 2005-12-16 2008-08-27 Konami Digital Entertainment Co., Ltd. Game machine, game machine control method, information storage medium, and network game system
US8105167B2 (en) 2005-12-16 2012-01-31 Konami Digital Entertainment Co., Ltd. Game machine, game machine control method, information storage medium, and network game system
WO2008104221A1 (en) * 2007-02-27 2008-09-04 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for use in multiplayer server-based gaming
FR2922463A1 (en) * 2007-10-19 2009-04-24 F4 Sa Electronic gaming e.g. vehicle race, system, has game computer emitting call towards server, and remote computer executing proper action while delay of network propagation is not exceeding value of given time
WO2009087294A3 (en) * 2007-10-19 2009-09-03 F4 Online computer game system with latency management
WO2009087294A2 (en) * 2007-10-19 2009-07-16 F4 Online computer game system with latency management
JP2017148476A (en) * 2016-08-30 2017-08-31 株式会社 ディー・エヌ・エー Communication game system, host terminal, game program, and method
CN110266611A (en) * 2019-07-08 2019-09-20 腾讯科技(深圳)有限公司 Processing method, the device and system of buffered data
CN110266611B (en) * 2019-07-08 2023-06-23 腾讯科技(上海)有限公司 Method, device and system for processing buffered data

Also Published As

Publication number Publication date
AU4929096A (en) 1996-09-11
WO1996025989A3 (en) 1996-09-26

Similar Documents

Publication Publication Date Title
WO1996025989A2 (en) Method and apparatus for minimizing the impact of network delays
US7244181B2 (en) Multi-player game employing dynamic re-sequencing
US6042477A (en) Method of and system for minimizing the effects of time latency in multiplayer electronic games played on interconnected computers
US11826662B2 (en) Ballistic trajectory display in a virtual environment
KR100572134B1 (en) Diversion agent uses projection techniques to mask latency
Bernier Latency compensating methods in client/server in-game protocol design and optimization
WO2019020006A1 (en) Method and apparatus for synchronously displaying game content, and storage medium
Zander et al. Achieving fairness in multiplayer network games through automated latency balancing
US20060287113A1 (en) Lazer tag advanced
US11033813B2 (en) Latency erasure
Lee et al. Enhancing the experience of multiplayer shooter games via advanced lag compensation
US7119817B1 (en) Image generating system and program
WO1998014886A1 (en) Synchronization of events occurring over a network in the presence of latency
Harvey et al. Validity of virtual reality training for motor skill development in a serious game
Yeung et al. Dynamic Bayesian approach for detecting cheats in multi-player online games
JP4084948B2 (en) Pachinko game distribution system, management server and virtual pachinko terminal
WO1998014882A1 (en) Synchronization of interactions between objects distributed over a network in the presence of latency
US20170266553A1 (en) Program and system
JP3811656B2 (en) Pachinko game distribution system, virtual pachinko terminal, pachinko game program and management server
Noser et al. Generic 3D ball animation model for networked interactive VR environments
US11305192B2 (en) Computer systems and associated methods for controlling a user interface responsive to user engagement
KR20080046950A (en) On-line game method and system reflecting the transparency of user character
CN116650956A (en) Game resource acquisition method, game resource acquisition device, game resource acquisition medium, game resource acquisition device and game resource acquisition program product
Tokey et al. Improving Player Experience and Fairness Using adaptive Time-Delay on First-Person Shooters
Meder Netcode Improvements for a Mobile First-Person Shooter Game

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AL AM AT AU AZ BB BG BR BY CA CH CN CZ DE DK EE ES FI GB GE HU IS JP KE KG KP KR KZ LK LR LS LT LU LV MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK TJ TM TR TT UA UG UZ VN

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): KE LS MW SD SZ UG AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: CA

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642