

Willkommen im vierten und letzten Teil meines Developer Diarys. Abschließend möchte ich euch etwas darüber erzählen wie die Networking Physics in Black Prophecy funktionieren.
Und wie funktioniert das Ganze jetzt im Netzwerk?
Physikalische Objekte im Netzwerk zu kontrollieren ist in der Theorie recht einfach. Alle Controller Inputs werden im ersten Schritt an den Server übertragen. Auf dem Server werden die Controller Daten an die entsprechenden Simulationsobjekte weitergeleitet und dort entsprechend vorangegangener Erklärungen in Kräfte bzw. Drehmomente umgesetzt. Alle Controller Daten werden vom Server an den Client zurückgesendet. Der Physik Update Loop sorgt nun auf Client und Server für entsprechende Geschwindigkeits-, Position und Orientierungsänderungen.
Serverseitig werden die erzeugten Daten nach vorher festgelegten Regeln an die verbundenen Clients übertragen. Hierbei können Updateraten variieren, z.B. in Abhängigkeit der Spielerposition zum betrachteten Objekt. An dieser Stelle ist Experimentieraufwand notwendig, um bei möglichst niedriger Datenübertragungsrate auf den Clients ein ansprechendes Ergebnis zu erzielen. Der jeweilige Spieler selbst hat selbstverständlich die höchste Priorität, um ein überzeugendes Spielgefühl zu erreichen. Der Client befindet sich, solange er keine Physikdaten vom Server erhält in einer Extrapolations- bzw. Prediction- Situation.
Sobald das erste Update vom Server empfangen wird vergleicht der Client seine Daten mit den Serverdaten. Sind die Abweichungen gering, dann kann er seine eigenen Daten mit den Serverdaten zu einem festgelegten Grad mischen. In dieser Situation interpoliert der Client. Sind die Abweichungen groß verwendet der Client den empfangenen Serverdatensatz. Im ungünstigen Fall kommt es zum sogenannten Snapping. Gleichmäßig gute Datenübertragung vorausgesetzt konvergiert die Clientsimulation mit der Serversimulation. Neben echter Netzwerkphysik benutzt Black Prophecy Animationstechniken. Dies sind deterministisch abgespeicherte Bewegungsabläufe, mit denen unter anderem große Objekte wie Schlachtschiffe bewegt werden. Solche Bewegungsabläufe werden auf Server und Client gleichzeitig gestartet.
Schlussendlich noch ein kurzer Blick auf das Debugging. Wie man oben gesehen hat gibt es viele Einflussfaktoren, die Simulationsresultate und Performance beeinflussen. Damit man nicht über einer Blackbox rätselt bedient man sich recht einfacher aber effizienter Mechanismen, die Kontrolle und Fehlersuche erleichtern. Debug 3D Line Rendering dient zum Beispiel der Anzeige von Kollisionsgeometrien, Massenzentren und anderen Physikinformationen. So kann man unter vielem anderen Auswahl und Gestaltung von Kollisionsgeometrien überprüfen. Die vorab veröffentlichten Screenshots haben hier etliche Beispiele gezeigt.
Debug Text Rendering kann benutzt werden um Physikparameter, wie maximale Kräfte, Massen usw. konkret in Zahlen auszugeben. Neben dem 3D Rendering kann zum Debugging auch 2D Rendering benutzt werden. Hier gibt es diverse Möglichkeiten sich mit Hilfe von 2D Graphen Input- und Ausgabedaten von Simulationsobjekten im Zeitverlauf zu veranschaulichen. So kann überprüft werden, wie sich Parameteränderungen in Echtzeit auswirken. All diese Mechanismen dienen dazu möglichst genau festzustellen, was denn da eigentlich passiert. Jede Parameteränderung hat in der Regel direkte ‚logische' Auswirkungen sowie Seiteneffekte, denen man nur durch genaue Analyse auf die Spur kommt.
Abhandlungen über Physik im Allgemeinen sowie speziell in Spielen können sehr dicke Bücher füllen. Selbstverständlich werden hier nicht alle Geheimnisse und Tricks die in der Implementierung Anwendung finden enthüllt. Insbesondere bezüglich der Netzwerkimplementierung gäbe es noch viel zu erzählen. Auch über Probleme und letztendlich gefundene Lösungen bzw. Kompromisse.
Nicht ohne Stolz sei darauf hingewiesen, dass es sich hier um einen echten First- bzw. Third Person MMO Shooter handelt. Also keine serverseitigen Würfelspielchen, sondern echte physikalische Hit Detection. Von daher lasst euch überraschen.
Ich hoffe dieser kurze Einblick führt den interessierten Leser zu einer gewissen Vorstellung, wie Physik im Black Prophecy Universum funktioniert.