In times like these, it helps to look at the company you keep — and if you are a Corona developer, you should find comfort knowing that you’re building apps in exactly the same way as top iPhone game studios.
These developers all depend on Lua to create their iPhone apps, so if Apple’s new rules were interpreted literally, it would immediately impact star players and top-selling apps. Developer Louis Gerbarg illustrates the consequences, assuming Apple would be reckless enough to apply its new rules to Lua-based games:
“This affects major app store publishers, like EA, Gameloft, Tapulous, and ngmoco. Looking at the top ten lists on the app store right now I see several titles that I know have embedded Lua interpreters.”
This developer’s open letter to Steve Jobs similarly highlights Lua’s central role:
“For the past 6 months I’ve used the programing language Lua in all of my iPhone apps. I’m not alone, EA and Tapulous, two of the App Store’s best selling development shops, find Lua to be a huge benefit to iPhone development.”
In the past few days, thousands of developers have been dissecting the application bundles of top-selling App Store games. What they found was that many top-selling apps embed Lua, such as the top-5 selling app Diner Dash (which has an entire folder of uncompiled Lua script files, i.e. the raw source, inside the application bundle) and the international #1 selling app Angry Birds (which also contains multiple .lua files) just to name a few. Even Tapulous’ #1-selling family of Tap Tap Revenge apps — perhaps the most well-known apps in the history of the iPhone App Store and featured onstage by Steve Jobs himself at the OS 4.0 launch — embed Lua.
Why am I bringing this up?
Because the app bundles you create using Corona are structured in the same way that these major developers structure theirs. The architecture boils down to a division between the engine and the logic. It’s analogous to the roles played by real engines and transmissions. The engine provides the power; the transmission connects the engine to the final drive to make a vehicle go.
As Gerbarg explains:
“If you aren’t a game developer you might not be familiar with how large games are structured, but most games consist of a game engine, which is high performance code for doing things like rendering graphics, and an interpreter which runs the game logic (determining how sprites move, determining when to pop up in game text boxes, etc). This is how practically every commercial RPG works, as well as many (most?) other types of games.”
This sums up how your Corona apps are packaged. There’s the game engine (the executable binary which, as I mentioned previously, is 100% Objective-C/C++) and then there’s the logic (defined by your Lua code). Then the Corona engine goes one step further than other Lua-based iPhone apps by refusing to run, load, or execute raw uncompiled Lua scripts; they must be fully compiled at the time of the build and stored internally in the app.
Hopefully this helps clarify why we continue to believe that you, our Corona developers, will be fine. After all, you will be submitting apps that look just like ones put out by bestselling iPhone game studios and developers. I can’t think of better company to be keeping!