Assignment 3: Marks and Comments

Most of you did well in your Assignment 3 (I hope you had fun as well). There are a few teams who either did not compute ACF, or computed it incorrectly. A few teams simply posted screenshots from Wiresharks without detail analysis (e.g., payload size).

The games investigated includes WoW, Quake II, Second Life, Cabal Online, Conquer Online, Warcraft III, Alien Arena 2008, Ragnarok Online, and Atlantica Online. Findings for FPS and MMORPG are generally consistent with those discussed in class. Second Life on the other hand exhibits much different pattern (higher bandwidth) due to huge amount of 3D data transmission.

In any case, here are your grades for Assignment 3.

060B    B+
099U    A-
113A    A+
145N    B+
155L    A+
160W    A+
173E    A-
182N    A
335Y    A+
435L    B+
672H    A
706A    A-
730X    A
761X    B+
780A    A
781N    A
784Y    A
790Y    A-
791L    A-
800U    -
810X    B+
927L    B+
946R    A

Quiz 3: Marks and Comments

For Question 1, many of you get the fact that Method B requires one less forwarding. Only few realize that this does not always translate to lower latency (since communication between servers can be faster).

Method A requires multiple connections from a client, and the servers might need to handle many more clients.

The number of hand-offs in Method B may be higher, especially if an AoI neighbor moves across zones. (In Method A, on the moving node needs to switch server, but in Method B, everyone who subscribes to the moving node may have to switch server). On the other hand, when a player moves from Zone X to Zone Y, it is likely to have already connected to the server for Zone Y (when its AoI overlaps with Zone Y), thus reducing the hand off overhead.

In Method A, the server can combine updates from multiple players in its zones.

There are several answers that talks about single point of failure in Method B. A player connects to multiple servers, thus if one server fails, the game can still continue. This is incorrect, since a player connects to multiple servers to receive updates from other players. Its state is still stored in the server that manages the zone it is in. If its own zone server goes down, the player still cannot continue playing.

A few students mentioned reduce communication between servers as an advantage of Method B. But this comes at the expense of more communications between servers and clients. Since connections between servers are less likely to be bottleneck (they can be provisioned by the game companies), I do not see this as an advantage.

For Question 2(a), it is good to remove delay ack at the server, since the client send messages at 400ms interval, the server would have waited 200ms for a subsequent packet that never arrives if delay ack is used. On the other hand, since server sends packets at 50 ms interval, the client could have waited for another 50 ms and send a delay ack. This would reduce the ACK overhead by half.

In 2(b), many argue that fast retransmission will be triggered when packets from server to client are lost because the packet interval is small — although I accepted this as an answer, you should also argue that the interval from client to server is large and therefore the dup ACKs that the server received are pure ACK (not piggybacked with data).

There are several answers in which it is clear that the student do not understand how TCP works. If you have doubts, please refresh your CS2105/CS3103 and consult me if you have further questions.

I thought this is the easiest quiz of all three, but the average is lowest (6.4/10). Here are your marks for all three quizzes. As usual, please check for consistency. You may pick up your quiz from me anytime next week.

     Q1   Q2   Q3
060B 8    6    4
099U 9    10   4
113A 8    2    8
145N 6    10   -
155L 9    9    6
160W 9    9.5  5
173E 5    10   7
182N 10   9    9
335Y 8    9.5  7
435L 6    1    3
672H 5.5  6.5  6
706A 7    5    2
730X 9    9.5  10
761X 10   5    7
780A 8    10   9
781N 9    7    8
784Y 9    10   9
790Y 10   6    3
791L 7    6    7
800U 10   6    4
810X 6    4    5
927L 10   9    7
946R 8    4    10

Assignment 2: Marks and Comments

I have finished grading your Assignment 2.  You should have received a separate email with your grade and detail comments.

This assignment turned to be hard to grade — when I test run your program there are many instances when what I observed is not consistent with what you claimed.  To make sure that the issue is not cause by different Java version or platform, I ended up debugging your program to figure out what is wrong.   

There are two common issues I found in your code.  The first problem lies in synchronization of different threads and clients.  When coding, you assume that the code runs in certain order.  This may work on your machine.  But when run in another machine, your code will be executed in different order, causing all kinds of problem (inconsistent state, unable to connect to other peers, etc.).   The second problem happens when a socket is closed.  Many of you expects IOException to be thrown.  However, on my machine, instead of throwing an exception, readLine returns null when a socket is closed.  In several cases, your assignment did not handle quit properly until I copied the code within “catch (IOException e) {..}” to “if (msg == null) { … }”.

Here’s the break down of the grades for Assignment 2.

A+  1
A   5
A-  7
A-- 2
B+  4
B   2
B-  2

Your grades for Assignment 1 and 2 are as follows. Please check for consistency.

      A1     A2
060B  B+     B
099U  B+     A-
113A  A-     A--
145N  B+     B
155L  A-     A--
160W  A-     A
173E  B-     A-
182N  B      A-
335Y  A--    A-
435L  B+     B+
672H  A-     B+
706A  B-     B-
730X  B+     A
761X  B+     A
780A  A+     A
781N  A-     B+
784Y  A+     A
790Y  A--    A-
791L  A--    A-
800U  C      A-
810X  B+     B+
927L  B+     B-
946R  A      A+

Lecture C: Power-aware Gaming

10 November, 1000

The last lecture of CS4344 this semester will consider a problem unique to mobile gaming.  We will review two techniques to reduce power consumption of games on mobile devices, through suspending wireless interface card and scaling CPU frequency.

We will have Quiz 3 this week.


  • [Shi03] describes a scheme for power-aware dead reckoning. Focus on the problem when reading the paper, rather than the solution.
  • [Gu06] describes the problem and setup on DVFS for games. The detail solutions to estimating the number of cycles are described in other papers.
    Shi, W., Perumalla, K., and Fujimoto, R.. Power-aware State Dissemination in Mobile Distributed Virtual Environments. In Proceedings of the Seventeenth Workshop on Parallel and Distributed Simulation, 2003. [ACM DL | Google Scholar ]
    Gu, Y., Chakraborty, S., and Ooi, W. T. Games are up for DVFS. In Proceedings of the 43rd Annual Conference on Design Automation, 2006 [ Google Scholar ].


    Download slides as PDF.

Lecture B: Transport Protocols

3 November 2008, 1000.


In this lecture, we will look at transport protocols for games. We will discuss the pros and cons of using TCP and UDP for games, some tweaks to TCP that makes it more suitable for games, and briefly discuss SCTP, a relatively new transport protocol, that seems to fit the requirements of games nicely.



Download as PDF.

Quiz 3 Postponed

Please note that the date of Quiz 3 has been postpone by a week, to 10 November (last lecture). The deadline for Assignment 3 is Friday, 14 November.

I previously forgot to update the calendar — thanks to RAN for reminding me about this.

Enjoy your long weekend and Happy Deepavali/Diwali to all.

Assignment 1: Marks and Comments

I have gone through all your Assignment 1 submissions and assigned the grades. You should have received a seperate email with a brief comments on your assignment.

Here are some general comments about your Pong implementation.


  • Surprisingly only four teams implemented local perception filter (LPF).
  • Most did not handle visual disruptions and inconsistency properly. (I) In some implementations, the rendered ball can hit the paddle but the game still ends. (II) Some implementations cause the ball can disappear behind the paddle and reappear again. (III) The ball teleports in some cases. I view (I) to be more serious than (III), which is more serious than (II).
  • Only a few teams implemented local lag. While immediate update of peddle on screen is nice, users can tolerate a small (~50ms) delay. Introducing local lag “absorb” some lag between the client and the server.
  • Some of your reports are poorly organized and did not address the questions I asked in the assignment. In fact, only two teams answers the questions explicitly.


FYI, here’s the break down of the grades.

A+  1
A   1
A-  3
A-- 2
B+  5
B   1
B-  2
C   1

Lecture A: Player Dynamics in Online Games

Lecture time: 20 October 2008, 1000


In this lecture, we will look at the dynamics of players in World of Warcraft and Second Life, and relates it to the design of networked games.


  • [Zhuang07] and [Liang08] are the main references of this lecture.
  • [Liang08] was mainly done by three HYP students at NUS.
  • A similar study on WoW was done in [Pittman07]
X. Zhuang, A. Bharambe, J. Pang, S. Seshan, “Player Dynamics in Massively Multiplayer Online Games”, CMU-CS-07-158, [From CMU Website]
H. Liang, M. Neo, I. Tay, M. Motani, W. T. Ooi, “Avatars Mobility in Networked Virtual Environment: Measurements, Analysis, and Implications”, [ArXiv]
D. Pittman, C. GauthierDickey, “A Measurement Study of Virtual Populations in Massively Multiplayer Online Games”, [From Denver University Website]


Download as PDF (Warning: ~ 8MB)

Assignment 3: Game Traffic Measurement and Analysis


In this assignment, you are to collect packet traces of a real-time, interactive, multi-player game, and study the characteristic of the networked traffic.

Due Date

14 November, 2008 (Friday), 2359


  • A 10-page report (11-pt, single spacing) to be submitted into IVLE workbin


You should work as a pair. You need not stick to the same partner as the first assignment. You may work solo if you wish to.

Grading Criteria

  • Measurements (30%) — correctly collected and characterized the traces as required below.
  • Analysis (40%) — amount of analysis done and correctness of analysis.
  • Report (30%) — well structured and well written.

Your Task

Your task is to collect and analyze packet traces of a real-time, interactive, multi-player game of your choice. You should collect the traces at the client-side using tcpdump or equivalent tools (e.g., wireshark). The traces should be at least 10 minutes long, and involves different types of game activity (e.g., running, walking, shooting, interacting with other players).

From the traces that you collected, analyze the packets and characterize the traffic in terms of the following:

  1. What are the average in-coming and out-going throughput values?
  2. What are the average in-coming and out-going packet load?
  3. What are the transport protocols used?
  4. How many connections do you see?
  5. What are the distributions of the payload size for in-coming and out-going packets? What is the average?
  6. Any patterns observed when the game activity changes?
  7. Any periodic patterns observed in the traffic (plot ACF to show this)?


Note that you should not just produce the graphs. You should explain (either with evidence or make intelligent guesses) why the graphs looks the way they are. For instance, taking the example from Chen’s paper, simply noting that there is a periodic increase in packet load every 200 ms is not sufficient. You should add that this is likely due to the server’s periodic broadcast of states from server to clients.

The packets captured may include multiple type of data (such as audio chat). You may exclude those from your analysis (if possible). Focus only on game traffic pertaining to events and state updates.


The following tools might be useful for this assignment:

  • tcpdump / windump
  • wireshark
  • tcptrace



You can pick any FPS, RTS, or MMORPG game you like, as long as it involves multi-players. If you do not own/play games, try to partner up with someone who does. There are many free multi-player games available. Alternatively, you can try to do collect the traces using Second Life (which is free).


You can use any tools you like. I prefer Gnuplot, but you may use others such as MatLab, Microsoft Excel. You may need to write simple programs to analyze the data (e.g. to calcluate the ACF). In which case, you may use any programming language you like to program. You can use existing tools as well to analyze the data (e.g., Excel has a correlation function CORREL()).


As usual, start early, and have fun!