Tuesday 28 April 2015

The Songbird Creations GameJam #2

24 hours, 3 Programmers, 1 game

This weekend, we had ourselves another GameJam. The aim of which to create a game in 24 hours and to later polish it with the view to it becoming one of our products. It worked really well with ROO! and given that we had an extra programmer this time, we thought we'd up the ante a little.

We'd stream the whole event on twitch.tv

We recorded a short video, complete with special effects and announced the event on twitter.

But the mission was simple.
Keep it Simple!
Don't over-complicate it!
Make it in 24 hours!
Make it fun!

Friday evening arrived and it was time to get started on the first task.

What type of game to build?

The last gamejam back in January saw ROO as the result. A fast paced endless runner with simple controls. This time, we'd choose completely different genre and style.
We each sat down and came up with 2 ideas each, discussed the merits and downsides of each and chose a starting game.

After a decent discussion out of the ideas we'd had, We had a choice between:
  • A physics based space game,
  • A Zombie game,
  • A pinball game,
  • A beach game,
  • A puzzle game.

We ranked them based on fun, complexity and the amount of effort required. We will probably attempt each of these games in time however we decided to go with the puzzle. We probably had a good shot of getting it running within the time we'd allocated.

So the first thing to do was to determine the rules of the puzzle. A fairly simple block based puzzle where you rotate blocks to solve a problem.

We gave ourselves tasks. UI, Rules and gameplay.
We also decided to stay with Monogame and also pick up from the framework we'd built for ROO!
Obviously being a phone based project, we opted to develop for iPhone and Android simultaneously (Thanks to Xamarin Studio and Monogame, this is entirely feasible). We did however neglect to include a DirectX project - something which would bite us unexpectedly later on.

Roll Cameras

We started filming at 10am BST (9GMT) as scheduled, the stream was good - a little lag on the sound from the web cams, but that was to be expected. We don't have a studio for this stuff yet.

We had 2 cameras for viewing the team, one placed above and one from the side - these were running constantly. We then had TeamViewer running on each of our laptops in a shared meeting to allow us to see the desktops - we would switch presenter so that the stream could see what we were working on. (when we remembered)

It turned out that TeamViewer was perhaps not the best desktop sharing solution. It would end the meeting after a time - perhaps after a network glitch, it also meant that each of us were viewing the desktops using the external IP address, which quadrupled our bandwidth.

Sound was provided by TeamSpeak. The steaming machine ran a TeamSpeak server and each laptop ran the client. We'd mute and unmute microphones as needed (push to talk isn't great while programming and voice activated in such close proximity activated all microphones and gave an echo effect)

Dean gave presentations on installing Xamarin and Monogame on a Mac as well as an introduction to Spine.

We will be looking through the footage soon to make tutorials from the footage where possible. If not, we'll probably make some separate video tutorials later using the footage as a reference.

The Wrath of the Internet Gods

Everything went well up until around 5:30pm when the internet died. We'd been streaming for just over 7 and a half hours by this point. We tried to get the feed back up and running, but we failed. So instead, we took a break and grilled some food on the BBQ.

The internet was back, the Gods were appeased with the sacrifice of Burgers and Sausages on the altar of BBQ.

Afterwards, we got the stream started again and it ran well for another hour and 20 mins. Then it died completely and we couldn't get it going again.

Obviously our offering was found wanting.

This was incredibly frustrating. Furthermore, we were wasting a lot of time sorting out the feed when we could have been working on the game.

Ultimately, We took the sad decision at this point cease streaming for the evening - even if the internet came back up again. This was a real shame as we were beginning to make some real progress.

The internet was up and down for the rest of the evening which severely impacted our performance.
Everything we needed seemed to be on-line. Xamarin's Android player installer and most importantly - Git, our Repository.

Eventually it came back up and we were able to continue. Towards the end of the night, we managed to get a working prototype running - We'd achieved First Light.

Unfortunately, the gameplay screen wasn't very pretty so no screenshots so far. Dean and Jason had done a great job with the menu system though.

The next morning

Jason, Dean and I continued with development - sans livestream, we needed to get the prototype completed, at least playable enough.

Again, the internet connection could not be relied upon and getting the Android player to work now seemed to be causing problems. Also- once installed we found it to be much too slow to debug. A real Android device was required to get any decent performance. (although the iPhone simulator seemed to be fine).

We seemed to be cursed. We eventually put the DirectX project into the game and enabled mouse control so that it behaved as screen touches for testing purposes.

This turned out to be one of the smartest decisions we made all weekend. Debugging sped up significantly - instead of  waiting for the APK to compile and transfer to a phone or to an emulator - install and then run. With that we were able to quickly code changes and debug the results.

It seems silly now that we neglected the DirectX project. ROO used it. I guess we thought we were making a pure mobile app so DirectX support wasn't required. Still this was one of many lessons learned.

At the end of the day, we had a working prototype and we could see immediately that the game was going to be addictive. You're going to love it.

A bit of reflection:

What went wrong?

Well, even with 3 programmers, writing a game in 24 hours is hard.
We did a significant amount of work on seemingly a simple game concept and we still couldn't finish it. We weren't trying to write a WOW clone or a MMORPG, this was a puzzle game. We kept it simple, we didn't go crazy with features.

However puzzle games are deceptively difficult to code. The game pieces have to work seamlessly together. It's actually simpler to create a shoot-em-up.

Puzzle games have their own managerial problems too, With a puzzle game, the core of the work can really only be done by a single person so that person becomes a blocker. Given that the majority of the gameplay is the puzzle iteself, there isn't a lot anyone else can help with. If the puzzle isn't working - you just have to knuckle down and get on with it. With a shooter, a lot of the game can be handed to other developers to work in parallel.

Basically, We underestimated how much time we'd need to make a puzzle game.

The internet connection caused delays with more attention being spent on fixing it than there should have been.

We could have used someone managing the stream, switching views and monitoring the chat a bit more closely.

I wouldn't say that we failed to reach our goals however. We did stream the day, we made a game prototype in the weekend and we had a good time. I just wish we'd achieved more - or rather that I'd achieved more as I was the blocker.

What went right?

We streamed for 9 hours in total. Not bad considering that we'd never livestreamed before, everyone was connecting to the OBS machine wirelessly and disparate applications were providing the components, each with their own requirements. Next time we'll have a much better idea of what's required.

We got a lot of framework code done. We now have a cool animated UI system which will make the game look very nice. It uses spine so we can program some really intricate transitions. This can be used in future games too.

So what comes next and when can we see something?

Now we're fairly sure that the game is going to be worth developing (It's OK to kill a prototype - they don't feel pain ), we will be putting more time into the game to develop it beyond it's current primitive state. We can use this time to test out variations on the theme.

We'll release screen-shots as we go when we're happy that they show something cool.

We don't have a name for the game yet, but stick around, follow me on twitter @thecacktus for the news from the trenches and check in here from time to time, you'll see the game as it progresses.

We may also do more livestreams as the project takes shape. Shorter ones though showing a focussed piece of work.

No comments:

Post a Comment