PC-Optimierung in Unreal Engine 5.7 Projekten: Hardware-Ziele, Asset-Verwaltung und professionelle Profiling-Strategien
Bietet professionelle Arbeitsabläufe für die PC-Optimierung in Unreal Engine 5.7-Projekten sowie praktische Strategien für Indie-Entwickler. Behandelt werden Ziel-Hardware-Bereiche (niedrig/mittel/hoch/ultra), Leistungsbudgets (FPS, Frametime, CPU/GPU-Anteile), Asset-Optimierung (Mesh, LOD, Textur, Nanite, Virtual Textures usw.), Render-Einstellungen (Lumen, Raytracing, Schatten, Reflexionen, Post-Processing), Qualitäts- und Skalierungseinstellungen, Profiling-Tools (Unreal Insights, GPU Profiler, RenderDoc, PIX usw.) und Arbeitsabläufe, Paketierungs-/Build-Pipelines (Paketierung, Cook, Shader-Kompilierung, Level-Loading), automatisierte und manuelle Teststrategien, Performance-Regressionstests mit CI/CD, hardware-/treiberspezifische Optimierungen, Speicher- und Streaming-Management sowie Multiplayer-/Netzwerkthemen. Für jeden Schritt werden konkrete Arbeitsabläufe, empfohlene Einstellungen/Bereiche, Vor- und Nachteile, häufige Fehler sowie Zeit-/Arbeitsaufwandsschätzungen bereitgestellt. Zusätzlich werden Qualitätsvoreinstellungen mit Einstellungen, Profiling-Tools mit Anwendungszenarien und Asset-Optimierungstechniken mit erwarteten Gewinnen in Vergleichstabellen gegenübergestellt. Beispiel-Befehlszeilen, Unreal-Konsolenbefehle und einfache CI-Testfälle wurden hinzugefügt.
Hardware-Ziele und Leistungsbudgets

Da die PC-Plattform eine Vielzahl unterschiedlicher Hardware umfasst, ist es wichtig, Zielsysteme zu kategorisieren. Beispielsweise können Systeme mit integrierten oder älteren GPUs als „niedrig“; aktuelle Mittelklasse-GPUs (z. B. GTX 1660) und CPUs als „mittel“; moderne High-End-GPUs (z. B. RTX 3070) als „hoch“ und absolute Spitzenhardware (wie die RTX 4080) als „ultra“ eingestuft werden. Eine Mindestleistung von 1080p bei mittleren Einstellungen mit 30 FPS oder 1440p bei hohen Einstellungen mit 60 FPS sind empfohlene Ziele. Das Frame-Budget beträgt ca. 16,66 ms für 60 FPS und ca. 33 ms für 30 FPS. Bei der Festlegung der Leistungsziele sollten Auflösung, Grafikeinstellungen sowie das Mindest-/Empfohlene System (CPU, GPU, RAM, VRAM) berücksichtigt und Profiling-Aktivitäten in einer konsistenten Hardware- und Treiberumgebung durchgeführt werden.
Frame-Budgets: 60 FPS ≈ 16,7 ms; 30 FPS ≈ 33.3 ms (z. B. für mobile oder Low-End-Geräte). Höhere Raten wie 144 FPS ≈ 6,9 ms können auch für VR/Monitore mit hoher Bildwiederholrate verwendet werden. Die Aufteilung des Frame-Budgets erfolgt im Allgemeinen gleichmäßig zwischen CPU und GPU oder angepasst an die Last des Zielgeräts. Ein System, das beispielsweise die CPU zu 10–20 % und die GPU zu ca. 80–90 % auslastet, ist möglicherweise GPU-gebunden. Eine GPU-Auslastung von >95 % weist auf eine GPU-Bindung hin; eine geringe GPU-Auslastung und eine hohe GameThread-Zeit deuten auf eine CPU-Bindung hin.
Hardware-Profil: Auch neue iGPUs wie Intel Arc sollten berücksichtigt werden; Steam-Hardwarestatistiken und GPU-Profilscores können als Ausgangspunkt dienen. Für das Profiling sollten stets die aktuellsten GPU-Treiber verwendet, unnötige Hintergrundanwendungen geschlossen und GPU-Übertaktungseinstellungen bei Bedarf zurückgesetzt werden. Es wird empfohlen, die hardwarebeschleunigte GPU-Planung unter Windows zu deaktivieren, um genaue Informationen zur GPU/CPU-Auslastung zu erhalten.
Asset-Optimierung
Mesh- und LOD-Management: Unterteilen Sie komplexe Modelle in LOD-Stufen (Level of Detail). Das Erstellen von 3–5 LODs für jedes statische Mesh verringert die Detailast in der Ferne. LODs mit geringem Detailgrad können die Anzahl der Dreiecke um 50–90 % reduzieren. Beispielsweise senkt der Übergang eines Baumes von LOD0 zu LOD3 die Schatten- und Rendering-Kosten erheblich. Die Verwendung von Nanite wird nur für hochpolygonale, opake Objekte empfohlen. Nanite verwaltet den Polygonfluss bei Objekten mit voluminösen Körpern wie Bäumen oder Felsformationen automatisch und macht den manuellen Bedarf an LODs überflüssig; dadurch kann die Ziel-Framerate bei einer viel höheren Vegetationsdichte beibehalten werden (z. B. 58 FPS mit Nanite bei 250K Bäumen vs. herkömmliche 1 2 3 21 • 45 • 6 7 8 1
41 FPS). Nanite ist jedoch nicht immer von Vorteil: Sehr einfache Geometrien wie einseitige Graskarten werden durch herkömmliche Methoden schneller gerendert. Nanite kann zusätzliche VRAM-Kosten verursachen; überwachen Sie daher die Speicherauslastung mit stat RHI. Vereinfachen oder konsolidieren Sie komplexe Materialien nach Möglichkeit (z. B. eine einzige Textur-Atlas anstelle mehrerer Materialien). Die Erstellung von HLODs (High-Level-LODs) reduziert die Anzahl der Draw Calls, indem entfernte Gebäude zusammengefasst und in Dreiecke konvertiert werden. Schatten-Proxys, die hohe Polygone durch ein einzelnes Polygon repräsentieren (über Merge Actors / Geometry Script), senken ebenfalls die Schattenkosten.

Texturen und Virtual Textures (VT): Legen Sie Texturgrößen basierend auf dem Ziel-VRAM fest: maximal 1K–2K für Low-End-Hardware, 4K+ für High-End-Hardware. Verwenden Sie Mipmaps, um übermäßigen Speicher- und Bandbreitenverbrauch zu verhindern. Virtuelle Texturen (Virtual Textures) sparen VRAM bei sehr großen Welttexturen, erhöhen jedoch die Shader-Komplexität und können zusätzliche Rechenkosten verursachen. Beispielsweise erhöht die Verwendung von 8K für separate Farb- und Normal-Map-Texturen in einem großen Open-World-Projekt die Speicherlast anstelle der Leistung. Als Faustregel gilt: Virtuelle Texturen werden bei Projekten mit komplexen Details und Speicherbeschränkungen bevorzugt; in einfachen Szenen ist es besser, zu normalen Texturen zurückzukehren. Die Texturkomprimierung (z. B. Oodle Texture) verringert die Paketgröße um 50 % oder mehr und beschleunigt die Ladezeiten.
Material-Optimierung: Verwenden Sie nach Möglichkeit einfache Materialien. Begrenzen Sie die Anzahl einzigartiger Materialien in einer Szene; reduzieren Sie Draw Calls durch das Atlasing von Materialien. Mehrschichtige (layered) Materialien, Masken und Materialien mit dynamischer Verformung (WPO, Vertex Displacement) erhöhen die GPU-Kosten; verwenden Sie diese nur bei Bedarf und auf Objekten, die nicht in der Ferne zu sehen sind. Ebenso verringern maskierte Texturen die Effizienz, indem sie die Anzahl transparenter Pixel erhöhen. Legen Sie für die Sichtbarkeitsoptimierung (Culling) geeignete Abblenddistanzen (cull
distance) für Objekte fest; es ist beispielsweise sinnvoll, kleine Büsche jenseits von 300–500 m auszublenden.
Render-Einstellungen und Beleuchtung
Lumen und Raytracing: Lumens dynamische GI bietet eine qualitativ hochwertige Beleuchtung, ist jedoch rechenintensiv. Wenn Sie Low-End-Systeme anvisieren, reduzieren Sie die Lumen-Detailstufe oder schalten Sie sie ab. Überprüfen Sie CVars wie r.LumenSceneDetail und r.LumenReflections.Quality. Sparen Sie CPU-Kosten ein, indem Sie Lumen anstelle von statischem Raytracing (Static Ray Tracing) verwenden. Wenn Virtual Shadow Maps (VSM) für die Schattenbildung verwendet werden, verringern Sie das Schatten-LOD auf Low-End-Systemen: Mit r.Shadow.NaniteLODBias kann eine Verwendung von niedrigeren Details (LOD) im Nanite-Schatten eingestellt werden. Wenn mehrschichtige Strahlenreflexionen erforderlich sind, wechseln Sie auf Systemen mit begrenztem Materialspeicher zu Screen-Space Reflections (SSR).

Schatten und Reflexionen: Dynamische Schatten gehören oft zu den rechenintensivsten Prozessen. Stellen Sie Directional-Schatten (CSM) für niedrige Qualität mit einer geringeren Texturauflösung ein (r.ShadowQuality, r.CascadeDistributionExponent). Verwenden Sie Taktiken wie das vollständige Abschalten von Schatten oder das Reduzieren von r.Shadow.DistanceScale, um auf mobilen oder integrierten GPUs Ressourcen zu sparen. Minimieren Sie die Anzahl von Reflection Captures; zu viele Cubemaps erhöhen die GPU-Last. Für ältere/mittlere Systeme werden Planar Reflections (für Wasseroberflächen etc.) oder Screen-Space Reflections (r.SSR.Quality) bevorzugt.
Post-Processing und visuelle Effekte: Post-Processing-Effekte (Tiefenunschärfe, Bloom, Tone Mapping usw.) beeinträchtigen die Leistung. Schalten Sie Tiefenunschärfe und Bewegungsunschärfe ab, wenn sie nicht benötigt werden (r.DepthOfFieldQuality=0, r.MotionBlurQuality=0). Reduzieren Sie Effekte wie Bloom, Lens Flares und volumetrischen Nebel auf ein niedriges Niveau oder schalten Sie sie aus. Feinabstimmen der Bildschirmauflösung (r.ScreenPercentage) zwischen 70 % und 150 % je nach Zieleinstellungen; ein niedrigerer Prozentsatz reduziert die GPU-Last erheblich, geht jedoch mit einem Qualitätsverlust einher. Beispielsweise kann bei Ultra-Einstellungen eine Bildschirmauflösung von 100 % verwendet werden, während auf Low-End-Systemen 70–80 % ausreichen können. Wenn Echtzeit-Beleuchtungsberechnungen erforderlich sind, testen Sie raytracingbasierte 89 10 11 12 13 14 15 16 11 2
Effekte (Ray-Traced Shadows, Reflections) mit niedriger Auflösung; wenn dies die Leistung mindert, sollte zu normalen Schatten und SSR zurückgekehrt werden.
Skalierungs- und Qualitätseinstellungen
Unreal Engine 5 bietet Engine Scalability-Voreinstellungen, um die Qualitätseinstellungen einfach an die Hardware anzupassen. Standard-Qualitätsstufen sind Low, Medium, High, Epic, Cinematic. Diese Voreinstellungen ändern viele CVars auf einmal (Anti-Aliasing, Schatten, Texturauflösung, Post-Processing-Details, Effektstufe usw.). Beispielsweise werden auf der Stufe Low die Schattenqualität und Texturdetails auf ein Minimum reduziert, während auf der Stufe Epic die höchste Qualität und detaillierteste Einstellungen aktiviert werden. Es ist wichtig, zu Beginn einen geeigneten Skalierungsvorschlag durch umfassende Benchmark-Tests (synthbenchmark) basierend auf dem Ziel-Hardwarebereich auszuwählen. Falls erforderlich, können CVars über ein gerätespezifisches Device Profile oder DefaultScalability.ini für jede Qualitätsstufe feinabgestimmt werden. Während des Entwicklungsprozesses können dynamische Änderungen über das Einstellungs-Panel mit der Tilde-Taste (~) oder über Konsolenbefehle wie r.DefaultFeature.* und r.Scalability.* (z. B. r.ViewDistanceQuality 2) vorgenommen werden. Beispiel-Qualitätsvoreinstellungen und ihre Entsprechungen:
QualitätsstufeBildschirmauflösung (%)SichtweitenqualitätSchattenqualitätTexturqualitätEffektqualitätLow70NiedrigNiedrig (0)Niedrig (0)Niedrig (0)Medium85MittelMittel (1)Mittel (1)Mittel (1)High100HochHoch (2)Hoch (2)Hoch (2)Epic120Am höchstenEpic (3)Epic (3)Epic (3)Cinematic150Ultra (falls vorhanden)Ultra (4)Ultra (4)Ultra (4)
Diese Voreinstellungen können beim Spielstart oder im Einstellungsmenü mit dem Befehl ScalabilityQuality angewendet werden (z. B. r.ScalabilityQuality 3 für High). Darüber hinaus kann mit dem Significance Manager eine intelligentere Stufeneinteilung erreicht werden, indem verschiedenen Objekten in der Szene basierend auf der Entfernung Prioritäten zugewiesen werden.
Profiling-Tools und Arbeitsabläufe
Der grundlegende Schritt der Optimierung ist das Profiling. Die wichtigsten Tools und Befehle, die in UE5.7 verwendet werden, sind:
Unreal Insights: Zeichnet CPU/GPU/Thread-Aktivitäten über mehrere Frames hinweg detailliert auf. Führen Sie UnrealInsights.exe im Editor aus und starten Sie das Spiel, oder lösen Sie die Verbindung im Spiel über den Befehl Trace.Send 127.0.0.1 aus. Mit Trace.Pause und Trace.Resume wird die Aufzeichnung gestartet und gestoppt. Insights stellt Hunderte von Metriken grafisch dar und verdeutlicht Engpässe.
Stat-Befehle: Eignen sich hervorragend für die Echtzeit-Datenüberwachung im Spiel. Zum Beispiel zeigen stat fps, stat unit, stat unitgraph die FPS und die Zeiten der Haupt-Threads an. stat gpu fasst die GPU-Last zusammen (Frame-Zeit, Draw Calls, Anzahl der Dreiecke). stat scenerendering liefert Details zum Ray-Durchgang, stat nanite gibt Nanite-Dreiecks-/-Instanzstatistiken aus. stat RHI zeigt den Speicherzähler. Erste Analysen werden mit diesen Befehlen durchgeführt; wenn beispielsweise DrawTime nahe an FrameTime liegt, deutet dies auf eine GPU-Bindung hin, bei Nähe zu GameTime auf eine CPU-Bindung.
ProfileGPU: Mit r.ProfileGPU=1 wird die GPU-Timeline am Ende jedes Frames in das Log geschrieben. Dies ist nützlich, um einfache GPU-Engpässe zu finden. 1717 18 19 • 20 21 • 2223 23 23 24 • 3
RenderDoc: Erfasst einen einzelnen GPU-Frame (DirectX12/Vulkan) und untersucht die Shader-Phasen. Wird für tiefgehende Grafik-Pipeline-Analysen verwendet.
PIX (Windows): Das DX12-GPU-Analysetool von Microsoft. Wird für Inline-Grafik-Timing, Marker usw. bevorzugt. Verbindet sich über den Parameter -AttachPix mit dem Spiel (UE5.5+).
PresentMon: Protokolliert GPU/CPU-Auslastungsraten als Zeitreihe. Ideal, um den Engpasstyp in Live-Diagrammen zu erkennen.
GPUView: Analysiert GPU/CPU-Subsysteme mit dem Windows Performance Toolkit im Detail. Wird insbesondere für D3D-Warteschlangen, Konflikte und GPU-Zeichen-Details verwendet (das GPU-Timing sollte beim Profiling deaktiviert sein).
VTune / uProf: Tiefgehende CPU-Profiler wie Intel VTune oder AMD uProf werden verwendet, um Codeabschnitte im Spiel, Speicherschemata und die Effizienz der Sprungvorhersage (Branch Prediction) zu untersuchen.
Beispiel einer Vergleichstabelle:
ToolAnwendungsbereich / ZweckUnreal InsightsMulti-Frame-CPU/GPU-Verarbeitungsanalyse (Programmablauf)Stat-BefehleEchtzeit-Metriken im Spiel (FPS, Thread-Zeiten)ProfileGPUFrame-basierte GPU-Zeitplanung (Details zu Draw-Events)RenderDocEinzelner GPU-Frame-Capture und detaillierte Draw-Call-AnalysePIX (Windows)GPU-Timing/DX-API-Analyse, Performance-BridgesPresentMonEchtzeit-GPU/CPU-AuslastungsdiagrammeGPUViewLow-Level-GPU/CPU-Pipeline- und InteraktionsanalyseVTune / uProfDetaillierte Analyse von CPU-Hotspots, Speicherbandbreite usw.
Profiling-Arbeitsablauf: In der Regel wird zunächst eine schnelle Überprüfung mit Stat-Befehlen durchgeführt. Wenn ein Problem festgestellt wird, erfolgt der Übergang zu einer umfassenden Aufzeichnung mit Unreal Insights. Ist die CPU-Arbeitslast hoch, werden Code-Schritte mit Tools wie VTune untersucht; liegt ein GPU-Engpass vor, wird ein Frame mit RenderDoc/PIX/RGP erfasst. Sie können das Spiel beispielsweise in der Build-Konfiguration Test starten und Ausgabedaten über einen Kameraflug (siehe unten) mit Trace.Pause/Resume sammeln. Anhand der ermittelten Engpässe werden Einstellungen geändert und das Profiling wird wiederholt. Für das Profiling wird stets die Test- oder Shipping-Konfiguration empfohlen (die Test-Konfiguration unterstützt Insights). Wird die Development-Konfiguration verwendet, kann das leistungsmindernde DRED behoben werden (-dpcvars=r.D3D12.DRED=0,r.D3D12.LightweightDRED=0).
Paketierung und Build-Pipeline
Multi-Build und Paketierung: Für das finale Kompilieren wird der Cook & Package-Prozess mit dem Unreal Automation Tool (UAT) ausgeführt. Beispielbefehl:
RunUAT.batBuildCookRun-project="MyGame.uproject"-noP4-platform=Win64-clientconfig=Shipping-cook-allmaps-archive-archivedirectory="Build"-pak -prereqs
Dieser Befehl paketiert alle Maps und erstellt eine mit Oodle komprimierte pak-Datei. Darüber hinaus sollten Shader-Präcaching (-BuildAllShaderFiles) und PSO-Caching (-CacheShaders) durchgeführt werden. Wenn die Paketierung über die GUI erfolgt, werden Einstellungen wie „Include in pak“ und „Shipping“ unter Project Settings > Packaging überprüft. Für die Shader-Kompilierungszeit kann PSO Bundle Precache verwendet werden, um Shader-Caches vorab in der Konsole zu cachen, bevor das Spiel gestartet wird.

Konfigurationseinstellungen: Wie oben erwähnt, bietet die Test-Konfiguration eine Leistung, die dem Profiling nahekommt. In CI/CD wird normalerweise Commandlet (z. B. UnrealEditor-Cmd.exe) oder UAT verwendet. Beispiel-CI-Skript:
UE4Editor-Cmd.exeMyGame.uproject-run=Cook-targetplatform=Win64-CrashForUAT-unattended
Anschließend wird das Ausgabepaket mit UnrealPak.exe gepackt. Der Prozess kann auch automatisierte Server-/Client-Konfigurationen umfassen (z. B. für Multiplayer). Optionen wie Incremental Cooking und Shader-/Pak-Export beschleunigen Wiederholungen während des Entwicklungsprozesses.
Manuelle und automatische Teststrategien
Manueller Test: Analysieren Sie kritische Szenen, indem Sie sie von einem festgelegten Punkt aus oder über einen Kameraflug wiederholt ausführen. Mit den BugIt-Konsolenvbefehlen von Unreal Engine können Sie sich zu bestimmten Koordinaten teleportieren (z. B. BugItGo x y z). Dadurch beginnt jeder Test an derselben Position. FPS- und Frametime-Schwankungen werden mit stat fps und stat unit überwacht. Führen Sie im Laufe des Projekts von Zeit zu Zeit Stresstests auf verschiedenen PCs durch (hohe Frame-Bewegungen, Multiplayer-Szenarien usw.), um die Echtzeitleistung zu überprüfen.
Automatischer Test: Die experimentellen Leistungsautomatisierungsfunktionen von Unreal 5 (Automated Performance Tests) können verwendet werden. Dies dient dazu, FPS mit vordefinierten Kamerapfaden in bestimmten Levels aufzuzeichnen und Vergleiche anzustellen. Momentan können einfache Testautomaten mit Community-Plugins oder C++/Blueprint-Skripten entwickelt werden: Zum Beispiel kann gewartet werden, bis das Spiel in einem bestimmten Spielmodus eine bestimmte Ansicht erreicht, und die stat fps-Daten können protokolliert werden. Darüber hinaus kann bei jedem Workflow oder CI-Schritt eine Benchmark-Sitzung eingerichtet werden; während dieser wird das Spiel bei verschiedenen Qualitätseinstellungen (Low/High usw.) automatisch abgespielt und die Ergebnisse werden verglichen. Zusammenfassend wird empfohlen, für automatische Tests ein einfaches Level zu entwerfen (mit Szene oder Sequencer) und Skripte vorzubereiten, die die Eingangs- und Ausgangs-FPS-Werte aufzeichnen. Auf diese Weise werden Leistungsrückschritte frühzeitig erkannt.
CI/CD und Performance-Regressionstests
Es ist wichtig, Leistungstests in CI/CD-Pipelines (Jenkins, GitHub Actions usw.) einzubinden. Zum Beispiel kann nach jedem Commit oder täglich BuildCookRun ausgelöst und ein Benchmark in einer stabilen Szene ausgeführt werden. Die gesammelten Daten werden bei jedem Build verglichen; bei plötzlichen FPS-Abbrüchen wird eine Warnung ausgegeben. Mit Unreal Insights besteht die Möglichkeit, CSV-Ausgaben zu generieren und Sammelanalysen durchzuführen. Ein einfaches Beispiel für einen Test-Workflow:
Automatisierungsbefehle: Ein Test kann über die Befehlszeile im folgenden Format ausgeführt werden:
UE4Editor-Cmd.exe MyGame.uproject -run=Automation.RunTests PerfBenchmark.TestSuite -log=PerfTest.log
In diesem Beispiel wird ein Testset namens PerfBenchmark aufgerufen. Während des Tests wird die Frametime mit dem Befehl stat fps protokolliert.
Vergleich: Das CI-Skript extrahiert den FPS-Durchschnitt aus den Ausgabeprotokollen und vergleicht ihn mit dem zuvor aufgezeichneten Basiswert. Einfache Überprüfungen werden mit grep, Python oder benutzerdefinierten Tools durchgeführt.
Grafische Berichterstattung: Die gesammelten Statistiken (Frametime, CPU-/GPU-Auslastungsdiagramm) werden als visueller Bericht geführt und die Grafiken werden auf Jenkins/Git angezeigt.
Sie können diesen Prozess auch automatisieren, indem Sie Epics neue Leistungsautomatisierungs-Plugins oder PowerShell-basierte Tools verwenden (ähnlich wie die in den Unreal Fest-Präsentationen erwähnten Methoden). Es wird empfohlen, in CI/CD-Prozessen stets Pakete mit der Konfiguration Shipping/Test zu verwenden, um die Zuverlässigkeit der Profilergebnisse zu gewährleisten.
Plattform- und Treiberaspekte
Auf Windows-PCs sollte DirectX 12 als Grafik-API bevorzugt werden (UE5-Standard), da dies Multithreading und erweiterte Einstellungen ermöglicht. Für NVIDIA-GPUs sollte das entsprechende Software Development Kit (NVIDIA Nsight) und für AMD-GPUs der Radeon Profiler installiert sein. GPU-Treiber sollten stets auf dem neuesten Stand gehalten werden; manchmal können spezielle Entwicklertreiber die benötigten Optimierungen enthalten. Dennoch wird für die Stabilität beim Profiling ein Standardtreiber empfohlen. In den Windows-Einstellungen sollte der Energiesparplan für hohe Leistung ausgewählt und die vertikale Synchronisierung (VSync) deaktiviert werden. Unter den Startparametern der Konsole können die vertikale Synchronisierung mit -novsync und GC-Sicherheitsüberprüfungen wie -noverifygc deaktiviert werden. Funktionen wie „GPU-Beschleunigung“, die Grafiktreiberinhalte übermäßig optimieren, können die Profilergebnisse verfälschen und sollten während der Tests ausgeschaltet bleiben.
Speicher- und Streaming-Verwaltung
Textur- und Mesh-Streaming: Texture Streaming ist standardmäßig aktiviert; r.Streaming.PoolSize legt die VRAM-Obergrenze fest. Wenn das Limit überschritten wird, werden Mipmaps niedriger Stufe erzwungen. Wenn in großen Open-World-Projekten Virtual Texturing verwendet wird, passen Sie die Engine-CVars (r.VT.*) an, um die aktiven Texturpools zu verwalten.
Level-Streaming: Planen Sie Level Streaming im frühen Design. Reduzieren Sie die Speicherlast und steuern Sie die Ladezeit, indem Sie Karten in Unterbereiche aufteilen. Unterteilen Sie beispielsweise verschiedene Bereiche der Stadt mit World Partition oder Streamed Levels. Verwenden Sie für das Profiling die Befehle stat levels und Loadtimes.dumpreport. Langsam öffnende Szenen oder Ladestockungen können mit diesen Befehlen protokolliert und analysiert werden. Untersuchen Sie Blueprint- und Asset-Abhängigkeitsketten mit dem Tool SizeMap, um unnötige Referenzen zu eliminieren; überflüssige Assets können die Speicherlast massiv erhöhen.
Dynamischer Speicher: Wenn die spielbare Szene wächst, werden Systemspeicher und VRAM kritisch. Überwachen Sie die Speicherauslastung mit den Befehlen stat Memory und stat Streaming. In UE5 können Sie Low Level Memory (LLM) aktivieren, um zu sehen, welche Assets Speicher verbrauchen. Große Physikobjekte, zahlreiche SFX oder gleichzeitig verarbeitete Multiplayer-Daten können den Speicher schnell erschöpfen; profilen Sie diese und begrenzen Sie sie bei Bedarf.
Multiplayer und Netzwerk (Multiplayer/Network)
Multiplayer-Modi erhöhen die CPU-Last (Server-/Tick-Last, replizierte Objekte, Physikberechnungen). Selbst wenn es kein separater Prozess für jeden Spieler ist, verursacht der Server-Thread eine zusätzliche Last. Optimieren Sie die Replikationseinstellungen bei der Arbeit mit mehreren über das Netzwerk gesendeten Daten: Verhindern Sie das Senden unnötiger Objekte mit Update Rate und Net Relevancy. Komprimieren Sie nach Möglichkeit häufig verwendete RPCs (z. B. durch die Verwendung von Fast TArray) und senden Sie nur die Spieldaten, die wirklich erforderlich sind. Zusätzlich zu den Frametime-Beschränkungen kann es erforderlich sein, Netzwerk-Updates auf ein bestimmtes Budget zu beschränken. Untersuchen Sie bei der Leistungsanalyse die Größe von Datenpaketen und Verzögerungen mit dem Befehl stat net oder dem Net Profiler (UE-Datenprofil-Plugin). Durch das Netzwerk verursachte Verzögerungen sind meist keine Lastenausgleichs- (Tick-) Fehler, weshalb die Profilpriorität in der Regel auf CPU/GPU liegt.
Indie-freundliche Drittanbieter-Tools und Plugins
Für Indie-Teams sollten kostenlose oder kostengünstige Tools bevorzugt werden:
Kostenlose Profiling-Tools wie Unreal Insights, RenderDoc, PIX, PresentMon und GPUView.
Unreals integrierte Oodle Data- und Oodle Texture-Kompprimierung (bereitgestellt von Epic) reduziert die Paketgröße.
Das ACL-Plugin (Animation Compression Library) ist in Unreal Engine 5.3+ standardmäßig enthalten und halbiert den Speicherverbrauch von Animationen.
Nemesis-Ökosystem: GPU-/CPU-Analysetools wie NVIDIA Nsight (kostenlos), AMD uProf/RGP (kostenlos), Intel GPA/VTune (Intel-Prozessor – manchmal zeitlich befristet kostenlos).
Mesh- und Textur-Tools: Asset-Optimierungstools wie Simplygon oder UE Geometry Tools (Merge Actors, Erstellung von HLODs), Quixel Bridge (kostenlose Megascans-Assets).
CI/CD-Unterstützung: Software zur Projektunterstützung wie Jenkins/GitHub Actions (Open Source), Perforce Helix (Quellcodeverwaltung), Trello/Jira (Aufgabenverfolgung).
Entwickler-Plugins: Community-Plugins ähnlich wie PerfTrack oder Frame Trim können für automatische FPS-Tests verwendet werden.
Beispiel-Workflow (Mermaid-Diagramm)
flowchart LR
A[Performans Hedeflerini Belirleme] --> B[Hedef Donanım Profili]
B --> C[Kalite/Ölçek Ayarları Yapılandırma]
C --> D[İlk Profil ve Ölçüm: Baseline]
D --> E[Bottleneck Tespiti (CPU vs GPU)]
E --> F[Varlık/Dokular Optimizasyonu]
E --> G[Render/ Işıklandırma Ayarları]
E --> H[Ağ ve Çokoyuncu Ayarları]
F & G & H --> I[Yeniden Profil ve Kıyasla]
I --> J[CI Otomasyon ve Regresyon Testleri]
J --> K[Son Paketleme ve Yayınlama]
Zeitstrahl der Optimierungsphasen
gantt
title Optimizasyon Zaman Çizelgesi (Örnek)
dateFormat YYYY-MM-DD
section Planlama
Hedef Tanımı :done, a1, 2025-06-01, 7d
section Altyapı & Hazırlık
Profil Araçları Kurulumu :a2, after a1, 5d
Benchmark Hazırlığı :a3, after a2, 10d
section Geliştirme ve Test
İçerik/Grafik Üretimi :a4, after a3, 180d
Düzenli Profil & Düzeltmeler :a5, after a4, 90d
section Son Optimizasyon
İnce Ayar ve Dengeleme :a6, after a5, 30d
Abschließende Tests der Arbeit :a7, after a6, 14d Veröffentlichungsvorbereitung :a8, after a7, 7d Das obige Diagramm zeigt die Phasen der Optimierung für ein typisches Projekt von der frühen Planung bis kurz vor der finalen Veröffentlichung (die Dauern sind Beispiele).
Alle Empfehlungen wurden unter Berücksichtigung der offiziellen Unreal Engine-Dokumentation, von Epic Games und führenden Branchenquellen erstellt. Leistungsdaten basieren auf realen Tests und Studionotizen, und eventuelle Unklarheiten wurden explizit angegeben.
Hinweis: Die Bilder wurden von Google Gemini erstellt.
