Picking A Platform For Your Mobile Games

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.

Game Builders

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.

3d Engines

Unity3d seems to be a popular choice these days, especially for 3d games (you can do 2d as well).  I have played with it somewhat but it’s a little hard for me to wrap my head around.  First off 3d environments confuse me, I’m and old school 2d guy.  I’m sure if I sat down with a few tutorials I could get a better understanding.  But the main issue for me is that it requires me to learn programming languages that I don’t already know, C# or Javascript. Neither of which are native to any current mobile devices and require 3rd party extensions to run 3rd party libraries.  This is not a bad thing necessarily as many of these extensions are supported.  For me Unity3d just seems to cumbersome for what I want to do and the environment is just to unfamiliar to me.

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!

Monkey is a development option that I have discovered a short time ago.  I have not tested it myself but it looks very promising. It exports to many platforms and you can translate Monkey code to a variety of other languages including C++, C#, Java, Javascript and Actionscript.  This flexibility is great for including 3rd party libraries.  This is one to keep and eye on in the future.  If I had know about this 6 months ago It may have been the best way for me to go.

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!


Picking A Platform For Your Mobile Games — 2 Comments

    • Whoops! Your comment got stuck in the spam filter and of course you are correct Jeff! Several reasons I left them out either on purpose or by accident, Appcelerator in particular is not really meant for games. Some are not cross-platform (sparrow, andengine), I had dismissed Moai and Marmalade a while back partially because I didn’t want to learn them and the community support was low/commercial use fees were high. Stella is interesting, I had heard of it a while back but need to circle back to that one again. Ogre3d is 3d which I don’t need, it may be interesting but I think Unity or Shiva has more promise or usefulness for my needs when I get to 3d.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>