Downloaded and installed the Unity3d v4.0 beta this last week and thought I’d write up a few notes based on what I’ve tried so far.
I haven’t used many of the new features yet (I haven’t purchased an official upgrade and so lack the iOS support I need to actually switch in earnest), but it seems to be quite solid (no new crashes so far), though it doesn’t fix the issue I’ve run into on my MacBook Air (HD3000 graphics) where Unity 3.5.x will hang or crash. Same thing happens with v4.0 beta, unfortunately. :-(
My first suggestion is: if you want to keep 3.5.6 you need to rename your 3.5.x install before you install the 4.0 beta because otherwise the beta will erase and install over your 3.5.x install of Unity. Remembering just after you hit the install button and hurriedly switching to the Finder and renaming it isn’t good enough – the installer must save the FSRef or something because it’ll overwrite it in the non-default name in this scenario (whoops!).
@aras_p helpfully tweeted to confirm that renaming the Unity folder first should work, but I’ve not had a chance to test this yet.
The UI changes mostly seem like nice improvements, though the change to the Project View make it take up more screen space and on a 13″ MBA that’s unfortunate. I’m not totally sure I see the motivation for the change and it feels weird to me as an OS X user – maybe it’s modeled on some Windows UI convention? The decrease in screen space efficiency is definitely less than ideal for small laptop use in any case.
I was pretty excited to see the Terrain Engine getting some improvements. In particular the mechanism to use your own shaders more easily was something I really needed/wanted. Unfortunately it’s undocumented in beta 5 and while I figured out some of how it works and how to use it, enough of it remains a mystery that I’ve not yet figured out a solution that would allow me to use the Unity built in Terrain Engine instead of creating my own. The biggest hurdle is that I’m not seeing how to get the base image to stop being drawn or to let me render a base image that matches what my firstpass shaders is drawing.
Our game didn’t take much in the way of modifications to work with 4.0 which was a relief. The only change I really had to make was the change in GameObject.active and the way that game object activation works (all ancestors must be active for a child marked active to be actually activated). We are using activation & deactivation of various versions of character meshes for LOD purposes and for switching to batchable static meshes when there isn’t animation for performance. So this change to the way active state works was something we had to work around. From the Unity3d 4 beta release notes:
We have changed how the active state of GameObjects is handled. GameObjects active state will now affect child GameObjects, so setting a GameObject to inactive will now turn the entire sub-hierarchy inactive. This may change the behavior of your projects. GameObject.active and GameObject.SetActiveRecursively() have been deprecated. Instead, you should now use the GameObject.activeSelf and GameObject.activeInHierarchy getters and the GameObject.SetActive() method.
Less than an hour to fix and no other problems with the upgrade – nice job Unity devs!
Now if I could just get that HD3000 bug fixed and more documentation on the Terrain Engine so I can turn off the basemap drawing I’d be one happy camper!
Compute Shaders look interesting, but the documentation implies that they’ll only work on Windows computers (despite mentioning OpenCL which we have on the OS X). So I’m confused if they work on OS X or not. With 4 core GPUs on the iPad 4 it would be interesting to have these work on mobile devices where appropriate also (or perhaps it’s never appropriate?).
Multiple new items in the menus relating to Animation so that’s something I need to look into, though I don’t expect it to be useful for our current game.
So, what’s got you excited about Unity3d version 4?