Great write-up. I find this system a lot more friendly than previous attempts I've made at game programming, usually involving derived classes of a an Entity class that posses inherited function calls for things like Draw(), Move(), etc.
By using data-only entities, it becomes a lot simpler to create Draw and Move classes which take an entity as an object and use the data therein to perform the action described by their class name. This makes it a bit simpler at the "main" code loop, because you don't need to pass handles, etc. down to the entities in order to draw using the game engine.
Gaah that's addictive. I mean, the source and blog post is nice too, but that game...! :)
On a more serious note: I've never heard of ECS before, but it seems like it's been used in game development for a while. I feel like most data visualization projects these days (especially the ones using D3.js) use some form of ECS, although not necessarily out of deliberation. I wonder if there are best practices from game development that can aide the development of data visualizations
I've built a Component-Entity-System library in JavaScript a while back, and the code is quite similar. You can check it out at https://github.com/qiao/ces.js
Interesting. Working in my (first) game atm in my free time, was just about to refactor the enemy system, so this is a gios time to try something interesting like this!
By using data-only entities, it becomes a lot simpler to create Draw and Move classes which take an entity as an object and use the data therein to perform the action described by their class name. This makes it a bit simpler at the "main" code loop, because you don't need to pass handles, etc. down to the entities in order to draw using the game engine.