Einsatz von Latenzkompensierungsverfahren bei der Realisierung von verteilten interaktiven grafischen Echtzeitanwendungen
Bearbeiter
- Lukas Kalinowski
Betreuende Professoren
- Erster betreuender Professor Prof. Dr. Martin Rumpler
- Zweiter betreuender Professor Prof. Dr. Stefan Naumann
Kurzdarstellung
Der Fortschritt der Computertechnologie und das Aufkommen des Internets ermöglichen es, interaktive grafische Echtzeitanwendungen zu entwickeln und über ein Netzwerk zu verteilen. Bei der Übertragung von Daten kommt es ständig zu Verzögerungen bei der Netzwerk-kommunikation. Dies stellt sich vor allem als Problem bei Echtzeitanwendungen dar, da bei diesem Anwendungstyp Änderungen sofort wahrgenommen werden und Verzögerungen folglich den Anwendungsablauf beeinträchtigen.
In dieser Arbeit werden Verfahren untersucht, um Latenz zu kompensieren und so einen flüssigen Ablauf der Echtzeitanwendung zu erhalten.
Zunächst werden Grundlagen zu Netzwerktechnologien erläutert. Dabei wird vor allem der Frage nachgegangen, wie Latenz entsteht, welche Arten der Latenz existieren und welche Auswirkungen Latenz auf verteilte interaktive grafische Echtzeitanwenden hat. Danach wer-den unterschiedliche Verfahren, um der Verzögerung entgegenzuwirken zunächst theoretisch erläutert. Mit Hilfe einer Netzwerk-Bibliothek wird ein Beispiel Netzwerk-Game basierend auf einer Client/Server Topologie entwickelt, in welchem in einer virtuellen Umgebung eine Schneeballschlacht zwischen Spielern ausgetragen wird. Anhand dieser Beispielanwendung werden mehrere Verfahren implementiert und evaluiert. Dabei werden die Latenz und weitere Faktoren künstlich erhöht, der Spielablauf beobachtet und ausgewertet. Es hat sich herausgestellt, dass jedes Verfahren eine Kehrseite besitzt und folglich immer ein auf die Anwendung zugeschnittener Kompromiss gefunden werden muss. Es stellte sich heraus, dass mit dem Rückgang der Reaktionsgeschwindigkeit der Anwendung ein Ausgleich der Verzögerung erreicht werden konnte, was zur Erhöhung der Spielbarkeit führte.
Die daraus gewonnenen Erkenntnisse könnten für die Entwicklung von künftigen Netzwerk-Games von Bedeutung sein.
Umgesetzte Verfahren
Abspielverzögerung und Interpolation
Bei diesem Verfahren wird anders als bei “Dead Reckoning” die Ende-zu-Ende-Latenz erhöht.. Der Fehler, der bei „Dead Reckoning” aufgrund der Extrapolation entsteht, gibt
Anlass für ein solches gegensätzliches Verfahren. Wie der Name bereits vermuten lässt, werden zugesandte Spiel-zustände nicht sofort abgespielt, sondern eine gewisse Zeit lang gepuffert. Zur Rekapitulation, bei Dead Reckoning wurden Benutzeraktionen direkt ausgeführt und es war ungewiss, ob beim entfernten Spieler in Zukunft die extrapolierte Position mit der des lokalen Spielers übereinstimmt.
Bei “Abspielverzögerung und Interpolation” puffert der Client mindestens zwei Spielzustände und interpoliert von einem zum anderen, bis ein weiterer Spielzustand ankommt. Indem beim Client das Abspielen von Spieleraktionen in der Zeit verzögert wird, entsteht für den Client keine Ungewissheit, da immer neue Spielzustände zur Verfügung stehen.
Spielzustände können bei “Abspielverzögerung und Interpolation” ebenfalls wie bei Dead Reckoning in einer niedrigen Frequenz versandt werden. Wenn allerdings Spielzustände vom Sender in Zeitabständen zum Client geschickt werden, würden die Spieleraktionen ruckelartig vonstattengehen. Je mehr Zeit zwischen den Spielupdates vergeht, desto sichtbarer wird der Effekt. Dies würde das Spielverhalten enorm beeinträchtigen. Um dem entgegenzuwirken, gibt es mathematische Verfahren, um zwischen zwei Werten über einen Zeitraum zu interpolieren.
Der Server ist den Clients immer von der Zeit und den Spielzu-ständen her voraus und daher funktioniert das Interpolationsverfahren, da immer Werte zum interpolieren vorhanden sind.
Der Client fährt den Pfad des Servers ab, indem die Position und Orientierung interpoliert werden.
Time Warp
Eine Technik um Konsistenz zu bewahren und Fairness in Netzwerk Games zu steigern wird im Deutschen als Verzögerungskompensierung (engl. “Lag Compensation”) bezeichnet. Der Server spult bei dieser Technik Events zu einem Zeitpunkt zurück, zu welchem eine Spieleraktion ausgeführt wurde. Dies ist aufgrund von Latenz bei der Übertragung von Paketen zwischen dem Client und dem Server notwendig. Der Spieler führt eine Aktion basierend auf dem, was er auf dem Bildschirm wahrnimmt, aus. Wenn ein Schütze, der eine hohe Latenz besitzt, einen Schuss auf einen anderen Spieler abfeuert, dauert es eine Zeit lang, bis die Nachricht zum Server gelangt und diese vom Server aus alle anderen Teilnehmer erreicht. In dieser Zeit könnte sich der betroffene Spieler jedoch bereits an einer andere Stelle bewegt haben und der Schuss würde aus der Sicht des betroffenen Spielers danebengehen. Dabei war sich der Schütze doch sicher, dass er genau gezielt hatte und der Schuss den anvisierten Spieler hätte treffen müssen. Dies könnte zu Frustration beim Benutzer führen. Es stellt sich die Frage, warum die Spieleraktion erst an den Server geschickt werden muss und warum die Clients nicht direkt untereinander kommunizieren können. Das Problem ist, dass den Clients nicht vertraut werden kann aufgrund von Cheating. Zudem besitzt nur der Server eine konsistente Version der virtuellen Umgebung. Das heißt, dass nur die Ereignisse, die der Server wahrnimmt gelten. Daher kam beim Server das Verfahren Time Warp zum Einsatz, um die Fairness zu erhöhen. Dabei hält der Server von jedem Spieler eine Position History aufrecht. In regelmäßigen Zeitintervallen werden die Position vom Spieler und ein Zeitstempel in dieser Position History abgelegt.
Das Verfahren Time Warp wurde anhand unterschiedlich langer Verzögerungen begutachtet. Die Bewertung erfolgte durch zwei Benutzer auf zwei Computern. Es wurde eine flache virtuelle Umgebung mit einer Wand designed. Ein Spieler wurde vor die Wand platziert und sollte auf den anderen Spieler zielen und einen Schuss abfeuern. Dabei wurde getestet, ob der Schneeball den anderen Spieler getroffen hat.
Es wurden mehrere Testdurchläufe durchgeführt. Dabei hat sich der blaue Spieler in Rich-tung der Wand bewegt. Wenn er ins Visier des braunen Spielers kam, wurde ein Schuss abgefeuert. Die Resultate sind in der darunterliegenden Tabelle zu sehen.
Daraus lässt sich schließen, dass das Verfahren Time Warp trotz enormer Verzögerungen erfolgreich funktioniert. Der Nachteil des Verfahrens ist, die späte Trefferverzeichnung beim betroffen Spieler. Dieser fühlte sich hinter der Wand sicher, als er getroffen wurde.
Interessen Management
Das Aura-, Fokus- und Nimbus-Modell betrachtet nach den Raum um ein Objekt herum. Dabei wird davon ausgegangen, dass Informationen
von Objekten in unterschiedlichen Medien wie zum Beispiel Audio, Video, Grafik und Text-kommunikation produziert werden. Folglich können die Spieler untereinander wahrgenom-men werden. Dabei geht es immer um die eigene Wahrnehmung und darum, von anderen wahrgenom-men zu werden. Die Aura eines Spielers wird als Sphäre dargestellt und definiert den Be-reich, in welchem andere Spieler potentiell wahrgenommen werden können. Im visuellen Fokus Bereich nimmt der Spieler andere Spieler in einem zunehmenden Detailierungsgrad wahr. Während der visuelle Nimbus die Sphäre beschreibt, innerhalb welcher der Spieler von anderen Spielern aus allen Richtungen wahrgenommen werden kann. Der Audio Focus be-schreibt, wie beim Menschen, den Gehörsinn eines Spielers. In diesem Bereich kann der Spieler innerhalb dieses Mediums nach Geräuschen von anderen Spielern lauschen. Der Audio Nimbus hingegen gibt den Bereich an, in welchem Geräusche wie zum Beispiel Schrit-te oder Sprache produziert und von anderen Spielern gehört werden können. Abhängig von der Stärke der Wahrnehmung in einem Medium kann ein sogenannter Interes-senlevel berechnet werden. Je höher der Interessenlevel, desto mehr Informationen werden über den wahrgenommenen Spieler benötigt.
Im konkreten Fall erhalten somit nur die Spieler innerhalb der Sphäre die vom Server physikalisch berechneten Daten des serverseitigen Spielers. Alle anderen Spieler befinden sind außerhalb der Aura des aktuellen serverseitigen Spielers und erhalten keine Daten.
Der gelbe und schwarze Spieler sind innerhalb des Kreises vom grünen Spieler und erhalten Spielzustände von ihm. Spieler Braun und Rot befinden sich außerhalb des Kreises. Daher erhalten beide keine Spielzustände vom grünen Spieler und der grüne Spieler auch nicht vom braunen und roten Spieler. Der grüne Spieler würde den braunen Spieler dort sehen, wo er als letztes noch für den grünen Spieler von Interesse war. Wenn der braune Spieler wieder an einer anderen Stelle in den Kreis eintritt, sieht der grüne Spieler ihn von seiner alten Position zur neuen „springen“. Dies ist jedoch nicht weiter tragisch, da die Aura eines Spielers relativ hoch (zum Beispiel 60 Meter) gesetzt werden kann und der braune Spieler sowieso nur sehr undeutlich zu sehen ist.