Jump to content

Talk:Entity component system: Difference between revisions

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
Content deleted Content added
Hd (talk | contribs)
Tags: Mobile edit Mobile web edit
Line 23: Line 23:


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

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.

[[Special:Contributions/100.16.231.141|100.16.231.141]] ([[User talk:100.16.231.141|talk]])


== Someone renamed the page ==
== Someone renamed the page ==

Revision as of 06:54, 8 December 2021

WikiProject iconSoftware: Computing Start‑class
WikiProject iconThis article is within the scope of WikiProject Software, a collaborative effort to improve the coverage of software on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
StartThis article has been rated as Start-class on Wikipedia's content assessment scale.
???This article has not yet received a rating on the project's importance scale.
Taskforce icon
This article is supported by WikiProject Computing.

ECS follows the composition over inheritance principle

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]

Is Hello world an example of ECS

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)

Someone renamed the page

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]

Drawback section

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

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

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

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]

History

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]