Ich habe den Valve- Artikel über Multiplayer-Netzwerke gelesen, der aus Yahn Berniers Artikel von 2001 über Latenzkompensationsmethoden bei der Entwicklung und Optimierung von Client / Server-In-Game-Protokollen stammt . Ich erstelle ein Echtzeit-Multiplayer-Spiel mit einem node.js-Server, der über socket.io mit Clients verbunden ist, und habe einige Fragen zu den unten aufgeführten Prinzipien:
Objektinterpolation
[Interpolation] verhindert die nervöse Bewegung, zu der dies normalerweise führen würde, indem Serveraktualisierungen gepuffert und dann mit den gleichmäßig interpolierten Lücken wiedergegeben werden. Es kann auch vor Störungen schützen, die durch Paketverlust verursacht werden.
Client-seitige Vorhersage
Vorhersage ist die Vorstellung, dass der Client die Auswirkungen der Aktionen des lokalen Spielers vorhersagt, ohne darauf zu warten, dass der Server sie bestätigt. Der vorhergesagte Status einer Entität wird anhand von Serverbefehlen getestet, wenn sie ankommen, bis entweder eine Übereinstimmung oder eine Nichtübereinstimmung festgestellt wird.
Lag Compensation
Verzögerungskompensation ist die Vorstellung, dass der Server die Latenz eines Spielers verwendet, um die Zeit bei der Verarbeitung von [Benutzereingaben] zurückzuspulen, um zu sehen, was der Spieler sah, als der Befehl gesendet wurde. In Kombination mit der Vorhersage kann die Verzögerungskompensation dazu beitragen, die Netzwerklatenz so weit zu verringern, dass sie aus Sicht eines Angreifers nahezu beseitigt wird.
Gelten die Prinzipien für TCP genauso wie für UDP und gibt es Unterschiede in der Implementierung? Ich kann sehen, dass die Entitätsinterpolation nicht vor Paketverlust schützen müsste, aber das ist es auch.
Kann ich mit UDP und Node.js sogar zwischen einem Server und einem Webbrowser und umgekehrt kommunizieren?
Sind diese Prinzipien seit mehr als einem Jahrzehnt in Gebrauch oder ist eine andere Technologie aufgetaucht?
Jede Hilfe wäre sehr dankbar.