Wöchentlicher Bericht #19 – Engine Upgrade und Optimierung – World War 3 – Official Website
Weekly Report

Wöchentlicher Bericht #19 – Engine Upgrade und Optimierung

08/07/2019

Hallo Soldaten!

Wir wollen euch einen etwas technischeren Überblick darüber geben, was es bedeutet, die Unreal Engine auf eine neuere Version zu ändern, und wie die Optimierung umgesetzt wird, sowie woraus sie besteht. Dieser wird etwas technischer sein, aber wir werden versuchen, ihn verständlich zu halten.

Zuerst einmal ein paar Neuigkeiten von letzter Woche! Wir feierten den 4. Juli mit unseren amerikanischen Freunden auf die bestmögliche Weise – indem wir “Military and Veteran Gamers” mit ihrem 24-Stunden-Ferienstream halfen. Wir haben deren Abzeichen und ihr Waffenemblem dem Spiel hinzugefügt, um deren Sache zu unterstützen. Diese und die neuen “4th of July”-Skins kannst du nun im Spiel sehen. Wir als Unternehmen arbeiten mit verschiedenen Wohltätigkeitsorganisationen zusammen und haben in der Vergangenheit Veteranen und deren Familien unterstützt.

Engine Update

 Im Moment benutzt das Spiel die Unreal Engine 4.19 und tut dies nun seit über einem Jahr. Wir haben die Engine in der Vergangenheit mehrmals aktualisiert, aber da die finale Version näher rückt und wir ein laufendes Spiel zu unterstützen haben, werden diese großen Änderungen schwerer und schwerer. Game Engines sind wahnsinnig kompliziert und erfordern jahrelange Arbeit, aber nicht nur um sie zu machen, sondern auch um sie zu verstehen. Es ist also keine kleine Aufgabe, die Engine zu wechseln – es ist kein einfacher Knopfdruck und dann ist es fertig – viele Basissystem wechseln von Version zu Version, was viel Arbeit und manchmal das komplette Überarbeiten einiger Teile bedeutet, um die neue Technologie besser zu nutzen oder sie sogar richtig funktionieren zu lassen. 

 Darüber hinaus haben wir einige Änderungen an der Engine vorgenommen, um sie an unsere Bedürfnisse anpassen und die auch bei der Umstellung berücksichtigt werden müssen. Unser Team muss vorsichtig sein und zwischen den Schritten viel testen, um zu wissen, welcher Teil problematisch ist und ihn sofort zu korrigieren. 

 Das alles ist absichtlich etwas vage, um sich nicht in Details zu verlieren, aber der Vollständigkeit halber werfen wir einen Blick auf eine der größten Änderungen, die in 4.21 für uns kommen, nämlich den “Replication Graph”.

 Replication ist ein Begriff, der verwendet wird, um zu beschreiben, wie Spiel und Server miteinander kommunizieren – wie Spielerposition, Rotation, Zustand und wie alle Variablen zwischen Spiel und Server und anderen Spielen in einer Runde bewegt werden. In 4.20 hat Epic Games den Replication Graph hinzugefügt, der entscheiden kann, welche Informationen aus welchen Teilen des Levels für dich am wichtigsten sind und wie man am schnellsten an diese kommt. Denke daran: Der Server muss Positionen und Rotationen von Dutzenden Spielern sowie deren Bewegung, Gesundheit, Munition, Treffer berechnen, er muss Kugeln simulieren und Penetrationen von Wänden und Querschläger berechnen. Wir nutzen einige clevere Tricks, um die Datenmenge zu reduzieren, welche zwischen Spielern übertragen wird, aber der Replication Graph hilft dabei sehr und gibt dabei CPU-Zeit sowohl für den Spieler als auch für den Client frei.

 Nun, all dies klingt ziemlich gut, aber die Herausforderung besteht darin, dass alles im Spiel darauf beruht, dass diese Daten zuverlässig zwischen Spielern übertragen werden und die meisten Fehler in Multiplayer-Games damit zusammenhängen, dass diese Daten verloren gehen oder beschädigt werden.

 Wenn wir nun die Engine aktualisieren und nicht weiter tun würden, würde dieser Replication Graph nicht einmal etwas bewirken. Wir müssen die Funktionsweise unseres Netcodes ändern, um diese neue großartige Funktion optimal nutzen zu können. Das bedeutet, viel unter der Haube zu ändern und zahlreiche Tests durchzuführen, um sicherzustellen, dass es schneller und zuverlässiger funktioniert als zuvor. Darüber hinaus müssen dies auch die anderen Teams berücksichtigen – Animations-Zustände, Waffendaten, Fahrzeuge – alles wird zwischen den Spielern ausgetauscht und muss gut synchronisiert werden.

 Optimierung

 Der andere große Teil der 0.7 Vorbereitungen ist einen weiteren Blick auf die Leistung des Spiels zu werfen. Mit der 0.6 haben  wir große Fortschritte gemacht, das Spiel schneller zu machen und es deutlich leistungsstärker als zuvor zu machen, aber wir sind immer noch nicht ganz zufrieden mit dem Ergebnis.

 Die Optimierung erfolgt jedoch nicht nur durch das technische Personal – es ist eine Teamarbeit, beginnend mit dem Entwurf von Features und Mechaniken, die nicht viel Rechenleistung erfordern, über das Leveldesign, das Sichtlinien und Level-Streaming berücksichtigt, bis hin zu den Assets, die auf eine bestimmte Weise vorbereitet werden müssen, um das Beste aus ihnen herauszuholen, bis hin zur technischen Seite der Optimierung von Code und Berechnungen, sowie dem Rendering, das clevere Tricks schafft, um nur das absolut Notwendige zu leisten.

 Derzeit arbeiten wir sehr intensiv an drei Hauptbereichen: Level-(Asset-)Optimierung, RAM-Nutzung und das Stottern in Bezug auf die Serverleistung. Alle diese Bereiche arbeiten stark zusammen, denn das Niveau der Optimierung erhöht die durchschnittlichen FPS, aber die Beseitigung des Stotterns und Einfrierens wird dazu führen, dass sich diese FPS viel besser anfühlen. Mehr freier Speicherplatz zum Laden von Texturen und Objekten wird auch die Anzahl der Hänger während dem Laden reduzieren und das Laden beschleunigen.

 Die gute Nachricht ist, dass wir wissen, was getan werden muss, um sicherzustellen, dass das Spiel so gut wie möglich funktioniert. Wir testen die Dinge ständig intern und manchmal sogar extern mit der Community (wie wir es letzte Woche auf dem PTE getan haben), suchen nach Möglichkeiten, die Leistung des Spiels zu steigern und aus diesem Testen entwickeln sich die Pläne, wie man es großartig machen kann.

 Wir schätzen, dass wir seit der Veröffentlichung der Early-Access-Version im Oktober letzten Jahres den durchschnittlichen FPS-Wert für die meisten Spieler um 200-300% erhöht und das Stottern um mehr als 75% reduziert haben. Es gibt noch viele Dinge, die wir verbessern können, und diese Arbeit schreitet gut voran – es braucht nur Zeit, aber sei versichert, Optimierung ist etwas, worauf wir uns wirklich konzentrieren.

 Bitte lass uns wissen, ob diese etwas technischeren Berichte etwas sind, was dich interessiert, besuche unser Forum und abonniere unseren Newsletter, falls du es noch nicht getan hast!