Hmm. I guess I had thought that would lead to choppiness. I was projecting my own project and thinking for something like a Sonic project where the character moves around 8 pixels a frame, it doesn't really work.
It all depends on how many frames you've got in your cycle and how many pixels your animation move between two frames. I did it with my appleman walk cycle:
, which is 8 frames for the cycle and moves by 2 pixels every frame.
Ideally,
in-game, it moves at 1px/frame (60 fps) -- which means it actually stays in place for two frames, then move 2 pixels away, then wait for 2 frames, etc. It has also a "charge" move where it moves at 2 px/frame (thus updates position on screen with every frame) for some steps and then continuously slows down back to 1px/frame.
The movement then goes that way:
F0: move by 1.5 pixels is deferred, render frame A at (100,100) (defer = +1.5)
F1: move by 1.5 pixels is applied, render frame B at (102,100) (defer = +1.0)
F2: move by 1.4 pixels is applied, render frame C at (104,100) (defer = +0.4)
F3: move by 1.4 pixels is deferred, render frame C at (104,100) (defer = +1.
F4: move by 1.3 pixels is applied, render frame D at (106,100) (defer = +1.1)
F5: move by 1.3 pixels is applied, render frame E at (108,100) (defer = +0.4)
F6: move by 1.2 pixels is deferred, render frame E at (108,100) (defer = +1.6)
...
Visually, this "step, pause, step, step, pause, step, step, pause ..." is perceived as a continuous movement and (imho) is more coherent than if I had some sliding of the character at varying speed while keeping the animation speed constant.
Of course, slowing down the walk to e.g. 1/2 pixel / frame would start showing its limit and if such a large range of speeds is desired, I'd need another animation (and likely, the apple wouldn't tip-toe the same way it walks). Same for going much into a faster move (you can't increase your walking speed indefinitely without changing the way you move your limbs). So it offers *some* flexibility, but it's not a silverbullet for shooting all the situations.