These days I'm doing some research on Component based entity systems. I had a first aproximation using a blackboard pattern at Entity level and 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 managment. The idea seems pretty good and I'm thinking of integrating in my engine. But, I have some questions that need to be solved to fully understand this "odd" architecture:
1) In my first aproximation 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 depencencies to components (Making components totally decoupled). I mean, if the collision system needs to know about physic component, movable system, etc... The collision system would import all this components and do all needed work with them. Is this right?
2) Would each system be a homogeneus or heterogeneus component container? I guess it systms has to be homogeneus 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:
3) Doesn't this architecture leads to have too many system/components?
4) How does an event system fit in this structure? I ussually have slot/signals in game objects for this but it seems with artemis structure there's no "Entity" concept.
Sorry for the long question and thanks in advance.