4. Unreal Engine 5

4.1. Einführung

Die Unreal Engine ist eine leistungsstarke 3D-Grafik-Engine, die in erster Linie für die Entwicklung von Spielen konzipiert wurde. Sie kann jedoch auch für die Erstellung von Filmen, Architekturvisualisierungen und Simulationen genutzt werden. Die Engine wird vom Hersteller Epic Games kostenlos zur Verfügung gestellt und ist derzeit ein starker Konkurrent zur Unity Engine von Unity Technologies.

Mit der Veröffentlichung der neuen Version 5 haben wir uns entschlossen, diese genauer unter die Lupe zu nehmen. In unserem vierten Versuch haben wir uns dafür entschieden, ein klassisches Jump-and-Run-Level zu gestalten und dabei ein schönes Environment zu erschaffen.

Im Folgenden möchten wir unsere Erfahrungen mit der neuen Version der Unreal Engine teilen und einige Screenshots unseres Spiels präsentieren.

4.2. Unreal-Engine

Herunterladen kann man jede Version der Unreal-Engine im Epic-Games Launcher.

Nach dem Starten der Engine werden Entwickler mit einer Reihe von Optionen begrüßt, die auf den jeweiligen Use-Case abgestimmt sind.

Unreal-GUI

Da wir uns für das Entwickeln eines Spieles entschieden haben, bezieht sich das folgende vor allem darauf.

Für die Entwicklung der gewünschten Anwendung bietet die Engine vorinstallierte Funktionen wie z.B. die Erstellung von Objekten. Sollten jedoch zusätzliche Funktionalitäten benötigt werden, wie etwa Wasser, können diese einfach über Plugins installiert werden. Die Erweiterung von Oberflächen, ganzen Objekt-Meshes und Vegetation kann über Quixel Bridge erfolgen, eine Art Extension-Site, die mit jedem Epic Games Account genutzt werden kann. Hier sind alle herunterladbaren Meshes zu finden, die dann in die spezifischen Projekte integriert werden müssen.

Quixel Bridge Surface

Um all diese Funktionen zu strukturieren, bietet Unreal folgende Modeling-Optionen: Select, Landscape, Foliage, Mesh Paint, Modeling, Fracture, Brush Editing und Animation. Die wichtigsten Optionen für unser Projekt waren folgende:

  • Select: Auswählen von Objekten

  • Landscape: Erschaffen einer Welt mit spezifischen Größen und Texturangaben

  • Foliage: Bedecken des Landscapes mit Vegetation

Wenn man sich in einem Projekt befindet, können Objekte erstellt, gedreht und verschoben werden. Diese Optionen können über Shortcuts, die Auswahl der gewünschten Option oben rechts oder das Selektieren des Objekts angepasst werden.

adding a pillar

Allerdings kommt von einer schönen Oberfläche noch keine Funktionalität. Hierfür bietet Unreal zwei Coding-Optionen: Blueprints und C++.

showcase unreal-blueprints

1. Blueprints sind Bausteine, die miteinander verbunden werden können. Ein Baustein kann hierbei fast alles sein: eine Funktion, eine Variable oder sogar eine Klasse. Natürlich können auch selbst Bausteine erstellt und integriert werden. Somit können auch Nutzer, die sich eventuell nicht besonders gut mit Programmiersprachen als solche auskennen, Entwicklungen vornehmen. In der gegebenen Abbildung sieht man zum Beispiel die Funktion eines Checkpoints, an dem der Spieler respawned.

2. Die zweite Coding-Option ist C++. Hiermit können Entwickler die Engine nach ihren eigenen Vorstellungen anpassen und erweitern. C++ bietet somit eine sehr flexible Möglichkeit, um komplexe Funktionalitäten zu implementieren. Allerdings wird hiermit auch eine gewisse Programmierkenntnis und -erfahrung vorausgesetzt.

4.3. Jump&Run

Für unser Beispiel-Spiel haben wir das First-Person-Template von Unreal als Basis genommen. Wir haben hierfür entschieden, da Jump&Run-Spiele durch vorhandene Erfahrung normalerweise mehr Spaß machen und das Template bereits ein schönes Player-Model sowie Funktionen für Bewegung und Springen bietet. Da die Unreal Engine vor allem für ihre außergewöhnliche Grafik bekannt ist, haben wir uns darauf konzentriert, eine ansprechende Umgebung zu schaffen. Wir wollten uns aber auch im Bereich Coden, bzw. Blueprints ausprobieren und haben deshalb eine kleine Checkpoint-Funktion integriert (siehe Image-Blueprints).

Das erste Element, das wir für das Spiel benötigten, war natürlich der Boden. Wir haben daher ein 8x8-Landscape erstellt und damit herumgespielt, indem wir Hügel und andere Landschaftsmerkmale hinzugefügt haben. So haben wir eine kleine Startregion geschaffen, die von Bergen und Barrieren eingegrenzt wird.

In einem Tutorial wurde gezeigt, wie man eine Insel erstellt und so eine „natürliche“ Grenze für den Spieler schafft. Wir wollten diese Funktionalität auch nutzen und haben das noch in der Beta-Phase befindliche Wasser-Plugin heruntergeladen, um einen Ozean um unsere Insel zu erstellen. Leider hatte das Plugin noch kein Gespür für Oberflächen und hat die Insel ständig überschwemmt. Deshalb haben wir uns entschieden, den Ozean zu einem stillen Gewässer zu machen und die Wellenhöhe auf 0 zu setzen.

Dann haben wir eine kleine schwebende Plattform für das Jump&Run erstellt und unseren ersten Sprung ausprobiert. Nachdem wir ein Gefühl für die Entfernungen bekommen hatten, haben wir schnell weitere Plattformen hinzugefügt. Wir haben auch damit begonnen, die Plattformen zu drehen und in verschiedenen Größen zu erstellen. Da Jump&Run-Spiele immer ein Ziel haben, haben wir eine kleine Plattform auf dem Hügel erstellt und diesen so steil gestaltet, dass er nicht mehr durch normale Bewegung besteigbar war. Diese Plattform sollte das Ende des Jump&Runs markieren.

Um eine schönere Atmosphäre zu schaffen, haben wir uns entschieden, die Sonne zu senken. Da die Sonne nur ein Objekt ist, war es durch einfaches Drehen sehr leicht, eine abendliche Stimmung zu erzeugen.

Jump&Run Island

Die obige Abbildung zeigt die Aussicht von der Plattform auf die Insel, insbesondere auf die Startregion, in der der Spieler spawned.

Im Nachhinein haben wir uns entschieden, noch Vegetation zu integrieren. Wir haben einige Meshes von Quixel Bridge heruntergeladen und die Foliage-Funktionalität genutzt. Dabei ist zu beachten, dass große Rechenlasten auftreten können, die sogar zum Absturz des Programms führen können. Dies liegt vor allem daran, dass viele kleine Objekte gleichzeitig in den gegebenen Radius mit einer bestimmten Dichte pro Objekt eingefügt werden sollen.

Wir waren mit dem Ergebnis mehr als zufrieden, aber die Blueprints waren noch nicht ausprobiert. Um dies zu tun und da es eine der wenigen fehlenden Komponenten für unser Jump&Run-Spiel war, haben wir uns entschieden, eine Checkpoint-Funktion zu implementieren. Wir haben uns ein YouTube-Video angesehen, das uns zeigte, wie man einen Checkpoint mit Blueprints erstellt. Danach haben wir auf einer der Plattformen einen Checkpoint integriert. Der Checkpoint speichert die Position des Spielers, sodass er, wenn er stirbt, an dieser Stelle respawnen kann, ohne von vorne beginnen zu müssen. Dies verleiht dem Spiel mehr Komfort und eine bessere Spielerfahrung.

4.4. Fazit

Die Unreal Engine 5 ist eine sehr leistungsfähige und benutzerfreundliche Engine, die auch von Nicht-Programmierern genutzt werden kann, um beeindruckende Ergebnisse zu erzielen. Die vielen Bausteine, Plugins und Quixel Bridge bieten eine Menge Möglichkeiten, aber können den Nutzer auch überfordern. Es gibt jedoch viele Tutorials auf YouTube und anderen Plattformen, die helfen können, sich schnell in der Engine zurechtzufinden.

Das einzige Problem, das wir hatten, war die Bewegung innerhalb der Engine (per Pfeiltasten und Mausrad), die sich manchmal unnatürlich anfühlen konnte. Aber insgesamt überwiegt der Nutzen, den die Engine bietet, und mit Anpassung und Übung sollte dieses Problem auch verschwinden.

Insgesamt waren wir aber mit dem Ergebnis unseres Projekts sehr zufrieden und empfehlen die Nutzung der Unreal Engine für andere Spieleentwickler.