My few readers might remember I sometimes explore, and play with, game engines and libraries. I suppose it's a sort of “compensation” for my everyday work with not-so-exciting middle-ware and web-services projects. I already posted about Slick2D libraries for Java games but I was looking for something more complete and, most of all, that would allow me to develop also Android applications.
LibGDX is a Java game-engine that provide a vast variety of features for developing games. It's mostly aimed to 2D games development but it even provides some 3D features. In addition LibGDX can deploy games on different platforms like Java desktop or Applet, Android, HTML5 and IOS (with some extra requirement due to peculiar Apple developing policies). Last but not least a LibGDX project can include additional extension libraries helping to develop different aspects of game programming like AI, physics or networking (and this is the why of this post title).
First project creation
You don't have to download the whole LibGDX project in order to start to develop. LibGDX people suggest using the handy utility they provide, LibGDX Project Setup, in order to generate a skeleton project. The generated project will be based on the Gradle building tool that will think about downloading from the Internet all needed libraries and their dependencies.
In addition of LibGDX provided extension libraries the tool also allow you to add to your project a bunch of third party extensions.
While the tool was busy creating my project I got the following message complaining about Android API being too recent then recommended.
I selected “yes” and continued without any problem (by the way project target and minimal version can easily changed afterward).
Importing and running first project
From Eclipse IDE I selected the “Existing Projects into Workspace” import wizard
I then selected the project folder, where the project setup tool had previously written its files, and did choose the three listed projects for import.
LibGDX setup tool created three projects: the “-core” one, in my case LibGdxDemo-core, contains the game logic. The other projects, in this case marked by the “-desktop” and “-android” suffixes, hold the platform specific code and configurations.
Running the projects
I had to fix some configuration detail, like setting the minimal required version appropriate for my old device, but at last I've been able to run my demo project on both platforms: