Schedule:Main

From NetRace

Table of contents

Major Milestones

  • (For each project - Need to turn in a one pager that describes what work you did on the game)
  • (For Final - Need a short writeup for the final.)
  • Project 1 - build a game, non-networked
  • Project 2 – network the game using ideas from lamport paper. Ordering of events across the network. 2-3 computers and test with high loads, peer to peer
  • Project 3 – moving objects across the network, dead reckoning, measure load with and without dead reckoning, peer to peer
  • Project 4 – real-time collision detection, collisions across the network, peer to peer
  • Project 5 – redesign the game to use a client server, measure difference between peer to peer and client-server
  • Project 6 – add lobby server authentication, choose game server to play on
  • Project 7 – generalize the packet protocol and document it
  • Project 8 – download an open source game engine, learn it and play with the apps
  • Project 9 – reimplement the game in the open source game engine.port over the auth server
  • Project 10 – add voice and text chat to server
  • Project 11 – continue
  • Project 12 – add a stand alone client that can read and write network packets to drive a character/object in the game
  • Project 13 – continue
  • Project 14 – continue
  • Final project Demo & writeup & student/teacher critique

Class Syllabus


Networked Games – Design & Implementation CSCI 599 (3 Units)

Objective This course covers the design and implementation of networked games, from the origins of the supporting technologies in distributed systems, visual simulations, networked virtual environments, and shipped games. The objective of the course is to prepare the student for research and development of technologies for supporting large-scale, networked games.

Concepts Topics include the challenges of networked games, the origins of networked games technology, communications architectures, managing dynamic shared state, systems design, real-time collision detection and response, computational resource management, resource management for scalability and performance, matching players to games, open source game engines, commercial game engines, and mobile networking.

Prerequisite CS-480 or CS-580 or equivalent introduction to computer graphics. It is assumed that the student is a strong programmer.

Lecture 3hrs/week

Lab 1hrs/week

Textbook Sandeep Singhal and Michael Zyda Networked Virtual Environments - Design and Implementation, ACM Press Books, SIGGRAPH Series, 23 July 1999, ISBN 0-201-32557-8, 315 pages. We are revising this text to be Networked Games – Design and Implementation and will hand out chapters as they become available.

Grading The lectures in this course follow the Singhal/Zyda text in order. Each student is expected to develop code for a networked game. That project runs continuously all semester, the code testing the student’s knowledge of the in-class lectures and reading material. The student’s networked game will be presented in class during the last week.

Academic Integrity The use of unauthorized material, communication with fellow students during an examination, attempting to benefit from the work of another student, and similar behavior that defeats the intent of an examination or other class work is unacceptable to the University. It is often difficult to distinguish between a culpable act and inadvertent behavior resulting from the nervous tension accompanying examinations. When the instructor determines a violation has occurred, appropriate action, as determined by the instructor, will be taken. All students should read, understand and abide by the University Student Conduct Code http://www.usc.edu/dept/publications/SCAMPUS/governance/gov03.html

Students with Disabilities Any student requesting academic accommodations based on a disability is required to register with Disability Services and Programs (DSP) each semester. A letter of verification for approved accommodations can be obtained from DSP. Please be sure the letter is delivered to me (or to your TA) as early in the semester as possible. DSP is located in STU 301 and is open 8:30 a.m. - 5:00 p.m., Monday through Friday. The phone number for DSP is (213) 740-0776.


Networked Games – Design & Implementation CSCI 5XX (3 Units)


Course Outline

(8/22) - Week 1 – The Challenges of Networked Games

What Is a Networked Game? The Entertainment Value of Networked Games Authoring Networked Games Graphics Engines and Displays Control and Communication Devices Processing Systems Data Network Challenges in NetGame Design and Development Network Bandwidth Heterogeneity Distributed Interaction Real-Time System Design and Resource Management Failure Management Scalability Deployment and Configuration Conclusion References Reading Assignment: Chapter 1

Project 1:

Begin building a networked game that you will use all semester – think fps game. Start by building a simple 3D world that an interactive player can move around in, a world where a mouse button press fires a missile at 3D objects in that world. We are going to network your game world in subsequent projects.

(8/30) - Week 2 – The Origins of Networked Game Technology

Department of Defense Networked Virtual Environments SIMNET Distributed Interactive Simulation High-Level Architecture Networked Games and Demos SGI Flight and Dogfight Doom Other Games Academic Networked Virtual Environments & Games NPSNET PARADISE DIVE BrickNet MR Toolkit Peer Package Others Distributed Computing Distributed Transactions, Event Ordering & Database Consistency Lamport – Time, clocks and the ordering of events in a distributed system The NRC Report Modeling & Simulation – Linking Entertainment & Defense Its influence on the future of networked games & simulations Networked Game Patents Conclusion Reading Assignment: chapter 2, some patents, Lamport paper

(9/6) - Week 3 – A Networking Primer

Fundamentals of Data Transfer Network Latency Network Bandwidth Network Reliability Network Protocol The BSD Sockets Architecture Sockets and Ports The Internet Protocol

IPv4
IPv6

Introducing the Internet Protocols for NetGames Transmission Control Protocol User Datagram Protocol IP Broadcasting Using UDP IP Multicasting Selecting a Net-VE Protocol Using TCP/IP Using UDP/IP Using IP Broadcasting Using IP Multicasting Traversing Network Obstacles NATs and Firewalls Defined UPnP Teredo Other Techniques Conclusion Reading Assignment: chapter 3

Project 2:

For this project, we are going to network your game using ideas from the Lamport paper. The Lamport paper describes the fundamental technology underlying networked sports games. Sports games cannot lose events and events received must be executed in the same order on all machines. The purpose of this project is for you to understand how to implement the time-stamped, event ordered algorithms required for such networked games. Demonstrate your system with two and three machines. Test your system with high network loads, maybe by generating large numbers of packets in a tight loop.


(9/13) - Week 4 – Communication Architectures

Two Players on a LAN Multiplayer Client-Server Systems Multiplayer Client-Server, with Multiple-Server Architectures Peer-to-Peer Architectures Event-Based Systems Direct-Connection Mesh-Based Structures Conclusion References This chapter focuses on how we might really decide to build networked games. Reading assignment: chapter 4

(9/20) - Week 5 – Chapter Five - Managing Dynamic Shared State

The Consistency-Throughput Tradeoff Proof of the Tradeoff Design Implications of the Tradeoff

Maintaining Shared State Inside Centralized Repositories 
A File Repository 
A Repository in Server Memory 
Virtual Repositories 
Advantages and Drawbacks to Centralized Repositories 
Reducing Coupling through Frequent State Regeneration 
Explicit Entity Ownership 
Systems Using Frequent State Regeneration 
Reducing the Broadcast Scope
Advantages and Drawbacks of Frequent State Regeneration
Dead Reckoning of Shared State 
Prediction and Convergence
Prediction Using Derivative Polynomials 
Object-Specialized Prediction 
Convergence Algorithms 
Addressing Consistency-Throughput through Non-   regular Transmissions 
Advantages and Limitations of Dead Reckoning 

Time Stamped, Event Ordered Games Logical & physical clocks Synchronizing events in sports games

Conclusion 

Reading Assignment: chapter 5

Project 3:

add moving objects into your networked game, objects that can be dead reckoned. Use dead reckoning to minimize packets onto the network. Measure your system’s network load both with and without dead reckoning. Make sure your system has the ability to dead reckon 3D moving objects AND the ability to completely reliably send time ordered packets for events that MUST be seen and acted upon.

(9/27) - Week 6 – Systems Design

One Thread, Multiple Threads With One Thread . . . With Multiple Threads . . . Important Subsystems Real-Time Rendering: Polygon Culling and Level-of-Detail Processing Real-Time Collision Detection and Response Computational Resource Management Conclusion Reading Assignment: chapter 6, UNC Graphics Group web site for latest real-time collision software. Project 4: Install real-time collision detection into your world. Communicate collisions to the network. Use collision detection to keep your objects driving on the ground and to keep them on stairs in your 3D buildings. Use collision detection to determine if a weapon has collided and destroyed a 3D object. Demonstrate with two and three machines.

(10/4) - Week 7 – Chapter Seven - Resource Management for Scalability and Performance

An Information-Centric View of Resources Optimizing the Communications Protocol Packet Compression Packet Aggregation Controlling the Visibility of Data Area-of-Interest Filtering Subscriptions Multicasting Hybrid Multicast Aggregation Taking Advantage of Perceptual Limitations Exploiting Level-of-Detail Perception Exploiting Temporal Perception Enhancing the System Architecture Server Clusters Peer-Server Systems Lessons from the DoD HLA Conclusion ===Project 5:=== so far, our networked game works on a local area network and all communication is between game clients. We now need to think about scaling up. Produce a redesign of your networked game such that your game clients interact with each other through a game server, a game server that can be anywhere on the Internet. Measure the difference in performance between your client-only game and your client-server game.

(10/11) - Week 8 – Chapter Eight – Matching Players to Games

The Discovery Problem LAN-Based Discovery Game Broadcast Internet-Based Discovery Lobby Servers, Directories, and Registration Rooms Distributed Game and Node Discovery Conclusion Reading Assignment: Project 6: now that you have your game in client-server form, redesign your game such that it has a lobby server authentication capability, an AuthServer. Design your AuthServer system such that you can choose a game server from it to which your client can connect.

Project 7:

Generalize your protocol and document it so that others can learn to read/write your network packets.

(10/18) - Week 9 – Chapter Nine – Open Source Game Development

Open Source Game Engines Delta3D Panda Croquet Ogre Others Web-Based Game Development X3D XMSF Other ===Project 8:=== choose an open source game engine and download that engine and development suite. Learn how to develop with that engine and tool suite. Try modifying the provided demo apps that use the open source engine. When you are comfortable with that game engine, you are ready for the next project.


(10/25) - Week 10 – Commercial Game Engines

Commercial versus Open Source Game Engines Commercial Game Engines & Their Network Architectures & Their Advantages Quake/Doom Architecture Unreal Architecture Half-Life Architecture DirectPlay and Xbox Sony SCE-RT Others Purchasing Game Components on the Open Market Conclusion Reading assignment: chapter 10

Project 9:

Reimplement your networked game using the chosen open source engine. Enhance your game using available art assets and resources that work with the engine. Make sure your AuthServer, and client server networking work with the game engine. It is ok to utilize any provided networking that comes with the game engine as long as it is capable of matching your prior implementation.

(11/1) - Week 11 – The Future of Networked Games

Authoring issues in networked games The PC and game console merger Future developments in game engines The eventual web & game engine merger Mobile games Research Frontiers Reading Assignment: chapter 11

Project 10:

add voice chat and text chat into your game system. The people you chat with are those playing on the server you select at the AuthServer level.

(11/8) - Week 12 – Advanced Topics

- Highlights from recent papers on networked games.

===Project 11:=== continue to enhance your networked game system.

(11/15) - Week 13 – Advanced Topics

- Highlights from recent papers on networked games.

===Project 12:=== Design a stand-alone client that can read/write your network protocol. Demonstrate that your stand-alone client can generate packets to drive a character in your networked game world.

(11/22) - Week 14 – Advanced Topics

- Highlights from recent papers on networked games.

===Project 13:=== continue to enhance your networked game system.


(11/29) - Week 15 – Advanced Topics

- Highlights from recent papers on networked games.

Project 14:

continue to enhance your networked game.

(12/6) - Week 16 - Final Presentations

Final Project Demo & Writeup - Student critique - Instructor feedback

Grading

Each project (projects 1 – 14) is worth 5% of the class grade. The grading of each project will be on whether the project fulfills the requirements for that project. The grading will be either “fulfills the goals” or “does not fulfill the goals”. The student will turn in a one pager describing their work completing each project accompanied by a live in-class demo. The Final Project Demo & Writeup is 30% of the class grade. The student will demonstrate their final networked game and provide a short write-up on it. The final source code and write-up will be provided to the instructor on CD-ROM.