Im April hat das Physics Team die Fahrzeugunterstützung weiter verbessert, unter anderem die Lenkgrenze eines neutral drehenden Panzers und die Schwerkraft eines frei fallenden Panzers. Auch der Code für Fahrzeuge mit Rädern wurde weiter aufgeräumt.
Für Alpha 3.13 wurde eine Lösung gefunden, um Fließkomma-Ausnahmen auf Linux-Servern zu aktivieren, was dem Team helfen wird, Probleme schneller an der Wurzel zu packen, was eine schnellere Behebung von Bugs bedeutet. Für die numerische Robustheit wurden mehrere Verbesserungen bei der Konvertierung von Double-Precision Floats in Single-Precision Floats oder 32-Bit Integers vorgenommen.
Während des gesamten Aprils hat das Engineering weiter am G12 Renderer gearbeitet und Teile des neuen Gen12 Renderpfades standardmäßig aktiviert und den vollständigen Übergang zur neuen Architektur begonnen. Außerdem wurde die Portierung von Renderpässen zusammen mit dem Grafikteam fortgesetzt. Zum Beispiel erhielt der Scaleform (UI) Renderpfad einen ersten Commit, um ihn auf Gen12 zu portieren. Der Shader-Parser erhielt ebenfalls einige neue Verbesserungen und Optimierungen.
Die Arbeit am volumetrischen Wolkensystem wurde fortgesetzt, wobei im April ein Pass für effizientes Leerspace-Skipping im Raymarcher erfolgte. Die SDF-Generierung wurde weiter optimiert und ein erforderlicher Verfeinerungspass wurde ebenfalls implementiert. Es wurde weiter an der Generierung und Anwendung von SDFs geforscht und mit den ersten generierten SDFs wurde begonnen, diese in den raymarcher Prozess zu integrieren. Für die Wolkenmodellierung können die Künstler nun ein benutzerdefiniertes Set von Volumentexturen pro Planet festlegen, um Wolken zu formen, da nicht jeder Planet Wolken hat, die denen auf der Erde ähneln.
Auf der Seite der Core-Engine wurde der Job-Manager weiter verbessert, indem das Team einen expliziten Pro-Thread- und Faser-Infoblock eingeführt hat, um Konflikte in einigen der Threading-Backends zu reduzieren. In naher Zukunft werden sie die Out-Lock-Implementierungen verbessern, um weniger unnötige Thread-Wakeups und weniger Kernel-Aufrufe beim gleichzeitigen Aufwecken von mehr als einem Thread zu machen. Zusätzlich haben sie in einem der Threading-Backends Contention beseitigt, indem sie den Scheduling-Algorithmus von einer Lock-geschützten Prioritäts-Warteschlange auf einen Lockless-Ansatz mit Producer/Consumer-Warteschlangen fester Größe mit Aging umgestellt haben. Für das Post-Mortem-Profiling sahen sie die ersten Ergebnisse bei der Visualisierung der gesammelten Daten in einem neu geschriebenen Tool, das benutzerfreundlicher und flexibler ist.
Die Zeit im April wurde auch dem Server Meshing gewidmet. Die bestehende StarHash Logik, die für das Streaming von Server-Objekt-Containern verwendet wird, wurde in das Netzwerkmodul verschoben, um einen späteren Umzug zu einem Server-Meshing-Service vorzubereiten. Die Assert-Pipeline wurde ebenfalls überarbeitet und für eine effektivere Fehlerverfolgung gestrafft. Dies beinhaltete auch die Einführung von Daten-Assets (für den Fall, dass bösartige Daten dazu führen, dass Code unter unerwarteten Bedingungen ausgeführt wird), wodurch Issues direkt dem entsprechenden Content-Team zugewiesen werden können.
Zu guter Letzt wurde Code implementiert, um ungenutzte Textur-Slots in Materialien zu markieren, um die automatische Nachverfolgung von Asset-Abhängigkeiten zu steuern, was die Datenflut im Spiel in Schach halten wird.