@icxon My procedural animation is very simple. When I was modelling a character, I have made separate meshes for each part of body. I didn't have enough time to set everything properly, so I simply set their origins the way meshes will behave like bones when rotating. And then I used sin() function in code to make an animation for each single mesh. There is also a special coefficient for scale of the animation. It changes with players speed. That is why it looks smooth. Originally I wanted a footprint to appear when foot touches snow, but for saving some time, I simply made a timer node that spawns the footprint on timeout. There is a node that contains all the footprints, and it has a script that moves them down. When the footprint is under the ground, the parent node deletes it