Advertisement

Lerping Jitter

Started by March 23, 2017 04:34 AM
0 comments, last by Kylotan 7 years, 8 months ago

I've been stuck all day on this unfortunately.

Problem in action: https://i.gyazo.com/a13cdb3c2f318bec1559ca8011e2763b.mp4

I'm basically simulating a 10/second positional update from the server: It updates the new_pos Vector2 with x, y values 10 times a second. Game is running at 60 fps and I am trying to interpolate the character movement.

And, the lerping code:


	if new_pos.x:
		var lerpspeed = 0.5
		set_pos(Vector2(lerp(get_pos().x, new_pos.x, lerpspeed), get_pos().y))

I'm using the Godot engine by the way (GDScript language)

I've been searching these forums and read that my lerpspeed somehow needs to be dynamic and clamped between 0.1 - 1. I'm just not entirely sure how to go about doing that. Thanks in advance

The problem is that lerp gives you a single value, once. You need to make a note of when you receive each position, and lerp between the previous state and the new state, every update, for a chosen timespan, with the interpolation value changing each time accordingly.

This comes up almost every day, and the answer given by hplus0603 in another thread should illustrate this approach: https://www.gamedev.net/topic/687361-slow-response-in-state-interpolation-when-time-gap-is-big-between-client-and-server/#entry5336637

This topic is closed to new replies.

Advertisement