Search Unity

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:


Auto Ragdoll

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:


The Ninjas:

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.

Memory overview of Angry Bots in the Editor

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.


Profiler Timeline

Within each thread, events are stacked hierarchically, and you can zoom in on any of them, revealing more detail:

Profiler Timeline in Zoom mode


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.

The Ninjas:
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


The Ninjas:
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.”

50 replies on “Three Ninja Camp VII projects at a glimpse”

[…] We worked on some of these  planned features at Ninja Camp VII, which you can read more about here. […]

We definitly need the memory profiler, especially for doing mobile optimisation, and to know why slow down occurs and when on allocations of all types of objects, not all programmers are sensible to speed and algorithm efficiency.

@RC: I believe that’s a limitation of the underlying PhysX middleware; it’s not something Unity can really do anything about. If you need a fully orientable character then you need to build one using a CapsuleCollider+Rigidbody.

Besides, these are NinjaCamp projects – at NinjaCamp, fixing Unity issues isn’t as important as letting the developers work on something fun, even if when the camp ends and they go back to proper work, there are more pressing issues to deal with.

Great… but what about some basic stuff like being able to rotate the Character Controller’s collider with the character? Isnt it ridiculous to not be able to do that???

@RAHU: you can’t, since we haven’t shipped them yet. These are “ninjacamp” projects, where we work on experimental stuff. Like the blog post says, “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.”

Guys, will you add more shader debugging capabilities?
For example, how do i know the values of input semantics and variables?
I mean the inner stuff that Unity feeds to shaders, for example the value of _WorldSpaceLightPos0 or LightPositionRange.

The 2D blend trees seem like very practical additions that would be less complex to add than the ragdoll and shader generators. I hope they, consequently, make sooner appearance.

Looks like there are no resources at unity allocated to this project going by stramit’s comment on the forum, so don’t place any hopes on this materializing guys. But the fact strumpy is now open source will no doubt help a lot.

Node based shader system is a must. I’ve been using Unreal professionally for a few years and it is a luxury I certainly miss while working in Unity. While most of the same effects can be achieved in code, it really bogs down the art side of things, not only with troubleshooting code but also technique/execution and trying to get that very certain visual look to things. On a recent Unity project, it was a chore to figure out and correctly get a texture to pan over a mesh and that shouldn’t be.

That said, it is exciting to see that you guys are working on this for Unity4 and I love all of the other additions the teams have made. MechAnim has been a dream to work with :) Is there any ETA for the shader editor?

Great stuff guys! I wish other companies would give themselves this kind of time to take risks and develop new ideas!

I’d love to have all the tools mentioned here – especially the shader, and anim blending tools – excellent work folks!

It would be useful to see at least a brief description of any failed projects. We learn as much, if not more, from failures as successes….

cool, but how much of this ninja camp stuff actually makes it to the final product.
I remember seeing some chipmunk and other 2d related developments before; not sure what happened to them.
Anyway, keep up the good work.

I think the Ninja camp events are proof of just how committed the Unity folks are to both improving their platform but also hearing and caring about the needs of their development community. We all reap the benefits, even though some features are more important to some than others. Like me, I’m not a hard core programmer, and part of the simulation & training community that is using Unity to create amazing serious games and immersive simulations for training. With mechanim being added and so awesome, I would think that facial animation and lip-synching for characters would be a next logical direction to go, but being an Instructional technology person, I would also like to see a more comprehensive cognitive AI for driving realistic character behaviors – I’m sure this and much more will come in time, I just thought I would add my particular “two cents”.

As some people already pointed out, that Shader graph is necessary to keep pace with competitors.

To be honest, I considered several times to switch to UDK because of their sophisticated node based shader system.
Unity is a damn fine piece of software but the default shaders are horrible and one of the reasons why some people don’t touch Unity with a 2 feet pole.
A artist friendly node based shader editor, will bring Unity to the next level. And this one here looks really promising. This should be one of the top priorities for UT IMO.

Sorry about adding more requests, but, as it is in development right now, I would like to ask something… will the recording process going to be flexible?
I mean, the tool I am developing is kind of a animation system OVER unity… kind of a Maya-like software that would run in the web player made with unity with a specific scenario (sports) – and I would like to create keyframes for the characters in 3D space with timelines etc. So, I would like to use the recording feature to create those keyframes so the characters could develop the trajectories over the right time…. So my question is: will the recording process be only recordable at real time or it will be “simulated” by script, saying that the developer could simulate a set of actions for the character and “record” them procedurally in code so that the final user of the web player – the “animator” – could scrub the timeline and see its animated character do what he expected…. Hope you understand my point. Thanks, again.

The new profiler looks awesome, will surely help me find out unknown assets wandering around on my scenes! Yeah i know, it sounds weird. :P
Keep those features coming, you are making Unreal Engine cry like a baby. :D

Shader Editor needs to have been in since 3.5. MAKE IT HAPPEN! :) Seriously, it is the #1 reason people don’t want to switch from Unreal to Unity. Take the reason away.

The profiler work looks excellent – the memory profiler will be especially useful for fitting into the 32-bit address space constraint while we wait for a 64-bit editor. (Plus I guess maybe some dinosaur users out there still have 32-bit systems that I should probably make my game run on? Bah…)

Is that a squarified treemap I see in the screenshot?

Np, I think no one offended :)
I can not comment on the javascript compiler and language features because i’m not a user of it nor an experienced language designer. Generally the reason for passing references instead of sending copies of big objects is that the performance would be much higher. If you really need it, implement a memberwiseCopy yourself.
On physics in general i should say that acheiving many results with general physics engines including PhysX which unity uses in hard most of the times. Unity doesn’t implement all joint types and some other PhysX features but hopefully they are in the pipelin. I remember them having APEX support in their roadmap so no worries :)

Very nice stuff especially the profiling work :)

What kinda plagues me as a question is in what way the shader graph editor differ from what Tim ‘stramit’ did on the (SSE) strumpy shader editor in the past?
I guess its a lot of under the hood and behind the scene additions that it as external thing couldn’t do? :D

Woaa, a shader node base editor,…finally ! Please, integrate this excellent work as a part of the 4.x incoming new features, It ‘s reallly missing for now.

@ASHKAN Hmm, perhaps i have been reading to many negative things about unitys current direction, I meant to be more constructive, so i apologize for that.

The two biggest things that I think that need work, would be:
javascripts refusal to copy many data types and instead give you reference (example: try copying a javascript array, then accessing the copy; you get null errors, ect.)

And rigid body joints, so far I still have not been able to find and elegant solution for handling connected objects without having them flex and bend as if it was connected by a stretchy cord.

But that does not mean that I think unity is a bad in any way, it is one of the most awesome things I have ever discovered, been using it for nearly two years. It still needs tweaking for sure, and I suppose I am just venting a bit after the loss of hours and hours of time due to stupid things like that. Unity saved me more time then I ever lost, so really there is no reason for complaint. Just, if those things could be fixed I think unity would be so much more awesome, besides all of these other new features! :D

Currently the shader graph is a prototype project so we don’t know what will happen with it. The prototype differs in a number of ways from SSE. There is some much tighter integration with unity, per mode previews and better code generation. Most of the underlying concepts are the same though.

Thanks for clearification, i guessed somehow but wanted to be sure. The last time you put a small website for the different projects and all of them, even those failed were described there. It was good but it’s fully understandable that it’s time consumming to put descriptions and videos together and upload them.
The important thing is that you are doing these and faft fridays. The result is important. Making it fully transparent is nice but not mandatory :)
Thanks again. It’s nice when the company’s CTO answers comments here and it means something

Great projects and good work all of you. Big kudos to Unity management for continuously investing in free creativity through ninja camps and innovation time – I bet thats a big part of what keeps you ahead…

This is a small selection of all the ninjacamp projects. We had many more, it’s mainly up to the developer to write about their project.

Also, if the shader editor is going to make it, please allow flexibility enough to create down to the metal optimised cg shaders – be great for speed and mobile!

Excellent work guys. My only fear is if some of these exciting things don’t eventually make it to unity 4 due to time constraints.

@Unity Technologies developers
Great projects guys!
This time seems the number of projects is much smaller, or you did not mention some of them or … Can i ask , what is the matter?
@Patrick, Dude isn’t it a better idea to name those parts that u think they need work. They worked on workflow and editor scripting and exporting much for unity 4 as well as D3D11 and shuriken. They worked on stuff like lightmapping and mecanim and … which might not be required for your game but you should tell what parts you think aren’t that good and why to be constructive.

I think ninjacamp is an awesome idea, it is events like ninjacamp where true creative ideas come from. However I am somewhat frustrated in the direction unity is headed. It appears as if it is becoming a program solely for developing fps games. This is sad because it limits the creativity that is used in games. While fps is nice and all, it would be really great to see some development for other less graphics related things. My current game project is not an fps, and I have ran into a great number of simple things that took days maybe even weeks to work out. So I believe it would be better to spread out new ideas to not solely include graphics and fps support.


Comments are closed.