Louis Cox


Low Level Games Programmer

About

Hi, I'm Louis!

I'm a games design and programming graduate from the University of Staffordshire with a focus on data-oriented design and Entity Component System (ECS) architecture.I'm currently adapting my dissertation—comparing Sparse Set and Archetype-based ECS implementations—into a conference paper for this year’s CGVC. The work has also been nomintaed by my university for TIGA's outstanding graduate of the year.Alongside my native C++ projects, I enjoy working with game engines and have hands-on experience with both Unreal Engine and Unity.Outside of programming I like to cook, dive, collect records, and play dungeons and dragons.I'm currently seeking a programming role where I can deepen my games development skillset in a creative and challenging environment. If you're interested in working together, you can find my CV here!

Portfolio

ECS Comparison

My dissertation at the University of Staffordshire was a comparative report on the two main types of Entity Component System: Sparse Set, and Archetype. For this comparison I created implementations of both in C++20, and benchmarked them both at varying entity counts using Conway's Game of Life.

This project taught me a lot about C++, memory management, cache behaviour, and game engine architecture. It also gave me the chance to work with GLFW, Vulkan, and CMake for the first time. Whilst the research portion of this project is over, I am continuing to work on my Archetype ECS implementation, with the intent to turn it into a small game engine.The following is the abstract of my dissertation, briefly covering the findings.

Entity Component System (ECS) architecture has emerged as a powerful alternative to traditional object-oriented programming in game development and real-time simulations. By decoupling data from logic and optimising memory access patterns, ECS enables improved performance and scalability. However, different ECS implementations present distinct trade-offs in iteration speed, entity modification costs, and memory efficiency. Despite its growing adoption, comparative research on the performance characteristics of different ECS storage architectures remains limited.

This study provides a direct performance comparison of the two most widely used ECS architectures: Sparse Set-based and Archetype-based implementations. To facilitate this, a C++20 implementation of each architecture was developed, and their performance was measured under identical conditions. The benchmarking process focused on two key metrics: iteration speeds, and entity modification costs.

The findings reveal that Sparse Set ECS offers reduced entity modification costs but struggles with iteration efficiency, particularly as entity counts increase. Conversely, Archetype ECS exhibits superior iteration performance at larger scales, benefiting from improved cache locality, though it incurs higher costs when modifying entity compositions.

By analysing these trade-offs, this research provides critical insights into the scalability and efficiency of each approach, helping developers make informed decisions when selecting an ECS architecture.

I am currently working with my dissertation mentor Ben Williams to turn this project into a conference paper. The full dissertation can be found here, and the code for both ECSs can be found here.

Dungeon Cook

Dunegon Cook is a chaotic, fast paced dungeon crawler and cooking game, in which the player must fight their way through a dungeon to gather ingredients, and the next day cook them into complex meals for impatient customers.

For this project I worked in a team of 29 students, including 4 other members of the tech team. My contributions included enemy AI, damage and health, the player controller for the dungeon portions of the game, the camera movement, storage mechanics for ingredients, and plate mechanics, as well as an unused dungeon generation system and more last minute bug fixes than I can count.We worked in Unreal Engine 5 using Git for version control and Microsoft Teams Planner to manage tasks.This has been my biggest and most successful group game development project, and I'm proud of how both the game and the team came together.You can play it here.

Unity Behaviour Tree

Last year, before the release of Unity's Behaviour Package, I created my own solution for behaviour trees in engine.Implemented using scriptable objects, with CompositeNode, DecoratorNode, and ExecutionNodes that are easily inherited from to provide functionality. Blackboards are also implemented through the IBlackBoard interface, allowing for more user control over data storage.

The tool also comes with a visual editor, which can be used to easily create and edit different behaviour trees.

This package was used as a part of my Game AI module at university, alongside a set of steering behaviours and pathfinding algorithms, for which I recieved a 1st. Below is a video demonstrating the behaviour tree in action, with an agent that can intelligently select weapons and buffs, steer away from enemies, and pathfind to pickups.

The code for this project can be found here.

Sinistar Remake

This is a project I am currently working on to try and use my ECS in a more dynamic environment than it was initially benchmarked in. This project uses C++, and SFML for windowing and rendering.Whilst the project is a Sinistar Remake, my main goal with this project was to explore engine architecture, and try my hand at implementing a few systems core to game engines in my ECS. The engine created for this project - "Weave" - currently includes the following:

  • A Mathematics library with a templated Vector2

  • A 2D physics system with multiple collider types, customisable physics materials, and quadtree collision

  • A C++ recreation of C#'s Action class

  • Thread pools

  • 2D rendering

  • Animations

  • Event based input handling

As I've worked on the project I also made a few important upgrades to my ECS, including:

  • System Groups (to organise, Update, FixedUpdate, and Render systems)

  • System Ordering

  • Easy Multithreading

  • Command buffers

I plan to continue with this game, next adding Sinistar itself, and it's drone helpers. So far this project has been great fun, allowing me to test my ECS in action, and learn much more about engine architecture, multithreading, and particularly physics in games.Feel free to take a look at the code for this project here!