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.

Saturday, 18 April 2015

The man from Apple, He say YES!

This morning..

I write this with the sun beaming through the office window, more than a little tired from having very little sleep last night as I Tweeted to the world and generally shouted from the rooftops a very exciting piece of news.



This is very exciting news for several reasons. 

Firstly, We're on the App store for iPhone and the iPad, the most difficult store to get into with the highest barrier to entry; Firstly there's a hardware requirement, then the build and certification process was intensive and then it's followed by a 2 week period of uncertainty where we wait for Apple to review ROO! where it could be rejected for any reason. Thankfully it sailed through first time. I put this down the the sheer amount of work we put into it beforehand. ROO Might be a simple game, but a lot of attention has gone into it.
Everything from the screen sizing, object placement and controls have been tweaked and polished to make sure ROO is the most fun it could possibly be.

Secondly, ROO! is not written using Objective C, It's using C# and Mono; all made possible by Xamarin. They truly have achieved the holy grail of software development - a tool which allows for realistic "Write Once, Deploy anywhere".

ROO was a test case for us; make a responsive and fun game which can be enjoyed by anyone, make it as efficiently as possible and release it onto Google Play and the App store.

I say efficient because as a small Indie developer, we have very limited resources. Time is just as expensive a resource as money so we really could not afford to spend time porting or re-writing ROO! for each platform.

Having the shared code project with a project for each build target has been amazing. It allowed us to focus on the core of the game and worry about the platform specifics later.
Coupled with Xamarin's debugging tools and simulators, we were able to test on Windows, Android and iOS with ease. Even connecting an OUYA or a phone was easy; We were able to deploy, debug and get on with the more interesting parts of development - writing the code to make the game.

Responsive and Fun

When I say ROO is responsive and fun, they are not my words. This is what I've picked up from the many people who I've spoken to about the game. Our goal was to make it Fun and as I stated in a previous blog post covering the development of ROO!, responsiveness would be key to achieving this. A game lives or dies on how well it controls. The developers of Super Meatboy focussed intensely on getting the "Feel" of the controls just right. It worked out well for them.

There have been games I've played throughout my life which look amazing from screenshots and then disappoint when it comes to the gameplay because of a lack of responsiveness. Typically older games with limited hardware - (but not always), but there have been a couple on the OUYA which prevented me from purchasing them.

What do I mean by this? Well, when you press the screen or the controller button on ROO! He jumps immediately. There is no lag, no delay.

We made ROO's agency the most important thing in his universe. He has a mission, to save little Timmy and nothing apart from his own lack of ability will stop him.

The trick to this we employed was to make the inner game loop as quick as possible and to collect user input first of all before any other processing. This meant that in the fraction of a second between game updates, controller inputs could be queued and acted upon immediately when the update happens - affecting the game processing which followed it. Keeping the inner loop fast meant that it didn't miss frames so ROO was always responsive on every frame update.

No Distractions.

We wanted the player to become ROO and zone out of the real world into an almost Zen-like state, so this meant reducing the distractions. This is why there are no collectables or monsters to avoid in ROO! It's all about the run. Don't get me wrong, the temptation was certainly there to add them but thankfully we resisted to keep the gamplay as pure as possible. There are a finite number of shapes to learn to avoid and a pattern to get into and once you've mastered those, the only thing stopping you from getting a great high score is well.. erm.. You..

The levels are random but you can really focus and get in the zone. Occasionally you will fall down a hole, hit a rock or faceplant a cactus, but you get another chance for every perfect landing you make.

The perfect landing and recovery mechanic was added in the second half of development after players became frustrated with their good run being cut short by a single mistake.

The perfect landings were in there from the beginning but they were effectively used to get achievements. By hooking them to the recovery system, the player was actively rewarded for good play and could use these later on to get even higher scores to beat their friends. You see, every life in ROO is earned.

ROO starts the game with only a single chance. As he gets perfect landings, he earns extra chances. They're not strictly lives as ROO doesn't technically ever die. He may fall or trip, but he bounces back.

So what's next?

Well, we've still got Windows Phone and Windows Store to go, it's delayed partly because of the extra development we needed to support an achievement system on the platform. As soon as this is complete, we'll be getting it to Windows phones.

Thursday, 9 April 2015

Waiting for Review and an Easter treat.

So last weekend was busy...

It was Easter, so therefore in the UK, we had Friday and Monday as national holidays. So we used this time to launch ROO on the OUYA and to prepare for the iOS release.

ROO is currently (as of the 9th of April) waiting for Review. This apparently could take a little time so we all have to be patient. It will be really nice though when it's released as we've done a load of work to make it look nice on the iPad and iPhone with that lovely Retina screen.

Preparation is key

Of all the stores we've released on, the App store is probably the most difficult to get going with. There are many aspects of the store which take some research in order to get right. Luckily for us, Dean knew what he was doing and was able to steer our wayward ship through any potential rocks to get us out to sea. It's also the 3rd time I've had to fill out a Tax form. As Songbird Creations is a Limited UK company, we don't pay US taxes (instead we pay UK taxes) but Uncle Sam needs to be reassured that we're not trying to get away with his money, so we fill in a W-8BEN form and sign it.
For the OUYA I had to print it, physically sign it, scan it and send it back to them. Amazon had a version online and a handy helper, which while was handy could have used a "We're a UK company, just fill it in for me" button like Google does. 

Confirmation is key

While Preparation was certainly important, I've never had to confirm as many things in my life as I did getting the more legal aspects of the store running. Phew, glad that part is over is all I can say.

Customization is key

Phones typically have a slimline aspect ratio some are 1080p others a variation of, however for a landscape game, you're typically looking at most of the action being towards the bottom of the screen, certainly for ROO this was the case. Pretty clouds, blue skies and mountains cover the top to middle and give the illusion of distance and speed while the foreground and character reside towards the bottom to ground the action. 
For the OUYA, we needed to move things up a little otherwise the player is bombarded with a TV image made entirely of sky, for iPad it was worse as the aspect ratio is different again.

So we had to work out how much space was required to keep ROO in pretty much the optimal place while filling the rest of the screen with interesting but not too distracting detail. We had to make some more graphics to place at the bottom of the level.

Once we we done however, it looked and played really nicely. We also had to add an Achievement Toast system to complement the Game Center achievements which you can see in this video.

Feedback is key

On Friday evening, I went out around Cambridge and introduced a few people to ROO, one of the bits of feedback was to do with the Perfect Landing / Resurrection system. It waited for 2 seconds after ROOs failure and used a perfect landing token to burst back into the game (basically a lives system) however it turned out that people were becoming frustrated with the way it was implemented. Often they would reappear only to hit a cactus, a rock or worse - fall directly into a ravine. So something had to be done because while funny, I don't want unhappy players. So now there's a system where you're prompted to tap the screen to reappear when you want to or wait the full 2 seconds. Play testing this feature made it obvious that it was the correct solution. It makes failure your own fault as opposed to the game punishing you randomly.

A Happy Easter

It was really nice to see ROO on the OUYA store so I documented it with a little video. So you can see me install ROO for the first time on the OUYA as well as see how to get those pesky perfect landings. Stick around to the end for a little discussion in difficulty, game dev principles and a personal message from me.

So there you have it. ROO is on the OUYA market as well as Google Play store and the Amazon App store and we're awaiting  our entry to the App store.

If you'd like to know more, why not follow me on twitter @thecacktus

Have fun.

Wednesday, 1 April 2015

The little console that could.

A little Kickstart!

Back in January of 2013, I was procrastinating on the Escapist Magazine website and I came across an incredibly good idea. A micro console which takes advantage of the recent surge in phone processing power and the Android Operating System; all combined within a tiny stylishly designed box which wouldn't look out of place next to the nicest TV. A full HD 1080p console from the outset with it's own games market with games which must be free to try.

Kickstarter had shaken up the games industry and it seemed that the reported stranglehold publishers had over the various software houses would be weakened and it would usher in a new age of the bedroom coder.

Well, that happened somewhat; The bedroom coder did emerge and a lot of them released games; and some of them were really good. Kickstarter became the go-to place to get funding for the more adventurous or ambitious. There were a few bad apples of course but the net feeling was positive. There are debates as to whether Kickstarter has been over saturated with games and that it's become more difficult to be noticed among the crowd, but that discussion is for another day.

Mr Schafer I presume?

Anyway, I'd been following the antics of the people at Double Fine and backed their kickstarter for the game which would later be known as Broken Age.

Their kickstarter went on to demolish their originally requested amount to the tune of $3.3 million dollars. The internet went bananas.

As part of the deal, they would document everything and the documentaries would turn out to be really insightful to watch. 

It reminded me that Game developers, those people who create these amazing experiences that we love are regular people with hopes and dreams. They weren't too dissimilar to me, they had the same drive and passion as I did - just better funding. 

A large dose of gasoline was poured onto my previously thought to be extinguished candle.

So with both DoubleFine and the OUYA breaking records on Kickstarter, it seemed like the perfect time to get back into games... and the OUYA seemed to be the perfect platform to release it on with it's almost guaranteed success and it's open - yet moderated - marketplace.

I missed the Kickstarter for the OUYA however I did pre-purchase one in January and it arrived in July while I was in the USA - I wouldn't be able to get my mitts on it for another 2 weeks. The plane didn't get home faster because of tail-winds, it was by the sheer force of my will! :-)

I remember being surprised at how small and shiny it was and how the controllers felt really nice and solid. It was simple enough to set up and with it's online market and free to play nature was instantly appealing. I soon found myself purchasing many games. 

The biggest question became, what kind of game do I want to write? Platformer? RPG? Adventure? The ideas flowed fast and strong and eventually I settled on the game currently known as the Reversion Bureau, a puzzle platformer - which has had 2 years of development time spent on it. However more on that game later. 

Fast forward to now.

It's April 2015 and we now have a game released on the Android platforms. It's not the Reversion Bureau, ( that game will come ). Instead, it's a cool little endless runner where a kangaroo named ROO! must race across the Australian outback to rescue his best friend Timmy from a well he fell into. 

We've already released it onto Google Play, Amazon App store and now (pending) the OUYA. On top of this, we're putting a lot of work into preparing for the iOS release, as well as a Windows Phone release.

The OUYA is still going in spite of 2 difficult years in the industry which saw the launch of the new XBox One, the WiiU and the Playstation 4. OUYA have altered the rules a little in response to that; games no longer have to be free to try as long as they have a video to show the gameplay. So we've released our game for a very small fee.

To get this far it has taken a lot of work covering many aspects of the game development process.

  • Game Design
  • Lots of coding

  • Graphics creation
  • Rigging and Animation
  • Assets pipelines
  • Music authoring
  • Sound design
  • Video editing
  • Storefront management
  • Device Testing
  • Play Testing
  • Focus Testing
  • Project Management
  • Marketing
If it seems like a lot of work, that's because it is. 

Most of it goes unnoticed as it's mostly not fun or glamorous. 
For instance, Project Management and Marketing are incredibly taxing to do correctly and are utterly vital if the project is to have any chance of commercial success - or even being released as a product. Each market place has it's own store-front with it's own way of handling things. Marketing is hard work, even for something you love. It often feels like climbing to the top of every building in the city so you can shout from the rooftops. Those with money or sense employ others to climb the buildings for them, or employ those already positioned to shout.

So here's what I'm hoping for: That the OUYA can fulfil it's promise, that games made independently by small teams can reach those who want to have some fun, kick back on the couch and play games on their TV made by people who care. 

But no matter what happens,

 I'm grateful for that glorious moment where the stars seemed to align, the rebirth of the bedroom coder and the infinite possibilities which they could bring.. that and flappy bird, mostly flappy bird :-)

A plug for the cool little box 

The OUYA is being sold online at http://shop.ouya.tv/ as well as on Amazon and in Target stores in the USA. If you don't have one already, you should pick one up. There's a lot to be said for the games available and playing with the controller is great.

A note to travelling executives:

The OUYA packs away nicely into a travel bag and given that most hotel TVs have a HDMI socket, and there's rarely anything on the TV anyway, it makes a great travel gaming system. Something else to do on those long business trips.

Also, a note to parents: 

There are no disks, so no expensive games to break or scratch or leave cluttered all over the place. Kids can start the game they want, they're mostly for free and those which aren't are inexpensive. It supports up to 4 controllers, it's cheaper than an XBox, a Playstation and a Wii and it's still totally worth the money.