Monday 25 October 2010

Discretion Development Update!

It's only been 2 weeks since I began developing Discretion but already a lot has been done! First of all, I decided to use LibGdx as my low-level game engine. It's a nice open source Android library that's also cross-platform, which has some great productivity benefits. The project is very active and the lead developer, Mario, posts lots of extra information over on the Badlogic Games blog. The key reasons I decided to use LibGdx are:
  • Cross-platform: the library has multiple Java backends for Android, desktop and applet. This means you can essentially develop your app as a standalone Java desktop application, which means no more emulator! The productivity benefits are excellent: everything on the desktop is much faster to load and display so you don't waste lots of time waiting around when you could be coding the next bit of work. Developing in C++ for the PS3 taught me just how many man-hours it's possible to waste waiting around for things to build and run...
  • Skeletal animation: LibGdx loads MD5 files from the Doom 3 engine. This is a relatively modern model/animation format that allows smooth, lifelike animation to be used. It's also relatively costly. If you're interested in the guts of interpolation, quarternions and Java vs. C optimisations I recommend reading Mario's posts on md5!
  • Music, sound and input layers: it's important in development; it's even more important for development on a startup project with a limited budget and timeline: don't reinvent the wheel. Re-use code, including that kindly made available by other devs. The main reason to use 3rd party libraries in general is so you have more time to focus on coding stuff that makes your software unique. Of course LibGdx doesn't just offer music, sound and input layers. Go read the LibGDX project page to find out what else it does!
So I'm pretty happy with my library. But what about the code I've written myself? Have I actually done anything this past fortnight besides drink coffee and read Reddit? Well, I've probably not done anything that's interesting to the outside world. A lot of it has been working on my own framework layer sitting on top of LibGdx: a lightweight graphical user interface (a wheel reinvented but it's a wheel that turns exactly how I want it to!), game world and objects, high level animation, procedural terrain generation (for prototyping) and a start on the actual in-game menus. Although I don't have any models yet, you can equip a character with invisible weapons and armour! Fun, hey?

So far I'm very happy with my development environment. Eclipse runs nicely and besides some minor differences was a painfree transition from Visual Studio, the IDE I've been using for the past God knows how long. LibGdx's desktop backend minimises the "thumb twiddling" time, and my HTC Desire periodically shows me just how small and fiddly those buttons are on a 2.5" 800 x 480 screen... I've got an SVN repo I'm happy with and now I just need to find a freelance 3D character artist to do my assets, and soon this ship will be well and truly sailing! Three sheets to the wind, of course!

1 comment:

  1. Just discovered your blog. I didn't know you were working in a full scale game. I wish you all the best and hope to be able to support you to some extend with libgdx.

    Good luck!
    Mario

    ReplyDelete