Works

Portfolio

2D Game Engine

Portfolio

Custom Engine C++ SDL Design Patterns Engine Development Sound System Input System Observer Pattern Renderer Multithreading C++ Standard Library

About

This project was developed as part of an advanced programming course at university. The goal was to create a 2D game engine from scratch using C++, its standard library and SDL while following the best practices in software engineering and game design patterns, over the course of one semester.

It was an individual project, and to prove that the engine is fully functional, we also had to create an arcade game with it. I had to create Galaga , a classic arcade shooter game.

Download

Technical Details

Design Patterns

  • Singleton
  • State
  • Game Loop
  • Command
  • Observer
  • Component
  • Event Queue
  • Dirty Flag
  • Object Pool
  • Service Locator

Optimization Techniques

  • Threading
  • Decoupling

Libraries Used

  • SDL
  • Json nhlommans

Systems Specifics

  • Input System
    • Made using the command pattern
    • Hides controller implementation via the Pimpl idiom
  • Sound System
    • Made using the event queue pattern and service locator pattern
    • Uses threading