Game Engine

Developed a custom game engine in C++ from the ground up, featuring a modular architecture designed for scalability, asset management, and efficient game object composition.

Key Features

  • Custom Entity Component System (ECS).
  • Generic resource management system with asset caching.
  • Centralised engine core handling update and render loops.
  • Modular, extensible architecture for adding new engine features.

Technical Highlights

  • Designed a custom Entity Component System (ECS) where entities are lightweight containers and behaviour is composed through reusable components (e.g. Mesh Renderer, Audio, Collision), avoiding deep inheritance hierarchies.
  • Implemented polymorphic component updates using virtual methods, allowing the engine core to process all component types through a unified update loop.
  • Used weak pointers for safe communication between entities and the engine core without creating ownership cycles.
  • Built a templated resource manager that loads assets once and caches them by type and file path, significantly reducing loading times and memory usage.
  • Demonstrated resource sharing by loading a single mesh instance for multiple game objects (e.g. nine enemy instances sharing one mesh).

Reflection
This project strengthened my understanding of engine architecture, object lifetime management, generic programming, and data-driven design. Future improvements include expanding the resource system to support textures, shaders, audio, and materials, alongside introducing dedicated rendering and physics systems.