How did you achieve this amount of fluidity with the critters' animation (when they bend for a turn)? Is is procedural?
They're rendered procedurally, yes. Although I did not get a chance to generate them procedurally like I wanted to, so there's just like ten varieties that I made. Each critter sprite is a polygon that I manually entered into code, and the vertices of the polygon are mapped to the coordinate systems of the nodes in the chain physics model, interpolating between the two nearest nodes using some crazy algorithm that's hard to explain.
The chain is a bunch of circles of varying sizes that are kept tangent to each other. By default they follow verlet physics. When they are following a path, they ignore velocity and just move towards the next circle (following an arc) like a snake. I have a system for smoothly interpolating between the verlet and snake physics that I am proud of.