Alexandre Vaillancourt's answer to this recent meta question made me realize we have a bit of a mess of tags in the neighbourhood of entity component systems:
- entity-component-system - 11 questions (created September 2018)
"Used when referring to the Entity-Component-System (ECS) architecture." - entity-system - 376 questions (122 also tagged component-based)
"A programming paradigm in which gameobjects (entities) are composed out of components, and are operated upon by systems. Each entity is an ID that points to specific components." - entity-component - 107 questions (no tag guidance)
- component-based - 269 questions (122 also tagged entity-system)
"Component-based designs rely on separating the multiple logical attributes of business objects and game objects into small components dedicated only to specific tasks. Whereas game objects are usually modeled to reproduce the attributes and behavior of "real world" objects by aggregating them together and allowing specialized objects to inherit from general ones, component based design relies on composition rather than inheritance." - game-component - 24 questions(no tag guidance)
Adding to the confusion, the present tag guidance on the entity-system tag seems to describe an entity component system:
Gameobject: anything acting in the game (car, gun, Steve).
Entity: a globally unique identifier (string, number) pointing to a set of components that comprise a gameobject.
Component: a blob of data or simply a tag (Position, Velocity, Renderable).
System: implements functionality. Systems operate on components (Renderer, MovementSystem).
See this answer for a through explanation of an Entity System.
We've had previous meta questions in this neighbourhood:
When doppelgreener asked in 2012 whether entity-system and component-based are the same, she accepted Tetrad's answer:
I don't think all entity systems are component based. Common consensus at this point in time might be to steer people who are asking about non-component-based entity systems towards component based systems, but I wouldn't call them synonyms.
When congusbongus asked in 2015 whether entity, entity-system, and entity-component should be merged, the consensus seems to have been to remove entity but retain the other two.
When Alexandre Vaillancourt asked in 2016 whether we need an entity-component-system tag, Josh answered:
I am still in support of Tetrad's answer to this question back in 2012. Not all entity systems are component-based, and not all component-based code is an entity system.
Today's "entity component system" is building heavily on component-based concepts that have been in place in software engineering for years, and I think there's value in continuing to allow the distinction between "I am asking about an entity system" (entity-system), "I am asking about component-based programming or design (component-based) and "I am asking about both" (using both tags).
If anything I am in favor of correcting the description of entity-system and entity-component (the former is really describing the latter, which itself has no description at all), but otherwise doing nothing.
My question is:
Should we do anything to sort out this proliferation of related tags?
ie...
- Should we add / modify the tag guidance to better-clarify the role of each tag?
- Should some tags be merged?
- Is the status quo good enough as-is?