Entity Component System

Role: Programmer

Engine: C++

Company: None

Status: In development. Version 1.1 released on Github

I decided to build a complete ECS (Entity Component System) using C++20 purely for fun and learning purposes. This project gave me the opportunity to sharpen my C++ knowledge and test my problem-solving skills. In particular, the most interesting challenges I faced were:

  • Designing and implementing a packed component array to store data-only components in contiguous memory chunks.
  • Designing and implementing an archetype system with support for efficient queries to retrieve all entities owning a specific set of components.
  • Handling memory management by writing custom memory allocators to reduce heap allocations and memory fragmentation.
  • Setting up a complex CMake project with multiple sub-projects and dependencies.

I released version 1.1 of the system on GitHub.