Ein Charakter stellt sich Monstern in "Let Them Come: Onslaught".

Tech-Blog

Interview

Optimierung von Blut- und VFX-Systemen in UE5 für Let Them Come: Onslaught

Blueprints

Indies

Let Them Come: Onslaught

Niagara

Spiele

Tuatara Games

tuatara-games-logo.png
Tuatara Games ist ein in Vancouver ansässiger Zusammenschluss von Weltklassekünstlern, der modernste VFX-Dienstleistungen für Spiele und andere Echtzeiterfahrungen anbietet. Das Studio nutzt seine Expertise, um große Spieleunternehmen wie Epic Games zu unterstützen sowie seine eigene IP mit dem Kulthit "Let Them Come" zu entwickeln.
Hallo, liebe Unreal Engine-Community! Ich bin Alex Underhill, Technical Artist und VFX Artist bei Tuatara Games. Ich gehöre zu einem kleinen Team, das gerade unser auf der Unreal Engine 5 basierendes Spiel Let Them Come: Onslaught auf PC und Konsolen veröffentlicht hat. 

In unserem Science-Fiction-Bullet-Heaven-Spiel finden sich die Spieler auf einer feindlichen fremden Welt gestrandet wieder, wo sie gegen endlose Horden von Monstern kämpfen müssen. Anstatt dass deine Gegner vom Bildschirm verschwinden, wollten wir, dass jeder Kill spektakulär aussieht und seine Spuren auf dem Schlachtfeld hinterlässt. Aber angesichts des Umfangs unserer Gegnerhorden brachte das einige technische Herausforderungen mit sich, bei denen wir mit den Systemen von Unreal experimentieren mussten, um sie zu bewältigen.

Das ursprüngliche Let Them Come wurde mit Game Maker entwickelt, aber für Let Them Come: Onslaught stiegen wir auf die Unreal Engine um, weil wir sie als die beste Engine für unsere Ziele im Zusammenhang mit dem Spiel identifiziert hatten. 

Die Unreal Engine ermöglichte es uns, viele Gegner gleichzeitig sowie viele visuelle Effekte auf den Bildschirm zu bringen –und das mit einer flüssigen Performance. Da wir als VFX-Studio arbeiten, sind wir auch am besten mit den Authoring-Tools für VFX und insbesondere mit der Unreal Engine vertraut.

Unsere Herausforderung: Blutige Böden


Eine Herausforderung bei den VFX von Let Them Come: Onslaught war die Anzahl der Gegner auf dem Bildschirm zu jedem Zeitpunkt –und wie viele auf einmal getötet werden konnten. Als wir das Prototyping für das Spiel machten, lösten die Gegner ursprünglich einen "Explodieren"-Gameplay-Hinweis aus, der einen Decal für das Blut auf dem Boden und eine blutige Explosion für das Spielerfeedback erzeugte. Wir stellten rasch fest, dass man besonders mit aufgewerteten Waffen viele dieser Tode gleichzeitig auslösen kann, also mussten wir einige Optimierungen vornehmen, um sicherzustellen, dass die Action so chaotisch wie möglich und nicht durch die Anzahl eingeschränkt wurde.

Was die Blut-Decals angeht: Diese wurden ursprünglich erzeugt, um Überbleibsel des Gemetzels zu hinterlassen und als Spur zu dienen, damit der Spieler weiß, wo er gewesen ist (und was er zurückgelassen hat). Das Problem war, dass viele von ihnen gespawnt wurden – und wir wollten sie eine ganze Weile bestehen bleiben lassen, um effektiv zu sein –, was bedeutete, dass es rasch immer mehr wurden. Wir mussten außerdem das Problem sich überlappender Decals beheben: Man konnte viele Gegner in unmittelbarer Nähe zueinander töten, was wiederum dazu führte, dass sich die Decals überlappten und oft zu Problemen mit der Performance führten.

Zum Erzeugen einer großen Menge Blut- und Säuremarkierungen auf dem Boden nutzten wir Niagara, um ein System zu erstellen, das ein Array von Welt-Bereichen an ein Renderziel übergab. Dieses Array hat eine feste Länge von etwa 256 Einträgen und Schleifen, und sobald die 256 Einträge ausgeschöpft sind, wird der erste Eintrag als 257. Eintrag überschrieben usw. Diese Menge ist eine gute Einstellung, mit der man den Boden vor dem Wiederverwenden der Einträge ordentlich mit Blut tränken kann.

Wenn nun ein Gegner getötet wird, sendet er, anstatt einen Decal zu spawnen, Daten über sich selbst (Position, Radius, Materialtyp) an einen "Splat-Manager"-Blueprint-Actor, der dauerhaft in der Welt vorhanden ist. 
Die letzte, verzerrte Maske liefert ein realistisches und blutiges Ergebnis.
Mit freundlicher Genehmigung von Tuatara Games
Dieser Manager sendet die Daten dann an ein globales Niagara-System, das dann mit High-Level Shader Language (HLSL) diese Bereiche über die Grid2D-Datenschnittstelle in eine globale Render-Zielmaske schreibt. Dieses System basierte stark auf der Arbeit von Chris Zuko, dem Technical Director bei Terrible Posture Games. Wir füllen das Renderziel mit der Entfernung zu jeder Blutlache, wobei der Entfernungsbereich durch den eingehenden Radius definiert wird. Alle diese Entfernungen werden dann kombiniert, um eine einheitliche Maske zu erstellen.
Blutlachen-Masken für eine Kampfszene in "Let Them Come: Onslaught".
Mit freundlicher Genehmigung von Tuatara Games
Diese Maske enthält einige Schichten, darunter eine für Blut und eine für Säure, die dann in den Umgebungs-Oberflächenshadern gesampelt werden können, um die Blutschicht dort anzuwenden, wo sie benötigt wird. 

Der Manager zeichnet die Ursprungsposition des aktuell gerenderten Bereichs im Welt-Bereich sowie die Einheitengröße des Welt-Bereichs des Gebiets auf. Diese Variablen werden innerhalb einer Material- und Niagara-Parametersammlung aktualisiert, um sie dem Inhalt zugänglich zu machen.

Die Blutmaske wurde als eine Reihe von Material-Funktionen bereitgestellt, die die Koordinaten automatisch der Position der Welt dort zuordneten, wo sie benötigt wurden, sodass die Künstler nur noch eine 0,0-1,0 Gewichtung hatten, die sie nutzen konnten, um Oberflächeneffekte zu erzeugen, ohne die Koordinaten neu erstellen zu müssen. Für die meisten Oberflächen nehmen wir die Karte der eingehenden Entfernungen und führen einige Welt-Bereich-Rauschen-Samples durch, um die Form zu verzerren und dafür zu sorgen, dass sie sich organischer in die Umgebung einfügen.
Blutlachen fügen sich organisch in die Umgebung ein.
Mit freundlicher Genehmigung von Tuatara Games
Die endgültige, verzerrte Maske wird dann verwendet, um Material-Attribute im Oberflächen-Shader zu mischen, damit alles nach einem blutigen Gemetzel aussieht!
Blutlachen-Radien für eine Kampfszene in "Let Them Come: Onslaught".
Mit freundlicher Genehmigung von Tuatara Games

Blutexplosionen-FX


Ein weiterer wichtiger Optimierungsfokus war die Reduzierung der Anzahl der gespawnten Partikel-Systeme, insbesondere beim Tod von Gegnern. Die Anzahl der Todesexplosionen auf dem Bildschirm war ein ähnliches Problem wie die Zahl der Decals. In diesem Fall war das Problem weniger Überziehung, sondern eher die Anzahl der Niagara-Systeme, die gespawnt und verwaltet wurden.

Wir nahmen während des Projekts ein Upgrade auf Unreal 5.3 vor, und ein wichtiger Grund dafür war die Nutzung von Niagara Data Channels. Mit ein wenig Umgestaltung von VFX und Gameplay-Hinweisen konnten wir jedes Blutexplosionsereignis über einen Datenkanal in ein einziges Niagara-System schicken, das dann eine Blutexplosion am richtigen Ort abspielte, anstatt jedes Mal ein ganz neues Niagara-System erstellen zu müssen. Es funktionierte sehr ähnlich wie bei den Blutlachen: Nach dem Tod schickte ein Gegner Informationen über sich selbst an das Manager-System der Welt, einschließlich Ort und Größe/Ausmaß des Ereignisses, und diese wurden wiederum an einen Niagara Data Channel gesendet.

Als es darum ging, eine "gemetzelfreie" Version des Todes-FX einzuführen, machte dieser Ansatz die Sache einfach: Die gemetzelfreie Version des Effekts wurde zusammen mit der blutigen Version implementiert, und je nach Spieloption wurde dann auf die entsprechende Variante umgeschaltet.

Der Niagara Data Channel-Pfad für Todeseffekte deckt nicht 100 % aller Tode ab, da wir für bestimmte Entitäten weiterhin benutzerdefinierte machen wollten. Er deckt aber immerhin ca. 80-90 % der Tode ab und ermöglicht es uns trotzdem, bei Bedarf auf maßgeschneiderte Optionen zu verzweigen.

Das Ergebnis ist, dass die Spieler das Gemetzel sehen können, das sie im Kampf ums Überleben angerichtet haben – und das Schlachtfeld bleibt ein Zeuge ihrer Triumphe, ohne dass die Performance darunter leidet. Wir hoffen wirklich, dass ihr das alles selbst in Aktion sehen könnt, jetzt, da "Let Them Come: Onslaught" veröffentlicht wurde.

Möchtest du Spiele in der Unreal Engine erstellen?

Mit der Unreal Engine sind nur deine Ambitionen die Grenze – nicht die Größe deines Teams. Erfahre, wie UE5 Teams jeder Größe die Möglichkeit gibt, herausragende Spiele mit der gleichen visuellen Komplexität wie große Studios zu entwickeln.
Mehr erfahren

Erhalte aktuelle Informationen über Brancheninnovationen und die neuesten kostenlosen Assets für

Indem du deine Informationen einreichst, willigst du ein, Neuigkeiten, Umfragen und Sonderangebote von Epic Games zu erhalten. Datenschutzrichtlinie