Havok Behavior v. NaturalMotion Morpheme


Do I dare start a flame war here? Hope not. Would like some nice pros/cons:

We’re looking at Havok Behavior/Animation/Physics and Morpheme:connect/runtime. Both have some nice features and some drawbacks; they are powerful and complicated.

Anybody have any success or horror stories they’re willing to share?



We use morpheme:connect (mcn) on SWTOR. Unfortunately we also use a really old version (1.3.6), but I can give some objective opinions.

We do things with mcn that nm (Natural Motion) never intended. Literally, they came here to help us and just shrugged. We are doing things no one else is doing, so it made doing those things that much more difficult. That said, we have been able to do those things, so that says something for their software.

We’ve done heavy customization on the runtime, so I don’t know how valuable our feedback would be. But they give you the source to the runtime, so you can do those customizations- that’s another good thing. The mcn source is not available, though, so for tools you are dependent upon nm. That said, the tool has improved incredibly and they are in version 3+, so you should be fine there. We’ve been able to do everything we need automation-wise with the limited lua scripting support in 1.3.6, but we have a lot of pipeline code that works outside of lua (which is good- we don’t want lua code to do any pipelien stuff, just manipulate the network).

The .mcn file is xml, so we are able to parse info from it without opening up the tool, which is vital. If it were binary, I’d take back every good thing I’ve said about mcn.

We have systems where we procedurally create networks, etc., so it is pretty customizable and robust.

Our artists and designers are able to use it, even in our complex system, so that is another plus. It really is pretty easy to use and understand.

The biggest problem we had was, morpheme by default only allows one network per character. We created a way to swap networks on the fly. Once we solved this, things got significantly simpler- but we had to do all the work for this, morpheme doesn’t support it by default, and it wasn’t trivial (though it wasn’t too difficult either).

At last years GDC we discussed these two and the consensus was, mcn is easier to use and more friendly to content creators, while havok is more powerful and customizable- though I don’t know if that’s truly accurate. They’re both good software from good companies. EA doesn’t have a good relationship with Havok so don’t get a chance to try their stuff.

So I can’t speak to Havok, but I can say that I wouldn’t hesitate to use morpheme again (a newer version). I’m sure my coworkers would tell you some more negative stories but, a lot of our problems are their fault- we used the tool and approached our requirements naively. Once we realized we needed to split up networks, and provide more tools and pipeline support, we were much better able to leverage it’s power and not get bit by its age.


Are you all ready running HPhysics?

I really liked the Havok tools but I have not seen or compared them with morpheme in a few years.
Runtime size, cost, tool integration and company support weigh a good deal in this decision and support and feedback form Havok was solid and their animation system had full supported scale for squash and stretch requirements and a good exporter path that other tools were lacking at the time.


Rob’s comment sums up our experience with Morpheme nicely. The one comment I would add is that Morpheme makes it really easy to create really complex networks. It’s when you want to do something simple like play a single animation on your character at a specific time - but not carry that animation around in memory all the time, that it falls down a bit.

The thing that I don’t like about 3rd party animation blending software is that it adds another step into the process. You export from your DCC app to 3rd party software, and then you have to export again from that into your game engine. If I could choose, I think I’d prefer to see the functionality of the blending software built into the game engine itself to avoid the extra step.


I can give you some pros and cons of Morpheme (2.3.3). I’ve never used the Havok animations system though. This is mainly about the MorphemeConnect transition authoring tool. MorphemeRuntime is the actual animation engine.

[li]Exporter supports MaxScript.[/li][li]One of our animators likes MotionBuilder, and there is a plug-in for that too.[/li][li]You can build really complex networks, with a hundreds of animation nodes.[/li][li]You can share animation networks for different characters. (They compile separately though.)[/li][li]Animation compression options are robust.[/li][li]Ben mentioned having to take an extra step to see assets in the game, but their AssetCompiler is a command line tool. I added a button in our MaxScript exporter to compile the network of the currently open Max file.[/li][li]You can fake a lot of game play with their LUA update scripts. (In order to test transitions.)[/li][li]Many of my suggestions made it into future releases.[/li][/ul]

[li]Tagging animations can be very tedious since you can’t select more than one tag at a time. And you can only tag with integers, and not strings. What does tag# 1651 mean again? [/li][li]There is no way to set defaults without changing a bunch of LUA scripts. Then when you upgrade, you have to try and remember what settings you changed and in which files.[/li][li]In our case a lot of fancy transition stuff needed to be removed for “character responsiveness.”[/li][li]Support can be slow, and many of their replies suggest creating LUA scripts, which a typical non-tech artist cannot do.[/li][li]A couple times support told me something wasn’t possible, then I found the feature already existed.[/li][/ul]


Thanks for the detailed feedback fellas.


There’s another option for animation middleware:


I’ve been using it for the last 6 months and so far it’s been very good all around. Milestone is using it for SBK2011, MotoX and future motorbike games. They provided the source to be integrated which allows for customizations, although we didn’t need anything on that part (yet). EMFX, their basic SDK, is a really full featured animation engine which was quite easily integrated. They also have a very solid exporter for both Max and Maya (from 2008 to 2011 versions I think), with batch lists, wavelet compression, etc.

EMotion Studio is still under beta, but besides some bugs and kinks it’s completely usable, and have already gone through large steps since the first version I’ve used. Their support is also top notch, they always answer emails promptly and can even help over MSN or Skype. We even needed some custom stuff on the IK node which they were able to add in just a couple of days. EMStudio doesn’t have a scripting interface yet, as of January, but I think it’s on their feature list to add.

We just today made “automatic blending LODs” work without anything but a new parameter in the game. The main race state is a huge blend tree of around 15+ animations and poses, so to increase performance we took some out for the lower lods. It worked so well it’s not noticeable, other than the 3d graphic poping (we don’t have blending 3d graphical lods yet).


Has anyone ever scripted behavior in LUA for Endorphin or is it a lost art since Endorphin is discontinued?