2 weeks ago in Plain Text

Hi Mahyar

About animation programming: It's somewhat of a vague title that was created a couple of years ago when it became clear it required somewhat of a specific skillset that wasn't necessary found in all game programmers. In short, I would say it's at the intersection of engine, gameplay, physics, and graphics programming, and as such you will find animation programmers at different levels of game making.
I specialize in developping animation systems for game engines, but some of my clients (people using my systems) can also be animation programmers, and their duties will overlap greatly with gameplay programmers (working on 3C).

My day to day is designing and optimizing systems and algorithms so that we can glue together the work of artists (riggers, animators...), and gameplay programmers so we can make games look and feel well good in motion! Most of these systems have multiple interfaces: On one end we need to provide a way for artists to produce, manipulate, and transform data in a way that satisfies their artistic needs and are optimized for runtime (part of an integration pipeline for example); And on the other, we need sets of programming interfaces so that gameplay programmers can decide in code how things should be animated in game depending on the state of the game.

As a short example, my first project at Ubisoft was developing a tree based animation system: Animators would create, in a tool, a decision tree for character X that would decide, based on gameplay parameters set by a gameplay programmer (speed, height, gender, health, you name it) which blend of animations should be applied to X. Also, this particular blend of animations was also authored by an animator via the tool, and again it would specify how to generate a pose from a set of animations, modulated by a set of gameplay variables. Developing the tools, runtime systems, gameplay interfaces, and a way to transform, load and use all that data was my responsability.

There are many other different kinds of such systems in big game engines, but most share that specific characteristic that you are working for artists and gameplay programmers and both will very often be looped in your design decisions. At Rockstar, I work on physically based animation and other procedural animations systems and they all share that characteristic.
To summarize, I think the task / challenges of an animation programmer is to understand and find solutions to production problems, understand and implement the artistic vision of an animation director while constantly innovate to offer him/her creative leeway.
And of course, things gotta run fast, so you'll have to make use of your knowledge of data structures, mathematics, multiprocessing to make sure your systems can ship a game.