Descriptive Problem Summary:
When you move at the same time as another atom, both diagonally, you see the other atom stuttering.
(I am using Any Macro, step World Loop, tile movement, glide size and animate_movement=SLIDE_STEPS)
This only happens if u don't have LONG_GLIDE in the appearance_flags
movement_mode doesn't matter
local or hosted world doesn't matter
Sent the test-case link on the dms.
Numbered Steps to Reproduce Problem:
Don't have LONG_GLIDE in the appearance_flags
Move together with another atom diagonally and see the stuttering of said atom.
Expected Results:
Atom to not stutter.
Actual Results:
Atom stutters.
Does the problem occur:
Every time? Or how often? Yes
In other games? Yes
In other user accounts? Yes
On other computers? Yes
When does the problem NOT occur? Never
Workarounds:
Have LONG_GLIDE in the appearance_flags
ID:2672753
Apr 19 2021, 4:14 pm (Edited on Apr 19 2021, 5:50 pm)
|
|||||||||||||
Not a bug
| |||||||||||||
In response to Lummox JR
|
|
This isn't a problem just with the fixed rate on the movement because it also happens with players... Try hosting the world and someone else connecting, then both of you move on the diagonal. The same stutter happens.
Also the usr on login is just for this project, not on my main. |
Yes, everything is stuttering, not just the NPCs, because of the movement calculations being wrong. You're timing your movement and setting the glide such that you're inevitably going to end up in situations where the glide is too high.
|
I have decided to adjust the glide "overdrive" a bit in situations where a glider is more than a tile behind. Previously it was always doubling the glide speed and that felt really wrong. Now it will avoid ceil() and instead try to do a proportional increase with a little extra juice.
|
The reason LONG_GLIDE fixes your problem is that your math doesn't take diagonals into account, so it won't function without it. If you're going to turn LONG_GLIDE off you need to adjust the next move time according to the glide speed you've set and the actual time it will take to get there.
This eliminates most of the stutter, but some small amount of jank is still there.
BTW, I also noticed abuse of usr in Login(). You should probably be on the lookout for that in your project.