Book review: Clean Code

I recently had the pleasure to attend a few lectures by Robert C. Martin, also known as Uncle Bob. He’s a software consultant, speaker and fierce advocate of agile methodologies as well as TDD. Not only were the talks entertaining, but also deeply inspirational. Seeking more information on his ideas, I decided that it would be good to take a look at his flagship book, Clean Code. And so I read it. Read On →

Libgdx at Kingston University

Last Monday 24th of November I delivered a small lecture about Libgdx at Kingston University of London. This complements Alberto’s Libgdx workshop at Cadiz University last week as part of a series of activities to promote Libgdx and our recently released book. I talked about what Libgdx can offer developers as well as the advantages of using open source tools as opposed to proprietary technologies, especially when it comes to students. Read On →

Libgdx workshop at Cadiz University

Alberto Cejas, colleague and co-author of Libgdx Cross-platform Game Development Cookbook delivered a Libgdx workshop at Cadiz University (Spain) last Friday 21st of November. During a 2 hour session, the students put together a bunch of pieces to build Flappy Plane, a Flappy Bird clone originally developed by Mario Zechner. Moreover, there was free stuff! Alberto did a small raffle and gave two copies of our book away. We’re really happy with the turnout, just take a look at the gallery below! Read On →

Ashley 1.3.2 released

More features, bug fixes and improvements for Ashley entity framework on this new release. API addition: we now use a builder pattern to create Family objects. More about it on the wiki. API addition: new SortedIteratingSystem by Lusito. API addition: now ImmutableArray implements the Iterable interface, which makes it a lot easier to iterate over entity collections. Bug fix: avoid double entity removal by accident. Bug fix: fixes StackOverflowError when processing entity operations. Read On →

Upcoming talk at Kingston University

I’ll be delivering a small presentation to the games development students at Kingston University of London on Monday November 24th. The reason behind the talk is the recent publication of our Libgdx Cookbook, which is why I will be giving away two hard copies! Come along to hear me preach about all Libgdx things. Naturally, I’ll post the slides here for whoever’s interested.

We have a Libgdx Cookbook winner!

To celebrate the release of our Libgdx Cross-platform Game Development Cookbook we announced a raffle on Twitter earlier this week. A few RTs later and a random number generation, the winner is. Rafael Giordanno Congratulations, we’ll get in touch with the winner to send him his paperback copy. Here’s proof that everything was legit: Participants list Random draw

Get a free Libgdx Cookbook!

In order to spread the good word of Libgdx Cross-platform Game Development Cookbook, Alberto and I suggested Packt Publishing the idea of a raffle. Simply give us a retweet to enter the giveaway. We’ll announce the winners on Friday 7th November. Want a free copy of our Libgdx Cross-platform Game Development Cookbook? RT to enter the raffle! — David Saltares (@d_saltares) November 3, 2014 Good luck!

Libgdx for Cross-platform Game Development Cookbook is out!

After over a year of long hours after my day job, sweat, blood and tears, my colleague Alberto Cejas and I are extremely proud to announce that our Libgdx for Cross-platform Game Development Cookbook has finally been published. The cookbook has over 75 practical recipes on how to get stuff done with Libgdx. It covers pretty much everything: graphics, input, audio, physics, maps, deployment and third-party extensions among many, many more. Read On →

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. As many have pointed out, this is most likely Google’s response to the pressure other vendors have put on the former. Read On →

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 `` for recycled pooled entities. Bug fix: fixed nested iteration problem caused by adding/removing entities from an entity added/removed listener handler. Read On →

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. Read On →

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. Read On →

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. Read On →

Ashley 1.1.0 released

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. Read On →

Finally, Ashley has a logo

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 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!

Super Jumper Ashley remake

Ashley Super Jumper has been my weekend project. It is nothing more than a clone of the Libgdx demo game. The catch is that it goes for an entity system approach rather than the classic inheritance model. Naturally, it uses Ashley. The point was to have a reference project folks could check out in order to understand how entity systems in general and Ashley in particular work. Maybe one day, I’ll post a proper article explaining the design behind the entity systems at play in Super Jumper. Read On →

Libgdx setup tool now supports 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. Read On →

5 years old

This blog is now a lustrum old. A few days ago I received the yearly invoice from the hosting company, curiosity kicked in and made me check the date for the first one. I was surprised to see it’s from July 2009 and thought a recap was in order. It might have been possible to say that 5 years can make a blog be referred to as veteran. If we were in 2010. Read On →

Ashley 1.0.1 released

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. Read On →

Ashley entity framework

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. Read On →

Libgdx Cross-platform Development Cookbook announced

Almost a year ago, I started working on a Libgdx recipe book with Alberto Cejas, an old University mate. Now, Packt Publishing, have announced the project on their website, Libgdx Cross-platform Development Cookbook. You can even pre-order a printed copy or the e-book version (DRM free). Exciting times! The book offers step-by-step guides on how to master Libgdx subsystems to build 2D games that run almost everywhere: Windows, GNU/Linux, Mac, Android, iOS and browsers. Read On →

Homefront: The Revolution E3 stage demo

You’ll have to excuse some Homefront: The Revolution spam in the blog these days. E3 2014 is on and, for the very first time, they’re showing gameplay of the game I worked on at Crytek UK for two years. Exciting! Without further ado, I’ll let you see how awesome it looks.

Homefront: The Revolution announced!

At last! The game I worked on during my 2 years at Crytek UK has been announced with an amazing trailer. Big congratulations at the Nottingham team for the huge effort put into this project. What a bunch of incredibly talented people, I’m really honoured to have been part of the project. I mainly worked on emergent AI systems for NPCs and animation. Unfortunately, you cannot see much of that on this trailer. Read On →

Ludum Dare #29: Beneath the surface

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: Read On →

Ludum Dare #29: I'm in!

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. Read On →

ListenerSet using variadic templates

Important: variadic templates are only available from C++11, make sure your compiler supports it. Who has never used the Observer pattern? As long as you have been involved in any medium sized project, chances are you have come across it at some point. The problem It is extremely common to have an event generating system other components would like to subscribe to. However, oftentimes I see code to manage a collection of listeners being unnecessarily duplicated on a per system basis. Read On →

Castilla: La Mancha University talk

Oh $deity, it is hard to be back after a 5 day break! Following a healing long weekend in Madrid, yesterday I went over to Ciudad Real to deliver my presentation titled “How to break into the Games Industry with Open Source Software” at the engineering university school. I would dare to say it was well received. A zero total count of rotten tomatoes thrown at me shall be good enough of an indicator to back up my previous statement. Read On →

Talk at UCLM

Next April 22nd I’ll be giving a talk at Castilla: La Mancha University (Spain). I’ll be addressing the students enrolled in their games development course who bother attending to listen to whatever I’m going to say. The talk will focus on how open source projects help you get into the industry, which is something I’ve been writing about lately. But I guess I’ll end up talking about tangential matters such as student life as well as my experience at Crytek and Sony. Read On →

Libgdx has >1M LoC project

Don’t exactly remember how, but last night I came across Code Analyzer, an open source Java desktop utility that counts lines of code. Out of curiosity, I downloaded the runnable jar file and tried it with Libgdx. I was very much aware that Libgdx was a pretty big project but certainly didn’t expect it to be that large. At the time of writing the HEAD of the repository contains 1. Read On →