Below, Jon details the process of choosing an SDK, creating Doodle Dash! (twice!) and why he still hasn’t gotten around to buying a book on Objective-C.
To kick things off, can you give a background of your experience in game development? What types of platforms and languages can you work with, and which one(s) are your preferred ones to work with?
I’ve been “experimenting” with game development for a couple of years now. I have been a self-taught PHP web developer since 2006 (my preferred language, that is, until I discovered Lua through the Corona SDK) and I tried my hand at indie game development about a year and a half ago. I managed to get almost all the way through creating a logic/puzzle game for Windows using a piece of software titled “GameMaker.” (which, despite its name, is actually a mature and professional piece of software)
Unfortunately, due to time constraints and my personal situation at the time, I never got quite 100% through with the game. Besides, what I really wanted was a way to put my game creation on my new iPhone that I had just purchased, so there was a little inner conflict there when it came to developing desktop software/games anyway — my heart just wasn’t 100% into it.
So, was that when you decided to get into iPhone development?
Well, I wanted to get into it, but I had no experience with Objective-C. And, with a baby on the way at the time, I didn’t have enough cushion to invest my time/money into learning a language, development environment and marketplace that I really knew nothing about. So, I didn’t think too much about iPhone programming at that time. On top of that, I didn’t own a Mac, so it really was out of the question.
That sounds pretty bleak — so, what ultimately turned you around?
Fast-forward to just a couple months ago: my wife purchased an iPod Touch. So, naturally I started using my iPhone more, which had pretty much become nothing more than “just another phone” to me until then.
What inspired her to get an iPod Touch in the first place was that quite a few of our friends and family were posting their scores from their iPhone/Touch games to their Facebook, and we wanted to get in on the “action.” Once we both got our devices, we downloaded the games our friends and family were playing. Before we knew it, we were having a lot of fun competing with them on Facebook/OpenFeint, trying to get the highest score and what-not. Another cool thing is that many of them were friends and family we hadn’t really spoken with in a while, so it became a great way to keep in touch.
Naturally, my wife and I both thought it would be really cool to make our own iPhone games to share with our friends, family, and the world — and possibly make a profit as well. Since we both play games, and have lots of experience in graphics design as well as programming, we knew we’d make the perfect game development team without the need to ever outsource any of the work to outsiders. And the fact that I had just purchased a MacBook in January just made the whole thing just seem like fate. So at that point, Beebe Games was born.
Yes! From there, what were your first steps as official iPhone game-makers?
I thought for sure I was going to have to buckle-down, buy a book, and learn Objective-C. But knowing how tall of a mountain that would be to climb, I started searching for alternatives “just in case.” My initial search took me to a piece of software called GameSalad.
GameSalad is a drag-and-drop (no coding) iPhone game development program that allows someone with little-to-no programming experience to create an iPhone/iPod Touch game (little did I know, it’s really only viable for very simple games).
So I downloaded GameSalad and actually produced two games with it that went “Ready for Sale” in the Apple App Store. One of them was the first version of Doodle Dash! and the other was a game that I’ve since removed from sale. While I was initially excited about having published games for sale, there were some things about my games that I was very unhappy with.
First was performance: GameSalad games tend to run slow/choppy, and mine was no exception. I did manage to make the game playable after doing countless performance tweaks, but the end-product definitely wasn’t at the level I wanted it to be (not even close).
Then, there was the lack of social features and web connectivity. The social nature of iPhone games (posting scores to Facebook/OpenFeint, etc) is what drew me into iPhone gaming in the first place, so it — for lack of a better word — sucked that the games we were producing couldn’t do that, not even in the simplest way. You could see your own high score in the game, that’s about as far as GameSalad would allow you to go with that.
Also, there was the issue GameSalad splash screen. Unless I paid $2,000 to have it removed (out of the question), the games we made featured a big “Made with GameSalad” splash screen that showed up for anywhere from 3-5 seconds when you first opened the app. So, not only were there performance issues (not just in-game performance, but loading times were extremely high as well), and an absence of even basic social/web features, but there was also this big fat “Made with GameSalad” that came up every time someone played the game which, in my opinion, severely wore on the credibility of the new Beebe Games brand that we were trying hard to build.
Sounds like you were pretty much finished right as you were getting started!
I was! So, from there, I decided it was time to remake the games in Objective-C, even if it did take me a while to learn it.
Everything I’ve taught myself online — including HTML, PHP, Visual Basic, some C++, and the GameMaker program I used about a year and a half ago — was through online tutorials. So, naturally, that’s the first place I looked to start learning Objective-C. Sadly, I soon realized that there are not very many (if any!) good Objective-C tutorials with the beginner in mind!
In fact, Objective-C looked very overwhelming, but I had vowed not to give up. So, my next step was to go buy a book on the subject, but I didn’t do it right away. Instead, I had planned on doing that sometime later on in the week (thankfully!).
During my wait, on my quest to get my head wrapped around what it would entail to learn Objective-C game programming, I stumbled across your website and found the Corona SDK. I saw the examples in the Game Edition video, which already proved to be much better than anything GameSalad could produce, so I knew it would be sufficient for the games that my wife and I wanted to develop.
So that‘s how Corona came into the picture! But what made you decisively want to stick with it?
What really did it for me was seeing examples of Lua code (the language you use to program iPhone apps and games in Corona). Lua looked like a cross between PHP and Visual Basic to me, both of which were languages I was already very familiar with! I knew I could learn Lua very quickly, so I made a deal with myself (and my wife, of course) that I would download the Corona SDK 30-day trial and, if I could learn Lua/Corona and convert Doodle Dash! (or a significant portion of it) before the trial is up, then I’ll purchase a Corona license and go full-force with it.
I think the trial was at 22 days left when I had almost the entire Doodle Dash! game converted, plus a bunch of other great features that wasn’t present in the original GameSalad version (Facebook posting, OpenFeint leaderboards, amazing performance and tilt controls, new enemy sprites, etc.) so I purchased a Corona license, submitted the new update to my game, and it was approved within a few days!
You probably already guessed it, but I never got around to buying that Objective-C book! 😉
You decided to completely remake a preexisting game with Corona — some might call this crazy because of the assumed long hours and redundant work that goes into rebuilding a game. Was that the case here, especially since you were just learning Corona and Lua?
I still have the development build of the old GameSalad-made Doodle Dash! on my iPhone and I sometimes go back and look at it to appreciate the new version I made with Corona. I think it would have been crazy for me to have not remade it. I don’t want to chalk any of our games up, even if they are our earliest releases, as just “experience” so I wanted Doodle Dash! to be something that would be both fun and competitive — thankfully, Corona allowed me to do just that!
Since I was also learning Lua when I remade the game with Corona, I don’t think any of the work was “redundant”, but rather necessary because while I was learning Lua and Corona, my game was being re-made at the same time. (as opposed to learning by making small examples, and then remaking the game later on — which is normally the way it goes).
Exactly how much quicker (development time-wise) and shorter (lines of code) did the Corona build of Doodle Dash! turn out to be?
Doodle Dash! took me about 8 days to develop using Corona, and that was with learning Lua at the same time — which is the fastest I’ve ever picked up a language and developed a game at the same time! I attribute it 100% to the simplicity of Lua and how well Corona uses it to build your app (as well as all the help I received from the Corona forums). However, I believe development time for Doodle Dash! would have been even shorter if it wasn’t for my initial lack of knowledge in Lua.
The original GameSalad version of the game — which has only about half of the features of the Corona-made version — took about 2 weeks, which is also very fast by normal development standards. GameSalad has no coding involved, so I can’t compare lines of code, but it’s amazing how I was able to develop my game in Corona even faster than the GameSalad version, despite the fact that I did have to write code.
Doodle Dash! turned out to be only 3,670 lines of code total, which is incredibly small considering the incomplete GameMaker game I created over a year and half ago was about 4 times as many lines of code as that! (GameMaker is also a “rapid application development” tool). Based on the examples I’ve seen of Objective-C when I was looking through the online tutorials before discovering Corona, I know that if I would have remade Doodle Dash! using Objective-C, the lines of code would have been exponentially greater than 3,670.
Based on my experience in programming, I’d have to say that 3,670 lines of code would normally produce a small, simple program that would most-likely be nothing more than a demonstration. Instead, with Corona, 3,670 lines of code produced a full-featured game that is selling in the App Store right now and is getting 5-star ratings by everyone who has decided to submit a review.
Specifically speaking, what were the key features of Corona that allowed you to be so quick and still make a quality game?
First, it’s the fact that with Corona, you program in the Lua language which is 100 times (if not more) easier to learn than Objective-C, so that alone boosts development time. Despite it’ simplicity, you don’t sacrifice performance, so it just makes sense (whether you’re familiar with Objective-C or not).
Second, the amazingly fast Corona Simulator is a key feature that allowed for super fast development. Since Lua is a scripting language, I can modify the code and see the changes instantly in the simulator at the push of a button (without having to wait for code to compile and all the other stuff that goes along with developing iPhone apps with Xcode and Objective-C).
I come from a web development background where things work in a very similar manner: you write the code and click refresh in your web browser. With Corona, instead of using a browser, you use the Corona Simulator… not much difference there.
So, out of the box, everything seemed very familiar to me, and that is what ultimately allowed me to develop my game so quickly.
So, I’m assuming you’re now an “exclusively Corona” developer after that whole ordeal?
Absolutely! In the relatively short time I’ve been using it, Lua and Corona have become my development language and tool of choice — even over PHP which I have been a huge fan of for years.
And here’s another reason why: in the future I plan on porting most (if not all) of our iPhone titles to Android, so I’m excited that with Corona I’ll be able to use the same code to create Android versions of my apps when I’m ready to.
If I never discovered Corona, I’d have my slow GameSalad-made version of my game still in the App Store and would probably still be reading that Objective-C book. I’d also never have considered porting any of my apps to the Android platform in the future if I would have gone the Objective-C route.
Speaking of the future, what’s next in the pipeline for you?
Right now, version 1.2 of Doodle Dash! is in the App Store “waiting for review” with even more features and improvements coming, and we’re about half-way finished with our next game. We also have more games on our roadmap, which we will be pursuing development on in the near future. Corona allows us to focus on gameplay and the quality of our apps instead of spending so much time on the technical aspects of things, which is why we’re able to produce high quality games at such as fast pace.
Are there other features in Corona that you’re looking to utilize for your next project that you didn’t get a chance to implement with Doodle Dash! ?
I plan on taking advantage of the new “Network Save Card” OpenFeint feature in our next title (which I didn’t implement in Doodle Dash!). We also have a simulation game on our roadmap (which I’m very excited about) where I plan on taking advantage of the WebPopups and networking features to make the game more “social” by using my existing PHP knowledge and allowing players to create “profiles” and exchange items via an external web server from within the game.
I’m sure as we make more games, I’ll be taking advantage of just about every feature the Corona SDK has to offer 🙂
Well, we’re looking forward to more of your creations.
Keep us posted, and congrats on making DoodleDash! today’s OpenFeint “Free Game of the Day!”