The concept was to have a character that moved like a snake, with a large body and compression mechanisms. Like a long softbody which compresses itself in tight spaces and expands when there's enough room.
Rig
We quickly agreed on a procedural rig made in Unity. A set of Gameobjects linked together and moving according to the head.
At first we tried a mechanism based on physics, using physics joints. But the feeling was not there, the bones logically didn't following the path of the head but were just dragged like a rope. So we choose to register past positions and orientations of the head, and make every single bone take that path one after another. We enqueue previous positions based on displacement distance.

The white dots are the bones of the beast in this pic, and the video here illustrate the past data saving.
https://www.youtube.com/watch?v=XGq7U8yoSQc
In every grey dot of the video, we saved position, rotation, velocity and pass time of the head. The positions and rotations of the bones of the beast are then linearly interpolated between the past data points. Interpolated because we needed the bones to be placed at any custom distance of the head, due to the design of the beast.
Beast body compression
We wanted the beast to have a pseudo-soft-body reaction to its limited space, to emphase the closed space.
Before the final beast design was acted, when the beast was still composed of a few large body parts, we created the body compression by scaling the sprites. Every single bone were using raycasts, like antennas, to seek the dimensions of the space forward and determine how much a body part should shrink. This solution was dropped when the final design made of multiple small independent round parts came out.
To get the final compression and decompression effect, we finally attached every part of the beast to one of a procedural bone of the rig by using slider joints.
We could then play with the system :). And sadly for me the giant snake fox dragon didn't make it to the final game :(

https://www.youtube.com/watch?v=1M4sK9i__AA
Controls
The beast follows a target computed by the control system.

The red dot in this image is the beast move target.
As we wanted the game to have touchscreen compatibility, we implemented a virtual joystick to control the target. Like the ones you see on mobile video games, without a visual representation to keep the UI clean (and because it takes time to do a great one).
Tap & Longpress mechanisms are also due to the touchscreen compatibility.
Wind zones
Wind zones concept arrived at T minus 3 hours. We coded something quickly to break the boredom of long tunnels, using simple triggers that modify head velocity when the beast crosses them.
Finally
We definitively could avoid a lot of trouble by choosing not to go with a custom system and accommodate with a simpler joints-and-integrated-physics system, and embrace what would have emerged from that. The difficulties came mainly from the vagueness of our game design, which made us proceed step by step without clear objectives and needs.
-MAKING-OF-