Why Doodle Dash! creator Jonathan Beebe still hasn’t bought that book on Objective-C

Share on Facebook0Share on Google+0Tweet about this on TwitterShare on LinkedIn0

Jonathan Beebe recently made a splash with Doodle Dash! for iPhone, his first foray with Corona that just received the honor of being OpenFeint’s Free Game of the Day.

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.

Doodle Dash! for iPhone, made with Ansca Mobile's Corona SDKYes! 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.

Like what?

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.

Doodle Dash! for iPhone, made with Ansca Mobile's Corona SDKI 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!”

Doodle Dash! is the August 26 OpenFeint "Free Game of the Day"

Share on Facebook0Share on Google+0Tweet about this on TwitterShare on LinkedIn0

This entry has 25 replies

  1. The interview looks great Hetal!

    Thanks for the opportunity to be interviewed, it was a pleasure sharing my experience 🙂

  2. Chia says:

    Thank you Jonathan, for taking the time to talk to us! We’re very excited for you- congrats on being the game of the day on OpenFeint.

  3. MantaNZ says:

    I’m a GS user. I agree 100% about the performnce issues. I bought an Objective-C book so I could do my next game natively but my brain isn’t buitl for coding… I have, however, looked over some Lua tutorials and I think I’ll be able to get my head around that! I think I am sold on Corona 😉

  4. Dorothy says:

    Thanks for doing this interview! As a new game developer myself, my partner and I are wondering what route to take next and Jonathan’s experience was really helpful to read about.

    We’re not hardcore programmers ourselves and don’t think that learning Objective-C would be a good use of our time/energy so we hired a programmer to work in Torque Game Builder for our first game.

    Now, as we wrap things up with game #1 and turn our attention to developing our next game, we’ve been personally creating prototypes with GameSalad. The performance issues and lack of social network compatibilities are major turn-offs to us though. On the plus-side for GameSalad, they seem to have an active and supportive customer community.

    After reading this interview, I’m wondering if maybe Lua via Corona is an option for us. I’ll look into it!

    Thanks for the inspiration!

  5. Dory Kishiyama says:

    I’m so impressed with Jonathans interview, I know a lot of new game developer’s out there got some inspiration and great ideas!!!! Congrats Jonathan and best of luck to you and your wife

  6. Jack says:

    what happened with Make Money Online, Jonathan?

  7. John P says:

    Are there any good Corona Tutorial sites or YouTube’s you would spin us to?

  8. Name says:

    After stupid Game Salad decided to be stupid and charge royalties AND control marketing of their apps, I’m moving to Corona as well… so I’ll have to buckle down and write code. I’ve never tried Lua before, but I’m so glad the Game Edition is out now.

  9. Tim Statler says:

    John P, please check out our videos and page:


    Our tutorial “Corona in 5 minutes” is a great way to get started as well:


    The community has contributed lots of getting started tutorials, as well, like this one:


  10. The game is not available on the US AppStore. What happened?

  11. Walter says:

    Apparently, there is some dispute over the use of the word “Dash”


    They’re in the middle of resolving this.

  12. Walter, I was just about to post that link until I saw your comment, so thanks for beating me to it! lol

    And for anyone interested in Doodle Dash! … stay tuned, because we’ll update not only the name, but will add content to make it much better than before 🙂

  13. Doodle Dash! back in the app store, renamed to Tilt Monster with WAY more features and much better performance: http://bit.ly/beebetiltmonster

    Still 100% Corona SDK, of course.

  14. Gene Evangelist says:

    Seems like a great product.
    I’ll bring this up at our next iphone/ipad App Developers meeting.

  15. Caeser says:

    Jonathan Beebe you inspire many upcoming developers. cant wait to download your app.

  16. tushimom says:

    Hey Jonathan ! congratulations to you and your wife. It’s an inspirational interview for the new bees like me in Corona. Thanks again

  17. Derek says:

    I’m irritated with myself for wasting money on a few Objective-C, Xcode, and Cocos2D books, just to find Corona before they even arrived. I just threw them in the corner after downloading the demo. I even bought a Mac Mini and was dreading having to get comfortable with OSX after 20+ years of using Windows. With Corona, I can use my power-beast Windows PC to develop and test my games and just copy the source code over to the Mac (now, just a deployment appliance) to deploy them!

    After reading this article, I know I’m not too crazy to think that I can quickly ramp up on Lua.

  18. gs sucks says:

    i switched from gamesalad aswell. the worst thing about gamesalad ( or one of the worst things ) is the community and forums. a bunch of immature 8-18 year olds thinking their gods in the forums lol