R-Type is an Epitech team project (5 people): reproduce the R-Type arcade game in C++, with networking, using a custom game engine. I handled two structural parts: designing the Game Engine based on an ECS pattern, and architecting the graphical client.
Game Engine — Entity Component System
I designed an ECS from scratch in C++. The ECS choice is counter-intuitive (no inheritance, no rich “entity” objects) but it delivers concrete advantages: better cache locality, decoupled systems, and a flexibility that makes adding new behaviors non-destructive.
The main challenge was the API: the engine had to be usable by other team members without them understanding its internals. A poor interface would have blocked everyone.
To validate the engine independently of the R-Type project, I implemented Flappy Bird with the same ECS — an end-to-end test confirming the architecture holds outside its original context.
Graphical Client — Takeover
Toward the end of the project, facing delays in the graphical client development, I took over the architecture and designed a significant part of the rendering abstractions. I restructured the technical foundation to enable the delivery of a functional version within the deadline.
What This Project Taught Me
Architecture is the real risk in a systems project. An incorrect initial structure can’t be fixed cleanly — it’s paid for in delays, coupling, and bugs. The ECS held up to the end because I invested time in its structure before writing the first line of business logic.