COMP 3821: Game Programming I (Console Programming)

Spring 2009

Course Info

InstructorProf. Chris GauthierDickey
OfficeJohn Greene Hall 117
Office HoursTBD
Time & LocationT,H 12:00 - 1:50, Location: JGH 318 (the Windows Game Lab)
PrerequisiteCOMP 2370 (Intro to Algorithms and Data Structures)

TA Info

TA:Jeff Keene
Office:Computer Science Annex

Course Wiki

I've set up the Course Wiki for the class so that we can post information about the class, C# and XNA programming, and the game project.

Note that you can't get to the wiki off-site, unless you have the VPN up (zeus isn't accessible to the outside world). You will need to grab the VPN software at the UTS site.

Course Description

Understanding the fundamentals of game design and programming is essential for building your foundation as a future game designer or programmer. In this course, you will do just that, using Microsoft's XNA (and C#) to allow you to rapidly prototype your game ideas without the complexity of lower-level languages. One of the biggest advantages of using XNA is that we can upload the games you make to the XBox 360, allowing everyone to experience your games in all the splendor of this highly advanced console.

While this course does require you to learn how to program, part of the emphasis in this course is coming up with game ideas and understanding game design. As such, your grade will not only be determined by your game project, but also on game design exercises and a final exam to see if you've understood the concepts covered in this course.

Note that all projects in the class require that you use the Microsoft Visual Studio toolset, including C# and XNA. By far, most game companies use Visual Studio, so you might as well learn it early! In addition, C# lets you have some of the programming power of C/C++ and high-level programming abstractions without the hassle of memory management.


Game Design Exercises:30%
XNA and C# Warmups:30%

Yes, I know that this equals 120%. This gives you some flexibility in scoring on your projects and exams in case anything goes wrong.

Homeworks are due in class and no late assignments will be accepted without prior arrangement. Turn in partial work if you are not finished. If you must hand it in before class, hand it in to the front office in the department. Do not slide the work under the door as it may get lost and I'll probably drip melting snow on it!


You are required to use the following for the course:

There is no textbook for the course. I would suggest visiting the XNA Creators Club Online for reference materials on C#, XNA, and Game Studio 3.0.

Note that students can download these products for free from the Microsoft DreamSpark program. In particular, XNA Game Studio 3.0 will come with a 12-month membership that will allow you to upload and exchange games on the XBox 360.

You may not use any other products or technologies for the course, so don't ask! I'm not interested in you developing a mod for engine XYZ. We're specifically learning game development topics in this course and the projects will be centered around those concepts. In addition, we'll be uploading our games to XBox 360s. If you have an Apple desktop/laptop you can dual-boot into Windows and run XNA. Virtualization is untested with XNA on other platforms (ie, Linux or Mac), so don't assume it will just work. The main issue is that XNA uses DirectX 9 and 10 to an extent that the graphics card emulators can't handle.

Honor Code

For this course, all work must be done individually unless specified (ie, problem sets can be worked on in groups of 2). You may discuss problems and assignments with other students, but you cannot use another student's solution or code in any way. All sources must be properly acknowldged and document. Failure to do so constitutes a breach of the Honor Code.

Sanctions imposed from a breach of the Honor Code may include, but are not limited to, the failure of an assignment, the failure of a course, and termination from the program. I will impose a failure of the course for any such offenses in the course.