Three Ninja Camp VII projects at a glimpse
Our longest running Ninja Camp wraps today. After the crunch of the Unity 4 release, our developers got three weeks to jam on awesome new projects.
“Ninja Camp recognizes that software development is fundamentally creative work,” says Unity’s CTO and co-founder Joachim Ante. “And creativity requires taking risks. At Ninja Camp it feels like it’s more OK to fail, and so people push their boundaries, take higher risks, and out of that we get greater projects.”
Keep reading to learn more about three cool Ninja Camp projects. All of these projects are still prototypes and at this time we can’t tell you when they will be developed into features and released.
The Mecanim projects
2D blend nodes
2D blend nodes will let you set-up blend nodes that blend animations based on two parameters instead of one.
Blend trees in Unity 4.0 let you create visual hierarchies of animations that are blended together. For each node in the tree you can blend the animations based on a parameter, such as speed, or turning angle. For example, one node can blend walking, jogging and running animations according to a speed parameter.
The new 2D blend nodes will let you blend animations according to two parameters in a single node. For example, you could blend based on speed and turning angle, or you could blend according to forward speed and sideways speed. 2D blend nodes can also be used for setting up aiming in different directions, or for any other collection of motions that can be ordered according to two parameters. This lets you create your blend trees using fewer nodes and in a more flexible and intuitive way. See the video:
With a new Recording feature you will be able to set up time-based gameplay, seen in games such as Braid and Prince of Persia, for any object animated in Mecanim.
The technology developed during Ninja Camp will serve as a baseline for the team—and our community—to develop tools that will allow users to visualize and scrub the Mecanim system, including Animations, States, Blend Trees and Parameters.
“When implementing a feature like Recording, we always ask ourselves ‘How can we have an API as simple and intuitive as possible?’”, says Mecanim developer Pierre Paul Giroux. “I think we hit that target, since it’s now possible to have a ‘rewind time’ gameplay added to a Mecanim object with 2-3 lines of code!”
See the video:
Setting up a ragdoll can be difficult: going from animation to ragdoll, recovering from ragdoll back to animation or ragdoll on specific body parts are all problems you need to deal with in order to get a proper mix of ragdoll and animation. We aim to create an out-of-the-box solution for this in Mecanim.
The Mecanim humanoid biomechanical model will set up ragdoll colliders, constraints and masses automatically and precisely. The State Machine will help to define “ragdoll States” and transitions to blend in/out ragdoll simulation. The Avatar Mask on Animator Controller Layers will be useful for defining which body part should be simulated with ragdoll. Evaluating ragdoll speed from animation and blending ragdoll transform back to animation can be synchronized in the Unity evaluation loop.
“I always thought that physics simulation works well for bouncing balls or falling blocks, but when applied to human motion the results don’t look good.” says lead Mecanim developer Robert Lanciault. “This is caused mainly by not having the right tools. If we can offer an integrated solution that removes most of the complexity of mixing humanoid animation and physics, our users can concentrate on creating nice human/ragdoll simulation, instead of the tech.”
See the video:
Pierre-Paul Giroux, software developer, Mecanim
Robert Lanciault, lead developer, Mecanim
Rune Skovbo Johansen, Editor team developer
+ Guest Ninjas Damien Morello, and Yilmaz Kiymaz
Why Ninja Camp rocks:
Rune: “We encounter very hard challenges with designing Unity so that it’s uniquely flexible, extremely powerful and yet super simple to use. This often requires some real innovative solutions that can be hard to foster when under a tight deadline to deliver the next release. Having Ninja Camps is one of the things we’re doing to make room for this innovation by allowing free and unrestrained experimentation. On a personal level this is also highly satisfying. We are passionate about our work, so finding awesome solutions to problems is one of the best things we can imagine doing.”
Pierre Paul: “It’s fun to be semi-disconnected from the normal software engineering process and run with our fresh and crazy ideas. Certainly we get bad ideas, too! But the ratio of good ideas to bad is pretty good!”
The Profiling Projects
The Memory profiler
The Memory Profiler will be a whole new tool within Unity’s suite of profiling solutions, and like our current Profiler, it will make it easy for developers to address performance issues. The Memory Profiler tells you where your non-managed memory is going, shows you what assets are currently loaded into memory and why.
A lot of our customers have been asking for the Memory profiler, but it will also be useful for Unity’s own developers. They can use it to pinpoint mistakes in memory usage and fix them, helping to strengthen the overall stability and performance of Unity’s game engine.
The Thread profiler
The Thread Profiler displays events visually in a timeline (similar to other profiling tools you might know). The first screenshot shows one frame of a game scene that employs heavy Mecanim and Shuriken functionality. Time goes horizontally, and the display shows main and rendering threads, as well as “worker threads” that execute parts of engine code on as many CPU cores as available. You can see that the Mecanim part is heavily multi-threaded (yellow), followed by a similarly multi-threaded Shuriken part (blue). Then rendering of the frame starts (green), which begins doing actual work on the rendering thread.
Within each thread, events are stacked hierarchically, and you can zoom in on any of them, revealing more detail:
The Thread Profiler will display information more visually than our current Profiler UI, as well as displaying events on the non-main thread as well.
Aras Pranckevičius, graphics troublemaker
Kim Steen Riber, senior software developer
Leonardo Carneiro, Asset Store developer,
Shawn White, Editor team developer
Why Ninja Camp rocks:
Shawn: “To be able to sit with some of my colleagues from other offices for a week and just jam is really productive. It gets our creative juices flowing, which is very useful for the whole development team. The vibe is really cooperative: I was jumping around to different projects, just helping out where I could.”
Kim: “We stop our usual development so that we can think and work creatively and get ideas on the product road map that we otherwise would not have time to consider. And what happens is that some ideas become these awesome projects and you see that it’s possible for them down the road to become actual features.”
The Shader Graph project
A visual-based tool for writing shaders would make life easier for artists who don’t have extensive coding experience. “We’re aiming to make a simple building block system to create shaders, with no programming involved,” says Editor team developer Tim Cooper.
The team built a prototype of a shader graph that is based on connecting nodes together to form a graph. Users can build new shaders step by step by connecting the nodes.They can see the results of their work immediately, such as when textures and colors are added.
“It’s hard to visualize the end result of something you have to code,” says Mono developer Andreia Gaita. “First you have to apply the code, then catch the mistakes, and then go back and modify. Our shader graph will be a huge help for artists, letting them instantly see the effects.”
Shader Graph prototype
Jan Marguc, audio programmer
Renaldas Zioma, tech lead
Andreia Gaita, Mono developer
Tim Cooper, Editor team developer
Why Ninja Camp rocks:
Tim: “I don’t have to worry about all the little tasks that sidetrack me in my normal work – it’s three weeks of just hacking and coding!”
Andreia: “I work remotely, so I love that I can meet up with my colleagues in Copenhagen, and work with new people and new areas of the product.”
Jan: “Everyone’s on the same wave length in a Ninja Camp. We’re experimenting, having fun trying out our ideas—we communicate a lot better with each other.”