Corona SDK to the Rescue

Haakon Langaas Lageng

This blog post is all about our experiences on putting together a game title, Including why we had to start twice, the choices to make, time spent, anger and frustration and finally the discovery of Corona SDK. So, fresh off the keyboard, here’s a little something about the process of developing our first title as a newly formed indie company.

It all started with an idea, then we turned that into a concept. The concept was a gravity based flying 2D side scroller, and we were to name it JumpShip Thrust Control. So there we were, we had our concept and we knew how we wanted the look and feel to be. Now, would we be able to fund the development of our game? Making a game without the quality feeling was absolutely out of question.

We are all developers here, but we do need a bed to sleep in and some food to eat; so we are still doing contract work to fund the startup of our company MonkeyBin Studios. Short story shorter, we ended up outsourcing the game development. We found a five star rated provider with great reviews on Elance. They opted for Unity3D as the tool of choice. We knew about Unity, and we couldn’t see a reason why not.

Summing up the specs we sent our provider

  • Gravity based
  • 2D side scroller, flying in a cave
  • Random obstacle generation
  • Never ending level
  • Well described power-ups
  • Random power-up generation
  • Various animations
  • Five wire framed menu screens
  • Facebook and e-mail integrations
  • Random blocked paths with power-up escape possibility

Inexperienced as we were with this outsourcing thing, we thought the providers 10 week guestimate was a fair deal. 10 weeks later we weren’t even close to a finished game. The provider seemed sure about their case, it was “just a matter of days” left. In the beginning we were fine with this, JumpShip was actually more complex than first anticipated. After a while this process got really frustrating, they never seemed to get any closer to a final delivery. And each delivery brought in new tickets to the issue tracker, and every time it was the same story. “Oh that – that’s an easy fix. It’ll be ready in a few days.”

They had a lot of excuses going. Unity must have A LOT of bugs, because Unity was constantly blamed for almost anything. I won’t even mention the alleged build times on Unity. They were very clear on the fact that Unity uses 3 hours just to create the xcode output for our project. And what is up with a thing working one day, and on the next day that same thing was broken. Yeah, Unity was blamed for that too. Let’s just say, the ticket list didn’t get any shorter.

We had our discussions, but were concerned about pulling the plug. After no more than 24 weeks, 24 really looong weeks, we did the inevitable. We pulled the plug!

Enough is enough

The final decision was definitely based on “enough is enough”. But we wouldn’t have dared to actually do it if it wasn’t for the discovery of Corona SDK. What a find! It just looked awesome. Could it really be that simple to make a game? Would it be possible to create JumpShip ourselves, and that fast? The answer to that was yes! We spend less than 150 hours in total creating the game with Corona, as opposed to the 700+ hours our provider claims to have put into the Unity version. How about that, eh?

It has been such an experience learning Corona and Lua with it. I’m not saying we’re pros quite yet, but picking up Lua was simple enough. For us highly object oriented guys, we constantly sought ways to deal with our OOP addiction. Luckily, Lua has it’s ways to soothe that obsession too. Getting on with the game development, we needed stuff like physics, collision detection, touch support, Facebook, OpenFeint and retina display support, just to mention some. A quick look at the Corona API pages shows 512 items, that isn’t all that much. But the thing is… It is all there. And not only that, it is so easy to use. It’s just amazing how little is required to create complex behavior, you’d think would be just as complex to accomplish.

We were also surprised with the amount of third-party tools already available. And we have picked up tools like, TexturePacker, Physics Editor, TextMate Bundle, SpriteGrabber, crawlspaceLib and Particle Candy. They all got to good use in JumpShip Thrust Control!

Summing it all up

After canceling the project we were left with 0 lines of code, no sound effects and no animations. All we had was the spec, and all PSD’s. So how long did we use to complete the game? Well, it took a little more than 48 hours. It took us about 14 days to complete the game from scratch, with new sound effects and new animations. The four of us logged about 130 hours on the game. So this is not one of those 48-hour stories that we hear about all the time from Corona users. But then again, our game is actually quite complex with heavy graphics and a couple of thousand lines of game logic. We’ve also spent a lot of time on reducing texture memory usage and make sure we have no leaks.

While writing this blog, we are continuing to expand our titles, currently in the final stages of two new games and one iPad app. And they are all cranked out with Corona SDK. Also, we are working on the Deluxe version of JumpShip Thrust Control – the “more of everything” version, that will feature new ships, weapons and levels.

Thanks for reading, pop us a line if you have any thoughts or questions. And don’t forget to check out JumpShip Thrust Control by visiting the AppStore. It’s even FREE!