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
(See the final games created by the class.)
Mark Claypool. Dragonfly - Program a Game Engine from Scratch, Version 3, Interactive Media and Game Development, Worcester Polytechnic Institute, 2014.
The text will be available for purchase the first day of class.
There are other books on game engines that may be of interest to the aspiring developer. A few of those are:
Engine Architecture, by Jason Gregory, 2009, AK Peters, ISBN:
(An academic-flavored text with a good level of detail on many game engine components. Specifics from working engines are provided throughout.)
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.)
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:
How to Program, Harvey Dietel and Paul Dietel, Prentice Hall, ISBN
(Perhaps the "goto" book for answering 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++.)
First Design Patterns, by Elisabeth Freeman, Eric Freeman, Bert
Bates, Kahty Sierra, Elisabeth Robson, O'Reilley Media, 2004, ISBN
(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.)
Here is the list of topics covered in this course (not necessarily in order of appearance):
Individual recorded grades can be obtained at the Intruct Assist website:
Use WPI username and password for access. Then, navigate to:
Grades → Display Grades
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, Promo)||25%|
|Quizzes||All, minus lowest 2 grades||15%|
The bulk of the course grade involves programming. This can be done on either Windows, Mac OS or Linux but must be in C++. C++ will not be taught (although various C++ 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 is 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, are to 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, must be done in groups of exactly two (no more, no less).
There will be a quiz in almost every class. These are designed to test important class concepts from the previous class(es), especially concepts that may not have been adequately demonstrated in the programming projects. Quizes are closed book and closed notes, unless otherwise indicated. All quizes have an equal weight, except for the two lowest scores which are dropped.
Final grades reflect the extent to which understanding of the material has been demonstrated and the assigned projects completed. The base level grade is a "B" which indicates that the basic objectives on projects and exams have been met. A grade of an "A" indicates significant achievement beyond the basic objectives. A grade of a "C" indicates not all basic objectives were met, but work was satisfactory for credit. No incomplete grades are assigned unless there exist exceptional, extenuating circumstances. Similarly, no project dealine extensions or makeup exams are given unless there are 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 are accepted up to two days late, with the weekend (Saturday plus Sunday) counting as one day. Any late project is penalized 10% of the total assignment value per day, unless otherwise noted.
This course is intended for serious students. Participants are 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 to be done individually, unless otherwise specified. Students are encouraged to discuss their program designs, bugs and and issues with each other, but are expected to do the actual programming 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, is 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 earns an NR and is reported. When in doubt about possible "grey" areas, ask!
Slides from class lectures and other in-class materials are available shortly before or after they are presented.
All slides are available at the Intruct Assist website:
Use WPI username and password for access. Then, navigate to:
Lessons → View Slides
Projects and due dates are placed here as they are defined.
Project 2: Dragonfly (Sep 13, Sep 20, Sep 28)
This section has any samples discussed in class, exam preparation material, tutorials or any other demonstration-type class materials.
Dragonfly Web page
DQA - Dragonfly question-answer forum