This course focuses on the application of advanced Computer Science topics as they impact game development. Networking and distributed systems issues are addressed, including scalability and latency compensation techniques, for designing games for online multi-player environments. AI, graphics and physics techniques specific to game development are discussed. Students will implement games or parts of games that apply advanced Computer Science topics.
Recommended background: IMGD 3000
The Final Games
There is no assigned textbook for the course. For development, you will make use of the many online documents for Unreal Engine. Any other needed course materials will be made available in class.
You should own a really good book (or two) on C++ programming:
How to Program, Harvey Dietel and Paul Dietel, Prentice Hall,
2005, ISBN 0-1318-5757-6.
(Perhaps the "goto" book for answering questions about C++. 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, Kathy Sierra, Elisabeth Robson, O'Reilly Media, 2004, ISBN
(Much of game development 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 that may be covered in this course (not necessarily in order of appearance):
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.
Final grades will be computed as follows:
The bulk of the course grade involves developing game technology solo, and designing and developing a complete game as a team. Development is in Unreal Engine 4, done through a combination of "Blueprints" scripting and C++. Unreal Engine development is supported on either Windows using Visual Studio or MacOS using XCode.
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.
All projects besides the game project are to be done individually, without partners. The game project, designing and developing a complete game, must be done in groups of exactly two technical programmers from IMGD 4000 and exactly two artist from IMGD 4500. The IMGD 4000 and IMGD 4500 instructors help organize students teams the first week of class.
There are two in-class exams. These are designed to test important class concepts that may not have been adequately demonstrated in the programming projects. The mid-term exam is roughly half-way through the term, and the final exam is towards the end of the term. The final exam is non-cumulative. 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.
Exams are done, and due, in class. Projects are due online at 11:59pm on the due date, unless otherwise noted. Any late project is penalized 10% of the total assignment value per day, unless otherwise noted, with the weekend (Saturday plus Sunday) counting as one day.
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.
For individual assignments, 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. Taking someone else's work, even if just a part of a program, and passing it off as one's own is the definition of plagiarism and is a serious offense. Do not copy and paste or email code to other students (unless part of your team on the group project). If you do use code from somewhere else, attribute the source. When in doubt about possible "grey" areas, ask!
Any breach of professional ethics as evidenced, for example, by copying exams or code for the projects, using code from the Internet without attribution, 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.
Slides from class lectures and other in-class materials are available shortly before or after they are presented.
Projects and due dates are placed here as they are defined.