Multiplayer Network Games


Multiplayer Network Games

CS/IMGD 411x

A-term 2024

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: Tu 10-11am We 10:30-11:30am Fr 11am-12
place: Tu, Fr in FL B24, We Zoom

Teaching Assistant: Xiaokun Xu
email: xxu11 at wpi.edu
office hours: Tu 11am-12 Th 12-1pm Fr 12-1pm
place: FL 316

Student Assistant: Nathaniel Itty
email: nitty at wpi.edu
office hours: Mo 3-4pm Tu 2-3pm We 12-1pm Th 3-4pm
place: FL A21

Time and Place

Days: Mo, Th
Time: 1:00-2:50pm
Place: KH 116

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.

“Slightly late” is a project turned in after the deadline, but the lateness doesn’t really matter to anyone. Basically, there is no penalty for a project that is slightly late. Any project turned in up to 6 hours after the deadline is marked as late by Canvas, but we’ll categorize that as only “slightly late” and there will be no penalty.

“Significantly late” is a project turned in after the deadline, and where the lateness matters. How does it matter? Some examples include that it might have encouraged you to sleep less (i.e., pull an all-nighter), miss class to work on the project rather than participate in new material, or impacted your partner’s progress (for the team project). Worse, a significantly late project probably affects keeping up with the class material and the next project since they build upon each other. So, anything turned in after the “slightly late” deadline is categorized as “significantly late” and is docked 10% of the total assignment value per day (past the original deadline). But here, the weekend (Friday, Saturday plus Sunday) counts as one day and Tuesday and Wednesday counts as one day since the “next” class skips a few days (2 and 1, respectively).

In general, if you really need an extension on a project, for whatever reason, come talk to me - we’ll see if we can figure out something that doesn’t impact your subsequent projects in the class. I do have to consider fairness to other students - but fair doesn’t mean everyone does everything at exactly the same time.


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. 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. This same guideline applies to downloading code or copying code from the Internet, including Chat GPT. (Doing so likely means you have not done the coding yourself, depriving you of the learning you need.) So, with the exception of examples that the class provides, 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)