Special: Counter-Strike (Shooter)

von Joerg



Die Netzwerktechnik der Source Engine
Entwickler:
Publisher: Vivendi Universal
Release:
kein Termin
Spielinfo Bilder  

Vor mehreren Tagen posteten verschiedene andere CS-Seiten einen Artikel von Valve über die Netzwerktechnik der Source Engine. Hierbei wurde auf den englischen Original-Artikel verwiesen. Da nicht jeder User mit dem englischen Text etwas anfangen kann, hat sich euer Team von Counterstrike.de die Mühe gemacht den kompletten Artikel zu übersetzen und in unseren FAQs zu verewigt. Natürlich könnt ihr die Übersetzung auch hier auf der folgenden Seite lesen.



 Source Multiplayer Networking



Das Source Multiplayer Netzwerk

Übersicht

Auf der Source Engine basierende Multiplayer Spiele benutzen eine Client/Server Netzwerk Architektur. Üblicherweise ist der Server ein dedizierter Host, welcher das Spiel betreibt und für die Welt Simulation, Spielregeln und Spielereingaben zuständig ist. Ein Client ist der mit dem Server verbundene Computer des Spielers. Der Server und der Client kommunizieren miteinander indem sie sich in hoher Frequenz (20-30 Pakete pro Sekunde) kleine Datenpakete zusenden. Der Client bekommt die aktuellen Weltdaten vom Server und generiert daraus Grafik- und Audio-Ausgaben. Der Client nimmt des Weiteren Eingaben der angeschlossenen Eingabegeräte (Maus, Tastatur, Mikrofon) auf und sendet diese dem Server zur weiteren Verarbeitung. Alle Clients kommunizieren nur mit dem Server und nicht untereinander (wie es z.B. bei einer Peer-to-Peer Verbindung der Fall wäre). Im Unterschied zu einem Einzelspieler-Produkt, muss also ein Multispieler-Produkt mit einer großen Bandbreite an Problemen, der paket-basierenden Netzwerkkommunikation fertig werden.

Die Bandbreite des Netzwerkes ist limitiert. Daher kann der Server nicht jede kleine Veränderung der Weltdaten an alle Clients versenden. Stattdessen macht der Server Momentaufnahmen (Snapshots) der aktuellen Weltdaten und versendet dann diese an alle Clients. Die Datenpakte brauchen (abhängig von der Verbindungsgeschwindigkeit) eine bestimmte Zeit um vom Server zum Client und zurück zu kommen (der sogenannte Ping). Das bedeutet, die Weltdaten des Clients sind immer inaktueller als die Weltdaten des Servers. Natürlich brauchen auch die Daten des Clients eine bestimmte Zeit bis sie beim Server ankommen und bearbeitet werden können. Dazu kommt das jeder Client verschiedene Netzwerkanbindungen/-geschwindigkeiten hat. Auch abhängig von im Hintergrund laufendem Traffic (z.B. Teamspeak) und der Framerate des Clients (desto höher die Framerate desto mehr Daten). Dieser Zeitunterschied zwischen den Clients und dem Server verursacht natürlich logische Probleme, die sich bei zunehmender Netzwerk Latenz vergrößern. In rasanten Action Spielen kann schon eine Verzögerung von wenigen Millisekunden ein stockendes ("laggy") Spielgefühl verursachen. Dies macht es auch schwierig andere Spieler zu treffen, oder mit beweglichen Objekten zu interagieren. Neben Limitierungen der Bandbreite und der Netzwerk Latenz, kann es auch passieren das Datenpakete vom Server zum Client, oder umgekehrt nicht ankommen.



Um mit all diesen Belangen der Netzwerkkommunikation fertigzuwerden, benutzt die Source Engine verschiedene Techniken. Mit diesen können verschiedene Probleme behoben, oder zumindest weniger sichtbar für den Client gemacht werden.

 
Basis Netzwerk
Objekt Interpolation
Eingabe Voraussage
Lag Kompensation
Net Graph


                                            

Kommentare

Es gibt noch keine Kommentare zu diesem Thema!
schrieb am