IT-Universitetet i København
  Tilbage Kursusoversigt
Kursusnavn (dansk):Game Engines 
Kursusnavn (engelsk):Game Engines 
Semester:Efterår 2010 
Udbydes, medieteknologi og spil (mtg) 
Omfang i ECTS:15,00 
Min. antal deltagere:12 
Forventet antal deltagere:25 
Maks. antal deltagere:40 
Formelle forudsætninger:The essential skills and requirements are:
•The main programming language of choice will be C++, so you are expected to either be able to program in it from the beginning, or to be able to pick it up fast through experience with other object oriented languages such as C# and/or Java.
•Have at least a high school level understanding of math; meaning understanding the structure of simple mathematical proofs, knowing your radians from your degrees as well as simple vector math.
•Knowledge of simple data structures, such as directed acyclic graphs (DAGs).
•Ability to construct simple programs that span several compilation units.
•Ability to assess on the efficiency and the correctness of a program.
•A structured approach to testing of small programs.

You must have passed a project with some programming content (you should at least have written 1000+ lines of code).

If you have previously followed either the old Engine Programming or Game Programming or course or equivalent, please contact the responsible teacher for counselling.

If you have previously followed either the old Engine Programming or Game Programming or course or equivalent, please contact the responsible teacher for counselling.
Læringsmål:use with routine the basic tools used when developing advanced programs in C++ such as version control software, debuggers and profiling tools

·implement visualization of computer graphics using the OpenGL API

·implement various basic animation techniques

·make and use data structures for handling spatial information

·implement simple asset pipelines

·implement a simple memory manager

·use version control systems

·examine the impact of difference factors on performance

·reflect on the foundations of a simple collision detection system

·make a simple interface between a third party API/SDK and a game engine

·describe game system architecture

·evaluate and compare existing engines

·create bindings to scripting systems

·implement basic type and property systems through C++

·relate and discuss the produced game engine to the theoretical aspects of the course
Fagligt indhold:The course objective is to give you a practical introduction to the relevant theories behind game engine technologies. The focus of the course is on the design and implementation of game engines and not on the actual design and implementation of games.

The focus will be both on the theory behind game engines as well as on programming, using the C++ language and the OpenGL application programming interface (API). We will also study existing engines and how to extend such engines with new functionality.

The course topics includes:
•basics of game engines (what can they do for you)
•Introduction to computer graphics (scene, camera, lighting, programming CPU's, etc)
•Introduction to memory management algorithms
•Introduction to asset pipelines
•Introduction to basic animation techniques
•Introduction to physics simulation (forces, collision, etc.)
•Introduction to performance optimization techniques
•Applied math for computer graphics
•Game engine design
•Data structures and algorithms for games
•Scripting languages and engines (the use of high level gaming languages with engines)
•Understand properties and serialization of game objects and their attributes
•How to make modifications and extensions to an existing game engine

The goal is for the student to have a fully working game engine at the end of the course, which has been developed by that student, either alone or in a team.

14 ugers undervisning bestående af forelæsninger og øvelser
The course will consist of lectures combined with practical exercises. During the practical exercises you will write small modules and programs to solve specific problems related to games and game engines.


In the intro week (week 35) the course time table is changed, see the schedule here:
link to the time table
The schedule for the fall term will be available in August.


Information om studiestruktur / Information about study structure
Dette kursus er en del af det obligatoriske modulet Programming, som du kan finde beskrevet her:
MTG studiestruktur
For at blive i MTG skal du bestå MTG's backbonekurser, og desuden gennemføre en 22,5 ECTS specialisering samt to 7,5 ECTS valgfag.

This course is part of the the mandatory module Programming - find it described here:
MTG study structure
In order to graduate as a MSc in MTG, you need to pass the MTG backbone courses, and also take a 22,5 ECTS specialization and two 7,5 ECTS electives.  

Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 7-trins-skala, Ekstern censur

External censorship, 7-step-scale, B5: Oral examination with production(s) and time for preparation at the exam

To be eligible for exam, the student must:

• Show command of version control systems. The course teacher must in a satisfactory manner be able to check out, build and run course content that the students have produced. All 3 of the minor projects plus the final project will be handed in by submitting via a source control system. All Examples of version control software are CVS, SVN, Git and Mercurial

•Hand in 3 smaller projects during the semester. The project will need to be accompanied by a report describing the project. The project deadlines will be in week 39, 43 and 47 respectively.

•Hand in a functioning game engine at the end of the semester (week 49), that implements and demonstrate the student possesses the competencies listed in the intended learning outcomes. The delivery must be accompanied by a report describing the project.

Litteratur udover forskningsartikler:Only mandatory reading is:

Game Engine Architecture, by Jason Gregory, Jeff Lander and Matt Whiting. Published by A K Peters. ISBN-10:1568814135, ISBN-13:978-1568814131

This book has been ordered to the bookstore, and you should be able to buy it there at the beginning of the semester.

Other suggested readings are

Design Patterns: elements of reusable object-oriented software, by Eric Gamme, Richard Helm, Ralph Johnson and John Vlissides. Published by Addison Wesley. ISBN-10:0201633612, ISBN-13:978-0201633610
This book should be obligatory reading for anyone working with object-design approaches.

OpenGL Super Bible, by Richard S Wright and Benjamin Lipchack. Published by Sams. ISBN-10:0672326019, ISBN-13:978-0672326011.
This book will give you a good introductory to OpenGL.

You are also invited to touch upon the Standard Template Library (STL), and if you do not know C++ but come from another Object Oriented background you should start practicing as soon as possible.
Afholdelse (tid og sted)
Kurset afholdes på følgende tid og sted:
Mandag 13.45-15.45 Forelæsning ITU Aud 4, GameLab, Lille GameLab
Mandag 16.00-18.00 Øvelser ITU GameLab, Lille GameLab
Onsdag 08.30-10.30 Forelæsning ITU 4A14, Lille Gamelab
Onsdag 10.45-12.45 Øvelser ITU Lille Gamelab

Eksamen afholdes på følgende tid og sted:
2010-12-08 No later than 3 PM Skriftlige arbejder ITU The Examination Office
2011-01-03 Preparation Room Mundtlig eksamen ITU 3A03
2011-01-03 Please contact the course manager Mundtlig eksamen ITU 3A18
2011-01-05 Please contact the course manager Mundtlig eksamen ITU 3A18
2011-01-05 Preparation Room Mundtlig eksamen ITU 3A03
2011-03-10 Re-examination Mundtlig eksamen ITU 4A30