I recently had a call with Unity Technologies (http://unity3d.com/) CEO David Helgason where he graciously gave me 45 minutes to geek out with him on Unity, on Unity v4 (http://unity3d.com/#unity4beta), which is in beta, and how Unity fits in the Windows 8, Windows Phone 8 world.
Before we dived into what’s coming, we chatted about the Unity of today where I asked for a little background on why there was no Windows Phone 7 version.
“We wanted to, but Microsoft was not ready for native applications/engines and the work to rewrite our engine would have been...” [GD: In my notes I had “insane” and while he didn’t say that you get the idea…].
Let’s take a step back for a bit and talk about Unity at a higher level. Unity is made up of three basic parts, the Engine, optional platform deployment add-ons and the game development tool chain. The Engine is what you might expect it to be, it’s the C/C++ heart of Unity. The optional add-ons are those things that enable or help the engine run on different platforms (there are 13 different platforms for Unity including the upcoming Windows Phone 8 and Nintendo Wii U additions). Finally there are the tools. That’s where you come in.
Yep, C#. “But Greg, Unity runs on phones, tablets, Macs, all these things!” Yep, that’s right, lots of different platforms. And you can use any of these three languages for all of them. That’s the magic behind the Engine. It takes your script code and compiles it to work on the platforms you are deploying to. It’s basically a native code generation engine. And it handles all the different graphic devices, sound, input, locals all of that for you.
Being a dev geek, I had to know, given that number of platforms, how much of the code was shared between them. Was there a totally different code base for each or was there some code sharing between them?
90% of the code is shared across the different platforms.
As David spelled all this out to me, I quickly understood my “insane” note. Imagine have to rewrite that much code, just to get it to run on one device OS.
“Wait… but there’s a Flash version. Wouldn’t that require a rewrite too?” you ask? Yes, they do have a Flash version and yes, it did require a rewrite. That project was a major effort that took years. And let’s be honest, given the penetration of Flash, a logical step.
That’s today. What about tomorrow?
Unity 4, which is currently in beta, will allow the targeting of the new platforms coming from Microsoft. The v4 beta is available today, if you pre-order v4. That said the Windows 8, Windows Phone 8 parts of v4 are not yet available (but coming soon).
Windows 8 Store Applications and Windows Phone 8 will open a whole new scope of what’s possible with their new native application support. Native app’s on Windows Phone 8 means Unity can leverage that 90%. And so can you.
Again being a dev, I had to know how long it took to create the Windows Phone 8 version of the Engine. Was it months and months using massive numbers of people or…?
“6 Weeks and 1, 1 ½ teams.”
The hardest part?
“The locked down nature of Windows Phone 8, even when doing native code. Also the platform is a moving target”
With the earlier talk of “pre-order” I got a little concerned about the free version…
“We will have strong support for the free version in v4, including being able to build Windows Store Apps with Unity. The free edition is very important to us. We started out as devs too and remember those days fondly. We want to give back and support the devs of today, to help build the hobbyist into the next pro gamer dev, to help the day-corporate dev who wants to code at home on fun stuff. That’s where we see the Free edition.”
As David was mentioning Windows Store Apps, I put forth the question of WinRT, i.e ARM vs Intel… Will the Unity engine run on Windows RT (i.e. ARM) tablets? Will it run, will games created with it run, as seamlessly as a Windows Store App as it runs on the Windows 8 Desktop?
“We really want that to happen and that’s our intent. But we’re in the early days of WinRT and there are not many devices available yet, so… But again, we intend too!”
As we speak about different devices and platforms I began to wonder how they deal with the different sensors and capabilities of all these devices. Did they build the “one framework to rule them all,” was every platform unique or was there a middle ground?
“We have a different approach to sensors than Flash/Java. We do provide a common set of device/sensor capabilities in the Engine, but we don’t lock people into just those. You can extend the Engine, using C++, to create extensions that provide new device specific capabilities which then others can use when writing their C# game code. We provide a base, on which others can build on and extend, giving them the power to adapt to the changes and new devices faster than we ever could…”
As I’ve already mentioned a couple times, the Unity devs use scripting to code their games/apps behavior. Does this mean that something like the .NET Framework is deployed to all supported platforms? What “version” of C# is that? 4.5?
“Unity relies on Mono (http://www.mono-project.com) for its C# development framework. So where Mono is, Unity can be (in general). Since we are coupled to Mono and Mono can be a version or so behind the latest .NET Framework, and due to the needs to have a stable platform to build into our Engine, we might be a version or so behind the latest version of Mono…”
“That said, on Windows 8 we plan on supporting the full .NET Framework 4.5. So if that’s your only platform target, you can take advantage of everything that’s in .NET Framework 4.5.”
That seemed a good time to ask when Unity 4 was going to be released.
“We’re an engine, a platform that tens of thousands depend on. We have to get it right. I can’t give you a date, but it’s our intent to not be too far beyond the generally availability date of Windows 8/Windows Phone 8”
At that point we were running out of time, so I asked what some of the more unusual or coolest things he’s seen built with Unity.
“There was one project where a dog lived on a wall and using AI interacted with people…”
SNIFF, As you walk down the street you are approached by a dog. He is on his guard trying to discern your intentions. He will follow you and interpret your gestures as friendly or aggressive. He will try to engage you in a relationship and get you to pay attention to him.
Sniff is an interactive projection in a storefront window. As the viewer walks by the projection, her movements and gestures are tracked by a computer vision system. A CG dog dynamically responds to these gestures and changes his behavior based on the state of engagement with the viewer.
“There was another one on Kickstarter what was a game that taught you how to develop Unity games with playing a game…”
“There’s military simulators, a Rifle Range game that uses a real rifle and so many more… Our Gallery, http://unity3d.com/gallery/made-with-unity/game-list) is a great place to see some of the things people are making with Unity”
Finally I had to ask about the Kinect, if there were plans for it?
“Unity for the Xbox 360 already supports the Kinect. As for Windows 8, there are a number of people who have already created Unity extensions for the Kinect for Windows Device/SDK. Also while I can’t commit to it, we do have something working in the lab…”
I’d like to thank David for his time and Melissa for setting up the opportunity. After talking with him, I’m really looking forward to Unity 4!