This course teaches fundamental techniques for using C++ efficiently to implement 2D and 3D games.
Students learn the basics of game programming using both 2D and 3D graphics. They learn to integrate a physics engine and how game loops and time steps work.
After the course students are familiar with component architectures and other game programming patterns.
This course covers the following topics:
- Understanding the design and architecture of existing game engines
- Design and implementation of game engine components
- Efficient programming in C++
- Best practices for game programming from software engineering and system architecture
Formal prerequisitesThe essential skills and requirements are:
- Good programming ability, since the course will involve several programming exercises and a final projects.
- Basic mathematics understanding. Geometry, matrix algebra, etc.
Intended learning outcomes
After the course, the student should be able to:
- Design and implement components for a modern game engine using best practices of software engineering.
- Manage resources and memory in C++ efficiently.
- Create game engine modules with high cohesion and low coupling.
- Optimize performance bottlenecks on both the CPU and GPU.
- Generalize about the structure of, and similarities and differences between, modern 3D game engines.
- Implementing basic components of a game engine.
- Describe why system programming languages, such as C++, is needed in the games industry.
Ordinary examExam type:
D: Submission of written work with following oral, external (7-trinsskala)
D2G: Submission of written work for groups with following oral exam supplemented by the work submitted.
The final submission consists of a software (source code and binaries) including a report about the project.
The exam project should be created in groups of maximum 3 people.
The total duration of the oral exam is 20 minutes per examinee.
Form of group exam: Mixed exam 1