GAME JOBS
Latest Jobs
spacer View All     Post a Job     RSS spacer
 
June 19, 2013
 
Trendy Entertainment
Community Manager
 
Trendy Entertainment
UI Artist
 
Subatomic Studios
Art Director
 
Airtight Games
Senior Software Engineeer
 
Edge of Reality
LEVEL ARTIST
 
Sojo Studios
Generalist Game Engineer
spacer
Blogs

  Unity 3: A Review
by Alistair Doulin on 12/15/10 11:52:00 pm   Expert Blogs   Featured Blogs
16 comments Share on Twitter Share on Facebook RSS
 
 
The following blog was, unless otherwise noted, independently written by a member of Gamasutra's game development community. The thoughts and opinions expressed here are not necessarily those of Gamasutra or its parent company.

Want to write your own blog post on Gamasutra? It's easy! Click here to get started. Your post could be featured on Gamasutra's home page, right alongside our award-winning articles and news stories.
 

[This is a repost from my blog, doolwind.com]

We’ve just finished our first iPhone/iPad game with Unity 3, Flick Buddies.  This post is a review of our experiences with Unity including its pros and cons.  The review is slightly slanted toward iOS development however I touch on stand-alone and web-player builds as we created these versions in parallel.

Introduction

Unity (often referred to as Unity3D) is an authoring tool for creating 3D games for a large range of platforms (ranging from iOS to PC and recently Xbox360 and Wii).  It has been out for a number of years although it’s popularity has sky-rocketed in the last couple of years with the release of a PC version of the editor to compliment its original Mac version as well as moving to a free model for independent developers.

Since going free, Unity seems to have been surrounded by an ever increasing amount of good news.  It’s constantly adding new platforms to its list, is being used by an increasing number of developers and provides consistently useful updates that solve many of people’s concerns.  The only negative press it’s received of late was when Apple looked like they were going to ban 3rd party engines like Unity from running on their iOS devices.  This never eventuated and Apple has since relaxed their restrictions.

Unity comes in a number of different price points:

  • Unity (basic) – Free
  • Unity Pro - $1500
  • iOS - $400
  • iOS Pro (requires Unity Pro) - $1500
  • Android Pro (requires Unity Pro) - $1500

Pros

Unity has been an absolute pleasure to work with.  I’ve worked with a number of engines in the past both proprietary and off the shelf (such as Torque and Unreal) and I’ve found Unity to be the most enjoyable to work with.

Platform Support

The biggest drawcard for many developers is the huge list of platforms Unity supports.  At the time of writing, this list included:

  • Web and stand-alone – with support for PC and Mac
  • iOS – iPhone, iPad and iPod Touch
  • Android
  • Nintendo Wii
  • Xbox 360 & PS3

While each platform has different pricing points, the fact that a game can easily be ported between these various platforms is a massive advantage for Unity.  For a small indie company like ourselves, without the resources to port games to different platforms, we find it invaluable that we can simply change the destination platform and create a build.

Unified Editor

A strong list of platforms is great, however what makes this ideal is the unified editor.  Unity’s unified editor means that you work within a single editor interface and share all your code and assets between projects.  Unlike the previous version of Unity (pre 3.0) where a different editor was required for the iOS build, everything happens within the single, unified editor.

Small amounts of conditional code can be written for different platforms, however of the ~4000 lines of code we wrote about 5 of them were conditionally compiled out.  I also wrote a small class that handled finger and mouse input through a single code path freeing up the design to treat both PC/Mac and iOS platforms in a similar way.

Unity also supports per-platform settings for all your assets, for example setting a maximum texture size for iPhone to keep you under the 20MB wifi budget.

Great Visual

Unity has great support for advanced effects.  It has a large list of built in shaders and materials as well as full custom shader support.  We primarily used the built in shaders, however in a few special circumstances I dropped into writing a few simple shaders for some custom effects.

The great visuals also scale down well on iOS devices.  While the game looks much nicer on PC with full anti-aliasing and higher quality lighting, for the screen size the game still looks amazing on iOS, particularly the iPhone 4’s retina display.  There is a strong limit on the shader capability on the iOS devices however due to their lack of processing power.  This is not a major concern for us, but means you have to employ some old-school tactics to get the best looking visuals without resorting to costly shaders.

An example of this is the outline we used on our characters in Flick Buddies.  We originally wanted a black and then white border to stylize the characters in a similar way to their 2D representations.  Instead of writing a shader I had to do the old trick of exporting the model a second time with its vertices pushed out along their normals and then inverted to get the same effect.

Excellent Editor

I’ve spoken about the fact the editor is unified, however I also wanted to touch on the editor itself.  With its intuitive interface it’s easy to get up and running quickly.  I gave a guest lecture at a local university and the entire class of 30 students were up and running within a couple of hours, navigating their way around the interface making changes and customizing the small game we created.

The only negative point I found with the editor was the lack of multi-select support.  You can make simple changes to position, size and orientation with multiple objects selected, otherwise though you have to make changes individually.  A couple of times during the project this was a real pain, however it was workable.

Maturity

With every passing month the tools and community seem to becoming more mature.  answers.unity.com is an awesome resource.  Nearly every issue I ran into had a solution which made life easy.  They are also quick to respond with new issues that arise.  Unity also has a solid list of example projects which are great for getting a head start on a game.  It’s also a great way to see best practices for usage within the editor.

With the recent release of the Asset Store, Unity has a good opportunity to create a thriving community that share assets of all types.  As this was released towards the end of our project we didn’t make use of the Asset Store, however we’ll be keeping an eye on it for assistance in future games.  While it currently has a limited selection we’re hoping it takes off in the near future.

Rapid Application Development

I love my RAD.  One if the biggest drawcards for me personally was the quick turnaround in producing our game.  Despite learning Unity as I created Flick Buddies, I still managed the following:

  • Playable prototype up in a few hours
  • First playable level within 10 hours
  • Prototyped all 12 levels within 40 hours

I’m a huge fan of C# as a language to rapidly develop games.  Combining the ease of use of the editor with the robust nature of C# programming I found I could fly through all the features in the game with few bugs and only crashes in the last 24 hours of development (right when you don’t want them).

Cons

Unity is without its faults.  Whenever I explain Unity to someone, I usually list these three issues as it’s a lot quicker than explaining all the great things I love about it.

No Great 2D Support

Out of the box, Unity doesn’t have a sprite library for rendering 2D sprites.  It’s the number 1 request from developers and it will hopefully be coming soon: http://feedback.unity3d.com/forums/15793-unity-iphone/suggestions/163934-graphics-native-fast-sprite-manager

Until this is released there are three workarounds:

  • Use an orthographic  camera and manage your own 2D animation
  • Use Sprite Manager or purchase Sprite Manager 2
  • Use the built in GUI Texture – not recommended as it’s slow and hard to use

Bad GUI

The built in GUI in Unity is terrible.  It’s fine for rapid throwaway prototyping to get something on the screen, but otherwise I highly recommend steering clear of it.  It performs badly and has a major bug in it which averages the position of multiple fingers and produces a “press” in the middle (where there is no finger).

The simplest workaround for this is to roll your own GUI.  Flick Buddies was very light on with GUI so this wasn’t an issue, however for more GUI intensive games this may cause some problems.

Multi-Developer Support

This was the biggest issue we had with Unity.  As with the other issues there is a work around, however this one requires a fairly large investment for a small indie company (~$2000 per developer)

The Unity editor has a strange way of dealing with files, using a combination of a database and the asset files themselves.  This means that it’s not possible to use a regular source control system (like SVN which we use on other projects) for the bulk of the files.  The pro version of Unity does support a special feature which allows the use of SVN however it doesn’t just work out of the box, and I have heard of a few people having issues with this.

The ultimate (and most costly) solution is the Unity Asset Server.  For this you will need a Unity Pro license as well as the Asset Server client license.

We managed to work around Unity’s shortcomings as I was the only develper working on the game itself with our single level designer working on the “scene” files in isolation.  He would get a copy of the entire source tree, make changes to the scene (and occasionally animation files) and then copy the few files he changed back up in to the source tree.  We used Dropbox for this and other than a few minor issues it worked quite well.

I have still not solved this problem and I’m not happy with our current setup.  I will be investigating this further in the future and we may simply go down the Unity Asset Server route.

Conclusion

Overall I found Unity 3 a pleasure to work with and we plan to use it for all our games in the future.  Its tiered pricing model works well for indie’s of all sizes.

Have you used Unity?  Do you have thoughts on the pros and cons I’ve listed or have other items that should be in the list?

 
 
Comments

Michael Carr-Robb-John
profile image
Seconded, I have nothing but good things to say about unity. I use it all the time to prototype new ideas and explore various game mechanics.

Alistair Doulin
profile image
What do you use beyond prototyping?

Ahmad Jadallah
profile image
Good review, we are currently in the middle of developing a modern day multiplatform third person action adventure game inspired by Uncharted and Tomb Raider using Unity 3. The team is scattered all over the globe and I agree with you on the difficulty of having multiple people work on the same project. What we are doing currently is that the artists are working on creating the content seperately from the programmers who are prototyping gameplay and then we do a weekly merge making sure that everything is kept in sync. The problem is that art tend to increase the project size significantly which makes the transfer more difficult (we are using Dropbox as well by the way).

Tim Carter
profile image
One con is that you still need to code a lot of mundane things. Setting up a first person shooter, for example, requires you to code. A shooter? That's a standard game camera. You'd think there would be a simple tool to adopt said camera. (Unless this has been changed in the latest version.)



What I want to see is more visual scripting for native functionality. You shouldn't have to code in basic shooter funcationality - it should just be a setting, a drag-and-drop doodad into a visual scripting system.



I complained that UDK, for example, had this cool Kismet visual scripting interface, but it only worked inside individual game levels.

Mark Venturelli
profile image
I completely agree with both your pros and cons. The GUI and Asset Server in Unity are really bad right now, but apart from that it's a fantastic engine for it's price range.

Tucker Abbott
profile image
I just finished my first game in Unity and am in the process of making a 2D casual puzzler at the moment. The 2D support, like you said, isn't superb (I resorted to just using planes with an alpha channel and writing a script to make them always perpendicular to the camera), but it's amazing how much online support there is for everything. Not only the full API available online, but there is a huge following with everyone from rookie to professional designers on there that are always more than willing to help if you have a well-written question.



I'm very satisfied with Unity Pro, and the amount of features you get is pretty good (pre-made refractive water is nice, shadows are Pro only, Image Effects, etc.) Great engine for the money, I agree.

Luis Guimaraes
profile image
I'm finishing an iPhone targeted game in which we choose for a 2D visual. Instead I used an Ortographic camera.



Ok, I still have 25 levels to make...

Megan Fox
profile image
I'm in definite agreement about the asset management and lack of proper source control integration - as it stands, I really wouldn't consider Unity for a multi-developer project. You'll have enough of a headache just passing your build between yourself and a designer/artist. I've also had a heck of a time getting it to properly handle a 2D game with generated geometry (ie. not using Maya to make our quads, since, come on, they're just quads), and would not recommend it unless you were making a 3D game, or a 2D game that still exists well and truly in 3D if only in a slice of it. To Unity, generated geometry doesn't exist in the world until you hit the play button, so having an extremely WYSIWYG editor + that + any changes you make "runtime" are reset when you hit stop... doesn't exactly work well.



Still, what I've made with it would have taken much, much longer in any other engine, and it's EXCELLENT for rapid prototyping, so I still have to give it praise - if, perhaps, grudgingly.

Marc-Olivier Beaupre
profile image
If you don't use Unity for a multi-developer project, what would you recommend and why?

Megan Fox
profile image
Essentially any of the more mature production-ready engines would be a fine choice. I'd probably go UDK/UE3, if your project is beyond the scope of what Unitiy is best for (ie. if your team size is more than a couple large, if you're aiming at consoles, if you're aiming for downloadable AAA visuals, etc).



Unity's still your best choice if you want extremely wide potential platform support, though, and it's certainly a fine choice for casual and smaller indie titles. It just comes down to what you need from an engine.

Alistair Doulin
profile image
Have you seen the sprite manager 2? A few friends have used it and have had great success. I'm yet to experiment with it as our current games are all 3D with an orthographic camera.

Mark Venturelli
profile image
We use Unity with a team of 7 (2 coders). While we had to customize a better source control integration, I asure that it is possible to use Unity for high-quality downloadable console titles. The engine is growing and getting better fast.

Caylo Gypsyblood
profile image
Unity is still a toy, but it is growing up real quick.

Jeremy Glazman
profile image
Unity Asset Server is not always reliable and is definitely not worth the hefty price tag. Unfortunately it is pretty much the only source control solution, as Unity uses an unfriendly proprietary format for their projects. Considering how much Unity charges for the Asset Server I would expect them to give it as much attention as they do the editor itself, but I don't think this is the case.

Jed Hubic
profile image
The whole 2D support is why I've always ended not going with Unity , but I still find it easy to get caught up in messing around in, enough so that I'm kind of itching to get a 3d project going in it, due to ease of use and "funness"(?) when working with it.



It kind of irks me that the Android Pro license is $1500 compared to the $400 iOS version as well.

Alistair Doulin
profile image
They are releasing a basic Android version in the future.



I highly recommend "Sprite Manager 2" for 2D usage. It's disappointing that the native support for 2D is so weak, but this is a great alternative for the time being.


none
 
Comment:
 




 
UBM Tech