This course includes

  • 10 hours of on-demand video

  • Downloadable resources and exercises

  • Full lifetime access

  • Access on mobile and desktop

  • 14-day money back guarantee

  • Secure checkout through PayPal


Before taking this course, you must have:

  • A basic understanding of programming fundamentals, such as variables, conditionals, loops, and functions.
  • Some basic experience with a c-style programming language (such as C++, Java, C#, or Objective-C).
  • You are able to use Linux, Windows, or MacOS with this course, but be aware that the instructor uses Linux during the lectures.

Is this course for you?

This course will expose you to the fundamental ideas behind game engines. You will use C++ and SDL to create a basic game engine that uses Entity-Component methodology to load objects, maps, input, and rendering. You will also learn how to embed Lua scripting to C++ applications, allowing levels to be designed separately from your core C++ application. To make the most out of this course, you should have a basic understanding of simple programming concepts, such as variables, conditionals, loops, functions, and object-oriented design.
Buy $11.99
Is this course for you?
Watch Intro Video

Motivations & Learning Outcomes

  • Activities and Discussions

    Join our community and get the most of our discussion boards

  • Direct instructor contact

    Have direct contact with your instructor at any given time during and after you complete your course

  • Money back guarantee

    We offer a 14-day money back guarantee for all our courses. No questions asked.


by Maikel Van Musteren


by Maikel Van Musteren

I am reviewing this course as a Software Engineer that studied game technology/tooling as a major. I was interested in the Lua integration and it did not disappoint. The result is a working engine that is actually quite extendable and modular, that can easily be build upon. Currently I am heavily extending/modding the engine to suit my needs more. Also I have embedded the engine in QT to create a toolset/game editor. This works flawlessly. I can really recommend this course If you want a good starting point on the subject from which you can go your own direction afterwards.
by Mark Ud


by Mark Ud

Amazing course. If you want to build games, its must have for you. It will be challenging but it's worth it if you want to know how games are working.
by Claude Müller


by Claude Müller

Excellent course! :)
by Darrell Waldron


by Darrell Waldron

I had some issues with the setup early on and the teacher was very responsive and the issue was corrected. The instructions and explanations are clear. I typed in the code with him, as he was explaining each lesson. It was a bit of a challenge getting some of my syntax errors fixed, but the accompanying code really helped. I enjoyed this class. If you want to know the nuts and bolts of how a game engine works, then this is the class for you.
by Σπύρος Μιλτιάδους


by Σπύρος Μιλτιάδους

An amazing course by an amazing teacher Thanks for carefully designing the course its one of the best resources out there.

Course Content

  • 1
    About the Course
  • 3
    Dependencies and Folder Structure
    • Project Dependencies
    • Additional Links for Windows Users
    • Files and Folder Structure
    • Picking a Code Editor
    • Makefile
    • Quick Makefile Remarks
    • Project Initial Folder (Download)
    • Activity: Building the Project
  • 4
    Game Loop
    • The Game Loop
    • Source Code (Download)
    • Fixing our Time Step
    • Working with the GLM library
    • Source Code (Download)
    • SDL Rendering and Double Buffering
  • 5
    Entity-Component Design
    • Entity-Component Fundamentals
    • Entity and Component Prototypes
    • Entity and Component Implementation
    • Working with C++ Templates
    • The Transform Component
    • Source Code (Download)
    • Activity: List All Entities
  • 6
    Sprites and Animations
    • Sprites
    • Managing Game Assets
    • The Sprite Component
    • Source Code (Download)
    • Activity: Function HasComponent
    • Animated Sprites
    • Source Code (Download)
    • Animation with Multiple Frames
  • 7
    Keyboard Input
    • The Keyboard Control Component
    • Activity: Keeping the Player in the Window
  • 8
    Maps and Tiles
    • Working with a Tilemap
    • The Tile Component
  • 9
    Layers and Camera Movement
    • Layers
    • Camera Movement
    • Source Code (Download)
  • 10
    • Identifying Collisions
    • Activity: Rendering Collision Bounding-Boxes
    • Improving the Collision Check
    • Source Code (Download)
  • 11
    Labels and Fonts
    • The Label Component
    • Source Code (Download)
  • 12
    • The Projectile Emitter Component
    • Source Code (Download)
    • Activity: Improving the Code for Destroying Entities
  • 13
    Using Lua
    • Embedding Lua in our C++ Application
    • Loading Assets from our Lua File
    • Source Code (Download)
    • Entities and Components in Lua
    • Activity: Loading Entities and Components from Lua
    • Loading Entities and Components from Lua
    • Source Code (Download)
    • Using Date & Time in Lua
    • Activity: Using Date & Time in Lua
    • Source Code (Download)
  • 14
    Next Steps
    • Next Steps
  • 15
    Bonus: The Map Editor
    • Activity: Creating a Tilemap Editor
    • Tilemap Editor Source Code (Download)
  • 16
    Bonus: CLion IDE Configuration
    • CLion IDE Configuration


  • Gustavo Pezzi

    Senior Lecturer

    Gustavo Pezzi

    Gustavo teaches computer science and mathematics at BPP University, London. He researches how teaching game programming can help enhance awareness and understanding of mathematics and physics. He is also a professional software engineer with more than 10 years of experience, with an industry background in 3D systems, games, web systems, databases, and data science. His academic path includes institutions such as Pittsburg State University, City University of London, and University of Oxford.