tu stockes dans un tableau les positions reçue à X intervalle de temps
Temps 1(ms) = 500
X = 50
Y = 50
Temps 2 = 525
X = 70
Y = 40
Temps 3 = 550
X = 80
Y = 35
dès que tu as 2 paquets, tu interpoles Temps 1 & Temps 2 , le delta entre les 2 est de 25ms
tu as donc 25ms pour interpolé les positions
reprend le code plus haut & colle ca en bas :
Code : Tout sélectionner
ServerTimeA.l = 500 ; donnée recue par le serveur
*PositionTimeA.sVector2f = createVector2f(50,50) ; donnée recue par le serveur
ServerTimeB.l = 525
*PositionTimeB.sVector2f = createVector2f(70,40)
*PositionInterpolated.sVector2f = createVector2f(0,0) ; resultat
ClientTime.l = ServerTimeA ; le client viens de ce connecter , on se cale sur le temps serveur
ClientTimeTo = ServerTimeB ; on à 2 temps, on peu interpolé
ClientRealTime.l = 0 ; temps réel du client en ms
ServerRealTime.l = ServerTimeB
StartTime.l = ElapsedMilliseconds() ; temps réel du pc local
deltaTime.l = ServerTimeB-ServerTimeA ; Temps serveur entre 2 paquets
Repeat
If StartTime < ElapsedMilliseconds()
StartTime = ElapsedMilliseconds() + 1
ClientRealTime +1
EndIf
timeFloat.f = ClientRealTime / deltaTime
lerpVector2f(*PositionInterpolated, *PositionTimeA, *PositionTimeB, timeFloat)
Debug "TEMPS CLIENT : " +Str(ServerTimeA+ClientRealTime)+ " position = " +StrF(*PositionInterpolated\x)+":"+StrF(*PositionInterpolated\y)
Until ClientRealTime => ServerTimeB-ServerTimeA
; on passe à un paquet plus recent
; etc...
