I'm probably the biggest Unity evangelist you will come across, I'm always trying to get all the developers I know to use it - I constantly berate them about not using it. I also do quite a bit of Unity based consultancy, teaching studios how to use it or working on Unity based games. I love it. In fact my latest release, Blast Em! (www.blastem-game.com) is a Unity game.
So, it may come as a bit of a surprise when I say that I may not be using it for the Vita, Xbox One and WiiU games I'm making. Instead, on those platforms I'm going back to native code using C++.
When I was working with the NHL team at EA BlackBox in Vancouver, we had a visitation by the then CEO of EA Canada, John Schappert and he gave what I'm sure was meant to be a motivational speech about how NHL were the Canaries of EA. What he meant was they would be the first to use the new technologies that the tools & tech departments would be spitting out. Somebody in the crowd rightly pointed out that in coal mines the Canaries were used to detect gas pockets and they did this by keeling over dead.
The point was that the team were the first to release games in the current year's release schedule for EA which in turn meant they were the proving ground for all the new tech coming out of EA's R&D departments (of which I was a part). This meant they would be the first to find all the bugs and issues in that tech. It's a scary position to be in for a studio.
Unity on PC and Mac is very mature and apart from a few small issues it's very stable on those platforms. It's also quite stable on iOS and Android. However on the Vita, Xbox One and WiiU it's only just really getting started. In fact I'm not even sure it exists for Xbox One yet. So any project using Unity for those consoles is acting a bit like the Canaries, they are the proving ground, they are testing the way for the rest of us.
For myself, pretty much a one-man-band of game development taking the risk of using Unity on a platform that hasn't yet been proven to be stable is a huge risk. As an example, for the Steam release of Blast Em! I came across a Unity bug where on the Mac the full-screen mode would default to 1024x768 rather than the native resolution it should have done with the relevant tick box ticked. I submitted a bug report and within a day or so support came back to tell me they were able to reproduce the bug and a fix would be found but they were unable to say when it would be publicly available.
That's not an unreasonable response from Unity. It's a huge product and if they submitted public builds for every bug they fixed then chances are every day we would wake up to a new update. Unity probably has its own internal release schedules and all fixes, unless massive probably get rolled into those releases - giving them time to do essential QA such as regression testing.
While being reasonable, this is a huge problem on a console title, especially for us smaller developers. Not knowing when a potential show-stopping bug will be resolved can have destabilising effect on development and could delay the release of the game which in turn affects the revenue stream to the studio. The issue is compounded if a bug is found when your game is released. In fact, while I was writing this blog piece, two other developers on twitter are also having some issues with this kind of thing. Travis Woodward (@tryward) said:
“Ok, am officially stuck until Unity3D fixes some of their Physics2D bugs - they're marked as 'Fixed' so hopefully they'll be in 4.3.2...“
and Aaron San Filippo (@AeornFlippout) said:
“The worst bugs in software/games are the ones that are bad interactions between major pieces of software. Nobody wants responsibility.”
“I'm having an NGUI issue in Unity3D on Linux that affects Intel 400x cards. Whose job is it to fix this? Who knows.”
On PC, players are a bit more forgiving if a game crashes mainly because updates to a game can happen at any time. Console titles are a bit different, due to various testing scenarios the update cycle for a console title can be quite long which means it could be a few weeks before a game gets a fix which could be catastrophic for it.
This leads us neatly into TRC tests, or Technical Requirements Checks. Each platform has a different name for this but the principle is generally the same in that the game is put through a battery of tests to make sure that some fundamental rules of the console are observed. The primary reason for these tests is to ensure that the player has a smooth console experience but the upshot is that you as the developer have to make sure your game abides by these rules and passes the tests.
This is another factor that may be taken out of your control with Unity - what if there is a bug in Unity that fails one of these tests? You as the developer have to wait until Unity addresses it and releases an update. The worrying aspect to these tests is that Sony, Microsoft and Nintendo may start charging you for repeatedly failing as an incentive to make sure you really are ready before entering them. This is a fair deal if you are in full control over your game but if you are reliant on a third-party middleware then this is cause for concern.
Having said all of the above, I still love Unity and once it’s matured and has been proven on a few games on the consoles I’ll be more than happy to use it for those platforms. I'm sure for the most part those choosing to use Unity at this stage for Vita, Xbox One or WiiU (and even PS4) will be fine. I'm just erring on the side of caution and for my first games on those consoles and going native using C++.
It seems the rumour that has been flying around about Unity for Xbox One not being anywhere near ready are unfounded. Phil Waymouth pointed out that there has been at least one game released on Xbox One that was developed in Unity and it's https://store.xbox.com/en-GB/Xbox-One/Games/Max-The-Curse-of-Brotherhood/1d6640d3-3441-42bd-bffd-953d7d09ff5c
There's also a blog post about this game on the Unity site: http://unity3d.com/gallery/made-with-unity/profiles/max-the-curse-of-brotherhood
Just today (15th of Jan) Unity have finally announced that Unity is available for the Vita. You can find out more here: http://blogs.unity3d.com/2014/01/15/playstation-vita-deployment-is-here/
I'm going to be checking this out as soon as possible and will write a follow up article as soon as I can.
You can follow me on twitter: https://twitter.com/xiotex