440 likes | 460 Views
Explore the various aspects of latency in gaming, including its impact on consistency, synchronization algorithms, predictive client movement, extrapolation, interpolation, playout delays, and perception filters.
E N D
CarA CarB CarA CarB CarA A=1, V=0 CarB A=1, V=0 CarA A=1, V=1 CarB A=1, V=1 CarA A=1, V=2 CarB A=1, V=2 CarA A=1, V=3 CarB A=1, V=3 ClientA ClientB
Door is Closed & Unlocked Door is Closed & Unlocked Door is Closed & Locked Door is Open & Unlocked Lock Door Open Door Can’t apply open state Door is Open & Locked ClientA ClientB
Shooter (PlayerA) Target (PlayerB) ClientA Server ClientB
Shooter (PlayerA) Target (PlayerB) ClientA Server ClientB
Quake ClientA Quake Server Quake ClientB Mouse Keyboard Mouse Keyboard Read Input Receive Input Read Input Rendering Simulate Rendering Draw Lists, Game State Draw Lists, Game State
Doom ClientA Doom ClientC Read Input Read Input Receive Input Receive Input Doom ClientB Simulate Simulate Read Input Rendering Rendering Receive Input Simulate Rendering
ClientA ClientB Message Queue ClientC MessageI Client=B Time=11.1 MessageI+1 Client=C Time=13.5 MessageI+2 Client=B Time=13.6 MessageI+3 Client=C Time=18.0 MessageI+4 Client=D Time=18.2 ClientD
EventExplode ClientA EventFire ClientB ClientC EventExplode is delay at ClientC until after EventFire
EventExplode (1,1,0) EventExplode (2,1,0) ClientA EventFire (0,1,0) ClientB EventFire (2,1,1) ClientC
Lock Door t0 Open Door t1 Close Door Add Zombies t2 Remove Zombies t3 t4 ClientC ClientA ClientB
P0 P1 P2 P0 P1 P1 P2 P2 P3 P3 P1 P2 P3 P4 Move? P0to P1 Move P0to P1 Move? P1to P2 Move P1to P2 Move? P2to P3 Move P2to P3 Move? P3 to P4 ClientA Server
P1 P1 P1 Q1 Q1 P2 P0 P0 P1 P2 P2 P3 P3 Move? P0to P1 Move? P1to P2 Move P0to P1 Move? P2to P3 FailMove P1to Q1 FailMove P1to Q1 Q1 ClientA Server
t2 t1 to a) Player model sending three updates b) Ghost model path without blending c) Old ghost model and new ghost model at t1
d) Blending between the old ghost and new ghost over several frames e) Ghost model path with blending
Old ghost t0 New ghost t0+t t0 New ghost t0 a) Old ghost position at t0, new ghost position at t0 and new ghost position at t0+t b) Dotted line shows the planned path to reach the target position and direction
Update at t0 Update at t1 a) Player model showing the timings of dead-reckoning updates at the peaks of a periodic motion
Player model update at t0 Extrapolation of player model Convergence path Correct player model path Ghost model location at t0 • b) On arrival of an update message, the ghost model plans to converge the current ghost model position with an extrapolation of the received position
c) On the next update message the ghost model is out of phase with the player model. T
t1 to Player model update at t1 Path of ghost model after update at t0 a) Player model showing the object avoiding the wall b) After the update at t1 the ghost model cannot converge
t1 P1 t2 P2 t3 P3 P4 t4 Sender Receiver
t0 t1 t2 t3 P0 P1 P2 P3 Interpolate P0→P1 Playout delay
t1 P1 t2 P2 t3 P3 P4 t4 t5 t6 Sender Receiver
t0 t1 t2 t3 Sender P0 P1 P2 P3 ClientA ClientB Interpolate P0→P1 Maximum latency Playout delay
t0 t1 t2 t3 t4 EA1 ClientA EB1 EB2 ClientB EC1 EC2 ClientC Interval (Tα) Playout delay (T)
ClientB ClientA
Tnetwork Added delay 1.0 x position
1.0 x position 2.0 3.0 4.0 1.0 Time
1.0 x position of ball as seen from ClientB x position x position of ball as seen from ClientA 2.0 3.0 4.0 1.0 Time a) Both clients’ view of the ball x position using temporal corrections
1.0 x position of ball as seen from ClientA x position x position of ball as seen from ClientB 2.0 3.0 4.0 1.0 Time b) Both clients’ view of the ball x position without using temporal corrections