Game Engine Programming


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  
You can also download the grading system that will be used for the assignment 4 here.


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 : C++ documentation and tutorials : Games and C++ : C++ and Visual Studio


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.


For any information about the course, please contact Nicolas Pronost.