Immortals of Aveum Interview - Materialien, Shader-Streaming, Asset-Verwaltung
In diesem Artikel
- Seite 1 Einleitung
- Seite 2 Warum Unreal Engine 5?
- Seite 3 Materialien, Shader-Streaming, Asset-Verwaltung
- Seite 4 Niagara und VFX
- Seite 5 Die Weltdarstellung und Strukturierung in der UE5.1.1
- Seite 6 Die Vorteile und Tücken von Nanite
- Seite 7 Beachtenswertes zu Portierungsarbeiten und Engine-Updates
- Seite 8 Gibt es Pläne, die Grafik in Zukunft weiter zu verbessern?
- Seite 9 Die Entwicklung der Zwischensequenzen
- Seite 10 Bildergalerie
PCGH_Phil: Apropos Materialien und Shader: Also, wenn ich das alles richtig verstanden habe, ist Immortals of Aveum nicht wirklich eine Open World, aber es hat große, offene Level, richtig? Und mir ist auch aufgefallen, dass ihr nicht die berühmt-berüchtigte Vorab-Shader-Kompilierung der aktuellen UE4- und DirectX-12-Titel nutzt. Damit das funktioniert, müsstet ihr also das noch ziemlich neue Shader-Compiling der Unreal Engine 5.1 verwenden, richtig? Das ohne vorher nötigen Pre-Compile zur Runtime läuft, richtig?
Mark Maratea: Soll ich das übernehmen? Okay - tatsächlich nutzen wir eine Mischung aus beidem. Aber wir verwenden das neue PSO-Caching (Pipeline State Object) der Unreal Engine 5.1, korrekt. Das Caching habe ich während der Entwicklung auf relativ regulärer Basis offline vorgenommen, für alle unserer ungefähr 5,7 Millionen genutzten Shader-Permutations - eine Zahl, bei der ich immer Kopfschmerzen bekomme, wenn ich sie sagen muss (lacht). Dazu habe ich ein kleines Batching-Programm geschrieben, welches das von Zeit zu Zeit im Hintergrund erledigt. Aber es stimmt: Wenn die Engine auf neue Pipeline-Object stößt, dann kompiliert die Unreal Engine 5.1 die zur Laufzeit im Handumdrehen. Das klappt nun, weil das Ganze jetzt asynchron ablaufen kann und obendrein anständig multithreaded ist. Generell ist es so, dass das wirklich sehr gut funktioniert. Jeder, der einen halbwegs vernünftigen Rechner hat, wird in den meisten Fällen überhaupt nichts davon mitbekommen, jedenfalls, solange wir die Anzahl der Objekte relativ niedrig halten. Und ich sollte das wahrscheinlich nicht sagen: Aber wir arbeiten da tatsächlich gerade noch an Optimierungen, insbesondere für schwächere Hardware, da wir ja nicht nur High-End-Gamer, sondern eine viel größere Zielgruppe ansprechen möchten. Wir sind buchstäblich gerade dabei, ein kurzes Shader-Pre-Compile für die wichtigsten Elemente vor dem erstmaligen Spielstart zu integrieren. (Anmerkung der Redaktion: Der Shader-Pre-Compile ist bereits vor dem Launch des Spiels mit dem am 17.08. ausgerollten Day-1-Patch integriert worden)
PCGH_Phil: Ihr nutzt neben dem neuen Ansatz der Unreal Engine 5.1 also auch einen "klassischen", manuell ergänzten Shader-Pre-Compile vor dem ersten Start des Spiels.
Mark Maratea: Ja, das ist gewissermaßen auch nötig. Wenn man wie wir wirklich viele Shader nutzt und beim Spielen dann versucht, auf einen komplett kalten Cache zuzugreifen, dann dauert es ein wenig, bevor das in die Gänge kommt. Allein den Cache zu Beginn zu laden, ist eine nicht ganz unbeträchtliche Sache, weil unser Shader-Cache so riesig ist. Deswegen bauen wir dafür gerade noch eine anständige Ladeanzeige ein. Dafür stehe ich auch gerade, dass der Cache so gewaltig ist, und beim ersten Mal ein Ladebalken angezeigt wird, ist auch ein wenig meine Schuld, einverstanden? Da kann ich auch noch weitere Verbesserungen ankündigen. Etwa durch den Umstieg auf die Engine-Version 5.1.1. Das haben wir kurz nach der Veröffentlichung getan und natürlich gab es dabei auch ein paar kleine Hiccups, wie immer, wenn man bei der Entwicklung auf eine neue Engine-Version umsteigt. Mit der Unreal Engine 5.1.1 gibt es da eine Neuerung, die kann man sich ein wenig wie eine Maske vorstellen. Damit kann man der Engine sagen, wann und wo sie welche Dinge oder bestimmte Shader laden soll. Das ist auch schon integriert, aber damit dieses Feature das volle Potenzial ausspielen kann, muss man in den Game-Code gehen und spezifisch und manuell Flags an den richtigen Stellen ergänzen. Es funktioniert auch so, aber optimal eben erst, wenn man entsprechende Anpassungen macht.
Und ich hatte ein bisschen Bammel, da kurz vor Release noch einmal ein riesiges Fass aufzumachen. "Nein, das machen wir jetzt nicht", habe ich mir gedacht. Ich schreibe doch jetzt nicht noch einmal den kompletten Bootloader für unser Spiel neu, kurz vor Release und riskiere damit, da Fehler einzubauen, die uns dann einen sauberen Launch zu versauen. Das ist viel zu riskant, so kurz vor der Veröffentlichung. Aber wir haben uns die UE5.1.1 geschnappt, sofort nachdem sie erschienen ist. Diese Optimierungen sind etwas, was wir uns für den Sommer vorgenommen haben. Und hoffentlich werde ich es schaffen, dass diese Shader-Optimierungen in einem unserer frühen Patches landen, die für Leute mit weniger leistungsfähiger Hardware zu erwarten sind. Diese Optimierungen sind insbesondere für Low-End-Hardware nützlich.
Quelle: Electronic Arts
Immortals of Aveum - Wir befragen die Entwickler im Tech-Interview zur Unreal Engine 5.1 (2)
Denn du und ich, viele eurer Leser, wir sind nun mal auch wirklich das, was wir sind. Wir sind das obere Ende. High End. Wie du weißt, funktioniert die High-End-Hardware wirklich gut mit diesem Spiel. Und ich habe auch High-End-Hardware. Wir alle hier haben ziemlich gutes Material. Ich weiß das, weil ich diesen Leuten hier (schaut in die virtuelle Runde) Hardware schicken musste. Und damit ist es natürlich vergleichsweise einfach, ein Spiel gut laufen zu lassen. Bei Optimierungen ist es aber wichtig, dass wir uns auch auf den Rest konzentrieren. Offensichtlich arbeiten wir weiter und lassen weitere Verbesserungen einfließen. Das Spiel läuft performant, weil wir es eben beständig weiterentwickeln. Und wir haben uns speziell in den vergangenen Monaten als Team darauf konzentriert, unseren Spielerhorizont zu erweitern, mehr Leuten den Zugang zu Immortals of Aveum ermöglichen und zu versuchen, das Spiel gezielt auch für Low-End zu optimieren.
PCGH_Phil: Ja, ich kann mir vorstellen, dass es besonders für Low-End-Hardware einige gezielte Optimierungen benötigt. Aber generell finde ich die Unreal Engine 5 dahin gehend ebenfalls ziemlich beeindruckend. Wenn man ein UE4-Projekt importiert oder ein Spiel ein Update von Unreal Engine 4 auf 5 erhält, läuft die Version mit Unreal Engine 5 zumeist sogar deutlich besser - obwohl mit Lumen und Spiegelungen zusätzlich Raytracing hinzukommt. Das finde ich auch sehr spannend.
Mark Maratea: Eines der interessanten Dinge, die Lumen macht, ist, dass es tatsächlich einen Teil der Last von der Grafikkarte auf die CPU verlagert. Das wirkt natürlich erst einmal etwas irritierend und beinahe wie das Gegenteil von dem, was wir in den vergangenen 20 Jahren so gemacht haben. Das ist in dem Fall aber tatsächlich effizient. Und weißt du - ich nehme mal an, dass du wahrscheinlich mit 13900K oder so arbeitest: Den meisten von uns stehen 16 bis 20 CPU-Threads oder logische Prozessoren zur Verfügung. Und ich spiele ja selbst auch privat immerzu Spiele. Oft genug werden die ganzen CPU-Threads gar nicht richtig ausgelastet. Zwei stark belastete Threads, das war's dann leider oft genug. Das heißt, ein Großteil meiner tollen Vielkern-CPU wird gar nicht genutzt. Und ich muss im Grunde darauf hoffen, dass ich nebenbei noch etwas anderes finde, was ich damit anstellen kann, damit die Hardware nicht nur ineffizient genutzt wird. Jetzt sind es 8, 12, Threads oder mehr. Das meiste, was ich im Spiel zur Laufzeit mitbekommen habe, sind tatsächlich volle 16 Kerne, die arbeiten. Und es ist natürlich gut, auch High-End-Prozessoren ausschöpfen zu können. Da ist es gut, es ist perfekt, wenn die Last auf alle Kerne verteilt ist. Hat man nur acht Threads oder acht Kerne zur Verfügung, ist etwas schwieriger zu machen. Aber es funktioniert.
Dass die Unreal Engine 5 so gut läuft, ist aber auch ein Beitrag von dem, was Epic und deren Entwickler bei der Engine unter der Haube geleistet haben. Sie haben etwa eine Menge Arbeit investiert, um NVMe-Laufwerke auszunutzen. Das haut einen echt aus den Latschen, wenn man da auf die Entwicklung und in die Vergangenheit zurückblickt. Bei dem Code, den sie neu geschrieben haben, um Dinge von der Festplatte zu streamen, haben sie etwa mit Einstellungen experimentiert, die simulieren, dass von einer viel langsameren HDD gestreamt wird und da würde dann alles haken und hängen und schließlich gar zusammenbrechen. Das haben sie gemacht, um zu analysieren und den Code zu optimieren. Sie haben den Code für die Entwicklung also absichtlich ausgebremst, um Schwächen beim Streaming zu finden, statt ihn Daten einfach so schnell wie möglich laden zu lassen - weil es in den alten Tagen einfach noch kein solch "so schnell wie möglich" gab. Ja, die Unreal 5. Die Entwickler waren dabei aber natürlich auch sehr eng mit Microsoft und Sony verbandelt, damit die NVMes der Xbox Series und Playstation 5 auch optimal ausgeschöpft werden können. Sie gehen also im Wesentlichen davon aus, dass man ein Top-End-PCI-E für NVMe mit 5.000 Megatransfers hat und die IO ist dafür optimiert. Und wir bauen da bei Immortals of Aveum auch wirklich stark darauf. Besonders Dave. Der und sein Team verlangen, dass wir gewaltige Mengen an Daten streamen können, das ist beinahe Wahnsinn, unreal (lacht).
- Seite 1 Einleitung
- Seite 2 Warum Unreal Engine 5?
- Seite 3 Materialien, Shader-Streaming, Asset-Verwaltung
- Seite 4 Niagara und VFX
- Seite 5 Die Weltdarstellung und Strukturierung in der UE5.1.1
- Seite 6 Die Vorteile und Tücken von Nanite
- Seite 7 Beachtenswertes zu Portierungsarbeiten und Engine-Updates
- Seite 8 Gibt es Pläne, die Grafik in Zukunft weiter zu verbessern?
- Seite 9 Die Entwicklung der Zwischensequenzen

Entweder kann oder will man nicht , ansonsten sehe ich es wie RavionHD
Die Unity-Engine ist da auch nicht schlecht, aber im Duell eher zweiter Sieger
Gruß,
Phil
Ultra Details und FSR2 Quality. Minimale Reshadeanpassung und etwas Sättigung rausgenommen.
[Ins Forum, um diesen Inhalt zu sehen]
In einem gewissen Umfang wäre es wohl einfacher gewesen, aber irgendwo haben die Entwickler schon recht: Es wäre schwerlich möglich gewesen, das Spiel in einer ähnlichen Qualität in der UE4 zu erschaffen - vor allem mit einem verhältnismäßig kleinen Team.
Lumen gehört außerdem zu den eher "einfachen" Umstellungen, jedenfalls, wenn man es von Beginn an nutzt und nicht schon sehr viel mit Baked- und Probe-Lighting gemacht hat. Die Beleuchtung macht zwar sicherlich auch einen nicht ganz unbeträchtlichen Teil der (Grafik-)Last aus, aber sie ist nicht wirklich "schwierig" im Sinne der Entwicklung.
Und bei Lumen kann man ja außerdem auch noch die Qualität verringern - und vor allem: Upsampling nutzen, um die Grafikkarte zu entlasten. Upsampling respektive eine verringerte Renderauflösung scheint auch erstmal quasi nötig zu sein, zumindest was die ersten "wirklichen" UE5-Titel betrifft, die in relativ naher Zukunft erscheinen - oder es bereits sind. Die, die ich auf der Gamescom gesehen habe (ich kann noch nicht alle nennen), "Next-Gen-"Hardware und Lumen sowie Nanite nutzen (bzw. nicht mehr die alten Konsolen unterstützen) waren allesamt ziemlich anspruchsvoll. Ich denke, da können wir uns in Zukunft mehr oder minder drauf einstellen.
Ich finde die Entscheidung zugunsten der UE5 im Grunde gut, langsam kann es da mal ein wenig vorangehen. Das wird wahrscheinlich erst einmal ein wenig wehtun, aber so ist das ja im Grunde immer, wenn die alte Hardware-/Konsolen-Generation der neuen weichen muss. Dann fliegt einem oft erstmal der Grafikspeicher um die Ohren (vgl. insbesondere die Spiele um 2014 rum, da gab es auch einen recht heftigen Sprung) und auch die Anforderungen an CPU, Speichermedien etc. ändern sich häufig.
Das ist dieses Mal Umstände halber alles ein wenig verzögert, aber jetzt scheint es entsprechend dick zu kommen.
EDIT: Nightingale ist einer dieser UE5-Titel. Der sah auf der GC-Live-Präsentation schon sehr gut aus und lief bis auf wenige Ausnahmen smooth, allerdings teils merklich unterhalb 60 Fps (schätzungsweise um 40-50 Fps). Da hab ich auch kurz mit den Devs quatschen können, die haben einen ähnlichen Lernprozess wie hier die Entwickler von Immortals of Aveum geschildert - hauptsächlich Nanite und die neue Art und Weise, die Welt zu organisieren, benötigen eine gewisse Umstellung und spezifisch Nanite außerdem eine gewisse Zurückhaltung, um aktuelle ("Next-Gen") Hardware nicht völlig zu überfordern.
[Ins Forum, um diesen Inhalt zu sehen]
Da kommt morgen ein kleiner Preview-Artikel.
Gruß,
Phil