Apologies ahead of time for the rambling. Everything here is just my opinion and may certainly not be 100% accurate. Please ignore my butchering of the english language, while it is my native language it was my worst subject in school. I find it easier to talk to computers.
Picking the programming platform for your games can be a tough job, it does matter if you are a programmer. If you have a one off project I would let the programmer you hire suggest a platform and tell you if it meets all your criteria. In this case it’s always good to compare a few opinions. Be sure to know ALL your requirements up front. This prevents disaster from happening.
However, if you are like me and want to produce multiple games on multiple device platforms, it is to your advantage to use the same programming environment if at all possible. It will reduce the amount of coding required for projects after the first one. Key factors for my evaluations are cross platform code and ease (or even possibility) of including 3rd party libraries.
This is an interesting group. The platforms I’ve looked at are, Gamesalad, GameMaker and Stencyl. I have used Gamesalad for building 2 games that are in the app store. I have not used GameMaker or Stencyl but have researched them. Builders greatly reduce the amount or programming knowledge you need to build a game, but not necessarily the time if you are doing it all yourself. I cannot recommend using Gamesalad going forward. There is currently no way to integrate 3rd party libraries for monetization and the whole development environment can be awkward at times. It appears GameMaker may have some ability to include 3rd party libraries but I cannot seem to find a ton of info on that. Stencyl can export Objective-C or ActionScript code, so including 3rd party libraries should be possible. In my opinion Stencyl is the only one that deserves a second look, which I may do at some point in the future.
Another similar platform here is Shiva3d. Again a 3d environment, so a bit unfamiliar to me. However it uses C++ and Lua which is something more familiar to me. Also, it is much easier to do your own integration of 3rd party libraries, far from trivial, but easier. I am somewhat more impressed with this one. Both Shiva and Unity deserve another look down the road when I’m ready to do something that requires 3d. Unreal engine is another 3d platform that seems promising, I have not looked at it enough to make any comments.
Other Game Engines
Cocos2d-x is probably the most time consuming choice but the most flexible at the same time. Programming Cocos2d-x is as close to native programming for both Android and iOS that you can get while still being cross platform. You can without too much extra effort access all native functions of each phone with few problems. Integrating 3rd party libraries is again not trivial but fairly easy.
CoronaSDK is a fairly easy language to learn, it’s based on a language called Lua. It seems very flexible you can get access to native device functions and include 3rd party libraries if you use the enterprise version. It is very easy (for a programmer) to create simple cross platform games. There seems to be a good amount of support out there in the community. Once you get beyond some of the programming quirks it’s pretty nice.
Adobe Air can be used to deploy Actionscript code to mobile. It’s got a little of it’s own set of quirky issues, but getting beyond that it’s great. There is the capability of writing your own extensions for native device support and 3rd party libraries. It’s an old platform to some extent with much support in the community, but at the same time it’s still an evolving platform (Corona has this issue to a lesser degree) with some more recent info hard to find. Air to mobile is fairly new so don’t expect to get up and running quickly!
The biggest missing player here is Cocos2d, at the beginning of this article I mentioned cross platform devices, specifically iOS and Android. Cocos2d is only for native iOS apps. I have deployed a single app with Cocos2d and have several others in varying degrees of completion. It uses Objective C and really is one of the best options for games if you only care about iOS. Personally I think this is short sighted and a mistake long term. But that choice is up to you depending on your goals. There certainly are many good reasons to choose Cocos2d.
As of right now I’m working with CoronaSDK and Adobe Air. Both provide support for Android and iOS. Both are higher level programming than native code, allowing for more rapid development. Both allow for including 3rd party libraries (albeit not easy). I don’t expect to be changing development environments in the near future.
Hope that helps someone. Just getting my thoughts down here for my own good and yours! If you have any suggestions, questions, flames or anything at all to say feel free to post a comment!