Ich habe viele Entitäten auf der Client-Seite, die simuliert werden (ihre Geschwindigkeiten werden pro Position zu ihren Positionen hinzugefügt), und ich lasse sie sich selbst tot rechnen. Sie senden Updates darüber, wo sie zuletzt gesehen wurden und wie sich ihre Geschwindigkeit ändert. Dies funktioniert großartig und andere Spieler sehen diese Arbeit zu finden. Nach einer Weile beginnen diese Spieler jedoch nach einiger Zeit zu desynchronisieren. Dies liegt an der Latenz.
Ich würde gerne wissen, wie ich zwischen Zuständen interpolieren kann, damit sie an der richtigen Position zu sein scheinen. Ich weiß, wo der Spieler zuletzt gesehen wurde und wie schnell er ist, aber wenn er auf den zuletzt gesehenen Zustand interpoliert, bewegt sich der Spieler tatsächlich rückwärts. Ich konnte die Geschwindigkeit für andere Kunden überhaupt nicht verwenden und sie einfach in die richtige Richtung "lerp", aber ich denke, dies würde zu zackigen Bewegungen führen. Was sind die Alternativen?
quelle
Wenn du sagst:
Ich denke, dass Ihr Problem möglicherweise mehr damit zu tun hat, dass Ihre Uhren aus dem Takt geraten, als mit Latenzproblemen. Wenn es sich um eine Latenz handelt, sollte sie zu Beginn genauso schlecht sein wie in 10 Minuten. Wenn eine Spieluhr etwas schneller als die andere läuft, gibt es einige seltsame Jitter-Artefakte, die mit der Zeit immer schlimmer werden. Ein Client könnte in Zukunft simulieren, wenn die vorhandenen Pakete vom Server ankommen, wird er den Client zurückziehen und dazu führen, dass Entitäten herumspringen. Führen Sie weitere Tests durch, um dies herauszufinden.
Wenn nicht synchronisierte Spieluhren tatsächlich ein Problem darstellen, müssen Sie Ihre Update-Schleife sehr genau untersuchen und sicherstellen, dass jedes Update auf der verstrichenen Spielzeit basiert (entweder fest oder variabel) und dass das Spiel -time wird mit etwas wie der Wanduhr vorgerückt (keine Renderzeit oder andere Variablen). Gaffer hat einige gute Artikel dazu, und es gibt hier eine anständige Frage, die über feste oder variable Zeitschritte spricht . Hoffe das hilft.
quelle