Hurray, yet another entity framework ;D what can I say, I love them… but this one has been dwelling in idle folders for a while, so instead of letting it to into byte oblivion I decided to freshen it up and put on google projects, so here is my post I posted on the Slick forums:
I haven’t been doing much game programming lately, but I have been working on this neat entity/component framework for a while and wanted to push it out into the world now that I think it’s relatively useful.
What’s the similarities between this and Artemis? Not a lot, but Apollo is more of an traditional way of using entities in your games, where you have an Entity object like a jar encapsulating the components, managers and other things. I will create a proper documentation once I get feedback. It’s a generic framework, meaning it can be used for 2D or 3D and whatever libraries.
I won’t go into much details here, I had previously submitted a thread on Apollo when it was in its infancy, but it has evolved more now.
So, without further delay I have provided Google projects (mercurial) access to both Apollo framework an example game (very simple):
Apollo homepage: http://gamadu.com/apollo/
Apollo Entity Framework
http://code.google.com/p/apollo-entity-framework/
Apollo warrior example game
http://code.google.com/p/apollo-warrior/
You can check both projects out (eclipse) and run without much trouble. Apollo warrior has all the dependencies it needs, and the Apollo framework has no external dependencies.
Please provide feedback.
Some clarification:
Managers: Used as something that has a specially organized collection of entities, or something that provides a special functionality to all entities. E.g. “Managing entities”, it’s an outside hands manipulating entities or something that keeps track of entities in some special manner, like tagging them, grouping them, etc.
Entities: Just a shell for components really. If you’re doing something in entities you’re doing it wrong, the Entity class should not really be extended in any way. There’s a built in event system as well.
Components: Data and functionality. Not much else to say.
Builders: Encourages you to put entity creation (templating) into these special builders that create new instances of entities along with all their components and events.
Spatials: Anything that is displayed needs to be a spatial. Spatial is a component and is rendered using a provided RenderManager. Node is spatial as well and allows you to attach multiple spatials to an entity, and that is useful beyond belief.