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

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.

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.