Videos
Description
There are 3 big issues on moving animations on client:
- local player walking and idle animations
- creatures being pushed diagonally
- creatures on screen appears to be dashing/teleporting to next tile when walking
The first two can be fixed to work almost like real tibia 10.98, and the fixes are different things.
The third I don't know how to solve.
My guess is that creatures that aren't the local player are being drawn with wrong position or wrong speed and then when the creature reach the next tile position on server side the creature position on client side is refreshed (you can see that Troll's name and health bar teleports too, so its not a problem on skipping frames, its skipping positions) without the sprite reaching it.
I've seen that the information sent from server to client is just the oldPos and the newPos, on client the sprites are rendered using the oldPos + newPos + gettingStepDuration() + totalPixelsWalked (something like that) and I verified the getStepDuration() formula from client sources and server sources and they look almost the same thing... I'm kind of lost here
Edit:
I've counted frames and it looks like 5 frames are being used and then the creature teleports to the next tile and reset to the first frame.
To Reproduce
See monsters or players walking on screen
Expected behavior
A smooth and continuous movement without skipping positions.
Environment
- Latest OTClient
- Protocol 10.98
- Windows 10
Additional context
I fixed the local player walking and idle animation issue using ninjalulz's solution and fixed the pushing diagonal laggy issue (https://i.gyazo.com/412d93e4a799cdc93fd098c04001d7e2.mp4) setting the factor from getStepDuration() (in creature.cpp in client sources) to 1.
Videos
https://streamable.com/2xek1
https://streamable.com/wmv6e
https://ezgif.com/split/ezgif-1-1c80fb2cf982.gif
Description
There are 3 big issues on moving animations on client:
The first two can be fixed to work almost like real tibia 10.98, and the fixes are different things.
The third I don't know how to solve.
My guess is that creatures that aren't the local player are being drawn with wrong position or wrong speed and then when the creature reach the next tile position on server side the creature position on client side is refreshed (you can see that Troll's name and health bar teleports too, so its not a problem on skipping frames, its skipping positions) without the sprite reaching it.
I've seen that the information sent from server to client is just the oldPos and the newPos, on client the sprites are rendered using the oldPos + newPos + gettingStepDuration() + totalPixelsWalked (something like that) and I verified the getStepDuration() formula from client sources and server sources and they look almost the same thing... I'm kind of lost here
Edit:
I've counted frames and it looks like 5 frames are being used and then the creature teleports to the next tile and reset to the first frame.
To Reproduce
See monsters or players walking on screen
Expected behavior
A smooth and continuous movement without skipping positions.
Environment
Additional context
I fixed the local player walking and idle animation issue using ninjalulz's solution and fixed the pushing diagonal laggy issue (https://i.gyazo.com/412d93e4a799cdc93fd098c04001d7e2.mp4) setting the factor from getStepDuration() (in creature.cpp in client sources) to 1.