Sub-titled, "Make your own 2D game engine using C++ and ECS", this is a course for students interested in learning the fundamentals of game programming and game engine architecture.
The full course taught by Professor David Churchill is being made available for free on YouTube. I say 'is being' and not 'has been' because it is ongoing with two lectures per week being recorded and posted online. As of writing this piece, the first 10 are available, of a total of 23.
In it you learn game programming and more specifically how to make your own 2D game engine using C++ and ECS. But first of all what is ECS? ECS is an architecture for making Games and stands for Entity Component System:
Entity - any object in the game, like the player, a tile, a monster etc.
Component - entity properties, like position, texture, animations, health or attack damage, gravity, etc. Pure data, no logic
Systems - all of the game logic. Movement, rendering, sounds, physics.
As the title says you need to know the basic C++ data structures and OOP in order to get the most out of the course, albeit being a (great) game programming series targeting beginners. Dave Churchill Associate Professor of Computer Science at Memorial University in Newfoundland, plays a vital role in the high quality of the course by explaining concepts concisely. Topics include an introduction to:
vector math for games
The syllabus in detail
1 Intro / Syllabus 2 C++ 1 3 C++ 2 4 Assignment 1 + SFML 5 Intro to ECS 6 EntityManager / Game Math 7 Assignment 2 8 Collision Detection / Resolution 9 Sprites / Textures / Animations 10 Actions / Replays / A3 Architecture 11 Assignment 3 12 Ray Casting / Line Intersection 13 Cameras / Views 14 Course Project Information 15 Pathfinding / Steering 16 Game Tools / Drag & Drop 17 Assignment 4 18 Game Loops 19 Cache / Memory Pooling 20 C++ Code Profiling 21 User Interfaces (sfml + imgui) 22 Introduction to Shaders 23 Particle Systems
Also, the SFML graphics library is being used.
There's also a shared Google docs document that contains the course's schedule with links to the videos and slides of the lecture. Unfortunately the course assignments and files will not be released publicly. The lectures are streamed on twitch and then end up recorded on YouTube.
If you are looking to get into game programming, then this is a first class opportunity to learn the basics from the best.
VS Code is a "go-anywhere, work-with-anything" dev system. However, not all languages are created equal and build systems for C/C++ are particularly challenging. The latest VS Code does something to m [ ... ]