Talk:Entity component system

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

ECS follows the composition over inheritance principle[edit]

I find this statement, especially with the link to the corresponding article, misleading.

It is correct that entities can be composed via components.

The concept, as an abstract concept, fits, but the object-oriented method method of the linked article is not necessarily used, because an ECS system is not necessarily implemented in this way. In fact, an entity does not even have to be a real object of the programming language. — Preceding unsigned comment added by 109.193.74.20 (talk) 09:33, 17 June 2020 (UTC)[reply]

The statement links our thoughts to the idea of composition. I find the statement "An ECS follows the principle of composition over inheritance, meaning that every entity is defined not by a "type" clarifying, as it tries to explain ECS by relating to similar ideas, which I think is the purpose of the statement.
I am not sure what "linked article" this comment refers to?
The statement in this comment "the object-oriented method method of the linked article is not necessarily used, because an ECS system is not necessarily implemented in this way" talks about implementation, which is not what the discussed statement in the page is about. Since alternative implementations are discussed in the article, I think this point has been addressed. 78.72.87.250 (talk) 11:12, 23 March 2022 (UTC)[reply]

Is Hello world an example of ECS[edit]

Is a hello world program an example of ECS architecture?

int main() { printf("Hello, world!\n"); }

The entities are messages, in this case a greeting. The components are details of the message, for example the message's text "Hello, world!" or perhaps the message's font or color. The system in this case is the entity-renderer, that renders messages to the screen. In this case, the system looks only at the text component of the entity and not other entity components.

Doubledork (talk) 20:43, 9 August 2019 (UTC)[reply]

No. This confuses the model with the thing being modeled. What you are describing is how an ECS-architected compiler might model a Hello World program, which says nothing of the architecture of the Hello World program itelf.

Keep in mind that everything can be *modeled* by ECS architecture, including computer programs themselves, like your Hello World program. ECS is, like OOP or procedural coding, a method for modeling or structuring within computer programs. But not every computer program is therefore ECS-architected.

100.16.231.141 (talk) — Preceding undated comment added 06:54, 8 December 2021 (UTC)[reply]

Someone renamed the page[edit]

It's "Entity Component System" not "Entity-Component-System". If you want to call it something that no-one else does, you at least need to find a citation; can you find even one? Difficult - very few (if any!) authors use hypens, dashes, or similar. There's good reason: it's not a list of nouns, its a proper name.

I tried undoing the breaking change (name of the page) but it requires special permissions. Perhaps someone else can fix it?

90.217.84.110 (talk) 16:44, 20 November 2016 (UTC)[reply]

Hi, I moved the page originally and have just moved it back. I was not aware that anyone objected to the move. Qzekrom (talk) 00:02, 16 February 2019 (UTC)[reply]
I would like to point out that "Entity-Component-System" is unambiguous, as it makes it clear that "entity" "component" and "system" are all first-class (equally important). "Entity Component System" is initially parsed as (((entity) component) system) which is a system of components of entities. Sadly I see this in issue in many compound nouns in English.
Edit: actually the first way it would be parsed is (entity (component (system))), but the parse I mentioned above is a but more logical, as "entity component" is a known compound (at least to me). Yodo9000 (talk) 13:49, 26 January 2024 (UTC)[reply]

Drawback section[edit]

This section seems a little weird to me. Most of the drawbacks are - as is also pointed out in the article - not a hard problem but an implementation detail. The entire Composability sub-section reads more like an advantage of ECS design. --37.123.160.222 (talk) 10:11, 30 March 2015 (UTC)[reply]

No canonical ECS[edit]

This page needs to address the fact that there are many, many different ideas on what ECS *is*. There's many similarities between them, but many differences.

Sometimes the focus is simply on getting away from inheritance hierarchies and transitioning to composition as soon as possible.

Sometimes the focus is on Data Oriented Design, and extremely efficient memory access patterns within each system, due to per-system data being isolated and compacted from other systems.

Sometimes the focus is on duck typing, or being able to query if an entity has a component of a specific type. This focus is often used to allow components to implicitly link to each other -- e.g. if adding "Poisoned" to a character, it will automatically seek out the character's "Health" component. If the "Heal" component is active, it will seek out any components that support the "DamageDealer" interface (which "Poisoned" does), and remove them from the character.

Those are all very different areas of focus, or goals that the ECS system is designed to achieve / solve... and all of these conflicting designs are promoted by different authors, under the same common name of ECS.

If Wikipedia is going to act as a central authority on this subject, it needs to extract just the common parts (Entities are collections of Components - that's about it), and then describe several variations on the concept, with sources for each variation. — Preceding unsigned comment added by 124.149.150.144 (talk) 15:04, 26 October 2013 (UTC)[reply]

Not really. Anyone can write a line of code and call it an ECS, but the vast bulk of the documented ECS's all sit in the same narrow definition. Look at the open-source ECS's (many on GitHub, many on the ES Wiki). Look at the blog posts and articles frequently posted to places like Reddit's /r/gamedev, to AltDevBlog, etc. Look at the Twitter conversations and the post-mortem talks on the conference circuit. 188.31.213.229 (talk) 21:59, 9 February 2014 (UTC)[reply]

Unity[edit]

I've added in brief mention of Unity3D in the new History section, even though (as a previous editor mentioned) it's *probably* not what we think of as an ECS.

Explanation: 1. It's very widely described as "an ECS" due to the similar naming of Entity and Component (even if Unity doesn't describe it that way themselves, other people do). If Unity3D isn't included on this page, we'd need at least a disambiguation page for it. 2. It's relevant to the history of mainstream ECS's, having drawn attention to the core concepts (even if it does't implement them particularly cleanly) 3. Arguably, Unity3D's ECS is a weaker subset of the ECS described here. Arguably - it's not "not an ECS", it's just a very very basic one.

...which I felt was reason enough to at least mention and link it! — Preceding unsigned comment added by 188.29.90.59 (talk) 15:14, 25 December 2013 (UTC)[reply]

...and someone then deleted without bothering to read the Talk page. What's the point? — Preceding unsigned comment added by 86.157.102.83 (talk) 23:40, 29 April 2014 (UTC)[reply]

It's just the relational model[edit]

ECS is just a buzzword for relational model, except with the restriction that you're only allowed to use one kind of key (an entity ID)... right? That's not really computer science encyclopedia worthy, is it? 203.206.138.51 (talk) 06:53, 9 October 2018 (UTC)[reply]

  • I came here to say this. It sounds like a thin veneer over a hashmap tbh. On the other hand, the engines/makers themselves refer to this as a specific pattern, and learning resources for game software design exist that center around this topic. If there is more academic writing on this specific topic It would aid notability horsedreamer 17:48, 19 March 2021 (UTC)[reply]
It's a pattern for composing... "things" in a virtual (game-) world. Some parts about implementations might have muddied the waters a bit, but the concept of an ECS is at least one level of abstractions above concepts like hashmaps etc. 85.144.95.212 (talk) 11:05, 21 November 2023 (UTC)[reply]

History[edit]

This section is listing a mixture of Entity/Component frameworks, and Entity/Component/System frameworks. These two architectures are quite different. — Preceding unsigned comment added by 203.206.138.51 (talk) 06:58, 9 October 2018 (UTC)[reply]

The ECS architecture has no trouble with dependency problems commonly found in Object Oriented Programming[edit]

The "dependency problems found [...]" would ideally be qualified. I can guess/imagine what is meant, but it would be better to not have to guess. — Preceding unsigned comment added by 78.72.87.250 (talk) 11:17, 23 March 2022 (UTC)[reply]

Suggest: Split the section "Common patterns in Database styled ECS"[edit]

The last section (found under "Common patterns in Database styled ECS") is talkative but illuminating as it relates ECS to other programming concepts. Its quality can be improved but is a good start. However, the section heading is off. The material is more general, AFAICS. — Preceding unsigned comment added by 78.72.87.250 (talk) 11:20, 23 March 2022 (UTC)[reply]

Who is Adam Martin and why is he in this article?[edit]

Why does his name appear throughout this article? His blog is not popular (despite the article's claims), and it doesn't even show up on the google search results for his name, or for the name of his blog. He doesn't appear to have even implemented an ECS, just written about them.

It looks to me like some guy just edited the article to promote his own blog. Can we remove mentions of people that aren't widely regarded as being important and relevant to the subject matter? 174.21.167.46 (talk) 23:49, 27 June 2023 (UTC)[reply]

The Adam Martin content was included in the initial "History" section, added in December 2013. So he didn't just insert his name in various places, he also contributed a section at the same time (assuming it was Adam that made those commits, they're not from a signed in user).
I made things worse when I reorganized content to try to make sense of it. I misread the topic, and believed that Adam Martin had worked on "Operation Flashpoint: Dragon Rising" and had pioneered the early terminology. I was mistaken. So at least that should be cleaned up.
I couldn't find info explaining how Codemasters used ECS in Operation Flashpoint: Dragon Rising. I guess it can be left with a "missing citation" tag. Redlever (talk) 02:45, 3 November 2023 (UTC)[reply]
The description of the section generously called "Martin's ECS" is also very generic for an ECS. It really seems like they just wanted to sneak their own name into the history books. The same goes for the same-level section "FLECS", by the way - it's literally just one sentence of marketing text. In that parent section "Variations", only "The Unity game engine" and "Apparatus ECS" really describe their respective variation from a "standard" ECS.
On a more constructive note: The section "Martin's ECS" could be purged of explicit mentions of Adam Martin and how popular his blog is, and then be renamed to something like "(Most) Common Interpretation", adding links to his blog and others to support that section title. 85.144.95.212 (talk) 10:48, 21 November 2023 (UTC)[reply]