I've been making games for iOS for about a year and my current client wants their game on iOS and Android. I have never made anything for Android.<p>What are the most popular solutions for cross platform game development right now?<p>Are there any easy ways to port this game to Android without learning this whole other platform?
For 2D stuff, Haxe/OpenFL has been quietly gaining a fanbase, including some successful higher-profile releases. Comfortable environment for former Flash devs since it builds on the same API. Some other FOSS options I've often seen come up: LibGDX, Cocos2D. Haven't shopped around lately.<p>Unity is extremely common(bordering on the default option) for 3D. It has a small industry of Asset Store add-ons that fill in the gaps and can (sometimes) substitute for knowing how to code things. I recently decided to familiarize myself with it enough to take on freelance work, since there's a lot of activity there.<p>Unreal has been in a price war with Unity and since this past GDC it's now in a "free plus royalties" deal. You're given complete source code access, not just proprietary runtimes. It's behind Unity on buy-in and the subsidiary market, but the core tech is generally more interesting and it has a big legacy in AAA. You may like the Unity workflow more, depending.
SDL. It is solidly cross-platform (supports Haiku, which makes me smile, as well as Linux, Win, iOS, Android and so on and so on) and zLib licensed (pay nothing; use it, distribute it, static link, dynamic link, whatever you want - the zLib licence fits on a postcard).<p>Here's someone talking about it at a steam dev day:<p><a href="https://www.youtube.com/watch?v=MeMPCSqQ-34&list=PLckFgM6dUP2hc4iy-IdKFtqR9TeZWMPjm" rel="nofollow">https://www.youtube.com/watch?v=MeMPCSqQ-34&list=PLckFgM6dUP...</a>
Unity is very popular for creating 3D mobile games; easy exporting to all the major platforms and a visual editor. If you are a junior programmer, I'd recommend Unity even if you are doing 2D. More advanced developers might find themselves fighting against the design philosophy of components and game objects in Unity, kinda like Entity System, but not quite. The engine design makes debugging harder. Note that all Unity games run in a 3D scene even if it's purely 2D so the raw performance and battery drainage is worse than in pure 2D game engines.<p>Haxe+OpenFL, Haxe+OpenFL+Flixel and Haxe+OpenFL+HaxePunk combos are all good if you need to do lower level stuff like manipulating video buffer, which is rare but can give you pretty unique visual effects. Multiplatform support is working, but I wouldn't say it's great in these.<p>Cocos2d-x is good for physic based 2D games. Good performance and a great tool in the hands of more advanced programmers. Multiplatform support is better than in Haxe but worse than in Unity.<p>I'll also note that development environment setup is a lot more painful in Haxe and Cocos2d-x compared to Unity.<p>Source: my experience. Consume the information with a grain of salt.
According to Unity Technologies (the makers of Unity), who say they're quoting an unreleased McKinsey report, "Worldwide, Unity takes a plus 45% share of the full feature game engine market, approximately three times that of our closest competitor."<p>From: <a href="http://unity3d.com/public-relations" rel="nofollow">http://unity3d.com/public-relations</a><p>To get a sense of all the options for developing games that run on both iOS and Android, see:<p><a href="http://www.mobilechameleon.com/" rel="nofollow">http://www.mobilechameleon.com/</a>
I prefer cocos2d-x. I used it for my music game (<a href="http://www.adhyet.com" rel="nofollow">http://www.adhyet.com</a>).<p>Check out their Programming Guide (<a href="http://www.cocos2d-x.org/programmersguide/1/index.html" rel="nofollow">http://www.cocos2d-x.org/programmersguide/1/index.html</a>), that has a decent overview that will tell you why you should give it a go.
I wrote a fairly large and complex HTML5 platform game (a reimplementation of MegaMan, actually) using EaselJS: <a href="http://executive-man.com/" rel="nofollow">http://executive-man.com/</a> here it is on github if anyone is interested in taking a look at how it works: <a href="https://github.com/CamHenlin/ExecutiveMan/" rel="nofollow">https://github.com/CamHenlin/ExecutiveMan/</a>
For me, I prefer Cocos2d-x. Before I decided on it I tried Unity and UnReal and I felt like Cocos2d-x offered me a way to learn and as I grew in experience the engine grew with me. There are forums available that are also very active: <a href="http://discuss.cocos2d-x.org" rel="nofollow">http://discuss.cocos2d-x.org</a>
For 2D, I'd recommend the HTML5-based Phaser:
<a href="https://github.com/photonstorm/phaser" rel="nofollow">https://github.com/photonstorm/phaser</a><p>Wrap it with Cordova to support iOS, Android, and many other platforms, as well as a free web client.