INFOMGEP
Game Engine Programming

News

[May 31, 2012] Retake exam grades (and updated final results) online.
[May 1, 2012] Assignment 4 and final grades online.
[April 20, 2012] Final exam grades online.
[April 17, 2012] Assignment 3 grades online.
[April 2, 2012] Lecture notes 16, demo convocation and grading system online.

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  

Here is the time table for the demonstration day on Thursday 12-4. You can download a pdf version here. You can also download the grading system that will be used for the assignment 4 here.

Students attendance is mandatory only for the session during which they present. Instructions for the presentation will be given during the last lecture (#16).

Time Room Group Students
9:00 - 9:10 BBL-201 1 0346675 3019934 3726088
9:15 - 9:25 BBL-201 2 3822923 0463981 3623424
9:30 - 9:40 BBL-201 3 3439879 3034372 3117936
9:45 - 9:55 BBL-201 4 3220060 3766349
10:00 - 10:10 BBL-201 5 3220494 3117332
10:15 - 10:25 BBL-201 6 3220508 3855856 0427039
9:00 - 9:10 BBL-079 7 3344789 3344797
9:15 - 9:25 BBL-079 8 3825345 3344959
9:30 - 9:40 BBL-079 9 3554635 3345173
9:45 - 9:55 BBL-079 10 3350312 3412326 3346994
10:00 - 10:10 BBL-079 11 3718492 3760308 3763617
10:15 - 10:25 BBL-079 12 3775682 3741281 3730468
11:00 - 11:10 BBL-103 13 3731529 3759482 3754014
11:15 - 11:25 BBL-103 14 F112488 3277003 3769313
11:30 - 11:40 BBL-103 15 3763412 3780198 3777855
11:45 - 11:55 BBL-103 16 3820564 3810275 0428701
12:00 - 12:10 BBL-103 17 3817512 3778436 3856518
11:00 - 11:10 BBL-106 18 3857522 3848914
11:15 - 11:25 BBL-106 19 3856038 3857662
11:30 - 11:40 BBL-106 20 3759512 3858936
11:45 - 11:55 BBL-106 21 3861058 3859630
12:00 - 12:10 BBL-106 22 F111788 F111886 F112097

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 can be downloaded here.
The 2nd session exam can be downloaded here.

Grades of assignment 1: access by SolisID.

Grades of assignment 2: access by SolisID.

Grades of assignment 3: access by SolisID.

Grades of assignment 4: access by SolisID.

Grades of final exam: access by SolisID.

Grades of retake exam: access by SolisID.

Final results (updated after retake): access by SolisID.

Contacts

For any information about the course, please contact Nicolas Pronost. For additional questions about the practical assignments, you can also contact Jeroen Fokker.