Unreal Engine ist eine Echtzeit-3D-Engine von Epic Games. Sie stellt dir zahlreiche technische Systeme und Entwicklungswerkzeuge bereit, mit denen du Spiele und andere interaktive 3D-Anwendungen entwickeln kannst. Dabei reicht die Engine von der Darstellung einer Spielwelt über Physik und Animation bis zur Programmierung, Fehlersuche und Zusammenarbeit im Team.
Was ist Unreal Engine?
Eine Spiele-Engine bildet das technische Fundament eines Spiels. Statt jedes grundlegende System selbst programmieren zu müssen, kannst du auf bereits vorhandene Funktionen zurückgreifen und sie für dein Projekt konfigurieren oder erweitern.
Unreal Engine übernimmt unter anderem Aufgaben rund um Rendering, Physik, Animation, Audio, Benutzeroberflächen und Levelgestaltung. Rendering bezeichnet dabei die Berechnung des sichtbaren Bildes aus den Daten deiner Spielwelt. Die Engine verarbeitet beispielsweise Modelle, Materialien, Lichtquellen und Kamerainformationen und erzeugt daraus die Darstellung auf dem Bildschirm.
Der Editor als zentrale Arbeitsumgebung
Ein großer Teil der Arbeit findet im Unreal Editor statt. Dort kannst du Level aufbauen, Objekte platzieren, Eigenschaften verändern, Materialien bearbeiten, Animationen einbinden und viele Systeme des Spiels konfigurieren.
Die verschiedenen Werkzeuge greifen dabei ineinander. Platzierst du beispielsweise eine Tür in einem Level, besitzt das sichtbare 3D-Modell allein noch keine Spiellogik. Zusätzlich benötigst du Regeln dafür, wann sie sich öffnen darf, welche Animation abgespielt wird und wie das Spiel auf eine Interaktion reagiert.
Programmieren mit C++ und Blueprints
Für die Spiellogik bietet Unreal Engine unterschiedliche Möglichkeiten. Eine davon ist C++. Mit der Programmiersprache kannst du eigene Klassen, Systeme und Funktionen entwickeln und tief in die technische Struktur eines Projekts eingreifen.
Daneben steht mit Blueprints ein visuelles Skriptsystem zur Verfügung. Statt ausschließlich Programmcode zu schreiben, verbindest du grafische Knoten miteinander. Diese Nodes stehen beispielsweise für Ereignisse, Bedingungen, Variablen oder Funktionsaufrufe.
Blueprints und C++ schließen sich nicht gegenseitig aus. Ein Projekt kann grundlegende Systeme in C++ umsetzen und darauf aufbauende Abläufe über Blueprints steuern. Welche Aufteilung sinnvoll ist, hängt vom jeweiligen Projekt und Team ab.
Level und Spielwelten gestalten
Im Level Editor entsteht die räumliche Struktur deiner Spielwelt. Du platzierst beispielsweise Gebäude, Landschaften, Lichtquellen, Gegner, Gegenstände und interaktive Objekte.
Dabei besteht ein Level nicht nur aus sichtbarer Umgebung. Unsichtbare Kollisionsbereiche bestimmen beispielsweise, wo sich eine Figur bewegen kann. Trigger können Ereignisse auslösen, sobald der Spieler einen bestimmten Bereich betritt. Weitere Komponenten steuern Beleuchtung, Audio oder Gameplay-Funktionen.
Rendering mit Nanite und Lumen
Zum Rendering-System moderner Unreal-Engine-Versionen gehören Technologien wie Nanite und Lumen. Nanite dient der Darstellung sehr detaillierter Geometrie. Die Engine verwaltet dabei automatisch, wie viele geometrische Details für die jeweilige Darstellung benötigt werden.
Lumen übernimmt Aufgaben rund um dynamische globale Beleuchtung und Reflexionen. Vereinfacht ausgedrückt berücksichtigt das System nicht nur direktes Licht einer Lichtquelle, sondern auch Licht, das innerhalb einer Szene weiterwirkt.
Solche Technologien nehmen dir nicht sämtliche Optimierungsarbeit ab. Komplexität der Spielwelt, Zielplattform, Auflösung und gewünschte Bildrate beeinflussen weiterhin die technischen Anforderungen eines Projekts.
Physik, Kollisionen und Interaktionen
Ein Spiel benötigt Regeln dafür, wie Objekte miteinander reagieren. Kollisionen verhindern beispielsweise, dass deine Spielfigur einfach durch eine Wand läuft. Physikalische Simulationen können darüber hinaus Bewegungen, Kräfte und andere Wechselwirkungen berechnen.
Für eine einfache Tür bedeutet das: Die Engine stellt grundlegende technische Funktionen bereit, während du festlegst, was im konkreten Spiel geschehen soll. Vielleicht öffnet sich die Tür bei einer Interaktion, benötigt einen Schlüssel oder bleibt während eines Kampfes verschlossen.
Animationen und Charaktere
Unreal Engine enthält außerdem Werkzeuge für animierte Figuren. Ein Skelett bildet dabei die bewegliche Struktur eines Charaktermodells. Animationen bestimmen anschließend beispielsweise Laufbewegungen, Angriffe oder Reaktionen.
Damit unterschiedliche Bewegungen sinnvoll zusammenspielen, lassen sich Bedingungen und Übergänge definieren. Die Figur kann dadurch abhängig von ihrem aktuellen Zustand zwischen Stehen, Laufen, Springen oder anderen Animationen wechseln.
Was passiert beim Testen?
Während der Entwicklung musst du Änderungen regelmäßig ausprobieren. Unreal Engine ermöglicht es, ein Projekt direkt aus dem Editor zu starten und Spielsituationen zu testen. So kannst du beispielsweise prüfen, ob deine Tür tatsächlich nur mit dem vorgesehenen Schlüssel geöffnet wird.
Ein erfolgreicher Test bedeutet allerdings nicht, dass das gesamte System fehlerfrei funktioniert. Andere Gegenstände, Level oder Spielzustände können zusätzliche Situationen erzeugen. Deshalb gehören wiederholte Tests und systematische Fehlersuche zum Entwicklungsprozess.
Debugging in Unreal Engine
Beim Debugging untersuchst du Fehler systematisch. Ein sichtbares Problem liefert zunächst nur ein Symptom. Anschließend musst du herausfinden, wodurch es verursacht wird.
Unreal Engine stellt dafür verschiedene Informationen und Werkzeuge bereit. Meldungen im Output Log können beispielsweise Hinweise auf Warnungen und Fehler geben. Bei einem Crash können zusätzlich technische Absturzinformationen für die Untersuchung relevant sein.
Logs helfen bei der Fehlersuche
Log-Dateien dokumentieren Ereignisse während der Ausführung. Entwickler können außerdem eigene Meldungen ausgeben lassen. Dadurch lässt sich beispielsweise prüfen, ob eine bestimmte Funktion überhaupt aufgerufen wurde oder welchen Wert eine Variable zu diesem Zeitpunkt besaß.
Eine Log-Meldung beweist allein noch keine Fehlerursache. Sie liefert einen weiteren Hinweis, den du mit dem beobachteten Verhalten und anderen technischen Informationen kombinierst.
Stack Traces nach einem Fehler
Bei bestimmten Fehlern oder Abstürzen kann ein Stack Trace zeigen, welche Funktionen zum betreffenden Zeitpunkt aufgerufen wurden. Führt die Aufrufkette beispielsweise zur Türinteraktion, kannst du deine Untersuchung auf diesen Bereich konzentrieren.
Der Stack Trace zeigt allerdings nicht automatisch die eigentliche Ursache. Ein falscher Zustand kann bereits vorher entstanden sein und erst beim späteren Funktionsaufruf einen Fehler auslösen.
Fehler aus veröffentlichten Builds untersuchen
Während der Entwicklung kannst du einen Fehler unmittelbar beobachten. Schwieriger wird die Untersuchung, wenn ein Spiel auf dem Rechner eines Testers oder Spielers abstürzt.
Hier können Systeme zur Fehlererfassung zusätzliche Informationen sammeln. Sentry lässt sich beispielsweise zur Erfassung und Analyse technischer Fehler einsetzen. Je nach Einrichtung können Fehlerdaten mit Informationen über die betroffene Version verbunden werden.
Sentry ersetzt das Debugging nicht. Die gesammelten Daten helfen dir vielmehr dabei, einen Fehler einzugrenzen und anschließend im Projekt zu untersuchen.
Unreal Engine und Versionsverwaltung
Bei einem größeren Projekt arbeiten häufig mehrere Personen gleichzeitig an Code, Levels, Modellen, Animationen und weiteren Dateien. Eine Versionsverwaltung dokumentiert diese Änderungen und ermöglicht es, unterschiedliche Entwicklungsstände nachzuvollziehen.
Unreal Engine unterstützt die Arbeit mit entsprechenden Systemen. Dazu gehört Perforce P4, das besonders bei Projekten mit vielen großen Binärdateien eine Rolle spielen kann.
Die Verbindung ermöglicht unter anderem, bestimmte Vorgänge der Versionsverwaltung aus dem Arbeitsumfeld des Editors heraus zu nutzen. Welche Funktionen zur Verfügung stehen, hängt vom eingesetzten System und seiner Konfiguration ab.
Warum Versionsverwaltung bei der Fehlersuche hilft
Versionsverwaltung dient nicht nur dazu, Dateien gemeinsam zu bearbeiten. Sie kann auch beim Debugging helfen. Taucht ein Problem erstmals in einem neuen Build auf, kannst du untersuchen, welche Änderungen seit dem letzten funktionierenden Stand vorgenommen wurden.
In P4 lassen sich zusammengehörende Änderungen über Changelists organisieren. Eine kürzlich veränderte Datei kann dadurch zu einem Ausgangspunkt für die weitere Fehlersuche werden.
Von der verdächtigen Änderung zum Code Review
Eine Änderung, die zeitlich oder technisch mit einem Fehler zusammenhängen könnte, lässt sich als möglicher Verdachtsfall untersuchen. Das bedeutet noch nicht, dass sie tatsächlich die Ursache darstellt.
Bei einem Code Review betrachtet ein Team die betreffende Änderung gemeinsam. Kommentare und Rückfragen helfen dabei, die Umsetzung erneut zu prüfen und mögliche Nebenwirkungen zu erkennen.
Arbeitet das Projekt mit Perforce, kann P4 Code Review die Versionsverwaltung mit diesem Review-Prozess verbinden.
Vom Projekt zum spielbaren Build
Die Dateien im Unreal-Engine-Projekt sind noch nicht automatisch die fertige Spielversion. Im Build-Prozess entsteht aus Programmcode, Assets, Konfigurationen und weiteren Bestandteilen eine ausführbare beziehungsweise für die Zielplattform geeignete Fassung.
Nach einer Fehlerkorrektur erzeugst du beispielsweise einen neuen Build. Anschließend testest du erneut die Situation, die zuvor zum Problem geführt hat. Funktioniert sie jetzt, folgen weitere Prüfungen, damit die Korrektur nicht an anderer Stelle neue Fehler verursacht.
Unreal Engine ist nicht nur ein einzelnes Werkzeug
Der Begriff Unreal Engine bezeichnet damit weit mehr als einen Editor zum Aufbau von 3D-Welten. Unter einem gemeinsamen technischen Rahmen kommen zahlreiche Systeme für Darstellung, Gameplay, Animation, Audio, Physik, Programmierung und Entwicklung zusammen.
Weitere Werkzeuge ergänzen diesen Ablauf. Versionsverwaltung dokumentiert Veränderungen, Code Reviews unterstützen die gemeinsame Prüfung und Systeme zur Fehlererfassung liefern Informationen über Probleme aus laufenden Builds. Zusammengenommen entsteht daraus ein Entwicklungsprozess, der von der ersten Spielmechanik bis zur Untersuchung eines Absturzes reicht.
Weitere Artikel auf Games und Lyrik
Wenn du dich neben der technischen Spieleentwicklung auch für klassische Adventures interessierst, findest du auf Games und Lyrik weitere Beiträge. In Runaway 3: A Twist of Fate begleitest du Brian und Gina durch ein Point-and-Click-Adventure mit Rätseln, ungewöhnlichen Situationen und einer Geschichte voller Wendungen.
Weitere Informationen zur Engine, ihren Werkzeugen und aktuellen Funktionen findest du auf der offiziellen Website der Unreal Engine.
