luxeengine / alpha

alpha - deprecated 2015~2016. unrelated to the new engine! view the new engine here - https://luxeengine.com/
MIT License
565 stars 74 forks source link

Entity Systems #374

Closed xSke closed 8 years ago

xSke commented 8 years ago

Entity Systems, the last part of the ECS trinity, allows for separation of code and data. Given Luxe's architecture of optionality, I believe entity systems are a perfect fit.

A system is a block of code that operates on all entities with a given set of components. For example, a movement system can operate on all entities with a Movement component, an Input component and a PhysicsBody component.

I personally find the Unity-style approach of ECS very limiting, and it would be great to have real ECS with systems as an optional feature in Luxe.

See: http://www.gamedev.net/page/resources/_/technical/game-programming/understanding-component-entity-systems-r3013

ruby0x1 commented 8 years ago

Thanks for the links, I'm aware of the differences :) For what it's worth, I think it's a weird comparison to Unity because "component contains logic and data" wasn't born there and has long roots in games. I am aware of the considerations with systems and components being data only, too, but the placeholder implementation is a simple and clear approach that many users like.

As with all engine pieces during the alpha, when the entity system gets to it's focus sheet it will be tackled! At the moment the focus is on the renderer, but after that the existing entity component model will be addressed.

It's also worth noting that the current entity implementation isn't required, you don't have to interact with the defaults and can use the things they specialize over. But again, this will be addressed after the rendering since that's the biggest chunk of work at hand. Thanks!

buckle2000 commented 8 years ago

This might help: A ECS framework written in Haxe: Eskimo also the 3rd ECS framework written by its author.