These days, I'm doing some research on component-based entity systems. I had a first approximation, using a blackboard pattern at the entity level, and with components sharing this blackboard to do communication.
Doing this research, I found an entity framework called Artemis, that follows a FRP structure for the entity management. The idea seems pretty good, and I'm thinking of integrating in to my engine. I have some questions that need to be solved to fully understand this "odd" architecture:
In my first approximation, the way components shared data is pretty straight forward, following the blackboard pattern. How should this be done, following FRP? It seems each system would be the ones holding all dependencies to the components, making components totally decoupled. If the collision system needs to know about physic component, movable system, etc; the collision system would import all of these components, and do all needed work with them. Is that right?
Would each system be a homogeneous or heterogeneous component container? I guess its system has to be homogeneous, related to the component type it holds, because the system needs to know the component data, to play with it during updates. This leads me to next question:
Does this architecture lead to too many system/components?
How does an event system fit in to this structure? I usually have slot/signals in game objects, for this, but it seems there is no "Entity" concept with the Artemis structure.