Syllabus - CMPS 20 - Game Design Experience - Winter 2009

Last modified: 3/15/2009

Week 1: Overview of course, XNA Game Studio Express, Introduction to C#

January 7:
Course overview, overview of XNA Game Studio Express
Read: Chapter 1 (Getting Started) in XNA 3.0

January 9:
C#: Classes, methods, simple types, constants, visibility, assignment, conditionals, comments
Read: Chapter 1 (C# 3.0 and .NET 3.5), Chapter 2 (Getting Started: "Hello World"), and Chapter 3 (C# Language Fundamentals) in Programming C# 3.0

Week 2: Introduction to C# (cont'd) and Introduction to XNA Game Studio Express

January 12:
C#: Properties, arrays, looping constructs (for, foreach)
Read: Chapter 4 (Classes and Objects), and Chapter 9 (Arrays, Indexers, and Collections) from pp. 155-176 in Programming C# 3.0
Due: Project team formation

January 14:
Console I/O in C#. Rules of thumb for identifying classes, class variables, and methods in object-oriented design.
Representing a class in UML. Structure of XNA framework structure.

January 16:
Random numbers, and converting a string to int in C#.
Main game loop, sprites, textures, operations on sprites, sprite batch, sprite animation
Read: Chapter 2 (Fun with Sprites) in XNA 3.0

Week 3: XNA Introduction (cont'd), Object-Oriented Design

January 19:
No class, Martin Luther King, Jr. holiday

January 21:
Input (controller, keyboard, mouse). Bounding box collision detection.
Read: Chapter 3 (User Input and Collision Detection) in XNA 3.0
Due: Homework #1 (Hunt the Wumpus)

January 23:
Difference between procedural and object-oriented design. Code refactoring. Bad code smells.
Read: Chapter 1, in Refactoring: Improving the Design of Existing Code, Martin Fowler, 1999.
See Forum or come to class for username/password.

Week 4: Software Design Patterns

January 26:
Bad code smells. Software refactoring example.
Read: Chapter 3, in Refactoring: Improving the Design of Existing Code, Martin Fowler, 1999.
See Forum or come to class for username/password (same as first chapter above).
Due: Game concept document

January 28:
C#: inheritance, method overloading, abstract classes, interfaces
Purpose of software design patterns
Read: Chapter 5(Inheritance and Polymorphism) and Chapter 8 (Interfaces) in Programming C# 3.0

January 30:
Strategy pattern. Observer pattern. C# delegates and events
Read: Chapter 12 (Delegates and Events) from pp. 255-270 in Programming C# 3.0
Read: pages 139-148 (Strategy pattern) of C# 3.0 Design Patterns
Read: pages 210-217 (Observer Pattern) of C# 3.0 Design Patterns
See Forum or come to class for username/password. Same as for other password-protected readings..

Week 5: Software Design Patterns (cont'd)

February 2:
Decorator and Chain of Responsibility patterns
Read: pages 8-22 (Decorator pattern) and pages 164-175 (Chain of Responsibility pattern) of C# 3.0 Design Patterns
Due: Work breakdown and schedule

February 4:
Potential exam questions. Factory Method pattern. Singleton pattern
Read: pages 110-122 (Factory Method and Singleton patterns) in C# 3.0 Design Patterns

February 6:
Exam #1

Week 6: Collision Detection and Resolution

February 9:
StarUML UML editing tool. Simple physics simulation. A priori vs a posteriori collision detection. Quadtrees.
Read: Chapter 2 and Chapter 4 (partial) of Real Time Collision Detection, Christer Ericson, Morgan Kaufmann, 2005.
See also: Metanet tutorial on narrow-phase collision detection in the game N (with neat animated demos of key concepts
See also: Metanet tutorial on broad-phase collision detection in the game N (also with nice animated demos
Due: Homework #1 (Revisited)

February 11:
Quadtrees (cont'd). Collision tests
Read: Wikipedia entry on quadtrees

February 13:
Collision tests (cont'd)
Read: (optional) Direct Access Quadtree Lookup, Matt Pritchard, in Game Programming Gems 2
Due: Project technical design document

Week 7: Game Artificial Intelligence

February 16:
No class, President's Day holiday

February 18:
Path following.
Read: Chapter 6 (Basic Artificial Intelligence) in XNA 3.0

February 20:
A* algorithm and its use for path finding
Read: A* Pathfinding for Beginners, Patrick Lester

Week 8: Audio, Introduction to 3D graphics

February 23:
Playing sounds within XNA
Read: Chapter 5 (Sound Effects and Audio) in XNA 3.0
Due: Homework #2 (Quadtrees)

February 25:
Introduction to the Blender 3D modeling tool.
Read: Blender User Interface Tutorial

February 27:
Introduction to 3D graphics. Coordinate systems, camera, rotation, drawing triangles.
Due: Partially operational game prototype

Week 9: 3D Models

March 2:
Drawing a 3D model using XNA
Read: Chapter 10 (3D Models) in XNA 3.0
Due: Project progress report

March 4:
Importing a model from Blender into XNA
Read: Modeling for XNA with Blender Part I by stromdotcom

March 6:
Simple 3D Camera
Read: Chapter 11 (Creating a First-Person Camera) in XNA 3.0

Week 10: Shaders, Particle systems

March 9:
Graphics pipeline, overview of HLSL, use of shaders in XNA
Read Chapter 13 (HLSL Basics) pp. 275-294 in in XNA 3.0
Due: Homework #3 (Creating and rendering 3D model in XNA)

March 11:
Point light in HLSL. Connecting a shader to an XNA model.
Read: Chapter 13 (HLSL Basics) pp. 295-307 in in XNA 3.0

March 13:
Point light in HLSL (cont'd).
Read: Chapter 14 (Particle systems) in XNA 3.0

Week 11: Particle systems

March 16:
Final exam overview. Particle systems introduction.
Due: Final game project, by 5pm