Konsolen-Entwickler-Bericht Nr. 3

Hallo zusammen!

Da sind wir wieder mit einer weiteren Ausgabe des Konsolen-Entwickler-Berichts! Diese Woche befassen wir uns mit mehreren LOD-Typen, der Bedeutung der LOD und ihrer Wichtigkeit für die Performance.

LOD steht für „Level of Detail“ (Detailstufe), und es gibt für viele Objekte in PUBG verschiedene LODs. Je nach Situation wird eine mehr oder weniger hohe Detailstufe genutzt, um die optimale Balance zwischen Performance und qualitativ hochwertiger Grafik zu erreichen und das bestmögliche Spielerlebnis zu bieten. Im Allgemeinen nutzt PUBG 3 verschiedene Detailstufen: LOD 2, LOD 1 und LOD 0. Letztere ist davon die Stufe mit den meisten Details. Je mehr Details dargestellt werden, desto größer die Einbußen bei der Performance. Auch wenn die Performance wichtig ist, müssen wir hart daran arbeiten, durch eine geringere LOD keine negativen Auswirkungen auf das Gameplay zu haben.

Eine Instanz, bei der Ihr LODs vermutlich in Action gesehen habt, ist der „Knetmasse-Look“ einiger Gebäude, wenn man sie während des Fallschirmsprungs aus der Ferne betrachtet. Das ist die erste und geringste gezeigte Detailstufe. Zu Beginn eines jeden Matches können auch Gebäude im näheren Umfeld so aussehen, denn es müssen viele verschiedene Objekte gleichzeitig dargestellt werden. Jedoch wird ihre Darstellung so bald wie möglich auf LOD 0 (höchste Detailstufe) umgestellt. Wie schnell dies geschieht, hängt jedoch stark von der genutzten Hardware ab.

Auch bei den Charakteren werden drei verschiedene LODs genutzt: Mesh LOD, Bone LOD und AnimNode LOD. Zunächst möchten wir die Mesh LOD und die Bone LOD kurz erläutern. Danach stürzen wir uns auf den Fokus dieses Konsolen-Entwickler-Berichts, der AnimNode LOD.

Mesh LOD und Bone LOD

Die Mesh LOD bestimmt die Detailstufe des Charakter-Modells. Wenn ein Charakter in Eurer Nähe ist, wird er mit LOD 0 (höchste Detailstufe) gerendert. Je weiter weg er ist, desto geringer ist die Detailstufe. Dies geschieht in Schritten: LOD 2, LOD 1 und LOD 0. Im Allgemeinen werdet Ihr diesen Übergang nicht bemerken, denn er findet in einer Entfernung statt, bei der die Charaktere auf dem Bildschirm sehr klein sind.

Die Bone LOD arbeitet genauso, legt aber die Anzahl der Knochen fest, die während der Charakter-Animationen aktiviert werden. Das heißt, dass das Spiel bei großen Entfernungen keine detaillierten Animationen zeigen muss, welche die Performance verschlechtern würden. Eine geringere Detailstufe bedeutet, dass weniger Eckpunkt- und Knochendaten berechnet werden müssen. Das führt wiederum zu einer besseren Performance im Vergleich zu nicht optimierten LODs.

Weitere Detailstufen (LOD 3, 4 usw.) würden die Performance durch weniger Rechenzeit für die CPU definitiv noch weiter verbessern, doch leider wäre die zusätzliche Belastung von Speicher, IO usw. bei der Konsolen-Hardware sehr hoch. Daher kann dies nicht genutzt werden.

AnimNode LOD
Für Animationen gibt es ebenfalls Detailstufen, die sogenannten AnimNode LODs. Aber wir können sie nicht so umfassend einsetzen wie die Mesh LOD oder die Bone LOD, da die visuellen Änderungen sehr auffällig wären.

Animationen wie das Laufen, das Blicken zur Seite oder das Zielen durch das Visier der Waffe sind alles „Skelettsteuerungen“ eures Charakters. Die Animationen, die sich auf das Skelett des Charakters beziehen, werden alle pro Körperteil berechnet, d. h. für Arme, Beine, Hals usw. sind lauter unabhängige Berechnungen nötig.

Wir haben eine zusätzliche LOD-Methode entwickelt, welche die Größe des Charakter-Modells ins Verhältnis zum gesamten Bildschirm setzt. Es wird dann automatisch und dynamisch eine geringere AnimNode LOD für jene Charakter-Modelle ausgewählt, die in so großer Entfernung sind, dass man die visuelle Veränderung nicht bemerkt. Das führt zu einer verbesserten Performance, ohne dass Gameplay und visuelles Erlebnis merklich beeinträchtigt werden.

Bitte bedenkt, dass in den folgenden Grafikbeispielen dieses Entwicklerberichts Effekte durch Änderung der AnimNode LOD zu sehen sind, die eigentlich in großer Entfernung stattfinden. Wir zeigen sie hier nur zur Verdeutlichung aus der Nähe. Wenn Ihr PUBG spielt, gibt es Änderungen der AnimNode LOD nur in großen Entfernungen.

Hier ist das erste Beispiel dafür, wie die AnimNode LOD im Spiel arbeitet:

(Die oben abgebildete Grafik stammt aus einer Entwicklungsumgebung und dient nur der Erläuterung. Die AnimNode LOD wird während des Spielens von PUBG nur in großer Entfernung deaktiviert.)

In dieser Abbildung seht Ihr die Unterschiede zwischen aktivierter und deaktivierter AnimNode LOD.

Wenn die AnimNode LOD komplett deaktiviert ist, werden für den Charakter keine Animationen dargestellt, was zu einer verbesserten Performance führt. Ist ein Spieler jedoch geduckt, muss für den Unterkörper die AnimNode LOD aktiviert sein, sonst würde man ihn stehend sehen.

Im nächsten Beispiel haben wir in unserer Entwicklungsumgebung die AnimNode LOD bei einem Charakter-Modell deaktiviert, das 10 % des gesamten Bildschirms füllt, damit Ihr noch besser versteht, was passiert, wenn die AnimNode LOD deaktiviert ist.

Im Spiel wird die AnimNode LOD nur deaktiviert, wenn das Charakter-Modell so klein ist, dass Ihr den Unterschied nicht sehen könnt.

(Die oben abgebildete Grafik stammt aus einer Entwicklungsumgebung und dient nur der Erläuterung. Die AnimNode LOD wird während des Spielens von PUBG nur in großer Entfernung deaktiviert.)

Ihr fragt Euch vielleicht auch, was passiert, wenn man einen Feind aus großer Entfernung durch ein Visier sieht.

Wenn man einen Spieler in der Ferne anvisiert, füllt das Charakter-Modell, das man sieht, einen größeren Teil des Bildschirms, daher wird die AnimNode LOD dynamisch eingeschaltet, basierend auf dem Verhältnis von Größe des Charakter-Modells und dem gesamten Bildschirm. Dadurch wird sichergestellt, dass das Gameplay nicht beeinträchtigt wird.

Folgend seht Ihr ein Beispiel zur Verdeutlichung, was passiert, wenn das Charakter-Modell nur bis zu 10 % des gesamten Bildschirms einnimmt. Die AnimNode LOD wurde in diesem Beispiel in unserer Entwicklungsumgebung abgeschaltet.

(Die oben abgebildete Grafik stammt aus einer Entwicklungsumgebung und dient nur der Erläuterung. Die AnimNode LOD wird während des Spielens von PUBG nur in großer Entfernung deaktiviert.)

Noch mal: Beim Spielen von PUBG werden solche Änderungen nur vorgenommen, wenn das Charakter-Modell sehr weit entfernt ist und nur einen kleinen Teil des Bildschirms einnimmt. Dadurch fällt das im Spiel nicht auf.

AnimNode LOD und Performance

Die folgende Grafik zeigt die aktivierte AnimNode LOD (blau) und die deaktivierte AnimNode LOD (rot), wenn sich 10 Charaktere in der Nähe befinden. Mit deaktivierter AnimNode LOD verbessert sich die Performance also um ca. 10 %.

*Die Ergebnisse beziehen sich auf eine Messung mit der Xbox One X.

Je mehr Charakter-Modelle, deren AnimNode LOD abgestellt werden kann, sich in der Nähe befinden, desto größer der Zuwachs bei der Performance im Vergleich zur aktivierten AnimNode LOD.

Zusammenfassend kann man sagen, dass manche Animationseffekte von Charakter-Modellen abgeschaltet oder abgeschwächt werden, wenn diese sich in so großer Entfernung befinden, dass man den Unterschied nicht sieht. Dadurch wird weniger Rechenzeit benötigt und die Performance verbessert.

Vielen Dank fürs Lesen! Wir sehen uns in der Ausgabe des Konsolen-Entwickler-Berichts.

Das PUBG Konsolen-Team

Discuss this article
Share this article