Duration of the online course: 29 hours and 24 minutes
New
Build real game engine skills in this free C++ course: ECS architecture, SFML, collisions, shaders, and profiling—level up your game dev portfolio fast.
In this free course, learn about
Course design paradigm: building a game engine via an Entity-Component-System (ECS) architecture
Core C++ foundations for games: types, functions, compilation, debugging, and basic program structure
Memory/performance basics: stack vs heap tradeoffs, cache coherency, and memory pooling concepts
Using SFML to create 2D games quickly vs lower-level APIs (e.g., OpenGL) to focus on engine design
EntityManager responsibilities: creating, tracking, querying, and safely destroying entities/components
2D game math essentials: vectors, transforms, and placing shapes (e.g., set origin to radius to center)
Collision programming pipeline: broad-phase candidate finding and narrow-phase precise resolution
Texture/asset management: an Assets class to load, store, and reuse resources efficiently
Input-to-action architecture: decoupling input logic from gameplay actions for flexibility and reuse
Ray casting & line-segment intersection for vision, line-of-sight, and hit detection in 2D worlds
Cameras/views in 2D engines: controlling what part of the world is rendered and how it follows entities
Pathfinding and steering behaviors: moving agents toward goals with smooth, reactive motion
Game loops and timing: fixed vs variable time steps and their impact on simulation and responsiveness
Tooling and rendering effects: profiling/visual debugging, shaders, and particle systems/vertex arrays
Course Description
Turn your curiosity about game development into practical engine-building skills with this free online course focused on modern C++ and hands-on 2D game programming. Instead of staying at a theoretical level, you will learn how real-time games are structured, how data flows through an engine, and how to write code that is both clear and fast enough for interactive simulations.
You will start by strengthening essential C++ foundations with a game developer mindset: memory choices, performance implications, and code organization that scales. From there, the course uses SFML so you can focus on the engine concepts that matter most, without getting buried in low-level graphics setup. As you progress, you will build systems for rendering, input handling, textures and asset management, and a robust action layer that keeps controls cleanly separated from gameplay behavior.
A major theme is the Entity-Component-System approach, a widely used architecture that helps you avoid rigid class hierarchies while keeping your code flexible and cache-friendly. You will explore entity management, 2D game math, collision detection workflows, ray casting, cameras and views, and how these pieces connect inside a game loop. The later parts of the course push toward professional concerns: pathfinding and steering behaviors for believable NPC movement, saving progress, debugging-friendly tools, and an advanced main loop that handles timing smoothly.
You will also look at performance through the lens of cache coherency, memory pooling, and profiling, developing the instinct to measure and optimize bottlenecks instead of guessing. Finally, you will be introduced to shaders and particle systems, giving you a clear pathway from basic engine construction to the kinds of visuals and effects seen in polished games. By the end, you will have a strong foundation for building your own projects and for communicating game-engine decisions in a portfolio or interview setting.
Course content
Video class: COMP4300 - C Game Programming - Lecture 01 - Course Introduction1h24m
Exercise: What is the main design paradigm taught in the course for developing game engines?
Video class: COMP4300 - C Game Programming - Lecture 02 - Intro to C (1/2)2h17m
Exercise: What is a potential advantage of using C++ in game development?
Video class: COMP4300 - C Game Programming - Lecture 03 - Intro to C (2/2)1h58m
Exercise: What is one advantage of using stack memory over heap memory in C++ programming?
Video class: COMP4300 - Game Programming - Lecture 04 - Assignment 1 SFML2h00m
Exercise: What is the primary reason for using SFML in this course, especially when compared to other lower-level graphics libraries like OpenGL?
Video class: COMP4300 - Game Programming - Lecture 05 - Intro to ECS1h26m
Exercise: What is one of the primary benefits of using the Entity-Component-System (ECS) architecture in game development, compared to traditional Object-Oriented Programming (OOP)?
Video class: COMP4300 - Game Programming - Lecture 06 - EntityManager 2D Game Math1h29m
Exercise: What is one of the primary purposes of using an Entity Manager in game programming?
Video class: COMP4300 - Game Programming - Lecture 07 - Assignment 21h58m
Exercise: In the game programming course, what is the purpose of setting a circle shape's origin to its radius?
Video class: COMP4300 - Game Programming - Lecture 08 - Collision Detection56m
Exercise: What are the two main stages involved in collision programming in video games?
Video class: COMP4300 - Game Programming - Lecture 09 - Textures1h10m
Exercise: In a game engine architecture discussed in the lecture, what is the role of the 'Assets' class?
Video class: COMP4300 - Game Programming - Lecture 10 - Actions54m
Exercise: In a game engine architecture, why is it beneficial to decouple input logic from action logic?
Video class: COMP4300 - Game Programming - Lecture 11 - Assignment 31h35m
Exercise: In a game development assignment where students are tasked with creating a Mega Mario-style game, which of the following components is crucial for determining whether an entity in the game has an animation that should loop continuously or play only once?
Video class: COMP4300 - Game Programming - Lecture 12 - Ray Casting Line Segment Intersection55m
Exercise: What is the primary purpose of implementing 2D raycasting in game programming as described in the lecture?
Video class: COMP4300 - Game Programming - Lecture 13 - Cameras and Views1h01m
Exercise: What is the primary purpose of using a view in a 2D game engine like SFML?
Video class: COMP4300 - Game Programming - Lecture 14 - Course Project Information1h17m
Exercise: What is the main focus of the course project in Computer Science 4300?
Video class: COMP4300 - Game Programming - Lecture 15 - Pathfinding and Steering1h08m
Exercise: What is the primary function of steering behaviors in game programming?
Video class: COMP4300 - Game Programming - Lecture 16 - Saving Progress, Game Tools, Drag1h18m
Exercise: Which of the following saving methods allows a player to save their progress at a strategic point in the game?
Video class: COMP4300 - Game Programming - Lecture 17 - Assignment 41h10m
Exercise: In a game where each tile can block movement, vision, or both, how is an NPC's line of sight to a player determined in terms of vision blocking?
Video class: COMP4300 - Game Programming - Lecture 18 - Advanced Game Main Loop54m
Exercise: What is the primary advantage of using variable time steps in a game engine?
Video class: COMP4300 - Game Programming - Lecture 19 - Cache Coherency Memory Pooling58m
Exercise: In game programming, why is cache coherency important for optimizing performance?
Video class: COMP4300 - Game Programming - Lecture 20 - C Visual Code Profiling1h30m
Exercise: What is the purpose of using a Singleton pattern in programming?
Video class: COMP4300 - Game Programming - Lecture 21 - Introduction to Shaders50m
Video class: COMP4300 - Game Programming - Lecture 22 - Particle Systems and Vertex Arrays1h07m
This free course includes:
29 hours and 24 minutes of online video course
Digital certificate of course completion (Free)
Exercises to train your knowledge
100% free, from content to certificate
Ready to get started?Download the app and get started today.