Monkey Vs Corona SDK

Monkey Archive Forums/Monkey Discussion/Monkey Vs Corona SDK

Greg Squire(Posted 2011) [#1]
Corona is multiplatform mobile SDK that is based on Lua that has become rather popular. I wanted to start some healthy discussion on what the pros and cons are between the two.

Here's some of my observations/opinions

Corona SDK
Pros
More mature and established SDK
Support for hardware Accelerometer, GPS, Compass, camera, etc.
Support for integration with Maps, Facebook, OpenFeint, and Game Center
Physics built-in
Based on Lua which is fairly simple and easy to learn
Have had a number of good "flagship" apps which have been in the top ten lists.
Good Community Support

Cons
iOS and Android only (though for some this might not be an issue)
Lua is not an object oriented language (though you can do "quazi-obect oriented" stuff)
Subscription based model (have to keep purchasing each year)
Andriod support has been buggy (though a recent update has addressed this)


Monkey
Pros
Support for more platforms (iOS, Android, Flash, HTML5, Windows, Mac & Linux)
Based on Blitz languages which have been stable and simple to learn
Object Oriented language
Purchase only once (and cheaper)
Good Community Support (many coming from the Blitz community)

Cons
Still in it's infancy, so less features and not fully stable yet.
No support for hardware GPS, Compass, camera, microphone, etc.
(I read somewhere that Monkey does support the accelerometer, but maybe that was with a plug-in)
Physics not built-in (though looks like it will be supported with third party modules)
No "flagship" apps which have been in the top ten lists (at least not yet)


slenkar(Posted 2011) [#2]
I dont like LUA and I dont need those features that are missing so im happy with the monkey


DGuy(Posted 2011) [#3]
I purchased the Corona SDK back in the 'Early-Adopter" pre-release days and would probably have used it to develop my first iPhone app, and be using it to develop my current one were it not for one issue: The inability to interface with native code.

I need access to 3rd party SDKs and this is currently not possible with Corona. Yes, the developers have added support for several popular SDKs but if you need/want to use others, your stuck. Also, if you need access to a new or exotic API that Corona does not expose, you stuck.

It's very easy to interface native code with Monkey: Took me about a week to get the Flurry, Adwhirl, Vdopia and Greystripe SDKs working with Monkey!

For me, the big pros for Monkey are:
* Ease of interfacing with native code
* Straight forward language/syntax (I know Lua, but it's definitely love/hate ...)
* Multiple platform support (in particular, iOS, Android, Desktops & (with a little tweaking) WinPhone7)
* The possibility to add new, customs targets (I'm looking at you Bada ...) BTW, Don't know how hard or easy it would be, but I'd like to try ... :)
* It's small size (as in the size of apps produced).

Bigest Con: The name! (I just don't like it ... ;) )

While Monkey is new, I've been very please with it's stability & design: since its release, I've been coding daily with it on some pretty (I think) non-trivial stuff. This, and my experience with other Blitz products, has me feeling very good about by choice thus far ...

One more "Con" to Corona: To create a device installable version of your app, you have to upload your project to the Corona servers, where it gets compiled and sent back to you ...


jjsonick(Posted 2011) [#4]
Pretty much all the cons listed in the first post for Monkey are related to the 'still in its infancy' fact. Hopefully all that stuff should come with time (some of it already is being worked on, like Physics, as mentioned). Don't know how much I would or wouldn't like LUA, but I was really turned off by the subscription model for Corona.


muddy_shoes(Posted 2011) [#5]
>Object Oriented language

The problem is that Monkey's implementation of OO seems rather weak compared to other languages. The lack of multiple inheritance or interfaces is a particularly annoying hole but there are others. If you're coming from another language you spend a lot of time finding things that you can't do in Monkey and not a lot finding that Monkey provides helpful new tools.

Personally I think the pros are all in the multi-platform approach and the focus on simplifying and structuring cross-platform support. The major con is the language, and I'd be very happy to rip it out and put something else on top of mojo. I appreciate that those who have been using Blitz languages before might feel the opposite.

Corona only seems to support iOS and Android, so it's of less interest to me as a starting platform. The other side to that is that if you are primarily interested in those platforms then Corona is obviously more tightly focused and driven to support specifics for those systems.


Hima(Posted 2011) [#6]
I'm also a CoronaSDK early adopter. Now I don't plan on going back to use it anytime soon, because of several reasons.

- You can't add features that involve native codes by yourself. All you can do is waiting.And they are very slow in implementing features. It's been two years,maybe, but I've yet to see the additibe blending feature.

- Android support is very bad. If you make games for ios, there are not many problems. But tgere are so many problems on android that will make you wonder whether making a good game on android with corona is possible or not. This ranging from slow fps, inconsistenvy between corona simulator and device, to crash on device without error trace.

- Many features are not fully implemented. Physics, for example, are not fully exposed to users. You cannot set a minimum threshold for elastic collision, which is a very basic setting of box2d. Sounds are still buggy. They have selective loading resource for retina display, but it doesn't work with spritesheet. And using spritesheet is encouraged...

Seriously, I gave up on this SDK. Monkey give me much less headache while I can cover more build targets. I there is no major change in corona, I dont think I will revisit it again. Using Unity3D with a sprite plugin is still easier than corona IMO


JD0(Posted 2011) [#7]
Corona is great if you don't mind playing in their limited sandbox. It has features for resizing to different sized devices, and for iOS has a large feature set containing most of what you want to do.

Lua is great.

The key negative for me is the fact that you can't interface with native code so all the new features Apple comes out with you can't use. All those nifty open source libraries that get created for things like app sharing you can't use. You could go crazy if you pay attention to new features Apple adds to the SDK since Ansca can take forever to add them.. iAds is still not supported more than a year later. They seem to spend more time and resources on marketing than they do in updating their software.

Another little talked about negative is that you have to upload your source code to their server for compilation so if you are not online you cannot compile to a device or the simulator (done automatically, but this is the process of compiling for the iPhone), and who wants to send another company their raw source code?

Monkey has a long way to go, but the reason why I am using it now is simply because you can interface with raw code, and you can compile to more targets.


ziggy(Posted 2011) [#8]
The problem is that Monkey's implementation of OO seems rather weak compared to other languages.
I supose you're not comparing it to LUA in this respect...
The lack of multiple inheritance
This is, for me, a great pro. Multiple inheritance is evil.
interfaces
This is the only point I agree with your post. Interfaces would be a very good thing to have in monkey.


muddy_shoes(Posted 2011) [#9]
The phrase was "lack of multiple inheritance or interfaces". You need one or the other. As a preference I would want interfaces, but I'd rather multiple inheritance over nothing. As for the Lua comment, I'm comparing it to languages that claim OO as their structural philosophy, so no. The point is that there's not much glory in saying that you're an excellent procedural Basic as an OO language.


Tibit(Posted 2011) [#10]
Yeah, since there is no interfaces one must sometimes go that extra step to make the design good, often it boils down to wrapper classes and code duplication, while not unbearable I'm really hoping we'll have interfaces one day, and what a good day that would be :)

On topic though, my viewpoint is that Monkey will grow as the community contributes and eventually Monkey will have all those features and much more and for many more platforms.

Have had a number of good "flagship" apps which have been in the top ten lists.
Do you know which apps? When doing a comparison, it could be useful to take a closer look at these successful apps and see what features of Corona they used to their advantage.

Nothing bad on Corona though, haven't used it myself, I think it's wise to use whatever tools is the best fit for the job and the answer to that usually depends on the situation.


MikeHart(Posted 2011) [#11]
I am one of the eraly adopters too and so far can just agree to the pros and cons of Corona. Monkey I love for its language and the ability to extend it. As I not missing interfaces, it is perfect for me.

It's very easy to interface native code with Monkey: Took me about a week to get the Flurry, Adwhirl, Vdopia and Greystripe SDKs working with Monkey!



I wish you would share your monkey implementation.


DGuy(Posted 2011) [#12]
@MikeHart
I wish you would share your monkey implementation.

Flurry SDK w/ Monkey: http://www.monkeycoder.co.nz/Community/posts.php?topic=677
Greystripe SDK w/ Monkey: http://www.monkeycoder.co.nz/Community/posts.php?topic=678
Vdopia SDK w/ Monkey: http://www.monkeycoder.co.nz/Community/posts.php?topic=679


MikeHart(Posted 2011) [#13]
Thanks DGuy, I didn't see that. That is awesome!


Xaron(Posted 2011) [#14]
Another con regarding Corona (at least for me) is the $349 per year(!) subscription model. For Monkey I have to pay $120 ONCE.

Lua is ok but the Android support for Corona is a joke.