This course teaches technical Computer Science aspects of game development, with the focus of the course on low-level programming of computer games. Topics include 2D and 3D game engines, simulation-type games, analog and digital controllers and other forms of tertiary input. Students will implement games or parts of games, including exploration of graphics, sound, and music as it affects game implementation.
Recommended background: CS 2303.
There is no assigned text book for this course. If reading material is assigned, it will be made available either by copies, online or via the reserve section in the library. However, while not assigned, reading is a great way to learn more outside of class, or re-inforce topics you are using in class.
There are numerous books on game engines that may be of interest to the aspiring developer. A few of those listed here are:
Game Engine Architecture, by Jason Gregory, 2009, AK Peters, ISBN:
1-5688-1413-5.
(An academic-flavored text with a good level of detail on many game
engine components. Specifics from working engines are provided
throughout.)
Game
Engine Design and Implementation, by Alan Thorn, 2010, Jones &
Bartlett Publishers, ISBN: 0-7637-8451-6.
(This book has been used in previous incarnations of this course.
It has some useful reference material on game engines.)
Game
Programming in C++: Start to Finish, by Erik Yuzwa, 2006, Charles
River Media, ISBN: 1-5845-0432-3.
(A good book, in principal, for developing a game engine from
scratch. However, much of the implementation and code is glossed over
and difficult to follow, even if the full listing is provided on
CDROM.)
You should own a really good book (or two) on C++ programming:
Head First Design Patterns, by Elisabeth Freeman, Eric Freeman, Bert Bates, Kahty Sierra, Elisabeth Robson, O'Reilley Media, 2004, ISBN 0-5960-0712-4. (Much of game engine development, and game development for that matter, involves identification and use of software patterns. This book shows you how to analyze, design, and write serious object-oriented software.)
C++ How to Program, Harvey Dietel and Paul Dietel, Prentice Hall, ISBN 0-1318-5757-6. (Perhaps the "goto" book for questions about how C++ works. Dense and full of code and examples, but clear explanations given for most anything you want to look up regarding C++.)
Here is the list of topics covered in this course (not necessarily in order of appearance):
Final grades will be computed as follows:
Project 1 | Catch a Dragonfly | 10% |
Project 2 | Dragonfly (Egg, Naiad, Dragonfly) | 50% |
Project 3 | Dragonfly Spawn (Plan, Alpha, Final) | 25% |
Exams | Mid-term and Final | 15% |
The bulk of the course grade will involve programming. This can be done on either Windows, MacOS or Linux but must be in C++. C++ will not be taught (although various techniques will be re-introduced), and it is assumed students have had signficant exposure to C++ before starting this course. The grading policy for each project will be provided at the time of the assignment. In general, for each project there is a basic objective for the majority of the assignment points. There may be an extended objective for demonstrating additional work and understanding. Projects, including all data and source code, as appropriate, will be turned in online as specified in the writeups.
The first two projects (and any sub-projects) are to be done individually, without partners. The third project, developing a game using your own engine, should be done in groups of exactly two (no more, no less).
There will be two in-class exams. These are designed to test important class concepts that may not have been adequately demonstrated in the programming projects. The first exam is roughly mid-way through the term, and the second is on the last day of the term. The second exam is non-cumulative. There is a remote possibility of a pop quiz for which no advance notice will be provided. Exams will be closed book and closed notes, unless otherwise indicated. The majority of each exam will cover concepts presented in class with a few questions testing additional understanding and insight.
Final grades will reflect the extent to which you have demonstrated understanding of the material and completed the assigned projects. The base level grade will be a "B" which indicates that the basic objectives on projects and exams have been met. A grade of an "A" will indicate significant achievement beyond the basic objectives. A grade of a "C" will indicate not all basic objectives were met, but work was satisfactory for credit. No incomplete grades will be assigned unless there exist exceptional, extenuating circumstances. Similarly, no project dealine extensions or makeup exams will be given unless there exist exceptional, extenuating circumstances.
Exams are done, and due, in class. Projects are due online at 11:59pm on the due date, unless otherwise noted. Late projects will be accepted up to two days late, with the weekend (Saturday plus Sunday) counting as one day. Any late project will be penalized 10% of total assignment value per day, unless otherwise noted.
This course is intended for serious students. Participants will be expected to adhere to all rules of professional behavior. It is to be emphasized that knowledge of material and professional behavior are tied together; failure in one of them negates any excellence in the other.
All work is expected to be done individually, unless otherwise specified. As such, students are encouraged to discuss their work with each other, but are also expected to do the work by themselves.
Any breach of professional ethics as evidenced, for example, by copying exams or code for the projects, downloading code from the Internet, cooperating more than just by discussions in study groups, misusing computer resources, or using outside help of any kind, will be considered adequate reason for an NR in the course and a report to the Dean of Students. Refer to the official WPI statements on Academic Honesty for details. Remember this warning - any breach of ethics will earn you an NR. When in doubt, ask!
Slides from class lectures and other in-class materials will be available shortly before or after they are presented.
Admin | pptx | |
Introduction | pptx | |
Dragonfly | pptx | |
Iterative Development | pptx | |
Scene Management | pptx | |
Artificial Intelligence | pptx | Performance Tuning | pptx |
Graphics | pptx |
Alternate class time lectures:
Projects and due dates will be placed here as they are defined.
Project 1: Catch a Dragonfly (Aug 30) (slides) (grading guide)
Project 3: Dragonfly Spawn (Sep 28, Oct 4, Oct 9, Oct 11) (slides)
This section has any samples discussed in class, exam preparation material, tutorials or any other demonstration-type class materials.
Topics for exams: