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 |