1
\$\begingroup\$

Coming from an MVC background, I am trying to understand Entity-Component based model. However, i can see description about the use components( data objects ) and entities ( group of different data-objects ie components), but cannot see how view is created. I can see something called "render" components though. But how would i use it ? It seems, i don't need to bother about separation of view from data in this architecture. But i doubt, if this is the case, then things would mess up.

\$\endgroup\$
3
  • 1
    \$\begingroup\$ This question probably can't be answered in a reasonable manner, TBH. There's no point in comparing MVC and CBES, they're trying to achieve different goals using different means. Just read the T=Machine articles with a clear mind and forget about your background. \$\endgroup\$
    – dreta
    Jan 27, 2013 at 16:59
  • \$\begingroup\$ I agree with @dreta. (Also, are you dreta from the Crunchbang forums?) \$\endgroup\$
    – jcora
    Jan 27, 2013 at 17:46
  • \$\begingroup\$ @Yannbane No, sorry. \$\endgroup\$
    – dreta
    Jan 27, 2013 at 18:34

1 Answer 1

4
\$\begingroup\$

Entity-Component systems are different from MVC systems. Specifically, an Entity-Component system is not a type of MVC system.

There are a broad range of component-based entity systems, each of them handling this a bit differently, but the way I decouple drawing from data is to use Systems. A system is a class that takes data from components and works with them as a group. Some examples of systems would be a CollisionDetectionSystem or an AnimationSystem or, being the point of this question, a GraphicsSystem. The GraphicsSystem would be registered with each component, and they could pass in their data to the system.

This pattern lets you decouple most, if not all logic from components (including rendering). There are definitely other ways of doing it, but I've found this one to be the most straightforward.

\$\endgroup\$
2
  • \$\begingroup\$ W.R.T "The GraphicsSystem would be registered with each component" . Does "registration" functions similar to how "eventlistners" work ? \$\endgroup\$
    – Vishwas
    Jan 27, 2013 at 18:54
  • \$\begingroup\$ Not necessarily, what I mean by registered is that each component receives each system once, either when the system is added or when the component is added. This can either be a message or a method with a System parameter. You should also do the same when the system is being removed, so that the component can clean up it's own data from the system. \$\endgroup\$ Jan 27, 2013 at 19:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .