Timings, etc. have already been figured out for gameplay balance, so I have to keep strict to most of them (like firing and melee attacks).
However, thankfully, and unlike other people I’ve had the misfortune to have to collaborate with, I work closely together with the lead programmer of Wrack, and we’ve implemented cool stuff like non-strict blending for weapons. For instance, when you draw out the shotgun, the last 10 frames or so are just recoil and kickback for transitioning, but the engine can skip these or only use a portion under certain conditions (if you want to fire, or if you’re running).
Although I have to say, the best thing we’ve implemented is the camera bone, which allows me to alter the camera in a nearly 1:1 fashion. I move a bone in 3ds Max, I rotate it, etc. and its animation is transferred over to the in-game camera. It’s a feature that gives so much more depth to first-person animations… I’m a person who hates the “sliding camera” syndrome in first-person games.
I don’t program the features themselves; I’m not a programmer by any means. But I have a large amount of input on how the systems are designed and work. One thing to know is that we use DirectX 9 libraries extensively (our model file format is .X too). Animation blending is directly drawing from these libraries, and they’re limited to only two blending tracks (as far as I’m aware). This has the annoying effect of causing the animation to snap if you’re doing something that will change the sequence while it’s already transitioning; the only case we have is if you’re standing still and it transitions to/from the rare idles or the draw, during those 0.25 seconds, if you start to move, it will snap.
The Source engine has 3-way blending code to prevent this sort of stuff.
I guess restrictions could be coded in for this specific problem but we have more important stuff on our collective plates.
Other collaborative things include procedural animation: for example, the first-person guns “lagging behind” your mouse movements, other things that move automatically/parametrically (like the Hyperblade’s cubes that spin faster depending on your kill chain).
Overall it’s a lot of big and small things that come together, and attention to detail! :)