Archive for June, 2013

libGDX

Road of Kings is built on top of a third party library known as libGDX, and I think it’s worth taking a moment to give the maintainers of that project their proper due. I happened upon libGDX quite by accident. Originally I started writing code for this project in java only because I had the vaguest idea that Android phones used java code. I chose Android as a target because that was the phone in my pocket, though to be honest, I think ease of developing code was one reason I chose an Android phone in the first place. But I digress…

When the code base first formed up it was just game logic, a simple combat emulator run on the command line. I started very early with a strong model-view-controller architecture, knowing I would want to replace the IO down the road. Eventually I did this, adding a Swing based UI so I could render the earliest map. Still I kept the game logic (model) very separate from the rendering (view) and user input (controller) portions, and one day I finally decided it was time to port to Android.

I looked into some of the Android docs, and quickly realized the complex UI system used by most Android apps was overkill for a game. I wanted something that would just let me blit images to the screen. So I hunted for a library that would do that, and discovered libGDX. I started playing with it and it seemed easy to use, and so the game soon had a third view/controller scheme based on libGDX. It would take a while before the console and swing alternatives would completely die, though once they did some bits of libGDX did seep into the codebase at large. I still keep my model pretty pure, though libGDX’s pool based collection objects did seem like a good optimization over the standard java.util packages.

I had no idea the many further benefits libGDX would bring, and these days I think if I were starting a mobile game fresh I would certainly choose libGDX as my engine. Here’s why:

1. Abstraction – What originally brought me to this library is still worth quite a lot. Having an abstraction layer between your game and the hardware is key for porting. The good news is, libGDX provides several already functioning ports, including desktop builds for Win32, linux, and OSX, Android, and HTML 5 (GWT). iOS is still a work in progress (see below). Plus, it wraps all the bits you’d want in a game: rendering, audio, input, file i/o, and even network communication.

2. UI – Wow, the 2D ui code that comes standard with libGDX is fantastic. It’s scene graph based, it includes an html table-like layout system, support for 9-patches, and skinning. I’ve worked with many less robust UI systems, and certainly few as elegant.

3. Animation – I was tempted to include this under UI, but it’s worth calling out on its own. Nate has implemented a very sweet system for moving actors around the scene using standard transformations including translation, scaling, rotation, etc. all easily modifiable by a pluggable interpolator to give non-standard motion over time (eg. sine waves, bouncing, etc.) You want an image to swoop in from the side and scale in, with a little bounce at the end? It’s about one line of code. And as it’s all built into the 2D scene graph, it’s just as easy to do that to a whole chunk of UI as it is to a single image.

4. Tools – Besides some helpful utility classes (hello xml and json parsing), there’s also some very nice support tools. For example, there’s a very nice tool for packing many small images into a single large texture. It’s even clever enough to determine that two images are identical and only actually pack a single copy and create two differently named references in its metadata. And then there are some approved optional extensions to the library that add some nice flourishes like loading and rendering TTF fonts.

5. Free – Yeah, it costs not a dime. Also, that means you have full source access so when you discover some little “I wish they did…” it’s actually pretty trivial to just go change it yourself.

OK, lest I come off as a complete fan-boy, it’s worth noting there are a few detriments:

1. Programmer Oriented – Those sweet UI and animation systems are great, provided you don’t mind layout out your UI and specifying your animation sequences in code. You want artist and designer friendly tools for this stuff, you’re going to have to write them. Good news is, you can write them, and I’ve found I can even add some libGDX rendering to a swing JPanel to use convenient swing UI stuff for the heavy lifting but still have a WYSIWYG display.

2. Early iOS Support – This is a big one, but the iOS support is pretty new. The current system is based on Xamarin (née MonoTouch) which requires a pretty hefty licensing fee (about $500). The maintainers seem to want to move away from this and are actively working on a new backend based on the free RoboVM, but that’s only started in the past month or two. I’m really crossing my fingers they get this stable by the time I need it, but if I have to I guess I’ll fork over the dough for a Xamarin license.

Well, there you have it, libGDX. I really can’t recommend these guys enough. If you’re thinking of making a mobile game and you’re not keen to jump on the Unity bandwagon, definitely check these guys out. You won’t be sorry.

Road of Kings Update

Progress on Road of Kings continues at a good pace thanks chiefly to our tireless intern Max. While he continues to pound out scripts I have been tuning the combat UI, and I think we’re really just about done with that. It’s very nice to see the combat screen look so good now, it was in rough shape for a long time. I’m sure James will want to take second and third passes on several of the individual pieces, but I think it’s quite passable now and can only get better.

Next on the hit list for me and James visually is the map screen. We’ve let it lag a bit behind and actually broke it a little when we experimented with a new slightly 3D look to the map. The direction is good but we need to come back and add a bit of spit and polish. Once that’s complete James can get back to adding more character art to the game. Right now we have just three characters, and it is a bit disconcerting to see that one sword-wielding dude stand in for everything from peasant girls to dragons.

I did take a little time this weekend though to sit back and just play the game, and I have to say, it’s pretty darn fun! With all the content Max and Mike have been adding the world is starting to feel like there’s some actual variety in it, which is a far cry from the HelgaCon playtest where the winning strategy was to farm dragons in the same ruins over and over again. Unfortunately with all this feature development the game has also become a bit buggy, so we’ll have to come back and do a serious bug fixing pass.

Tracking down those bugs in so many events will be a serious chore, but that’s where you come in dear reader. My goal is that once we have a passible amount of content in the game and nothing that’s really too visually jarring we’ll begin a closed beta. The system is all set up for the beta, with builds already pushing to a website that can be played right in the browser, as well as special Android beta builds for those willing to install unverified software manually to their devices. I’m giving a rough estimate of another 1-2 months before we’re there, so keep your eye on this site for more updates. I’m not sure how many seats we’ll have for the beta, but the good news is once it starts it will really be the end run and official ship will not be far off.

Officially, I’m not tying us to any specific dates here. With 3/4 of the group working only nights and weekends and the other 1/4 going to leave us at the end of the summer, even the smallest road bumps can severely alter the road map. Still, I’m hopeful we’ll have this thing out there in your hands soon. In the meantime, I’ll try to keep giving you little sneak peeks into the process here.

Back to Blogging

This blog has been ignored for too long. My apologies readers, if any of you are still out there listening. What happened? Well, it’s probably no coincidence that my last post was from late March, just when my attempts to sell my house started getting very involved. But I’m not going to get into that, suffice it to say that I’ve been trying to sell my house for a very long time and it’s not been a pleasant experience. I continue to be hopeful for the future, but I no longer have any expectation of when I might actually escape this quagmire.

Table top gaming has been non-existent for me for a long time, like a lot of hobbies that have been packed into boxes or put on hold until we move. Perhaps that has what has blocked me from posting, as this blog has basically been about table top gaming for a long time. But as the tagline says, this blog is about “whatever else comes to mind”, so it’s time to take a detour into something positive that has been consuming my free time — video game development.

Production of Road of Kings continues at a nice clip. In fact, things have picked up this summer with the introduction of our intern Max. Max is actually my younger brother who is currently pursuing a computer science degree, and wanted to spend his summer working full time on a real project. Thus Dancing Sorcerer was happy to bring him on and he’s already been hard at work for the past couple of weeks fixing bugs and making many of Mike’s more involved event designs a reality.

For three guys working nights and weekends, adding someone who can put full 40 hour weeks into the project has been a real shot in the arm. And it doesn’t hurt that Max is a pretty good writer and DM — his style fits right in with the content we already had.

When will it be done? That’s a tough question to answer. We’ve been working on this project for a little over a year now, and we’d like to wrap this thing up soon. That said, the part time nature of our schedules just doesn’t lead to very rapid production. The good news is that we’ve got pretty much all the unknowns nailed down. The design for the combat screen and characters has been resolved, and we know how many more events we have to author to make the world feel full. Now it’s just a matter of buckling down and creating all that content. There are still many scripts to be written and characters to be drawn, but hopefully the more we make the faster we’ll get at doing so.

Official announcements of the game will always appear first and foremost on our facebook page.  Please follow us there (and maybe drop a like our way) if you want the latest news.  That said, I’d like to get in the habit of updating this blog, and Road of Kings development seems like good fuel for that fire. So if you’re interested in following the nitty gritty details of indy video game development, keep your eye on this blog for my upcoming posts.