Tuesday, April 21, 2009

We're all clones

Look at this picture. It's an ordinary group of people.

Now, show me a comparable shot in a machinima film. You'll find it hard.


Because they're all different heights and different builds, and they all have unique face shapes. Which is, of course, normal for human beings, but very rare indeed in machinima. Given that it's one of the most requested features in Moviestorm - in fact possibly the most requested feature - you might wonder why we don't just do it. The answer, according to the tech guys, is that it's hard. Well, they always say that, don't they? And as a film-maker, I don't care if it's hard. I just want my characters to look like real people.

Well, it turns out it's a damn sight harder than most of us realise. When EA did the market research for Sims 3, one of the most requested features was "I want to make a character who looks like me." It's a reasonable request, you'd have thought. Surely we don't have to be limited to one standard height for men and one for women? Or to fat people who merely look like they've just had a good meal? We can give people double chins, jowls, or curved spines? After all, you can have all these characters in games.

Well, no, you can't. Not easily. Most game characters are carefully hand-built, and only have a very limited amount of customisation and things they can do. Sims characters and Moviestorm characters come with an immense range of customisable costumes and props, and an almost infinite selection of animations once you start combining them in strange ways, and that's where we reach the limits of real-time animation technology. If you don't mind intersections, or you're going for a cartoony look, you can get away with it, but if you're going for something akin to realism, it goes into the same category as flowing hair and pulling shirts.

Take these examples:
  • Make a character's face really fat. Now give him specs. Unless the specs can deform to match the face, then they'll sink into his face. When I'm at the optician, I spend time trying different sizes of frame to get one that fits. I can do this because there are spectacle manufacturers in the real world who are prepared to spend their lives making different sizes of every frame. In the machinima world, we'd have to build lots of different sizes of each frame, and then you'd have to spend time trying them on your characters. That would be time-consuming and expensive, and simply not worth the effort.
  • Get a character to sit in a chair and fold his hands across his belly. In real life, we stop bending our knees when our butt hits the seat, and we stop moving our arms when our hands hit our stomachs. Animated characters don't work like that: they apply a defined movement to a skeleton. A tall character and a short character have to bend their knees different amounts to achieve butt-seat contact, which would mean having to calculate that movement in real time individually for each character. Same with the hand movement: we'd have to calculate where the belly actually is, and then calculate exactly how much to move the shoulder, elbow and wrist to achieve perfect placement. Being out by a few degrees will result in the guy floating above the chair with his hands in his entrails, or squidged into it, Casino Royale style, with his hands in a ballet posture.
  • Now make two characters kiss. You may remember from your teenage years how long it took to learn not to bash her face with your nose, and to hold her gently without grabbing her or putting your hands where you shouldn't. And meanwhile she's learning to avoid your clumsy movements so it all appears graceful. If you know exactly what height and build both characters are, and can manoeuvre them to exactly the right starting place, you can easily define how much you need to move the limbs to get them to look right. Performing that calculation in real time is seriously tricky.
So it's not surprising that we tend to fall back on a small range of standard character sizes and canned animations. It makes it much, much easier to create something that looks good.

But surely all these problems are soluble? It's just maths, after all. A bit of complicated 3D geometry. Shouldn't be that hard.

Well, you probably could solve the geometric problems given time and a good mathematician, and then code them up. Whether you could run them in real time on a desktop PC is a whole different question. That would require some very nifty algorithms, and probably more powerful machines than we have right now.

Somewhere about now, you're probably going to tell me to stop with the excuses. It's just a programming problem. Just get some decent coders and make it work. But check this. EA tried to do this for Sims 3. And despite spending several million bucks on the problem, they couldn't do it. They concluded it was just too hard, and reverted to the old system of fixed heights and modest changes in body shape.

And, frankly, if EA can't do it satisfactorily, I'm inclined to give the Moviestorm dev team a bit of a break. For the time being, we just have to accept this as another limitation of the medium, and live with identikit characters.