PlanetSide 2: Operation: Make Faster Game – Video Episode 1

OMFG! Operation: Make Faster Game!

Was passiert gerade hinter den verschlossenen Türen des PlanetSide2 Development Teams? Überzeugt euch selbst bei einem virtuellen Trip nach San Diego in die Studios von Sony Online Entertainment und besucht die Entwickler von PS2.

Das Video ist das erste aus einer Serie von Dokumentarfilmen, die Spielern einen Blick hinter den Vorhang der PS2 Entwicklung erlauben und es ermöglichen, die Menschen hinter dem Spiel kennen zu lernen.

Es gewährt exklusive Einblicke in die technologischen Herausforderungen und die kreativen Ansätze, die mit der Operation Making Faster Game umgesetzt werden.

Untenstehend und im Anhang findet ihr darüber hinaus ein Statement von Ryan Elam – Technischer Leiter PS2 – der die Einzelheiten der Operation erklärt und auf die Herausforderungen und Lösungsansätze im Detail eingeht.

 

Hallo Leute,

seit meiner letzten Meldung zum Thema Optimierung ist schon einige Zeit vergangen. Ich kann euch versichern, dass wir von nun an wesentlich häufiger als zuvor von uns hören lassen werden.

WIESO HABT IHR DAS NICHT SCHON VORHER GEMACHT?

Wir haben den Großteil der letzten beiden Jahre damit verbracht, PlanetSide 2 unter die Lupe zu nehmen und Spielelemente zu überprüfen, die zu langsam waren. Sofern wir Fehler gefunden haben, die schnell behoben werde konnten, haben wir das auch getan. Wenn wir grundlegende Optimierungen gefunden haben, die kein hohes Risiko mit sich bringen, haben wir direkt an ihnen gearbeitet. Zum größten Teil aber – wenn man bedenkt, dass wir seit dem Beginn des PS2-Tech-Tests live waren – haben wir unsere Optimierungen so sicher wie möglich gehalten. Optimierungen bedeuten häufig, den Code neu zu organisieren, der bereits ausgiebig getestet wurde. Das wiederum heißt, dass in diesem Prozess durchaus etwas schief gehen kann, obwohl wir es mit aller Kraft zu verhindern versuchen. Viele der von uns gefundenen Optimierungen wären zu jenem Zeitpunkt der Entwicklung einfach viel zu zeitaufwändig gewesen.

WIESO MACHT IHR DAS JETZT?

PlanetSide 2 ist an einem Punkt in seiner Entwicklung angelangt, an dem wir glauben, den Kern des Spiels umgesetzt zu haben. Designer haben von nun an eine Vielzahl von Möglichkeiten, Inhalte zu erstellen, Künstler haben ein Mindestinstrumentarium, um sich künstlerisch zu betätigen, die Benutzeroberfläche funktioniert gut und ist verständlich, wir haben ein richtiges Tutorial (kein „Willkommen im Spiel *BOOM*!“ mehr) und Spieler auf der ganzen Welt haben Zugang zu PlanetSide 2 und können das Spiel nach Möglichkeit in ihrer Muttersprache spielen.

Wir haben einen günstigen Zeitpunkt erreicht, was Smed ebenfalls erkannt hatte und sagte: „Kümmert euch darum, jetzt!“ Wir alle wollten uns genug Zeit nehmen, um einige dieser umfangreicheren Änderungen mit großer Sorgfalt vorzunehmen. Smed hat auch erkannt, dass ein Ego-Shooter mit niedriger Framerate einfach keinen Spaß macht, egal wie viel Arbeit Design- und Art-Abteilungen investieren, um das Spiel zu einem unvergesslichen Erlebnis zu machen.

Im Zuge dieser Bekanntgabe bekamen all unsere Teams die Freiheit, zeitintensive Probleme anzugehen. Was für euch am Ende dabei herausspringt, ist eine erkennbar höhere Framerate UND zusätzliche Vorteile, die aufgrund einiger dieser Architekturfortschritte möglich sind. Jedes einzelne Mitglied des Teams (ganz im Ernst) sucht nach Möglichkeiten, um das Spiel zu beschleunigen, sodass wir euch ein besseres Spielerlebnis bieten können.

GENUG DES VORSPIELS, KOMM ENDLICH ZUR SACHE!

Ich werde euch jetzt einige relativ technische Begriffe erklären. Falls ihr ein Mitglied der Vanu seid, könnt ihr die Erklärungen überspringen, da ihr ohnehin schon alles wisst. Solltet ihr zur Terranischen Republik gehören, fragt euren C.O., falls ihr etwas nicht verstehen solltet. Falls ihr immer noch Verständnisprobleme habt, seid ihr vermutlich eine schwere Angriffseinheit … ist schon ok. Falls ihr dem Neuen Konglomerat angehört, dann ist das alles vermutlich nur ein Trick des Establishments, um euch zu unterdrücken. Lest einfach trotzdem weiter.

Physik
———
Dieses Spiel bietet Physik-Szenen, die in ihrer Komplexität konkurrenzlos sind. Während in einem normalen Spiel bis zu einhundert verschiedene Formen umherfliegen, für die Kollisionsberechnungen durchgeführt werden, gibt es bei PlanetSide 2 manchmal Szenen mit mehr als tausend Formen! Die gewaltigen Panzerschlachten verlangen den Physik-Kollisionsberechnungen einiges ab!

Für Operation: Spielgeschwindigkeit werden wir viel Zeit damit verbringen, die Physikkomplexität mit Hilfe des sogenannten „Adaptiven Detailgrads“ neu zu strukturieren. Das bedeutet, dass wir den Arbeitsaufwand des Simulators basierend auf der Framerate und dem Abstand zum Objekt verringern. Im Prinzip bekommt die Physik-Simulation weniger zu tun, indem Objekte, die weit weg von euch sind, weniger simuliert werden müssen.

„Moment mal, Ryan!“, mögt ihr jetzt komischerweise zu euch selbst sagen. „Wird das Verringern des qualitativen Ergebnisses der Simulation nicht zu einer schlechteren Simulation führen?! Ich liebe die geniale Physik von PlanetSide 2 und möchte sie nie mehr missen! Die Physik in PlanetSide 2 ist die beste aller Zeiten!“ Ach was, übertreibt doch nicht … Na gut … Ich nehme das Kompliment an. Um aber eure Frage zu beantworten: Wir wissen es einfach nicht.

Manches von dem, was wir tun, ist experimentell. Einige der führenden Köpfe der Spieleindustrie versorgen uns mit großartigen Ideen dazu, wie wir Leistungsprobleme lösen können. Coden besteht jedoch zu 60 % aus Wissenschaft und zu 60 % aus Kunst. Einige der Ideen, von denen ich euch heute erzähle, befinden sich noch im Entwicklungsstadium und werden möglicherweise nicht wie beschrieben oder überhaupt nicht im fertigen Spiel erscheinen.

Mit dem Adaptiven Detailgrad hoffen wir, nicht-simulierte Frames zu emulieren und so alle möglicherweise auftretenden Simulationsfehler zu beheben. Dafür werden wir aber sehr viel Arbeitszeit und Koffein benötigen und anschließend nochmal mehr davon, um sicherzustellen, dass die Änderungen gut genug sind. Auswirkungen auf die Framerate bei Prozessoren mit mehr als 4 Kernen wird es kaum geben. Diese Änderungen werden jedoch IMMENSE Auswirkungen auf Probleme der Physik-Engine haben. Außerdem wird sich bei Prozessoren mit 2-4 Kernen unter Umständen ein massiver Anstieg der Framerate während großer Schlachten feststellen lassen.

Overhead-Manager
————————
Wenn ihr euch derzeit in großen Schlachten befindet, kostet es uns viel Zeit, diese kleinen Dreiecke (wir nennen sie Doritos und werden nicht einmal dafür bezahlt … könnt ihr das fassen?) über den Köpfen der Charaktere erscheinen zu lassen. Sie mögen unscheinbar aussehen, dahinter verbirgt sich aber ein kompliziertes System, das sicherstellt, dass wir euch die Dreiecke zeigen, auch wenn der dazugehörige Charakter nicht zu sehen ist, und dass wir sie nicht zeigen, wenn ihr sie nicht sehen sollt und tausend andere Regeln. Die Überarbeitung des gesamten Systems hat zu Verbesserungen geführt. Damit ist das System nun effizienter und ändert zum richtigen Zeitpunkt nur das, was wirklich notwendig ist. Wir nehmen auch Überarbeitungen des Rendering-Codes vor, sodass das System ebenfalls viel schneller sein wird.

Spieler-Updates
——————-
Je mehr Spieler ihr um euch herum habt, desto mehr Zeit braucht der Spiel-Client, um die Informationen über diese Spieler zu aktualisieren, sei es nun Töne, die sie erzeugen, Geschosse, die sie abfeuern, Statistiken, die sie ändern etc. Euer Client braucht eine gewisse Zeit pro dynamischer Einheit, um sicherzustellen, dass diese Einheiten auch tatsächlich dynamisch sind. Um diesen Vorgang effizienter zu gestalten, updaten wir nur eine gewisse Anzahl pro Frame und überlegen genau, ob ein vollständiges Update wirklich notwendig ist. In frühen Tests hat sich daraus ergeben, dass bei weniger als 10 % aller dynamischen Einheiten ein Update tatsächlich nötig ist, obwohl das Update derzeit bei allen Einheiten vorgenommen wird. Ich großen Schlachten wird sich dies als sehr nützlich erweisen.

Animations-Updates
————————
PlanetSide 2 hat ein sehr robustes Animationssystem mit allen Schikanen, die man sich denken kann. (außer Ragdoll … ja genau … wieso wurde das noch nicht gemacht? Mal ernsthaft?!) Wir animieren wesentlich mehr als die meisten anderen Entwickler und tun dies mithilfe einiger äußert komplexer Zustandsnetzwerke. Für unsere Animations-Optimierungen suchen wir nach Möglichkeiten, um eine geringere Anzahl von Animationen pro Frame verarbeiten zu müssen, die darüber hinaus ebenfalls weniger komplex sein sollen aber dennoch weiterhin qualitativ hochwertig bleiben. Das ist nicht ganz einfach und erfordert enge Zusammenarbeit zwischen dem Art- und dem Code-Team. Wir sind aber überzeugt davon, ein gutes Ergebnis zu erhalten.

Benutzeroberfläche
—————–
Unsere Benutzeroberfläche ist ausgesprochen komplex. Es mag einfach aussehen, (und zwar absichtlich … es ist tatsächlich viel aufwändiger, etwas einfach erscheinen zu lassen!) aber im Hintergrund laufen zehntausende Codeberechnungen, um diese Daten fortlaufend auf den neuesten Stand zu bringen. Nachdem wir jetzt aber über ein Jahr Zeit hatten, die Funktionalität der Benutzeroberfläche zu prüfen, sind uns Bereiche aufgefallen, in denen wir den Mehraufwand pro Frame verringern können. Wir sind dabei, die Mini-Karte und die Benutzeroberfläche zu optimieren, um die Zeit pro Frame auf bis zu 10 % des jetzigen Werts zu reduzieren.

Außerdem upgraden wir die Middleware für die Benutzeroberfläche auf die aktuelle Version. Diese beinhaltet Optimierungen, die die Zeit für das Aufrufen der Benutzeroberfläche zusätzlich verringert.

Zusätzlich entkoppeln wir den Teil der Benutzeroberfläche, der für die Datenverarbeitung und die Aufteilung der Darstellung auf drei verschiedene Sektionen des Bildschirms zuständig ist. Diese Entkopplung ermöglicht es uns, die verschiedenen Teile unabhängig voneinander zu aktualisieren, sodass wir nicht jeden Abschnitt des Bildschirms nach jedem Frame updaten müssen.

Verdeckung/Sichtbarkeit
———————–
PlanetSide 2 besteht aus einer riesigen Welt. 64 km² randvoll mit mehr als 100.000 Objekten und tausenden Spielern pro Kontinent! Jedes Drahtgitter- (die Polygone, aus denen ein Objekt besteht) und Texturenmodell (das, was wir auf das Drahtgitter zeichnen) muss eurer Grafikkarte im Detail erklärt und anschließend gerendert werden. Wie rendern wir also hunderttausende Objekte pro Frame? Indem wir es NICHT tun! Einfach, oder? Stattdessen teilen wir den Kontinent zuerst auf verschiedene Arten auf und nutzen dann einen komplexen Code, um festzulegen, welche Teilmenge der Objekte ihr tatsächlich sehen könnt. Das ist mit Sichtbarkeit gemeint.
Außerdem möchten wir vermeiden, etwas zu rendern, das sich hinter etwas anderem befindet, sei es nun ein „dynamisches Objekt“ (zum Beispiel eine Person oder ein Patrone, also etwas, das sich verändert) oder ein „statisches Objekt“ (etwas, das sich nicht verändert, zum Beispiel ein Gebäude oder Higbys Meinung). Das ist mit Verdeckung gemeint.

Wir nutzen den Quellcode Umbra von einem Drittunternehmen, der den Großteil der Sichtbarkeit und der Verdeckung für uns übernimmt. Als Teil der Operation: Spielgeschwindigkeit upgraden wir Umbra auf die aktuelle Version, was eine erhebliche Überarbeitung der Sichtbarkeitspfade mit sich bringt, da wir verschiedene Faktoren unseres Core-Clients sowie unserer Core-Tools verändern müssen. Damit wird sich die benötigte Zeit, die für die Sichtbarkeit pro Frame notwendig ist, erheblich verringern. Das bedeutet, je komplexer die Szene ist (beispielsweise eine Basis, in der sich tausende Objekte befinden), desto mehr werdet ihr davon profitieren. Außerdem verfrachten wir die Sichtbarkeit in einen anderen Thread, sodass jene unter euch, die ein Mehrkern-System haben (also die Meisten), zusätzlich davon profitieren werden. AMD-Nutzer werden zudem erheblich von der Parallelisierung der Sichtbarkeitsberechnungen profitieren werden.

Multithreaded Renderer
——————————
Viele PlanetSide 2-Elemente wurden bereits auf mehrere Threads verteilt, aber jeder dieser Threads muss häufig an den Haupt-Thread und den Renderer angeglichen werden. Wir nehmen also den Teil des Renderers, der tatsächlich mit DirectX in Verbindung steht, und erstellen für diesen einen eigenen Thread, genauso wie wir es mit dem Renderer der Benutzeroberfläche handhaben. So hat der Haupt-Thread pro Frame weniger zu tun, sodass sich die Framerate für User mit 4 oder mehr Kernen erhöht.

Weitere Instrumente
—————————
Wir arbeiten daran, sogar noch weitere Möglichkeiten zur Feinjustierung für uns hinzuzufügen. Damit können wir noch genauer sehen, was während großer Schlachten passiert und wo wir den Hebel als nächstes ansetzen müssen.

Ich freue mich außerdem über unsere fortlaufenden Bemühungen, einen Benchmark-Level zu erstellen, einen ganz klassischen, stets gleichen Level-Durchlauf, bei dem die Framerate berechnet wird. Dies ist ein weiteres Beispiel für das Mitspracherecht, welches SOE den Nutzern einräumen möchte. Wir werden euch die Möglichkeit geben, eure Framerate in einer statischen Umgebung berechnen zu lassen, sodass ihr die Rate nach jedem neuen Patch mit einem einzigen Klick prüfen könnt. Ihr bewegt euch innerhalb einer Szene, während wir alle möglichen Kriterien zur Füllrate, den Objektupdate-Zeiten, den Benutzeroberflächen-Zeiten und hunderten anderen Faktoren berechnen. Am Ende seht ihr dann einen Wert, könnt über diesen diskutieren und WIR sehen diesen Wert ebenfalls zusammen mit eurer Hardwarekonfiguration. Die Möglichkeit zu haben, eine statische Szene anzupassen, um Leistungsprobleme ausfindig zu machen, ist ein ENORMER Fortschritt. Schluss mit: „Ich hatte eine Framerate von X in einer Bar in Indar an einem regnerischen Dienstag.“ Jetzt könnt ihr sagen: „Letzte Woche hatte ich eine Punktzahl von 8300, aber diese Woche sind es ÜBER 9000!!!!“

ZUM ABSCHLUSS

Wir werden weiterhin davon berichten, was wir machen und wieso wir es machen. Diese Optimierungen erleichtern uns allen das Leben und wirken sich nicht nur auf Mittelklasse-Rechner aus. Es handelt sich dabei um wesentliche Leistungssteigerungen, die euer Spielerlebnis positiv verändern werden.

Ihr seid ein Teil davon. Fragen sind also stets willkommen.

Ryan Elam – Technischer Leiter PS2