All posts by David Saltares

Libgdx Cookbook samples updated to support Libgdx 1.6.0

libgdx cross platform development cookbook

Haven’t bought Libgdx Cross-platform Game Development Cookbook yet? Stop reading and go get it!

Quick update to inform you that I just updated the samples repository to use Libgdx 1.6.0 and Ashley 1.5.0, both recently released. Libgdx 1.6.0 introduces changes in our font rendering API, which require a few minor tweaks to the framework calls, nothing major.

7 months after the release of the book, we continue to support it. Rest assured, it is the most up to date Libgdx publication at this point in time.

Thanks for your support!

Ashley 1.5.0 released


Thanks to the contributors, here’s a new version of Ashley, which now stands at 1.5.0.

A new version of , your favourite component based entity framework is out. The version comes with a bunch of bug fixes that, hopefully, will iron out some of the rough edges in Ashley.

  • API addition: adds getFamily() method to IntervalIteratingSystem and IteratingSystem.
  • API change: IntervalSystem‘s update() method is now final, as it doesn’t make sense to override it.
  • Update: updated Libgdx version to 1.6.0.
  • Enhancement: allows IntervalSystem to update faster than the main loop.
  • Enhancement: improved hashCode() and equals() implementation of Family.
  • Bug fix: fixed GWT build and made a Jenkins job to make sure we also test GWT integrity.
  • Bug fix: empty Family now matches empty entities.

To use it, change your dependency to com.badlogicgames.gdx:ashley:1.5.0. The new nightly dependency is com.badlogicgames.gdx:ashley:1.5.1-SNAPSHOT.

As usual, all unit tests are passing and the wiki is up to date. Please keep up the good work sending more pull requests and reporting bugs.


For the past few weeks working on a new toy: Conjugate. It’s probably easier if I just stick a summary of the GitHub readme here.

Conjugate is a verb conjugator service. Enter a verb in English and get the conjugations for all tenses in a variety of languages.


Reason to be

When learning a new language, it is very common to struggle with verb conjugations. For example:

I want to know the third person singular form (masculine) of the future perfect tense of the verb to eat in French.

Unfortunately, the available resources are somehow limited:

  • Google translator: usually gets conjugations wrong for most languages, especially in terms of gender.
  • Apps: seriously? I don’t want to install yet another app!
  • Websites: lists are limited, the sites are old, full of ads and/or don’t play well with mobile devices.

Conjugate tries to solve that use case.

Project structure

The project is divided in two parts:

  • Scraper
  • Mobile friendly website


I wrote a web scraper in Python using BeautifulSoup4 that grabs translation and conjugation data from Verbix. This site doesn’t work very well on mobile, their API returns a 404 and their e-mail address is no longer valid. Honestly, I feared their comprehensive database is going to be lost at some point in the near future. Besides, they allow people to user their data for non profit purposes.

The script currently supports Romanian (which I’m trying to learn) and Spanish. Luckily, it’s pretty easy to add support for new languages, although no thanks to Verbix’s poor use of web standards.


Currently, I’m in the process of writing the mobile friendly application. It’ll be extremely simple:

  1. Enter a verb in English (infinitive).
  2. Select a language from a dropdown.
  3. Hit “Go”.


For the backend I’m using Flask and sqlalchemy to keep things in the Python world, not to mention that they’re really easy to get started with. Not too sure about the frontend, but I’ll probably go for a framework that makes responsive design simple enough.

Any suggestions?


I’ve been pretty lazy these days, blame it on FarCry 4 and Daredevil but I hope to report some progress on the project soon. Of course, I’d be more than happy to accept PR’s if you’re interested to help!

New domain and hosting

It’s been over 5 years since I registered At that time, I also signed up for a shared hosting plan with Hostgator. Unfortunately, I’m no longer 16 years old, so the domain felt a bit dated. A change was long overdue, but I can be real lazy during the weekend. Finally I got around to do a proper migration of both domain name and hosting.

Welcome to!

Here’s a brief of my experience with Hostgator and the migration process.


Hostgator wasn’t actually that bad. It had excellent client support and my plan offered “unlimited” disk space and monthly data transfer at a fair price. However, at the end of the day, both were limited by the number of people you shared your instance with. In all honestly, the uptime could have been better as it wasn’t rare for me to get notifications about the blog being unreachable.

The worst part about Hostgator were the access limitations. I couldn’t just run whatever software I wanted on the server. Whilst it supported PHP, I believe Java or Python weren’t among the list. I simply didn’t have the permissions to install anything.


A few friends have Digital Ocean droplets and are very happy with the service, so I went for it and got my Ubuntu SSD machine. I took advantage of the GitHub student pack, which offers a $100 voucher, meaning I don’t have to pay at all for the first 20 months.

Yes, you have to set absolutely everything up yourself, including a web server, PHP, MySQL, etc. Conveniently, Digital Ocean’s website has a myriad of tutorials with detailed steps on how to do all of this. Great way to polish up my rusty Linux skills.


After digging around for a bit, I registered with Namecheap. Despite being put off by the name, a lot of people recommended it and now I can see why. The DNS setup propagated extremely quickly and there is no fuss. Additionally, it’s really easy to find a discount code, so I got the domain during a year for £6, not bad.

All of this should have been seamless for everyone, so please contact me if something is not working quite well. Requests to now point to my droplet, so the old domain points to the same thing as

Libgdx Cookbook samples updated

libgdx cross platform development cookbook

It’s been a few months since Libgdx Cross-platform Game Development Cookbook came out. Quite a few things have happened since then in the Libgdx world, libraries are updated and some things break over time.

As promised, we have updated our samples repository to use the latest versions of Libgdx (1.5.5), Ashley (1.4.0), gdx-ai (1.5.0) and RoboVM (1.0.0) among others. Luckily enough, only a few changes were necessary to make everything work again.

I’m very pleased to see that, 5 months after the book came out, it’s still as relevant as it was on launch day. Moreover, people seem to like it!

This cookbook is certainly a great resource for learning and improving your libgdx skills and in my opinion it is the best book on libgdx at the moment […]