Last week our tech team managed to take some time out and attend Unite, the annual developer conference for those working with Unity, in Amsterdam. Over the past year Unity has become an increasingly important part of our technical strategy - we're working on multiple cross-platform Unity titles at the moment - and the huge turnout and enthusiastic atmosphere at Unite showed we're not alone in that respect.
As well as the excellent talks and presentations - more on our favourites later - we were really impressed with the number of Unity staff in attendance and how available and helpful they were. Whether it was an informal chat over coffee or a scheduled hands-on session to help with specific technical questions, there always seemed to be someone at hand. It was a nice touch from a company who seem genuinely interested in maintaining good relations with their developer community.
If you're in any way interested in Unity, we'd highly recommend attending the next Unite. We spent three great nights in Amsterdam enjoying informative sessions, meeting interesting people, soaking up the atmosphere and in such a great location. Hopefully we'll see you there next year!
Hosted by the three founders of Unity, David Helgason, Nicholas Francis and Joachim Ante, the keynote served as an opportunity to showcase some of the features of the forthcoming Unity 4 release. Starting with the impressive Mecanim animation system, which makes it possible to reuse animations across multiple rigged models in an intuitive way, they also touched on the significantly delayed but much anticipated new GUI system. The widest applause was reserved for the unveiling of DirectX 11 support, showcased with the impressive realtime short movie Butterfly Effect, produced in collaboration with Passion Pictures.
Performance Optimization Tips and Tricks for Unity
Being a mainly-technical conference, Jonas Echterhoff and Kim Steen Riber’s talk about optimisation was always going to be well received. While shorter than many of us were expecting - mainly due to the large portion of their session reserved for Q&A - they managed to pack in loads of useful tips for ensuring you're getting the best possible performance from Unity. Of particular interest was distinguishing between memory bandwidth and fill rate problems, and tips for optimising shaders for mobile devices - such as picking the lowest possible number precision and using precalculated lookup textures.
Nicholas Francis, the CCO of Unity, gave a live demonstration of the forthcoming GUI system in Unity 4. Implementing GUI efficiently (how long it takes to create as well as how it performs at runtime) has always been a particular weakness of Unity and it's clear the new GUI system is taking steps to address that, allowing the easy creation of multi-platform capable GUIs. What also became apparent during this session was that despite the lengthy delays, the GUI system won't be perfect upon first release. Several questions asked during the session, such as how the switch between portrait and landscape would be handled, were answered with "we don't yet know". Still, we're looking forward to seeing the new system in action in one of the later Unity 4 releases.
The Unity Rendering Pipeline
Tim Cooper and Kuba Cupisz gave a talk that was so well received they did it twice! The most in-depth technical talk we attended, this covered the use of lighting in Unity using shaders. It was great to hear about the strengths and weaknesses of the built-in Unity shaders, and when you should roll your own custom shaders (basically when you need a higher level of control, either for stylistic or performance reasons). They also described a useful technique for creating variations of your shaders, using the multi_compile prgama parameter, which can then be swapped out at runtime.
I'd recommend downloading the slides from this talk if you're in any way interested in lighting or shading in Unity.
Advanced Editor Scripting
Impressively still able to present his talk after fracturing his shoulder, Yilmaz Kiymaz shared some great insights for extending the Unity editor via custom scripting. Designed to streamline your workflow as well as save time, Yilmaz showed examples such as adding a collider and rigidbody automatically based on the name of the object or metadata, changing the import settings of a texture if it's moved to a specific folder, and creating custom build scripts on top of BuildPipeline.BuildPlayer. You can see some of these techniques in practice in the Multiplatform Toolkit by Owlchemy Labs, where Yilmaz used to work.