Embark on your journey into the world of game development with our comprehensive course on 2D game engine architecture. This course offers a blend of theoretical knowledge and practical application by guiding you through the creation of a small 2D game engine using modern C++, SDL, and Lua.
Course Overview
We will construct a small ECS (Entity-Component-System) framework from scratch, providing insights into managing entities, components, and systems effectively. Additionally, we will explore how engine developers design and organize game objects in memory while prioritizing performance.
Key Programming Patterns
Throughout the course, several popular programming patterns used in game development will be covered and put into practice, ensuring a solid understanding of game engine architecture.
Tools You Will Need
Equip yourself with the following tools for a comprehensive learning experience:
- C++: A robust compiled programming language.
- SDL2: Essential for cross-platform rendering and input.
- GLM: A library assisting with mathematical calculations.
- Dear ImGui: Use this for creating intuitive engine tool interfaces.
- Sol: Facilitates the binding of modern C++ and Lua.
- Lua: A fast, user-friendly scripting language.
Our focus will be on writing most of our engine code from scratch using these cross-platform libraries and tools, compatible with Windows, macOS, and Linux.
Is This Course Right for You?
Target Audience
This course is designed for beginner programmers eager to learn C++ for game development. Although familiarity with basic coding constructs (if-else, loops, functions, classes) and object-oriented programming is recommended, prior knowledge of C++ is not required.
Required Knowledge
No prior C++ experience is necessary. The course is also suitable for those with experience in Java, Python, Ruby, Go, Swift, JavaScript, and more, welcoming anyone with a foundational understanding of programming.
Course Differences
Unlike other resources that may be overly theoretical or extensive, this course offers a practical approach to game engine programming. You will learn to comprehend the abstraction of games and create a simple engine from scratch in C++, encompassing ECS, data-oriented design, C++ templates, the game loop, SDL rendering, event systems, resource management, memory, and performance.
Additionally, we will explore the integration of Lua into C++ code to enhance our engine with scripting capabilities.
If you seek an introductory yet thorough dive into game engine programming and wish to uncover the inner workings of games, this course is the perfect starting point!