If you have any interest in iPhone gaming development, you must have heard of Robert Nay, the 14-year-old developer from Utah that created Bubble Ball, a physics based puzzle game that reached the top #1 free game on the App Store in a matter of days, getting well over three million downloads.
The moment I heard that, I immediately wanted to know how he developed the game. My assumption was, of corse, that if a boy could build a game, I could as well. I gave my self 2 hours to figure out the framework he used and one afternoon to build a simple prototype.
Read more to see what was the outcome of this challenge…
Nay used Corona SDK which, according to its maker Ansca, is “is a fully hardware-accelerated game engine framework with an easy scripting API. Games will run at native speeds in OpenGL on iOS and take full advantage of hardware features like accelerometers and multitouch. Corona makes it easy to deploy assets across multiple screen resolutions, using Corona’s automatic content scaling and high-DPI asset substitution.”
Corona SDK has a free unlimited trial: you need to purchase a license only the moment you want to publish your app to the App Store or Android marketplace.
The framework uses the Lua programming language. “Lua is a powerful, fast, lightweight, embeddable scripting language. Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.”
I was curious enough to check out where Lua comes from: Lua is designed, implemented, and maintained by a team at PUC-Rio, the Pontifical Catholic University of Rio de Janeiro in Brazil. Lua was born and raised in Tecgraf, the Computer Graphics Technology Group of PUC-Rio, and is now housed at Lablua. Both Tecgraf and Lablua are laboratories of the Department of Computer Science of PUC-Rio.
I’ve downloaded the framework, followed the “Corona in 5 Minutes” and the “Quick Start” tutorial to get a clue of how the framework actually works. I also kept handy the Basic Programming Techniques to get into the syntax. It feels a lot like being back at the PHP 2 (PHP 3?) days… I don’t think you can build complex systems with this thing, but for basic games without a lot of logic it’s just great.
With what I learned following the initial tutorial and looking into the animations and sound playback a bit, I was able to build a simple “guess the shape” for 2-4 years old children (my daughter is 4 now, so I had a chance to test it) in half a day, including some primitive design work, some music from Apple’s iLife library and some sound recording for the questions (that was required since 2-4 aged children cannot read!).
The frameworks delivers its promises: first of all on such simple projects, you get to “playtest” a lot to fine tune the game rather then deciding things up-front. Secondly, a designer-developer can get the basics of it and build games on his own, making this the prefect tool for indies. Third, with a bit of attention, you can easily build your app so that it runs fine on both iPhone 3GS, iPhone 4 and iPad, scaling up smoothly to the larger screen resolutions and the different aspect ratios.
The trial also builds the binary for the device, although it hangs for several minutes while building. To the point that I killed the compiler several times before allowing it to stay stuck long enough to actually get the results. A progress indicator is pretty much due.
I didn’t try the physics engine yet but I’ve looked at the tutorial and it looks pretty straightforward. In fact there’s plenty of ground for several more prototypes for me to build in the next months… If I had the time to do that.
It is worth to mention that there is a competitor to Corona named GameSalad, which offers a visual environment to build the interactions between actors instead of a “barebones” code based environment. However, as for all visual tools, you really need to rely on the interface and figuring out the GUI will eventually take you about the same time as getting into the basics of Lua.
The main advantage of GameSalad over Corona is that it includes the means of adding levels through a visual editor, while Corona needs some additional pieces of commercial software in order to get a full blown level editor working with your code (or, you can write your own level parser). The other main advantage is that GameSalad also allows to build games for the Mac platform, so you may get a wider audience to market your game to.
I wish to emphasize that these tools make it accessible to non-hard-core-developers tools to build games, but don’t turn you magically into a game designer. Game design needs talent, experience and knowledge. Since these tools allow you to kick start the creation of your game, the immediate result may be that a ton of crap gets produced and released into the wild. This may bring to the wrong perception that one cannot achieve quality through these frameworks.
That is wrong. These tools are pretty valid and will allow you to build a quality casual game just like many successful games you see today on the App Store. This is especially true for Corona, which I tried. I’ll know better about GameSalad when I’ll have the time to build something with it as well :)
Bottom line: these tools will allow you to shortcut the development time, but won’t replace the need for an awesome graphic designer, a creative game designer, a great marketer (and if you can get one with superpowers, go for it!) and at least one guy that has some former programming experience.