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:
- 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.
- 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.
- 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:
- 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.
- 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.
- 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:
- 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.
- 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
- 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/
- Use device.lua (http://www.coronalabs.com/blog/2012/12/11/device-detection-on-steroids/)
- 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.