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
Understand the structure and design of a game engine
Understand the trade-offs between complexity, fidelity, and interactivity in game engines
Demonstrate understanding of a game engine from a game programmer's perspective by extending a simple game
Use a game engine to create a complete, original game from scratch
Use iterative design and development practices to create a playable game
Understand how software engineering techniques can be applied to creating the parts of a game engine
Gain experience and develop skills in working in a team on a software project of significant size, with a short deadline
The final games made in the class.
Professor: Mark Claypool
email: claypool@cs.wpi.edu
office hours: Mo 12-1pm Tu 10-11am Th 10-11am
place: Fuller Labs, room B24 (FLB24
)
Teaching Assistant: Dafei Lu
email: dlu2
at wpi.edu
office hours: We 4-6pm Th 12-2pm
place: Fuller Labs, room A22 (FLA22
- the Zoo lab)
Student Assistant: Aidan Buffum
email: aabuffum
at wpi.edu
office hours: Tu 4-6pm Th 4-5pm Fr 4-5pm
place: Fuller Labs, room A22 (FLA22
- the Zoo lab)
Email lists (please use appropriately):
Prof + Assistants: imgd3000-staff
at cs.wpi.edu
Class: imgd3000-all
at cs.wpi.edu
Dragonfly question-answer forum (for project-related development questions): http://alpheus.wpi.edu/dqa/
Days: Mo
, Th
Time: 2:00pm-3:50am
Place: Salisbury Labs 406 (SL406)
Mark Claypool. Dragonfly - Program a Game Engine from Scratch, Version 5, Interactive Media and Game Development, Worcester Polytechnic Institute, 2014.
(The book is freely available online in separate chapters or can be ordered online as a complete book (print or e-book) at a modest price.)
There are other books on game engines that may be of interest to the aspiring developer. A few are:
Game Engine Architecture, 2nd edition, by Jason Gregory, 2014, CRC Press, ISBN: 9-7814-6656-0017.
(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 CD.)
You should own a really good book (or two) on C++ programming:
C++ How to Program, 9th edition, Harvey Dietel and Paul Dietel, 2013, Pearson, ISBN 0-1333-7871-3.
(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++.)
Head First Design Patterns, by Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy 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.)
List of topics covered in this course (not necessarily in order of appearance):
Individual recorded grades can be obtained via the Canvas Website under "Grades":
Use WPI username and password for access.
Final grades will be computed as follows:
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 significant 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. Quizzes are closed book and closed notes, unless otherwise indicated. All quizzes 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 deadline extensions or makeup exams are given unless there are exceptional, extenuating circumstances.Quizzes 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 Integrity 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 on the Canvas Website, under "Files":
Projects and due dates are placed here as they are defined.
Project 1: Catch a Dragonfly (Aug 30) slides grading guide
Project 3: Dragonfly Spawn (Sep 27) (Oct 4) (Oct 10) (Oct 12) slides
This section has any samples discussed in class, exam preparation material, tutorials or any other demonstration-type class materials.
Video lectures on background CS material that might be helpful. Use them to learn/refresh you knowledge:
Mark Claypool (claypool
at cs.wpi.edu
)