I recently had a desire to develop some traditional 2D games. Mind you, not 2.5D games where 3D characters only move in 2 dimensions, but true 2D games with 2D sprites for graphics.
The problem I faced was that my game development tool of choice was Unity 3D. Note the “3D” on the end of the name there. Unity was designed from the ground up as a 3D game engine. Sure, there are other engines and frameworks out there specifically designed to handle 2D assets, but I really like Unity. So much so, that I’d rather try to shoehorn a 2D workflow into Unity than use a different engine. Luckily, lots of other devs agree with me because there are many packages available that are designed to make this as simple as possible.
So, I started doing a lot of research into the various 2D solution packages – as much as I could without actually paying for anything. Some had free demo versions or tutorial videos, others just had a bullet point list of features. So, I admit the amount and accuracy of info I was able to gather is inconsistent across packages. Some were optimized for raster(bitmap) graphics, others for vector graphics. Some were optimized for sprite-based animations (where you animated by swapping sprites), some for bone-based animations (where you animate by rotating and scaling sprites). Eventually, I gathered so much info that I felt it was worth compiling and sharing. Click through to see an overview and comparison of many of the available 2D solutions for Unity and my thoughts on them, in no particular order:
- Sprite Manager 2 – This one is kinda the grandaddy of 2D solutions for Unity. I believe it was one of the first ones that was released when Unity opened up their Asset Store. It still carries the same hefty price tag even though it’s no longer justified due to so much competition in the 2D solution arena. I wouldn’t recommend this one at all. Other packages do 2D faster, cheaper, and with more features. Price: $150
- RagePixel – This is a bare-bones 2D framework for basic sprite animation with the unique feature of being able to actually draw your sprites in the Unity editor. It’s also one of the few 2D packages that is totally free. That makes it a decent option if you participate in game jams like Ludum Dare where they restrict you to freely available software libraries. Unfortunately, RagePixel lacks many features that other 2D packages have. If you’re restricted to free packages, Orthello Free (see below) will serve you much better. Really, the only reason to use RagePixel is if you don’t have a tool to create pixel art and want to draw your sprites in the editor. But, even then, I would recommend using a free external tool for creating sprites. GraphicsGale is great and my personal pixel art tool of choice. Price: FREE
- Orthello Free – The free edition of Orthello is a really fantastic deal that you can’t beat for the price. If you’re limited to free options, Orthello Free is absolutely the way to go. It has tools for handling sprite-based animations, collisions, physics, sliced 3×3 sprites, text rendering, and even tweening. The biggest thing missing from the Free edition is sprite sheet generation, but you can just draw temporary grids in your pixel art software or you can use an external tool like TexturePacker. Price: FREE
- Orthello Pro – Orthello Pro does everything Orthello Free does plus a few extra features like parallax scrolling, sprite batching, tilemaps, and sprite sheet generation. But, as much as I love Orthello Free, I can’t really recommend buying Orthello Pro. Once you’re paying for a package, I think other packages just do things better. At the end of the day, I’m not really a fan of the way Orthello handles assets. All assets are actually stored in the scene rather than in the project, so it makes it a little difficult and awkward to manage a multi-scene project. There are also a few add-ons for Orthello, but they are primarily related to creating GUI elements, which is another topic entirely. Price: $35
- RageSpline – RageSpline is a one-trick pony, but it does its trick very well. It’s trick is vector-based, rather than raster-based graphics. Every other package in this overview is raster-based. Vector graphics guarantee that you have pixel-perfect art at any resolution and at any zoom level. No jaggies for you! There’s also the RageTools add-on that enables SVG import and a few other features. Price: $50
- EasyMotion2D – EasyMotion2D is the first of the bone-based animation systems that we’re going to look at. It’s tough to recommend though. It hasn’t been updated in over a year and has some really tough competition from the other bone-based systems. Most bone-based systems are actually hybrids that allow you to also do sprite swapping as part of the animation. Not so here. One notable limitation with EasyMotion2D is that it is strictly bone-based. You cannot do any sprite swapping with their animations. You also can’t turn colliders on and off. Not only that, but their official demo doesn’t seem to work and their support forum also appears to be down. Don’t buy this one. Price: $55
- Umotion 2D – Unlike most of our other solutions here, Umotion 2D is an external tool rather than a Unity asset package that actually works inside the Unity editor. The Umotion 2D animation tool exports bone-based animations in its own proprietary format. It also provides a Unity runtime that can then read and use these animations. These aren’t Unity standard animations, so you won’t be able to use the animation.Play(), PlayQueued(), Blend(), etc. calls that you may be used to. It’s also worth noting that Umotion 2D has no support forum, only a single thread on the Unity forums, and even that hasn’t been updated in over a year. It kinda feels like an abandoned project. Price: $49
- ex2D – ex2D has a feature set that looks very comparable to Orthello. It’s a sprite-based animation system. It only supports box colliders, so it would not be the best choice for a 2D physics based game (unless all your sprites are boxes). It’s got a good price point and may even be a bit better than Orthello Free, but I can’t recommend it over Orthello Free, because, well, it’s free! However, they do have v2.0 of their system in beta right now, and you can try it for free, so keep a look out for it in the future. Price: $35
- Simple Sprite Pro – This one’s a cheap sprite-based animation system, but you get what you pay for. There’s not really a lot there feature-wise. Can’t recommend this when Orthello Free is out there and even cheaper! Price: $5
- 2D Toolkit – 2D Toolkit is the best-selling 2D package on the Unity asset store with good reason. It’s a highly-polished sprite-based animation with a great workflow that features oodles of convenience features and optimizations for getting the most out of limited memory situations. It also features tilemapping, GUI elements, and the developer is very active in the support forums. This is the first solution we’ve looked at that allows for custom collider shapes. So, if you have that odd amoeba-shaped sprite, it can collide like an odd amoeba-shaped sprite. You can have it auto-generate the polygon collider or even draw your own custom collider shape. This is a top-notch package that is well-worth looking at. It’s my personal go-to package for sprite-based animation. It’s also on sale fairly frequently if you can wait to catch it at a cheaper price. Price: $65
- SmoothMoves – What 2D Toolkit is to sprite-based animation, SmoothMoves is to bone-based animation. SmoothMoves has a great set of tools for generating animations based on moving and scaling various sprite parts that combine to make some larger animated entity. Each bone corresponds to a single quad mesh displaying a single sprite. SmoothMoves also generates Unity standard animations, so you can use all the familiar animation calls that you know and love. It includes tools for easing in and out, dynamic depth, normal generation for dynamic lighting, changing textures and/or colliders in an animation, and firing scripted events in an animation. Meshes are only rebuilt when necessary (some solutions rebuild the mesh every frame). This is the gold standard that other bone-based systems are judged by. Check it out! Price: $75
- Spine – Spine is a relative newcomer to the animation game. They recently held a successful Kickstarter for their product. Spine is an external tool for generating bone-based animations for use in a variety of game engines. After you export the Spine animation you use one of their numerous runtimes to play their animations in your engine of choice. They have runtimes for Unity, cocos2d, MonoGame, Torque, LOVE, Corona, ActionScript, GameMaker, Haxe, and lots more! If you’re not 100% devoted to Unity, this is one to look at. The feature set is very similar to SmoothMoves with a few exceptions. Obviously, it’s not integrated into the Unity editor. It doesn’t generate Unity standard animations. There are no colliders or event callbacks (since that tends to be engine-specific). Animation data is stored in an open format (JSON). Spine runtime source code is open source and extensible. It doesn’t use Skinned Mesh Renderers like SmoothMoves. That means that if there are 100 clones of the same character on screen simultaneously, Spine takes one draw call where SmoothMoves needs 100 draw calls. Spine also supports IK and bind poses that all anims are relative to. For me, this one was a toss-up w/ SmoothMoves. Both are great at what they do. The main reason I ended up choosing SmoothMoves is that the animator I was working with already had SmoothMoves experience. Price: $60
- Monster Animation – This is a very new entry to the 2D arena. I admit I haven’t had a chance to try this one out yet, but based on the tutorial it seems like a fairly basic sprite-based animation system. For the price it doesn’t seem to offer anything more than Orthello Free, and surely doesn’t offer more functionality than 2D Toolkit (which is only $15 more), so again, I can’t recommend it… even if it does have the coolest logo of the bunch. Price: $50
- SpriteWorkshop – Another new package here. This one seems to handle bone-based animation though they use the terminology “forward kinematics” instead. I think it’s the same thing unless I’m missing something. This is another one that I haven’t had time to try yet. Interface looks fairly intuitive with a nice timeline. Seems to be a strictly graphical package. No 2D physics or collider generation. Price: $45
- Uni2D – Uni2D is another fairly new kid on the block, but they look like they came to play with the big boys. This is a complete package for handling rendering, physics, automatic collider generation, and animation. They have some pretty fantastic looking stuff in their gallery. Uni2D supports sprite-based animation and a unique kind of bone-based animation that none of these other packages have. They call it their Squeletal Animator. It’s basically a mesh deformation tool that allows you to animate 2D “bones” without having to cut everything up into tiny little parts. So, imagine you have a giant worm with 10 body segments you wanted to animate. SmoothMoves would require you to build 10 sprites to make up the bones of the worm. Uni2D allows you to draw the worm as a single sprite, and then draw a bone structure over top of that single sprite. You can then animate those bones and it magically deforms the sprite. Pretty cool little feature that definitely makes this one stand out. Their price point makes them stand out too. Price: $90
Summary: There are a LOT of options for 2D work in Unity, but I think a few of these solutions clearly rise to the top of the barrel. It really just depends on what kind of 2D game you’re making:
- If you’re going for vector graphics – RageSpline
- If you’re going for sprite-based animations – 2D Toolkit
- If you’re going for sprite-based animations and you have no budget – Orthello Free
- If you’re going for bone-based animations – TIE: SmoothMoves and Spine
- If you want to try a fancy, new style of bone-based animation – Uni2D
Some of these other newer packages look like they might be OK, but none of them (with the exception of Uni2D) has anything unique enough about them that makes me want to give them a shot over the tried and true packages mentioned above. There’s something to be said for solutions that have already been used to ship tons of games.
Footnote: Since I began writing this article, Unity made the surprising announcement that they would be implementing their own set of native 2D tools in the next version of Unity (v4.3). Depending on how good these tools are, all of this discussion may be moot before too long. Their demo video did look pretty nice, but it’s difficult to tell what features will be in this update. Until then, the above packages are still your best bet for easily developing a 2D game.
Well, I hope all this is helpful to someone. If you are aware of any factual errors in this article, please let me know and I’ll be happy to change it.