Ich habe dies nicht implementiert (es kann also Probleme geben, die ich nicht sofort sehe), aber ich dachte, ich würde versuchen zu helfen.
Folgendes hast du gesagt:
Client A sendet eine Eingabe bei T0
Der Server empfängt Eingaben bei T1
Alle Kunden erhalten die Änderung bei T2
Bei T2 jedoch befindet sich Client A unter Verwendung der Client-Vorhersage an einer Position, die T4 entspricht.
Es wäre wahrscheinlich nützlich, in Bezug auf die Serverzeit zu denken. Es ist (wahrscheinlich) sehr ähnlich wie die Interpolation funktioniert.
Jeder Befehl wird mit einer Serverzeit gesendet. Diese Serverzeit wird zu Beginn eines Matches ermittelt, indem der Server-Tick abgefragt wird, um die Ping-Zeit zu kompensieren. Auf dem Client haben Sie Ihre eigene lokale Tickanzahl und jeder Befehl, den Sie senden, wird in Server-Ticks konvertiert (eine einfache Subtraktionsoperation).
Außerdem rendert der Client immer "in der Vergangenheit". Sie gehen also davon aus, dass die Welt, die der Client sieht, beispielsweise 100 ms hinter der Zeit des Servers liegt.
Formulieren wir also Ihr Beispiel mit der Serverzeit (mit S bezeichnet).
Der Client sendet eine Eingabe bei T0 mit der Serverzeit S0 (was meiner Meinung nach wirklich "Client-Darstellung der Serverzeit minus Interpolationszeit" ist). Der Client wartet nicht auf die Antwort vom Server und wechselt sofort.
Der Server empfängt Eingaben bei T1. Server ermittelt die maßgebliche Position des Clients zur Serverzeit S0, die vom Client angegeben wird. Sendet das an den Kunden.
Der Client erhält die maßgebliche Position bei T2 (noch mit Angabe der Serverzeit S0). Der Client protokolliert vergangene Ereignisse (wahrscheinlich nur eine Warteschlange aller unbestätigten Vorhersagen).
Wenn sich die vorhergesagte Position / Geschwindigkeit / was auch immer der Server an S0 zurücksendet von dem unterscheidet, was der Client an S0 gespeichert hat, handhabt der Client dies irgendwie. Entweder, indem Sie den Player auf die vorherige Position zurücksetzen oder die vorherige Eingabe erneut simulieren, oder vielleicht etwas anderes, woran ich nicht gedacht habe.