The third and final day of the Unity3D conference, and after the party last night, everything seems a little more subdued than previous days..
Of course, being a good nerd I don't party, and instead I was back in the hotel room trying out some new features, and working on my MonoGame project (more about that coming soon). I ended up coding quite late into the night, as an excellent thunderstorm rolled over Vancouver and smashed a fair amount of rain and photons against my 22nd storey room.
Their version connects via BlueTooth to mobile devices, and a Unity driver lets you build support into your app. As well as being the basis for their own board game platform, the DicePlus works as a multi axis touch-sensitive controller: they demo'd a flight sim that was controlled just by tilting. I couldn't help thinking something like this would make a great controller when plugged into an Oculus system..
The next talk was on using DirectX11 to leverage the power of GPUs to perform general computing tasks, such as creating particle systems. Unity3D allows you to make use of shaders, and so this is a way to add millions (literally!) of smart computing units to your app. Sadly when I hear HLSL I tend to glaze over, but being able to access this from within Unity certainly lowers the bar to trying it out.
A strong advantage of Unity3D is the existence of "plug-ins", which provide ready-to-use modules that provide extra features such as audio processing, special effects, animation tools.. you name it, there's a plug-in ready to help. Unity3D has it's own Assets Store and apparently some developers are making good income from selling their plug-ins rather than just their games. I sat in on a talk from the Veemix folks on developing and selling plug-ins, and it seems like a viable way to offset the risk of writing a game. If your game bombs, you could still recoup your costs by selling some of the tools you developed.
The last talk I attended was all about OnGUI - this is the system used by Unity3D to create HUD graphics, game menus and so on. I guess you could abuse it terribly to write 2D apps, but having just typed that, I sense the disapproving tuts from the Unity developers currently sitting around me.
I had a very interesting time at Unite2013. I came here thinking Unity3D was a game engine that might be useful if I learnt its various quirks. However, it's clear now that this is a real and growing platform that can be used for all kinds of apps. Now this is just me, but when I look at Windows game development, and I see a sentence like "To use Direct2D, first you need to know a little about COM.." my brain just shuts down. I don't see why we need to learn COM in 2013, I just don't. Even getting to grips with Direct3D is not something I want to spend a year doing if I can possibly avoid it. Call me lazy if you like, but I like programming games not graphics cards.
Unity3D neatly sidesteps all this for you, letting you focus on what you really want to do - namely, writing a game or other graphically rich app. If you want to write some App Store games for Windows or Windows Phone, Microsoft have stuck a nice deal with Unity, so you'd be crazy not to check it out.
Of course you can write your game in DirectX. But wouldn't you rather write it in a way which gave you almost all the power of DirectX, but also let you run it on other platforms too if you really wanted to? And do you really want to worry about writing code to import textures, animate bones, deal with motion capture files, load and display 3D models when you could be working on the game itself? For an indie, using Unity3D could cut development times from years to months. And of course, there's a great community of developers ready to help you. And the company itself has a very commendable philosophy of wanting to democratize game development.
I am biased? Of course I am! As I write this, I've just finished four days of being immersed in Unity, being surrounded in Unity chatter, watching Unity demos, and that moment I'm thinking of rewriting everything I've ever created using it (because when you have a hammer, everything is a nail!).