Multiplayer Network Games


Multiplayer Network Games

CS/IMGD 411x

C-term 2026

This course provides students with an in-depth exploration of multiplayer networked games, covering both game system architectures and programming. Students will develop an understanding of multiplayer networked games from the Internet Protocol level to game programming (Application) level. Topics may include technologies to synchronize state in a distributed game world system (e.g., serialization), mitigate lag (e.g., latency compensation) and improve scalability (e.g., interest management). Students will complete a series of small- to medium-scale programming projects reinforcing lecture concepts and readings.

Recommended background: CS 2301 Systems Programming for Non-Majors or CS 2303 Systems Programming Concepts

Suggested background: CS 3013 Operating Systems, CS 3516 Computer Networks, and IMGD 3000 Technical Game Development I

Course Goals

Course Objectives

Misc

Daily agenda

Groupwork


info | grading | health | slides | projects | timeline | samples


Course Information

People

Professor: Mark Claypool
email: claypool at cs.wpi.edu
office hours: (TBA)
place: (TBA)

Teaching Assistant: Matthew Kalarickal
email: mkalarickal at wpi.edu
office hours: Mo 2-4pm, Th 2-4pm
place: FL A21

Student Assistant: Max Allen
email: mallen at wpi.edu
office hours: Tu 3-5pm, Fr 3-5pm
place: FL A21

Time and Place

Days: Mo, Th
Time: 4:00-5:50pm
Place: SL 104

Discord

Asynchronous class discussions as well as remote TA office hours will be held via the CS/IMGD 411x Discord server. See the Canvas Page for the Discord invite.


Books

There is no required text for the course. Excerpts from relevant books will be provided as necessary.

Some books that might be helpful in general, however, are:

Joshua Glazer and Sanjay Madhav. Multiplayer Game Programming, Addison-Wesley, ISBN-10: 0134034309, 2016.
(Notes: Would be a good main textbook, but not available for classroom orders)

Anthony Steed and Manuel Oliveira. Networked Graphics: Building Networked Games and Virtual Environments, Morgan Kaufmann, ISBN-10: 0123744237, 2009.
(Notes: A good reference text book)

Mark Claypool. Dragonfly - Program a Game Engine from Scratch, Version 9, Interactive Media and Game Development, Worcester Polytechnic Institute, 2014.
(Notes: Engine development from scratch, used in the projects.)

Harvey Dietel and Paul Dietel. C++ How to Program, 10th edition, Pearson, ISBN 978-0134448237.
(Notes: Perhaps the “go to” book for answering questions about how C++ works. Dense and full of code and examples, but clear explanations given for most anything you want to look up regarding C++.)


Topics

List of topics covered in this course (not necessarily in order of appearance):

Introduction and Internet Protocols

Internet Data Transmission

Object Replication and Reliability

Multiplayer Network Game Architectures

Game Logic for Multiplayer Games

Latency and Jitter

Miscellaneous


info | grading | health | slides | projects | timeline | samples


Grading Policy

Individual recorded grades can be obtained via the Canvas Website under “Grades”:

Canvas Grades

Use WPI username and password for access.

Breakdown

Final grades will be computed as follows:

Weight Assignment
20% Project 1 - Serialization
20% Project 2 - Yak
20% Project 3 - Fruit Ninjas
20% Project 4 - Latency Compensation
10% Quizzes - All, minus lowest 2 grades
8% Participation
2% Playtesting

Projects - The bulk of the course grade involves programming projects. This can be done on either Windows, Mac OS or Linux but must be in C++. C++ will not be taught (although various C++ techniques will be re-introduced), and it is assumed students have had significant exposure to C++ before starting this course. The grading policy for each project is provided at the time the project is assigned. In general, for each project there is a basic objective for the majority of the assignment points. There may be an extended objective for demonstrating additional work and understanding. Projects, including all data and source code, as appropriate, are to be turned in online as specified in the writeups.

All projects are done individually, without partners. The slight exception is the fourth project has an evaluation component and that component only needs to be done in groups of 2 or 3.

Quizzes - There will be a quiz at the start of almost every class. These are designed to test important class concepts from the previous class(es), especially concepts that may not have been adequately demonstrated in the programming projects. Quizzes are closed book and closed notes, unless otherwise indicated. All quizzes have an equal weight, except for the two lowest scores which are dropped.

Participation - Showing up to class is worth much of a class participation grade, but so is being engaged in the class material through asking and answering questions. Try to attend as many classes as possible. The classes are intended to be useful and even missing one may hurt your learning. However, stuff does happen - life doesn’t stop for class. If you miss a class or two, you don’t need to let me know but do plan on catching up with online material and notes from a fellow classmate. If you miss a lot of classes, come talk to me and we’ll see what we can do to help you catch up.

Playtesting - 2% of your final grade is based on participation in playtesting. You volunteer for playtesting sessions arranged by developers (typically IMGD majors) outside of class. For each session you participate in, provide your name to the developers and they give you a certification document (e.g., an email, photo or document). Upload the certification to the Canvas assignment. Note, playtesting sessions are not graded - you get credit just for participating. Note, you must participate in two 30-minute sessions for full credit. All playtesting needs to be done before the end of the term.

Final grades reflect the extent to which understanding of the material has been demonstrated and the assigned projects completed. The base level grade is a “B” which indicates that the basic objectives on projects and exams have been met. A grade of an “A” indicates significant achievement beyond the basic objectives. A grade of a “C” indicates not all basic objectives were met, but work was satisfactory for credit. While it is in everyone’s interest to have grades assigned in a timeline manner (i.e., by the final class grading deadline), if there are exceptional, extenuating circumstances that I don’t know about that affect your overall grade, please come talk to me - there are options for an incomplete we could try.


Late Policy

Quizzes are done, and due, in class. Since quizzes are about the most recent class material and are keyed to our progression through class, they are rather ineffective if done later so there are no makeups. But I know that you may miss some quizzes (life happens) or may take the quiz but have missed the previous class or may just have a really bad day. So at the end of the term, the two lowest quiz scores are dropped – this includes missed quizzes.

All project assignments are turned in online (unless otherwise noted). Projects due on Friday are due at 6:00pm. Projects due on non-Friday’s are due at 11:59pm.

For projects that miss the deadline, there are two types of lateness.

In general, I won’t provide extensions for project due dates. There are a couple of reasons for this. First, the rules laid out above are generous, with no penalty for missing a deadline slight, only a modest penalty (10% per day) for missing a deadline significantly and even a cushion for groups of days (e.g., the weekend). Second, we keep track of penalties applied for assignments being late. If a late penalty for a project is the difference between a letter grade at the end of the course (e.g., an NR would have been a C or a B would have been an A), then that late penalty is discounted. But most importantly, the penalties are designed to help keep up with the material by way of a real deadline and consequence. If you are not keeping up with the coding material, I guarantee you won’t be learning enough, regardless of the outcome of the projects - i.e., you’ll learn less even if your projects work perfectly, so that’s reflected in the penalty.


Class Conduct

All work is to be done individually, unless otherwise specified. Working on actual coding yourself - design, implementation and debugging - is how you will really learn it. It can be too easy to have key concepts and skills escape you when always working in teams. That said, there is value in talking with others about the class material, either code or concepts. Group working sessions - where people work on the projects solo but in the same place - can be very effective. So, students are encouraged to discuss program designs, bugs and issues with each other. This includes even looking at each other’s code. Showing someone your code and asking/helping debug each other’s code by pair programming can be helpful. So, what is too much collaboration? As a general guideline, code that has been emailed or copied and pasted from one student too another cannot be done. The same with downloading code or copying code from the Internet. This includes using AI-generated code (e.g., ChatGPT, Gemini, Claude). If you are copying and pasting AI-generated code, you’ve crossed the line. (And, equally important, doing so likely means you have not done the coding yourself, cheating yourself of the learning you need.) So, don’t copy and paste in this class. Ever. All the lines of code you submit should have been typed in by you.

Any breach of professional ethics as evidenced, for example, by copying exams or code for the projects, downloading code from the Internet, cooperating more than just by discussions in study groups, may result in an NR and needs to be reported to the Dean of Students. Please refer to the official WPI statements on Academic Integrity for details. When in doubt about possible “grey” areas, please ask!

Bullying or harrassing classmates or CS/IMGD 411x staff in person or online will not be tolerated. Nor will homophobic, racist, sexist, or otherwise offensive topics. If you have questions about the above policy, or wish to report/discuss what you have seen/read online, please ask!


info | grading | health | slides | projects | timeline | samples


Personal Health

Students may experience stressors that can impact both their academic experience and their personal well-being. These may include academic pressure and challenges associated with relationships, mental health, alcohol or other drugs, identities, finances, and more. If you are experiencing concerns, seeking help is a courageous thing to do for yourself and those who care about you. If the source of your stressors is academic, especially if that source is related to CS/IMGD 411x, please contact me so that we can find solutions together. I care and I’d like to help. Please, just ask.

If you have a friend or classmate that you think might need help, please reach out to them and talk, perhaps encourage them to seek help. Even just simply reaching out can be a boon to someone in need.

Help - it’s OK to need it.  It’s important to ask for it.  Here’s some other ways to find it: Be Well Together


info | grading | health |slides | projects | timeline | samples


Slides

Slides from class lectures and other in-class materials are available shortly before or after they are presented. All slides are available on the Canvas Website, under “Files”:

Canvas Files


info | grading | health |slides | projects | timeline | samples


Projects

Projects and due dates are placed here as they are defined.


info | grading | health |slides | projects | timeline | samples


This section has any samples discussed in class, exam preparation material, tutorials or any other demonstration-type class materials.

Online books:

Good links for bloggers:


info | grading | health | slides | projects | timeline | samples


[Return to the WPI Homepage] [Return to Mark Claypool's Homepage]


Mark Claypool (claypool at cs.wpi.edu)