Ein Blick in die Zukunft: Verbesserung der UEFN-Stabilität und -Iterationszeiten [Thread]

Autoren: Aurel Cordonnier und Kavita Chodavarapu

Hallo Fortnite-Entwickler und -Entwicklerinnen,

wir haben letztes Jahr angekündigt https://www.youtube.com/watch?v=M1F5CimXO_8&t=2492s, die Stabilität und Iterationsgeschwindigkeit von UEFN zu verbessern. Unser Ziel ist es, die Iterationszeit bis Juni um 50 % zu reduzieren (oder sogar noch mehr, aber wir möchten hier lieber weniger versprechen und unsere Prognose übererfüllen). In diesem Post werden die Änderungen beschrieben, die wir an unseren internen Test- und Qualitätssicherungsprozessen vorgenommen haben, um die Stabilität der Releases zu verbessern, sowie die ersten Updates, die wir in den kommenden Monaten einführen werden, um die Iterationszeiten zu verkürzen.

**Release-Stabilität und Tests **

Wir haben unseren Testansatz geändert und uns auf das konzentriert, was für euch am wichtigsten ist: Inseln mit hohem Engagement und Persistenz. Unsere Tests umfassen nun zusätzliche Entwicklerinhalte, die anfälliger für Regressionen sind. Dadurch können wir kritische Fehler früher erkennen, bevor sie sich auf das Entwicklererlebnis auswirken.

Wir haben außerdem einen 24-Stunden-Eskalationsprozess eingeführt, sodass wir Probleme schneller als je zuvor beheben können, sobald wir sie entdecken. Darüber hinaus testen wir derzeit zweimal pro Woche sechs komplexe Entwicklerinseln, um wichtige Leistungsbenchmarks wie Startzeit, Ladezeit und Minispiel-Operationen zu tracken und etwaige Regressionen sofort zu eskalieren.

Die bisherigen Ergebnisse sind vielversprechend. In Release 39.30 konnten wir 57 % der Fehler verhindern, bevor sie live gingen, und in den Releases 39.40 und 39.50 hatten wir keine kritischen Fehler im Zusammenhang mit Entwicklerinhalten oder Persistenz – ein direktes Ergebnis der schnelleren Fehlerpriorisierung und der erweiterten Abdeckung. Unsere Escape-Rate (Fehler, die doch in Live-Releases gelangen) ist ebenfalls deutlich gesunken: von 18,5 % in 39.11 auf nur noch 4,7 % in 39.40.

Wir wissen, dass interne Messwerte nur einen Teil des Gesamtbildes zeigen, und führen daher gemeinsam mit dem Community-Team monatliche Stabilitätsumfragen durch, um direktes Feedback von den Entwicklern und Entwicklerinnen zu erhalten und sicherzustellen, dass sie einen spürbaren Unterschied feststellen. Dieses Feedback hilft uns dabei, festzulegen, auf welche Maßnahmen wir uns in Zukunft verstärkt konzentrieren sollten.

Stabilitäts- und Asset-Management-Tools

Neben einem erweiterten internen Qualitätssicherungsprozess fügen wir außerdem neue Tools und Workflows hinzu, mit denen du Fehler in deinen Projekten erkennen und beheben kannst, bevor sie zu Abstürzen oder einem Stillstand führen.

  • Tools für die Asset-Integrität: Sie beheben Probleme bei der Asset-Validierung und „Out of Memory“-Fehler während der Iteration mithilfe neuer Überwachungs-, Berichts- und plattformspezifischer Speicherschwellenwerte nach dem Import.
  • Updates des Raumprofil-Erstellers: Mit den erweiterten Profiling-Funktionen in UEFN könnt ihr plattformübergreifend schnell datenlastige Assets erkennen. Dazu gehören neue direkte Speicherberechnungsergebnisse und eine neue Live-Asset-Ansicht mit UObject-Analyse https://dev.epicgames.com/documentation/unreal-engine/objects-in-unreal-engine.

Cooker-Optimierungen
Um die Zeit zu verkürzen, die für die Vorbereitung deiner Insel auf eine Spielsitzung erforderlich ist, und die Iterationszeiten zu verbessern, überarbeiten wir die UEFN-Cooking-Pipeline, damit sie effizienter wird. „Cooking” https://dev.epicgames.com/documentation/de-de/fortnite/cook ist der Prozess der Umwandlung von unbearbeiteten Assets in ein optimiertes, clientfähiges Format, damit Inhalte schnell geladen und gerendert werden können.

Dies sind interne Verbesserungen der UEFN-Backend-Infrastruktur, damit du keine Änderungen an deinem Workflow vornehmen musst.

  • Zen DDC Derived Data Cache – https://dev.epicgames.com/documentation/unreal-engine/using-derived-data-cache-in-unreal-engine?application_version=5.7: Wir stellen die neuesten Zen Server-Systeme im UEFN-Backend bereit und führen gecookte Snapshots ein, um die Effizienz des Cooking-Prozesses zu verbessern und die Iterationsschleife „Auf Client spielen” zu reduzieren.
  • Inkrementelles Cooking: Wir fügen ein System hinzu, das nur die aus deinem Projekt empfangenen, erforderlichen Asset-Deltas (Änderungen) cookt, anstatt auch unveränderte Daten erneut zu verarbeiten.
  • Verteilte Shader-Kompilierung: Anstatt die gesamte Last auf den lokalen Computer zu verlagern, verteilen wir die Shader-Kompilierung in die Cloud und beschleunigen so die Kompilierungszeit.

Verbesserungen bei der Live-Bearbeitung
Wir erweitern die Live-Bearbeitung und bieten mehr Möglichkeiten zur Iteration während einer Live-Bearbeitungssitzung, und zwar durch Unterstützung für zusätzliche Asset-Typen und neue Workflows im Editor zum Bearbeiten einer laufenden Sitzung.

  • Erweiterte Unterstützung für Asset-Typen: Ihr könnt mehr Asset-Typen direkt in einer Live-Bearbeitungssitzung ändern, wodurch ihr weniger häufig Änderungen übertragen müsst. Beispiel: Sound-Steuerbus, Levelsequenz.
  • Live-Bearbeitung im Spiel-Modus: Wenn der Spiel-Modus während der Live-Bearbeitung aktiv ist, wird ein Teil der Änderungen aus dem UEFN-Editor übernommen, ohne dass Änderungen übertragen werden müssen und das Spiel unterbrochen werden muss. Beispiel: Wenn ihr einen Hindernisparcours erstellt, könnt ihr Objekte transformieren und ihre Position anpassen.
  • Bearbeitungsverlauf-Fenster: Zeigt euch, welche Änderungen in der Sitzung implementiert wurden und welche Bearbeitungen noch eine Übertragung der Änderungen erfordern. Dieses Fenster ist während des Bearbeitungsmodus und des Spielmodus verfügbar, solange die Sitzung läuft.

Ihr könnt diese Updates in der Fortnite Developer Roadmap https://trello.com/b/nnpaY0cM/fortnite-creator-roadmap verfolgen. Wir werden diesen Thread auch nutzen, um Updates zu unseren Maßnahmen zur Verbesserung der Stabilität und der Iterationszeiten in UEFN zu veröffentlichen.