ID:1426965
 
Applies to:Dream Maker
Status: Open

Issue hasn't been assigned a status value.
glide_size has rounding issues. Either grant glide_size floating point accuracy or use a different method to display gliding, like the one used by animate().

This is what glide_size does when you try to set it to a decimal value. It is rare for glide_size to actually come out to be an integer if you're using this formula designed to achieve perfectly smooth, constant-speed tile movement:
//  move_delay is the time (in 1/10 seconds) between movements.
// Dir is the direction of movement; the pixel distance traveled
// is different for cardinal vs diagonal movements.
if(move_delay)
var distance = ((Dir & (Dir - 1) ? sqrt(2) : 1) * 32
glide_size = distance * world.tick_lag / move_delay
else glide_size = 0

This is moving at the same speed as above, but using animate() for gliding instead of glide_size. It's much smoother (no stutter) and capable of any movement speed at any framerate.

The glide_size variable is obsolete. It's limited to integers only, meaning objects can only move at pixels at a time. "But it's not possible to move less than a pixel! How would you even display that!?"
This is what moving less than a pixel per frame looks like. All the gifs here are at 60 frames per second (though LICEcap was probably recording them at more like ~30 FPS, which is a much more feasible framerate for a BYOND game anyway). Moving at less than a pixel per frame simply translates to not moving every frame, as a positive side-effect of preserving decimal accuracy, or, in the case of animate(), calculating the variables with respect to time.
Not sure if I'm either supporting or hurting your idea or request, but I want to share my glide demo which shows smooth gliding despite the inaccurate rounding.

http://www.byond.com/developer/FIREking/SmoothTileMovement
In response to FIREking
It's supporting my request. Your demo is expectedly jumpy when you set the speed to most non-integer values because you're setting src.glide_size to src.speed. I don't know what values you were using in glide_size to support your "despite the inaccurate rounding" claim.
It doesn't skip around on my machine.

Edit: Sorry, it doesn't skip when I use integer values, but I haven't tried non integer values, which is your post here!