TOJam 2013 and Happy Island

TOJam 2013: Haters Gonna EightIt’s been a bit over a week since TOJam happened, and therefore I’m overdue on blogging about my experience there this year. My friend Karl and I participated as “Team Water-Rock”, putting together a game that was originally supposed to be about getting people to work together but ended up simply being an escort mission. The end result? Still something fun, but with a feeling that we could have done better. And I’ll explain why, Game Developer postmortem style.

What went right

Strong tools and tool support

We had a pretty convoluted way of getting map data from our editor (Tiled) to the game engine, but if it wasn’t for Karl’s strong Python and tool-development skills, we might have been left out in the cold. Karl wrote up a script that would let us convert Tiled maps into the particular flavour of XML that the XNA content pipeline prefers, since we weren’t using XTiled (due to the fact that at least at the time, it didn’t support the staggered isometric maps we were using). Tiled’s ability to set custom properties on practically everything was very useful for working with the game entity system we developed, too, and whenever I needed something from the map in the engine, Karl was able to update his script very quickly. We had great turnaround time on map editing to in-engine play.

Great environment for ideas or mental refreshment

With over 450 game developers present, getting ideas for when we were faced with problems, or just getting away to chat with other developers was wonderful. One of the worst things about working in a distributed environment is the lack of social activity that can help deal with issues such as when you’ve hit a brick wall in your development (or just have coder’s block and can’t think straight).

What went wrong

Starting from clumsy code

Unlike a lot of other programmers, I’m not afraid of building off of others people’s code. In fact, I prefer it when there are existing frameworks, libraries, etc. that I can use in order to focus on developing my actual project. Unfortunately, that caused quite a bit of problems for Karl and I this time around. What’s worse is knowing after the fact that adding what I needed to XTiled would have had us further ahead than the “complete” isometric engine we started from.

On top of that, the distraction of getting the isometric tile engine working the way we wanted meant I didn’t think about using some nice and pre-built XNA systems but instead wrote my own off the top of my head (one of which I’ve already pulled out and replaced with something better).

Planning for more than we could chew

Three days isn’t a lot of time, especially if you intend on taking time to sleep and eat. The original concept for what became Happy Island was developed over a couple of weeks before TOJam, which gave me the luxury of time to think up and toss in whatever I thought would be good. At the event, however, we had to pare down things and make the game really simple — and even if we hadn’t had the other problems, it still would have been necessary to cut things down to size.

Lack of “floaters”

TOJam offers developers without them the ability to borrow artists and musicians as “floaters” — in other words, people who come pretty much to provide content to other developers. While there were a good number of floaters signed up, unfortunately not many of them actually came out to the event, and so we had to make do with what graphics we could scrounge up online, and a 31-second audio clip for background music.

Conclusion and download

In the end, we just made it. Karl and I finished our v1.0 of Happy Island right as time was up, and while it wasn’t what we were expecting or hoping for, it was complete enough to play. Getting to see people enjoy it afterwards was great, too!

Since TOJam, Karl and I have done some additional work on the game. I’ve also taken the opportunity to work on a few things that’ll be useful for further Happy Island development, or other XNA/MonoGame projects. For starters, I’ve updated a Paint.NET image content importer to work with XNA 4.0, which can be found on Github. As well, I’ve made my own fork of the XTiled engine and map importer which adds support for Tiled 0.9 features (image layers and staggered isometric maps), so that future projects can make use of that instead of the frustrating code we used for this project.

You can download Happy Island from the Cold Acid Entertainment site; as of this blog post, a polished v1.1 is available.