In this lecture, we will try to achieve two things.

First, I will show you a simple two-player Pong game and walk you through the key parts of the code.  This game will serve as the basis for your Assignment 2 and help to explain some concepts in this lecture.

Second, we will see how lags (or latency, or delay) on the Internet lead us to a solution that causes inconsistency and unfairness, and how we can introduce lags ourselves to mitigate these two issues.  We will end with a discussion on a set of experiments conducted to study the acceptable lags in two popular games, Unreal Tournament and Warcraft III.

Although not necessary, those of you with a laptop can bring it to class to follow along the Pong game.  Watching demos is useful, but there is nothing compared to playing with the demos yourself in class :)

 

References:

  • Permissible client-server architecture is used in Unreal Tournament, and is described by [McCo03]. The article also mentions the responsiveness issue and describes how a client can use short-circuiting for movement command to improve responsiveness in Unreal Tournament.
  • Local lag is introduced by [Diot99] in the form of bucket synchronization and in the context of peer-to-peer architecture (we will cover this later in class). The term local lag and the idea to adapt the lag is introduced by [Mauv04].
  • Short circuiting with immediate feedback is mentioned in [Smed06], Section 9.1.1.
  • Time delay is mentioned in [Armi06], Section 6.3.1.
  • See [Armi06], Section 7.1 for a summary of user studies and results.
  • Papers on the user studies can be found on the WPI project web sites for Unreal Tournament and Warcraft III. Screenshot of Unreal Tournament is taken from the same site.
  • The “dead man that shoots” example was mentioned by [Mauv00] in the context of fully distributed games.
[McCo03]
A. McCoy, D. Delaney, and T. Ward, “Game-State Fidelity Across Distributed Interactive Games”, Crossroads vol. 9, no. 4 (Jun. 2003), 4-9 [ACM Crossroads]
[Diot99]
C. Diot and L. Gautier, “A distributed architecture for multiplayer interactive applications on the internet,” IEEE Networks magazine, vol. 13, no. 4, July/August 1999. [Google Scholar]
[Mauv04]
M. Mauve, J. Vogel, V. Hilt, and W. Eelsberg, “Local-lag and Timewarp: Providing Consistency for Replicated Continuous Applications,” IEEE Transactions on Multimedia, vol. 6, no. 1, pp. 45-57, 2004. [Google Scholar]
[Smed06]
J. Smed and H Hakonen, “Algorithms and Networking for Computer Games”, Wiley, July 2006. [NUS LINC]
[Armi06]
G. Armitage, M. Claypool and P. Branch, “Networking and Online Games: Understanding and Engineering Multiplayer Internet Games,” Wiley, June 2006. [NUS LINC]
[Mauv00]
M. Mauve, “How to Keep a Dead Man from Shooting.” In Proc of the 7th intl Workshop on interactive Distributed Multimedia Systems and Telecommunication Services, 2000. [Google Scholar]

Slides: Download

Code for Pong is on GitHub.  Fork it.

Print Friendly