INFOMGEPGame Engine Programming
[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.
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.
For general information, see the CS Department page of this course. The language of the course is English.
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.
|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|
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.
|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|
Students attendance is mandatory only for the session during which they present. Instructions for the presentation will be given during the last lecture (#16).
|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|
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
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
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
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.