It’s a very small sprite, 32x32. The base viewport resolution is 512x288. I’m not changing the sprite’s scale. And even running the game while keeping it at its native tiny resolution, the sprite appears to jitter. (Though hard to tell with a tiny window size like that.)
The sprite will move relatively smoothly with these settings:
Vsync = OFF
Pixel Snap = OFF
Stretch Mode = Canvas_Item
Aspect = literally doesn’t matter, same jitter in all modes
Pixel Snap makes it significantly worse, sprite is freaking out all over the place. Vsync makes minimal to no difference as far as i can tell.
But no matter how much i play with the settings, the “jumpiness” will persist. My sprite moves smoothly for a couple of seconds and then BANG, shakes back and forth for several seconds. Until it calms down again for a few seconds, and then ZAM, back to shivering. It repeats in a cycle.
Apparently subpixels (and i hardly understand what that means?) can cause a problem. So one suggestion is trying to round the pixels to full numbers before getting applied to velocity. Ok. Tried that. Doesn’t make a difference. Though it’s very possible that i’m not applying the rounding correctly (or misunderstanding what exactly you’re supposed to round, i’m still at a beginner level as far as coding goes.)
I mean the rounding doesn’t appear to do anything, seeing how there’s still decimals in the velocity’s printout.

So maybe my movement/input code is just trash, and that’s the root of the problem?
func move_state(delta):
var input_x = Input.get_axis('LEFT','RIGHT')
var input_y = Input.get_axis('UP','DOWN')
var input_axis = Vector2(input_x, input_y)
if input_axis != Vector2.ZERO:
var round_x = move_toward(velocity.x, input_x * MAX_SPEED, acceleration * delta)
var round_y = move_toward(velocity.y, input_y * MAX_SPEED, acceleration * delta)
round(round_x)
round(round_y)
velocity = Vector2(round_x,round_y)
else:
var round_x = move_toward(velocity.x, 0, acceleration * delta)
var round_y = move_toward(velocity.y, 0, friction * delta)
round(round_x)
round(round_y)
velocity = Vector2(round_x,round_y)
print(velocity)
velocity.normalized()
move_and_slide()
move_animation()