All posts by David Saltares

The future of affordable high end Android phones

The Google Nexus product line has always been the reference when it came to affordable high end smartphones. However, that seems to have changed a couple of days ago, the second the Nexus 6 was announced with a starting price tag of $649. Let us not forget that one could get a Nexus 5 for only $349.

The recently announced Google Nexus 6
The recently announced Google Nexus 6

As many have pointed out, this is most likely Google’s response to the pressure other vendors have put on the former. Nexus’ low prices were damaging companies such as HTC, Sony and, to a lower degree, Samsung. Of course, Google does not seek these companies to stop making Android devices, do they?

I want to get a high spec Android phone that won’t set me back too badly.

Recently, I asked myself the same question.

Normally I don’t follow the latest gadgets too closely as I find the topic rather boring and repetitive. Nevertheless, one must do his little research when looking for a new phone. Right?

The aforementioned brands, especially Sony, offer prohibitive prices for their flagship devices, unless you want to sell your soul to some carrier for 2 years. I’m talking well over $500. That pushed me to look into the Asian brands.

The pricey HTC One m8
The pricey HTC One m8

Loaded with skepticism and possibly prejudices, I started checking out reviews of devices like the Xiaomi Mi 4 ($399) and the OnePlus One ($299). Both of them feature a 2.5Ghz quad core processor, 3GB RAM, decent batteries, high quality lenses and a big ass screen (5″ and 5.5″ respectively). While the Xiaomi runs MIUI, the OnePlus One uses CyanogenMod, both popular Android flavours with strong support and frequent updates.

Surely they are built with poor quality materials.

After trying a OnePlus One from a friend, I was really impressed with its built quality. Undoubtedly, it’s at the same level of its overly expensive counterparts. And for half the price! It’s ridiculous.

Finally, I got my own.

Here's the OnePlus One
Here’s the OnePlus One

These devices are extremely successful in the Asian market but it is fairly rare to see them in the UK. My wild guess is that western consumers still don’t trust these new Asian successes, which is funny, since HTC is Chinese, Samsung is South Korean and Sony is Japanese.

I can honestly say, these claims are unfounded.

As OnePlus and Xiaomi become more and more popular in the west, other brands will have to rethink their strategy. How are they supposed to compete against same spec and similar built quality for half the price.

Interesting times might be coming to the mobile scene.

Ashley 1.3.1 released


Small stability release for Ashley entity framework this time.

Bug fix: fixed IllegalArgumentException thrown when trying to remove components from an already reset entity. The call has no effect now. Thanks for that SgtCoDFish.
Bug fix: fixed family match failure due to silly silly hashing.
Bug fix: fixed entity.getId() always returning 0 for recycled pooled entities.
Bug fix: fixed nested iteration problem caused by adding/removing entities from an entity added/removed listener handler.
Bug fix: fixed missing type error in GWT when using PooledEngine. GWT should be quite smooth now.

The new nightly dependency is com.badlogicgames.gdx:ashley:1.3.2-SNAPSHOT.

Big thanks to everyone who reported issues and especially to those who also contributed with PRs. Keep it up!

Ashley 1.3.0 released


Time for another Ashley entity framework release! This time, the focus has been on stability by getting rid of as many bugs as we could find. Check all the new goodies below.

  • API addition: adds IntervalSystem and IntervalIteratingSystem, which are updated at a fixed interval.
  • API addition: adds getEntities() to IteratingSystem and IntervalIteratingSystem.
  • API change: entities use long as ID. Changes entity.getIndex() for entity.getId(). Ids are reset to 0 after the entity is removed from the engine.
  • Bug fix: we finally got rid of the issues related to deleting entities and adding/removing components mid system processing.
  • Bug fix: fixes problem with removing pooled entities.
  • Bug fix: fixes pooled entities not being fully reset.
  • Bug fix: fixes broken GWT compatibility.

The new nightly dependency is com.badlogicgames.gdx:ashley:1.3.1-SNAPSHOT.

As usual, open a new issue if you find anything that’s not working properly and feel free to submit a pull request!

Libgdx Cookbook Git repository evolution

As I have mentioned before, I have been working on a book titled Libgdx Cross-platform Game Development Cookbook, which is set to be released next month.

Me and my co-author Alberto used a Git repository throughout the text and sample code development process. Using Gource, I have created a video that illustrates the repository’s evolution. Neat, isn’t it?

For those interested, here are the options I used.

gource -1280x720 --seconds-per-day 0.5 --auto-skip-seconds 0.5 --key

Ashley 1.2.0 released


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!