Computer Game Design and Implementation

(An example of an undergraduate course proposal which was passed by the Computer Science Department SJSU)

Catalog Description

CS 134: Computer Game Design and Implementation

In-depth coverage of the object-oriented architectures and software design patterns used for game design.  Students work with a game engine software framework to design and implement several kinds of games.  Additional topics include animation techniques, physics simulation, user controls, graphical methods, and intelligent behaviors.  Course includes a final project.  Prerequisite: CS 130 (Windows Programming) and CS 151 (Object Oriented Programming).

Prerequisite

The course is intended to demonstrate a deep application of object-oriented techniques and software design patterns, so we want the Object-Oriented Programming prerequisite.

The reason we’d want a Windows Programming prerequisite is that Microsoft Visual Studio with C++ is the standard development environment for commercial computer games.  Most of the currently available open source game frameworks are C++ in the form of the Visual Studio code as well.  The frameworks commonly use Windows graphics, often with the C++ graphics libraries OpenGL or DirectX.

Integration into our CS Program.

The course has been designed to function as a deep course in the general area of Software Engineering.

·       Depth.  In order to get a deep understanding of object-oriented design, it’s important to work with some large and intricate projects — such as computer games.  In addition, building upon an existing game engine software framework familiarizes students with modular and reusable object-oriented code.  Computer games also provide good examples of a number of important software patterns.

·       Breadth.  Computer games integrate techniques drawn from the whole spectrum of computer science: software engineering, graphics, artificial intelligence, simulation, and user interface design.  And developing a computer game involves many different levels of skills, from low-level algorithm implementation to high-level object-oriented design.

·       Excitement.  The visual and interactive nature of computer game projects can deeply engage a student’s interest.  Because it’s obvious whether or not a given game works well, the goal is satisfyingly clear-cut and challenging.

·       Career Preparation.  A completed computer game is an impressive program for students to demonstrate to prospective employers, whatever the nature of the job.  In addition, a number of students will seek jobs specifically as game developers.

Staffing

We would hope to offer either one or two sections per semester.

Demand

There is considerable student interest in Computer Game Design and Implementation.  It will be good for our university to get some reputation as a university where Computer Game Design and Implementation can be studied.

Universities offering courses in Computer Game Design and Implementation include Carnegie-Mellon, Colby College, University of Michigan at Ann Arbor, U.C. Irvine, Purdue, and the University of Massachusetts at Lowell.

This said, the notion of offering an academically sound course on computer games is a fairly new one.  Our university has an opportunity here to become a leader in an emerging field of study.

Possible Main and Supplemental Texts

Rudy Rucker, Computer Games: Design and Implementation, Pearson Educational Addison-Wesley 2002.

Gamma, Help, Johnson, Vlissides, Design Patterns, Addison-Wesley 1995.

David Bourg, Physics for Game Developers, O’Reilly 2001.

Andre LaMothe, Tricks of the Windows Game Programming Gurus, Sams, 2001.

Ian Parberry, Learn Computer Game Programming with DirectX, Wordware 2000.

David Astle, OpenGL Game Programming, Prima Tech, 2000.

Rouse, Ogden, & Rybczyk, Game Design: Theory and Practice, Wordware 2001.

Andrew Rollings, Game Architecture and Design, Coriolis, 1999.

Mark DeLoura, Game Programming Gems 1 & 2, Charles River Media 2001.

Sample Syllabus

1:  Overview of Computer Games

2:  Game Project Management

3:  UML Analysis of the Game-Engine Framework Code

4:  Object-Oriented Methods for Games

5.  Software Design Patterns for Games

5:  Animation Techniques

6:  Simulating Physics

7:  Implementing a Game Creature Class

8:  Graphical Sprites

9:  Game Worlds

10:  Game Intelligence

11:  User Controls

12 - 14:  Analysis and presentations of Sample Games and Student Projects