Unity 3.4 is nearing release, and we wanted to share some the features that will be included and also share with you a roadmap for what we are working on this year.
We're about to enter release candidate 1 with Unity 3.4, which is a feature + bugfix release. Here are some highlights:
Procedural textures are built directly into Unity. Substance procedural textures can be tweaked in Unity. You can even update your textures at run time. It can be used for anything from ageing effects on textures to customizable characters.
Directional lights got a new shadow projection mode called “Stable Fit”. Now there's no more shadow boundary shimmering when rotating the camera!
Regarding optimizations, we cull shadow casters much better now, which means fewer draw calls. Shadow culling can also use occlusion culling data.
Skinning performance is 2-3x faster on PCs due to SSE2 optimizations and multicore improvements. There's also multithreaded skinning for the latest iOS and Android devices.
This is a cross-platform feature including iOS and Android that's perfect for downloadable content. Asset bundles and even complete scenes can be downloaded on demand and cached locally. The caching API gives you full control over when to download a newer version of the asset. Using the caching API dramatically reduces memory usage and has a huge impact on load times.
Unity now gives you eplicit control over the execution order in your scripts. Awake, OnEnable and Update calls are sorted by execution order. Execution order can be defined on a 'per script' basis in an easy-to-understand dialog.
Pre-computed bounding volumes for skinned meshes & animations let you have more animated characters in your scene.
We implemented various graphics optimizations, ranging from faster deferred lighting (due to more compact light shapes & better occlusion culling) to faster OpenGL ES 2.0 and more mobile optimized shaders.
Last but not least: Terrain works on iOS and Android now.
There's a big upgrade to image effects & water. Both have been optimized for performance and, at the same time, visual quality has been improved. They're also easier to tweak for artists.
All console versions are now released at same time as 3.4. and projects can easily be moved between all platforms.
Rochard, our first PS3 game, has just gone through the Sony submission process.
You no longer need to code to add icons to your game objects. Now you can simply set the icon in the game object inspector to quickly see and select things in your scene view. If you want to see icons for tools like pathfinding nodes, just set the icon on the node script in your project and they'll all show up in the scene.
You can also toggle the display of handles on a per-component basis so now there’s no need to hold back when writing custom editors.
If you select a collider and hold down Shift, small dots for resizing the colliders will appear. This makes it really quick to set up efficient collision levels so they run really fast on mobile devices.
Unity 3.4 also has loads of smaller improvements, shine-ups and fixes.
This year we're focusing on enabling you to push all platforms to their limits. Unity is the most optimized game engine for mobile devices and we're working hard to also make this true of all other platforms. It's a big step for Unity to support AAA productions. We have tons of performance optimizations, better multi-threading and a big graphics engine upgrade. At the same time, we are also improving work flows, especially when working in larger teams. Unity 3.5 is a late summer / fall 2011 release.
Please note that the features in this roadmap are not commitments! They may or may not end up in a final release. If a feature isn’t ready in time it will not be included in the release.
We will be moving most of the rendering workload and driver overhead away from the main Unity thread and onto another CPU core. This is an ongoing project that is currently working on the PC but we plan to make it available on all multicore platforms, from desktop to mobiles. Plus, we’re going for wider multicore utilization (using as many CPUs as there are) for tasks like culling and particle systems. How much of this is ready for 3.5 and on which platforms is still an open question, but we can say that the performance gains look very promising!
Unity will automatically generate navigation meshes from your level geometry.
Beautiful, natural-looking crowd simulation using RVO and PLE algorithms wrapped in a simple API. Agents can find paths to target locations with built-in crowd simulation, or can be moved directly on the NavMesh in a similar way to the character controller.
We re-wrote our particle system from scratch. The new particle system is completely curve and gradient driven, and is composed of modular blocks to boost functionality. Also, it utilizes multicore CPUs on all platforms!
We’re rewriting the in-game GUI system from the ground. We've made it simple and intuitive to create modern game interfaces with tons of animations and other effects. Everything is assembled in a visual GUI editor. A lot of effort is going into optimizing the GUI system for minimizing run-time overhead through automatic texture atlases and aggressive coverage-based batching.
Light probes are an advanced technique for lighting dynamic objects and characters with high-quality baked lighting. We capture incoming direct and bounced lighting within a scene at a number of points (light probes). As a character moves through the scene, nearby probes are picked, interpolated, and the result is then passed to the shader to light the surface. It's a hard problem to do all this efficiently but thanks to our tetrahedra-based space division, the technique is extremely fast even on mobiles and has a very low memory footprint. For more details check out the video and blog post.
To add more flexibility to our lightmapping solution we're adding the option to bake directional lightmaps (radiosity normal maps and similar schemes). That will also enable bump and specular effects on surfaces lit by indirect light only.
Built-in Level Of Detail support. LODs are currently authored manually in your favorite modelling tool but we're also experimenting with automatic LOD generation techniques.
Intuitive editor tools for setting and inspecting LODs are included as well as integration into the pipeline to automatically create LODs based on naming conventions. We're also offering support for fading level of detail transitions using screen-space dithering. Get more information in this blog post.
We're working on fully integrated version control support for both Perforce and Subversion. There's a complete UI including support for file locking.
Unity will now write all data in a text-based file format for scenes, prefabs, materials and other binary files in your project folder. The format is based on YAML and is optimized for being easy to merge. Multiple team members can work on a scene at the same time and merge the resulting changes afterwards.
The prefab system has been rewritten. It allows you to add and remove components without breaking prefab connections. Materials can be instantiated with the prefab instance. This paves the way for nested prefabs.
A new allocator framework helps us reduce memory usage and fragmentation and improve performance. Now there's a much better memory overview in Unity’s Profiler.
We are working on a pluggable social API with backends for Facebook and Apple Game Center.
Companies like OpenFeint or publishers with custom social platforms can easily create their own implementation. This makes it easier to port games between platforms.
We are working on low latency audio buffer access. This will enable you to write your own filters, effects or make the audio data precisely affect your application or let your application dynamically mix and procedurally generate audio samples.
Microphone support will also be introduced across all platforms. Microphone input can be accessed transparently as an AudioClip.
We're adding support for streaming video from cameras or other input devices into a texture to allow you to develop augmented reality games, or for uploading pictures for integration with social networks or other online services. This was implemented at our last NinjaCamp week.
Umbra's sPVS occlusion culling system has been rewritten from scratch. The algorithm now guarantees conservative PVS results and baking PVS is around 10x faster.
As usual, we fully expect Unity 3.5 to deliver tons of other small features, improvements and fixes.
Again, the fact that we are working on it is not a promise that it will ship in a matter of weeks. We just want you to know what we're trying to do. Some plans might change!
As announced, we are hard at work to add support for building a Unity project that can be played back by a browser equipped with the Flash "Molehill" plugin. We'll bring as many Unity features to the Flash Player as we can, and aim to be the very best tool available for people who want to target the 3D functionality in the new Flash Player.
Everyone loves Unity’s completely automatic asset pipeline and the ability to quickly modify any asset in your project folder without jumping through hoops.
But when working in larger teams, everyone has to import the same assets again and again. If it could only be 3000x faster to import all assets... We have a solution for that. Early prototypes show that we can import a project folder with 1GB of assets in 9 seconds.
Built-in HDR, proper linear space lighting. Making the pipeline, the shaders and the render targets work together to produce the output that artists anticipated. It’s a tricky area to get right across all platforms - which is why we want to solve it for you!
We've been working on a texture streaming solution. Unity will load the textures at the necessary resolution just before it needs it. You have a texture memory budget which Unity will fill with the most important textures necessary. Unity automatically analyzes your scene but you can also manually specify the needed textures & resolutions at specific locations in your game.
This means you can have more textures at a higher resolution, especially on mobile devices and consoles. Unity automatically analyzes your scene to allow for prefetching of textures. Even on iOS we're able to stream textures in the background at 60FPS.
FMOD designer support: Import FMOD designer banks (.FSB) and event files (.FEV) and access them as standard audio clips.
Audio DSP graph: Get full access to the mixer engine and create custom routing and advanced signal chains either from a visual node editor or through a simple API.
Dynamic mixing: Mixing audio seems to be the big issue in today's audio field. We're working on a dynamic mixing solution that lets you group audio sources and mix them, apply effects, modulations and save these settings as snapshots. You can trigger the snapshots from script or from animations at any time. This makes it easy to duck audio and precisely control the audio levels at all times.
This is only part of what we are working on. We're also developing more features that are much further away from completion. So stay tuned!