in Android, Programming

libgdx Android/desktop game development framework

For all of you interested in creating games for Android:

What is libgdx?

Libgdx is my attempt at a cross-platform game development library written in Java with some JNI code for performance hungry sections. It abstracts away the differences between writting desktop and Android games based on OpenGL. This allows you to prototype and develop your application entirely on the desktop and only needing 6 lines of code to make it run on Android.

Neat, so what does it offer?

  • Graphics: based on OpenGL ES 1.x/2.0. Emulated on the desktop (we kicked fixed point support as it has no benefit on actual devices). Tons of classes to help with low-level OpenGL (vertex arrays, vertex/index buffer objects, frame buffers, shaders, textures) and high-level classes for 2D and 3D rendering (model loaders, sprite rendering, text rendering etc.). Highly optimized specifically for Android devices and Dalvik (which translates well to the desktop too). Our OpenGL ES 2.0 bindings work from 2.0 onwards and are complete unlike the official bindings.
  • Audio: easy to use Sound and Music classes for sound effects and streaming music. Audio analysis tools and native Ogg and Mpg3 decoders with the help of Tremor and Mpg123 if you want to write the next Audiosurf.
  • File I/O: simple abstraction over different file systems (e.g. assets on Android, classpath on desktop etc.) so you don’t have to know which platform you are on.
  • Input: polling and event based input handling for touch screen and keyboard. The accelerometer is of course also supported.
  • Math: comprehensive math package for 2D and 3d linear algebra and computation geometry tasks.
  • Utilities: collections, specifically optimized to not make the Dalvik garbage collector go crazy.
  • Physics: complete JNI wrapper for box2d (used by other Android libs as well, e.g. Andengine, Rockon).
  • Backend agnostic: support for JoglLwjgl and Android. Can be easily extended to other platforms as well.
  • Extensions: support for the Themable Widget Library by Matthias Mann, Hiero bitmap font generator, originally written by Kev Glass and extended by Nathan Sweet (core contributor to libgdx) as we all a neat particle system editor.