Last night I added Ashley support to the official Libgdx setup tool. Creating Libgdx projects that use Ashley entity framework is now even easier. Simply make sure you tick the Ashley checkbox before generating your project.
By the way, if you already have a a project, adding the extra dependency is also trivial.
- Core project:
- Android project:
- GWT project:
Remember that using Ashley in non Libgdx projects is also perfectly fine.
Finally! 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:
- 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
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
Feel free to send your suggestions by opening an issue!
Loads of stuff in the pipeline lately: new job, finishing my book and some Ashley development. 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.
Stefan Batchmann started the project on February 2013. Since he is rather busy making actual games, he asked me to look after the project and I gladly accepted.
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.
The readme will help to you get started. Please, do not hesitate to open an issue if you find any problems. If you send a pull request, you will have our unconditional love.
Expect more Ashley related articles soon!
As I mentioned here a few days ago, last weekend I entered the 29th edition of the Ludum Dare game jam, which had Beneath the surface as a theme. To be completely honest, I was only bothered to work on the project for about 4 hours each day. That probably explains why is my worst game jam entry so far.
Beneath the surface is a very simple, classic text adventure where the player needs to escape an underground cave by using commands in the form of
verb object like:
The game is too basic and needed more user testing before the deadline. I was quite unhappy with it but then thought I’d rather submit it than dropping out completely. But hey, at least I managed to work on shaders a little bit, an area I really need to get better at.
Maybe next time I’ll manage to pull off something better.
I’m up for Ludum Dare despite not being too sure about whether or not I’ll be able to invest enough time on it. The last couple of editions eluded me, so I didn’t want to miss yet another one.
Given the time constraints, I might even go for just a text adventure. Or maybe not, who knows… I’ll decide in the morning, once the theme is announced!
Tools of the trade.
It is on!