INFOMGEPGame Engine Programming
News
The course Game Engine Programming is not part of the MSc GMT program anymore since September 2013.
Course overview
The course Game Engine Programming is given as a part of the GMT Master program at the Utrecht University. The course is given in the 3rd period on Monday afternoon from 13:15-17:00 and on Thursday morning from 9:00-12:45 (timeslot C). The first two hours are lectures (see schedule below). The second two hours are scheduled for practical assignments. Lectures take place in room BBL-083 (Monday) and BBL-201 (Thursday) and the pratical courses in room BBL-103 (group 1) and BBL-106 (group 2).
Only the first couple of lectures will be dedicated to the C++ basics. Therefore the knowledge of an object-oriented programming language (e.g. Java, C++, C#) is a requirement for the course.
The goal of the course is twofold. First, a practical introduction to programming in C++ will be given. We will also present a set of useful techniques for efficient and reusable C++ programming, including design patterns. Next, we will discuss how C++ is used to implement techniques used in game engines. We will sometimes give specific development techniques for Windows applications (like the Win32 threads or sockets), but the course is presenting multi-platform concepts. We will look at a collection of advanced programming techniques, such as abstraction, exception handling, templates, and plugins. And we will as well look at game engine mechanisms such as scripting, user input management and game loops. We will provide an analysis of the structure of game engines by looking at their architecture, as well as the design patterns that are applied. Next to the lectures, a number of practical assignments will be given, each of which addressing a particular topic covered in the lectures. The final assigment will include a presentation / demo of the game you will create using the engine you developed.
CS Department page
For general information, see the CS Department page of this course. The language of the course is English.
Course curriculum
Each of the following lecture notes may changed until a couple of days before the course. Please visit regularly and make sure that you use the last version before coming to the lecture.
You can download the complete curriculum here.
Week | Date | Topic | Notes |
6 | Monday 6-2 | Introduction, C++ basics | Notes 1 |
Thursday 9-2 | Advanced C++ and OO basics | Notes 2 | |
7 | Monday 13-2 | Advanced OO, STL and programming | Notes 3 |
Thursday 16-2 | Game engine architecture | Notes 4 | |
8 | Monday 20-2 | Game loop | Notes 5 |
Thursday 23-2 | Design patterns for games | Notes 6 | |
9 | Monday 27-2 | HID and error handling | Notes 7 |
Thursday 1-3 | Templates and serialization | Notes 8 | |
10 | Monday 5-3 | Interfacing | Notes 9 |
Thursday 8-3 | Resource and object sharing | Notes 10 | |
11 | No lecture (herkansing week) | ||
12 | Monday 19-3 | Optimization and advanced STL | Notes 11 |
Thursday 22-3 | Game performance tuning | Notes 12 | |
13 | Monday 26-3 | Game network programming | Notes 13 |
Thursday 29-3 | Scripting | Notes 14 | |
14 | Monday 2-4 | Game engine standards | Notes 15 |
Thursday 5-4 | Final lecture | Notes 16 | 15 | Thursday 12-4 | Game engine demo | 16 | Monday 16-4 | Final exam |
22 | Thursday 31-5 | Retake exam |
Practical assignments
The submission of the practical assignments is mandatory. They will be part of the final grade. They have to be done by team of 2 or 3 students.
Week | Start date | Material | Deadline |
6 | Thursday 9-2 | Assignment 0 - VS tutorial and C++ basics | Not handed in |
7 | Monday 13-2 | Assignment 1 - OO programming for game | Sunday 19-2, 11:59pm |
8 | Monday 20-2 | Assignment 2 - Game engine basics Assignment material: GameEngine.rar | Sunday 4-3, 11:59pm |
10 | Monday 5-3 | Assignment 3 - Game engine components | Sunday 25-3, 11:59pm |
13 | Monday 26-3 | Assignment 4 - Game development | Thursday 19-4, 11:59pm |
15 | Thursday 12-4 | Demo session |
Literature
The Internet and libraries are full of references to C++ and game programming. A reader is in writting process but most probably will not be ready for February 2012. The following book is strongly advised if you have never programmed in C++ or for games. More useful literature (books and websites) will be pointed out during the course.
Book: C++ for Game Programmers: Second Edition by Michael J. Dickheiser, 2007
Additional references:
Core Techniques and Algorithms in Game Programming by D.Sanchez-Crespo, 2003
Game Engine Architecture by Jason Gregory, 2009
http://www.cplusplus.com/ : C++ documentation and tutorials
http://www.gamespp.com/ : Games and C++
http://msdn.microsoft.com/ : C++ and Visual Studio
Grading
The final grade is calculated as follows, where A1 to A4 are the grades for assignments 1 to 4 and E is the grade for the final exam.
MGEP = (1 * A1 + 2 * A2 + 2 * A3 + 2 * A4 + 13 * E) / 20
Last year exams: The 1st session exam 2011 can be downloaded here. The 2nd session exam 2011 can be downloaded here. The 1st session exam 2012 can be downloaded here. The 2nd session exam 2012 can be downloaded here.
Contacts
For any information about the course, please contact Nicolas Pronost.