One of the challenges with game development is motivating yourself to keep doing good work with constant changes in the design of a game. Sometimes features do not fit with the rest of the game, sometimes a lack of time means you cannot finish the feature to the level of quality needed. Sometimes the feature is dropped due to a major design pivot.
This happened with the Ghost that was originally conceived as an enemy for the cancelled XCOM fps. This enemy did not fit The Bureau so it was cut during a game design pivot.
What you need to realize is that everything that you make, even if it’s cut, is an opportunity to learn and grow.
The Ghost was an enemy that was basically a flying space snake that would do sneak attacks at the player and then fly away to hide. The challenge being to spot it before it hurt you or your squad. It had a design were audio cues were important and the visuals were made so that it would work well in interior spaces but not so well in outdoor spaces.
The space snake needed another procedural solution to be realized fully and since it was basically a snake it was made up of a long joint chain with another chain rotating around that main chain. One problem with this is how do you maintain the shape of the snake as it is moving through space, you can do it with regular animations and blend spaces but the results will not make that creature feel connected with the world.
In this case we thought we could use IK for the main chain of the creature and around each link in the chain there were child joints that were rotating around them.
With that IK chain we could solve the problem of connecting the snake chain in the world. We recorded the path of the snake in world space and for every chain joint we kept a minimum distance between each joint that was defined by the skeleton. This meant that the snake was pulling the trail behind it and an IK chain was transforming from world space to local space at runtime.
Since the main joint chain of the snake was separated from the visuals the animators could animate the child joints and make that snake rotate around its main chain. This was a complicated animation procedure where the animators had set up a custom script that allowed us to make the joints follow curves that were drawn.
Additionally when they wanted to take control of the snake for the attacks and spawn/despawn animations they could take full control over the main joint chain and blend out the procedural world chain IK.
Importantly the chain IK needs to take the distance between the chain links dynamically from the animations so that any compression or stretch is supported. Also it is important that when the chain IK is blended out it is still tracking the joints. This is to ensure that the animated moves primes the chain with good data so transitions into and out of the procedural chain works well.