2D Game Engine

About The Project
C++
Solo
Custom Engine
School Project
The goal of this project was to create a 2D game engine using the Component-Based architecture where components hold the behaviour of the game objects rather than the game object itself. At the same time, the engine also uses some of the other design techniques from Bob Nystrom's book "Game Programming Patterns".
This engine was build upon the Minigin project that uses SDL2 and GLM. It serves as start project and only contains the minimum to start building the engine.
As final work, I used the engine to recreate the classic Galaga game. The game demonstrates the engine's capabilities and serves as a practical example of its features.
Key Features
-
Component Based System: Allows for efficient game object management without relying on inheritance. Gameobjects can have attached different components representing different behaviours.

-
Oberserver Pattern: Used for communication between game objects allowing a more decoupled architecture.

-
Service Locator: Another pattern used for a more decoupled architecture. In this case is used for providing access to global services like the Audio from the game.
-
Input System: It supports keyboard and multiple controllers. It also allows the user to bind any key/button to a specific action (move, fire, jump etc) by using the Command pattern.




