General Information

Course: CMSC 23800 / MPCS 53800
Game Construction
Instructor: John Reppy
Ry 256
Lecture: TR 15:00-16:20
Ry 276


Computer games are one of the most exciting applications of computer technology. Computer games are also large software systems that embody cutting-edge graphics as well as techniques from scientific simulation, networking, AI, and databases. This course is an introduction to the issues of computer game construction with a focus on the problems of designing and implementing a game engine. Students will work in teams to design and create their own game using existing libraries for graphics, physics simulation, etc. While students are not expected to be experts in everyone of the technical areas that underly computer games (e.g., graphics, scientific computing, networking, etc.), expertise in one or two of these areas is required, as is a strong background in programming.

Course work

There are two pieces of course work expected for this class.

  1. Group project:

    Each student is expected to actively participate and contribute to his/her group's project. There will be regular group presentations in class over the course of the term (approximately one every two weeks), as well as a final presentation/demo.

  2. Individual report

    Each student is expected to write and present an individual report on some aspect of Computer Game design or construction. A one-to-two page project proposal is due in class on Tuesday, April 29, and the final report and class presentation will be due Thursday May 25 (9th week). Some ideas for possible topics can be found here.

The project

Text books

There are no required texts for the course, but you may find the following books interesting/useful:
Title: Introduction to Game Development (2nd Ed)
Editor: Steve Rabin
Publisher: Charles River Media, 2009
Title: Chris Crawford on Game Design
Author: Chris Crawford
Publisher: New Riders Publishing, 2003


Here are links to papers and other written material that you may find interesting/useful for the project.

Coding resources

You are encouraged to use existing software libraries where possible. Such code might take the form of lower-level libraries that are directed toward a specific task, or a larger, higher-level, library that has most of the components of a rendering or physics engine. We will not be using complete game engines, such as Unity or the href="">Unreal Development Kit, in this class.

Low-level libraries

In addition, there are a number of higher-level libraries that you may find useful for implementing components of your game:

If you decide to target just Mac OS, then you may find the following libraries provided by Apple to be useful:

Web sites

There are many game-programming websites on the internet; here are a few that I have found useful.

Last revised: April 18, 2017.