Skip to main content

helios - Exploratory Development of an ECS-based Game Engine

· 3 min read

My software project helios is a game engine written in C++, originally conceived as a simple framework for a Geometry Wars clone. The project quickly shifted away from its initially intended focus on gameplay and graphics implementation toward a deeper engagement with engine architectures. The result breaks with classical OOP paradigms: In my report, I document this transition from deep inheritance hierarchies to a data-oriented (DOD) system.

Figure 1 Title screen of the Scoring Demo, which contains all requested gameplay mechanics of the clone. UI elements are also part of the GameWorld as GameObjects.

After completing my project work at Trier University of Applied Sciences in March 2026, helios rests on an architecture that has grown far beyond the original tracer-bullet approach. As the demands of integrating runtime systems and gameplay mechanics grew, the classical OOP mental model gave rise to a complexity that could no longer meet the requirements of a clean architecture. The associated Array-of-Structures modeling [📖Fab18] and the resulting scattered memory layouts also failed to make effective use of CPU-adjacent caches.

Figure 2 Throughput of central ECS operations. Despite technical debt in early layers and missing draw call optimizations, helios achieves a remarkable efficiency for the agreed project goals. The chart compares the OOD approach from Milestone 3 (MS3) with the current DOD ECS implementations from Milestone 5 (MS5).

The focus therefore shifted to implementing an Entity-Component System (ECS) that treats components as information carriers and systems as behavior carriers. The tension between the developer's familiar hierarchical mental model and the demands of cache-line optimization that emerged from this data-oriented approach is likewise examined in my report.

Despite unoptimized draw calls, the faster test system1 rendered 10,000 animated objects at a stable 60 FPS - far exceeding the original requirements. The data-oriented system also achieves better scaling under increasing load.

Figure 3 Visualization of 5,000 entities at ~110 FPS. The switch to ECS made this level of scaling possible in the first place.

I plan to carry the insights gained from this work forward into a next phase, where I want to explore a type-safe, domain-specific runtime model for more complex, concurrent game engine architectures.

Footnotes

  1. Desktop: Ryzen 9 9950X3D, 64 GB DDR5 RAM, RTX 5090. Laptop: Intel Core i7-8750H, 16 GB RAM, GTX 1070 Max-Q. All tests were conducted on Windows 11.


References

  1. [Fab18]: Fabian, R.: Data-oriented Design: Software Engineering for Limited Resources and Short Schedules (2018), Richard Fabian [BibTeX]