Is the Entity Component System architecture object oriented by definition?
- by tieTYT
Is the Entity Component System architecture object oriented, by definition? It seems more procedural or functional to me. My opinion is that it doesn't prevent you from implementing it in an OO language, but it would not be idiomatic to do so in a staunchly OO way.
It seems like ECS separates data (E & C) from behavior (S). As evidence:
The idea is to have no game methods embedded in the entity.
And:
The component consists of a minimal set of data needed for a specific purpose
Systems are single purpose functions that take a set of entities which have a specific component
I think this is not object oriented because a big part of being object oriented is combining your data and behavior together. As evidence:
In contrast, the object-oriented approach encourages the programmer to place data where it is not directly accessible by the rest of the program. Instead, the data is accessed by calling specially written functions, commonly called methods, which are bundled in with the data.
ECS, on the other hand, seems to be all about separating your data from your behavior.