What? You don’t know what Ashley is? Here is a brief, straight from GitHub.
A tiny entity framework written in Java. It’s inspired by frameworks like Ash (hence the name) and Artemis. Ashley tries to be a high-performance entity framework without the use of black-magic and thus making the API easy and transparent to use.
Long story short: Ashley is awesome.
Entity systems are really cool and can help you write cleaner game code, avoiding the classic inheritance hierarchy hell. This article does a pretty good job at explaining the benefits of entity systems.
It’s funny how strongly opinionated developers seem to feel towards entity systems. Some love them, some hate them. Have a read, experiment with Ashley and decide for yourself.
During the past couple of months me and a bunch of awesome collaborators have been working on a proper Ashley release and now it’s done. Here is the list of the new shiny features.
Mind that some of them break the previous API. However, this is our first official release, we’ll push hard to keep the API backwards compatible from now on.
- Gradle: we got rid of the Eclipse projects and now use Gradle to manage our dependencies and build process.
- Maven Central: Ashley is now available from Maven Central, which makes it dead easy for your project to depend on it. In Gradle, add the following dependency: compile “com.badlogicgames.ashley:ashley:1.0.1”.
- Jenkins build: Mario kindly offered us some server time to make sure Ashley is always stable.
- Unit tests: there are unit tests for pretty much every component in Ashley. They are run after every commit by our Jenkins job.
- Immutable collections: core Ashley classes now return ImmutableArray and ImmutableIntMap references, making it harder for client code to break the system.
- Family filtering: now we get the collection of entities that have a set of components, have at least one component from a given set and do not have a single component from another given set.
- GWT compatibility: you can now use Ashley for HTML5 games through the magic of GWT and Libgdx.
- Depends on gdx core: this has allowed us to remove all the duplicated optimised container classes and gives us a GWT compatible reflection API. Some might say it’s a big dependency but we do believe the pros outweigh the cons.
- Cleanup and bug fixes.
I try to keep an up-to-date TODO list with a very informal roadmap. Here is what to expect next:
- Performance tests and comparison with Artemis
- Make javadocs available online
- Complete wiki