A couple of posts ago I talked about the general state of Unity as an engine and a company, particularly in comparison to Epic and Unreal Engine 4. I stated my concern for Unity’s strategy and behaviour, since they’ve tended to emphasise new features over completing existing ones, and that this could lose them the market to Epic given UE4’s business model.
Unity 4.5, although it was announced a little while ago now, was released unexpectedly (as is the way with all things Unity) yesterday. There have been other recent developments at Unity as well, so here’s a short-ish post on where Unity could be heading.
Unity 4.5 Fixes
Far and away the most positive thing about the Unity 4.5 release notes is the ratio of fixes to features. The release notes are in contention for the longest of any non-integer Unity version thus far, and they’re dominated by improvements and fixes. Mostly these are simple things, but many of them make a big impact on development.
A couple of particular examples – skyboxes now work with stereoscopic rendering. Skyboxes are one of the biggets annoyances with the Oculus Rift SDK; they just didn’t work, previously, meaning one had to spend time finding and tweaking workarounds. Not “difficult” in the grand scheme of things, compared to writing good AI or network code for example, but a needless time sink and a non-obvious problem particularly for inexperienced devs. Put simply, skyboxes as implemented by default in Unity should ‘just work’ – and now they do.
Another example is the new LayerMask.GetMask() method, which takes an arbitrary number of layer names as arguments and returns a LayerMask with all those layers flagged. I spent a long time struggling with apparently inexplicable bugs before realising that a LayerMask is a bitmask rather than a regular integer. While the documentation still doesn’t make this clear, at least now there’s a single, official way to generate one of the fuckers. Again – a tiny change which in many cases can save you a lot of time and pain.
All genuinely real-world-useful stuff, not shallow marketing bling. This is what Unity needs.
Oh, and another example (whose previous absence was one of the most obvious of the changes in the release notes) – undoing changes made to prefab assets. Seriously, why was that not there til now? There’s also a huge number of improvements to the 2D system, but that’s not something I’ve yet used.
Even most of the changes listed as “features” could really be classed as improvements, and definitely fall under the banner of making existing features better or more complete. For example, an improved shader import/debugging workflow, additions to Mechanim and serializable structs. All genuinely real-world-useful stuff, not shallow marketing bling. This is what Unity needs.
All well and good, but criticisms of Unity’s approach to bugs isn’t all aimed at a perceived lack of interest – it’s also aimed at timeliness. Often it appears that simple but showstopping bugs go unfixed for months or years. An improvement in prioritising the right fixes isn’t actually going to help much if the time between them remains large (and equally, if Unity don’t improve on letting the community know when they will arrive).
So it’s really nice to hear about Unity’s new Sustained Engineering plan. This isn’t a change to the existing system of fixing bugs, but an additional team devoted to fixing the current version of Unity rather than working on the next. So rather than waiting until enough bugs are fixed to announce version 4.n+1, bugs will be fixed on an ad-hoc basis with patch builds pushed out as soon as they’re done.
While these won’t be announced with a huge fanfare unlike proper releases, their existence in the ecosystem is essential for people who really need that particular issue fixed, and if nothing else speaks to Unity’s sudden renewal of interest in what their community actually want. Let’s hope it’s not (only) because they’ve been backed into a corner by Epic, and that they keep it up.