After the surprising success of the first Developers Cagematch!, for a while I had planned to do another round with a different set of programs, and then of course life happened. Today, I’m proud to announce that the second set of this series is finally here, and we’ll be looking at two popular and powerful Lua-based programs, Corona and Marmalade.
I was introduced to Lua during my graduate studies, as an alternative to coding for mobile games. For a strange reason, my courses were very invested into Flash and ActionScript despite its criticisms even at its time. While I still prefer it for animations and light games, even in its heyday, for anything else that Flash was used for, I heavily disliked it. I’m sorry, but Flash websites are not practical, not secure, and are a sign of its time. However, if you still want to get your feet wet and want to practice OOP, especially in games, I won’t stop you whether or not you want to use AS2 or 3.
But, if you want to start playing outside of the little leagues, Lua is a good place to start. As a simplified C language, it is cross-platform and a simple way to really look at how most modern applications, games, and other software are structured. Unfortunately, while I have only really used it for prototypes, I still do advise it as a good way to build your prototype, in case you’re really not keen on using something like HTML5 (which I really recommend as the king of simple prototyping, but again this is all preference).
However, don’t let this learning curve stop you. Lua is also capable of making powerful apps and games, and while by itself can make simple and fun apps, it works best with other languages talking to it. (Hence it is cross-platform, so no figure you will also see some C languages thrown in to help boost up Lua. Think of it like the Megazord from Power Rangers.) For the sake of this cagematch, while I will point to this fact, I’ll only be referring to Lua itself, plain and tall.
Corona is a lightweight SDK suitable for the mobile and tablet environment, and a program that was released for Android builds on PC right around when I entered my graduate courses, so it felt incredibly exciting to use such a cutting-edge software. The interface for Corona is very simple, and the tutorials and documentation demonstrate the program’s ability to tap into the features of smartphones and tablets. The program also has access to third-party API’s, enabling even more customization and other bells and whistles you can put into your projects.
Programming in Corona however, is a little different compared to using other means to code Lua. Some of the functions are library-specific to the software only, so if you were to do the same function in Marmalade or another program for example, check with the documentation for how it needs to be coded or else you will get errors. This is something to keep in mind if you plan to use an alternative Lua program in the future, but if your heart is set on Corona for life, you have nothing to worry. (Unlike AS2/3, the differences are minor in comparison and is only a matter of semantics, not the actual coding structure.)
You’re probably wondering why Corona would do such a thing, and until you realize how certain functions behave in other versions of Lua software versus Corona, you’ll realize in the long-run, Corona is more organized in terms of how the programmer can execute their code to do what they want to be done. As any programmer knows, organized code is efficient code, and will hog less resources on the device being used. (This isn’t to say Marmalade is not an efficient program, just that it’s a bit of another animal, but I will explain soon.)
At the time of writing this, the licenses have changed from what I had used originally. CoronaSDK formerly was split into two different types of licenses (one for Mac, one for PC), and could only output to those respective device families, for an annual fee. Now the SDK can output to both OS regardless of which you have, and can output to all types of devices, whether they’re iOS, Kindle, or Android. They also have monthly fees which follow the Unity model – Free, Small Business for $79/month, (mainly for revenues up to $500k), and Enterprise for $129/month (no revenue limit).
As you may have figured, whereas Corona originated in the States, Marmalade is from the UK. It’s also an award-winning program, and while this was outputting to a variety of platforms earlier than Corona was, it also has a level of sophistication that enables it to implement a wider variety of API’s built-in, including support to Objective C and OpenGL, and even includes a plug-in for use with Autodesk 3DS Max and Maya. If Lua is a language meant to be played with others, this is practically the playground that comes with it.
Of course, with great power comes great responsibility. For the average joe programmer getting into Lua, Marmalade has a higher learning curve than Corona does, and it can be overwhelming if you’re not used to seeing or working around all of these functionalities. (I know I was.) While Marmalade’s tutorials and documentation are fantastic, and its interface dazzling and dashing, there were many times I would stare at my screen and grumble to myself “can’t I just code?”. Maybe I was too used to Corona’s handholding and simplicity of things, but while more experience programmers would wet their pants over the oodles of goodies Marmalade has to offer, I just want what’s needed to work, and I want it to work well. The more I worked with Marmalade, the more I felt like a resource manager and not a programmer.
However, if you’re a person of greater talents than myself and want the extra mile, Marmalade has reasonable pricing, with the higher bills obviously meant for larger companies needing multiple licenses. Average joe programmer can easily get away with a Free license with no trouble, or for $15/month upgrade to Community for a little more customization. Everything else from Indie onward ($499 annual and up) open up even more platform and other treats to enjoy. Unlike Corona, Marmalade from the get-go can be used for developing for Windows Phone/Store/10, Tizen, and Blackberry, so keep that in mind if you’re looking to do more outside of good old iOS/Android.
THE WINNER…IT’S A TIE
Sorry, folks. The answer is as subjective as my experiences using these programs. Both hold many strengths and weaknesses, but simply picking one over the other is like choosing apples over oranges. (Both of them are fruit, which means they’re delicious and good for you!)
If you want to just get started and code, Corona is what you’re looking for. Now with the ability to export to iOS and Android, coupled with an efficient library, and hundreds of API’s out of the box, it’s just a no-brainer.
However, if you wanna be with the big boys (and girls), dive right into some Marmalade. Not only would you be able to export to a variety of mobile and tablet platforms, if you upgrade to an Indie license you can basically put yourself all over the digital map! If you’re not afraid to learn a few new languages all in one go, and want the challenge, you will be rewarded generously.
While Lua is taking a backseat in the current atmosphere of mobile/tablets, with its cousin C languages and others such as Java and native taking reign, it’s still a lovely language to learn, especially for beginner/intermediate coders. Compared to others, it feels more intuitive thanks to its lighter syntax, which means you will see results quickly, but keep in mind that similar to Python and AS3, cAsE sEnSiTiViTy is an issue so be careful! Both programs host fantastic documentation and tutorials from other helpful developers, so if you’re in a bind usually you will be able to find yourself out of that jam soon enough.
Happy coding, and Happy Thanksgiving!