After tweaking the script and setting time_smooth to 0.99 I get almost constant difference in position.
It looks like its not the engine thats causing the difference, but my script.
This is the update counter for each player (separately)
if(my.movement_input != 0 || vec_dist( my.x , my.last_sent_position_x ) > 32)
{
if(my.update_time_passed >= 20)
{
predict_position( 200 );
send_skill( my.predicted_current_x, SEND_VEC | SEND_ALL );
vec_set( my.last_sent_position_x , my.predicted_current_x );
my.update_time_passed = 0;
}
my.update_time_passed += time_step;
}
And this is the update I send immediately after the player changes input (because first update will come after 200ms.)
if(my.old_movement_input != my.movement_input)
{
my.old_movement_input = my.movement_input;
predict_position( my.latency );
send_skill( my.predicted_current_x, SEND_VEC | SEND_ALL );
}
my.latency is stored and send on each client to the server upon connecting.
Any toughts what is causing the constant difference?
The first update I send with event is off by 8.x quants. The others are 18.8x quants. (I think its ahead of my actual player,btw. Cant see that fast)