Review of Corona SDK after using it for 2 years to write an iOS + Android game

9 months ago, I released my first Corona SDK-made game called ShadowArc on the App Store. Just today, I released a major update that includes Android support and changed it to be free-to-play. You can check them out for free here:

http://itunes.apple.com/app/id570293869?mt=8

http://play.google.com/store/apps/details?id=com.freetherobots.shadowarc

Since I’ve spent the last 9 months getting it ready for Android, I thought I’d share my thoughts on that process as well as my general thoughts on Corona SDK. Just as some background, my full-time gig is doing Cocoa/ObjC/C/C++ development for Mac OS X, so game development and Lua programming is pretty much a hobby at this point.

The Good:

  1. So glad I didn’t have to touch any Java to port to Android. Especially dealing with in-app-purchases, OpenGL ES code and Facebook SDK code.
  2. Love the API. Can do a lot with very little code, which was very important to me. Having 3 kids, I have very small chunks of time to work. I needed a toolkit that would make it easy for me to get into the flow of work and get things done quickly before the next interruption.
  3. Corona support/response was great. I had an issue with Facebook dialogs on Android and dchan at corona labs addressed it quickly (http://forums.coronalabs.com/topic/36515-facebookshowdialog-doesnt-return-a-response-on-android-but-does-in-ios/)

The Bad:

  1. Setting up my config.lua to work across all iOS devices and the most popular Android devices was a painful learning process. This post helped a lot (http://stackoverflow.com/questions/9769319/corona-sdk-cross-device-screen-resolution/9786772#9786772), but also communicating what I needed to my graphic designer made the learning process twice as hard.
  2. widget/scrollview API seems immature (slow/choppy performance, doesn’t bounce correctly at the top and bottom, why do I need to set a mask?). I realize the code is open source and I could go in and try to improve it, but I don’t have the time for that.
  3. display.newText() y-position not being the same in simulator and device caused a LOT of headaches. I understand the difficulty of differences with consistency in text rendering across platforms, but I will definitely use bitmap font atlases next time.

Annoyances:

  1. ShadowArc is an action/arcade game, so touch latency is definitely worse while testing on an Nexus 7 vs on any iOS device. Even a 3gs touch screen seems to be have a quicker response than the Nexus 7. Wondering if this is an Android issue or a Corona issue.
  2. No good way to play lag-free sounds on Android. I realize this isn’t a Corona issue but more of an Android-implementation-of-OpenAL issue, but it definitely makes the Android game experience feel less responsive than the iOS experience, especially for my action/arcade game.

Overall, the good FAR out weighs the bad and the annoyances, so a big thanks to the Corona team!

A few tips for porting to Android

  1. Rob Miracle’s blog post of “Androidizing Your Mobile App” was super helpful, especially for an Android n00b like me: http://www.coronalabs.com/blog/2013/03/26/androidizing-your-mobile-app/
  2. Use device.lua (http://www.coronalabs.com/blog/2012/12/11/device-detection-on-steroids/)
  3. For my Android build, in order to exclude iOS assets(Large launch images, Icon) and include Android-specific assets (ogg, Icon-*.png), I made a build script that recursively creates symbolic links for every folder/file in my game directory. Then, the build script copies over the Android assets over the iOS assets. Corona works just fine with symbolic links to assets.

Those are my thoughts! I’d love to hear anyone else’s thoughts or how any of my annoyances could be addressed.

Great post. 

Regarding bad point 3 (text y position) I wrote a post today. I guess its not the end all solution but maybe its something http://forums.coronalabs.com/topic/37821-pixel-perfect-vertical-font-alignment/

Hi @allbyself,

Thank you very much for the input! It’s especially nice to hear positive comments (and a few negative, so we can improve) from a developer who could potentially use any other platform/SDK.

Just to address a few of your points:

Good #3: I’m pleased to hear that @dchan was able to help you so promptly. I’ll pass this remark on to him.  :slight_smile:

Bad #1: did you ever access the Project Configuration guide? (http://docs.coronalabs.com/guide/basics/configSettings/index.html). Do you feel there’s something lacking in this guide, or just that the “overall process” of layout/design across both iOS and the hundreds of Android screen sizes is inherently tricky? As a note, we’re also producing some videos on this topic, which may help communicate the process to contractors like your graphic designer, who likely does not want to read through a big technical guide.

Bad #2: widgets are constantly being improved, both in functionality and performance. Masking widgets will also, before too long, be replaced by a more efficient method.

Anyway, we appreciate the comments. Best of luck with ShadowArc in the Android market!

Brent Sorrentino

Hey @allbyself

I wanted to post a similar review in these days. Beside all the positive aspects you mentioned I find it also quite annoying that display.newText() y-position is always different. It’s too low on iOS devices and somewhere in between the simulator and iOS devices on Android.

Having no dynamic Scrollview Masks is very frustrating especially in the year 2013. I have to say it quite frankly, Corona spent about half a year rewriting the whole widget library without many obvious improvements ( yet ) plus the community spending their time sending bug reports, etc…

I know they did it because they built it from the ground up in order to make it more flexible for future-improvements.

And as Brent mentioned it will become much better in the near future. Hopefully we’ll see this improvements very soon.

I don’t really understand why Corona as a company don’t hire more people, make the company bigger and spend more time in developing new features. Especially when it comes to audio, bitmap manipulation, including third party librarys and some other general features… I mean, there are new features coming but compared to other third party kits it takes way to long…

On the other hand it has many advantages. I like how the API itself is built up. It’s very easy to do graphics stuff, I think Corona is ideal for Games. And when the code works it seems to be very stable, compared to other third party kits Corona is very fast and solid indeed. Maybe it’s good to mention that I currently use it for a big buisiness app and therefore have another perspective on this.

I also like the community a lot btw :wink:

So big credits to Corona and everyone else here. But there’s still some stuff to do.

And good luck with your game, haven’t tried it yet but the screenshots look amazing :wink:

Roman

Great post. 

Regarding bad point 3 (text y position) I wrote a post today. I guess its not the end all solution but maybe its something http://forums.coronalabs.com/topic/37821-pixel-perfect-vertical-font-alignment/

Hi @allbyself,

Thank you very much for the input! It’s especially nice to hear positive comments (and a few negative, so we can improve) from a developer who could potentially use any other platform/SDK.

Just to address a few of your points:

Good #3: I’m pleased to hear that @dchan was able to help you so promptly. I’ll pass this remark on to him.  :slight_smile:

Bad #1: did you ever access the Project Configuration guide? (http://docs.coronalabs.com/guide/basics/configSettings/index.html). Do you feel there’s something lacking in this guide, or just that the “overall process” of layout/design across both iOS and the hundreds of Android screen sizes is inherently tricky? As a note, we’re also producing some videos on this topic, which may help communicate the process to contractors like your graphic designer, who likely does not want to read through a big technical guide.

Bad #2: widgets are constantly being improved, both in functionality and performance. Masking widgets will also, before too long, be replaced by a more efficient method.

Anyway, we appreciate the comments. Best of luck with ShadowArc in the Android market!

Brent Sorrentino

Hey @allbyself

I wanted to post a similar review in these days. Beside all the positive aspects you mentioned I find it also quite annoying that display.newText() y-position is always different. It’s too low on iOS devices and somewhere in between the simulator and iOS devices on Android.

Having no dynamic Scrollview Masks is very frustrating especially in the year 2013. I have to say it quite frankly, Corona spent about half a year rewriting the whole widget library without many obvious improvements ( yet ) plus the community spending their time sending bug reports, etc…

I know they did it because they built it from the ground up in order to make it more flexible for future-improvements.

And as Brent mentioned it will become much better in the near future. Hopefully we’ll see this improvements very soon.

I don’t really understand why Corona as a company don’t hire more people, make the company bigger and spend more time in developing new features. Especially when it comes to audio, bitmap manipulation, including third party librarys and some other general features… I mean, there are new features coming but compared to other third party kits it takes way to long…

On the other hand it has many advantages. I like how the API itself is built up. It’s very easy to do graphics stuff, I think Corona is ideal for Games. And when the code works it seems to be very stable, compared to other third party kits Corona is very fast and solid indeed. Maybe it’s good to mention that I currently use it for a big buisiness app and therefore have another perspective on this.

I also like the community a lot btw :wink:

So big credits to Corona and everyone else here. But there’s still some stuff to do.

And good luck with your game, haven’t tried it yet but the screenshots look amazing :wink:

Roman

Hey Brent,

  Were those videos every published or are they back burnered?  Just curious, since they could be very helpful. thanks

-Joe

Hi Joe,

Are you referring specifically to a video guide for project configuration, or about tutorial videos in general? We have added quite a few video to Corona University over the past several months. Currently, there’s not one that covers project configuration, but I can mention it to the team and get it on the to-do list.

http://www.coronalabs.com/resources/tutorials/getting-started-with-corona/

Best regards,

Brent

Hi Brent,

  Thanks - to be honest I had completely forgotten about Corona University, but I was talking specifically about project configuration and the options for how to go about designing for all screen sizes.  That definitely tripped me up when I started, and I am much more comfortable with it now.  There are some good articles etc, but I stumbled across this thread and was just curious if that ever got made.

Thanks!

-Joe

Hi Joe,

Actually, I just realized that we do have a video on working with the content area and different screen aspect ratios. It’s linked up as “Content Area” within the “Corona Basics” section of Corona University.

http://youtu.be/RwVlzJtQWd8

Brent

Hey Brent,

  Were those videos every published or are they back burnered?  Just curious, since they could be very helpful. thanks

-Joe

Hi Joe,

Are you referring specifically to a video guide for project configuration, or about tutorial videos in general? We have added quite a few video to Corona University over the past several months. Currently, there’s not one that covers project configuration, but I can mention it to the team and get it on the to-do list.

http://www.coronalabs.com/resources/tutorials/getting-started-with-corona/

Best regards,

Brent

Hi Brent,

  Thanks - to be honest I had completely forgotten about Corona University, but I was talking specifically about project configuration and the options for how to go about designing for all screen sizes.  That definitely tripped me up when I started, and I am much more comfortable with it now.  There are some good articles etc, but I stumbled across this thread and was just curious if that ever got made.

Thanks!

-Joe

Hi Joe,

Actually, I just realized that we do have a video on working with the content area and different screen aspect ratios. It’s linked up as “Content Area” within the “Corona Basics” section of Corona University.

http://youtu.be/RwVlzJtQWd8

Brent