Tip: I've found this project
for finding a classes with a given interface
But Apollo is just an "entity" framework currently, but it is possible to add common packages such as:
- Collision detection and handling
- AI behavior trees
So far I've not wanted to add these, not as part of the core framework, because it introduces assumptions of what the framework is targeted for, e.g. 2D or 3D, or excludes possibility of using other solutions for those problems.
Just build a library, like "Apollo Commons" and provide a set of components and builder, with examples to build some basic games. For example: a top-down 2d shooter with Fizzy? , a 2d platform (slick based), a 3d shooter (jmonkey) as proof of concept how to use different spatial to render in 3d same top-down 2d shooter.
In my experience build a generic framework is hard and require a lot of time. Start from a simple game, then share components and iterate!
So, my question is:
1) Should Apollo be more than just an entity framework?
2) Should Apollo be targeted for generic 2D games?
3) Should Apollo include those common packages we all have to implement anyway?
1) not apollo, somethink build on top of it, yes
2) not only, with different spatials and rendering systems, 3d could be possible (with simple games, of course! not like Crysis-stuff)
3) as separated library, yes.
For example, some components/systems (I don't know if is okay to call them so):
1) positionComponent: x,y,z coordinate (3d only? or 2d and 3d ?)
2) velocityComponent, mixed with position => TransformComponent?
3) a way to control input from player in a simple way: topDownController, PlatformController and so on
4) an example how to handle a decent gui (not apollo-related problem, but users will ask you anyway
5) Fizzy/Jbox/Phys2d system example
6) behaviour tree
7) pathfinding => for 2d slick pathfinding works well.. in tiled based games, but in not-tile worlds?
1) build a simple 2d top down game