AbstractThis 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.
- Integrate game engine modules with high cohesion and low coupling.
- Optimize memory access and identify performance bottlenecks on the CPU
- Generalize about the structure of, and similarities and differences between, modern 3D game engines.
- List, describe, use and modify basic components of a game engine.
- Describe why system programming languages, such as C++, is needed in the games industry.
- Describe the tradeoffs involved in setting up a game loop and the initialization order of engine subsystems.
- Explain foundational aspects of game-engine technology, such as graphic rendering, game physics, player input, and system architecture.
Ordinary examExam type:
D: Submission of written work with following oral, External (7-point scale)
D2G: Submission for groups with following oral exam supplemented by the submission. Shared responsibility for the report.