The traditional way to implement game entities was to use object-oriented programming. Each entity was an object, which intuitively allowed for an instantiation system based on classes and enabled ...
The entity component model is all the rave for the last decade. But if you look at the design it opens more issues than it solves. Good job, now we went from one anti-pattern (deep inheritance ...