- 30 hours on-demand video content
- Lifetime access
- Live meetup
- Downloadable resources and exercises
- Certificate on completion
- Access on mobile and desktop
- Secure checkout via Credit Card or PayPal
- 14-day money back guarantee
- Last updated January 2024
$59.99
ENROLL NOW FREE PREVIEWThis course is a gentle and comprehensive introduction to the fundamentals of 2D game engine architecture. We'll discuss several of the most popular programming patterns used in game development and try to put all the theory we learn into context by coding a small 2D game engine using modern C++, SDL, and Lua.
We will write, together, a small ECS framework from scratch to manage our entities, components, and systems. We will discuss how engine programmers design their code and how we should think of organizing game objects in memory with performance in mind.
We'll try to write most of our engine code from scratch. All these libraries and tools are cross-platform, so you'll be able to code along with either Windows, macOS, or Linux!
The target audience for this course are beginner programmers that wish to learn more about how C++ works in the context of game development. Therefore, students must already know how to code and be familiar with basic concepts of programming and logic. You should be able to write if-else statements, loops, functions, and classes using simple OOP.
You do not need to know C++ before enrolling; many successful students have a background in web, mobile, and game development, working with languages like Java, Python, Ruby, Go, Swift, JavaScript, Ada, Zig, Kotlin, and many others.
This course is not just a simple tutorial on how to create a game with C++. This is the opportunity for you to think about the abstraction of what a "game" really is and all the pieces that need to interact to make them happen. More than that, this course allows you to write from scratch the code of a small C++ engine that can be used to create many types of games.
We will also touch other important topics like ECS, data-oriented design, STL containers, C++ templates, game loop, SDL rendering, event systems, asset management, memory management, and performance. And finally, we'll also learn how to embed the Lua language into our native C++ code to add scripting power to our engine.
While there are other resources about game engine development out there, they are either too theoretical or overwhelmingly long. If you are looking for a gentle introduction to the world of game engine programming and want to learn how games really work under the hood, then you should definitely take this course!
Gustavo Pezzi is a university lecturer in London, UK. He has won multiple education awards as a teacher and is also the founder of pikuma.com.
Gustavo teaches fundamentals of computer science and mathematics; his academic path includes institutions such as Pittsburg State University, City University of London, and University of Oxford.
73% of our students come back for another course
We don't offer discounts on our courses. Ever.
"Good pace, learnt tons! Overall, aside from opinions on optimisations, architecture decisions and the like, the course has been wonderful to solidify and learn important game dev concepts. The only thing that I'd say can be improved is that, often times, Gustavo is a bit redundant in his explanations. When I was short on time, I found it cumbersome to follow him while we go over the same thing or state what's on the screen twice or thrice. That's my experience at my desired pace and my available time, of course. Other than that, I think Gustavo is a brilliant professor and I can proudly recommend him 100%."
"Great course!! Gustavo Pezzi's game engine course is fantastic! It's well-structured and super informative, perfect for diving into game development. Gustavo explains everything clearly, and the hands-on project was really engaging. Definitely 5 stars!"
"Enjoyed my first pikuma course!
Overall a positive learning experience. I was already familiar with the ECS architecture from watching Comp 4300 on youtube, so it was good to use this architecture again while learning new libraries like SDL and especially Dear imGUI and sol.
Some areas I feel could be improved : The audio quality is really bad, with annoying crackling sounds, but I managed to learn to ignore them. (A bit disappointing though given the price of the course.) While Professor Gustavo did highlight it himself several times, some of the coding decisions were not the most efficient choices. It was a bit odd that we refactored the component pools data structure in the middle of the course, which seemed like poor planning, but was also beneficial to get some 'real world' experience of having to make a significant code change on a project midway. I am also still unclear on what the alternative is to using C++ templates, since it was mentioned that some game studios ban them because they are inefficient, but we used them a significant amount in this course.
Now for the highlights : Great teacher that you can tell has a passion for the topic, which always makes learning fun! There's also an awesome community of students, it was nice to see the discussions in the lecture sidebars, with past students and even the professor remaining active to answer questions, despite this being one of the older courses. The online platform itself is very nice, it's easy to catch up where you left off and see your progress.
The quality of the content is impressive; I haven't seen any other online course that teaches you how to connect so many different technologies to build a little game engine, but the true test will be if I can manage to do the bonus map tool in C++ and SDL. :)
Thank you Professor Gustavo!"
"I wish this person can teach me everything my entire life! Perfect teacher, if teachers around the world were half as good the world problems would be solved."