Tiga GameHackDays 2013, day 3 (and final!)

We shipped something! Yayyy! Here: Tiny Barbarian.

Our initial aim was to deploy it to GitHub pages, but for some reason GitHub wasn't serving the custom font with the proper content-type, and was returning 404's for some of our textures (why?) so in a show of pragmatism Belén simply uploaded our tiny game to Heroku. That was about 30 minutes before the deadline!

https://twitter.com/ladybenko/status/300551080218083328 The game at around 11 in the morning

But going back to the this morning: our game was just a series of cubes that sort of moved in the screen with a couple of transitions, but really bare. We took advantage of the commute time in the tube to decide what we would work on today to get MAXIMUM DEMO IMPACT. If something was "cool to have" but not "nice looking" for someone external to the project, it was to be discarded. So pretty much all refactorings were out ;-)

Therefore today we've worked on adding textures, sound effects and the rest of missing transitions between movements. Belen has spent like 1 hour trying to configure her Wacom tablet with Mac Os Lion. Meanwhile I've been scouring my samples library first and Freesound later for the sound effects. Then a bit of Audacity and that was done. I added placeholders for textures with three.js, so that Belen had a working example for adding the textures when she made them. Time for lunch--more excellent sandwiches generously provided by the sponsors. It's been the best hackathon catering EVER.

After lunch, I have started to think about how to transition the hero position with a tween several times but each time I was interrupted by something else, and got distracted. But I finally did it and then when I thought I was done, Belen asked me about the background music. Were we going to have one? I looked at the remaining time-1 hour 43 minutes. Well, maybe I could do something?!

From that you can gather that I didn't actually track anything yesterday, although I did re-learn (or more suitably, remember) how to make Reason and Renoise talk to each other. So I've fired up both, in exactly that order, so that Reason was the Rewire master, and thus controlled Reason from Renoise. This way I can use the excellent sound synthesis and devices from Reason but sequence the song with Renoise's vastly superior editor. Total WIN! \o/

https://twitter.com/supersole/status/300659062813630464

But I'm digressing... This was about the soundtrack for the game! OK, so I had no idea of what sort of music should an RPG have (as you can see I don't usually play that kind of games), and I went yesterday to YouTube and looked for "RPG music". That returned a bunch of orchestral music videos, which I didn't really feel able to do in just less than two hours. So I asked Belen again and she showed me something that actually sounded pretty much like chiptune--which is what my music always ends up sounding like. Therefore I've ended up with something that sounded "cool enough". I suddenly had that deja-vu feeling, like if I was entering some sort of traditional One Hour Compo again, but it was a nice feeling; a "I've been here before and I know how to tackle this", hehe!. Besides, I've found this combination pretty awesome. I'm still in awe with how well both programs work together. Hats off to Propellerheads and Renoise.

With the song done, it was just a matter of adding it to the html. Initially it was added, preloaded and autoplayed directly from the HTML code, but in order to have a little more control over the loading sequence, we've added event listeners and wait for the song to load before starting the game. In the meantime we found something which I don't know if it's a bug "or a feature", and it is that you cannot set the volume of an audio element in html code, but you can with javascript code. So this:


<audio volume="0.5" src="whatever.ogg"/>

doesn't have any effect over the volume level, whereas this:


var audio = document.querySelector('audio');
audio.volume = 0.5;

does change the volume. Mystery!

A little bit after doing that we've just closed the laptop lids, put them in their sleeves and into the backpacks and went into the end of the venue for... pizza! and beer! They were saving the best for the end! Haha!

So we've had some deserved relax time until demo time, and then we've all sat down together in the larger area, to see the work of every team. There were super amazing works, of which I don't have any graphical document to prove they existed, so you'll have to trust me on this.

I think what I like most of these events is actually demo time, when you get to see so many thrilling and unexpected ideas. Maybe they are totally unpolished but they are already funny at that early stage, which in fact demonstrates their potential. Really inspiring!

And after that we waited for the judges to decide who would they give the prizes to. So more chatter (and beer) ensued, until the prize ceremony started. There wasn't actually much ceremony involved, but you know what I mean.

We didn't win anything, but we got a mention for the design! Yayyy! And props to Belen for her mad drawing skillzzzz!

Now, although this has only been a very small game, let's do a small postmortem:

  • we were only two people and actually couldn't use all the available time because we didn't arrive at midday on Friday, but on the late afternoon. This made us lose a possible "advantage"
  • tween.js is very useful but sometimes very verbose too, specially when intertwined with more code. Maybe some sort of utility function for shortening definition and chaining of tweens could be helpful (TWEEN.Utils? Food for thought)
  • messing with the orthographic viewport because you want your coordinate system to be like "traditional 2D" can betray you later.
  • it's really important to position:relative everything that is a container of things which are also positioned
  • when you get some cryptic three.min.js message, google it first, it probably has happened to someone else before. Also, never underestimate the power of StackOverflow.
  • it might be interesting to have some sort of alternative repository in place, just in case github is down for maintenance again.

All in all, it's been a terrific experience, and superbly organised at that! So thanks to TIGA for their amazing work. It's been incredible! And thanks to all the participants too for being awesome! :-D