Is Unity a good choice for making 2D games for mobile?

Hi,

I’ve been learning Unity for couple of weeks and have it’s Basic license for iOS and Android. I’m getting good with it but I still feel it has a lot of overhead for simple games that I’m about to make, and basic license forces a “made with Unity” splash screen. Also the builds are apparently large. That being said, I love it so much but I’m afraid that at some point I may be forced to buy Pro and Pro licenses, hidden costs.

Also I feel, by experience in similar situations, doing simple things in a 2D engine is harder in Unity because it’s made with being a 3D engine in mind.

So I’m thinking about alternatives here.

I wanted to switch to Corona but I’ve read some things that pissed me off, like security that you can’t be sure that whether if they get your source code or not and you have to pay for licenses.

So I was about to search for others that I just came back to Cocos2D. Bad things are Objective-C and [apparently] only iOS builds. I’m a software engineer and have no problem with C/C++/C# but I’ve read some Objective-C and it’s kinda scary to me. Plus, most free stuff are not backed as good as propriety solutions. that’s expected though.

So what I’m currently aim for is simple arcade games, like popping balloons and such and rapid prototyping is very important to me. I also don’t want to spend months learning the new tech.

So is Cocos2D for me or you would suggest other solutions?

What I want is:

  • Cheap as possible
  • Have good features for 2D, like easy collision detection
  • Good export for Android
  • Doesn’t need me to learn a new language, epecially Objective-C

Unity is excellent, but may not be the best choice if you are only ever going to do simple 2D games. Monkey might be a good option for you.

I was going to suggest Monkey too. For 2D, BlitzMax is good for desktop apps, but to go mobile consider its successor Monkey which has similar easy syntax and can do 2D quite well.

That said Unity is a much bigger company with far more resources and capabilities and using Unity for 2D games is … doable, though not straightforward. In fact, just by itself, 2D in Unity is kind of painful. It can take like up to like 50 lines of code just to generate and texture a quad of geometry to get a sprite to draw. There is also some considerable performance penalty to using a separate image for each sprite due to the overhead of what they call draw calls, which just means a bunch of state changes in the graphics API, but Unity does also have dynamic batching which greatly speeds things up so long as objects share the same texture. Thing is if you want to do that properly then you need to set your own texture coordinates on a per-vertex basis which means you probably want a sprite atlas and some way to generate geometry in code, and there just isn’t a quick way to do that in Unity by itself. That’s the basis for one of several pretty good 2D tools on the Unity asset store, like 2d toolkit, ex2d, etc. They attempt to overcome some shortcomings such as the lack of sprite batching and the general pain of trying to simply put an animated sprite on the screen. Unity’s approach by itself only offers a plane (far too many triangles) or a cube (still wasted triangles) on which to texture something, and no easy way to flip animation frames. So it doesn’t lend itself to 2D very well out of the box. Yet with those asset store tools it becomes a lot more doable, but, in my opinion, still a considerably clunky workflow. That’s why I’m making my own set of tools, and some other people make their own tools too which they may or may not release to the public.

So I’d say go with Unity, Unity script/javascript is fairly easy to code in, and grab yourself a 2d tool from the asset store. Even the free orthello is sort of helpful for basic 2d.

What you’ll find though is that Unity wasn’t really designed for 2d games. 2d is almost a whole different genre of development processes and specialties. Different approach to artwork, level design, animation, resources, things like tilemaps and sprites and parallax layers and all that, will take some extra effort.

Thanks guys.

I’ve researched a lot during past few weeks and still can’t decide. Each solution is perfectly balanced so I can’t decide before actually putting a considerable amount of time into any of them.

I really like Unity because of the support and userbase but the fact that it’s not made for 2D is not a thing you would want to forget. I’ve worked in both 2D and 3D games/engines before and can estimate the amount of pain is awaiting for me.

Cocos2D seems better than the others for the very first fact that it’s very widespread and I think the mostly used engine for iOS but I don’t want to learn a language just in order to program on iOS and it’s codes are very like original C, lots of pointers and verbose language that I prefer to escape. Good thing is it’s free but with being free it comes the fact that you will have to work more on tools.

Another fact is that I may not be able to purchase any of 2D toolkits for Unity as I can’t do any more expenses as of now for a few months.

I really want to focus on making games, not technicality that will change very soon. I want a solution (game engine/framework) that lets me quickly prototype ideas and then put a month or two to polish it and then release, I don’t want to sit down and code everything, I think Cocos2D is aimed that way.

Supposedly Unity is now used by 55% of developers on iOS.

Also you can try something like Orthello from the asset store, the free version does let you draw and animate sprites and deal with sprite sheets.

GameMaker is trying to position itself as like Unity 2D … and your situation also emphasises the issue here - Unity needs to stop and pay attention to how badly they’ve dealt with 2D games and how much market is being missed here. There needs to be considerable tool development to get Unity to really provide a good 2D workflow that’s accessible to the kind of people that make 2D games. I don’t know that they’re going to ever do that. But then that’s where third parties come in, and that’s an opportunity I’m taking.

There are certainly other 2D-focussed platforms like Cocos2D and GameMaker and Collada and all those… they have their place, but also their issues. If you are willing to put in a bit extra effort I think I’d pick Unity still for all of its other fringe benefits - super-solid platform, multiplatform support, big passionate team behind it, lots of community to help, etc.

Thanks man. If I use a toolkit such as Orthello, does it let me to have physic engine that is built in into Unity or other features as well and just handles the final output to be a single image (to reduce draw calls) ? In other words, will I be able to use all Unity’s functionality if I go with any of them? Physic is very important for me.

Also what about moving single objects? Can I use regular Unity codes in their scripts such as Update and Start or I will have to work inside that toolkit?

Thanks, I think I’ll go with your advice, even though I can’t pay for any of those toolkits.

I dont know exactly what Orthello free version is capable of and whether it has physics built in. I know 2d toolkit does but it’s like $70. You can probably add colliders to objects yourself but it’d take extra work if you have to work with sprite sheets.

Thanks man.

If I were to make a 2d game, I would think seriously about using MOAI

What is your experience with it?

The question you need to ask yourself is… is 2D games all you ever want to make?

If you use Unity, and become familiar with it, it’s an engine that is very powerful, and if you want, you can make a smooth transition to larger projects or 3D games if you want. If you go with one of the other specific 2D engines you limit yourself (and you end up paying more in the long run, both in money and time to learn different engines).

There are asset store tools that can help with 2D game development. Besides, Unity has all the cool game effects such as particles and physics which you can use in your game, and there is a great community here and lots of 3rd party add-ons. Rather invest in that and think about your future, instead of what is the best for you now. I’ve worked on 3 published Android/iOS titles that were 2D and had no problems…

No experience. but it seems quite interesting with various integrated solutions such as cloud services, leaderboard system and game center integration for example. it sure would be a solution I would consider.

There is iTorque 2D, the down side to it for you is there is no android version. The up side to that is it comes with the source code so you can port it.

Well The Other Brothers has localised shaped heat distortion effects, vignetting, several layers of parallax, and loads of other graphical wizardry that isn’t actually possible on competing platforms like monkey without doing some rewrites of monkey’s output. Unity offers everything you could possibly need for a 2D game and then some.

But this is only when paired with a suitable asset store resource like ‘ex2D’.

I actually went with unity for 2D will do so again. It’s not without some issues working in unity, but the benefits far outweighed any issues for us.

This. I have tried some other engines before switching to Unity3D and stayed with it for various reasons. From my personal experience, I would rather get an external asset like Unikron’s 2D Toolkit if you are planning to do more than 2D in the future.

yes pure for sure u can

im dedicated exclusively right now to 2d with unity and i must say its awesome to work with it, another libraries may be more suitable for 2d but unity makes anything so easy specially the physics part in which in other libraries or engines you have to deal with poor performance or poor documented libraries which are much more complex than just handling stuff the unity way and the resolution independence love hahahaha, if you have done 2d in the past, you should know handling multiple resolutions in desktop is hell, unity makes that pretty much painless

Some good advices for 2D projects:

Hello test84, there are great 2D sub engines for Unity. Some are free but not so good or hard to learn, some may have a price too high for your Cheap as possible appoach.

Hope this helps: we’ll soon launch JARA 2D Animation, a 2D tool for Unity at a very accessible price and with great features.

Best regards!