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.
Antworten:
quelle
Sie sollten diesen Artikel über lesen Echtzeit-Multiplayer-Spiele in HTML5 lesen, der von Sven Bergstrom auf der Website buildnewgames.com veröffentlicht wurde. Er spricht über die gleichen Dinge und verwendet Node.JS. Ich habe selbst etwas Ähnliches vor. Ich recherchiere gerade mehr über die clientseitige Vorhersage und Interpolation und dergleichen, bevor ich versuche, den Rest davon in Angriff zu nehmen.
Ich glaube, es ist definitiv möglich, dies mit Socket.IO und Node zu tun, aber die Technologie ist noch neu, so dass es wenig Dokumentation und wenig bis gar nichts in Bezug auf die Anleitung zur Implementierung geben wird. Ich würde empfehlen, das zu tun, was ich tue, und das Thema in abstrakten, hochrangigen Begriffen sehr detailliert zu studieren und dann zu versuchen, es selbst umzusetzen.
quelle
Ich glaube, die Technologie ist ziemlich ähnlich. Die Konzepte hängen auch nicht davon ab, welche Sprache Sie verwenden oder ob Sie UDP oder TCP verwenden. Ich habe hier eine sehr detaillierte Erklärung des Ganzen geschrieben: http://www.gabrielgambetta.com/fpm1.html , einschließlich hübscher Diagramme :)
quelle