Moai SDK has been in the news lately and I’ve had a few people ask me what I think about it for game development — mainly as an alternative to Corona SDK.
Right on the Moai website (in the FAQ section if you want to look it up) the designers of that framework say who Moai is right for, and who it’s not right for…
Moai is designed for experienced game developers… Moai SDK is not ideal for people just getting started in game development.
I wrote my first game (unpublished, but still fun for me and my siblings) in 1984 using AppleSoft BASIC. Within a few years after that I was writing commercial games in 65C02/65C816 assembly language. In recent years I’ve created iOS games that are in the App Store.
While I know I’ll always have a lot to learn, I think I’d be put into the “experienced game developer” category pretty easily. But it still took me too long to get the Moai SDK samples up and running.
And coming from Corona SDK I was disappointed to see that doing something as simple as getting an image on the screen took so much code:
-- create a viewport
viewport = MOAIViewport.new ()
viewport:setSize ( 320, 480 )
viewport:setScale ( 320, 480 )
-- create a layer and sets its viewport
layer = MOAILayer2D.new ()
layer:setViewport ( viewport )
-- push the layer onto the render stack
MOAISim.pushRenderPass ( layer )
-- create a deck representing a single textured quad
gfxQuad = MOAIGfxQuad2D.new ()
gfxQuad:setTexture ( ‘test.png’ ) -- load an image to use as the quad’s texture
gfxQuad:setRect ( -64, -64, 64, 64 ) -- set the dimensions of the quad
-- create a prop and initialize it
prop = MOAIProp2D.new ()
prop :setDeck (gfxQuad)
-- add the prop to the layer
layer:insertProp ( prop )
Are you freaking kidding me? The same thing in Corona would be done like this:
prop = display.newImage("test.png")
That’s it. In fact, that one line of code is a valid Corona SDK program. You could compile that and install it on your iPad. That’s the beauty of Corona SDK – you can get up and running so quickly.
So why would anyone in their right mind choose to go with Moai?
The Feel of Velvet Handcuffs
First, let me say that you already know I’m going to be making a case for Moai, but in the coming paragraphs I don’t want you to think I’m “badmouthing” Corona SDK. I’m not. I love that framework and my next game is using it. But I will be making comparisons between the two and [spoiler alert] Corona SDK will come out wanting. 🙂
Ansca Mobile has a plan with Corona SDK to which I’m not privy, but if you look at how they work I think when ease-of-use “butts heads” with power, power takes a back seat. You can get great mileage out of keeping your feature-set simpler rather than more complex. Less tech support, fewer frustrated users, etc.
Sidebar: I think that’s my main reason for hating Eclipse and that genre of IDE — could they intentionally make a busier interface with more options? I don’t think so. The thing that 1% of developers use does NOT have to be front and center. Bah!
So while actual development in Corona is very fast, at some point you’re going to run into a roadblock. Maybe you want to put iAds in your app. Or you want to get/set pixels of an image. Whatever it is, if Corona SDK doesn’t offer that capability, you’re stuck. You have to change the way your app works.
Moai SDK, on the other hand, is open source. You can download the actual source code for the SDK and make changes to it. Yes, you have to know C++ and be a programmer geek for that, but it’s still possible to do. You aren’t stuck with whatever someone else said is good enough.
But still, even with the limitations of Corona SDK and the open source of Moai SDK, look at the code difference between the two. That has to count for something.
Yeah, it does. I’m a BIG believer in rapid development. Because at the end of the day, I don’t want to program, I want to make a game!
However, there is a solution to the “open, but still complex” problem with Moai…
RapaNui to the Rescue?
The guys who make Moai are smart. They’ve created a foundation that’s powerful enough to handle just about anything. And they’ve done it in such a way that there are no handcuffs. They assume a game developer/studio will decide to use Moai and then write routines that make the development faster.
A company in the UK, YMobe, has created a “wrapper” for Moai SDK called RapaNui which does just that. And it’s open source like Moai SDK (both are free to use, you just have to attribute them in your app).
Using RapaNui and Moai SDK this is how you put an image on the screen:
prop = RNFactory.createImage("test.png")
Just like Corona SDK, RapaNui does it with one line — because behind the scenes it’s dealing with the multiple lines of Moai we saw above.
So you get the simplicity of Corona SDK, but you can “drop down” into raw Moai whenever you want. If RapaNui doesn’t handle something, you’re not stuck, you can do it with Lua and the Moai SDK. And, of course, if Moai can’t do it, you can actually make changes to the SDK (yes, that’s not going to be a reasonable option for a lot of people, but still available).
So why did I put a question mark at the end of the previous heading?
Because while I’ve gotten some parts of RapaNui to work, it seems like I’m doing more “fiddling with things” than actual coding. I was never able to get the samples to work the way the README file explained, but I was able to get some of it working in a sample app I built.
The sky is brightening in the the east, but it ain’t dawn yet. 🙂
You’re Just Not All That Good, Jay
Sure, that could be the problem. I know there are people using Moai and RapaNui to create games right now. They’re smarter than me. Or they’ve spent more time fiddling with things.
Either way, it doesn’t matter because one way or the other the pieces will come together. Even when that happens I don’t expect Moai SDK + RapaNui to equal the ease-of-use of Corona SDK — but it will be more of a lure than it is today.
I created a tool that makes Corona SDK faster and easier to use (Corona Project Manager) and I’ve started work on something similar (but even more of a step up) for Moai SDK. I’m sure you’ll hear about it when it gets closer. 🙂
Until then, if you’re geeky and like hard-core programming, Moai SDK is something you’ll want to explore. But if you’re more of a beginner (or pressed for time) and just want to make a game, Corona SDK is probably better for you at this point.
Note: Moai really consists of two parts, Moai SDK and Moai Cloud. The Cloud part allows you to store game data and logic in the cloud, do cross-platform leader boards and achievements, etc. They can be used together but that’s not a requirement. In this article I was only referring to Moai SDK.
I’ve been using MOAI for the last 6 months, and I’m finding it be an extremely valuable tool. Its true that there is a great deal of knowledge required to just get started, but MOAI ships with enough samples where, if you are a true code-reader, you will learn it very, very fast.
The general runtime model for MOAI may not be so familiar to a lot of people at first – its not obvious, for example, that the whole game/event loop is handled by the MOAI runtime, and all you have to do is set up the state for that loop in order to get something going. Inexperience programmers might ask themselves things like “where is main()” and “how do events propagate?” and “what the hell is a Partition good for?” .. but like I said: if you code-read properly, go through all the sample projects included, you will find the answers to these questions.
MOAI needs a lot more users before the documentation is going to get near where it needs to be to support *all* levels of competence, but in the meantime, the community is warm, the sources provided show a lot of information needed, and its quite possible to be very productive after you leave the learning phase. But it does require an investment.
That investment, in my opinion, is well worth it. You will learn things from using MOAI that are broadly applicable to other realms of game and game-engine development, and there really is no better way to make a cross-platform application targeting Windows, Mac OSX, Linux, Android and iOS all at the same time. MOAI really, really kicks ass!
Thanks for that perspective. Corona spoiled me, for sure, but I do see the wisdom in diving in and learning. Of course, I’m a programmer nerd so for me it’s all in a day’s work. But for people who “just want to make a game” the learning curve is probably insurmountable. At this point. I know that will change (I’m going to help) in the future.
(The Other) Jay
Corona is really for beginner programmer. I learned to code while doing my first game with Corona. Now it’s about to release and (almost) looks like a professional game (http://www.spacedisorder.com).
As Jay said, the only issue with Corona is that we are dependent of what Ansca decides to implement in the SDK or not. Sometimes, you’re just waiting MONTHS to have THAT feature you absolutely NEED. Also, it’s building only for iOS and Android which was very cool a year ago. But now, any SDK supports even more platforms.
They promised to support native MAC apps but who knows when this will be available…
Anyway, I’m very happy with Corona. But after my game is released, I will take a couple month to try other SDKs (Moai and Unity mainly). Even if I believe I will stick with Corona 😉
Wow, really nice looking game Michael! Are you the coder, the artist, or both?
Thanks! I’m the coder and i’m working with a friend for the graphics.
damn, i need a friend ilke you
I’ve finished 2 games on corona but all graphics are still placeholders
It’s kind of amazing what a ‘beginner’ programmer can do these days.
I wonder where you can draw the line between professional and beginner.
There seems to be a constant need for cheaper and faster programmers and that surely means that it will be harder to distinguish the quality ones.
Looking at the game I would say that you are quite professional actually and not someone that learned programming doing this first game.
I quitted my job to learn programming and it took me 2 years to make this game!
But now I feel more experienced and efficient and I even started my next game ‘Out There’. This time I code, make art and a friend is doing writing and game design. You can watch the teaser trailer I made here : http://youtu.be/HZwftR8cl3k
Nice. You made pretty good case there. 😉
I’m myself was astonished by the ease of Corona and burnt by it’s limitations.
Tried MOAI, and it was too complexm that I’d even didn’t want to bother further.
But I’ve found a very good alternative named Gideros Mobile.
It also uses Lua language and provides the ease of Corona (if not better) and the freedom of MOAI (through native plugins, you can extend your app to what ever options is provided through Android or IOS SDKs).
Really recommend to try it out! 😉
I’ve looked at Gideros but a couple things about the platform turned me off. To be honest, it was mainly the kind of people it seems to attract. Bullies and whiners. People who think to lift up Gideros they have to bad-mouth other people and platforms. I like that it uses Lua and I like that it makes game development fairly easy. But I wouldn’t want to hang around in that community because of the some of the people there. Not you, you’re probably okay. 😉
What? I would dismiss a platform simply because of the people who use it?!?
Yeah, I guess I’m just that shallow. 🙂
Plus, Corona does everything I need right now and Moai SDK won’t always be as “hard” as it is at this point so I already have things I like at both ends of the spectrum. But sure, people should check out Gideros to see if it fits their needs.
Wow, fair answer! 😉
I, on the contrary, found the community to be very helpful. But maybe I haven’t been with Gideros for too long. Or you’ve tried it very long time ago, when it was much smaller.
But well, everyone’s entitled to their own opinions.
Jay, would love to read your opinions of Gideros SDK vs Corona as well! Thank you very much for this article.
I would give my vote to MOAI, as it is open source: several big studios have adopted it and promised to contribute. The power and potential of MOAI is unlimited, and it is even very easy to use after a day or two of adjustment. And even better, if some of the great frameworks like Hanappe is used the code can be simple as compact as in CoronaSDK.
In a few days only I have managed to get from zero knowledge to making my own 3D scene applying custom vertex and fragment shaders.
Yes, you read that right: there is nothing in MOAI that constricts you to 2D, it can perfectly handle perspective view and 3D-space natively.
I’ve downloaded the Moai SDK and it’s a completely different world. First, I have no idea how to run samples so if you can help me on this I would be grateful. Secondely, I was looking for help on the forums but to register, you must answer a very complicated question such as “According to the inheritance diagram, MOAIParticleEmitter directly inherits two classes. What are they? ” WTF?
It’s not very beginner friendly 🙂
Anyway, Once I will past those warm welcome, I will dive into Moai deeply. I’m planning to develop my next game with it. I’m a bit tired of Ansca as they look like they don’t know where they’re going with Corona. And I’m tired waiting features for ages…
Ok maybe see you in the MOAI forums (if I ever find the answer)!
Hey Michael, you are right, Moai does hits you with a hammer in a head for welcome, but the good thing is that whatever hard times you might have setting it up, you’ll only do the setup ONCE :).
At the moment, with very little knowledge I can write code and test even faster than working with Corona simulator!
I plan to write a tutorial, but here’s a few things to get started ( I use OSX ).
At first here’s what you get when you download and uzip Moai (I listed below only more important folders):
– bin/ : this is where Moai hosts for all platforms are. Host is basically the native code that starts up Moai environment and executes your Lua program. This is part that we don’t see in Corona because the build takes place on their servers.
For example iOS host contains entire XCode project that you can use to build for iOS devices, but we’ll get to that later.
At beginning it’s important to notice that there are OSX and Win32 hosts. We will use these to run our samples on desktop, exactly as what we do with Corona Simulator. For windows, you will look at moai.exe inside of Win32/ folder, and for OSX you’ll have moai executable inside of osx/ folder.
Now if we just click at host and try it to run as a program nothing will happen.
That’s why we need to tell the host where the Lua files are, and we do that by using shell script on OSX ( .sh file extension ) or batch on windows (.bat).
Now let’s take a look at the /samples folderin the root of your MoaiSDK setup.
If you notice, every sample comes with run.bat and run.sh. These are the text files that do the following:
– locate where the host is ( inside of bin/ folder )
– run the host providing the path to lua files as argument.
If you work with windows, you should be able to run sample by just clicking run.bat.
If you open run.bat in any text editor you will see the following:
This basically runs moai.exe and points to two lua files.
Don’t be confused by seeing two lua files, config and main. This only means: let moai first load config.lua and then load main.lua.
It’s the same as having only main.lua and then use
inside of your main.lua.
You can send as many lua files as an argument to moai, they used this format in sample so they didn’t have to do “require config.lua” in all main.lua files.
If you are on OSX, clicking on run.sh will not open Moai exe, so we need to do a bit of work in Terminal.
Open Terminal application, and if you didn’t use it before, don’t be afraid of it 🙂 If you worked in Corona, then likely you been using Terminal to see the text output from “print” statements in your Lua programs.
To run samples let’s try to run camera/camera-fitter example (or any other). We need to do two things in terminal:
– change the current directory to ..camera/camera-fitter
– run.sh file
Here’s how to do this:
– type “cd ” in terminal (notice space after cd). CD is command for “change directory” and now we can either type the directory that we want to go to, or *MUCH BETTER* drag and drop the folder from finder to terminal.
Dragging files and folders to terminal will write their full system path.
So in my case, if I type “cd ” and drag the camera-fitter folder to terminal I will end up with:
I press enter and now we are “inside” of camera-fitter folder. if we type “ls “+enter we will have a listing of all files and folders inside:
Good. now the second step.
You press enter, and Moai window running the camera fitter sample will open.
When you close the window, if you want to open it again, just press “cursor up” on your keyboard inside of terminal window to call up the previous command again (bash run.sh)
Now notice what happens inside of run.sh file:
Same thing as in windows .bat file.
We look for moai program inside of bin/osx/ folder, then call config.lua and then main.lua.
“../” part means “go to the parent folder”, and basically this means that terminal will look two folders “up” from our current directory and then dive into folder /bin/osx/ to find moai executable.
This way of looking for files/folder is called “relative path” because we look for the file in relation to the folder we are currently working in.
Please note that use of config.lua is completely optional, it’s not like in Corona. We can put anything we want in config.lua (or not use it at all).
Now if we want to try other sample, we need to repeat the steps in terminal:
– cd *drop the folder here*
– *drop the run.sh file in terminal*
This is obviously a pain in the ass, but it doesn’t have to be this difficult if we set up things in a different way.
Here’s how I made the process completely automatic on OSX:
– At first, I didn’t want to write down my programs inside of moai-sdk folder. I like to keep my project folder structure in my own way, and keep moai-sdk (with its /bin/osx/moai host program) in a separate place.
– I saved entire moai-sdk folder in some place on your hard drive where you want to keep it.
In my case, I keep moai-sdk in my partition DATA, inside of folder “05_X-PLATFORM/Libraries/moai-sdk”… Copy or move the moai-sdk where you want it to stay and then we need to find the absolute path to this folder.
It’s easy, if we remember terminal. We drag and drop our moai-sdk folder into terminal and it will write the complete path. In my case, my moai-sdk is at:
and accordingly, the important part, moai executable is at:
This now means that I can edit run.sh to always looks for moai inside of this folder, rather than to use “../../” to look for relative path. Here’s how my run.sh looks now:
Now I don’t have to care where my lua files are in relation to moai-sdk folder. They will always look for moai exactly in the place where I’ve put it using absolute file path.
Also you can note that I don’t use config.lua (well I do, but for completely different things)…
Now comes the awesome part, if you use Sublime Text 2. If you don’t use it, well I can’t recommend it enough as it’s by far the most brilliant editor I’ve ever seen.
Now we will set up editor to run the Moai “simulator” for us automatically when we hit “cmd+B” on our keyboard.
Inside of Sublime Text 2, go to Tools > Build System > New Build System.
A new text file will open that will probably look like this:
And now we want to change this so that instead of “make” it points to our moai executable, and provide it main.lua.
Here’s how it looks in my case:
Please remember that I got the absolute path to my bin/osx/moai by drag/drop the file from folder into terminal.
You will obviously have a different file path, depending on where you copied your moai-sdk folder.
Now save this file as Moai.sublime-build in the default folder that will show up.
Check if the changes are being made by looking at Tools menu > Build System.
If Moai is listed, you’re good to go. If it’s not maybe you’ll need to restart the Sublime Text 2.
Now open ANY of MOAI samples in Sublime Editor. Hit CMD+B and Moai “simulator” will open up.
Close the window and you’ll see the lua print output in Sublime Editor console at the bottom.
Awesome, right ?
Well I will probably write a tutorial about this, and also on how to set up XCode to build moai for iOS.
Did this work for you ?
Hey! Thanks a lot for your tutorial! I will try that later and will let you know if I managed to set everything up. Also it’s nice that it works with Sublime as it’s my TE of choice!
Hey! I’ve got everything up and running except for the Sublime part. I did all the steps but when building, I only get a “Finished” in Sublime console.
Oh yes, in order to run Moai properly, you need to do CMD+B when you have opened main.lua (or any other lua file inside of the same folder).
Otherwise I think Moai will not find main.lua that you are pointing at. I didn’t investigate how to fix this, as I have no problem with it (except that ocassionaly I forget to go to main.lua when I hit .build and I do get Finished. thing).
Other reason that you might get “Finished” is that you are running an iOS sample that doesn’t initialize Moai window.
Please check if you have this line at the beginning of your main.lua
To run further test, try to output something like
print( “Hello, there, can you hear me?”)
or generate error like
print(“can’t do this”..nil)
and see if this will get out to the console.
As I finally finished and released my game on the App Store, I decided to start again your tutorial and it’s now working with Sublime Text.
Thanks again for this awesome tutorial! I can now start to make my new game!
Also, try my game (it’s free) : http://itunes.apple.com/app/id547594194
Feel free to give me your feedback!
“In a few days only I have managed to get from zero knowledge to making my own 3D scene applying custom vertex and fragment shaders.”
Ok. I’m sold.
Gonna try Moai in the morning. 😀
I actually tried it once. But got pissed off at the complexity 😛
And BTW @Nenad Katic Thanks a lot for the setting up tutorial.
Wow! Could you give us some examples on how you figure out to implement some 3D with MOAI?
@Juls, I have to state that 3D support is nothing like Unity, but basically almost any property you can set in 2D (like setting position, rotation and scale), you can also add Z property, and since Moai allows you to build objects “manually” vertex by vertex, it’s possible to create 3D objects.
You can check more info here:
As far as I know, noone has so far built an importer for any 3D file format (except for Collada mentioned in the post above), but it is surely just a question of time before those start popping out.
I myself am working in spare time on Illustrator -> Moai exporter that would support also physics and basic 3D (like setting height and z parameters in Illustrator and letting Moai “extrude” 2D shapes on import).
In my opinion, a few months after my comments above, working with Moai will still make inexperienced developer smash against the wall sometimes, but time doing a bit of research to get to know how things work are very rewarding, and it’s well worth the effort. 🙂
In addition to my previous comment, check out the video on how the automatic build for Moai from Sublime Editor2 looks in action:
Please note this video is not a tutorial itself, I will write one now and post on my blog.
Can anybody gives me a very clear example or link how to actually run moai/lua app in an android simulator or the real phone? I was able to build moai and ran the samples under Linux. I know how tu run an Android Java project in Eclipse and that is it . I am a C++ engineer so I am not very comfortable here… Thanks, appreciated!
Somebody here may know, but your best bet is to ask on the Moai SDK forums: http://getmoai.com/forums/
I hope this link can help:
The worst part is setting all your machine needs for running and compiling applications but, in my opinion, it worths every minute you spend on it.
I also suggest to take a look at this IDE that makes super easy work and run tests with MOAI and other frameworks:
Hope this helps!
I have been developing with Corona for over a year and tried out MOAI lately. I have 7 games published using Corona SDK but wanted to explore other options for the exact same reasons you mentioned..
Because we do not want to rewrite things and the fact that both SDKs are using lua we were able to write a basic Corona Sdk wrapper on top of MOAI. It was just a week work concept but definitely something we might go back to if we need it badly for some project.
The idea of using the Corona SDK syntax together with the ability to use the power of Moai when needed is what I want 🙂
I think another big point here is the cost. I’m in the process of building a game for the final project of a masters. I’ve spent the last two years as a full-time student and I’m pretty much broke. I wouldn’t mind buying Corona SDK if it was a once off, but a yearly subscription means my games/apps need to be raking in €400+ in profit each year. Also, I’m finding Corona is limiting my app, I’m having to build for the technology rather than using the technology to build my app. If I could go back a few months I 100% would not pick Corona SDK.
For my next project I will definitely be checking out either Moai or Gideros (Unity for one or two.)
Corona just tipped the cup..
599$/yr for a license to use a SDK on top of LUA?? Its just ridiculous. And 3 days ago it was 199$/yr..
So I guess I will be porting things to Moai, probably using rapanui. Any suggestion for some resources?
The Starter Edition of Corona SDK is now free, and the only thing you don’t get (from a code standpoint) is the ability to do in-app purchases. Everything else is in there! And you pay nothing. You can even build for Apple and Android app stores and sell your apps (or use an ad-supported model) without it costing you anything for Corona SDK. That’s a sweet deal, I think.
I love the idea of Moai, but I’ve read some things from people who have switched to it from Corona and I’ve never seen a “What a great idea that was!” story from any of them. If you’re a Lua programmer Moai might be good for hobbyists. But if you’re planning on shipping a pro-level game, you’re probably going to need to also do C++ and/or Java programming to create the host you need for each platform you want to support.
Don’t get me wrong, I’m trying not to “talk trash” about Moai, but someone getting into it needs to know the potholes before they dive in. Kind of depends on whether you want to spend your time programming or whether you want to spend your time making a game.
As far as resources go, there’s only one book that I know of, but I’ve read through the first few chapters and I *really* like it: http://www.packtpub.com/developing-mobile-games-with-moai-sdk/book
Besides RapaNui I’ve also heard good things about the Hanappe framework, so check it out, too.
Good luck with whatever you decide.
As much as I am a big proponent of Moai, I agree with Jay stating below that it’s still being very far from ideal solution, especially the part of setting things up, and wrapping up the finished project.
If you are not an experienced programmer who likes to do stuff from terminal console, you will find a great deal of trouble setting up the projects. As for wrapping up things go, Moai ships with examples of “hosts” that is a platform-based code that runs the Moai engine on top of it, at it comes in 5 flavors: iOS, Android, OSX, Windows and Chrome NaCl. However neither of these is a production-ready, they are just a half-done proof of concept, and if you want to ship the title you will have to write your own host, handling the low-OS stuff like opening windows, and also obscuring your Lua code so that it’s not plainly all visible when you open the packaged product. All of these (except for updating iOS host) has been a real trouble for me, and the frustration is that all this stuff you usually do only ONCE, and once you have a good set-up you’re good to go. There has been some effort from community to roll out some 3rd party hosts, but they are still very low level, meaning doing a bunch of stuff from command line terminal to a bunch of command-line programs.
On the other hand, API itself is top notch. Much better structured than Corona, and there are also a number of high level frameworks that let you work comfortably. (especially Makoto’s Hanappe and Flower that I recommend much better than RapaNUI – especially Flower where you can also learn so much just going through extremely well written Lua code ). While Corona can do stuff with reasonably less lines of code, as its API looks like a bunch of macros, Moai lets you go further with the code you write.
All in all, if you are not ready to wrestle with setting up hosts for each individual platform, and don’t have a person to do that for you, you shouldn’t consider Moai a production-ready solution, more like a very cool hobby. Hopefully the community will catch up and come up with some simple way of setting up projects, such as “wizards” to set up projects in Open Frameworks. I would love if I knew to do this myself, but my knowledge is limited, and then people who actually know this stuff usually prefer to keep doing things like they normally do, setting up stuff manually in command line console, instead of trying to come up with a simple GUI-based solution that once you point to some important folders (like moai source, android NDK, etc…) just fire up and creates projects folder for you.
The real frustration is that it takes so little to make Moai the top-of-the-game engine, and most of that work would not be about engine itself, but making a project set-up more user friendly and filling up the weak spots in a very sparse documentation. Regrettably, sometimes looks like nobody is really interested in making it happen.
Am I happy with switching to Moai? Not so sure. Going away from Corona was certainly a good move, but if I had to do it over again, I might choose Unity instead, or go some exotic way like Shiiva3D. In the end I agree again with Jay when he says: “Kind of depends on whether you want to spend your time programming or whether you want to spend your time making a game.”
With Moai I found myself more immersed in great API, but unfortunately less productive than any other programming environment I used before ( I worked with Corona / Lua, Flash / AS3 for about 10 years, Open Frameworks and Cinder /C++ for about 2 years).