Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Problembehebung bei Amazon GameLift Streams
Themen
Probleme mit der Verbindung
Wenn Sie Ihren Amazon GameLift Streams-Backend-Service einrichten, überprüfen Sie Folgendes:
Wählen Sie AWS-Region so nah wie möglich an den Endbenutzern. Eine hohe Latenz zwischen Ihren Kunden und der Region, in der Ihr Stream gehostet wird, kann sich auf die Stream-Qualität auswirken. Sie können AWS Konsolenendpunkte in der Region pingen, um eine ungefähre Latenzmessung zu erhalten.
Stellen Sie sicher, dass Ihre Stream-Gruppe Kapazität für neue Streams hat.
Stellen Sie sicher, dass dies angemessen eingestellt
ConnectionTimeoutSeconds
ist. Erhöhen Sie den Wert, damit die Kunden mehr Zeit haben, eine Verbindung herzustellen, bevor es zu einem Timeout kommt.
Empfehlen Sie Ihren Kunden, Folgendes zu überprüfen:
-
Öffnen Sie die UDP-Ports 33435-33465, um Streaming von Amazon Streams zuzulassen. GameLift Wenn Amazon GameLift Streams diese Ports nicht erreichen kann, kann dies zu Streaming-Problemen führen, z. B. zu einem schwarzen oder grauen Bildschirm.
Stellen Sie sicher, dass Ihre Internetverbindung eine Verbindungsgeschwindigkeit von mindestens 10 Mbit/s für einen 1080p-Stream aufrechterhalten kann. Wenn Sie beim Abspielen auf Amazon GameLift Streams Netzwerkprobleme feststellen, schwankt Ihre Internetgeschwindigkeit möglicherweise und Sie erhalten möglicherweise nicht durchgehend mindestens 10 Mbit/s. Führen Sie einen Internet-Geschwindigkeitstest durch und fahren Sie mit den Schritten zur Fehlerbehebung fort.
Verwenden Sie nach Möglichkeit ein verkabeltes Netzwerk. Wenn Sie WLAN verwenden, stellen Sie Ihr Gerät in die Nähe Ihres Routers, um eine stärkere Signalstärke zu erzielen.
Wenn Sie einen Wi-Fi-Router mit 2,4- GHz und GHz 5-Bändern verwenden, versuchen Sie, eine Verbindung zu einem anderen Band herzustellen. Wenn Sie sich nicht sicher sind, wie Sie Ihren Router auf ein anderes Band umschalten sollen, besuchen Sie die Support-Seiten des Herstellers oder Anbieters Ihres Wi-Fi-Routers. Sie können sich auch an den Kundendienst wenden.
Stellen Sie fest, ob andere Benutzer im selben Netzwerk (insbesondere im WLAN zu Hause) Anwendungen mit hoher Bandbreite wie Videostreaming, Herunterladen, Online-Spiele oder Backups ausführen.
Schließen Sie andere Anwendungen auf Ihrem Gerät, die Bandbreite beanspruchen.
Verwenden Sie beim Streamen kein VPN oder Proxy. Sie können zu höheren Latenzen führen und das Gameplay blockieren.
Vergewissere dich, dass du WLAN anstelle von Mobilfunknetzen verwendest, wenn du auf einem iPad oder iPhone spielst. Die Verwendung eines Mobilfunknetzes kann zu Verbindungsproblemen führen.
MacOS-Benutzer sollten die Ortungsdienste deaktivieren, da dadurch das WLAN von Zeit zu Zeit unterbrochen wird, was zu einem schlechten Streaming-Erlebnis führt.
Probleme mit der Leistung
In diesem Abschnitt werden mögliche Ursachen für eine schlechte Streaming-Leistung von Spielen identifiziert und Vorschläge zur Optimierung Ihrer Streams mit Amazon GameLift Streams gegeben.
Die Spielleistung wird reduziert, wenn auf Amazon GameLift Streams gestreamt wird
Wenn Ihr Spiel auf Ihrem eigenen Computer gut läuft, aber Leistungsprobleme auftreten, wenn Sie es auf Amazon GameLift Streams streamen, sollten Sie Folgendes beachten:
-
Ihr Computer verfügt möglicherweise über eine leistungsstärkere Hardware als Amazon GameLift Streams. Stellen Sie sicher, dass Sie die Anwendung auf einem Computer mit ähnlicher Leistung wie die von Amazon GameLift Streams verwendete Hardware testen. Bei Gen4n-Stream-Klassen ist dies vergleichbar mit einem Computer mit einer NVIDIA RTX 2060-GPU. Bei Gen5n-Stream-Klassen ist dies vergleichbar mit einem Computer mit einer NVIDIA RTX 3080-GPU.
-
Das Problem könnte an Ihrer Netzwerkverbindung oder den Einstellungen von Amazon GameLift Streams liegen. Probieren Sie die Tipps zur Fehlerbehebung im Probleme mit der Verbindung Abschnitt aus.
Wenn dein Spiel langsam ist, auch wenn es lokal läuft, musst du die Leistung optimieren. Die besten Optimierungsmethoden hängen von der spezifischen Engine oder dem Framework ab, das du verwendest.
-
Unreal Engine-Spiele finden Sie unter. Profilierung der Leistung von Unreal Engine
Bei Windows-Anwendungen treten langsame Ladezeiten oder ruckelnde Probleme auf
Wenn Ihr Spiel lange Ladezeiten hat oder stottert, empfehlen wir die folgende Vorgehensweise:
-
Stellen Sie sicher, dass Ihre Anwendung paketiert und für die Ladeleistung optimiert ist. Beachten Sie dabei die Hinweise Ihres Engine-Anbieters zur Optimierung von Inhalt und Shader-Leistung.
-
Stellen Sie sicher, dass Ihre Anwendung als Standardanwendung in einer Stream-Gruppe festgelegt ist.
-
Optimieren Sie den ersten Start der Anwendung im Service, indem Sie Shader als Teil Ihrer Anwendungspaketierung zwischenspeichern.
Es gibt zwei Möglichkeiten, das Shader-Caching zu aktivieren:
-
Treiberbasiertes Caching — Dieser Ansatz ist spezifisch für die GPU- und Treiberversion der Laufzeitumgebung. Diese Option kann auf alle Anwendungen angewendet werden und ist daher der empfohlene Standardansatz. Die Schritte für diesen Ansatz müssen für jede GPU/driver Kombination repliziert werden.
-
Engine-basiertes Caching — Dieser Ansatz ermöglicht Shader-Caching über die Game-Engine, sofern verfügbar. Dadurch wird der Entwickler mit der Erstellung eines vorgefertigten Pipeline-State-Object-Caches (PSO) betraut. Außerdem wird davon ausgegangen, dass die Engine in der Lage ist, die Cache-Unterstützung für verschiedene Treiber auf derselben GPU-Hardware zu verarbeiten.
Als bewährte Methode empfehlen wir, zuerst treiberbasiertes Caching zu implementieren, da hierfür kein tiefes Verständnis der Implementierung von PSO-Caching für die jeweilige Engine erforderlich ist.
Mit diesen Implementierungen können Shaderdateien exportiert und zusammen mit Ihrer Anwendung gepackt werden, sodass sie nicht bei jedem neuen Stream-Start generiert werden müssen.
Um einen treiberbasierten Caching-Fix für eine Windows-Runtime-Anwendung zu implementieren
-
Starten Sie das Streaming Ihrer Standardanwendung und spielen Sie sie ausgiebig ab, um Shader für die Anwendung zu generieren.
Wichtig
Achten Sie darauf, alle Bereiche oder Ebenen der Umgebung zu besuchen, um so viele Shader wie möglich zu erzeugen.
-
Bevor Sie den Stream schließen, aktivieren Sie die Exportfunktion in Ihrer aktiven Stream-Sitzung. Details hierzu finden Sie unter Stream-Sitzungsdateien exportieren.
-
Laden Sie die .zip-Datei für den Stream-Sitzungsexport aus dem Amazon S3 S3-Bucket herunter, den Sie im vorherigen Schritt angegeben haben. Einen Download-Link finden Sie in der Amazon GameLift Streams-Konsole auf der Seite Sessions.
-
Suchen Sie den Shader-Ordner innerhalb des Stream-Session-Exports. Es wird normalerweise an diesem Ort gespeichert:
AppData\Local\NVIDIA\DXCache
. Laden Sie die generierten Shader-Dateien (*.nvph
) in den Amazon S3 S3-Bucket Ihrer Anwendung hoch. -
Erstellen Sie eine
.bat
Datei, die die Shader-Dateien zur Laufzeit in den NVIDIA-Caching-Ordner kopiert. Dieser Ordner befindet sich normalerweise unter:.C:\Users\Administrator\AppData\Local\NVIDIA\DXCache
Laden Sie die.bat
Datei in den Amazon S3 S3-Anwendungs-Bucket hoch. -
Erstellen Sie eine neue Amazon GameLift Streams-Anwendung mit der
.bat
Datei als ausführbarem Pfad.
Wenn Ihre Anwendung mit dem Streaming beginnt, kopiert Ihre .bat
Datei die vorgenerierten Shader in den Shader-Cache, bevor die Anwendung gestartet wird, wodurch die Leistung beim Laden des Streams verbessert wird.
Anmerkung
Möglicherweise müssen Sie diese Schritte wiederholen, wenn Sie Ihre Anwendung aktualisieren oder die Amazon GameLift Streams-Anwendung mit einer neuen Stream-Gruppe verknüpfen. Neuere Stream-Gruppen können aktualisierte GPU-Treiber aus dem Service enthalten.
In der folgenden .bat
Beispieldatei wird davon ausgegangen, dass die Shader-Dateien unter dem Amazon S3 S3-Bucket-Präfix Shaders\
gespeichert sind. Sie können eine andere Ordnerstruktur verwenden.
@echo off set CURRENT_PATH=%cd% set DXCACHE_DIR=%CURRENT_PATH%\
Shaders
set NVIDIA_DXCACHE_DIR=C:\Users\Administrator\AppData\Local\NVIDIA\DXCache if not exist "%NVIDIA_DXCACHE_DIR%" ( mkdir "%NVIDIA_DXCACHE_DIR%" ) xcopy /s /f "%DXCACHE_DIR%" "%NVIDIA_DXCACHE_DIR%" start %CURRENT_PATH%\app.exe
Um einen Engine-basierten Caching-Fix für eine Anwendung zu implementieren, die Unreal Engine verwendet
Für diesen Ansatz können Sie die Funktionen von Unreal Engine verwenden, um einen Pipeline State Object (PSO) -Cache für Ihre Amazon GameLift Streams-Anwendung zu erstellen. Mit einem PSO-Cache können Sie vorkompilierte Grafik-Pipeline-Status mit kürzeren Kompilierungszeiten zur Laufzeit bereitstellen, wodurch Probleme beim Laden und Rendern reduziert werden können. Dies erfordert fortgeschrittene Kenntnisse der Unreal Engine, weshalb wir hier nicht auf alle Engine-spezifischen Details eingehen werden. Weitere Anweisungen finden Sie in der Anleitung von Unreal Engine im Abschnitt „Sammlungsablauf“ unter „Einen gebündelten PSO-Cache
-
Generieren Sie Shader für Ihre Anwendung, für die die PSO-Protokollierung aktiviert ist.
-
Erstellen Sie eine neue Amazon GameLift Streams-Anwendung mithilfe des Build-Pakets mit der PSO-fähigen Anwendung.
-
Starten Sie einen Stream mit einem
-logPSO
Befehl in Ihrer PSO-Logging-App. Sie können die Option Befehlszeilenargumente auf der Seite Stream-Konfiguration testen in der Amazon GameLift Streams-Konsole verwenden.Wichtig
Achten Sie darauf, alle Bereiche oder Ebenen der Umgebung zu besuchen, um so viele Shader wie möglich zu erzeugen.
-
Bevor Sie den Stream schließen, aktivieren Sie die Exportfunktion in Ihrer aktiven Stream-Sitzung. Details hierzu finden Sie unter Stream-Sitzungsdateien exportieren.
-
Beenden Sie die Anwendung über das Menü oder mithilfe der Unreal-Shutdown-Befehle. Wenn Sie den Stream direkt schließen, wird die Unreal-Shader-Pipeline-Datei nicht generiert.
-
Laden Sie die .zip-Datei für den Stream-Sitzungsexport aus dem Amazon S3 S3-Bucket herunter, den Sie im Exportschritt angegeben haben. Einen Download-Link finden Sie in der Amazon GameLift Streams-Konsole auf der Seite Sessions.
-
-
Package Sie die Unreal-Shader-Pipeline-Datei in Ihre Amazon GameLift Streams-Anwendung.
-
Suchen Sie die aufgezeichneten PSO-Dateien (
rec.pipelinecache
) im Stream-Sitzungsexport unter.Saved/CollectedPSOs
Entpacken Sie die PSO-Dateien mithilfe von Unreal-Befehlen. -
Packen Sie einen neuen Unreal-Build mit der generierten Ausgabe aus dem Entpacken. Folgen Sie den Anleitungen von Unreal in den Abschnitten PSO-Caches konvertieren und PSO-Caches
in Ihre Anwendung einbeziehen . Wichtig
Wenn Sie den Unreal-Befehl im Abschnitt „PSO-Caches konvertieren“ ausführen, stellen Sie sicher, dass Sie die Eingabedateien derselben Treiberversion verwenden. Beispiel: Verwenden Sie für DX12 nur die SM6 Dateien als Eingaben. Andernfalls erhalten Sie beim Verpacken der neuen Anwendung eine Fehlermeldung.
-
Erstellen Sie eine neue Amazon GameLift Streams-Anwendung für den neuen Paket-Build mit den PSO-Dateien.
-
Stellen Sie beim Starten und Testen von Streams sicher, dass der PSO-Cache geladen wird. Suchen Sie in den Spielprotokollen nach der folgenden Zeile:
Opened FPipelineCacheFile: ../../...
-
Anmerkung
Möglicherweise müssen Sie diese Schritte wiederholen, wenn Sie Ihre Anwendung aktualisieren oder die Amazon GameLift Streams-Anwendung mit einer neuen Stream-Gruppe verknüpfen. Neuere Stream-Gruppen können aktualisierte GPU-Treiber aus dem Service enthalten.
Probleme mit der Anwendung
Vorläufige Prüfungen
Führen Sie Ihre Anwendung auf einem anderen Computer aus, um zu überprüfen, ob sie korrekt verpackt ist. Dadurch wird bestätigt, dass Ihr Anwendungsinhalt keine fest codierten Pfade, fehlenden Ressourcen, Bibliotheken oder Binärdateien enthält, die auf anderen Geräten möglicherweise nicht funktionieren.
(Optional) Führen Sie Ihre Anwendung auf einem Computer mit einer GPU aus, die mit Ihrer Amazon GameLift Streams-Streams-Streams-Klasse vergleichbar ist. Dadurch wird überprüft, ob die Rendering-Einstellungen Ihrer Anwendung mit der GPU kompatibel sind und ob die Leistung Ihren Erwartungen entspricht.
-
Öffnen Sie die UDP-Ports 33435-33465, um Streaming von Amazon Streams zuzulassen. GameLift Wenn Amazon GameLift Streams diese Ports nicht erreichen kann, kann dies zu Streaming-Problemen führen, z. B. zu einem schwarzen oder grauen Bildschirm.
Die Anwendung funktioniert nicht mit Amazon GameLift Streams auf Proton
Stellen Sie sicher, dass Ihre Anwendung mit Proton kompatibel ist. Testen Sie Ihre Anwendung in einer lokalen Umgebung ohne den Amazon GameLift Streams-Server, um sicherzustellen, dass sie mit Proton kompatibel ist. Detaillierte Anweisungen finden Sie unter Fehlerbehebung bei der Kompatibilität mit Proton für Amazon Streams GameLift .
Anwendungsprobleme aufgrund der Bildschirmauflösung
Anwendungen können einfrieren, abstürzen oder falsch gerendert werden, wenn Sie versuchen, eine Vollbild-Auflösung zu verwenden, die nicht 1920x1080 ist. Wir empfehlen, für die Ausführung Ihrer Anwendung ein randloses Vollbild-Fenster zu verwenden und nicht zu versuchen, die Auflösung zu ändern.
Die Tasteneingabe scheint auf dem macOS-Client hängen zu bleiben
Auf macOS-Clients scheinen Tasten plötzlich festzustecken, wenn die Befehlstaste und eine andere Taste gleichzeitig gedrückt werden, wodurch das Tastenereignis wiederholt wird. Beispielsweise kann die Pfeiltaste hängen bleiben, wenn auch die Befehlstaste gedrückt wird. Wenn in einem Spiel die Pfeiltasten verwendet werden, um die Kamera zu drehen, würde dies dazu führen, dass sich die Kamera endlos dreht.
-
Problem: Die Befehlstaste auf macOS ist dem Metatasten-Ereignis zugeordnet, das der Windows-Taste unter Microsoft Windows zugeordnet ist. Das Problem ist ein Fehler
, der sich auf macOS-Browser auswirkt, wenn Command und eine andere Taste gleichzeitig gedrückt werden. Dabei wird die Metataste zurückgesetzt, wenn sie losgelassen wird, aber die Pfeiltaste nicht zurückgesetzt, weil der Browser kein Keyup-Ereignis für die Pfeiltaste erfasst hat, sodass der Web SDK-Client kein Keyup-Ereignis an den Server sendet und die Streaming-Anwendung immer noch denkt, dass die Taste gedrückt wird. -
Lösung: Wenn Sie die Befehlstaste nicht verwenden, können Sie sie mithilfe des Web-SDK-Tastaturfiltermechanismus (
keyboardFilter
) herausfiltern, der sich in derInputConfiguration
Benutzeroberfläche des Web SDK befindet.
Mausbewegungen verhalten sich in Amazon GameLift Streams anders
Wenn sich Mausbewegungen beim Streamen mit Amazon GameLift Streams anders verhalten, z. B. schneller als erwartet, müssen Sie möglicherweise die Maussteuerung und die Cursorverwaltungslogik in Ihrer Anwendung anpassen.
-
Problem: Amazon GameLift Streams verwendet eine Heuristik, um auszuwählen, ob Mausereignisse im „relativen“ oder „absoluten“ Modus übertragen werden sollen. Im relativen Modus werden neue Maus-Updates als kleine, inkrementelle Unterschiede zum vorherigen Update bereitgestellt. Im absoluten Modus wird der Mauszeiger kontinuierlich an eine Bildschirmposition gedrückt, die mit dem Client synchronisiert ist. Wenn der Betriebssystem-Cursor über dem gestreamten Inhalt sichtbar ist, wählt die Heuristik immer absolute Koordinaten aus. Dies kann zu unerwartet großen Bewegungsdeltas führen, wenn Ihre Anwendung kleine, relative Aktualisierungen erwartet.
-
Lösung: Wenn Ihre Anwendung relative Mausbewegungen erwartet (z. B. Kamerasteuerung im FPS-Stil oder Interaktionen auf Ziehbasis), blenden Sie den Betriebssystem-Cursor bei Mausinteraktionen aus. Sie können den Cursor beispielsweise bei gedrückter Maus ausblenden und bei gedrückter Maus wieder einblenden. Dadurch wird sichergestellt, dass beim Ziehen relative Koordinaten verwendet werden und die absolute Position nur synchronisiert wird, wenn die Taste losgelassen wird.
Weitere Informationen zur Mausbewegung in Amazon GameLift Streams finden Sie unterUmgang mit Mausbewegungen.
Die Unreal Engine-Anwendung stürzt ab oder erfordert zusätzliche Abhängigkeiten
Wenn Ihre Unreal Engine-Anwendung abstürzt, blockiert wird oder Sie zusätzliche Abhängigkeiten wie Microsoft Visual C++ Runtime installieren müssen, versuchen Sie Folgendes.
Verwenden Sie die richtige ausführbare Datei. Damit Ihre Anwendung ordnungsgemäß mit Amazon GameLift Streams funktioniert, legen Sie den Anwendungspfad auf die vollständige ausführbare Datei fest, die sich im
Binaries/Win64/
Unterordner oder ähnlichem befindet. Unreal Engine erzeugt zwei ausführbare Dateien: eine kleine ausführbare Datei (eine Verknüpfung) im Stammverzeichnis des Ordners und eine vollständige ausführbare Datei im Unterordner.Binaries/Win64/
Wenn die vollständige ausführbare Datei fehlt, wurde die Anwendung möglicherweise nicht korrekt erstellt. Sehen Sie sich zum Beispiel die folgende Ordnerstruktur für eine Unreal-Beispielanwendung an:BuildApp |-> MyUnrealApp.exe |-> MyUnrealApp |-> Binaries |-> Win64 |-> MyUnrealApp.exe
Schalten Sie Unreal Engine Asserts aus. Deaktivieren Sie die Makros Check, Verify und Ensure. Dadurch kann verhindert werden, dass die Anwendung Crash-Dumps erstellt, was andernfalls dazu führen würde, dass die Anwendung bei Amazon GameLift Streams zum Stillstand kommt. Wenn Asserts aktiviert sind, sollten Sie mit einer Verzögerung rechnen. Weitere Informationen finden Sie in der Dokumentation zu Asserts in Unreal Engine
. Legt fest
USE_CHECKS_IN_SHIPPING=0
, dass Check and Verify-Makros deaktiviert werden.Stellen Sie diese Option ein
handleensurepercent=0
, um Ensure-Makros zu deaktivieren.
Die Windows-Anwendung wird beim Start beendet
Wenn Ihre Windows-Anwendung beim Start beendet wird, fehlt Ihre Anwendung möglicherweise (erforderlich). DLLs Wenn es sich bei Ihrer Anwendung um einen Debug-Build handelt, benötigt sie speziell die Debug-Version der Visual C++-Bibliothek. DLLs
Um dieses Problem zu lösen, empfehlen wir Ihnen, Ihren Build und zu verpacken. DLLs side-by-side Anweisungen finden Sie unter Vorbereiten eines Testcomputers zur Ausführung einer ausführbaren Debug-Datei
Testen Sie Ihre Anwendung mit dem Paket Build and DLLs auf einem sauberen Computer, z. B. einer EC2 Amazon-Instance. Wenn Sie bereit sind, es auf Amazon GameLift Streams auszuprobieren, erstellen Sie mit diesem Paket eine neue Anwendung. Stellen Sie sicher, dass Sie die richtige ausführbare Datei auswählen, mit der der Build ausgeführt werden kann, einschließlich der enthaltenen Datei DLLs.
Im Allgemeinen empfehlen wir, dass Sie Ihren Build zuerst auf einem sauberen Computer testen, bevor Sie es mit Amazon GameLift Streams versuchen. Anweisungen zum Testen auf einer EC2 Amazon-Instance finden Sie unterRichten Sie einen Remote-Computer ein.
Zugriff verweigert, wenn eine Anfrage an den Amazon GameLift Streams-Service gestellt wurde
Wenn Sie beim Versuch, eine Amazon GameLift Streams-Aktion auszuführen oder Ressourcen zu verwenden, auf die Ausnahme „Zugriff verweigert“ stoßen, verfügt Ihre AWS Identity and Access Management (IAM-) Rolle möglicherweise nicht über ausreichende Berechtigungen. Dies wird durch Anfragen an den Amazon GameLift Streams-Service verursacht, z. B. durch einen Anruf bei StartStreamSession.
Stellen Sie sicher, dass die Richtlinie der betroffenen IAM-Rolle über die richtigen Berechtigungen für Amazon GameLift Streams verfügt. Überprüfen Sie, ob Folgendes der Fall ist:
-
Wenn die IAM-Rolle eine explizite „Deny-All“ -Richtlinie hat, müssen Sie Amazon GameLift Streams explizit als Ausnahme von dieser Richtlinie auflisten, indem Sie das Element
"gameliftstreams:*"
hinzufügen. NotAction Zum Beispiel:{ "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken", "gameliftstreams:*" // Add this ], "Resource": "*", "Condition": { "BoolIfExists": {"aws:MultiFactorAuthPresent": "false"} } }
-
Weitere Informationen zur Fehlerbehebung finden Sie in den Fehlermeldungen Troubleshooting access denied im IAM-Benutzerhandbuch.