Category Archives: Games development

Ashley 1.2.0 released

ashley-small

There have been quite a few things happening in Ashley during the past month, enough to call for a brand new release. Ashley 1.2.0 can now be fetched from Maven Central and this is what you’ll find new.

  • API addition: people requested to put Entity#getComponent(Class) back in, so we accepted SgtCODFish‘s PR. ComponentMapper is still the most efficient and encouraged method to retrieve an entity’s components.
  • API addition: added PooledEngine#clearPools() to delete unused entity and component pool memory.
  • API addition: adds EntitySystem#setProcessing(boolean) so as to be able to enable/disable systems at will.
  • API addition: adds Engine#getSystems().
  • API addition: you can now listen to entity events on a per family basis.
  • Crash fix: things would blow up if you deleted entities from IteratingSystem#processEntity().
  • Bug fix: removing listeners while dispatching a Signal would make other listeners miss the event. Thanks to vlaaad for the PR!
  • Bug fix: some entities were skipped if the user removed an entity from the engine mid system update. Removing an entity from a system by changing its components mid iteration also caused problems, which are now solved.
  • Bug fix: there was a problem with family membership not being properly updated when removing a component from an entity was supposed to result in said entity being added to the family. This only affected families that exclude components.
  • Internals: small performance improvement.
  • Others: added benchmark suite to compare Ashley’s performance with Atermis’.

If you’re using the nightly builds, please change your dependency to com.badlogicgames.ashley:ashley:1.2.1-SNAPSHOT. Both the wiki and the javadocs have been updated to reflect the latest changes.

Thanks to everyone using Ashley, opening issues and, of course, sending pull requests. I’m extremely pleased with the response, it’s awesome to see how active things are.

Keep it up guys!

Ashley 1.1.0 released

ashley-small

Just under a month of the first official release we are ready to release a new stable version: Ashley 1.1.0. Here is the list of changes.

  • Performance improvements: massive performance gains with O(1) component retrieval through ComponentMapper and the use of Array<Entity> rather than IntMap<Entity>. Unfortunately this changes the API slightly, but hopefully you guys will appreciate the benefits.
  • Complete Ashley manual: now the wiki has a lot more content, it fully covers Ashley. The rest is sugar.
  • API Cleanup: renames Family.getFamilyFor() to Family.getFor() for simplicity.
  • Configurable pools: PooledEngine now accepts the initial and maximum sizes for the entity and components pools. This will add a lot more flexibility to bigger games.
  • Libgdx 1.3.0: Ashley now depends on gdx-core 1.3.0.

Keep the feedback coming and happy coding!

Finally, Ashley has a logo

ashley-small

Ashley now has a logo and it’s awesome! What an amazing contribution.

This is really good news because Ashley lacked an image to make it a bit more memorable. Now back to work, there will soon be a new release. Despite it involving some API changes, it will make for a much faster framework.

Ashley javadocs and wiki

Ashley, your favourite entity framework now has online javadocs and a wiki.

Wooohooo!

The javadocs correspond to the latest repository snapshot. Our Jenkins instance grabs the code, runs the tests, builds the jars and publishes the javadocs to the badlogic.com server. Kudos to Mario for the setup.

I just started putting stuff into the wiki yesterday so it’s pretty empty as of now. Expect more content soon!

Libgdx setup tool now supports Ashley

gdx-setup ashley

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: com.badlogicgames.ashley:ashley:1.0.1
  • Android project: com.badlogicgames.ashley:ashley:1.0.1
  • GWT project: com.badlogicgames.ashley:ashley:1.0.1:sources

Remember that using Ashley in non Libgdx projects is also perfectly fine.