Echtzeit-Multiplayer-Spielprinzipien für TCP und Node.js

8

Ich habe den Valve Artikel zur Multiplayer-Vernetzung gelesen, der von Yahn Berniers 2001er Zeitung mit dem Titel "Pinnwand" übernommen wurde Latenzkompensationsmethoden im Client / Server In-Game-Protokollentwurf und -optimierung . Ich mache ein Echtzeit-Multiplayer-Spiel mit einem node.js-Server, der über socket.io mit Clients verbunden ist, und ich habe ein paar Fragen zu den folgenden Prinzipien:

Entitätsinterpolation

  

[Interpolation] verhindert die zitternde Bewegung   führt normalerweise dazu, dass Server-Updates gepuffert und dann wieder abgespielt werden   mit den dazwischen glatt interpolierten Lücken. Es kann auch schützen   gegen Störungen durch Paketverlust.

Clientseitige Vorhersage

  

Vorhersage ist die Vorstellung, dass der Klient die Auswirkungen der   Aktionen des lokalen Spielers, ohne darauf zu warten, dass der Server sie bestätigt.   Der vorhergesagte Zustand einer Entität wird wie sie gegen Serverbefehle getestet   ankommen, bis entweder eine Übereinstimmung oder eine falsche Übereinstimmung festgestellt wird.

Lag Compensation

  

Lag compensation ist die Vorstellung, dass der Server die Latenz eines Spielers nutzt   Zurückspulen Zeit bei der Verarbeitung [Benutzereingabe], um zu sehen, was   Spieler sah, als der Befehl gesendet wurde. In Kombination mit Vorhersage   Verzögerungskompensation kann dazu beitragen, die Netzwerklatenz auf den Punkt zu reduzieren   fast aus der Perspektive eines Angreifers zu eliminieren.

  • Greifen die Prinzipien für TCP genauso wie für UDP zu, und gibt es Unterschiede bei der Implementierung? Ich kann sehen, dass die Entity-Interpolation nicht gegen Paketverlust schützen muss, aber das ist es.

  • Kann ich mit UDP und Node.js sogar zwischen einem Server und einem Webbrowser kommunizieren und umgekehrt?

  • Seit das Papier über ein Jahrzehnt alt ist, werden diese Prinzipien noch verwendet oder ist eine andere Technologie erschienen?

Jede Hilfe wäre sehr willkommen.

    
RobotEyes 11.07.2012, 15:39
quelle

1 Antwort

2
  • Greifen die Prinzipien für TCP genauso wie für UDP zu, und gibt es Unterschiede bei der Implementierung? Ich kann sehen, dass die Entitätsinterpolation nicht gegen Paketverlust schützen muss, aber das ist es.

Obwohl Sie sich nicht mit Paketverlusten auseinandersetzen müssen, müssen Sie mit längeren Laufzeiten rechnen. TCP ist langsamer als UDP und du musst das im Echtzeit-Multiplayer mildern. Ich würde denken, dass diese Prinzipien immer noch auf einer fundamentalen Ebene gelten.

  • Kann ich mit UDP und Node.js sogar zwischen einem Server und einem Webbrowser kommunizieren und umgekehrt?

Im Allgemeinen noch nicht. Zumindest nicht ohne Browser-Erweiterung oder Plugin - WebSockets verwenden TCP. Das heißt, WebRTC (und genauer gesagt, die PeerConnection API) kommt. Wenn Datenkanäle implementiert werden, sollte die UDP-Kommunikation theoretisch möglich sein.

  • Seit das Papier über ein Jahrzehnt alt ist, sind diese Prinzipien noch in Gebrauch oder ist eine andere Technologie erschienen?

Ich wäre sehr überrascht zu hören, dass sie nicht mehr benutzt werden - der Artikel, den Sie zitiert haben, ist für Spieleprogrammierer praktisch notwendig. Dito für neue Techniken, die nicht erscheinen, obwohl ich seit einigen Jahren die Entwicklungen in diesem Bereich nicht aufmerksam verfolgt habe.

    
psema4 12.07.2012, 15:50
quelle