Thursday, September 5, 2013

Unite 2013

So last week I had the privilege to attend Unite, one of several conferences hosted by and about Unity3D.  It was a three day conference held in Vancouver, Canada, which was exciting in its own right since it was my first international trip.  I have to say that I really enjoyed Unite, especially when compared to my lackluster PAXEast experience.  Was it better than GDC?  That is a hard one to answer.  I liked how focused the conference was and that almost everyone there was somehow related to Unity.  There is such a vast array and amount of people at GDC that sometimes it can be a little socially awkward trying to network or interact with someone, who though they may share a career in the game industry has nothing else in common.  At the same time, GDC offers many more interesting talks on a variety of topics, so in a lot of ways it is better.
Anyway, each day had talks that I attended.  Some were better than others, but my overall experience was pretty positive.

The Unite 2013 logo and styling were very minimalistic.

Day 0

After flying from Pittsburgh to Phoenix to Vancouver -- makes sense, right? -- I was greeted with my first customs experience, and it was strangely more stressful than I was expecting.   I was asked why I was visiting, which made sense, but when I mentioned the conference, I was asked if I were a dev and what I had made.  Then I rambled about my current employer, which seemed to momentarily bore the customs officer.  After waiting for my coworkers -- there were five of us including me -- we took a taxi to our hotel and had rather chill evening at The Keg before the start of the conference.
Not the most captivating logo, but the steak was good.

Day 1

So day one started with the keynote in which Unity3d CEO David Helgason talked about the growth of the company and product.  He then showed us some of the new features for version 4.3, one of which was 2D.  This is particularly funny because not only have I've been working on Battle High 2 A+ in Unity and have implemented my own 2d system, but before then I've often rolled my eyes and people making 2d games in Unity3d, mostly because of the last two characters in its name.  Now I am a bit of hypocrite due to BH2A+ (though I am making 3d backgrounds), but now there are more reasons for devs to use Unity3D.  Blend shapes -- or morph targets as I am used to calling them -- we're also announced for Unity 4.3.  This seemed useful for if / when I start working on a 3D game.
Then, Richard Garriot, a major part of the Ultima series, talked about his love of Unity and how he thinks its ability to quickly create prototypes and content has really helped evolve the production of modern video games.  Overall, the keynote was probably one of the better keynotes I've been to at pass GDCs and Global Game Jams.

David Helgason -- 'dat collar tech!

After this, I went to a talk about Unity and the WiiU.  The talk was sponsored by Nintendo; sponsored talks are notorious for feeling like commercials.  To be honest, this one did, but not as bad as talks of this caliber in the past I've attended.  Essentially, Nintendo is lowering the barriers of entry to release a game by changing some of its policies and partnering with Unity3D.  If you register to be a WiiU dev, you get the ability to export to the WiiU with Unity for free.  The only real barriers of entry then to getting a game released on the WiiU sounded like the dev kit and actually having a game.  They also showed a web framework which can be used to make WiiU games.  Some of the perks intrigued me such as no concept approval, no requirement to use system specific features such as the 3D on 3DS or WiiMote functionality.  Despite the strange yet subtle worry in the speakers tone, applying for WiiU registration definitely intrigued me.  If BH2A+ does poorly on OUYA, attempting to release a version on WiiU doesn't seem insane.

I'm starting to think I should have taken more photos.

After this, I went to another sponsored talk about Photon Server and Photon Cloud, products dealing with real time, cross-platform multiplayer.  I was excited for this because multiplayer has been Battle High's most requested feature.  I'm nervous to attempt such a feat though as I have heard from multiple sources that Unity's networking capabilities are a bit subpar.  That being said, Photon looked great.  They also cleared up the server confusion I have had for some time.  Essentially, I could use Photon Server as a way to connect players, but then I actually need a server either physically or through a cloud service.  Photon Cloud is a newer service they are offering that takes this step out of the equation.  The great part too is that for there are free versions of both for small amounts of concurrent users so I can at least get something started without spending a fortune, especially if I find that Photon just isn't right for me.

Photon Server sounds promising...sounds...

Then I went to my third sponsored talk of the day in which a demo of Mixamo's Fuse tool was demonstrated.  Fuse's goal is to combine available meshes to create unique characters that can then be rigged, skinned, and animated using Mixamo's current toolset.   Fuse also used a product called Substance that, quite frankly, has alluded me for quite some time.  I just don't get what it does, at least not entirely.  Apparently it's a set of shaders that can create very unique looks and substances on characters.  I talked to a rep, expressing my lack of skills for texture painting and he did make it sound like it could be used to help with some aspects, but I'm still hesitant to buy it at its full price.  Fortunately, a discount is being offered as part of the conference, so I made just have finally found a tool to make texturing a bit less painful, but probably not pain free.

A screenshot of Mixamo's Fuse tool.
After so many sponsored talks, I was finally able to attend one that wasn't, which was very refreshing.  It was a postmortem for a game called Girls Like Robot.  In the game, players arrange squared with different expressions on them in the hopes of making every member -- girl, nerd, robot, pie, etc. -- in the seating arrangement happy.  I don't see many games use facial expression to indicate importance, so I thought this was an interesting approach.  The devs were nominees for a Unity award.  They were humble and a little funny, such as the main devs admittance to taking shortcuts and using poor optimization in Unity only to have a game that still runs near perfectly or using the analogy of sad soup for the use of plugins, requiring great dedication due to their high risk.  I did become jealous a bit as the devs were from Boston and gushed about its rich indie culture, something that I wish Pittsburgh had more of.  Sometimes I feel like maybe I should take it upon myself to try and organize such things, but I have games to make!  Though a meetup with other enthusiastic devs from time to time would be nice.

Screenshot of Girls Like Robot, which I'll be excited to try...when I find time...

The final talk of day one involved two devs from a company called Behavior who apparently convert existing games to new platforms.  Because their teams are often large, they dealt with some issues involving source control and compiling to lesser platforms and showed the audience some solutions such as the use of sub scenes or layers that are then combined into one scene.  I thought this as an interesting solution and informed my coworkers only to discover we are already doing something similar.  Also, the devs seemed nervous, but if I ever give a talk at a convention of any kind I will probably sound immensely nervous.
Anyway, after the talks, my coworkers and I attended a FaceBook happy hour.  Apparently FaceBook is writing an API to better support Unity games.  Personally, I'm not sure if I would ever make a FaceBook game, but I like having the option available.  I also met some cool devs and other people, all related to Unity, which was rather nice.  Oh, and open bars, even with lines are always welcomed.

It was more like a Happy Hour, but you get the picture!

Day 2

The second day I was feeling exhausted, but at the same time I was excited for more talks as I had enjoyed most of yesterday's.  The first talk of the day dealt with upcoming features, so upcoming that I was asked not to talk about them so i will respect them and say nothing more.  After that, I went to a talking discussing advanced editor scripting.  It wasn't a bad talk, but I just wasn't sure if "advanced" was the right word.  Did I learn something?  Sort of, but not directly; in fact, I'm tempted to write a tool now -- if it doesn't exists.  I guess when I hear the word advanced I think I'm going to learn techniques and tricks that are going to blow my mind, and my mind remained intact.

After that was a talk on coroutines that started out ok, but fell flat.  It attempted to show a way to make coroutines easier to work with, but came off a bit amateur, and made so me of my coworkers skeptical.  The talk after this was very dry, but showed some great inner working information for unity such as the difference between JIT and AOT compilation.  He then demonstrated a memory usage example, one of which sadly made it appear that adding the individual components of a Vector3 is faster than adding two individual ones together.
Not the same diagram, but definitely a similar one showing JIT vs AOT compilation.

The talk after was much more technical, but much more interesting, demonstrating the use of data structures while writing a game, some memory management and performance differences in the garbage collector.  Again, this talk was extremely technical, so going into too much detail could come up as bland.

Finally, I went to another Mixamo talk discussing another one of their new products, FacePlus.  Unity 4.3 is introducing blendshapes (or morph targets as I'm used to calling them), and FacePlus is a tool in which people can use an ordinary webcam to record facial animation.  FacePlus seems like a cool feature, though I feel that 50+ blendshapes could cause problem in a game unless Unity does a great job integrating this new feature.

The character from the nearly overexposed FacePlus demo and its actor.

At this point I wasn't really excited about any of the remaining talks, there was a party that evening, and I was pretty tired from yesterday, so I went home and took a nap.  Why am retelling this in my blog?  I guess to be used as an excuse for not going to the last set of talks the second day.
Regardless, that night was the Unity party, which was a lot of fun.  Music was a little loud, something I've always hated in networking events, but usually can't argue with open bars and "Unity-nies" -- 1 part Bombay Sapphire Gin, 1 part Blue Curacao, and either 1 part sours or lime juice.  Not the best drink ever -- gin isn't my best friend -- but not a terrible drink either.  It was a fun, and long night and I had a great time, meeting some cool devs and fun conversation.
What the "Unity-tini" looked like.

Day 3

Fortunately, I didn't have a hangover despite the party the prior night, so I was rather good for day three.  Okay, I wasn't great, but I was able to concentrate on my talks, especially since there were only three, the first of which dealt with marketing, a subject I despise.  What I liked about the talk was that it wasn't a list of do this, not that, but instead discussed common theories and generalizations with good marketing campaigns.  The biggest take aways concerned positioning, particularly, don't try and make people feel bad for not playing your game, the important of short yet informative screenshots and videos, and building a community.  I liked this talk, and it was a nice way to start the day, especially after some of yesterday's lackluster talks.

The next talk concerned OnGUI, Unity's current user interface solution, an aspect of Unity that many users don't like.  It was a pretty basic talk.  It felt very introductory, relying on audience questions to guide most of the talk.  I was familiar with almost everything discussed, though the use of GUI windows to act as nodes on a chart was an intriguing idea..  The talk after this was the last of Unite.  It dealt with some of Unity's internal tricks and tips such as not using GameObject.Find because it's slow in highly populated scenes.  It also went over the property drawers, which is something I still need to get accustomed to, but they allow for easier rendering of serialized objects in GUI editors.  It also showed performance profiling tips, which sadly I can't use too much of because I don't have a Unity 4 Pro license -- yet.  I wish this talk was earlier in the conference as it was a very interesting, and technically dense discussion and to hold it on the last day in the last time slot felt unfortunate.



Despite the long flights and customs, Unite was still a great time.  I don't know if it was better than my GDC experience, but it was definitely better than PAXEast.  If the location is convenient, I definitely am interested in looking into going next year.  Hopefully by then I'll have some things to discuss on the hands-on tutorial area, which I sadly neglected.  Heck, maybe I'll even submit a talk for consideration.

Neat whale sculpture by the convention center in Vancouver.