Systems missing from usage example in README.md
Hi,
The example in README.md is a bit contrived (string/int components -- useful for testing though). In particular, it doesn't explain how to use systems.
ECS libraries can do things different ways, and I think Eskimo is missing a sort of "philosophical design" part that states things like (if I got this right):
- Entities are just an ID and a bag of components
- Components can be any class, and are usually just data
- Views allow you to filter (and operate) on entities that have a particular set of components
- Systems ... ???
In particular, I thought systems are supposed to be a "super-set" of views: they filter and select entities with the right set of components, and they have some "update" method or something that they operate across all components (eg. find all entities with position and velocity components, and move the position according to the velocity).
How is Eskimo supposed to work with regards to systems?
Good call!
Originally, I didn't even want to add Systems to Eskimo, since they are completely utility/helper objects, rather than core to the design.
Your descriptions are good, I'll probably copy-paste them + expand on them if I may : ) Systems are modular pieces of logic. You can easily use ECS data and entity management, but program all of your functionality in 1 class, 1 function, or however you want to split everything, but Systems offer a very compartmentalized way of doing so, and sort of enforces stricter logic boundaries. I use it usually, but at the same time I've started to be less strict about how they communicate.
Systems are a utility to organize your own code, but definitely not necessary to use Eskimo as an ECS.
Ah, that's the trick. Sneaky! You're not committing to any one particular "style" of ECS, but allowing users to use it to fit whatever design they like.
Thanks for clarifying. You can close this issue if you like, or leave it open until you're done documenting whatever it is you want to add.