'Lag' und wie man ihn minimiert
June 01, 2016
Jeder Multiplayer-Spieler kennt es: “Lag”. Wenn man den gegnerischen Spieler zu spät sieht oder man sich sicher ist, ihn hundertprozentig getroffen zu haben, aber das Spiel anders entscheidet: Der Schuldige ist klar “Lag”.
In “Multiplayer Game Programming: Architecting Networked Games” erklären die beiden Autoren, wie Multiplayer-Spiele programmiert werden müssen, damit möglichst wenig “Lag” auftritt. “Lag” (der technisch korrekte Ausdruck ist eigentlich “latency” bzw. “Latenz”) ist die technisch notwendige Verzögerung, die durch die Dauer der Übertragung der Informationen von den Konsolen und PCs der Spieler zum Server und zurück entsteht. Solange die Technik die Informationen nicht in weniger als 10ms o. ä. übertragen kann, wird es immer “Lag” geben. Die Aufgabe der Spiele-Entwickler ist es, den auftretenden, fühlbaren oder sichtbaren “Lag” zu minimieren.
Hierzu haben sich verschiedene Techniken etabliert, die in diesem Buch gut erklärt und vorgestellt werden. Als Implementierungssprache wird C/C++ verwendet. Teilweise ist es für meinen Geschmack ein wenig zu maschinennah bzw. manchmal zu detailliert, wie z. B. bei Netzwerkprotokollen und C++ ist ja sehr “verbose” und es gibt viel “Boilerplate”-Code zu sehen. Aber im Großen und Ganzen ist das Buch sehr lesenswert.
Im Buch fehlt allerdings die abstraktere Sicht der Protokolle ein wenig, also die Vogelperspektive auf Protokolle, wie man diese designed, evtl. sogar Protokollverifizierung. Auch kann man oft den technisch notwendigen “Lag” hinter Animationen verstecken. Hier müssen Netzwerk-Programmierer, Spiel-Designer und Grafik-Designer allerdings zusammenarbeiten. Wenn in Multiplayer-Spielen eine Animation stattfindet, wie z. B. oft beim Wurf einer Handgranate, dann ist das ein Versuch den Spieler vom “Lag” abzulenken. Hier fehlt im Buch noch ein übergreifender Abschnitt über die “best practices” in diesem Bereich.
Aber zum jetzigen Zeitpunkt ist das Buch die beste Einführung in die Programmierung von Multiplayer-Games, daher 5 von 5.
- Sanjay Madhav, Josh Glazer
- Multiplayer Game Programming: Architecting Networked Games
- Addison-Wesley
- 2015
Siehe auch die Renzension bei Amazon.