{"id":527,"date":"2010-12-16T04:41:11","date_gmt":"2010-12-16T04:41:11","guid":{"rendered":"http:\/\/www.doolwind.com\/blog\/?p=527"},"modified":"2010-12-16T04:50:07","modified_gmt":"2010-12-16T04:50:07","slug":"unity-3-review","status":"publish","type":"post","link":"https:\/\/www.doolwind.com\/blog\/unity-3-review\/","title":{"rendered":"Unity 3 Review"},"content":{"rendered":"<p style=\"text-align: left;\"><a href=\"http:\/\/www.doolwind.com\/images\/blog\/unityLogo.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" title=\"Unity\" src=\"http:\/\/www.doolwind.com\/images\/blog\/unityLogo.jpg\" alt=\"\" width=\"229\" height=\"126\" \/><\/a>We\u2019ve just finished our first iPhone\/iPad game with Unity 3, <a href=\"http:\/\/www.flickbuddies.com\/\">Flick Buddies<\/a>.\u00a0 This post is a review of our experiences with Unity including its pros and cons.\u00a0 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.<\/p>\n<p><strong>Introduction<\/strong><\/p>\n<p><a href=\"http:\/\/unity3d.com\/\">Unity <\/a>(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).\u00a0 It has been out for a number of years although it\u2019s 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.<\/p>\n<p><a href=\"http:\/\/www.doolwind.com\/images\/blog\/editor1.jpg\"><\/a><a href=\"http:\/\/www.doolwind.com\/images\/blog\/editor1.jpg\"><\/a><a href=\"http:\/\/www.doolwind.com\/images\/blog\/editor1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" title=\"Flick Buddies Editor 1\" src=\"http:\/\/www.doolwind.com\/images\/blog\/editor1.jpg\" alt=\"\" width=\"360\" height=\"213\" \/><\/a>Since going free, Unity seems to have been surrounded by an ever increasing amount of good news.\u00a0 It\u2019s 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\u2019s concerns.\u00a0 The only negative press it\u2019s received of late was when Apple looked like they were going to ban 3<sup>rd<\/sup> party engines like Unity from running on their iOS devices.\u00a0 This never eventuated and Apple has since relaxed their restrictions.<\/p>\n<p>Unity comes in a number of different <a href=\"https:\/\/store.unity3d.com\/shop\/\">price points<\/a>:<\/p>\n<ul>\n<li>Unity (basic) \u2013 Free<\/li>\n<li>Unity Pro &#8211; $1500<\/li>\n<li>iOS &#8211; $400<\/li>\n<li>iOS Pro (requires Unity Pro) &#8211; $1500<\/li>\n<li>Android Pro (requires Unity Pro) &#8211; $1500<\/li>\n<\/ul>\n<p><strong>Pros<\/strong><\/p>\n<p>Unity has been an absolute pleasure to work with.\u00a0 I\u2019ve worked with a number of engines in the past both proprietary and off the shelf (such as Torque and Unreal) and I\u2019ve found Unity to be the most enjoyable to work with.<\/p>\n<p><span style=\"text-decoration: underline;\">Platform Support<\/span><\/p>\n<p>The biggest drawcard for many developers is the huge list of platforms Unity supports.\u00a0 At the time of writing, this list <a href=\"http:\/\/unity3d.com\/unity\/publishing\/\">included<\/a>:<\/p>\n<ul>\n<li>Web and stand-alone \u2013 with support for PC and Mac<\/li>\n<li>iOS \u2013 iPhone, iPad and iPod Touch<\/li>\n<li>Android<\/li>\n<li>Nintendo Wii<\/li>\n<li>Xbox 360 &amp; PS3<\/li>\n<\/ul>\n<p>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.\u00a0 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.<\/p>\n<p><span style=\"text-decoration: underline;\">Unified Editor<\/span><\/p>\n<p><a href=\"http:\/\/www.doolwind.com\/images\/blog\/editor2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" title=\"Flick Buddies Editor 2\" src=\"http:\/\/www.doolwind.com\/images\/blog\/editor2.jpg\" alt=\"\" width=\"288\" height=\"171\" \/><\/a>A strong list of platforms is great, however what makes this ideal is the unified editor.\u00a0 Unity\u2019s unified editor means that you work within a single editor interface and share all your code and assets between projects.\u00a0 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.<\/p>\n<p>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.\u00a0 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.<\/p>\n<p>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.<\/p>\n<p><span style=\"text-decoration: underline;\">Great Visual<\/span><\/p>\n<p>Unity has great support for advanced effects.\u00a0 It has a large list of <a href=\"http:\/\/unity3d.com\/support\/documentation\/Components\/Built-in%20Shader%20Guide.html\">built in shaders<\/a> and materials as well as full custom shader support.\u00a0 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.<\/p>\n<p>The great visuals also scale down well on iOS devices.\u00a0 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\u2019s retina display.\u00a0 There is a strong limit on the shader capability on the iOS devices however due to their lack of processing power.\u00a0 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.<\/p>\n<p>An example of this is the outline we used on our characters in Flick Buddies.\u00a0 We originally wanted a black and then white border to stylize the characters in a similar way to their 2D representations.\u00a0 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.<\/p>\n<p><span style=\"text-decoration: underline;\">Excellent Editor<\/span><\/p>\n<p><a href=\"http:\/\/www.doolwind.com\/images\/blog\/editor3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" title=\"Flick Buddies Editor 3\" src=\"http:\/\/www.doolwind.com\/images\/blog\/editor3.jpg\" alt=\"\" width=\"288\" height=\"170\" \/><\/a>I\u2019ve spoken about the fact the editor is unified, however I also wanted to touch on the editor itself.\u00a0 With its intuitive interface it\u2019s easy to get up and running quickly.\u00a0 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.<\/p>\n<p>The only negative point I found with the editor was the lack of multi-select support.\u00a0 You can make simple changes to position, size and orientation with multiple objects selected, otherwise though you have to make changes individually.\u00a0 A couple of times during the project this was a real pain, however it was workable.<\/p>\n<p><span style=\"text-decoration: underline;\">Maturity<\/span><\/p>\n<p>With every passing month the tools and community seem to becoming more mature.\u00a0 answers.unity.com is an awesome resource.\u00a0 Nearly every issue I ran into had a solution which made life easy.\u00a0 They are also quick to respond with new issues that arise.\u00a0 Unity also has a solid list of example projects which are great for getting a head start on a game.\u00a0 It\u2019s also a great way to see best practices for usage within the editor.<\/p>\n<p>With the recent release of the <a href=\"http:\/\/unity3d.com\/unity\/editor\/asset-store.html\">Asset Store<\/a>, Unity has a good opportunity to create a thriving community that share assets of all types.\u00a0 As this was released towards the end of our project we didn\u2019t make use of the Asset Store, however we\u2019ll be keeping an eye on it for assistance in future games.\u00a0 While it currently has a limited selection we\u2019re hoping it takes off in the near future.<\/p>\n<p><span style=\"text-decoration: underline;\">Rapid Application Development<\/span><\/p>\n<p>I love my RAD.\u00a0 One if the biggest drawcards for me personally was the quick turnaround in producing our game.\u00a0 Despite learning Unity as I created Flick Buddies, I still managed the following:<\/p>\n<ul>\n<li>Playable prototype up in a few hours<\/li>\n<li>First playable level within 10 hours<\/li>\n<li>Prototyped all 12 levels within 40 hours<\/li>\n<\/ul>\n<p>I\u2019m a huge fan of C# as a language to rapidly develop games.\u00a0 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\u2019t want them).<\/p>\n<p><strong>Cons<\/strong><\/p>\n<p>Unity is without its faults.\u00a0 Whenever I explain Unity to someone, I usually list these three issues as it\u2019s a lot quicker than explaining all the great things I love about it.<\/p>\n<p><span style=\"text-decoration: underline;\">No Great 2D Support<\/span><\/p>\n<p>Out of the box, Unity doesn\u2019t have a sprite library for rendering 2D sprites.\u00a0 It\u2019s the number 1 request from developers and it will hopefully be coming soon:<\/p>\n<p><a href=\"http:\/\/feedback.unity3d.com\/forums\/15793-unity-iphone\/suggestions\/163934-graphics-native-fast-sprite-manager\">http:\/\/feedback.unity3d.com\/forums\/15793-unity-iphone\/suggestions\/163934-graphics-native-fast-sprite-manager<\/a><\/p>\n<p>Until this is released there are three workarounds:<\/p>\n<ul>\n<li>Use an orthographic\u00a0 camera and manage your own 2D animation<\/li>\n<li>Use Sprite Manager or purchase Sprite Manager 2<\/li>\n<li>Use the built in GUI Texture \u2013 not recommended as it\u2019s slow and hard to use<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;\">Bad GUI<\/span><\/p>\n<p>The built in GUI in Unity is terrible.\u00a0 It\u2019s fine for rapid throwaway prototyping to get something on the screen, but otherwise I highly recommend steering clear of it.\u00a0 It performs badly and has a major bug in it which averages the position of multiple fingers and produces a \u201cpress\u201d in the middle (where there is no finger).<\/p>\n<p>The simplest workaround for this is to roll your own GUI.\u00a0 Flick Buddies was very light on with GUI so this wasn\u2019t an issue, however for more GUI intensive games this may cause some problems.<\/p>\n<p><span style=\"text-decoration: underline;\">Multi-Developer Support<\/span><\/p>\n<p>This was the biggest issue we had with Unity.\u00a0 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)<\/p>\n<p>The Unity editor has a strange way of dealing with files, using a combination of a database and the asset files themselves.\u00a0 This means that it\u2019s not possible to use a regular source control system (like SVN which we use on other projects) for the bulk of the files.\u00a0 The pro version of Unity does support a special feature which allows the use of SVN however it doesn\u2019t just work out of the box, and I have heard of a few people having issues with this.<\/p>\n<p>The ultimate (and most costly) solution is the Unity Asset Server.\u00a0 For this you will need a Unity Pro license as well as the Asset Server client license.<\/p>\n<p>We managed to work around Unity\u2019s shortcomings as I was the only develper working on the game itself with our single level designer working on the \u201cscene\u201d files in isolation.\u00a0 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.\u00a0 We used Dropbox for this and other than a few minor issues it worked quite well.<\/p>\n<p>I have still not solved this problem and I\u2019m not happy with our current setup.\u00a0 I will be investigating this further in the future and we may simply go down the Unity Asset Server route.<\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>Overall I found Unity 3 a pleasure to work with and we plan to use it for all our games in the future.\u00a0 Its tiered pricing model works well for indie\u2019s of all sizes.<\/p>\n<p>Have you used Unity?\u00a0 Do you have thoughts on the pros and cons I\u2019ve listed or have other items that should be in the list?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We\u2019ve just finished our first iPhone\/iPad game with Unity 3, Flick Buddies.\u00a0 This post is a review of our experiences with Unity including its pros and cons.\u00a0 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 <a class=\"more-link\" href=\"https:\/\/www.doolwind.com\/blog\/unity-3-review\/\">Read More<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"enabled":false},"version":2}},"categories":[33],"tags":[94,112,95],"class_list":["post-527","post","type-post","status-publish","format-standard","hentry","category-game-development","tag-flick-buddies","tag-game-development","tag-unity"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pgEc5-8v","_links":{"self":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/posts\/527","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/comments?post=527"}],"version-history":[{"count":0,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/posts\/527\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/media?parent=527"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/categories?post=527"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.doolwind.com\/blog\/wp-json\/wp\/v2\/tags?post=527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}